From 57c9f542629cc2bf1c9ed4f72e38aa9035fd4867 Mon Sep 17 00:00:00 2001 From: rschauner Date: Wed, 12 Aug 2026 15:28:39 -0400 Subject: [PATCH 01/12] refactor: move IO tests from tests/ to module - create new test_helpers module to centralize file handling --- Cargo.toml | 5 +- src/io.rs | 171 +++++++++++++++++- src/lib.rs | 3 + src/plate_reader/core.rs | 4 +- src/test_helpers.rs | 15 ++ tests/data/duplicate_headers.xlsx | Bin 0 -> 8913 bytes {test => tests/data}/plate_reader_data.xlsx | Bin .../data}/plate_reader_data_expected.xlsx | Bin tests/io_excel.rs | 99 ---------- tests/io_routing.rs | 112 ------------ 10 files changed, 192 insertions(+), 217 deletions(-) create mode 100644 src/test_helpers.rs create mode 100644 tests/data/duplicate_headers.xlsx rename {test => tests/data}/plate_reader_data.xlsx (100%) rename {test => tests/data}/plate_reader_data_expected.xlsx (100%) delete mode 100644 tests/io_excel.rs delete mode 100644 tests/io_routing.rs diff --git a/Cargo.toml b/Cargo.toml index f61c787..01b7a82 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ clap-binary-enum = "0.1" clap-markdown = "0.1" [dependencies.polars] -version = "0.54" +version = "0.55" features = ["lazy", "strings", "concat_str", "timezones", "dtype-array"] optional = true @@ -53,9 +53,10 @@ lto = "thin" opt-level = 3 [dev-dependencies] -polars-testing = "0.54" +polars-testing = "0.55" pretty_assertions = "1.4" rstest = "0.26" tempfile = "3.27" assert_cmd = "2.2" rstest_reuse = "0.7" +temp_testdir = "0.2" diff --git a/src/io.rs b/src/io.rs index 08f39cd..b1946e4 100644 --- a/src/io.rs +++ b/src/io.rs @@ -36,7 +36,7 @@ fn write_lazy_output(lf: LazyFrame, output_file: PathBuf, separator: u8) { include_bom: false, compression: ExternalCompression::default(), check_extension: false, - include_header: false, + include_header: true, batch_size: NonZero::new(1024).unwrap(), serialize_options: Arc::from(SerializeOptions { date_format: None, @@ -370,9 +370,31 @@ pub fn read_excel( #[cfg(test)] mod tests { use super::*; + use crate::test_helpers::*; use pretty_assertions::assert_eq; - use rstest::rstest; + use rstest::*; + use rstest_reuse::{apply, template}; + use std::fs; use std::path::PathBuf; + use temp_testdir::TempDir; + + fn collect_df(lf: LazyFrame) -> DataFrame { + lf.collect().expect("failed to collect lazyframe") + } + + #[fixture] + fn test_df() -> DataFrame { + df![ + "a" => &[1], + "b" => &[2] + ] + .expect("failed to build dataframe") + } + + #[fixture] + fn test_lf(test_df: DataFrame) -> LazyFrame { + test_df.lazy() + } #[rstest] #[case("data.csv", Some("csv"))] @@ -394,4 +416,149 @@ mod tests { fn test_strip_quotes(#[case] s: &str, #[case] exp: String) { assert_eq!(strip_quotes(s), exp); } + + #[template] + #[rstest] + #[case::parse_csv(Some(b','), "a,b\n1,2\n", Some("csv"))] + #[case::parse_tsv(Some(b'\t'), "a\tb\n1\t2\n", Some("tsv"))] + #[case::parse_tsv_default_sep(None, "a\tb\n1\t2\n", Some("tsv"))] + #[should_panic(expected = "Unsupported separator")] + #[case::fail_unsupported_sep(Some(b';'), "a\tb\n1\t2\n", Some("csv"))] + #[case::parse_tsv_no_ext(None, "a\tb\n1\t2\n", None)] + fn file_case_template(#[case] sep: Option, #[case] text: &str, #[case] ext: Option<&str>) {} + + #[apply(file_case_template)] + fn read_from_file_with_sep( + #[case] sep: Option, + #[case] text: &str, + #[case] ext: Option<&str>, + ) { + let temp = TempDir::default(); + let path = temp + .with_file_name(get_timestamp()) + .with_extension(ext.unwrap_or("")); + write_text_file(&path, text); + + let df = collect_df(read_from_file(path, sep)); + + assert_eq!(df.shape(), (1, 2)); + assert_eq!(df.get_column_names()[0].as_str(), "a"); + assert_eq!(df.get_column_names()[1].as_str(), "b"); + } + + #[apply(file_case_template)] + fn write_to_flat( + #[case] sep: Option, + #[case] text: &str, + #[case] ext: Option<&str>, + test_df: DataFrame, + ) { + let temp = TempDir::default(); + let path = temp + .with_file_name(get_timestamp()) + .with_extension(ext.unwrap_or("")); + + test_df.write_to_flat_or_stdout(path.clone(), sep); + let written = fs::read_to_string(&path).expect("failed to read output file"); + assert!( + written.contains(text), + "expected row {text}, got: {written}" + ); + } + + #[apply(file_case_template)] + fn write_to_flat_lazy( + #[case] sep: Option, + #[case] text: &str, + #[case] ext: Option<&str>, + test_lf: LazyFrame, + ) { + let temp = TempDir::default(); + let path = temp + .with_file_name(get_timestamp()) + .with_extension(ext.unwrap_or("")); + + test_lf.write_to_flat_or_stdout(path.clone(), sep); + let written = fs::read_to_string(&path).expect("failed to read output file"); + assert!( + written.contains(text), + "expected row {text}, got: {written}" + ); + } + + #[rstest] + fn tsv_parsing_regression_tab_delimited_file_produces_two_columns() { + let temp = TempDir::default(); + let path = temp.with_file_name(get_timestamp()).with_extension("tsv"); + write_text_file(&path, "col1\tcol2\nv1\tv2\n"); + + let df = collect_df(read_from_file(path.clone(), Some(b'\t'))); + + // This test is intentionally strict: if TSV is parsed as CSV, you'll get one column. + assert_eq!( + df.width(), + 2, + "TSV should parse into 2 columns; got {} columns with names {:?}", + df.width(), + df.get_column_names() + ); + } + + #[test] + fn read_excel_header_false_generates_column_names() { + let path = PathBuf::from("tests/data/plate_reader_data.xlsx"); + let df = read_excel(&path, None, 0, Some(false)) + .expect("expected read with header=false to succeed"); + + let names = df.get_column_names(); + assert!( + !names.is_empty(), + "expected at least one generated column name" + ); + assert_eq!(names[0].as_str(), "column_0"); + } + + #[test] + fn read_excel_skiprows_reduces_height() { + let path = PathBuf::from("tests/data/plate_reader_data_expected.xlsx"); + + let df_no_skip = read_excel(&path, None, 0, None).expect("read without skiprows failed"); + let df_skip_1 = read_excel(&path, None, 1, None).expect("read with skiprows=1 failed"); + + assert!( + df_skip_1.height() < df_no_skip.height(), + "skiprows should not increase row count" + ); + } + + #[rstest] + #[should_panic( + expected = "Failed to get sheet 'this_sheet_does_not_exist': Worksheet 'this_sheet_does_not_exist' not found" + )] + #[case::nonexisting_sheet( + "tests/data/plate_reader_data.xlsx", + Some("this_sheet_does_not_exist"), + None + )] + #[should_panic( + expected = "Failed to open Excel file: I/O error: No such file or directory (os error 2)" + )] + #[case::nonexisting_file("tests/data/this_file_does_not_exist.xlsx", None, None)] + #[should_panic(expected = "Duplicate column names found in Excel sheet")] + #[case::duplicate_header_none("tests/data/duplicate_headers.xlsx", None, None)] + #[should_panic(expected = "Duplicate column names found in Excel sheet")] + #[case::duplicate_header_true("tests/data/duplicate_headers.xlsx", None, Some(true))] + #[case::duplicate_header_false("tests/data/duplicate_headers.xlsx", None, Some(false))] + #[should_panic(expected = "Duplicate column names found in Excel sheet")] + #[case::normal_file("tests/data/plate_reader_data.xlsx", None, None)] + fn test_read_excel( + #[case] path: PathBuf, + #[case] sheet: Option<&str>, + #[case] header: Option, + ) { + let df = read_excel(&path, sheet, 0, header).unwrap(); + + assert!(df.width() > 0, "expected at least one column"); + assert!(df.height() > 0, "expected at least one row"); + } } diff --git a/src/lib.rs b/src/lib.rs index 2280151..4c1458a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,3 +7,6 @@ pub mod io; pub mod plate_reader; pub mod split; pub mod tcr_align; + +#[cfg(test)] +pub mod test_helpers; diff --git a/src/plate_reader/core.rs b/src/plate_reader/core.rs index 13e619a..89a8f01 100644 --- a/src/plate_reader/core.rs +++ b/src/plate_reader/core.rs @@ -490,7 +490,7 @@ mod tests { #[test] fn test_run() { - let input_path = PathBuf::from("test/plate_reader_data.xlsx"); + let input_path = PathBuf::from("tests/data/plate_reader_data.xlsx"); let df = run( &input_path, "[Concentration]", @@ -500,7 +500,7 @@ mod tests { 23, ); let expected = read_excel( - &PathBuf::from("test/plate_reader_data_expected.xlsx"), + &PathBuf::from("tests/data/plate_reader_data_expected.xlsx"), Some("1 to 2"), 0, Some(true), diff --git a/src/test_helpers.rs b/src/test_helpers.rs new file mode 100644 index 0000000..c3fd5af --- /dev/null +++ b/src/test_helpers.rs @@ -0,0 +1,15 @@ +use std::fs; +use std::path::PathBuf; +use std::time::{SystemTime, UNIX_EPOCH}; + +pub fn get_timestamp() -> String { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("system clock before unix epoch") + .as_nanos() + .to_string() +} + +pub fn write_text_file(path: &PathBuf, contents: &str) { + fs::write(path, contents).expect("failed to write test input file"); +} diff --git a/tests/data/duplicate_headers.xlsx b/tests/data/duplicate_headers.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..484fd50541234f5fc5fcbf993f68677e1e2cdae8 GIT binary patch literal 8913 zcmeHN1y>x|)@>{}G|~{<6EtX$-~{)e0RjYR+#$F&!9#Ehp##C4puq_)p>cP2NuYtC zUuWLDH#3>}e!+XUR@Gg#R_(Lu-h0m7r}imzB@|R*z&!v4005u^m>y}vSP)83BuBPud;CIA`n{Qug2@eGtC4ybl;0cFnRub-}S zD9%?(U_3s6^boQ>6Km^C=q@rdfLdGMK_jk!QduAyflq`(^FBP^2CXU`>}w(6-HjSJ zQ9-?J+C~%toLxQpOs%A3@hy7XQg=O0k$!lw!T!QA;Mxe$xQ#W7kI~5*hXQI8z0W*}yHTz>-E&PA zQ;m9;%M_&+SLV;W6EDq>7r8=XoADN4OZOUE1gKT`$SVsYPmA=sV{O@5eP8%`w=%zt zI#s`H;0IY5a~MD+g6JTl(*SkbsA`f@9)}^nPH|AS^1yLB?ZOq)3K3=J5`}pKG$z(u z^*+5l`*Lm%R9a0)fED7O-`n?Duubj2jMCR3Zv=fERp#Q3_>5qu;iOFp*w;qK=ofad z+`A*}vp>9H5PbM8c_)D9_8tImcZUK{|4UfbXmc@~B79955p~#zurzi7+qrT+`g#3d zIQ|#M;Gc$G60f4x!G#lgB!3;&dp@xc3zSmwkd$wv)AA2gn8&Y)&Ss=oXnjZt)FKZ? zkqc<{zwVz~5Q*OHr8`^YD~Tc`7G|jRC=E@ybbf`-`oJYw*12S*lfZofK5>>Nr|8A( z-WMo)()p8)KYvdG6F9qe*r>k3{Lp7-prCwSC0h zTRAM4-Kp$74ZiEwn(m8X9{3Ag!BfVfweUSO!~_AuyPq0)EHYk}L?u~$7K^hTfq+@G zJ8+dJL?>;TJPUQDQuDg0>F69hCmMubOH&2Yr3@4SHTB%0tp@R=Bi>PDmg`RF<6EgX zeLVmAqJ)}2W5+LbiSXNf<#(qZ-2eL8JGE@*(Z1oTgA>!NT+9t$gdSEQ~n zkSl~_)x>Z^=dZ|>>!?w2lN!7hdtYbuQ{`ik3XPSAdLif~$7pZjKged&mKw2PG9D#Z zeF;k6f@VA_)}P|p&$X?)(@k$$4N6~aSWC+g% z%9c;8v^ZgbBt^a4Qzj?!;S@^yrkY=>Ww-nQEZ_QiBWX8o#;8A4 z$3h*hyAUE~xxE$X`#!D~%<^59KyuuYrT^ozH!ksVdH`FYEOA;a(1Vcm484O_Cfq%b zPzZdv48I?|%wpUr`VPLcth}QYZfV4+rQz4`L0;4{%{C@B&xf7W+9=hNHHt;ky~{V* zB@kXX?Vc;*V^h~5uI!j~{McZOWJVr3N${kLhoW%^>BNuZ63Nu$kYSS>vMQ2FtBAsh zT_r+aIK|su&J4HYP~VfwKe$?(g|-soy%L_?Z*NxIr`~PK@q>rT7P?^5ac>jK zQ=$eK{5ZdNozKmDg6)9$RbtN7%F9N@Nq!u4kX+CZMJ|DS6=%XPydr%A+JR9P1d*1E z5@J!)j4$<66;3sdy){Mr%ND6Sg6SWY-)ZdQGZ+M5L-+3-h4fRKG2aHYz`a+K{g;f< ztE*c7G5UkV5>rkPQQv@|NOAxM5+eHl#gc#C1OCmJNQeX$VdcNOm1w9ab#eilv2Vk; zJks4k1T$`&^!wU-_!xcFEOQU&c>Pb8C|DZ|pHC`rqBw?n9S!!lpFhT1MInNJVJnCv zMD-@JI}%2796T9B!7x22rH06%5fSe1?iC+kdBPV2-3L>~( zfRXKSI<|{1GG`dyo31TXykNFpvM+HqD2tV-iyn*mhPu&)^~%u%u*AD=d`xT9K3Z{; zy6R_Xo%_x{aC&61-q$m+gjngn6GkCSluQcYE~sb#zwIt^Rs&YG&?aT^3F)G;YzLteCzzff31_(mo`1 z$=Cgze08;WWW4lY@#!r^S?vkRJMjkdySThH_n`a=;4jES6jkv9k+m3EE$C0dX~Y%k zrn*vK10XJ1UBS|NCBJ30#ypCyOY_2nXjVTt-DG9#*?6FaM&z-VCd=Ry+N9rU*o)Zg z?uTt2PI=a=0?N6>`eaEnV)RuyC-y%y`N1#T*@MthJA#BlwkKA+7oR30TN8Fk)mr!`W zh@QMM6?W}Jt)47BcvbDZleI+|?t@;5^TiW2(8t!W|`D`FNjPV)pcojNpb)3&`S3o3u5mo)F z5uUY4anS~s)d?k@R^OUFz0XA-&}5Ae=vrk4%CX?dnfVLaPsT6kBQK5 zzQEa`_ezrCy1YVSs1eLbLZgw57zt}@Tqy|IdPFH`(VIE)o>kzz`t=y@mkcU*;UX@w z?^Yrsn{OrJO+7ey$B#sBH=BEU1Y%sz6N*!_u<02$6sE8bFR1DJ-V9k+?t7~}SW}#P zs=5Q4S6qiaHtG14G=pCoABU!_0$@OM~3L1~20Qi>({Cm&8;GmxO{(HOrL%GO=g77&cYls4fki2#Bmhf2e4`zQ-%Bc*CN9h z^~op?hS4kx@i)^>1~BV2s7;@WeY&7UXuLo-Sm@B!MoumwGAfKEJe`QG? zJIJ|Zwwnqr^+$PWLn>gicULNg(pE(#V%?ov!fVBM$X34F1M*CMuC(;gQhkQqL*?n}C0 zS2H(A*&Mw=8b3}8ju5&1yARI{>;H+suEoC-e@RY6P6aqn$iYrGr7?a|eU1uEULhhUicsxk^8RY(DPe|{E}j;d zuAoe>%z;T6s``Md5ROlOe= z%S3&5(LCNSOvcQoWHNrr84uEi3qkTB!*tPKIBiKKooc}8YxxC3X?ulX>+Q1bm2F=o z{iRaD-B+HuPWu`{U%1&Qt}%*xWxm^SSb*o{S&vWSx!%gU(&s8|#szM12;I| zaU1mTYcP8sj(WWo;$#TB_64p8zH-S^(CYSQ9io%wezMVzCcb%wHFCa;{(k?}xuzn! zN2?ftND!)So)&8OEtrY2rAh5`Gxd~RPz2k+sk9w<3YrPq-Y!qpv7#YpKW2gwL7=|7 zFNe1Z!6%T@V2sLsI%l*=6uX|H7Pau#JPK2f8(F@GE3%mn^~N8qxHh#Udrk^Qe45Vx zf!gE{a;Vj2>Zb15X|V-f#tiw6zuIM;C`ag)2=S>_+p~UM+N`vs~gl^A5t?2ERWYjp6hd1ZQ!tXP@*`xYpI^8 zOLoM5HwW3Q&2(;t_{Bo<3QRJaSoB5nz7ZWAT(L8oS=tQt#_^TXV3t2V;l_CfO|({a zxC*pJO}X@XiHu!GJl#wCWx}x_5=Q@CDu9{G@N4c@ZB8b|`q#B_Wc)W;E-H1_Vx_BQ zVneeTd9CY~4-%h)*8EY()n){%i?l)=YQIYkIzC;fFnp)87aEw{j2SU%&L8nESlX8N zf}F6y_00dd8zuX!{!O>Ga2~+MpuEjT08$4pn<}t;lgWVo`0~XSiz~dlaaQPPV(jWo zUq1n$w98P>7dNYMFLHCTzC!*WZ#@j?GaWJG|VIuMWjQP6F^(`A&s0 zYU!p`=k0cwVVt~7 zm7qKRLMD&~?x#0AQRyWKKOW{qVsu)~!%t5fJA#-VM3}EXsc;J@T$gHI_P1Vd+pA6K zGnKR`+CLu+uXS_BW)V{&ff+|%%mvpl8V5BFef+`nt}@B<4P7UBsf3S*Dib9QYFhCY zF|4CDtt7nFR#+2yQ~I=wp2jR$R&Yt9e?}xY9T%+BGjDIN-Z1ci45z`ieMjS{;;8AM z#lL(qneD7c^^>)}wTxr>q21+*`wzlmQ_`B};QA|X*nwR<6>5=dy61Uwt8{7V*N=H* zN1G-Y)hEx=XMIXA6dToCV-{-DUyl(wHo}AF;RO@Iop}{}L5_H^0n0hxOPu%~pelhb zyYPVp=6u>Hk0_|SPE*WyD@EBN;=xJ%BgHDM+f;U7hViTBVQrz!upY0+ZG;l(??`o~ zb%ym0W+2{G12R=;jUZV6v@N`dqbX^cvdSSu#dbu-z|dZG{8g!g#U$PUbT-GtjOFue z4SjVVTIi^d@Yg{X&h<35B;8r35FLnn^U`Iskspx%9;kKUzV>cSgR!-Mca38CNC8^5 z>@xn<%9ezhjPr1Bi|_poYoNi_l6dO33`g44!Jw%OvY6s|-!=8eivmj$s4KUQv~6(` zY?Ns53Q|1QV3XmJ@eY%!QHKfdB*|&YP|@k?^tHt;>ISamOmWJ$J<%1Tlz_6sbMhpk zR{jFMxom$yJXv@a{<7~?J*4h_hO4VVTkguMBe{P}FzZQL%?l9;rY=I%!~GZ0ySjPV zfn9%Ql{wn>wur3qR%|)|czM|GzQ&GOt28#QzTKZmwO?#H5K&d8Tu3oRP2M1)7@P9dI9oSgkdYG^8KJg z0*lIP8lb}9Ngk#m2gUA1JoceG6^U%+`-Rd(em9mt8;WSFh*>K;)A4st<6&11V%Bp< zbfylGog&I?jVkNh^34^kyrhuV&*@|^G1sbQ4Ng>Z2)OMAntcV;Y)jwEiz+sFuXb35LlmW*3P8%3Q5B+*;wgMzwmFGBPZ;Q*%%rcV&RY>?;Sx*7b(WXknc2;i*nt9wv zyZV*^JA|7%8tGVN=Y=fjx=<_~VOpCDn}b$Wf#b$;*cVXmSmaoej@E^ScWgG&Mxt`K z+#Ra_xaG8c^tdd^=z=y`XwQ1O6IWJj^UN9?J4Rf3?~^!A)a)fC4G_J0NSeb|vyf#AGS~8w`Z$`2$-DT52aJch1Z6)C*N!yoU&1_tt zWuhz?A!)UoE6SLC2(CF?Y==WQXYWH-jO$J~$GYqZ&=Z`*FlAHNG4uL-2^h1}f0#Z~ z?htJHA)1OzlZv!3+^^|r$jkOpBh~NI6(NmU3l2Vs=*{6<}v#l|5+M)`zc8pTIHIKZ&64ep+|rslm&_K}VVF6(zG&&EeB zQXq;5p(==IcWobN2MKn3A#;A1-9>g2Ec54 zK1>{(p?!N849fmw{jMMl&h6_DF`hbC^P5mFaL~n3k8@7uK^eE!6xsD?{n+NSZ4`u= z{IMi+@VIldwCdwz>CI*x@+bx{(rz&>J~F=Vv|E9@hLJ^`M>>c#Ua%f>%}YKW zH!XjiHM-A$biK!y)cpXeh0BJViy0dL$n*|VZvm2-!cw2`Vv_*FCK;MT&Q~RLwKXs$>i=iQAu2 zs~s7iai5K*;WQHaSa67!!RD=O9$en(@+=a$8M6j{r6_Vl{YX3ta^DyCk!MLKfx`Sw zl$uR~RA(niVJ``kb%duUDbZYiKaiyUz%?JU5CvvEJ21>Qx$MW~NadZZ3-)6B*0yb1 z!nxL`uKczbdN);#XR(}}vcPTevb3dhy95bVKCU*IBayYTiundkS-{akjq`+Qizi8_ z&T27!Bl}U(`+OVQwv{I_!?=P{OyXF(1SZdy?%C0odKU3tkBwB9YW3afm2xoAiG zO*}lsbv4dpHN&YEWr@!fCLkuHcG=-W)qruEN|C>v4lh5Y^jM+3zcl4#q%}uEIQauz zbx#a5ZnkLd65Q8-*4lGvc;aCu7@V>*3IFc?%qZoDvE^eX@iP6p|I{dvkU0<}@XtRF z{Cm~@-T%X{1nNqEHSpIm=f8nJ`xHcI{Hf^qEAZFS&mYhx#Jm1d2>KQLSLOH*C_+od z`VIX5=*Yj?`BhH*!_ooHe_rBm;^MDXeieuQumVODwGc!3RVw<`z^_T?9|lwr^oKC; zM+*8Y^jB{G14>W+FX*pK|Eq<+a_Jv<0N@m1;cv|PEBvoJ;h*8JsQv{1eP2{pLPM-B R0Dy%!0ukgbO#Ach{{XJ}mQerz literal 0 HcmV?d00001 diff --git a/test/plate_reader_data.xlsx b/tests/data/plate_reader_data.xlsx similarity index 100% rename from test/plate_reader_data.xlsx rename to tests/data/plate_reader_data.xlsx diff --git a/test/plate_reader_data_expected.xlsx b/tests/data/plate_reader_data_expected.xlsx similarity index 100% rename from test/plate_reader_data_expected.xlsx rename to tests/data/plate_reader_data_expected.xlsx diff --git a/tests/io_excel.rs b/tests/io_excel.rs deleted file mode 100644 index 5e900e3..0000000 --- a/tests/io_excel.rs +++ /dev/null @@ -1,99 +0,0 @@ -use essential_scripts_rs::io::{read_excel, read_from_file}; -use std::path::PathBuf; - -fn fixture(path: &str) -> PathBuf { - PathBuf::from(path) -} - -#[test] -fn read_excel_default_sheet_succeeds() { - let path = fixture("test/plate_reader_data_expected.xlsx"); - let df = read_from_file(path, None) - .collect() - .expect("expected default-sheet read to succeed"); - - assert!(df.width() > 0, "expected at least one column"); - assert!(df.height() > 0, "expected at least one row"); -} - -#[test] -fn read_excel_header_false_generates_column_names() { - let path = fixture("test/plate_reader_data.xlsx"); - let df = read_excel(&path, None, 0, Some(false)) - .expect("expected read with header=false to succeed"); - - let names = df.get_column_names(); - assert!( - !names.is_empty(), - "expected at least one generated column name" - ); - assert_eq!(names[0].as_str(), "column_0"); -} - -#[test] -fn read_excel_fails_with_no_header() { - let path = fixture("test/plate_reader_data.xlsx"); - - let df = read_excel(&path, None, 0, None); - assert!( - df.is_err(), - "expected reading to fail with no header in file" - ); -} - -#[test] -fn read_excel_skiprows_reduces_height() { - let path = fixture("test/plate_reader_data_expected.xlsx"); - - let df_no_skip = read_excel(&path, None, 0, None).expect("read without skiprows failed"); - let df_skip_1 = read_excel(&path, None, 1, None).expect("read with skiprows=1 failed"); - - assert!( - df_skip_1.height() <= df_no_skip.height(), - "skiprows should not increase row count" - ); -} - -#[test] -fn read_excel_nonexistent_sheet_returns_error() { - let path = fixture("test/plate_reader_data.xlsx"); - - let err = read_excel(&path, Some("this_sheet_does_not_exist"), 0, None) - .expect_err("expected error for nonexistent sheet"); - - let msg = format!("{err}"); - assert!( - msg.contains("Failed to get sheet"), - "expected sheet lookup error, got: {msg}" - ); -} - -#[test] -fn read_excel_nonexistent_file_returns_error() { - let path = fixture("test/this_file_does_not_exist.xlsx"); - - let err = read_excel(&path, None, 0, None).expect_err("expected file-open error"); - let msg = format!("{err}"); - - assert!( - msg.contains("Failed to open Excel file"), - "expected open-file error, got: {msg}" - ); -} - -/// Optional: enable when you add a fixture with duplicate header names. -/// e.g. `test/duplicate_headers.xlsx` first row: `A,A,B` -#[test] -#[ignore = "requires test/duplicate_headers.xlsx fixture"] -fn read_excel_duplicate_headers_returns_error() { - let path = fixture("test/duplicate_headers.xlsx"); - - let err = - read_excel(&path, None, 0, None).expect_err("expected duplicate header validation error"); - let msg = format!("{err}"); - - assert!( - msg.contains("Duplicate column names found in Excel sheet"), - "expected duplicate-header error, got: {msg}" - ); -} diff --git a/tests/io_routing.rs b/tests/io_routing.rs deleted file mode 100644 index 9021cdf..0000000 --- a/tests/io_routing.rs +++ /dev/null @@ -1,112 +0,0 @@ -use essential_scripts_rs::io::{WriteToCsvOrStdout, read_from_file}; -use polars::prelude::*; -use pretty_assertions::assert_eq; -use rstest::rstest; -use rstest_reuse::{self, *}; -use std::fs; -use std::path::PathBuf; -use std::time::{SystemTime, UNIX_EPOCH}; - -fn unique_path(ext: Option<&str>) -> PathBuf { - let nanos = SystemTime::now() - .duration_since(UNIX_EPOCH) - .expect("system clock before unix epoch") - .as_nanos(); - match ext { - None => std::env::temp_dir().join(format!("io_test_{nanos}")), - Some(ext) => std::env::temp_dir().join(format!("io_test_{nanos}.{ext}")), - } -} - -fn write_text_file(path: &PathBuf, contents: &str) { - fs::write(path, contents).expect("failed to write test input file"); -} - -fn collect_df(lf: LazyFrame) -> DataFrame { - lf.collect().expect("failed to collect lazyframe") -} - -#[rstest] -#[case::parse_csv(Some(b','), "a,b\n1,2\n", Some("csv"))] -#[case::parse_tsv(Some(b'\t'), "a\tb\n1\t2\n", Some("tsv"))] -#[case::parse_tsv_default_sep(None, "a\tb\n1\t2\n", Some("tsv"))] -#[should_panic(expected = "Unsupported separator")] -#[case::fail_unsupported_sep(Some(b';'), "a\tb\n1\t2\n", Some("csv"))] -#[case::parse_tsv_no_ext(None, "a\tb\n1\t2\n", None)] -fn read_from_file_with_sep(#[case] sep: Option, #[case] text: &str, #[case] ext: Option<&str>) { - let path = unique_path(ext); - write_text_file(&path, text); - - let df = collect_df(read_from_file(path.clone(), sep)); - fs::remove_file(path).ok(); - - assert_eq!(df.shape(), (1, 2)); - assert_eq!(df.get_column_names()[0].as_str(), "a"); - assert_eq!(df.get_column_names()[1].as_str(), "b"); -} - -#[template] -#[rstest] -#[case(Some("tsv"), Some(b','), "1,2")] -#[case(Some("csv"), Some(b','), "1,2")] -#[case(Some("tsv"), Some(b'\t'), "1\t2")] -#[case(Some("tsv"), None, "1\t2")] -#[should_panic(expected = "Unsupported separator")] -#[case(Some("csv"), Some(b';'), "1;2")] -fn write_to_file_template( - #[case] path_ext: Option<&str>, - #[case] file_sep: Option, - #[case] exp: &str, -) { -} - -#[apply(write_to_file_template)] -fn write_to_flat(#[case] path_ext: Option<&str>, #[case] file_sep: Option, #[case] exp: &str) { - let out = unique_path(path_ext); - let df = df![ - "a" => &[1], - "b" => &[2] - ] - .expect("failed to build dataframe"); - - df.write_to_flat_or_stdout(out.clone(), file_sep); - let written = fs::read_to_string(&out).expect("failed to read output file"); - assert!(written.contains(exp), "expected row {exp}, got: {written}"); -} - -#[apply(write_to_file_template)] -fn write_to_flat_lazy( - #[case] path_ext: Option<&str>, - #[case] file_sep: Option, - #[case] exp: &str, -) { - let out = unique_path(path_ext); - let df = df![ - "a" => &[1], - "b" => &[2] - ] - .expect("failed to build dataframe") - .lazy(); - - df.write_to_flat_or_stdout(out.clone(), file_sep); - let written = fs::read_to_string(&out).expect("failed to read output file"); - assert!(written.contains(exp), "expected row {exp}, got: {written}"); -} - -#[test] -fn tsv_parsing_regression_tab_delimited_file_produces_two_columns() { - let path = unique_path(Some("tsv")); - write_text_file(&path, "col1\tcol2\nv1\tv2\n"); - - let df = collect_df(read_from_file(path.clone(), Some(b'\t'))); - fs::remove_file(path).ok(); - - // This test is intentionally strict: if TSV is parsed as CSV, you'll get one column. - assert_eq!( - df.width(), - 2, - "TSV should parse into 2 columns; got {} columns with names {:?}", - df.width(), - df.get_column_names() - ); -} From 21b9b6b815558024799f719353d69d89a4ddaf3e Mon Sep 17 00:00:00 2001 From: rschauner Date: Wed, 12 Aug 2026 15:29:00 -0400 Subject: [PATCH 02/12] test: add reusable command cases and tests for CLI subcommands - Introduce reusable test templates with `rstest_reuse`. - Add new test cases to ensure CLI subcommands handle missing inputs correctly. - Enhance subcommand coverage for `reformat-plate-reader-data`. --- tests/cli.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/cli.rs b/tests/cli.rs index 177f7d0..9906e9e 100644 --- a/tests/cli.rs +++ b/tests/cli.rs @@ -1,5 +1,6 @@ use assert_cmd::cargo::cargo_bin_cmd; use rstest::rstest; +use rstest_reuse::{apply, template}; use std::fs; use tempfile::tempdir; @@ -13,6 +14,7 @@ fn base_command_works(#[case] arg: &str) { cargo_bin_cmd!("essential-scripts-rs").arg(arg).unwrap(); } +#[template] #[rstest] #[case::aggregate_cell_ranger_tcr("aggregate-cell-ranger-tcr")] #[case::split_sample_id("split-sample-id")] @@ -22,6 +24,9 @@ fn base_command_works(#[case] arg: &str) { #[case::score_tcr_alignments("score-tcr-alignments")] #[case::geo_fastq("geo-fastq")] #[case::run_enrichr("run-enrichr")] +fn command_cases(#[case] arg: &str) {} + +#[apply(command_cases)] fn subcommand_help_works(#[case] arg: &str) { cargo_bin_cmd!("essential-scripts-rs") .args([arg, "--help"]) @@ -33,6 +38,14 @@ fn subcommand_help_works(#[case] arg: &str) { .success(); } +#[apply(command_cases)] +fn subcommand_fails_missing_input(#[case] arg: &str) { + cargo_bin_cmd!("essential-scripts-rs") + .args([arg]) + .assert() + .failure(); +} + #[rstest] #[cfg(not(feature = "tcr"))] #[case::score_tcr_alignments("score-tcr-alignments")] @@ -51,6 +64,22 @@ fn subcommand_help_prints_installation_help(#[case] arg: &str) { assert!(stdout.contains("Requires re-installing with --features")); } +#[test] +fn reformat_plate_reader_data_subcommand_fails_for_missing_input_file() { + let tmp = tempdir().unwrap(); + let missing_input = tmp.path().join("missing.xlsx"); + let output_dir = tmp.path().join("output"); + + cargo_bin_cmd!("essential-scripts-rs") + .args([ + "reformat-plate-reader-data", + missing_input.to_str().unwrap(), + output_dir.to_str().unwrap(), + ]) + .assert() + .failure(); +} + #[test] fn split_sample_id_cli_runs() { let tmp = tempdir().unwrap(); From c665627721010d2630805b620b28ae459b19c6a6 Mon Sep 17 00:00:00 2001 From: rschauner Date: Wed, 12 Aug 2026 15:29:22 -0400 Subject: [PATCH 03/12] test: remove unused test config and adjust helper visibility - Remove `#[ignore]` attribute for `test_blosum62_error_handling` as it is no longer needed. - Limit `set_blosum62_to_err_for_test` function visibility to the current module by removing `pub(crate)`. --- src/tcr_align/align.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/tcr_align/align.rs b/src/tcr_align/align.rs index df7d953..7232b76 100644 --- a/src/tcr_align/align.rs +++ b/src/tcr_align/align.rs @@ -281,15 +281,13 @@ mod tests { } // Test helper to set the BLOSUM62 OnceLock to a failure. This is only available in tests. - #[cfg(test)] - pub(crate) fn set_blosum62_to_err_for_test(msg: &str) -> Result<(), String> { + fn set_blosum62_to_err_for_test(msg: &str) -> Result<(), String> { BLOSUM62 .set(Err(msg.to_string())) .map_err(|_| "BLOSUM62 already initialized".to_string()) } #[test] - #[ignore = "for manual testing only"] fn test_blosum62_error_handling() { // Force the BLOSUM62 to an error state set_blosum62_to_err_for_test("test error").expect("set error"); From 12b55035b32918ee7153aa208a986bfe5f539f97 Mon Sep 17 00:00:00 2001 From: rschauner Date: Wed, 12 Aug 2026 15:32:08 -0400 Subject: [PATCH 04/12] refactor(enrichment): decouple API logic using `EnrichrAPITrait` and remove internal API dependency - Introduced `EnrichrAPITrait` to abstract API interactions. - Removed internal `api` field from `Enrichment` and adjusted `run` method to accept `EnrichrAPITrait` implementations. - Simplified `EnrichrAPI` initialization by passing `background` directly. refactor(enrichment): extract gene list parsing into separate function test: add tests for enrichment module --- src/enrich/api.rs | 34 +- src/enrich/core.rs | 338 +- src/enrich/mod.rs | 55 + tests/data/example_background.txt | 20625 ++++++++++++++++++++++++++++ tests/data/example_gene_list.txt | 614 + 5 files changed, 21608 insertions(+), 58 deletions(-) create mode 100644 tests/data/example_background.txt create mode 100644 tests/data/example_gene_list.txt diff --git a/src/enrich/api.rs b/src/enrich/api.rs index e85c118..b24ebf3 100644 --- a/src/enrich/api.rs +++ b/src/enrich/api.rs @@ -1,10 +1,38 @@ -use crate::enrich::core::{Enrichment, EnrichrResult}; +use crate::enrich::core::EnrichrResult; use reqwest; use reqwest::multipart; use serde::{Deserialize, Deserializer, Serialize}; use serde_json::Value; use std::collections::HashMap; +pub trait EnrichrAPITrait: Send + Sync { + async fn send_genes( + &mut self, + gene_list: &[String], + libraries: &[String], + send_background: bool, + ) -> Result<(), APIFailure>; + async fn enrich(&mut self, library_name: &String) -> Result; + fn get_short_id(&self) -> Option; +} + +impl EnrichrAPITrait for EnrichrAPI { + async fn send_genes( + &mut self, + gene_list: &[String], + libraries: &[String], + send_background: bool, + ) -> Result<(), APIFailure> { + self.send_genes(gene_list, libraries, send_background).await + } + async fn enrich(&mut self, library_name: &String) -> Result { + self.enrich(library_name).await + } + fn get_short_id(&self) -> Option { + self.get_short_id() + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ListResponse { #[serde(rename = "userListId")] @@ -103,8 +131,8 @@ impl EnrichrAPI { const BACKGROUND_URL: &'static str = "addbackground"; const BACKGROUND_ENRICH_URL: &'static str = "backgroundenrich"; - pub fn new(enrichment: Enrichment) -> Self { - match enrichment.background { + pub fn new(background: Option>) -> Self { + match background { Some(_background) => EnrichrAPI { client: reqwest::Client::new(), list_response: None, diff --git a/src/enrich/core.rs b/src/enrich/core.rs index d088aa3..b2b471d 100644 --- a/src/enrich/core.rs +++ b/src/enrich/core.rs @@ -1,4 +1,4 @@ -use crate::enrich::api::EnrichrAPI; +use crate::enrich::api::{EnrichrAPI, EnrichrAPITrait}; use crate::io::WriteToCsvOrStdout; use cairo; use plotters::coord::Shift; @@ -8,6 +8,7 @@ use polars::polars_utils::itertools::Itertools; use polars::prelude::*; use serde::{Deserialize, Serialize}; use serde_json::Value; +use std::error::Error; use std::fs; use std::path::{Path, PathBuf}; use tokio; @@ -173,8 +174,7 @@ pub struct Enrichment { pub gene_list: Vec, pub libraries: Vec, pub background: Option>, - api: Option, - results: Vec, + pub results: Vec, } impl Enrichment { @@ -183,7 +183,6 @@ impl Enrichment { gene_list, libraries, background: None, - api: None, results: Vec::new(), } } @@ -193,42 +192,28 @@ impl Enrichment { self } - pub fn build(&mut self) -> &mut Self { - self.api = Some(EnrichrAPI::new(self.to_owned())); - self - } - - pub async fn run(&mut self) -> Result<&mut Self, Box> { - match &mut self.api { - Some(api) => { - api.send_genes(&self.gene_list, &self.libraries, false) - .await?; - if self.background.is_some() { - api.send_genes(&self.gene_list, &self.libraries, true) - .await?; - } + pub async fn run( + &mut self, + api: &mut A, + ) -> Result<&mut Self, Box> { + api.send_genes(&self.gene_list, &self.libraries, false) + .await?; + if self.background.is_some() { + api.send_genes(&self.gene_list, &self.libraries, true) + .await?; + } - for lib in &self.libraries { - self.results.push(api.enrich(lib).await?); - } - } - None => { - return Err(Box::new(std::io::Error::other( - "API not initialized. Call build() before run().", - ))); - } + for lib in &self.libraries { + self.results.push(api.enrich(lib).await?); } Ok(self) } - pub fn get_short_id(&self) -> Option { - match self.api { - None => None, - Some(ref api) => api.get_short_id(), - } + pub fn get_short_id(&self, api: &A) -> Option { + api.get_short_id() } - pub fn save_results(&self, path_buf: PathBuf) -> Result<(), Box> { + pub fn save_results(&self, path_buf: PathBuf) -> Result<(), Box> { let df: Vec = self .results .iter() @@ -269,7 +254,7 @@ impl Enrichment { message: &str, width: u32, height: u32, - ) -> Result<(), Box> + ) -> Result<(), Box> where DB::ErrorType: 'static, { @@ -290,7 +275,7 @@ impl Enrichment { message: &str, width: u32, height: u32, - ) -> Result<(), Box> { + ) -> Result<(), Box> { let ext = path .extension() .and_then(|s| s.to_str()) @@ -332,7 +317,7 @@ impl Enrichment { n: usize, color_primary: RGBColor, color_secondary: RGBColor, - ) -> Result<(), Box> + ) -> Result<(), Box> where DB::ErrorType: 'static, { @@ -374,7 +359,7 @@ impl Enrichment { color_primary: RGBColor, color_secondary: RGBColor, top_n: usize, - ) -> Result<(), Box> { + ) -> Result<(), Box> { const BAR_HEIGHT_PER_ITEM: u32 = 70; const MIN_BAR_ROWS: u32 = 5; @@ -468,7 +453,7 @@ impl Enrichment { library: Option, color: Option, color2: Option, - ) -> Result<(), Box> { + ) -> Result<(), Box> { let lib = library.unwrap_or_else(|| self.libraries[0].clone()); let color = color.unwrap_or_else(|| "lightskyblue".to_string()); let color2 = color2.unwrap_or_else(|| "lightgrey".to_string()); @@ -480,7 +465,7 @@ impl Enrichment { .ok_or_else(|| { Box::new(std::io::Error::other(format!( "No results found for library: {lib}" - ))) as Box + ))) as Box })?; // Clone for blocking thread @@ -504,12 +489,12 @@ impl Enrichment { top_n, )?; } - Ok::<(), Box>(()) + Ok::<(), Box>(()) }) .await; // Map JoinError -> plain boxed error, then handle inner boxed error explicitly - let inner_res: Result<(), Box> = match join_result { + let inner_res: Result<(), Box> = match join_result { Ok(res) => res, Err(join_err) => { return Err(Box::from(format!( @@ -533,27 +518,19 @@ pub async fn enrich_command( background: Option, output_file: PathBuf, output_plot: Vec, -) -> Result<(), Box> { - let genes: Vec = fs::read_to_string(&gene_list)? - .lines() - .map(|line| line.trim().to_string()) - .filter(|line| !line.is_empty()) - .collect(); +) -> Result<(), Box> { + let genes = get_genes(&gene_list)?; let libraries = vec![library.clone()]; let mut enrich = Enrichment::new(genes, libraries); if let Some(path) = &background { - let bg_genes: Vec = fs::read_to_string(path)? - .lines() - .map(|line| line.trim().to_string()) - .filter(|line| !line.is_empty()) - .collect(); + let bg_genes: Vec = get_genes(path)?; enrich.with_background(bg_genes); } - enrich.build(); - enrich.run().await?; + let mut api = EnrichrAPI::new(enrich.background.clone()); + enrich.run(&mut api).await?; - if let Some(short_id) = enrich.get_short_id() + if let Some(short_id) = enrich.get_short_id(&api) && background.is_none() { println!( @@ -566,3 +543,254 @@ pub async fn enrich_command( .await?; Ok(()) } + +fn get_genes(gene_list: &PathBuf) -> Result, Box> { + let genes: Vec = fs::read_to_string(gene_list)? + .lines() + .map(|line| line.trim().to_string()) + .filter(|line| !line.is_empty()) + .collect(); + Ok(genes) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::enrich::api::APIFailure; + use crate::test_helpers::*; + use pretty_assertions::{assert_eq, assert_ne}; + use rstest::{Context, fixture, rstest}; + use std::time::Duration; + use temp_testdir::TempDir; + + #[fixture] + fn create_test_results() -> EnrichrResult { + EnrichrResult::new( + vec![1, 2, 3, 4, 5], + vec![ + "t1".to_string(), + "t2".to_string(), + "t3".to_string(), + "t4".to_string(), + "t5".to_string(), + ], + vec![0.01, 0.02, 0.03, 0.04, 0.05], + vec![5.0, 4.0, 3.0, 2.0, 1.0], + "lib1".to_string(), + vec![ + "g1".to_string(), + "g2".to_string(), + "g3".to_string(), + "g4".to_string(), + "g5".to_string(), + ], + vec![0.01, 0.02, 0.03, 0.04, 0.05], + vec![5.0, 4.0, 3.0, 2.0, 1.0], + ) + } + + #[rstest] + fn test_get_genes() { + let gene_list = PathBuf::from("tests/data/example_gene_list.txt"); + let actual = get_genes(&gene_list).unwrap(); + assert_eq!(actual.len(), 614); + assert_eq!(actual[0], "A1CF"); + assert_eq!(actual[613], "ZNF831"); + } + + #[rstest] + #[timeout(Duration::from_secs(10))] + #[tokio::test(flavor = "multi_thread", worker_threads = 1)] + async fn test_enrich_command_to_api_backend(#[values(true, false)] use_background: bool) { + let library = "Reactome_Pathways_2024".to_string(); + let gene_list = PathBuf::from("tests/data/example_gene_list.txt"); + + let genes = get_genes(&gene_list).unwrap(); + let libraries = vec![library.clone()]; + let mut enrich = Enrichment::new(genes, libraries); + + if use_background { + let background = PathBuf::from("tests/data/example_background.txt"); + let bg_genes: Vec = get_genes(&background).unwrap(); + enrich.with_background(bg_genes); + } + + let mut api = EnrichrAPI::new(enrich.background.clone()); + enrich.run(&mut api).await.unwrap(); + let temp = TempDir::default(); + let tsv_file = temp.with_file_name(get_timestamp()).with_extension("tsv"); + let svg_file = temp.with_file_name(get_timestamp()).with_extension("svg"); + let pdf_file = temp.with_file_name(get_timestamp()).with_extension("pdf"); + let png_file = temp.with_file_name(get_timestamp()).with_extension("png"); + assert!(enrich.save_results(tsv_file).is_ok()); + assert!( + enrich + .bar_plot( + vec![svg_file, pdf_file, png_file], + Some(library), + None, + None + ) + .await + .is_ok() + ); + + let df = enrich.results[0].to_dataframe().unwrap(); + assert_eq!(df.height(), 791); + assert_eq!(df.width(), 8); + } + + #[test] + fn test_enrichr_result_from_json() { + let json = serde_json::json!([ + [1, "term1", 0.01, 2.0, 3.0, ["gene1", "gene2"], 0.05], + [2, "term2", 0.05, 1.0, 2.0, ["gene3"], 0.1] + ]); + let result = EnrichrResult::new_from_json(&json, "lib1"); + assert_eq!(result.rank, vec![1, 2]); + assert_eq!(result.term, vec!["term1", "term2"]); + assert_eq!(result.p_value, vec![0.01, 0.05]); + assert_eq!(result.zscore, vec![2.0, 1.0]); + assert_eq!(result.combined_score, vec![3.0, 2.0]); + assert_eq!(result.overlap_genes, vec!["gene1, gene2", "gene3"]); + assert_eq!(result.q_value, vec![0.05, 0.1]); + assert_eq!(result.library, "lib1"); + } + + struct MockEnrichrAPI; + impl EnrichrAPITrait for MockEnrichrAPI { + async fn send_genes( + &mut self, + _gene_list: &[String], + _libraries: &[String], + _send_background: bool, + ) -> Result<(), APIFailure> { + Ok(()) + } + async fn enrich(&mut self, library_name: &String) -> Result { + Ok(EnrichrResult::empty(library_name)) + } + fn get_short_id(&self) -> Option { + Some("short_id".to_string()) + } + } + + #[rstest] + #[timeout(Duration::from_secs(10))] + #[tokio::test(flavor = "multi_thread", worker_threads = 1)] + async fn test_enrichment_run() { + let mut enrich = Enrichment::new(vec!["gene1".to_string()], vec!["lib1".to_string()]); + let mut api = MockEnrichrAPI; + enrich.run(&mut api).await.unwrap(); + assert_eq!(enrich.results.len(), 1); + assert_eq!(enrich.results[0].library, "lib1"); + + let temp = TempDir::default(); + let tsv_file = temp.with_file_name(get_timestamp()).with_extension("tsv"); + let svg_file = temp.with_file_name(get_timestamp()).with_extension("svg"); + let pdf_file = temp.with_file_name(get_timestamp()).with_extension("pdf"); + let png_file = temp.with_file_name(get_timestamp()).with_extension("png"); + assert!(enrich.save_results(tsv_file).is_ok()); + assert!( + enrich + .bar_plot( + vec![svg_file, pdf_file, png_file], + Some("lib1".to_string()), + None, + None + ) + .await + .is_ok() + ); + } + + #[rstest] + fn test_enrichr_result_to_dataframe(#[from(create_test_results)] result: EnrichrResult) { + let df = result.to_dataframe().unwrap(); + assert_eq!(df.height(), 5); + } + + #[rstest] + fn test_enrichr_result_get_all_rows_as_values( + #[from(create_test_results)] result: EnrichrResult, + ) { + let rows = result.get_all_rows_as_values(); + assert_eq!(rows.len(), 5); + assert_eq!(rows[0].len(), 7); + } + + #[rstest] + #[case(2)] + #[case(3)] + #[case(10)] + fn test_enrichr_result_get_top_n( + #[context] ctx: Context, + #[from(create_test_results)] result: EnrichrResult, + #[case] n: usize, + ) { + let top = result.get_top_n(n); + let n = if ctx.case == Some(2) { + // Test case 2: n is larger than the number of rows + // Want to be sure get_top_n() does not add extra rows + // Then set n to 5 to make sure the returned top-N the number of rows in result + assert_ne!(top.rank.len(), n); + 5 + } else { + n + }; + assert_eq!(top.rank.len(), n); + assert_eq!(top.rank, (1..=n as i32).collect::>()); + } + + #[test] + fn test_enrichment_with_background() { + let mut enrich = Enrichment::new(vec!["gene1".to_string()], vec!["lib1".to_string()]); + assert!(enrich.background.is_none()); + enrich.with_background(vec!["bg1".to_string()]); + assert!(enrich.background.is_some()); + } + + #[rstest] + #[case::red("red", RGBColor(255, 0, 0))] + #[case::blue("blue", RGBColor(0, 0, 255))] + #[case::white_hex("#FFFFFF", RGBColor(255, 255, 255))] + #[case::black_hex("#000000", RGBColor(0, 0, 0))] + #[case::default_hex("#GGGGGG", RGBColor(135, 206, 250))] + #[case::invalid("#FF", RGBColor(135, 206, 250))] + fn test_parse_color(#[case] input: &str, #[case] expected: RGBColor) { + assert_eq!(Enrichment::parse_color(input), expected); + } + + #[test] + fn test_enrichr_result_empty() { + let result = EnrichrResult::empty("test_lib"); + assert_eq!(result.library, "test_lib"); + assert_eq!(result.rank.len(), 1); + assert_eq!(result.p_value, vec![1.0]); + } + + #[test] + fn test_enrichr_result_new_from_json_empty() { + let json = serde_json::json!([]); + let result = EnrichrResult::new_from_json(&json, "lib1"); + assert_eq!(result.rank.len(), 0); + assert_eq!(result.library, "lib1"); + } + + #[test] + fn test_enrichr_result_new_from_json_incomplete_row() { + let json = serde_json::json!([[1, "term1"], [2, "term2", 0.05, 1.0, 2.0, ["gene3"], 0.1]]); + let result = EnrichrResult::new_from_json(&json, "lib1"); + assert_eq!(result.rank.len(), 1); + assert_eq!(result.rank[0], 2); + } + + #[test] + fn test_enrichment_new() { + let enrich = Enrichment::new(vec!["gene1".to_string()], vec!["lib1".to_string()]); + assert_eq!(enrich.gene_list.len(), 1); + assert_eq!(enrich.libraries.len(), 1); + assert!(enrich.background.is_none()); + assert_eq!(enrich.results.len(), 0); + } +} diff --git a/src/enrich/mod.rs b/src/enrich/mod.rs index f7a567a..69244f8 100644 --- a/src/enrich/mod.rs +++ b/src/enrich/mod.rs @@ -120,3 +120,58 @@ pub async fn handle_command(cmd: Commands) -> Result<(), Error> { } } } + +#[cfg(test)] +mod tests { + use super::Library; + use pretty_assertions::assert_eq; + use rstest::*; + + #[rstest] + #[case(Library::ReactomePathways2024, "Reactome_Pathways_2024")] + #[case(Library::Reactome, "Reactome_Pathways_2024")] + #[case(Library::BioCarta2016, "BioCarta_2016")] + #[case(Library::WikiPathways2024Human, "WikiPathways_2024_Human")] + #[case(Library::GOBiologicalProcess, "GO_Biological_Process_2026")] + fn test_library_to_string(#[case] library: Library, #[case] expected: &str) { + assert_eq!(library.to_string(), expected); + } + + #[cfg(not(feature = "enrichment"))] + mod disabled_tests { + use super::super::*; + + #[test] + #[should_panic( + expected = "This command requires the `enrichment` feature. Rebuild with `--features enrichment`" + )] + fn test_handle_command() { + let cmd = Commands::RunEnrichr { + library: Library::ReactomePathways2024, + gene_list: PathBuf::from("genes.txt"), + background: None, + output_file: PathBuf::from("output.txt"), + output_plot: vec![PathBuf::from("plot.png")], + }; + let _ = handle_command(cmd).unwrap(); + } + } + + #[cfg(feature = "enrichment")] + mod enrichment_tests { + use super::super::*; + use pretty_assertions::assert_eq; + use rstest::*; + use std::path::PathBuf; + + #[rstest] + #[case(None)] + #[should_panic(expected = "Background is not supported in the API")] + #[case(Some(&PathBuf::from("background.txt")))] + fn test_must_be_none(#[case] background: Option<&PathBuf>) { + let result = must_be_none(background).unwrap(); + + assert_eq!(result, None); + } + } +} diff --git a/tests/data/example_background.txt b/tests/data/example_background.txt new file mode 100644 index 0000000..b1643f6 --- /dev/null +++ b/tests/data/example_background.txt @@ -0,0 +1,20625 @@ +A1BG +A2M +NAT1 +NAT2 +SERPINA3 +AADAC +AAMP +AANAT +AARS1 +ABAT +ABCA1 +ABCA2 +ABCA3 +ABCB7 +ABCF1 +ABCA4 +ABL1 +AOC1 +ABL2 +ABO +ABR +ACAA1 +ACACA +ACACB +ACADL +ACADM +ACADS +ACADSB +ACADVL +ACAT1 +ACAT2 +ASIC2 +ASIC1 +ACHE +ACLY +ACO1 +ACR +ACO2 +ACOX1 +ACP1 +ACP2 +ACP5 +ACP3 +ACRV1 +ACTA1 +ACTA2 +ACTB +ACTC1 +ACTG1 +ACTG2 +ACTN4 +ACTL6A +ACTN1 +ACTN2 +ACTN3 +ACVR1 +ACVR1B +ACVR2A +ACVR2B +ACVRL1 +ACY1 +ACYP1 +ACYP2 +ADA +ADAM8 +ADAM10 +ADAR +ADARB1 +ADARB2 +ADCY1 +ADCY2 +ADCY3 +ADCY5 +ADCY6 +ADCY7 +ADCY8 +ADCY9 +ADCYAP1 +ADCYAP1R1 +ADD1 +ADD2 +ADD3 +PLIN2 +ADH1A +ADH1B +ADH1C +ADH4 +ADH5 +ADH6 +ADH7 +ADK +ADM +ADORA1 +ADORA2A +ADORA2B +ADORA3 +ADPRH +PARP1 +PARP4 +ADRA1D +ADRA1B +ADRA1A +ADRA2A +ADRA2B +ADRA2C +ADRB1 +ADRB2 +ADRB3 +GRK2 +GRK3 +ADSL +ADSS2 +AP2A1 +AP2A2 +AP1B1 +AP2B1 +AP1G1 +AEBP1 +TLE5 +CRISP1 +AFM +AFP +AGA +ACAN +AGER +AGL +AGRP +JAG1 +AGT +AGTR1 +AGTR2 +APLNR +AGXT +NR0B1 +AHCY +AHR +AHSG +AIF1 +CRYBG1 +AK1 +AK2 +AK4 +AKT1 +AKT2 +ALAD +ALAS1 +ALAS2 +ALB +ALCAM +ABCD1 +ALDH1A1 +ALDH2 +ALDH3A1 +ALDH1B1 +ALDH1A3 +ALDH3B1 +ALDH3B2 +ALDH9A1 +ALDH3A2 +ABCD2 +ALDOA +ALDOB +ALDOC +AKR1B1 +ALK +ALOX12 +ALOX5 +ALOX5AP +ALOX12B +ALOX15 +ALOX15B +ALPI +ALPL +ALPP +ALPG +ALX3 +AMBN +AMBP +AMD1 +AMELX +AMELY +AMFR +AMH +AMHR2 +AMPD1 +AMPD2 +AMPD3 +AMPH +BIN1 +AMT +AMY1A +AMY1B +AMY1C +AMY2A +AMY2B +ANG +ANGPT1 +ANGPT2 +ANK1 +ANK2 +ANK3 +ANPEP +SLC25A4 +SLC25A5 +SLC25A6 +ANXA1 +ANXA2 +ANXA3 +ANXA4 +ANXA5 +ANXA6 +ANXA7 +ANXA11 +ANXA13 +AOAH +AOC2 +AOX1 +APAF1 +NUDT2 +APOF +APBA1 +APBA2 +APBB1 +APBB2 +APC +APCS +AIRE +APEH +APEX1 +BIRC2 +BIRC3 +XIAP +BIRC5 +APLP1 +APLP2 +APOA1 +APOA2 +APOA4 +APOB +APOBEC1 +APOC1 +AQP8 +APOC2 +APOC3 +APOC4 +APOD +APOE +APOH +APP +APRT +KLK3 +FAS +FASLG +SHROOM2 +AQP1 +AQP2 +AQP3 +AQP4 +AQP5 +AQP6 +AQP7 +AQP9 +AR +ABCC6 +ARAF +ARCN1 +TRIM23 +AREG +ARF1 +ARF3 +ARF4 +ARL4D +ARF5 +ARF6 +ARG1 +ARG2 +RHOA +RHOB +RHOC +RND3 +RHOG +ARHGAP1 +ARHGAP4 +ARHGAP5 +ARHGAP6 +ARHGDIA +ARHGDIB +ARHGDIG +RHOH +ARL1 +PHOX2A +ARL2 +ARL3 +ARNT +BMAL1 +ARR3 +ARRB1 +ARRB2 +ARSA +ARSB +STS +ARSD +ARSL +ARSF +ART1 +ART3 +ART4 +ARVCF +ASAH1 +ASCL1 +ASCL2 +ASGR1 +ASGR2 +ASIP +ASL +ASMT +GET3 +ASNS +ASPA +ASPH +ASS1 +ASTN1 +SERPINC1 +ZFHX3 +ATF1 +ATF3 +ATF4 +ATIC +ATM +RERE +ATOH1 +ATOX1 +ATP1A1 +ATP1A2 +ATP1A3 +ATP12A +ATP1A4 +ATP1B1 +ATP1B2 +ATP1B3 +FXYD2 +ATP2A1 +ATP2A2 +ATP2A3 +ATP2B1 +ATP2B2 +ATP2B3 +ATP2B4 +ATP4A +ATP4B +ATP5F1A +ALDH7A1 +ATP5F1B +ATP5F1C +ATP5F1D +ATP5F1E +ATP5PB +ATP5MC1 +ATP5MC2 +ATP5MC3 +ATP5ME +ATP5PF +ATP6V1A +ATP6V1B1 +ATP6V1B2 +ATP6V0C +ATP6V1C1 +ATP6V1E1 +ATP6V0B +ATP6V1G2 +ATP6V0A1 +ATP6AP1 +ATP7A +ATP5PO +ATP7B +ATR +ATRX +KIF1A +AUH +AUP1 +AVP +AVPR1A +AVPR1B +AVPR2 +AXL +AZGP1 +AZU1 +B2M +BAAT +BACH1 +BAD +BAG1 +BAGE +ADGRB1 +ADGRB2 +ADGRB3 +BAK1 +NKX3-2 +BARD1 +BAX +BBS1 +BBS2 +BBS4 +BCAT1 +BCAT2 +BCHE +BCKDHA +BCKDHB +CCND1 +BCL2 +BCL2A1 +BCL2L1 +BCL2L2 +BCL3 +BCL6 +BCL7A +BCL9 +TNFRSF17 +HCN2 +OPN1SW +BCR +BCS1L +BDH1 +BDKRB1 +BDKRB2 +BDNF +CFB +BFSP1 +BGLAP +BGN +CEACAM1 +BHMT +BICD1 +BID +BIK +PRDM1 +BLK +BLM +BLMH +CXCR5 +BLVRA +BLVRB +BNC1 +BMI1 +BMP1 +BMP2 +BMP3 +BMP4 +BMP5 +BMP6 +BMP7 +BMP8B +BMPR1A +BMPR1B +BMPR2 +BMX +POLR3D +BNIP1 +BNIP2 +BNIP3 +BNIP3L +BOK +DST +FOXL2 +BPGM +BPHL +BPI +BRCA1 +BRAF +BRCA2 +BRDT +ZFP36L1 +ZFP36L2 +BRS3 +BSG +BST1 +BST2 +BTC +BTD +KLF9 +KLF5 +BTF3 +BTG1 +BTK +BTN1A1 +BUB1 +BUB1B +BYSL +TSPO +C1QBP +SERPING1 +C1QA +C1QB +C1QC +C1R +C1S +C2 +C3 +C3AR1 +C4A +C4B +C4BPA +C4BPB +CAPN5 +C5 +C5AR1 +C6 +C7 +C8A +C8B +C8G +OSGIN2 +C9 +VPS51 +MRPL49 +ZNHIT2 +MPPED2 +MYRF +TMEM258 +DAGLA +FMNL1 +LDLRAD4 +PTTG1IP +CFAP410 +TMEM50B +MPPED1 +CA1 +CA2 +CA3 +CA4 +CA5A +CA6 +CA7 +CA8 +CA9 +CA11 +CA12 +CACNA1A +CACNA1B +CACNA1C +CACNA1D +CACNA1E +CACNA1F +CACNA1S +DDR1 +CACNA2D1 +CACNB1 +CACNB2 +CACNB3 +CACNB4 +CACNG1 +SLC25A20 +CAD +CALB1 +CALB2 +S100G +CALCA +CALCB +CALCR +CALD1 +CALM1 +CALM2 +CALM3 +CALML3 +CALR +CALU +CAMK4 +CAMK2A +CAMK2B +CAMK2D +CAMK2G +CAMLG +CAMP +CANX +CAPG +CAPN1 +CAPN2 +CAPN3 +CAPNS1 +CAPN6 +CAPS +CAPZA1 +CAPZA2 +CAST +CAPZB +CARS1 +CASP1 +CASP2 +CASP3 +CASP4 +CASP5 +CASP6 +CASP7 +CASP8 +CASP9 +CASP10 +CASQ1 +CASQ2 +CASR +CAT +CAV1 +CAV2 +CAV3 +RUNX2 +RUNX1 +RUNX1T1 +CBFA2T3 +RUNX3 +CBFB +SERPINA6 +CBL +CBLB +CBLN1 +SERPINH1 +CBR1 +CBR3 +CBS +CCIN +KYAT1 +CCK +CCKAR +CCKBR +KRIT1 +CCNA2 +CCNB1 +CCNC +CCND2 +CCND3 +CCNE1 +CCNF +CCNG1 +CCNG2 +CCNH +CCNT1 +CCNT2 +CCT6A +CD1A +CD1B +CD1C +CD1D +CD1E +CD2 +CD3D +CD3E +CD3G +CD247 +CD4 +CD5 +CD5L +CD6 +CD7 +CD8A +CD8B +CD8B2 +CD9 +CD14 +CD19 +MS4A1 +MS4A3 +CD22 +CD27 +CD28 +CD80 +CD86 +TNFRSF8 +TNFSF8 +CD33 +SIGLEC6 +CD34 +CD36 +SCARB1 +SCARB2 +CD37 +CD38 +ENTPD1 +ENTPD2 +ENTPD6 +ENTPD3 +ENTPD5 +CD40 +CD40LG +CD44 +CD47 +CD48 +CD53 +CD58 +CD59 +CD63 +CD68 +CD69 +CD70 +CD72 +CD74 +CD79A +CD79B +CD81 +ADGRE5 +CD151 +CDA +CDK1 +CDK11B +LRBA +CDC5L +SEPTIN7 +CDC6 +CDC20 +CDC25A +CDC25B +CDC25C +CDC27 +CDC34 +CDC42 +CDH1 +CDH2 +CDH3 +CDH4 +CDH5 +CDH6 +CDH7 +CDH8 +CDH9 +CDH10 +CDH11 +CDH12 +CDH13 +CDH15 +CDH16 +CDH17 +CDH18 +CDK2 +CDK3 +CDK4 +CDK5 +CDK6 +CDK7 +CDK8 +CDK9 +CDKN1A +CDKN1B +CDKN1C +CDKN2A +CDKN2B +CDKN2C +CDKN2D +CDKN3 +CDO1 +CDR2 +CDS1 +CDSN +CD52 +CDX1 +CDX2 +CDX4 +CLGN +CEACAM5 +CEBPA +CEBPB +CEBPD +CEBPE +CEBPG +CEL +CENPA +CENPB +CENPC +CENPE +CENPF +CES1 +CETN1 +CETN2 +CETN3 +CETP +CFL1 +CFL2 +CTSC +CFTR +CGA +CGB3 +CEACAM3 +CEACAM7 +CEACAM8 +CEACAM4 +CHAD +RCBTB2 +CHAT +RCC1 +CHD1 +CHD2 +CHD3 +CHD4 +AKR1C4 +CHEK1 +FOXN3 +CHGA +CHGB +CHI3L1 +CHI3L2 +CHIT1 +CHKA +CHKB +CHM +CHML +CHN1 +CHN2 +CHRM1 +CHRM2 +LYST +CHRM3 +CHRM4 +CHRM5 +CHRNA1 +CHRNA2 +CHRNA3 +CHRNA4 +CHRNA5 +CHRNA7 +CHRNB1 +CHRNB2 +CHRNB3 +CHRNB4 +CHRND +CHRNE +CHRNG +CHUK +CIDEA +CKB +CIRBP +CISH +TBCB +CKM +CKMT1B +CKMT2 +ERCC8 +CKS1B +CKS2 +AP2M1 +AP1S1 +AP2S1 +AP3S1 +CLC +CLCA1 +CLCN1 +CLCN2 +CLCN3 +CLCN4 +CLCN5 +CLCN6 +CLCN7 +CLCNKA +CLCNKB +CLU +CLIC1 +CLIC2 +CLK1 +CLK2 +CLK3 +TPP1 +CLN3 +CLN5 +CLNS1A +CLPS +CLPTM1 +CLTA +CLTB +CLTC +CMA1 +CCR1 +CCR3 +CCR4 +CCR5 +CCR6 +CCR7 +CCR8 +ACKR2 +CMKLR1 +LTB4R +ABCC2 +CNGB1 +CNGA1 +CNGA2 +CNGA3 +CNGA4 +PLK3 +CNN1 +CNN2 +CNN3 +CNP +CNR1 +CNR2 +CNTF +CNTFR +CNTN1 +COL1A1 +COL1A2 +COL2A1 +COL3A1 +COL4A1 +COL4A2 +COL4A3 +COL4A4 +COL4A5 +COL4A6 +COL5A1 +COL5A2 +COL6A1 +COL6A2 +COL6A3 +COL7A1 +COL8A1 +COL8A2 +COL9A1 +COL9A2 +COL9A3 +COL10A1 +COL11A1 +COL11A2 +COL12A1 +COL13A1 +COL15A1 +COL16A1 +COL17A1 +COL19A1 +COMP +COMT +COPA +COPB1 +KLF6 +SLC31A1 +SLC31A2 +CORT +MAP3K8 +COX4I1 +COX5B +COX6A1 +COX6A2 +COX6B1 +COX6C +COX7A1 +COX7A2 +COX7B +COX7C +COX8A +COX10 +COX11 +COX15 +CP +CPA1 +CPA2 +CPA3 +CPB1 +CPB2 +CPD +CPE +CLDN4 +CLDN3 +CLDN7 +CPM +CPN1 +CPN2 +CPOX +CPS1 +CPT1A +CPT1B +CPT2 +CR1 +CR1L +CR2 +CRABP1 +CRABP2 +CRAT +CREB1 +ATF2 +CREBBP +ATF6B +CREBL2 +CREM +CRH +CRHBP +CRHR1 +CRHR2 +CRIP1 +CRIP2 +CRK +CRKL +CRMP1 +CRP +HAPLN1 +CRX +CRY1 +CRY2 +CRYAA +CRYAB +CRYBA1 +CRYBA2 +CRYBA4 +CRYBB1 +CRYBB2 +CRYBB3 +CRYGA +CRYGB +CRYGC +CRYGD +CRYGS +CRYM +CRYZ +CS +MAPK14 +CSE1L +CSF1 +CSF1R +CSF2 +CSF2RA +CSF2RB +CSF3 +CSF3R +CSH1 +CSH2 +CSHL1 +CSK +CSN1S1 +CSN2 +CSN3 +CSNK1A1 +CSNK1D +CSNK1E +CSNK1G2 +CSNK1G3 +CSNK2A1 +CSNK2A2 +CSNK2B +VCAN +NCAN +CSPG4 +CSRP1 +CSRP2 +SLC25A10 +CST1 +CST2 +CST3 +CST4 +CST5 +CST6 +CSTA +CSTB +CSTF1 +CSTF2 +CSTF3 +NKX2-5 +CTAG1B +CTBS +CTBP1 +CTBP2 +CTF1 +CCN2 +CTH +CTLA4 +CTNNA1 +CTNNA2 +CTNS +CTNNB1 +CTNND1 +CTNND2 +CTPS1 +CTRB1 +CTRL +CTSB +CTSD +CTSE +CTSG +CTSH +CTSK +CTSL +CTSV +CTSO +CTSS +CTSW +CTSZ +CUX1 +CX3CR1 +CXADR +TEX28 +CYB5A +CYB561 +CYBA +CYBB +CYC1 +CYLC1 +CYLC2 +CYLD +CYP1A1 +CYP1A2 +CYP1B1 +CYP2A6 +CYP2A7 +CYP3A7 +CYP2A13 +CYP2B6 +CYP2C19 +CYP2C8 +CYP2C9 +CYP2C18 +CYP2D7 +CYP2D6 +CYP2E1 +CYP2F1 +CYP2J2 +CYP3A4 +CYP3A5 +CYP4A11 +CYP4B1 +CYP7A1 +CYP8B1 +CYP11A1 +CYP11B1 +CYP11B2 +CYP17A1 +CYP19A1 +CYP21A2 +CYP24A1 +CYP26A1 +CYP27A1 +CYP27B1 +CYP51A1 +DAB1 +DAB2 +DACH1 +DAD1 +CD55 +DAG1 +DGKA +DGKB +DGKG +DGKQ +DAO +DAP +DAPK1 +DAPK3 +DARS1 +DAXX +DAZ1 +DAZL +BRINP1 +DBH +DBI +DBN1 +DBP +DBT +DCC +ECI1 +DCK +DCN +DCTD +ACE +DCT +DCTN1 +DCX +DDB1 +DDB2 +DDC +AKR1C1 +AKR1C2 +GADD45A +DDIT3 +DDOST +DDT +DDX1 +DDX3X +DDX5 +DDX6 +DMXL1 +DHX8 +DHX9 +DDX10 +DDX11 +DHX15 +DECR1 +DEFA1 +DEFA3 +DEFA4 +DEFA5 +DEFA6 +DEFB1 +DEFB4A +DES +CFD +DFFA +DFFB +TIMM8A +GSDME +COCH +DGUOK +DHCR7 +DHCR24 +DHFR +DHODH +DHPS +CYB5R3 +NQO1 +DIAPH1 +DIAPH2 +SEPTIN1 +DIO1 +DIO2 +DIO3 +DKC1 +DLAT +DLD +DLG1 +DLG2 +DLG3 +DLG4 +DLST +DLX1 +DLX2 +DLX3 +DLX4 +DLX5 +DLX6 +DMBT1 +DMD +SARDH +DMP1 +DNM1 +DMPK +DMRT1 +DMWD +DNA2 +DNAH5 +DNAH6 +DNAH8 +DNAH9 +DNASE1 +DNASE1L1 +DNASE1L2 +DNASE1L3 +DNASE2 +DYNC1H1 +DYNC1I1 +DYNC1I2 +DYNC1LI2 +DNM2 +DNMT1 +TRDMT1 +DNMT3A +DNMT3B +DNTT +DOCK1 +DOCK2 +DOCK3 +DOK1 +DXO +DPAGT1 +DPEP1 +DPH1 +DPH2 +DPP4 +DPP6 +DPT +DPYD +DPYS +DPYSL2 +DPYSL3 +DR1 +SLC26A3 +DRD1 +DRD2 +DRD3 +DRD4 +DRD5 +DRG2 +ARID3A +DRP2 +ATN1 +DSC1 +DSC2 +DSC3 +DSCAM +RCAN1 +DSG1 +DSG2 +DSG3 +TSC22D3 +DSP +EPYC +DSPP +SLC26A2 +DTNA +DTNB +HBEGF +DTX1 +DTYMK +ECM2 +DUSP1 +DUSP2 +DUSP3 +DUSP4 +DUSP5 +DUSP6 +DUSP7 +DUSP8 +DUSP9 +DUT +DVL1 +DVL2 +DVL3 +DYRK1A +TOR1A +E2F1 +E2F2 +E2F3 +E2F4 +E2F5 +E2F6 +E4F1 +EBF1 +GPR183 +ECE1 +TYMP +ECH1 +ECHS1 +ECM1 +ECT2 +EDA +S1PR1 +LPAR1 +S1PR3 +EDN1 +EDN2 +EDN3 +EDNRA +EDNRB +PHC1 +PHC2 +EEF1A1 +EEF1A2 +EEF1B2 +EEF1D +EEF1G +EEF2 +EIF2D +EFNA1 +EFNA2 +EFNA3 +EFNA4 +EFNA5 +EFNB1 +EFNB2 +EFNB3 +EGF +CELSR3 +CELSR2 +MEGF6 +MEGF8 +MEGF9 +EGFR +EGR1 +EGR2 +EGR3 +EGR4 +EHHADH +EIF1AX +EIF2S1 +EIF2B1 +EIF2S3 +EPHA2 +EIF4A1 +EIF4A2 +EIF4B +EIF4E +EIF4EBP1 +EIF4EBP2 +EIF4G1 +EIF4G2 +EIF5 +EIF5A +CELA1 +ELANE +SERPINB1 +ELAVL2 +ELAVL1 +ELAVL3 +ELAVL4 +ELF1 +ELF2 +ELF3 +ELF4 +ELF5 +ELK1 +ELK3 +ELK4 +ELN +EML1 +EMD +MARK2 +EMP1 +EMP2 +EMP3 +ADGRE1 +EMX1 +CTTN +EMX2 +EN1 +EN2 +ENDOG +ENG +ENO1 +ENO2 +ENO3 +ENPEP +ENSA +SLC29A1 +EP300 +EPAS1 +EPB41 +EPB41L1 +EPB41L2 +EPB42 +DMTN +STOM +EPHA1 +EPHA3 +EPHA4 +EPHA5 +EPHA7 +EPHA8 +EPHB1 +EPHB2 +EPHB3 +EPHB4 +EPHB6 +EPHX1 +EPHX2 +STX2 +CLN8 +EPO +EPOR +EPRS1 +EPS8 +EPS15 +NR2F6 +ERBB2 +ERBB3 +ERBB4 +ERCC1 +ERCC2 +EREG +EYA4 +ERCC3 +ERCC4 +ERCC5 +ERCC6 +ERF +ERG +ERH +ERN1 +ERV3-1 +ESA4 +FBL +ESB3 +ESD +ESR1 +ESR2 +ESRRA +ESRRB +ESRRG +ETF1 +ETFA +ETFB +ETFDH +ETS1 +ETS2 +ETV1 +ETV2 +ETV3 +ETV4 +ETV5 +ETV6 +EVC +MECOM +EVI2A +EVI2B +EVPL +EVX1 +EWSR1 +EXT1 +EXT2 +EXTL1 +EXTL2 +EXTL3 +EYA1 +EYA2 +EYA3 +EZH1 +EZH2 +F2 +F2R +F2RL1 +F2RL2 +F3 +F5 +F7 +F8 +F9 +F10 +F11 +F12 +F13A1 +F13B +FAAH +FABP4 +FABP1 +FABP2 +FABP3 +FABP5 +FABP6 +FABP7 +FANCA +FANCC +FANCD2 +FANCE +ACSL1 +ACSL3 +ACSL4 +FAH +PTK2B +BPTF +FANCB +FANCF +FANCG +FAP +FBLN1 +FARSA +FASN +FAT1 +FAT2 +FAU +FBLN2 +FBN1 +FBN2 +EFEMP1 +FBP1 +FCAR +FCER1A +MS4A2 +FCER1G +FCER2 +FCGR1A +FCGR2A +FCGR2B +FCGR3A +FCGR3B +FCGRT +FKTN +FCN1 +FCN2 +FDFT1 +FDPS +FDX1 +FDXR +FECH +FEN1 +GPC4 +FER +FES +FGA +FGB +FGD1 +FGF1 +FGF2 +FGF3 +FGF4 +FGF5 +FGF6 +FGF7 +FGF8 +FGF9 +FGF10 +FGF11 +FGF12 +FGF13 +FGF14 +FGFR1 +FGFR3 +GPC5 +FGFR2 +FGFR4 +FGG +FGL1 +FGR +FH +FHIT +FHL1 +FHL2 +FHL3 +VEGFD +FKBP1A +FKBP1B +FKBP2 +FKBP3 +FKBP4 +FKBP5 +FOXG1 +FOXF1 +FOXF2 +FOXC1 +FOXD1 +FOXD4 +FOXI1 +FOXL1 +FOXE3 +FOXJ1 +FOXC2 +FOXE1 +FOXM1 +FOXD2 +FOXS1 +FOXO1 +FOXO3 +FOXO3B +FLG +FLI1 +FLII +MLANA +FLNA +FLNB +FLNC +FLOT2 +FLT1 +FLT3 +FLT3LG +FLT4 +FMO1 +FMO2 +FMO3 +FMO4 +FMO5 +FMOD +FMR1 +AFF2 +FN1 +FNTA +FNTB +FOLH1 +FOLR1 +FOLR2 +FOLR3 +FOS +FOSB +FOSL2 +FPGS +FPR1 +FPR2 +FPR3 +FXN +FRK +MTOR +FRG1 +FRZB +FSHB +CENPI +FSHR +NR5A2 +FTH1 +FTL +ADAM2 +NR5A1 +FUCA1 +FUCA2 +GAST +FUS +FUT1 +FUT2 +FUT3 +FUT4 +FUT5 +FUT6 +FUT7 +FUT8 +KDSR +ACKR1 +FYB1 +FYN +FZD2 +IFI6 +G6PC1 +G6PD +G6PR +SLC37A4 +GAGE1 +XRCC6 +GAA +GAB1 +GABBR1 +GABPA +GABPB1 +GABRA1 +GABRA2 +GABRA3 +GABRA4 +GABRA5 +GABRA6 +GABRB1 +GABRB2 +GABRB3 +GABRD +GABRE +GABRG1 +GABRG2 +GABRG3 +GABRP +GABRR1 +GABRR2 +GAD1 +GAD2 +GAGE2C +GAGE4 +GAGE5 +GAGE6 +GAGE7 +GAK +GALC +GALE +B4GALNT1 +GALK1 +GALK2 +GALR1 +GALNS +GALNT1 +GALNT2 +GALNT3 +GALT +GAMT +GANC +GAP43 +GAPDH +LRRC32 +GARS1 +GART +GAS1 +GAS2 +GAS6 +GAS8 +GATA1 +GATA2 +GATA3 +GATA4 +GATA6 +GATM +GBA1 +NIPSNAP2 +GBE1 +GBP1 +GBP2 +GBP3 +GBX1 +GBX2 +GC +GCDH +GCG +GCGR +GCH1 +GCHFR +GCK +GCKR +BLOC1S1 +KAT2A +NR6A1 +GCNT1 +GCNT2 +OPN1MW +GCSH +GDF1 +GDF2 +MSTN +GDF9 +GDF10 +GDI1 +GDI2 +GDNF +GEM +GFAP +GFER +GFI1 +GFPT1 +GFRA1 +GFRA2 +GFRA3 +GGCX +GGT1 +GGTA1 +B4GALT1 +GGT7 +GGT5 +GH1 +GH2 +GHR +GHRH +GHRHR +GHSR +CBLIF +GIP +GIPR +GJA1 +GJA3 +GJA4 +GJA5 +GJA8 +GJB1 +GJB2 +GJB3 +GJB5 +GK +GK2 +GK3 +GLA +GPC3 +GLB1 +GCLC +GCLM +GLDC +GLE1 +GLG1 +GLI1 +GLI2 +GLI3 +GLI4 +GLO1 +GLP1R +GLRA1 +GLRA2 +GLRB +GLS +GLRX +GLUD1 +GLUD2 +GLUL +GM2A +GMDS +GMFB +GML +GMPR +GNA11 +GNA12 +GNA15 +GNAI1 +GNAI2 +GNAI3 +GNAL +GNAO1 +GNAQ +GNAS +GNAT1 +GNAT2 +GNAZ +GNB1 +GNB2 +GNB3 +GNG3 +GNG4 +GNG5 +GNG7 +GNG10 +GNG11 +GNGT1 +GNGT2 +GNL1 +GNRH1 +GNRH2 +GNRHR +GNS +GOLGA1 +GOLGA2 +GOLGA3 +GOLGA4 +GOLGB1 +GOT1 +GOT2 +SFN +GP1BA +GP1BB +GP2 +GP5 +GP9 +GPC1 +GPD1 +GPD2 +GPI +GPLD1 +GPM6A +GPM6B +CMKLR2 +CCR10 +GPR3 +GPR4 +XCR1 +GPR6 +NPBWR1 +NPBWR2 +CXCR3 +PRLHR +GPR12 +UTS2R +GPR15 +GPR17 +GPR18 +GPR19 +GPR20 +GPR21 +GPR22 +LPAR4 +MCHR1 +GPR25 +GPR26 +GPR27 +GPER1 +GPR31 +GPR32 +GPR33 +GPR34 +GPR35 +GPR36 +GPR37 +MLNR +GPR39 +FFAR1 +FFAR3 +GPR42 +FFAR2 +GRK4 +GRK5 +GRK6 +MKNK2 +GPS1 +GPS2 +GPT +GPX1 +GPX2 +GPX3 +GPX4 +GPX5 +GPX7 +GRB2 +GRB7 +GRB10 +GRB14 +RAPGEF1 +GRIA1 +GRIA2 +GRIA3 +GRIA4 +GRID1 +GRID2 +GRN +GRIK1 +GRIK2 +GRIK3 +GRIK4 +GRIK5 +GRIN1 +GRIN2A +GRIN2B +GRIN2C +GRIN2D +GRINA +NR3C1 +ARHGAP35 +GRM1 +GRM2 +GRM3 +GRM4 +GRM5 +GRM6 +GRM7 +GRM8 +CXCL1 +CXCL2 +CXCL3 +GRP +PDIA3 +GRPR +GRSF1 +GSC2 +GSK3A +GSK3B +GSN +GSPT1 +GSR +GSS +GSTA1 +GSTA2 +GSTA3 +GSTA4 +GSTM1 +GSTM2 +GSTM3 +GSTM4 +GSTM5 +GSTP1 +GSTT1 +GSTT2 +GSTZ1 +MSH6 +GTF2A1 +GTF2A2 +GTF2B +GTF2E1 +GTF2E2 +GTF2F1 +GTF2F2 +GTF2H1 +GTF2H2 +GTF2H3 +GTF2H4 +GTF2I +GTF3A +BRF1 +GTF3C1 +GTF3C2 +GUCY1A2 +GUCA1A +GUCA1B +GUCA2A +GUCA2B +GUCY1A1 +GUCY1B1 +GUCY2C +GUCY2F +GUK1 +GUK2 +GUSB +GYG1 +GYPA +GYPB +GYPC +GYPE +GYS1 +GYS2 +GZMH +GUCY2D +GZMA +GZMB +GZMK +GZMM +H1-0 +H1-2 +H1-3 +H1-4 +H1-5 +H1-6 +H2AC8 +H2AC7 +H2AX +H2AZ1 +H2BC5 +H2BC3 +H3-3A +H3-3B +H1-1 +HABP2 +HSD17B10 +HAGH +HADHA +HADHB +HADH +HAL +HARS1 +HAS1 +HAS2 +HAS3 +HBA1 +HBA2 +HBM +HBB +HBD +HBE1 +HBG1 +HBG2 +HBQ1 +HBZ +HCCS +SERPIND1 +HCFC1 +HCK +HCLS1 +HCRT +HCRTR1 +HCRTR2 +HTT +HDAC1 +HDAC2 +HDC +HDGF +HDLBP +HELLS +NCKAP1L +HEXA +HEXB +CFH +HFE +CFHR1 +CFHR2 +HGD +HGF +HGFAC +NRG1 +HHEX +HIC1 +HIF1A +HIP1 +UBE2K +HINT1 +HIVEP1 +HIVEP2 +HK1 +HK2 +HK3 +ZBTB48 +HLA-A +HLA-B +HLA-C +HLA-DMA +HLA-DMB +MNX1 +HLA-DOA +HLA-DOB +HLA-DPA1 +HLA-DPB1 +HLA-DQA1 +HLA-DQA2 +HLA-DQB1 +HLA-DQB2 +HLA-DQB3 +HLA-DRA +HLA-DRB1 +HLA-DRB3 +HLA-DRB4 +HLA-DRB5 +HLF +HLA-E +HLA-F +HLA-G +MR1 +HLCS +HLX +HMBS +HMGB1 +HMGB2 +HMGB3 +HMGN1 +HMGN2 +HMGCL +HMGCR +HMGCS1 +HMGCS2 +HMGA1 +HMMR +HMOX1 +HMOX2 +NR4A1 +HMX1 +HMX2 +FOXA1 +FOXA2 +FOXA3 +HNF4A +HNF4G +ONECUT1 +HNMT +SLC29A2 +HNRNPA1 +HNRNPA2B1 +HNRNPAB +HNRNPC +HNRNPD +HNRNPF +HNRNPH1 +HNRNPH2 +HNRNPH3 +HNRNPK +HNRNPL +HNRNPU +TLX1 +TLX2 +HOXA1 +HOXA2 +HOXA3 +HOXA4 +HOXA5 +HOXA6 +HOXA7 +HOXA9 +HOXA10 +HOXA11 +HPCA +HOXA13 +HOXB1 +HOXB2 +HOXB3 +HOXB4 +HOXB5 +HOXB6 +HOXB7 +HOXB8 +HOXB9 +HOXC4 +HOXC5 +HOXC6 +HOXC8 +HOXC9 +HOXC10 +HOXC11 +HOXC12 +HOXC13 +HOXD1 +HOXD3 +HOXD4 +HOXD8 +HOXD9 +HOXD10 +HOXD11 +HOXD12 +HOXD13 +HP +HPCAL1 +HPD +HPGD +HPN +HPR +HPRT1 +HPS1 +HPX +HRAS +ERAS +AGFG1 +AGFG2 +HRH1 +HRC +HRG +HRH2 +PRMT2 +PRMT1 +HES1 +HSBP1 +HSD3B1 +HSD3B2 +HSD11B1 +HSD11B2 +HSD17B1 +HSD17B3 +HSD17B2 +HSD17B4 +HSF1 +HSF2 +HSF4 +DNAJB2 +DNAJA1 +HSPA1A +HSPA1B +HSPA1L +HSPA2 +HSPA4 +HSPA5 +HSPA6 +HSPA8 +HSPA9 +HSPB1 +HSPB2 +HSP90AA1 +IGSF3 +HSP90AB1 +HSPD1 +HSPE1 +DNAJB1 +DNAJC4 +HSPG2 +NDST1 +FOXN2 +HTN1 +HTN3 +HTR1A +HTR1B +HTR1D +HTR1E +HTR1F +HTR2A +HTR2B +HTR2C +HTR3A +HTR4 +HTR5A +HTR6 +HTR7 +HUS1 +TNC +HYAL1 +IAPP +IARS1 +IBSP +ICA1 +ICAM1 +ICAM2 +ICAM3 +ICAM4 +IRF8 +MRPL58 +ID1 +ID2 +ID3 +ID4 +IDE +IDH1 +IDH2 +IDH3A +IDH3B +IDH3G +IDI1 +IDS +IDUA +CFI +IFI16 +IFI27 +IFI35 +SP110 +IFIT2 +IFIT1 +IFIT3 +IFNA1 +IFNA2 +IFNA4 +IFNA5 +IFNA6 +IFNA7 +IFNA8 +IFNA10 +IFNA13 +IFNA14 +IFNA16 +IFNA17 +IFNA21 +IFNAR1 +IFNAR2 +IFNB1 +IFNG +IFNGR1 +IFNGR2 +IFNW1 +IFRD1 +IGBP1 +IGF1 +IGF1R +IGF2 +IGF2R +IGFALS +IGFBP1 +IGFBP2 +IGFBP3 +IGFBP4 +IGFBP5 +IGFBP6 +IGFBP7 +CCN1 +IGH +IGHMBP2 +JCHAIN +RBPJ +IGL +IGLL1 +IGSF1 +IHH +IK +IKBKB +IL1A +IL1B +IL1R1 +IL1RAP +IL1RN +IL2 +IL2RA +IL2RB +IL2RG +IL3 +IL3RA +IL4 +IL4R +IL5 +IL5RA +IL6 +IL6R +IL6ST +IL7 +IL7R +CXCL8 +CXCR1 +IL9 +CXCR2 +IL9R +IL10 +IL10RA +IL10RB +IL11 +IL11RA +IL12A +IL12B +IL12RB1 +IL12RB2 +IL13 +IL13RA1 +IL13RA2 +IL15 +IL15RA +IL16 +TNFRSF9 +IL17A +IL18 +FOXK2 +ILF2 +ILF3 +ILK +IMPA1 +IMPA2 +IMPDH1 +IMPDH2 +IMPG1 +INCENP +IDO1 +ING1 +ING2 +INHA +INHBA +INHBB +INHBC +CXCL10 +INPP1 +INS +INPP4A +INPP5A +INPP5B +INPP5D +INPPL1 +INSIG1 +INSL3 +INSL4 +INSM1 +INSR +INSRR +EIF3E +PDX1 +IPP +IRAK1 +ITGA6 +IRAK2 +IREB2 +IRF1 +IRF2 +IRF3 +IRF4 +IRF5 +IRF6 +IRF7 +IRS1 +ISG20 +ISL1 +ISLR +ITGA1 +ITGA2 +ITGA2B +ITGA3 +ITGA4 +ITGA5 +ITGA7 +ITGA9 +ITGAD +ITGAE +ITGAL +ITGAM +ITGAV +ITGAX +ITGB1 +ITGB2 +ITGB3 +ITGB4 +EIF6 +ITGB5 +ITGB6 +ITGB7 +ITGB8 +ITIH1 +ITIH2 +ITIH3 +ITIH4 +ITK +STT3A +ITPA +ITPK1 +ITPKA +ITPKB +ITPR1 +ITPR2 +ITPR3 +IVD +IVL +JAG2 +JAK1 +JAK2 +JAK3 +JARID2 +JUN +JUNB +JUND +JUP +ANOS1 +CD82 +KARS1 +KCNA1 +KCNA2 +KCNA3 +KCNA4 +KCNA5 +KCNA6 +KCNA7 +KCNA10 +KCNB1 +KCNC1 +KCNC2 +KCNC3 +KCNC4 +KCND1 +KCND2 +KCND3 +KCNE1 +KCNF1 +KCNG1 +KCNH1 +KCNH2 +KCNJ1 +KCNJ2 +KCNJ3 +KCNJ4 +KCNJ5 +KCNJ6 +KCNJ8 +KCNJ9 +KCNJ10 +KCNJ11 +KCNJ12 +KCNJ13 +KCNJ14 +KCNJ15 +KCNJ16 +KCNK1 +KCNK2 +KCNK3 +KCNMA1 +KCNMB1 +KCNN1 +KCNN2 +KCNN3 +KCNN4 +KCNQ1 +KCNQ2 +KCNQ3 +KCNS1 +KCNS2 +KCNS3 +KDR +KEL +KHK +KIF2A +KIF3C +KIF5A +KIF5B +KIF5C +KIFC3 +KIR2DL1 +KIR2DL2 +KIR2DL3 +KIR2DL4 +KIR2DS1 +KIR2DS3 +KIR2DS4 +KIR2DS5 +KIR3DL1 +KIR3DL2 +KIR3DS1 +KISS1 +KIT +KLK1 +KLK2 +KLKB1 +KLRB1 +KLRC1 +KLRC2 +KLRC3 +KLRD1 +KNG1 +KLC1 +KIF11 +KIFC1 +KIF25 +KIF22 +KPNA1 +KPNB1 +KPNA2 +KPNA3 +KPNA4 +KPNA5 +TNPO1 +IPO5 +KRAS +KRTAP5-9 +KRT1 +KRT2 +KRT3 +KRT4 +KRT5 +KRT6A +KRT6B +KRT7 +KRT8 +KRT9 +KRT10 +KRT12 +KRT13 +KRT14 +KRT15 +KRT16 +KRT17 +KRT18 +KRT19 +KRT31 +KRT32 +KRT33A +KRT33B +KRT34 +KRT35 +KRT81 +KRT82 +KRT83 +KRT84 +KRT85 +KRT86 +KTN1 +L1CAM +LAD1 +AFF3 +LAG3 +LAIR1 +LAIR2 +LALBA +LAMA2 +LAMA3 +LAMA4 +LAMA5 +LAMB1 +LAMB2 +LAMB3 +LAMC1 +LAMP1 +LAMC2 +LAMP2 +RPSA +STMN1 +LASP1 +LBP +LBR +LCAT +LCK +LCN1 +LCN2 +LCP1 +LCP2 +LCT +LDHA +LDHB +LDHC +LDLR +LECT2 +LEP +LEPR +LETM1 +LFNG +LGALS1 +LGALS2 +LGALS3 +LGALS3BP +LGALS4 +LGALS7 +LGALS8 +LGALS9 +LHB +LHCGR +LHX1 +LIF +LIFR +LIG1 +LIG3 +LIG4 +LIM2 +ABLIM1 +LIMK1 +LIMK2 +LIMS1 +LIPA +LIPB +LIPC +LIPE +FADS1 +LLGL2 +FADS3 +LLGL1 +LMAN1 +LMNA +LMNB1 +LMO1 +LMO2 +PRICKLE3 +LMO7 +LMX1A +LMX1B +LNPEP +VWA5A +LORICRIN +LOX +LOXL1 +LOXL2 +LPA +LPAL1 +LPL +LPO +LPP +IRAG2 +LRCH4 +LRP1 +LRP2 +LRP3 +LRP4 +LRP6 +LRP5 +LRPAP1 +LSAMP +LSP1 +LSS +LTA4H +LTA +LTB +CYP4F3 +LTBP1 +LTBP2 +LTBP3 +LTBR +LTC4S +LTF +LTK +BCAM +LUM +LY6E +LY6H +LY9 +CD180 +LY75 +LYL1 +LYN +SH2D1A +LYZ +TACSTD2 +TM4SF1 +EPCAM +M6PR +CAPRIN1 +NBR1 +MAB21L1 +MARCKS +MXD1 +MAD2L1 +SMAD1 +SMAD2 +SMAD3 +SMAD4 +SMAD5 +SMAD6 +SMAD7 +SMAD9 +MAF +MAFG +MAG +MAGEA1 +MAGEA2 +MAGEA3 +MAGEA4 +MAGEA6 +MAGEA8 +MAGEA9 +MAGEA10 +MAGEA11 +MAGEA12 +MAGEB1 +MAGEB2 +MAGEB3 +MAGEB4 +MAGOH +MAK +MAL +MAN1A1 +MAN2A2 +MAN2C1 +MAN2A1 +MAN2B1 +MANBA +MAOA +MAOB +MAP1A +MAP1B +MAP2 +MAP4 +MAP6 +MAPT +MARK1 +MARK3 +MARS1 +MAS1 +MAT1A +MAT2A +MATK +MATN1 +MATN2 +MATN3 +MAX +MAZ +MB +MBD1 +MBL2 +MBNL1 +MBP +MC1R +MC2R +MC3R +MC4R +MC5R +MCAM +MCC +CHST6 +MCF2 +MCL1 +MCM2 +MCM3 +MCM4 +MCM5 +MCM6 +MCM7 +CD46 +SMCP +ADAM11 +MDFI +DNAJB9 +MDH1 +MDH2 +MDK +MDM2 +MDM4 +ME1 +ME2 +MEA1 +MECP2 +MEF2A +BORCS8-MEF2B +MEF2C +MEF2D +MEFV +MEIS1 +MEIS2 +MAP3K1 +MAP3K3 +MAP3K4 +MAP3K5 +RAB8A +MEN1 +MEOX1 +MEOX2 +MEP1A +MEP1B +MEST +MET +METTL1 +MFAP1 +MFAP2 +MFAP3 +MFAP4 +MFGE8 +MELTF +MFNG +MGAT1 +SCGB2A1 +MGAT2 +MGAT3 +MGAT5 +SCGB2A2 +MIA2 +KITLG +MGMT +MGP +MGST1 +MGST2 +MGST3 +CIITA +CD99 +MICB +MID1 +MIF +CXCL9 +MIP +MIPEP +MITF +ATXN3 +MKI67 +MKLN1 +MLF1 +MLH1 +MAP3K9 +MAP3K10 +MLN +MAP3K11 +KMT2A +MLLT1 +AFF1 +MLLT3 +AFDN +MLLT6 +FOXO4 +NR3C2 +TRPM1 +MME +MMP1 +MMP2 +MMP3 +MMP7 +MMP8 +MMP9 +MMP10 +MMP11 +MMP12 +MMP13 +MMP14 +MMP15 +MMP16 +MMP17 +MMP19 +ALDH6A1 +MN1 +MNAT1 +MNDA +MNT +MOBP +MOCS1 +MOCS2 +MOG +MOS +MOV10 +CD200 +MPG +MPI +MPL +MPO +MPP1 +MPP2 +MPP3 +MPST +MPV17 +MPZ +MRC1 +MRE11 +ABCC1 +MYO1B +MSBP1 +MSBP2 +CITED1 +MSH2 +MSH3 +MSH4 +MSH5 +MSI1 +MSMB +MSN +MSR1 +MSRA +MST1 +MST1R +MSX1 +MSX2 +MT1A +MT1B +MT1E +MT1F +MT1G +MT1H +MT1M +MT1X +MT2A +MT3 +MTAP +ATP6 +ATP8 +COX1 +COX2 +COX3 +MTCP1 +CYTB +MTF1 +NUDT1 +MTHFD1 +MTHFR +MTIF2 +MTM1 +ND1 +ND2 +ND3 +ND4 +ND4L +ND5 +ND6 +MYO1F +MTNR1A +MTNR1B +MTTP +MTR +MTRR +MTX1 +MUC1 +MUC2 +MUC3A +MUC4 +MUC5AC +MUC6 +MUC7 +TRIM37 +MUSK +MMUT +MUTYH +MVD +MVK +MX1 +MX2 +MXI1 +MYB +MYBL1 +MYBPC1 +MYBL2 +MYBPC2 +MYBPC3 +MYBPH +MYC +MYCL +MYCN +MYD88 +GADD45B +MYF5 +MYF6 +MYH1 +MYH2 +MYH3 +MYH4 +MYH6 +MYH7 +MYH8 +MYH9 +MYH10 +MYH11 +MYL1 +MYL2 +MYL3 +MYL4 +MYL5 +MYL6 +MYLK +MYO1A +MYO1C +MYO1D +MYO1E +MYO5A +MYO5B +MYO6 +MYO7A +MYO7B +MYO9A +MYO9B +MYO10 +MYOC +MYOD1 +MYOG +PPP1R12A +PPP1R12B +MYT1 +NAB1 +NAB2 +NACA +NAGA +NAGLU +HNRNPM +NAIP +NAP1L1 +NAP1L2 +NAP1L3 +NAP1L4 +NARS1 +NASP +CEACAM6 +NBL1 +NUBP1 +NBN +NCAM1 +NCAM2 +NCBP1 +NCF2 +NCF4 +NCK1 +NCL +NDN +NDP +NDUFA1 +NDUFA2 +NDUFA3 +NDUFA4 +NDUFA5 +NDUFA6 +NDUFA7 +NDUFA8 +NEB +NDUFA9 +NDUFA10 +NDUFAB1 +NDUFB1 +NDUFB2 +NDUFB3 +NDUFB4 +NDUFB5 +NDUFB6 +NDUFB7 +NDUFB8 +NDUFB9 +NDUFB10 +NDUFC1 +NDUFC2 +NDUFS1 +NDUFS2 +NDUFS3 +NDUFV1 +NDUFS4 +NDUFS5 +NDUFS6 +NDUFS8 +NDUFV2 +NDUFV3 +DRG1 +NEDD4 +SEPTIN2 +RPL10A +NEDD8 +NEDD9 +NEFM +NEFH +NELL1 +NEFL +NEK1 +NEK2 +NEK3 +NELL2 +NEO1 +NEU1 +NEU2 +NEUROD1 +NEUROD2 +NEUROG1 +NF1 +NF2 +NFATC1 +NFATC2 +NFIA +NFATC3 +NFATC4 +NFE2 +NFE2L1 +NFE2L2 +NFIB +NFIC +NFIL3 +NFIX +NFKB1 +NFKB2 +NFKBIA +NFKBIB +NFKBIE +NFKBIL1 +TONSL +NFRKB +NFX1 +NFYA +NFYB +NFYC +NGF +NGFR +NHLH1 +NHLH2 +SNU13 +NHS +NID1 +NINJ1 +NINJ2 +NIT1 +NKG7 +NKTR +NKX2-2 +NKX3-1 +NKX6-1 +NNAT +NMB +NMBR +NME1 +NME2 +NME3 +NME4 +NQO2 +NMT1 +NNMT +NODAL +NOP2 +NONO +NOS1 +NOS2 +NOS3 +CNOT2 +CNOT3 +CNOT4 +NOTCH1 +NPY +NOTCH2 +NOTCH3 +NOTCH4 +CCN3 +NOVA1 +NOVA2 +PNP +NPAS1 +NPAS2 +NPAT +NPC1 +NPHP1 +NPHS1 +NPM1 +NPPA +NPPB +NPPC +NPR1 +NPR2 +NPR3 +NPTX1 +NPTX2 +NPY1R +NPY2R +NPY5R +SLC11A2 +NRAP +NRAS +NRCAM +NRDC +NRF1 +NRGN +NRL +NRTN +YBX1 +NSF +NT5E +NTF3 +NTF4 +NTHL1 +NTRK1 +NTRK2 +NTRK3 +NTN3 +ROR1 +ROR2 +DDR2 +NTS +NTSR1 +NUCB1 +NUCB2 +NUMA1 +NUP88 +NUP98 +NR4A2 +NVL +GPR143 +OAS1 +OAS2 +OAS3 +OAT +TBC1D25 +OAZ1 +OAZ2 +OCA2 +OCM2 +OCRL +ODC1 +ODF1 +ODF2 +OMD +OGDH +OGG1 +OGN +OLR1 +OMG +OMP +OPA1 +OPCML +TNFRSF11B +OPHN1 +OPRD1 +OPRK1 +OPRL1 +OPRM1 +SIX6 +OR1D2 +OR1F1 +OR2C1 +OR3A1 +OR3A2 +ORC1 +ORC2 +ORC4 +ORC5 +SLC22A18 +ORM1 +ORM2 +OSBP +OSM +OTC +CLDN11 +OTX1 +OTX2 +OVGP1 +OVOL1 +OXA1L +OXCT1 +OXT +OXTR +P2RX1 +P2RX3 +P2RX4 +P2RX5 +P2RX7 +P2RY1 +P2RY2 +P2RY4 +P2RY6 +P2RY11 +P4HA1 +P4HB +PA2G4 +PEBP1 +PABPC3 +FURIN +PCSK6 +PAEP +PAFAH1B1 +PAFAH1B2 +PAFAH1B3 +PAFAH2 +PRDX1 +PAH +SERPINE1 +SERPINB2 +PAK1 +PAK2 +PAK3 +PALM +PAM +CNTN3 +REG3A +PAPPA +PRKN +PARN +PAWR +PAX1 +PAX2 +PAX3 +PAX4 +PAX5 +PAX6 +PAX7 +PDCL +PAX9 +PBX1 +PBX2 +PBX3 +PC +PCBD1 +PCBP1 +PCBP2 +PCCA +PCCB +PCDH1 +PCDHGC3 +PCDH7 +PCDH8 +PCDH9 +SERPINA5 +PCK1 +PCK2 +PCM1 +PCMT1 +PCNA +PCNT +PCOLCE +CHMP1A +PCP4 +PCSK1 +PCSK5 +PCSK2 +CDK16 +CDK17 +CDK18 +PCYT1A +PDC +PDCD1 +PDCD2 +PDE1A +PDE1C +PDE2A +PDE3A +PDE3B +PDE4A +PDE4B +PDE4C +PDE4D +PDE6A +PDE6C +PDE6D +PDE6G +PDE6H +PDE7A +PDE8A +PDE9A +PDE1B +PDGFA +PDGFB +PDGFRA +PDGFRL +PDE6B +PDGFRB +PDHA1 +PDHA2 +PDHB +PDK1 +PDK2 +PDK3 +PDK4 +ENPP1 +ENPP2 +ENPP3 +PDPK1 +SLC26A4 +PDYN +PDZK1 +PECAM1 +SERPINF1 +PEG3 +PENK +PEPB +PEPC +PEPD +PEPE +PER1 +GATB +PEX1 +PEX6 +PEX7 +PEX10 +PEX12 +PEX13 +PEX14 +PF4 +PF4V1 +PFAS +CFP +PFDN1 +PFDN2 +PFDN4 +PFDN5 +ATP8B1 +PFKFB1 +PFKFB2 +PFKFB3 +PFKFB4 +PFKL +VIT +PFKM +PFKP +PFN1 +PFN2 +CDK14 +PGA5 +PGAM1 +PGAM2 +PGC +PGD +PGF +PGGT1B +PGK1 +PGK2 +PGM1 +PGM3 +PGM5 +PGR +ABCB1 +ABCB4 +PHB1 +SLC25A3 +PHEX +PHF1 +PHF2 +PHKA1 +PHKA2 +PHKB +PHKG1 +PHKG2 +PHYH +SERPINA1 +PI3 +SERPINA4 +SERPINB5 +SERPINB6 +SERPINE2 +SERPINB8 +SERPINB9 +SERPINB10 +SERPINI1 +SERPINB13 +SERPINI2 +PIGA +PIGC +PIGF +PIGH +PIGR +PIK3C2A +PIK3C2B +PIK3C2G +PIK3C3 +PIK3CA +PIK3CB +PIM1 +PIK3CD +PIK3CG +PIK3R1 +PIK3R2 +PI4KA +PI4KB +PIN1 +PIN4 +PIP +PIP4K2A +PITPNA +PITX1 +PITX2 +PITX3 +PKD1 +PKD2 +PKLR +PKHD1 +PKM +PKNOX1 +PKP1 +PKP2 +PLA2G1B +PLA2G2A +PLA2G4A +PLA2G5 +PLAG1 +PLAGL1 +PLAGL2 +PLAT +PLAU +PLAUR +PLCB2 +PLCB3 +PLCB4 +PLCD1 +PLCL1 +PLCG1 +PLCG2 +PLD1 +PLD2 +PLEC +PLG +PLEK +PLGLB2 +PLGLB1 +SERPINF2 +PLIN1 +PLK1 +FXYD1 +FXYD3 +PLN +PLOD1 +PLOD2 +PLP1 +PLP2 +PLRG1 +PLS1 +PLS3 +PLSCR1 +PLTP +PLXNA1 +PLXNA2 +PLXNB1 +PLXNB3 +PMAIP1 +PMCH +PNOC +PML +PMM1 +PMM2 +PMP2 +PMP22 +PMS1 +EXOSC9 +EXOSC10 +PMS2 +PRRX1 +PNLIP +PNLIPRP1 +PNLIPRP2 +PNMT +PNN +UBL3 +SEPTIN5 +SEPTIN4 +PODXL +POLA1 +POLB +POLD1 +POLD2 +POLE +POLE2 +POLG +POLH +POLR2A +POLR2B +POLR2C +POLR2D +POLR2E +POLR2F +POLR2G +POLR2H +POLR2I +POLR2J +POLR2K +POLR2L +POLRMT +POMC +PON1 +PON2 +PON3 +POR +POU1F1 +POU2AF1 +POU2F1 +POU2F2 +POU3F1 +POU3F2 +POU3F3 +POU3F4 +POU4F1 +POU4F2 +POU4F3 +POU5F1 +POU5F1B +POU6F1 +PPA1 +PPARA +PPARD +PPARG +MED1 +PPEF2 +PPAT +PPBP +PPEF1 +CTSA +PPIA +PPIB +PPIC +PPID +PPL +PPM1A +PPM1B +PPM1G +PPOX +PPP1CA +PPP1CB +PPP1CC +PPP1R1A +PPP1R2 +PPP1R3A +PPP1R3C +PPP1R3D +PPP1R7 +PPP1R8 +PPP1R10 +PPP2CA +PPP2CB +PPP2R1A +PPP2R1B +PPP2R2A +PPP2R2B +PPP2R2C +PPP2R3A +PTPA +PPP2R5A +PPP2R5B +PPP2R5C +PPP2R5D +PPP2R5E +PPP3CA +PPP4C +PPP3CB +PPP3CC +PPP3R1 +PPP3R2 +PPP5C +PPP6C +PPT1 +PPY +NPY4R +PRB1 +PRB3 +PRB4 +PRCC +PRCP +PRELP +PREP +PRF1 +SRGN +PRG2 +PRH1 +PRH2 +PRIM1 +PRIM2 +PRKAA1 +PRKAA2 +PRKAB1 +PRKAB2 +PRKACA +PRKACB +PRKACG +PKIA +PKIB +PRKAG1 +PRKAR1A +PRKAR1B +PRKAR2A +PRKAR2B +PRKCA +PRKCB +PRKCD +PRKCE +PRKCG +PRKCH +PRKCI +PKN1 +PKN2 +PRKD1 +PRKCQ +PRKCSH +PRKCZ +PRKDC +PRKG1 +PRKG2 +MAPK1 +MAPK3 +MAPK4 +MAPK6 +MAPK7 +MAPK8 +MAPK11 +MAPK9 +MAPK10 +MAPK13 +MAP2K1 +MAP2K2 +MAP2K3 +MAP2K5 +MAP2K6 +MAP2K7 +EIF2AK2 +DNAJC3 +THAP12 +PRKX +PRL +PRLR +PRM1 +PRM2 +PRNP +PSPN +PROC +PRODH +PROP1 +PROS1 +PROX1 +PRPH +PRPS1 +PRPS2 +PRPSAP1 +PRPSAP2 +PRRG1 +PRRG2 +LGMN +PRSS1 +PRSS2 +PRSS3 +MASP1 +RELN +KLK7 +TMPRSS15 +PRSS8 +KLK6 +HTRA1 +KLK10 +PRTN3 +PSAP +PSD +PSEN1 +PSEN2 +PSG1 +PSG2 +PSG3 +PSG4 +PSG5 +PSG6 +PSG7 +PSG9 +PSG11 +PSKH1 +PSMA1 +PSMA2 +PSMA3 +PSMA4 +PSMA5 +PSMA6 +PSMA7 +PSMB1 +PSMB2 +PSMB3 +PSMB4 +PSMB5 +PSMB6 +PSMB7 +PSMB8 +PYY +PSMB9 +PSMB10 +PSMC1 +PSMC2 +PSMC3 +PSMC4 +PSMC5 +PSMC6 +PSMD1 +PSMD2 +PSMD3 +PSMD4 +PSMD5 +PSMD7 +PSMD8 +PSMD9 +PSMD10 +PSMD11 +PSMD12 +PSMD13 +PSME1 +PSME2 +PSPH +PTAFR +PTBP1 +TAS2R38 +PTCH1 +PTEN +PTGDR +PTGDS +PTGER1 +PTGER2 +PTGER3 +PTGER4 +PTGFR +PTGFRN +PTGIR +PTGIS +PTH +PTGS1 +PTGS2 +PTHLH +PTH1R +PTH2R +PTK2 +PTK6 +PTK7 +TWF1 +PTMA +PTMS +PTN +QSOX1 +PTPN1 +PTPN2 +PTPN3 +PTPN4 +PTPN6 +PTPN7 +PTPN9 +PTPN11 +PTPN12 +PTPN13 +PTPN14 +PTPRA +PTPRB +PTPRC +PTPRD +PTPRCAP +PTPRE +PTPRF +PTPRG +PTPRH +PTPRJ +PTPRK +PTPRM +PTPRN +PTPRN2 +PTPRO +PTPRR +PTPRS +PTPRZ1 +PTPRZ2 +PTS +PTX3 +RAD1 +PURA +PURB +PVALB +PVR +NECTIN1 +NECTIN2 +PWP2 +PEX19 +ABCD3 +ABCD4 +PXMP2 +PEX2 +PXN +PEX5 +PYCR1 +ALDH18A1 +PCYT2 +PYGB +PYGL +PYGM +PZP +QARS1 +QDPR +RAB1A +RAB2A +RGL2 +RAB3A +RAB3B +RAB3IL1 +RAB4A +RAB5A +RAB5B +RAB6A +MAP4K2 +RAB13 +RAB27A +RAB27B +RABGGTA +RABGGTB +RABIF +RAB5C +RAC1 +RAC2 +RAC3 +RAD9A +RAD17 +RAD21 +RAD23A +RAD23B +RAD51 +RAD51C +RAD51B +MOK +RAD51D +RAD52 +RAF1 +RAG1 +RAG2 +RALA +RALB +RALGDS +RAN +RANBP1 +RANBP2 +RANGAP1 +RAP1A +RAP1B +RAP1GAP +RAP1GDS1 +RAP2A +RAP2B +RAPSN +RARA +RARB +RARG +RARS1 +RARRES1 +RARRES2 +PLAAT4 +RASA1 +RASA2 +RASGRF1 +RASGRF2 +RB1 +ARID4A +KDM5A +RBBP4 +RBBP5 +RBBP6 +RBBP7 +RBBP8 +RBL1 +RBL2 +RBM3 +RBM4 +RBMS1 +RBMS2 +RBMY1A1 +RBMY1C +RBP1 +RBP2 +RBP3 +RBP4 +RCN1 +RCN2 +OPN1LW +RCVRN +RDH5 +PRPH2 +RDX +RECQL +REL +REG1A +REG1B +RELA +RELB +REN +RENBP +UPF1 +DPF2 +REST +RET +REV3L +RFC1 +RFC2 +RFC3 +RFC4 +RFC5 +RFNG +TRIM27 +RFPL1 +RFX1 +RFX2 +RFX3 +RFX4 +RFX5 +RFXAP +RGR +RGS1 +RGS2 +RGS3 +RGS4 +RGS7 +RGS10 +RGS12 +RGS13 +RGS16 +RHAG +RHCE +RHD +RHEB +RHO +GRK1 +RLN1 +RIT2 +RING1 +RIT1 +RLBP1 +RLF +RLN2 +RNASE1 +RNASE2 +RNASE3 +RNASE4 +RNASE6 +RNASEL +RNF2 +BRD2 +RNF4 +RNF5 +RNF6 +RNH1 +RNPEP +ABCE1 +ROBO1 +ROBO2 +ROCK1 +ROM1 +RORA +RORB +RORC +ROS1 +RP9 +RP1 +RP2 +RPGR +RPA1 +RPA2 +RPA3 +RPE +RPE65 +RPL3 +RPL3L +RPL4 +RPL5 +RPL6 +RPL7 +RPL7A +RPL8 +RPL9 +RPL10 +RPL11 +RPL12 +RPL13 +RPL15 +RPL17 +RPL18 +RPL18A +RPL19 +RPL21 +RPL22 +RPL23A +MRPL23 +RPL24 +RPL26 +RPL27 +RPL30 +RPL27A +RPL28 +RPL29 +RPL31 +RPL32 +RPL34 +RPL35A +RPL36AL +RPL37 +RPL37A +RPL38 +RPL39 +RPL41 +RPL36A +RPLP0 +RPLP1 +RPLP2 +MRPL12 +MRPS12 +RPN1 +RPN2 +RPS2 +RPS3 +RPS3A +RPS4X +RPS4Y1 +RPS5 +RPS6 +RPS6KA1 +RPS6KA2 +RPS6KA3 +RPS6KB1 +RPS6KB2 +RPS7 +RPS8 +RPS9 +RPS10 +RPS11 +RPS12 +RPS13 +RPS14 +RPS15 +RPS15A +RPS16 +RPS17 +RPS18 +RPS19 +RPS20 +RPS21 +RPS23 +RPS24 +RPS25 +RPS26 +RPS27 +RPS27A +RPS28 +RPS29 +RRAD +RRAS +RRBP1 +RREB1 +RRM1 +RRM2 +RTKN +RS1 +RSC1A1 +CLIP1 +RSU1 +RTN1 +RTN2 +RXRA +RXRB +RXRG +RYK +RYR1 +RYR2 +RYR3 +S100A1 +SORT1 +S100A2 +S100A3 +S100A4 +S100A5 +S100A6 +S100A7 +S100A8 +S100A9 +S100A10 +S100A11 +S100A12 +S100A13 +S100B +S100P +SAA1 +SAA2 +SAA4 +VPS52 +SAFB +SAG +ACSM3 +SALL2 +SALL1 +MAPK12 +SARS1 +TSPAN31 +SAT1 +SATB1 +SBF1 +MSMO1 +SC5D +ATXN1 +ATXN2 +ATXN7 +SERPINB3 +SERPINB4 +SCD +CLEC11A +SCML1 +SCN1A +SCN1B +SCN2A +SCN2B +SCN3A +SCN4A +SCN4B +SCN5A +SCN7A +SCN8A +SCN9A +SCN10A +SCNN1A +SCNN1B +SCNN1D +SCNN1G +SCO1 +SCP2 +SCT +SCTR +SRL +CCL1 +CCL2 +CCL3 +CCL3L1 +CCL4 +CCL5 +CCL7 +CCL8 +CCL11 +CCL13 +CCL14 +CCL15 +CCL16 +CCL17 +CCL18 +CCL19 +CCL20 +CCL21 +CCL22 +CCL23 +CCL24 +CCL25 +CXCL6 +CXCL11 +CXCL5 +XCL1 +CX3CL1 +SDC1 +SDC2 +SDC4 +SDCBP +CXCL12 +SDF2 +SDHA +SDHB +SDHC +SDHD +SEA +SEC13 +SEC14L1 +SECTM1 +TRAPPC2 +SEL1L +SELE +SELL +SELP +SELPLG +SEMA3F +SEMG1 +SEMG2 +SELENOP +SELENOW +MAP2K4 +SET +SETMAR +SFPQ +SFRP1 +SFRP2 +SFRP4 +SFRP5 +SRSF1 +SRSF2 +SRSF3 +SRSF4 +SRSF5 +SRSF6 +SRSF7 +SFSWAP +TRA2B +SFTPB +SFTPC +SFTPD +SGCA +SGCB +SGCD +SGCG +SGK1 +SCG5 +SGSH +SGTA +SH3BGR +SH3BGRL +SH3BP2 +ITSN1 +SH3GL1 +SH3GL2 +SH3GL3 +SHB +SHBG +SHC1 +FBXW4 +SHH +SHMT1 +SHMT2 +SHOX +SHOX2 +SI +SIAH1 +SIAH2 +ST6GAL1 +ST3GAL1 +ST3GAL2 +ST3GAL4 +ST3GAL3 +ST8SIA1 +PMEL +STIL +SIM1 +SIM2 +SIPA1 +SIX1 +SIX3 +SKI +SKIL +SKIC2 +SKP1 +SKP2 +SLA +SLAMF1 +SLC1A1 +SLC1A2 +SLC1A3 +SLC4A3 +SLC1A4 +SLC1A5 +SLC1A6 +SLC1A7 +SLC2A1 +SLC2A2 +SLC2A3 +SLC2A4 +SLC2A5 +SLC3A1 +SLC3A2 +SLC4A1 +SLC4A2 +SLC5A1 +SLC5A2 +SMTN +SLC5A3 +SLC5A4 +SLC5A5 +SLC6A1 +SLC6A2 +SLC6A3 +SLC6A4 +SLC6A6 +SLC6A7 +SLC6A8 +SLC6A9 +SLC6A11 +SLC6A12 +SLC6A13 +SLC7A1 +SLC7A2 +SLC8A2 +SLC7A4 +SLC8A1 +SLC8A3 +SLC9A1 +SLC9A2 +SLC9A3 +SLC9A5 +SLC10A1 +SLC10A2 +SLC11A1 +SLC12A1 +SLC12A2 +SLC12A3 +SLC12A4 +SLC13A1 +SLC14A1 +SLC15A1 +SLC15A2 +SLC16A1 +SLC16A2 +SLC17A1 +SLC34A1 +SLC18A1 +SLC18A2 +SLC18A3 +SLC19A1 +SLC20A1 +SLC20A2 +SLC25A1 +SLCO2A1 +SLCO1A2 +SLC22A1 +SLC22A3 +SLC22A2 +SLC22A4 +SLC22A5 +SLIT1 +SLIT3 +SLN +SLPI +SNAI2 +SMARCA1 +SMARCA2 +HLTF +SMARCA4 +SMARCB1 +SMARCC1 +SMARCC2 +SMARCD1 +SMARCD2 +SMARCD3 +SMARCE1 +SMN1 +SMN2 +SMO +SMPD1 +SMPD2 +SMS +SUMO3 +SUMO2 +SIGLEC1 +SNAI1 +SNAP25 +SNAPC1 +SNAPC2 +SNAPC3 +SNCB +SNAPC4 +SNCA +SNCG +FSCN1 +SNRNP70 +SNRPA +SNRPA1 +SNRPB +SNRPB2 +SNRPC +SNRPD1 +SNRPD2 +SNRPD3 +SNRPE +SNRPF +SNRPG +SNRPN +SNTA1 +SNTB1 +SNX1 +SNX2 +SNTB2 +SOAT1 +SOD1 +SOD2 +SOD3 +CAPN15 +SON +SORD +SORL1 +SOS1 +SOS2 +SOX1 +SOX2 +SOX3 +SOX4 +SOX5 +SOX9 +SOX10 +SOX11 +SOX15 +SOX12 +SP1 +SP2 +SP3 +SP4 +SP100 +SPAG1 +UAP1 +SPAG4 +SPAM1 +SPARC +SPAST +SPG7 +SPI1 +SPIB +SPINK1 +SPINK2 +SPINT1 +SPN +SPP2 +SPOCK1 +SPP1 +SPR +SPRR1A +SPRR1B +SPRR2A +SPRR2B +SPRR2D +SPRR2E +SPRR2F +SPRR2G +SPRR3 +SPTA1 +SPTAN1 +SPTB +SPTBN1 +SPTBN2 +SQLE +SRC +SRD5A1 +SRD5A2 +SRI +AKR1D1 +SREBF1 +SREBF2 +SRF +SRM +SRMS +SRP9 +SRP14 +SRP19 +SRP54 +SRP68 +SRP72 +SRPK1 +SRPK2 +SRPRA +SRY +TRIM21 +RO60 +SSB +SSBP1 +ITPRID2 +SSR1 +SSR2 +SSR3 +SSR4 +SSRP1 +SST +SSTR1 +SSTR2 +SSTR3 +SSTR4 +SSTR5 +SSX1 +SSX2 +SSX5 +SSX4 +SS18 +DENND2B +ST13 +ST14 +STAC +STAR +STAT1 +STAT2 +STAT3 +STAT4 +STAT5A +STAT5B +STAT6 +STATH +STAU1 +STC1 +HSPA13 +SULT1E1 +ELOVL4 +STIM1 +NEK4 +STK3 +STK4 +AURKA +CDKL5 +STK10 +STK11 +AURKC +SULT1A2 +STRN +STX1A +STX3 +STX4 +STX5 +STXBP1 +STXBP2 +STXBP3 +STYX +SULT1A1 +SULT1A3 +SULT1C2 +SULT2B1 +SUOX +SULT2A1 +SUPT4H1 +SUPT5H +SUPT6H +SUPV3L1 +ABCC8 +SURF1 +SURF2 +SURF4 +MED22 +SURF6 +SUV39H1 +SVIL +VAMP1 +VAMP2 +VAMP7 +XCL2 +SYCP1 +SYK +SYN1 +SYN2 +SYP +SYPL1 +SYT1 +SYT4 +SYT5 +TBXT +TAC1 +TACR2 +TAC3 +TACC1 +ADAM17 +TACR1 +TACR3 +TADA2A +TAF1 +TAF2 +TAF4 +TAF4B +TAGLN +TAF5 +TAF6 +TAF7 +TAF9 +TAF10 +TAF11 +TAF12 +TAF13 +MAP3K7 +TAL1 +TAL2 +TALDO1 +TAP1 +TAP2 +TAPBP +TARBP1 +TARBP2 +TARS1 +TAT +TBX1 +CNTN2 +TAFAZZIN +TBCA +TBCC +TBCD +TBCE +SERPINA7 +TBL1X +TBP +TBX2 +TBX5 +TBX6 +TBX15 +TBXA1R +TBXA2R +TBXAS1 +TCEA1 +TCEA2 +TCEA3 +ELOC +ELOB +ELOA +TCF4 +TBX3 +HNF1A +HNF1B +TCF3 +TCF7 +TCF7L2 +ZEB1 +GCFC2 +TCF12 +TCF15 +ZNF354A +TCF19 +TCF20 +TCF21 +VPS72 +MLX +TCN1 +TCN2 +TCOF1 +TCP1 +TCP11 +TRA +TRB +TRD +TRG +TECTB +TCTA +DYNLT3 +DYNLT2 +PPP1R11 +DYNLT1 +TDG +TDGF1 +TDGF1P3 +TDO2 +PRDX2 +TEAD1 +TEAD4 +TEAD3 +TEC +TECTA +TEF +TMBIM6 +TEK +TEP1 +TERF1 +TERF2 +TERT +TESK1 +TF +TFAM +TFAP2A +TFAP2B +TFAP2C +TFAP4 +TFCP2 +NR2F1 +NR2F2 +TFDP1 +TFDP2 +TFE3 +TFF1 +TFF2 +TFF3 +TFPI +TFR2 +TFRC +TG +TGFA +TGFB1 +TGFB1I1 +TGFB2 +TGFB3 +LEFTY2 +TGFBI +TGFBR1 +TGM4 +TGFBR2 +TGFBR3 +TGIF1 +TGM1 +TGM2 +TGM3 +TH +THBD +THBS1 +THBS2 +THBS3 +THBS4 +TCHH +THOP1 +THPO +THRA +THRB +THRSP +THY1 +KLF10 +TIA1 +TIAL1 +TIAM1 +TIE1 +TIMP1 +TIMP2 +TIMP3 +TIMP4 +NKX2-1 +TJP1 +TK1 +TK2 +TKT +ICAM5 +TLE1 +TLE2 +TLE3 +TLE4 +TLL1 +TLL2 +TLN1 +SEC62 +TLR1 +TLR2 +TLR3 +TLR4 +TLR5 +NR2E1 +TSPAN7 +TSPAN8 +TM4SF4 +TSPAN6 +TSPAN4 +GPR137B +TM7SF2 +TRAPPC10 +TMF1 +TMOD1 +TMPO +TMPRSS2 +TMSB4X +CLDN5 +CLEC3B +TNF +TNNC2 +TNFAIP1 +TNFAIP2 +TNFAIP3 +TNFAIP6 +TNFRSF1A +TNFRSF1B +TNNC1 +TNNI1 +TNNI2 +TNNI3 +TNNT1 +TNNT2 +TNNT3 +TNP1 +TNP2 +TNR +TNS1 +TNXB +TOP1 +TOP2A +TOP2B +TOP3A +TP53 +TP53BP1 +TP53BP2 +TP73 +TPBG +TPD52 +TPD52L1 +TPD52L2 +TPH1 +TPI1 +TPM1 +TPM2 +TPM3 +TPM4 +TPMT +TPO +TPP2 +TPR +TPSAB1 +TPT1 +TPTE +CRISP2 +NR2C1 +NR2C2 +HSP90B1 +TRAF1 +TRAF2 +TRAF3 +TRAF5 +TRAF6 +TRH +TRHR +CCT3 +TRIO +TRIP6 +TRO +TRPC1 +TRPC3 +TRPC4 +TRPC5 +TRPC6 +TRPM2 +TRPS1 +TSN +TSC1 +TSC2 +TSG101 +TSHB +TSHR +TSNAX +TSPY1 +TSPYL1 +EIPR1 +PHLDA2 +TST +GFUS +TTC1 +DNAJC7 +TTC3 +TTC4 +TTF1 +TTK +TTN +TTPA +TUB +TTR +TUBA4A +TUBA3C +TUBB2A +TUBG1 +TUFM +TUFT1 +TULP1 +TULP2 +TULP3 +HIRA +TWIST1 +TNFSF4 +TNFRSF4 +TXK +TXN +TXNRD1 +TYK2 +TYMS +TYR +TYRO3 +TYROBP +TYRP1 +U2AF1 +UBA52 +UBB +UBC +UBA1 +UBA7 +UBE2A +UBE2B +UBE2D1 +UBE2D2 +UBE2D3 +UBE2E1 +UBE2E2 +UBE2G1 +UBE2G2 +UBE2H +UBE2I +UBE2L3 +UBE2N +UBE2V1 +UBE2V2 +UBE3A +SUMO1 +UBP1 +UBTF +UCHL1 +UCHL3 +UPK1B +UCN +UCP1 +UCP2 +UCP3 +UFD1 +SLC35A2 +SCGB1A1 +UGCG +UGDH +UGP2 +UGT2B4 +UGT2B7 +UGT2B10 +UGT2B15 +UGT2B17 +UGT8 +UMOD +UCK2 +UMPS +COL14A1 +UNG +USP4 +NR1H2 +UPP1 +UPK2 +UPK3A +UQCRB +UQCRC1 +UQCRC2 +UQCRFS1 +UQCRH +UROD +UROS +USF1 +USF2 +USP1 +USH2A +CLRN1 +UTRN +KDM6A +UTY +UVRAG +VARS1 +VASP +VAV1 +VAV2 +VBP1 +VCAM1 +VCL +VCP +VDAC1 +VDAC2 +VDAC3 +VDR +VEGFA +VEGFB +VEGFC +VGF +VHL +VIL1 +EZR +VIM +VIP +VIPR1 +VIPR2 +VLDLR +BEST1 +VPREB1 +TRPV1 +VRK1 +VRK2 +VSNL1 +VTN +VWF +WARS1 +WAS +ZAN +WIPF1 +EIF4H +CLIP2 +LAT2 +CORO2A +WEE1 +WFS1 +NSD2 +NELFA +WNT1 +WNT2 +WNT3 +WNT5A +WNT6 +WNT7A +WNT7B +WNT8A +WNT8B +WNT10B +WNT11 +WNT2B +WNT9A +WNT9B +GET1 +WRN +WT1 +XBP1 +XDH +XG +XK +XPA +XPC +XPNPEP1 +XPNPEP2 +XPO1 +XRCC1 +XRCC2 +XRCC3 +XRCC4 +XRCC5 +YES1 +YY1 +YWHAB +YWHAE +YWHAG +YWHAH +YWHAZ +ZAP70 +SF1 +ZFP36 +ZFP37 +ZBTB14 +ZFPL1 +ZFX +ZFY +ZIC1 +ZIC2 +ZIC3 +ZNF2 +ZNF3 +ZNF711 +ZNF7 +ZNF8 +CNBP +ZNF10 +ZNF12 +ZNF14 +ZNF708 +ZNF16 +ZNF17 +ZNF18 +ZNF19 +ZNF20 +ZNF182 +ZNF22 +ZNF23 +ZNF24 +ZNF26 +ZNF28 +ZSCAN20 +ZNF32 +ZNF33A +ZNF33B +ZNF35 +ZKSCAN1 +ZNF37A +ZSCAN21 +ZNF41 +MZF1 +ZNF43 +ZNF45 +ZBTB25 +ZNF66 +ZNF69 +ZNF70 +ZNF74 +ZNF75D +ZNF75A +ZNF76 +ZNF79 +ZNF80 +ZNF84 +ZNF221 +ZNF85 +ZNF90 +ZNF91 +ZNF99 +ZNF222 +ZNF121 +ZNF124 +MKRN3 +ZNF131 +ZNF132 +ZNF133 +ZNF134 +ZNF135 +ZNF136 +ZNF138 +ZNF140 +ZNF141 +ZNF142 +ZNF143 +PCGF2 +ZBTB16 +ZNF146 +TRIM25 +ZNF148 +ZBTB17 +ZNF154 +ZNF155 +ZNF157 +VEZF1 +ZNF165 +TRIM26 +ZNF174 +ZNF175 +ZNF177 +RNF112 +ZNF180 +RNF113A +ZNF184 +ZNF185 +ZSCAN26 +ZNF189 +ZKSCAN8 +ZSCAN9 +ZNF195 +ZMYM2 +ZNF200 +ZNF202 +ZNF205 +ZNF207 +ZNF208 +ZNF213 +ZNF214 +ZNF215 +ZFAND5 +ZNF217 +ZNF223 +ZNF224 +ZNF225 +ZNF226 +ZNF227 +ZNF112 +ZNF229 +ZNF230 +ZNF232 +ZNF236 +SLC30A1 +SLC30A2 +SLC30A3 +SLC30A4 +ZP2 +ZP3 +MAP3K12 +ZXDA +ZYX +LUZP1 +PRDM2 +DNALI1 +PTP4A1 +LRP8 +LAPTM5 +BSND +CSDE1 +EVI5 +DAP3 +NPHS2 +BTG2 +PXDN +ALMS1 +MOGS +RNF103 +TUBA1A +PAX8 +IL1R2 +MALL +CXCR4 +FZD5 +SCG2 +BRPF1 +IFRD2 +MAPKAPK3 +SEMA3B +SLMAP +MANF +USP7 +RAB7A +KCNAB1 +SLBP +ST8SIA4 +REEP5 +DEK +ALDH5A1 +PRRC2A +BAG6 +GPANK1 +DDX39B +ABHD16A +SLC39A7 +HSD17B8 +OR2H2 +NELFE +CP20 +LST1 +PLA2G7 +TFEB +EPM2A +AIMP2 +MAFK +FZD3 +MTERF1 +SEM1 +TFPI2 +ST7 +ARHGEF5 +ZNF212 +TUSC3 +UBXN8 +KAT6A +PSCA +GLRA3 +NR4A3 +BRD3 +NUP214 +LHX3 +STAM +MLLT10 +CUBN +CCDC6 +NCOA4 +SLC25A16 +SHOC2 +ADAM12 +RASSF7 +CSRP3 +PDHX +FOSL1 +CUL5 +PTP4A2 +FGF23 +MFAP5 +USP5 +MLF2 +SSPN +KMT2D +AAAS +FXR1 +YEATS4 +HMGA2 +ALX1 +CDK2AP1 +IFT88 +PABPN1 +DPF3 +GPR68 +TCL1A +AP3B2 +ANP32A +ST8SIA2 +NPRL3 +GAN +SLC7A5 +TAF15 +RND2 +COIL +AKAP1 +SLC14A2 +MADCAM1 +SF3A2 +ELL +ZNF239 +SYMPK +MIA +CLPP +DPF1 +MKKS +GDF5 +NCOA3 +NRIP1 +CHAF1B +GATD3 +DGCR6 +LZTR1 +CLTCL1 +ESS2 +SYN3 +GTPBP6 +PUDP +AKAP17A +PNPLA4 +ZRSR2 +USP11 +USP9X +RBM10 +KDM5C +SMC1A +NAA10 +F8A1 +UBL4A +TMEM187 +LAGE3 +SLC10A3 +TKTL1 +KDM5D +USP9Y +EPX +ARID1A +H3-4 +DYSF +COLQ +SERF1A +H4C9 +TRRAP +PICALM +KLRC4 +SNN +ACOX2 +ACOX3 +AXIN1 +AXIN2 +BAP1 +BRAP +CDC7 +CDC45 +EOMES +FZD1 +FZD4 +FZD6 +FZD7 +FZD8 +FZD9 +GFI1B +H2AC13 +H2AC15 +H2AC14 +H2AC16 +H2AC6 +H2AC4 +H2AC17 +H2AC18 +H2AC20 +H2BC8 +H2BC13 +H2BC15 +H2BC14 +H2BC7 +H2BC6 +H2BC9 +H2BC10 +H2BC4 +H2BC17 +H2BC21 +H3C1 +H3C4 +H3C3 +H3C6 +H3C11 +H3C8 +H3C12 +H3C10 +H3C2 +H4C1 +H4C4 +H4C6 +H4C12 +H4C11 +H4C3 +H4C8 +H4C2 +H4C5 +H4C13 +H4C7 +H4C14 +HYAL3 +MAD1L1 +NME5 +OR1A1 +OR1D5 +OR1E1 +OR1E2 +OR1G1 +OR3A3 +PIP5K1A +PIP5K1B +PIP4K2B +PLA2G6 +PLA2G10 +SLC25A11 +SOX14 +SPARCL1 +SPOP +SRPX +TAGLN2 +ULK1 +UXT +EEA1 +BCAR3 +ANXA9 +STX7 +BFSP2 +BBOX1 +LTBP4 +ZNF282 +STK24 +NR0B2 +UTF1 +RECK +SOAT2 +CAVIN2 +RASAL1 +RAD54L +NSMAF +NCK2 +GNPAT +DYRK3 +DYRK2 +DUSP11 +DOC2B +DOC2A +DHX16 +CUL4B +CUL4A +CUL3 +CUL2 +CUL1 +ATRN +FOXN1 +TTF2 +TPST2 +TPST1 +KLF11 +TEAD2 +SUPT3H +SMARCA5 +FKBP6 +SORBS2 +IRS4 +OGT +CDC42BPA +GPR65 +HIRIP3 +RAE1 +OFD1 +SEMA7A +CILP +GALR3 +GEMIN2 +RGS5 +MAP4K3 +PRSS12 +PPM1D +PPFIBP2 +PPFIBP1 +PPFIA4 +RANBP3 +PPFIA2 +PPFIA1 +SLC43A1 +PKP4 +PIK3R3 +PEX3 +PARG +CNTNAP1 +ENC1 +NIPSNAP1 +NDST2 +MMP23B +LIPF +KCNAB2 +ITGA10 +ITGA8 +IKBKG +ELP1 +IFITM1 +HAT1 +GCM1 +GAS7 +DGKZ +DGKE +DGKD +DDO +CYP4F2 +CST7 +YBX3 +CPZ +COPS3 +CHST1 +CBX4 +CAMK1 +BCAS1 +BARX2 +API5 +AGPS +PPFIA3 +APOL1 +LMO4 +PIR +CGGBP1 +AP3B1 +FCN3 +BLZF1 +LGR5 +MAPKAPK5 +BHLHE40 +PIAS1 +CDC14B +CDC14A +TCAP +CDK10 +PRPF18 +DEGS1 +DENR +THOC5 +KMO +YARS1 +PDXK +MADD +RRP1 +MKNK1 +KHSRP +PDLIM4 +CASK +AKR7A2 +PRKRA +STK16 +TMEFF1 +SCARF1 +LY6D +OR6A2 +OR5D3P +TNFSF11 +RGS20 +NOP14 +FAM193A +SLC25A12 +PLA2G4C +RUVBL1 +RDH16 +KLF7 +PLPP1 +PLPP2 +PLPP3 +STC2 +USO1 +CADPS +NPFF +CDK13 +PDE8B +ASMTL +PSMG1 +RFXANK +TP63 +JRK +HSD17B6 +SKAP1 +DNAH17 +UNC5C +RTCA +RNASET2 +SSNA1 +EIF4EBP3 +OASL +AOC3 +PCDHGB4 +DCHS1 +PTCH2 +AKR1C3 +KCNK5 +CHRD +ABCB11 +NCOA1 +LAMTOR3 +NUMB +SOCS1 +DDX3Y +PDE5A +DYNLL1 +TNKS +ALDH4A1 +IRS2 +EIF3A +EIF3B +EIF3C +EIF3D +EIF3F +EIF3G +EIF3H +EIF3I +EIF3J +SLC4A4 +EIF4G3 +VAMP8 +VAMP4 +STX16 +STX11 +STX10 +BECN1 +JMJD7-PLA2G4B +PEA15 +SRSF9 +MARCO +KRT38 +KRT37 +KRT36 +JRKL +HYAL2 +GALNT4 +DGAT1 +CDC23 +S1PR4 +DNAH11 +B4GALT4 +B4GALT3 +B4GALT2 +B3GALT4 +B3GALNT1 +B3GALT2 +B3GALT1 +SERPINB7 +TNK1 +PAGE1 +ABCC3 +NOL4 +TRADD +TNFRSF25 +MBTPS1 +EDF1 +CTSF +SNX4 +SNX3 +URI1 +EED +CTNNAL1 +ADAM19 +GBF1 +RNMT +RNGTT +GPAA1 +MYH13 +MYOM1 +RIPK1 +CRADD +HRK +TNFSF14 +TNFSF13 +TNFSF12 +TNFSF10 +TNFSF9 +ADAM23 +ADAM21 +ADAM20 +ADAM18 +ADAM15 +ADAM9 +ADAM7 +CDS2 +PABPC4 +CD164 +TNFRSF14 +RAB11A +RIPK2 +TNFRSF6B +FADD +SNAP23 +NAPG +NAPA +MTMR1 +MPDZ +SIGLEC5 +RIOK3 +TNFRSF18 +MATN4 +RGS11 +RGS9 +DLK1 +FBP2 +FPGT +TNFRSF11A +TNFRSF10D +TNFRSF10C +TNFRSF10B +SCEL +TNFRSF10A +DYRK4 +PEX11B +PEX11A +SUCLG2 +SUCLG1 +SUCLA2 +CREG1 +TRIM24 +IL18RAP +IL1RL2 +IL18R1 +GALR2 +CCNK +DPM1 +CDKL1 +BANF1 +DCAF5 +FGF18 +DPM2 +SAP30 +HESX1 +INPP4B +FGF17 +FGF16 +CES2 +LIN7A +IQGAP1 +NRP2 +NRP1 +SYNGAP1 +CD84 +GMPS +TMEM11 +SOCS2 +GGH +CFLAR +CCN6 +CCN5 +CCN4 +HDAC3 +PROM1 +HCAR3 +KSR1 +ALKBH1 +TSC22D1 +KAT2B +CDK5R1 +AKAP4 +ASAP2 +ALDH1A2 +NR1I2 +FCGBP +PROZ +STK19 +LDB1 +APLN +PER3 +PER2 +SYNJ1 +ST3GAL5 +IER3 +SYNJ2 +CDC123 +ARHGEF7 +VNN2 +VNN1 +SPHK1 +SQSTM1 +SGPL1 +FUBP1 +CDC16 +ZPR1 +NAE1 +SLC5A6 +DDX18 +TAX1BP1 +MCM3AP +EIF2B4 +EIF2B3 +EIF2B2 +EIF2B5 +EIF2S2 +CPNE3 +BUD31 +MTMR3 +MTMR2 +PRPF4B +CCNA1 +CPNE1 +AP1S2 +AP1G2 +AP1M1 +GYG2 +ENDOU +SGCE +CACNA1I +CACNA1H +CACNA1G +TIMELESS +BCL10 +HERC3 +HERC2 +HERC1 +SNURF +BSN +FOXH1 +PHOX2B +MBD4 +MBD2 +RTL8C +RAB29 +SKAP2 +WASF1 +BAIAP3 +FUBP3 +TOP3B +CDK5R2 +KYNU +AP3D1 +BTRC +H3C7 +H2AC11 +H2BC11 +H1-10 +MGAM +CHRNA6 +P4HA2 +USP13 +WASL +PLOD3 +RPS6KA4 +STBD1 +HSPB3 +TRPA1 +SELENBP1 +ATP6V0E1 +PGLYRP1 +LIMD1 +TNFSF18 +NOL3 +KALRN +CDKL2 +HAP1 +F2RL3 +TAF1C +TAF1B +TAF1A +SLC25A14 +MPZL1 +MAP3K14 +SOCS3 +CLIC3 +CH25H +BRSK2 +RNF8 +HIP1R +NAT8 +RHBDL1 +BAZ1B +TM4SF5 +PKD2L1 +CCRL2 +SEMA5A +TAAR5 +UBA3 +UBE2M +SPAG9 +BTAF1 +RPL14 +DOK2 +SH2D2A +ARTN +AIP +PSTPIP2 +PSTPIP1 +GPRC5A +MAP7 +NFS1 +PRC1 +SLC7A7 +SLC7A6 +SLC13A2 +PAPSS2 +PAPSS1 +PIAS2 +MAP3K6 +SYT7 +ANGPTL1 +CLDN12 +ASH2L +CLDN10 +CLDN8 +CLDN6 +CLDN2 +CLDN1 +DIRAS3 +LDB2 +CLDN9 +PRY +BPY2 +VCY +CDY1 +EIF1AY +TMSB4Y +PKMYT1 +PIGQ +SART1 +DNAJA3 +UNC119 +TBX19 +TBX18 +USP14 +USP6 +USP2 +USP10 +USP8 +FCGR2C +RGN +MTMR6 +MTMR7 +MTMR4 +NMI +MTA1 +LATS1 +ATP6V0D1 +SEC22C +INA +KRT75 +SLC16A6 +SLC16A5 +SLC16A4 +SLC16A3 +PDLIM1 +CNOT9 +SMC3 +P2RX6 +PRPF4 +PRPF3 +FAM50A +AIFM1 +KCNQ4 +CCNB2 +CCNE2 +RABEP1 +RRP9 +ARHGEF1 +CBFA2T2 +ATG12 +PDCD5 +SYNGR3 +SYNGR2 +SYNGR1 +HGS +NEMF +NEURL1 +DYRK1B +CTDP1 +SLC6A5 +SLC28A2 +SLC28A1 +EXO1 +FIBP +PCSK7 +DGKI +EBAG9 +COX7A2L +TMSB10 +SCAF11 +LPAR2 +MYOM2 +IL1RL1 +MAP3K13 +HTR3B +AP4M1 +OSMR +ARHGEF2 +RASSF9 +ZW10 +BUB3 +REPS2 +SLC24A1 +DDX21 +ZBED1 +DEDD +SLC16A7 +KCNAB3 +SLC33A1 +HACD1 +DCLK1 +ZMYM4 +ZMYM3 +ZMYM6 +ZMYM5 +LRRFIP1 +LRRFIP2 +BMP15 +LGI1 +AURKB +XPR1 +FCMR +LARGE1 +VAPB +VAPA +MTA2 +NOLC1 +MAGI1 +LRAT +DLGAP2 +DLGAP1 +RAB11B +DLG5 +PTTG1 +IL32 +CCPG1 +TBRG4 +PNMA1 +NOG +MSC +CRLF1 +GCNT3 +UBE2L6 +GCM2 +GPR50 +DHRS3 +RPS6KA5 +NUMBL +CACNA2D2 +AIMP1 +TSPOAP1 +MFHAS1 +PDLIM7 +MAPKAPK2 +STK17B +STK17A +CYTH3 +CYTH2 +CYTH1 +ITGB1BP1 +PIWIL1 +BCL7C +BCL7B +COPB2 +WDR46 +ZBTB22 +MED14 +GPR37L1 +NPIPA1 +TAAR2 +ADGRG1 +GPR55 +GPR52 +S1PR2 +SRSF11 +ATP6V1F +SOCS6 +CD83 +ZNF235 +ASIC3 +KCNB2 +MMP20 +KLF4 +NREP +PTER +COPS2 +TRIP13 +TRIP12 +TRIP11 +TRIP10 +HMGN3 +TRIP4 +ZNHIT3 +GTF3C5 +GTF3C4 +GTF3C3 +B4GALT6 +CD163 +TGM5 +B4GALT5 +CNOT8 +TCEAL1 +GLP2R +VAMP3 +SNAP29 +EFTUD2 +TAOK2 +NDST3 +RPL23 +CER1 +NHERF2 +TXNL1 +SLIT2 +UBE4A +LHX2 +SLC22A6 +ITGBL1 +PPIG +LONP1 +CPNE6 +RAB33A +RAB28 +KL +RAB9A +NHERF1 +NRXN3 +ADIPOQ +KIF3B +ZFYVE9 +PLAA +PPT2 +TM9SF2 +SLC22A8 +COX5A +NRXN1 +NRXN2 +GRHPR +OTOF +COG1 +LIPG +SLC22A14 +SLC22A13 +CIAO1 +TGFBRAP1 +HS6ST1 +NMT2 +CD101 +STOML1 +RECQL5 +RECQL4 +GRAP2 +SELENOF +LPXN +ZRANB2 +TMPRSS11D +PEX16 +SNRNP40 +ARHGAP29 +MED21 +ENTREP1 +TJP2 +FADS2 +DDX23 +CRIPT +CYP7B1 +HAND1 +ZNF264 +NTN1 +KCNK6 +CDYL +CDY2A +ECEL1 +ABCG2 +CHST2 +NCR2 +NCR1 +MED23 +MED17 +MED26 +MED27 +MED7 +QKI +ITM2B +GSTO1 +AIM2 +MAP4K4 +LY86 +EIF2AK3 +ITM2A +GGPS1 +HOMER3 +HOMER2 +HOMER1 +FHL5 +ARHGEF6 +RASAL2 +PICK1 +HAND2 +AKAP7 +IL27RA +SH3BP5 +PCYT1B +CHST3 +EIF4E2 +AKAP6 +THEMIS2 +ATG5 +ROCK2 +NAPSA +MED20 +CABP1 +MAPK8IP1 +ONECUT2 +SLC25A27 +STX8 +CHST10 +PIGL +PIGB +PGS1 +PSMF1 +KIF23 +AKAP5 +TBX4 +SLC4A7 +SLC4A8 +MYOT +MAGED1 +RPH3AL +XAGE2 +PAGE4 +ADAMTS4 +ADAMTS3 +ADAMTS2 +ADAMTS1 +PMPCB +FXR2 +GAL3ST1 +STXBP5L +LITAF +SPTLC2 +GDF15 +TBPL1 +NPEPPS +EEF1E1 +SCAMP1 +TECR +VPS4B +MPDU1 +GOSR1 +TMEM59 +BAG5 +BAG4 +BAG3 +BAG2 +POLR1C +ZNF254 +GMFG +PTGES +TP53I11 +EI24 +TP53I3 +CIR1 +NRG2 +IGDCC3 +RAB3D +APBA3 +CXCL14 +ATP6V1G1 +ATP5MF +SPAG7 +MRPL33 +SEC22B +MACROH2A1 +ATP5MJ +CHD1L +VPS26A +CCL4L2 +MINPP1 +H6PD +BCAR1 +GTPBP1 +GABBR2 +GTF2IRD1 +GOSR2 +NR1D1 +GDF3 +CLOCK +SPAG6 +BABAM2 +CDC42BPB +SOX13 +PREPL +APOBEC3B +ENTPD4 +RBM39 +KIF20B +CREB5 +MAD2L1BP +PRDX6 +WTAP +AKAP12 +IER2 +CYTIP +OR1R1P +PITPNM1 +PDIA4 +NFE2L3 +RNF14 +VPS9D1 +CARTPT +RAB36 +RIN1 +NCOR1 +NCOR2 +GDA +RNF7 +MTRF1 +TRAF4 +ABCG1 +CELSR1 +KLK4 +TCL1B +AATK +GUCA1C +SNCAIP +RGS6 +GNA14 +NUP155 +SEC24C +TESMIN +CLCA2 +ISG15 +FEZ2 +FEZ1 +ARHGEF10 +ZNF592 +IKBKE +MORF4L2 +SH3PXD2A +MICAL2 +CTR9 +PPM1F +GCC2 +RALGPS1 +MTFR1 +PLCH2 +SKIC3 +HS2ST1 +TTLL4 +SOCS5 +MDC1 +IQCB1 +ZNF516 +PDE4DIP +CEP135 +LPIN2 +MARF1 +DZIP3 +SAFB2 +ZNF432 +EIF5B +IPO13 +WSCD2 +SDC3 +SLC25A44 +KIAA0040 +TTI1 +PPIP5K1 +PHF14 +FAM53B +DEPDC5 +KDM4A +N4BP1 +LRRC14 +CLINT1 +VGLL4 +GREB1 +NUP93 +BZW1 +UBE3C +PRORP +RAPGEF2 +EMC2 +EDEM1 +CROCC +TRAM2 +PUM1 +RIMS2 +ESPL1 +PPP6R2 +CEP57 +BLTP2 +DHX34 +ST18 +ULK2 +PCDHGA8 +HERPUD1 +GARRE1 +RUBCN +USP6NL +FAM131B +AQR +SEC14L5 +ECE2 +ADAMTSL2 +CCDC144A +GPRIN2 +NOS1AP +SEMA3E +UTP14C +TMEM63A +ZNF646 +RAB11FIP3 +SECISBP2L +KIAA0408 +DCAF1 +CEP104 +DOCK4 +SART3 +HDAC9 +KNTC1 +USP34 +GPRASP1 +CCP110 +SETD1A +LAPTM4A +IFT140 +ARHGAP32 +ACAP1 +ZNF536 +CLSTN3 +TCAF1 +SLK +PHACTR2 +RIPOR2 +SNPH +PCDHA9 +ZSCAN12 +STARD8 +TBKBP1 +KMT2B +FRMPD4 +HDAC4 +TOX +MLEC +LZTS3 +KIAA0513 +ZFYVE16 +SUSD6 +JADE3 +PCLAF +RASSF2 +RAPGEF5 +TMEM94 +BCLAF1 +EIF4A3 +ATG13 +TM9SF4 +KIAA0232 +TBC1D5 +PIEZO1 +RNF144A +MATR3 +RIMS3 +SNX17 +DHX38 +KIAA0586 +DLGAP5 +MTSS1 +SPCS2 +BMS1 +PTDSS1 +SERTAD2 +CKAP5 +MAML1 +PHYHIP +TATDN2 +IST1 +MRPL19 +DAZAP2 +TOMM20 +SCRN1 +SPOCK2 +IP6K1 +RNF40 +CTIF +DELE1 +EFCAB14 +SFI1 +GIT2 +URB2 +KEAP1 +NUP58 +TSC22D2 +CUL7 +RB1CC1 +ARMCX2 +ARHGAP11A +SPATA2 +ARHGEF11 +RGP1 +ARHGEF17 +DNAJC6 +TRIM14 +ZNF623 +JAKMIP2 +MELK +LCMT2 +GINS1 +ZEB2 +TESPA1 +ZBTB24 +PLEKHM1 +HEPH +ELMO1 +GAB2 +C2CD5 +MFAP3L +ZNF518A +KIAA0753 +EPM2AIP1 +RUSC2 +C2CD2L +FARP2 +KIAA0319 +CEP350 +PPP1R26 +CEP170 +LRIG2 +PSMD6 +MED24 +MAGI2 +TRIL +TRIM66 +PJA2 +TOMM70 +SETDB1 +AREL1 +SEC24D +FCHSD2 +TLK1 +URB1 +ZC3H11A +TOX4 +DDX46 +ZBTB39 +TRANK1 +TBC1D4 +POM121 +LRRC37A +OSBPL2 +RHOBTB1 +SMG7 +ZBED4 +PLPPR4 +NUAK1 +SNAP91 +TELO2 +TECPR2 +FIG4 +WASHC5 +UBAP2L +SV2B +SV2A +SRGAP3 +MRC2 +KLHL21 +RBM19 +SGSM2 +AP5Z1 +G3BP2 +DENND4B +RABGAP1L +TMCC2 +ARHGAP44 +SUPT7L +ATP2C2 +ARNT2 +FAM20B +NCAPD2 +SEC16A +KBTBD11 +RNF10 +IQSEC1 +ZBTB40 +PAN2 +ZBTB5 +LPGAT1 +MFN2 +KIF14 +JOSD1 +HELZ +PUM3 +P2RY14 +MAFB +CD302 +DCLRE1A +ARHGAP25 +RBM8A +DLEC1 +EXOG +XYLB +OXSR1 +GFPT2 +CRYZL1 +MAGEC1 +WDR1 +AMMECR1 +GOLGA5 +HS3ST4 +HS3ST3B1 +HS3ST3A1 +HS3ST2 +HS3ST1 +USP15 +USP3 +MVP +SLC23A2 +SLC23A1 +FGF19 +TNFSF15 +THRAP3 +MED12 +MED13 +NR1I3 +NR1H4 +NUP153 +CCS +NR1D2 +CLEC2B +RBX1 +DOP1B +FGFBP1 +THOC1 +REC8 +RCE1 +HNRNPDL +DMTF1 +PPP4R1 +SLC12A6 +PTBP3 +KCNE2 +DGCR2 +CASP8AP2 +SCO2 +AKT3 +MED6 +NR2E3 +NAALAD2 +NAALADL1 +ACOT8 +ABI1 +GNPDA1 +KCNE3 +ZBTB33 +TANK +SRA1 +HDAC6 +HDAC5 +PDCD6IP +PDCD6 +BCL2L10 +BCL2L11 +SH2B3 +GNE +HCN4 +INSL5 +FRAT1 +TROAP +MED16 +PIGK +CHAF1A +PARP2 +PARP3 +TOM1L1 +HMGXB4 +TOM1 +SH2D3C +SH2D3A +MAMLD1 +CST8 +RANBP9 +DNAJB6 +SLC17A4 +SMC4 +GJC1 +AP1M2 +UBA2 +SAE1 +FARSB +ABCC5 +ABCB6 +DNM1L +ABCC9 +ABCF2 +NR1H3 +COX17 +SCAMP2 +SCAMP3 +IL18BP +RWDD2B +MUC12 +DPP3 +SNUPN +HUWE1 +PTPRU +TSPAN32 +TSSC4 +ATP9A +PDCD7 +GPC6 +USH1C +PQBP1 +EDIL3 +HHLA1 +CERT1 +KCNK7 +UST +ARPC5 +ARPC4 +ARPC3 +ARPC1B +ACTR3 +ACTR2 +TSPAN5 +TSPAN3 +TSPAN2 +NUBP2 +TSFM +TSPAN1 +PPIF +CTDSP2 +TRIM10 +ARPC2 +SGK2 +RAD50 +KIF20A +PREB +HIPK3 +FEM1B +ENAM +ACTR1B +ACTR1A +ARL4C +ARL4A +RASGRP1 +DNAL4 +ZNF263 +LRPPRC +FRY +PDIA6 +TRAP1 +OPTN +BCAP31 +NAMPT +CELA3A +RBM12 +YAF2 +ARFRP1 +TOB1 +AKAP9 +CLEC3A +FAM13A +G3BP1 +SUGP2 +EBI3 +ADGRG2 +MBNL2 +ABI2 +CEBPZ +PLXNC1 +TRIM28 +RASA4 +AASS +PDZK1IP1 +ATP6AP2 +FARP1 +LPAR6 +LPCAT3 +WASF2 +CHST4 +SLC25A13 +SLC25A15 +ZNF197 +SERF2 +DHRS9 +RCL1 +ZNF256 +SORBS3 +CNIH1 +TENM1 +RBM7 +RBM6 +RBM5 +LHFPL2 +LHFPL6 +TNK2 +ALYREF +TXNDC9 +RNF41 +TSHZ1 +ALG3 +PRMT3 +PSME3 +MPHOSPH9 +MPHOSPH10 +MPHOSPH6 +NME6 +DHRS2 +CALCRL +NUTF2 +MPZL2 +TRIM13 +PATJ +USPL1 +EIF1 +TOPORS +FLOT1 +DDX39A +PSMD14 +SSX3 +OLIG2 +PRG4 +CTDSPL +ANGPTL7 +KLRG1 +GDF11 +TRIB1 +GPA33 +ZNF443 +CD96 +PLIN3 +MFSD10 +STX6 +COQ7 +RCAN2 +MSLN +LRRC23 +LRRC17 +RASGRP2 +HNRNPR +SLC35B1 +DCAF7 +AP3S2 +MRPS31 +CALCOCO2 +KCNMB2 +GPHN +RABEPK +TIMM17B +SLC17A2 +RIDA +POP7 +GLYAT +SRRM1 +SPRY3 +SPRY1 +SPRY2 +STAM2 +CNKSR1 +ABCC4 +DENND4A +IGSF6 +SF3B4 +CDK2AP2 +IRX5 +RAMP2 +RAMP1 +RAMP3 +ZMPSTE24 +AKAP8 +FSTL3 +STUB1 +STAG1 +NET1 +UBE4B +EFS +PRSS16 +SIGMAR1 +BET1 +CWC27 +SAP18 +SMNDC1 +BCAS2 +RGS19 +LILRB2 +EIF1B +SPEG +SF3A1 +TRAIP +DNAJA2 +BCKDK +MAEA +APC2 +PAK4 +MARCHF6 +KATNB1 +SNAPC5 +APBB3 +ZNF267 +CCNO +VPS26C +TCIRG1 +RTN3 +LANCL1 +NMUR1 +B3GALT5 +TNIP1 +LAMC3 +IKZF1 +CRISP3 +SMYD5 +KLHL41 +RRAGB +SIRPB1 +AKR1A1 +EMC8 +RXYLT1 +CNPY2 +B3GNT3 +CLEC4M +TLR6 +IRAG1 +PCGF3 +TFG +PKDREJ +CCL26 +TRDN +TRIM22 +ABCA7 +ABCA10 +ABCA9 +ABCA8 +WARS2 +NPM3 +NPM2 +HMG20B +HMG20A +KLF2 +MICU1 +CACNG3 +CACNG2 +CITED2 +SEMA3A +TUBA1B +IRF9 +BPNT1 +TUBB3 +TUBB4A +TUBB4B +BTN3A3 +BTN2A2 +SYCP2 +SCML2 +CEPT1 +CORO2B +NOD1 +ANAPC10 +PRG3 +DLC1 +ATP8A1 +NDRG1 +MYL9 +RACK1 +PEMT +PIAS3 +ST3GAL6 +NDC80 +CPQ +WFDC2 +SPAG11B +BASP1 +IFITM3 +RAPGEF3 +NSA2 +YAP1 +SPON2 +SPON1 +PRMT5 +TESK2 +CD2BP2 +UBAC1 +CDIPT +PGRMC2 +ARIH2 +TUBGCP3 +SEC24B +CFDP1 +TMEM147 +RBM14 +LYPLA1 +CDC42EP2 +EMG1 +IFI30 +C1D +OLFM1 +TIMM17A +N4BP2L2 +ZER1 +MCRS1 +LRRN2 +FAM3C +ACAA2 +PPIE +VAV3 +TOMM40 +TAB1 +ECI2 +HAX1 +GPNMB +BAIAP2 +MAD2L2 +TACC3 +MERTK +CLEC10A +SLC30A9 +PIBF1 +PPIH +COG5 +ZNHIT1 +FST +TIMM44 +PFDN6 +ZBTB18 +HMGN4 +TADA3 +TRIM38 +ATP5PD +UBE2E3 +SLC25A17 +SLC9A6 +EIF3M +HOXB13 +NXF1 +SEC23B +SEC23A +CAP2 +CAP1 +CREB3 +LRRC41 +VTI1B +CRTAP +SYNCRIP +VAT1 +STK25 +ENOX2 +UNC13B +CARM1 +NCOA2 +SEMA6C +SEMA6B +SEMA4F +SEMA4D +SEMA4B +SEMA3C +APPBP2 +MYBBP1A +FBLN5 +FBXW10 +CIB2 +CIB1 +ZNF211 +DDX17 +DEAF1 +CHERP +KAT5 +HYOU1 +IPO8 +IPO7 +NOP56 +NEBL +PITRM1 +ATG7 +ZNRD2 +RNASEH2A +P3H3 +UBD +BATF +GLRX3 +DCTN2 +ANP32B +LAMTOR5 +PROCR +TM9SF1 +PRDX4 +ARL6IP5 +AGR2 +ARPC1A +HTATIP2 +AGPAT1 +AGPAT2 +RPP30 +RPP38 +SPTLC1 +SLC35A1 +SLC19A2 +IFI44 +OLFM4 +CXCL13 +ARFGEF2 +ARFGEF1 +AKAP3 +RABAC1 +SLC34A2 +SLU7 +DPYSL4 +SIVA1 +MRPL28 +CCT7 +CCT4 +CCT2 +NPC2 +GNLY +TACC2 +SORBS1 +IFITM2 +COLEC10 +POMT1 +MAB21L2 +TXNRD2 +MTHFS +DRAP1 +SCGN +DNPH1 +SMC2 +PRPF8 +ERN2 +TRAPPC2B +AHSA1 +SLCO1B1 +USP16 +CDC42EP3 +SH2B2 +PAIP1 +PAICS +TBL3 +MXD4 +P3H4 +ST6GALNAC2 +PDLIM5 +TRIM3 +ERLIN1 +HEXIM1 +SPAG5 +RBCK1 +STAMBP +TGOLN2 +ARID3B +POLR3F +POLR3G +POLR3C +IVNS1ABP +TRIM16 +MYL12A +TXNIP +TAF6L +PDPN +POSTN +ATP5MG +RASL10A +GAS2L1 +RAD51AP1 +RGS14 +LEFTY1 +EXOC5 +NPRL2 +IGF2BP1 +IGF2BP3 +IGF2BP2 +CAMKK2 +SCGB1D2 +SCGB1D1 +PRELID3A +MTX2 +YKT6 +SPINT2 +PMVK +DMRT2 +KHDRBS3 +KHDRBS1 +CELF1 +CELF2 +LBX1 +KLF1 +CXCR6 +CTCF +TSBP1 +CD226 +FARS2 +CGRRF1 +CGREF1 +RRAGA +DCTN6 +GNA13 +TNFSF13B +CSPG5 +AVIL +B3GNT2 +GNB5 +EBP +DLL3 +CLDN16 +PNMA2 +CRSP5 +FUT9 +GMEB1 +RRH +CCT6B +CCT8 +CNPY3 +CORIN +ENTREP3 +USP39 +POLD3 +CERS1 +TBR1 +AP4B1 +NRG3 +UGT2B11 +POLQ +SLC12A7 +OGA +NFAT5 +NUDC +PTGES3 +YME1L1 +TCFL5 +PLK4 +STAG3 +STAG2 +SIX2 +RFPL3 +RFPL2 +RBBP9 +RAI2 +RAI1 +PTTG2 +PHTF1 +MAP3K2 +MASP2 +KIF1C +GRAP +CHL1 +CAPN9 +GIPC1 +TRAF3IP2 +PLAC1 +NUP50 +NES +KDM5B +TOB2 +HBS1L +AHCYL1 +PLK2 +ZMYND11 +SRSF10 +ZBTB6 +POP4 +ARPP19 +ARPP21 +ZNF234 +ZNF266 +ZNF274 +NEK6 +WDR4 +SLC17A3 +NCKAP1 +IQGAP2 +VAMP5 +ZNF273 +ZNF460 +ZNF268 +MTHFD2 +OR5I1 +RPP40 +CYSLTR1 +SEPTIN9 +SEC24A +CCR9 +GJB6 +SDCCAG8 +ENTR1 +HSPH1 +STARD10 +WASF3 +NOXA1 +UTP14A +CPLX2 +CPLX1 +SPINT3 +FRS3 +FRS2 +NEU3 +FAXDC2 +FAM114A2 +ZNF275 +ALDH1L1 +FTCD +PPP1R17 +TUBGCP2 +CLPX +PDE10A +SRCAP +PPP1R13L +POLR1G +CCL27 +HPSE +RUVBL2 +PGRMC1 +CYP46A1 +LILRB1 +SLC26A1 +ADAM28 +SLC22A7 +ARID5A +TSPAN9 +USP20 +USP19 +HCST +CD300C +ME3 +NMU +FGL2 +EDDM3A +CFHR4 +CFHR3 +SMR3B +ACTL7B +ACTL7A +C1QL1 +MRPS30 +WDR3 +NPFFR2 +PROKR1 +GPR83 +RAB10 +PPARGC1A +MALT1 +MMP24 +LYVE1 +YIF1A +CPSF4 +JTB +RUNDC3A +DHRS4 +BRD8 +MTMR11 +BLCAP +MAN1A2 +TRAFD1 +TXNL4A +PNPLA6 +SUGT1 +UTS2 +GADD45G +EDAR +PAPOLA +TCERG1 +MAGED2 +BTNL3 +EHMT2 +COPS8 +RNPS1 +FASTK +SUB1 +SMPDL3A +DBF4 +SPIN1 +RALBP1 +SRSF8 +APOBEC2 +MORF4L1 +PRDX3 +GPR75 +EHD1 +AFG3L2 +POP1 +UGT2A1 +PRSS21 +MSL3 +C11orf58 +KDELR1 +SF3A3 +AP3M2 +STARD3 +HNRNPA0 +BTG3 +CBX1 +SEC61B +TOMM34 +PDIA5 +SERINC3 +OS9 +PNRC1 +TMED2 +LMAN2 +ERP29 +MLLT11 +STIP1 +IFI44L +ACOT2 +RAB40B +EBNA1BP2 +CKAP4 +YWHAQ +TMED10 +ASCC3 +ADIRF +UQCR11 +CLP1 +FERMT2 +COPS6 +RAB32 +MAPRE2 +CCNI +GCN1 +COPS5 +METAP2 +IMMT +LILRB5 +SLC38A3 +SF3B2 +SDS +ILVBL +SLC27A5 +SLC27A4 +SLC27A3 +SLC27A2 +KIF2C +SPINK5 +LILRB4 +CCDC85B +IL24 +GLIPR1 +TLK2 +KLK11 +TMSB15A +KDELR2 +KDELR3 +ATF7 +SNRNP27 +TMED1 +LIAS +IFT27 +RAB35 +TDRKH +VAX1 +LILRA1 +LILRB3 +LILRA3 +LILRA2 +RBPMS +RAB31 +ADAP1 +DSTN +RIPK3 +GTF2A1L +STON1 +PIM2 +B4GAT1 +MID2 +TENT4A +UPK1A +SLC35D2 +ADRM1 +NUDT21 +CPSF6 +OGFR +ZPBP +DDX52 +ABHD2 +WWP1 +WWP2 +CNMD +DUS4L +SOX30 +CNTRL +UBE2C +SNRNP35 +DEPP1 +CYB561D2 +RAPGEF4 +TMEM115 +DUSP14 +TOPBP1 +TRIM31 +STMN2 +TPPP +HSF2BP +TRIOBP +RER1 +DNAJB4 +KERA +ESM1 +DIDO1 +ADAM30 +ADAM29 +WDR5 +SPACA9 +ADAMTS13 +CACFD1 +ADAMTS8 +ADAMTS5 +NUP42 +PRSS23 +PTPN21 +HNRNPUL1 +ATE1 +RPP14 +KRR1 +KATNA1 +PRDM7 +PRDM5 +PRDM4 +HIBADH +CIT +CEP43 +EMILIN1 +BTN3A2 +BTN3A1 +BTN2A1 +PTPRT +RCAN3 +FAF1 +CD160 +KIF3A +POLR3A +CLASRP +ZWINT +CAPN11 +CAPN10 +KPTN +CDC42EP1 +SLC7A9 +PWP1 +TBC1D8 +CDC37 +IL1RAPL1 +PKIG +KAT7 +DMC1 +PLAAT3 +GLMN +HHLA2 +BVES +CORO1A +WDR45 +FICD +AP4S1 +LDB3 +PTP4A3 +LSM6 +RABL2B +RABL2A +ERLIN2 +ERG28 +NUDT6 +NUDT4 +NUDT5 +NUDT3 +SOX21 +FSTL1 +PSIP1 +WDHD1 +FAM107A +STRAP +INSL6 +ADAMTS7 +ADAMTS6 +BAZ2A +BAZ1A +LZTS1 +ZNF277 +WDR6 +TREH +SLC2A6 +MAP4K5 +MAP4K1 +INMT +RASSF1 +PKP3 +NISCH +CELF3 +CEP250 +WBP4 +ABCB8 +SEC23IP +WIF1 +SUPT16H +ANXA10 +CHEK2 +POLI +KLK8 +FZD10 +PLPBP +IRAK3 +AKAP13 +AKAP11 +AKAP10 +DDX20 +TREX2 +DUSP10 +MRPL3 +RPL35 +GALNT6 +GALNT5 +RASSF8 +PRAF2 +SEC63 +POLG2 +HPS5 +PDCD10 +RNF139 +RNF24 +CA5B +PADI2 +PMF1 +ZHX1 +GPR176 +NXPH4 +NXPH3 +NXPH2 +GPR45 +PTGDR2 +PACSIN2 +MAN1B1 +SLC6A14 +HRH3 +DCTN3 +FILIP1L +XPOT +CHP1 +SP140 +PXMP4 +DUSP12 +SNF8 +DDX19B +NRM +PRR4 +ATXN2L +USP18 +KLHL2 +SYNRG +TREX1 +KLF12 +KLF8 +SCN11A +POU6F2 +MGAT4B +CYP4F8 +PNKP +B4GALT7 +SLCO2B1 +VPS45 +LYPLA2 +CD300A +PARK7 +COPE +RBPJL +GPR182 +ECD +MGAT4A +GPN1 +TMC6 +DDX42 +VSIG4 +FKBP9 +STK38 +CTRC +PHB2 +ACOT7 +PDAP1 +TUSC2 +CBX3 +EXOC3 +GABARAP +U2AF2 +OIP5 +EXOSC8 +SCRG1 +RNF13 +MGLL +TWF2 +GABARAPL2 +SYNPO +CASC3 +NID2 +COG2 +TFEC +LAMB4 +RRAS2 +ITGA11 +CLCA4 +XRN2 +IKZF3 +IKZF2 +MRAS +ATF5 +NR1I4 +COPZ1 +COPG1 +RASA3 +PHLDA1 +MTF2 +HSPA4L +DNAJC8 +PUF60 +SCAF8 +NLGN4Y +CEP162 +ZNF652 +ZFP30 +RHOBTB3 +COBLL1 +RNF44 +DLGAP4 +RAB11FIP2 +PPM1E +FRMPD1 +DOLK +VASH1 +ZNF507 +AAK1 +CPEB3 +ADNP2 +ANKRD26 +LMTK2 +NTNG1 +CHSY1 +CILK1 +ADGRL1 +NLRP1 +FNDC3A +ATG14 +R3HDM2 +SLITRK3 +CNKSR2 +FASTKD2 +ZNF510 +PPP6R1 +NLGN1 +SEC31A +DZIP1 +PLEKHA6 +ENPP4 +INPP5F +MLXIP +TRAPPC8 +MON1B +MORC2 +ANKRD6 +ZHX2 +CLSTN1 +WDR37 +ABLIM3 +FOXJ3 +UBOX5 +KHDC4 +ZBTB1 +ZNF365 +BAHD1 +DIS3 +RPH3A +CEP164 +DENND3 +ARHGEF15 +CARD8 +ARSG +RUFY3 +BTBD3 +SBNO2 +EPN2 +TRAK1 +DHX30 +SACM1L +FAN1 +WDR47 +RALY +KLRK1 +MMRN1 +NCBP2 +ZP1 +CD93 +MAPRE1 +KIFAP3 +MSRB2 +MAPRE3 +PLA2R1 +ATF6 +HABP4 +SEPHS2 +SEPHS1 +RAB3GAP1 +RAB18 +POMZP3 +SIRT2 +RPIA +ELL2 +SCAP +SNW1 +SHANK2 +DKK1 +KIN +CCT5 +PTGR1 +SLC4A1AP +P2RX2 +TRIM32 +SCMH1 +TPX2 +PAXIP1 +AKR7A3 +NT5C2 +EFR3B +TCF25 +NINL +DIP2C +MAST1 +PDCD11 +ACIN1 +SORCS3 +SV2C +MYH15 +PCNX1 +KDM2A +HMGXB3 +CEP131 +CEP152 +TTC39A +IGSF9B +LIMCH1 +RIMS1 +WDFY3 +DAAM1 +MAPKBP1 +PLCH1 +KLHDC10 +RAB21 +STK38L +SPEN +FBXO21 +GOLGA8A +EXOSC7 +FAIM2 +CNOT1 +SNRNP200 +PALLD +TMCC1 +PDZRN3 +UNC13A +MYO16 +KDM1A +RBM34 +KDM4B +MAST3 +USP33 +DOP1A +SAMD4A +PHLPP2 +ZNF292 +PDZD2 +WDTC1 +XPO7 +MYT1L +MON2 +PDXDC1 +TNIK +KIF21B +PDS5B +FNBP1 +SMG1 +ZHX3 +ENDOD1 +ZSWIM8 +NCOA6 +NMNAT2 +CLUAP1 +ZNF609 +TBC1D9B +GGA2 +WAPL +SETX +EMC1 +CAND2 +SETD1B +CMTR1 +ERP44 +HECW1 +BLTP3B +SWAP70 +RRP1B +MYCBP2 +VWA8 +AVL9 +KDM4C +PPRC1 +ERC1 +EXPH5 +TRIM35 +PEG10 +ZNF423 +ZC3H13 +ARHGAP26 +TTLL5 +SIPA1L3 +KIF1B +IQSEC2 +CDK19 +SARM1 +ZBTB43 +MCF2L2 +TBC1D2B +FSTL4 +MRPS27 +RAP1GAP2 +DDN +SPART +TNRC6B +CUL9 +NFASC +TOGARAM1 +NPIPB3 +TAB2 +HIC2 +ATP10B +CLASP2 +CAMTA2 +POGZ +COLGALT2 +PLXND1 +ATG2A +GPATCH8 +RAD54L2 +PHF8 +KDM6B +EPB41L3 +SMC5 +N4BP3 +MAST2 +ZZEF1 +ANKLE2 +DCUN1D4 +LRCH1 +ZC3H3 +NACAD +FCHO1 +FRMD4B +GRAMD4 +CIC +NCDN +CLCC1 +SEPTIN6 +TBC1D9 +WDR43 +SNX13 +MAPK8IP3 +GGA3 +MPRIP +NUP205 +STAB1 +EFR3A +RTF1 +SLC35D1 +TTLL12 +GPD1L +ABRAXAS2 +METAP1 +ZCCHC14 +LPIN1 +SEPTIN8 +CEP68 +PASK +RGL1 +RFTN1 +DIP2A +MESD +LARP4B +RCOR1 +PHLDB1 +KANK1 +UBXN4 +CYFIP1 +ATG4B +GANAB +FBXL7 +MDN1 +FAM120A +FAF2 +PSME4 +GSE1 +ATP11B +FAM168A +PMPCA +ARL6IP1 +ACSBG1 +PLEKHM2 +SYT11 +MLC1 +JMJD6 +ZC3H4 +RRS1 +SULF1 +XPO6 +PRRC2C +TBC1D1 +ZFR2 +NBEAL2 +FBXO28 +DTX4 +RHOBTB2 +RRP12 +SYNE2 +NUP210 +PLCL2 +ARHGEF9 +VPS13A +SEL1L3 +TBC1D12 +EXOC6B +DNAJC9 +SIK2 +PLCB1 +ARC +PHLPP1 +TMEM131L +PACS2 +COBL +ANKRD28 +PDS5A +ASTN2 +BOP1 +KATNIP +RPRD2 +ATP11A +MINAR1 +OTUD3 +ANKRD12 +KAZN +MTCL1 +SCFD1 +DENND5A +DDHD2 +CAMTA1 +PPIP5K2 +MCF2L +ZC3H7B +EXOC7 +ADGRL2 +DNMBP +MGA +TSPYL4 +CAMSAP2 +TASOR +CLEC16A +POFUT2 +KLHL18 +CLUH +NUP160 +MTUS2 +CSTF2T +ADGRL3 +WWC1 +AGTPBP1 +IQCE +FBXW11 +SMG6 +ANKS1A +MGRN1 +BICD2 +ATMIN +EHBP1 +WSCD1 +KIF13B +UBR2 +ACSL6 +NEMP1 +FKBP15 +ICOSLG +SIN3B +NCAPD3 +DMXL2 +KIAA0930 +SATB2 +SLC9A8 +CUX2 +DNAJC13 +TUT4 +TRIM2 +RPGRIP1L +MAN2B2 +WASHC4 +USP22 +NEDD4L +SASH1 +TBC1D30 +TTC28 +CLASP1 +DPY19L1 +SZT2 +WDR7 +SYNM +JADE2 +VPS39 +DNAJC16 +ESYT1 +SYNE1 +SMCHD1 +DOCK9 +PHF24 +U2SURP +KHNYN +UBR4 +SUN1 +HAUS5 +VPS8 +ANGEL1 +USP24 +ENTREP2 +FNBP4 +ZNF629 +PSD3 +OBSL1 +ARHGEF12 +MATCAP2 +LARP1 +PPP1R13B +PUM2 +ARHGEF18 +TNS2 +CRTC1 +UFL1 +RRP8 +ICE1 +SRGAP2 +SMG5 +AHCYL2 +MAU2 +SPECC1L +NCSTN +NUDCD3 +SIK3 +MED13L +ZDHHC17 +ECPAS +ADNP +LARS2 +PIP5K1C +NCAPH +PPWD1 +CTDNEP1 +ATP13A2 +FRAT2 +FBXO46 +EXOSC2 +DICER1 +COTL1 +SIRT5 +SIRT4 +SIRT3 +SIRT1 +COMMD3 +NCS1 +ZFPM2 +KCNH4 +KCNH3 +MLYCD +CRB1 +NOMO1 +ITGB3BP +TMED3 +TDRD7 +GRIP1 +SLC7A8 +RYBP +TPSD1 +AP4E1 +GPR161 +RHOQ +TARDBP +CELA3B +HARS2 +ATP1B4 +OTP +SLC35A3 +SLC44A1 +SF3B3 +SF3B1 +ANGPTL2 +ABCB10 +ABCB9 +ABCA6 +ABCA5 +HEY1 +ICMT +GCAT +CBX6 +NPTXR +CBX5 +PHF3 +TRAM1 +CAPN7 +ETHE1 +QPRT +BRD4 +SEC11A +ISCU +SEC61G +PES1 +TGDS +LEPROTL1 +CES3 +CBX7 +HEY2 +TNFRSF13B +HAAO +MACF1 +DAAM2 +ZFYVE26 +RIMBP2 +TMEM131 +BICRAL +LRRC8B +TTC9 +POFUT1 +KCTD2 +NUP188 +SUZ12 +SCRIB +SPIDR +MORC3 +SLC39A14 +MTREX +R3HDM1 +ANP32D +RPL13A +KAT6B +CABIN1 +SRRM2 +ARHGAP45 +ACAP2 +ZNF281 +CLCF1 +NNT +MMD +PRAME +PIK3R5 +TNPO3 +ADAT1 +OR52A1 +SLC16A8 +SEC14L2 +MAPK8IP2 +RBFOX2 +SEZ6L +ATP6V0A2 +SYNGR4 +LILRA4 +TTC33 +DNPEP +PSD4 +RASD2 +CDK20 +HYAL4 +TSPAN12 +TSPAN15 +PIGN +SNAPIN +WBP2 +WBP1 +GTPBP4 +CLDN14 +CHST5 +DDAH2 +LPAR3 +ZNF346 +ARL2BP +PADI4 +DDAH1 +CDC42EP4 +CASP14 +CCNDBP1 +SMUG1 +VSIG2 +TMEM50A +RIGI +ELP5 +KLHDC2 +CARHSP1 +PDSS1 +LEMD3 +HEBP2 +ORC6 +ORC3 +OPN3 +ACOT9 +PATZ1 +AMACR +CLEC5A +CORO1C +DAPK2 +CD2AP +MKRN1 +MKRN2 +PHLDA3 +ZMYND8 +SH3BP1 +TSSK2 +ZIM2 +NTSR2 +BACE1 +RUSC1 +CBLC +FAM89B +SPO11 +PRND +KCNE5 +CA14 +KPNA6 +SSBP2 +NUP62 +RABGAP1 +DNAAF11 +HSPBP1 +LDOC1 +LY96 +EDC4 +PPP1R15A +PLD3 +ARFIP2 +SSBP3 +POLA2 +TRIM29 +PLXNB2 +SLC7A11 +LSM5 +PLA2G15 +ZKSCAN5 +CEMIP2 +TMEFF2 +STX12 +SMPX +SH3BP4 +SGK3 +RAB38 +PRKD3 +KCNE4 +CADM1 +GSPT2 +GABARAPL1 +SHPK +TMEM245 +FRRS1L +EID1 +NPAP1 +BHMT2 +AIPL1 +SDF2L1 +PPIL2 +PITPNB +PISD +OSBP2 +MAFF +IL17RA +FLRT3 +FLRT2 +FLRT1 +FKBP8 +BRD1 +ARHGAP8 +APOL2 +POTEH +BCL2L13 +MTCH1 +MTCH2 +KIF4A +IFIT5 +EML2 +FTSJ1 +LAMP5 +NAA80 +TFIP11 +PANX1 +CLDN15 +FJX1 +PRPF6 +ZNF318 +TP53TG3 +KIAA1549L +SHC2 +H2AP +HYPK +PRPF40B +SLC24A2 +C22orf31 +TBC1D22A +GSTT4 +CBY1 +SUN2 +DSTYK +RASGRP3 +RAB3GAP2 +RAD54B +TMEM59L +CFAP45 +NGEF +CIZ1 +FBXO7 +FSCN2 +PGLS +QPCT +BRI3 +ZNF324 +SLC39A6 +GCA +LMOD1 +SPDEF +LSM4 +BAMBI +VAX2 +RHBDD3 +TTLL1 +SAMM50 +ATXN10 +TNFAIP8 +TAFA5 +KLK5 +NOCT +ARIH1 +MTO1 +DNAJB5 +TPSG1 +PRDX5 +BACE2 +FBXL2 +TXN2 +TMEM184B +SULT4A1 +HECTD1 +NBPF14 +POU2F3 +MGAT4C +NIPBL +RAB26 +COG4 +METTL7A +ABTB2 +ASF1A +MOB4 +YIPF3 +ANAPC13 +PARM1 +ZNF345 +TECPR1 +ARMC8 +DCAF12 +FAM149A +BRMS1 +CATSPERZ +WHRN +USP49 +ABHD14A +PRKD2 +SUMF2 +NEPRO +RPL36 +MPC2 +LETMD1 +SPEF1 +MXRA5 +DCAF13 +TMEM186 +CHRDL2 +POLR1A +POC1A +ZNF473 +ABI3BP +PAMR1 +TRIM58 +PLEKHG4 +EEF1AKMT3 +INTS7 +RNF19A +RCHY1 +IFFO1 +CCDC28A +MTHFD1L +OLFML2B +CNOT10 +ANAPC15 +TMEM158 +AHCTF1 +DPCD +C1orf43 +POT1 +RTTN +NDUFAF3 +THUMPD3 +NELFB +ZDHHC5 +ATL3 +MYRIP +ZNF521 +NOL11 +CNRIP1 +SOSTDC1 +GEMIN5 +PTPN23 +CLIC4 +NIPSNAP3A +NSL1 +WWTR1 +HEATR5A +SAMHD1 +FAM98A +TPGS2 +SIN3A +DNAAF9 +NECTIN3 +ZNF385A +KBTBD2 +SYF2 +RWDD3 +PNKD +SEC31B +PNISR +KANK2 +ADGRA2 +NUDT13 +VIRMA +TMEM87A +C2CD2 +SH2B1 +UNC50 +PARS2 +MMACHC +EGFL6 +TIPARP +NECAP1 +CHMP2B +DHRS7B +AAR2 +DNAH1 +NGDN +KRT23 +TSKU +HINFP +ULK3 +SNED1 +HIGD1A +REXO2 +IBTK +CLIP3 +TBC1D10B +RNF167 +MOXD1 +GORASP2 +C2CD3 +TKFC +ZZZ3 +SPATS2L +TENM4 +NSMF +L3MBTL1 +RPAP1 +FAM32A +LRIG1 +UPF2 +LRP10 +TMEM98 +PTCD1 +PCDHGA12 +ACOT11 +PLEKHG3 +OSBPL3 +SUSD5 +ATRNL1 +IPCEF1 +GLCE +ZNF451 +SIPA1L1 +CHD5 +SS18L1 +SETBP1 +UBXN7 +LRRTM2 +LTN1 +CNTNAP2 +ZNF500 +FAM169A +SLITRK5 +PPP1R16B +DNM3 +AUTS2 +SENP6 +RAB11FIP5 +ANKRD17 +GIGYF2 +ERC2 +APPL1 +HACL1 +DECR2 +RAI14 +LSM14A +RTL8A +POLDIP2 +CFAP61 +ARHGEF26 +KLK13 +GPSM1 +GGA1 +ABHD12 +HERC4 +TOR1AIP1 +CCDC9 +DCAF4 +PTPN20 +CHTOP +EDRF1 +SZRD1 +WIPI2 +LRIT1 +PYGO1 +CCDC69 +TANC2 +WSB1 +LDLRAP1 +PRPF31 +EPC2 +TCTN3 +FGFR1OP2 +KIFBP +GAPVD1 +TRPC4AP +SERBP1 +TES +ZBTB20 +TTLL3 +IRF2BP1 +TRAF3IP1 +PHF19 +ZNF658 +RIBC2 +NAT9 +ZNF337 +KIF26A +ABCA12 +NOC2L +RSL1D1 +GIMAP2 +IFT172 +MTG2 +SPATA31A7 +RGS22 +PCDHB5 +SENP3 +INTS1 +LYSET +OR1C1 +OR1A2 +FBXW2 +PTPN22 +GMEB2 +SPAG8 +PITPNC1 +OR2F1 +OR2B6 +OR1J4 +FBXL3 +ARL5A +PHGDH +STAP1 +B3GAT3 +TIAM2 +FBXO2 +FBXL6 +FBXL5 +FBXL4 +LCE2B +FAM50B +OR2M4 +OR2L2 +OR2K2 +KLHL3 +KCNG2 +CLEC4E +OPTC +CABYR +NKX2-8 +BLOC1S6 +FBXW8 +FBXO25 +FBXO24 +TSPAN17 +FBXO22 +SLC13A4 +FBXO10 +FBXO9 +FBXO8 +FBXO6 +FBXO5 +FBXO4 +FBXO3 +HIBCH +VPS33B +TINF2 +SACS +PLA2G2D +IL1RAPL2 +FGF20 +ERAL1 +CLDN17 +ARFGAP3 +ANKRD2 +AK5 +GALNT8 +FGF21 +MYCBP +SERGEF +EHF +GBGT1 +GAPDHS +OR7A17 +OR5L2 +OR5K1 +OR5H1 +HSPB8 +GNL3 +FAM162A +LHX6 +PTPN18 +SEZ6L2 +NUPR1 +PPP1R14B +OR10J1 +OR8B8 +OR8G1 +OR10A3 +OR10D3 +PLEK2 +NARF +SLC17A5 +CNNM4 +CNNM3 +CNNM1 +HEYL +MYOF +CHIC2 +INTS6 +TIMM10B +TIMM13 +TIMM10 +TIMM9 +TIMM8B +AGO1 +LATS2 +IL36RN +TSPAN16 +DAZAP1 +OR12D2 +OR12D1 +OR11A1 +OR10H3 +OR10G3 +OR10G2 +OR10H2 +OR10H1 +ITGB1BP2 +AATF +RGS17 +SRPK3 +PCOLCE2 +OSTF1 +MYEOV +BSCL2 +DUX5 +DUX3 +DUX1 +GREM1 +CKAP2 +MRPL46 +OR8B2 +TBL2 +VCX +ELP4 +OR7E24 +OR7C2 +OR7A5 +OR7C1 +OR4F3 +OR4E2 +OR4E1 +OR4D1 +OR2W1 +OR2V1 +OR2T1 +OR2J2 +OR2H1 +OR1L3 +OR1L1 +OR1J2 +NUFIP1 +GAGE12I +GAGE2E +RPS6KC1 +SH3YL1 +HAVCR1 +STEAP1 +OPLAH +SMR3A +RANBP6 +COPG2 +HBP1 +NBEA +CHORDC1 +ZNF285 +SEC22A +AP3M1 +PABPC1 +AKAP8L +RNF11 +TRUB2 +GPR160 +FETUB +CYFIP2 +DNAJC2 +USP21 +FGF22 +TPK1 +KCNV1 +CNPPD1 +BEX3 +DNAI1 +NPTN +FOXD3 +FOXB1 +MLH3 +NPHP3 +ATP2C1 +ZBTB32 +ACAD8 +NOX1 +SIGLEC7 +TRMT2A +PKD2L2 +LAT +UTP25 +PELP1 +SND1 +ANKRD1 +NSG1 +STAU2 +PPA2 +GHITM +DAPP1 +VPS41 +LAMP3 +TSPAN13 +LYPD3 +B9D1 +RPUSD2 +MTBP +FOXP1 +B3GAT1 +UQCRQ +ST6GALNAC4 +CACNG5 +CACNG4 +KCNMB3 +TRAPPC3 +TAF5L +CLUL1 +CACYBP +EIF2AK1 +ARRDC2 +ZBTB11 +DMAC2L +SDCBP2 +NALF2 +BBC3 +PDE7B +DKKL1 +DKK4 +DKK3 +DKK2 +INPP5J +AFF4 +SMC1B +CYTH4 +HSPB7 +INVS +SNX5 +CPNE7 +KCNH5 +TJP3 +MORC1 +CIDEB +PALD1 +FILIP1 +FAM184B +DENND2A +STK36 +CPAMD8 +INTU +ZNF777 +BRPF3 +RSPH14 +NDOR1 +CHIA +AGO2 +NAAA +SALL3 +GLS2 +PRELID1 +SLC39A1 +TUBG2 +IL36B +IL37 +IL36A +SIGLEC9 +SIGLEC8 +VPS4A +DISC1 +IL17C +IL17B +GPR82 +HCAR1 +OXGR1 +GPR78 +C5AR2 +TUBGCP4 +SERP1 +NMRK2 +GNMT +SULT1C4 +COQ2 +ARFIP1 +ARHGEF16 +GPKOW +GPR162 +SIT1 +BBS9 +TNFRSF21 +CHMP2A +SESN1 +AHDC1 +RNF115 +NFU1 +ERLEC1 +MMADHC +PDCD4 +KLHL20 +PCDH17 +CSDC2 +CNTN6 +LSM1 +LSM3 +TINAG +SULT1B1 +TEKT2 +SRPX2 +VENTX +RBMXL2 +RND1 +SPINK4 +R3HCC1L +DIMT1 +SMPDL3B +DHDH +PDLIM3 +TP53TG5 +CRCP +ADAMDEC1 +ZNF544 +APEX2 +BMP10 +RBMS3 +MOCS3 +HPGDS +ZNF330 +RAB30 +PGAP2 +RBMX +BHLHE22 +TOX3 +TNRC6A +PCDH11X +ANGPTL3 +RPS6KA6 +ZNF638 +GOLIM4 +P2RY10 +EIF3K +HTATSF1 +UBE2S +PRPF19 +UTP20 +RRP7A +RABGEF1 +POLL +PCSK1N +KCNMB4 +TMEM97 +STK39 +TOR1B +MCAT +APOBEC3C +DESI1 +SGSM3 +HTRA2 +MAT2B +TOR2A +POLM +EML4 +TMEM121B +HDHD5 +CECR2 +PCLO +PPP2R3B +SLCO4A1 +SLCO3A1 +SLCO1B3 +CDH20 +NKIRAS2 +NKIRAS1 +CDH19 +DLL1 +TRIB2 +CCDC22 +REM1 +DEXI +LAMTOR2 +MRPS28 +COA3 +TMEM176B +DCPS +OSTM1 +GIT1 +SLC27A6 +SNX24 +SLC6A16 +BZW2 +C11orf54 +AAMDC +SPCS1 +MRPS18B +C19orf53 +ACAD9 +MRPL42 +TMEM14A +IFT81 +FLVCR1 +TMPRSS11E +RGCC +MCTS1 +MAGEH1 +NOB1 +DBNL +NTMT1 +ASTE1 +COMMD5 +MACROD1 +HIPK2 +MRPL13 +KLF15 +SLC43A3 +ATAD2 +HAPSTR1 +FAM156A +TMEM230 +WDR91 +ZCCHC4 +ZC3H7A +ZBTB44 +CCDC113 +C1GALT1C1 +SETD2 +MRPL18 +NDUFAF4 +MED4 +CCDC59 +METTL5 +CHMP4A +GTPBP8 +PHPT1 +BABAM1 +THYN1 +MRPL15 +UBE2T +TIMM21 +STXBP6 +MRPL22 +LGALSL +ORMDL2 +CNIH4 +RANGRF +COMMD9 +TMEM208 +SSU72 +DROSHA +DNAJC15 +N6AMT1 +CFAP20 +SCG3 +NXT1 +PYCARD +FHOD1 +TBK1 +C6orf15 +TAGLN3 +SAP30BP +MYLIP +BRD7 +DDX25 +CTNNA3 +CLEC2D +PRSS50 +ANKRD11 +LGALS13 +C11orf21 +CD274 +RACGAP1 +UHRF1 +BLNK +USP25 +PACSIN3 +TMOD4 +TMOD3 +TMOD2 +CARD10 +ABT1 +PARVB +NCAPH2 +CYP2S1 +OLA1 +UQCR10 +YPEL1 +ZDHHC1 +ZDHHC8 +VPREB3 +REPIN1 +GRHL1 +TFCP2L1 +SENP1 +TFPT +TRPM5 +ICOS +UBN1 +ALG5 +NPC1L1 +ANAPC2 +CNOT7 +SNX8 +SNX10 +STRN4 +GNL2 +RBM15B +PSMC3IP +CPSF1 +MYL11 +TRA2A +GPSM2 +SAC3D1 +FAM216A +CCDC106 +EEF2K +ST8SIA5 +SNX15 +GPR171 +HOOK2 +UBIAD1 +HCFC2 +SNX11 +RMC1 +PYCR2 +NME7 +HILPDA +EPN1 +GMPPB +GMPPA +SEC61A1 +TIMM22 +ALG6 +PCDHB1 +GPR132 +SNX12 +RPA4 +NENF +DSE +PKN3 +PURG +PADI1 +PNMA3 +ANAPC4 +SERTAD3 +DNMT3L +OSGIN1 +IL19 +SERTAD1 +PDZRN4 +DPP7 +TRHDE +POMT2 +CERS2 +SLC25A24 +DMGDH +NRBP1 +MRM2 +PRICKLE4 +CDIP1 +STRN3 +LRP12 +PSAT1 +MDFIC +SCHIP1 +A1CF +UBQLN2 +UBQLN1 +DONSON +NRBF2 +RHOD +SLC39A3 +SLC39A2 +SLC2A8 +OBP2B +PILRB +OBP2A +PILRA +PACSIN1 +BAZ2B +LMCD1 +NOP53 +BICRA +FSCN3 +TNPO2 +ERO1A +EFEMP2 +TBX21 +NXPH1 +SH3KBP1 +TLX3 +SPANXA1 +SLC40A1 +RAX +HUNK +SOX8 +VSX1 +PLA2G2E +ST6GALNAC6 +ERVW-1 +ADGRE2 +KCNIP3 +KCNIP2 +KCNIP1 +CXXC1 +ZNF354C +NT5C +POLR1H +CD209 +DNTTIP2 +SOCS7 +EHD4 +EHD3 +EHD2 +CTAG2 +PIK3R4 +CDR2L +TAX1BP3 +STOML2 +KLK14 +KLK12 +ZBTB21 +SCAPER +WRAP73 +CRNN +CLDN20 +RRM2B +SMARCAL1 +G0S2 +PLA2G3 +MINK1 +CD207 +DUOX2 +NOX4 +NOX3 +COL5A3 +SYCP3 +PODXL2 +CHST11 +IL20 +UBQLN3 +GALNT9 +IL21R +IL22 +ATP6V0A4 +ITSN2 +DEF6 +CUZD1 +ZFTRAF1 +GEMIN4 +CALY +ANO7 +PNPLA8 +ARHGEF4 +ARHGEF3 +SLC45A1 +NEUROG3 +RDH8 +DCAF8 +KCNK4 +IGK +MYEF2 +IRX4 +ASAP1 +AK3 +HP1BP3 +HDGFL3 +COPS7A +NSDHL +TAS2R3 +TAS2R4 +TAS2R16 +TAS2R1 +TAS2R9 +TAS2R8 +TAS2R7 +TAS2R13 +TAS2R10 +TAS2R14 +DHH +F11R +TRAT1 +VILL +PARD6A +CLEC4A +SPOCK3 +STMN3 +RNF141 +NTM +HEBP1 +CDON +IMPG2 +PDE11A +FOXP3 +SHANK1 +TBX22 +SOST +TMED5 +SLC35B3 +MTERF3 +TPRKB +MED31 +COQ6 +AMDHD2 +SLC35C2 +ASCC1 +DERL2 +EXOSC3 +FAHD2A +PRELID3B +EXOSC1 +TMED7 +ISOC1 +EMC9 +RRP15 +WASHC3 +HDDC2 +MRPS16 +GLRX2 +MRPS18C +FIS1 +PAM16 +GOLT1B +BOLA1 +VPS36 +DESI2 +TVP23B +GLOD4 +CELA2B +UBXN1 +ZNF593 +ZBTB7B +ST8SIA3 +PI15 +PRLH +GMNN +LAP3 +WDPCP +ZNF691 +FAM135B +TXNDC12 +TXNDC11 +ATL1 +CALHM2 +RPS27L +SSUH2 +YARS2 +NMD3 +MRPL2 +NOSIP +DERA +MEMO1 +MRPL4 +APIP +TMX2 +CUTC +FCF1 +THAP4 +NDUFA13 +MRPS7 +POLR1D +GAL +CRYL1 +MLXIPL +TNNI3K +YBX2 +KLHL5 +PLLP +SEPSECS +SIDT2 +METTL25B +ADIPOR1 +TRNT1 +UTP18 +SCCPDH +IFT52 +ABHD5 +SH3GLB1 +ZC2HC1A +MECR +NDUFAF1 +ABHD17B +PHF20L1 +TFB1M +APH1A +METTL9 +RDH11 +LACTB2 +KMT5B +TRAPPC12 +ZDHHC9 +RMDN1 +MRPS2 +COQ4 +UTP11 +SBDS +RPL26L1 +COMMD2 +ZNF706 +IER3IP1 +GOLGA7 +NAA20 +TRIM17 +SAR1B +ANGPTL4 +ASB3 +PHF11 +RLIM +KCTD3 +CEP83 +IRAK4 +RNFT1 +COPS4 +INSIG2 +CHCHD2 +DYNC1LI1 +HSD17B12 +A4GNT +ING4 +CERCAM +MRNIP +SDF4 +SLC45A2 +MRTO4 +JPT1 +SERPINA10 +ZNF580 +VPS28 +C3orf18 +EGFL7 +DBR1 +DCTN4 +AADAT +CYB5R4 +MYO15A +HSD17B11 +HSD17B14 +NAGPA +TUBD1 +TUBE1 +LEF1 +PLEKHO1 +HAO2 +DCXR +HSPA14 +GPN3 +CRBN +TCEAL9 +RSL24D1 +SS18L2 +HERC5 +CKLF +ZNF639 +IPO11 +RAPGEFL1 +PLCE1 +NIN +CPA4 +ZDHHC2 +DDX47 +NUSAP1 +TACO1 +ACP6 +GP6 +DUSP13 +CLDN18 +RAB9B +LUZP4 +GLRX5 +ZNF219 +ELOA2 +ABI3 +COPZ2 +PIGP +GLTP +PHF20 +VRK3 +CRIM1 +DRICH1 +EMC4 +HGH1 +MZB1 +ANKRD39 +COX16 +CCDC174 +SHISA5 +PAIP2 +PDZD11 +TMEM69 +MTRES1 +NT5C3A +FAM178B +MRPL37 +RNF181 +TBC1D7 +MARCHF2 +MRPL51 +TMEM216 +PBDC1 +MRPL30 +MRPL27 +CDKL3 +CLEC1B +CLEC1A +PIPOX +TFDP3 +UBAP1 +BET1L +KLF3 +ZNF571 +DNAJC27 +IER5 +C1RL +GOLM1 +ANKMY1 +SCAND1 +BFAR +TLR7 +RASL12 +CEND1 +COA4 +RXFP3 +ERGIC2 +GMIP +GMPR2 +CD320 +PCDH12 +ECSIT +SLC15A3 +BPIFA1 +THEG +NRN1 +TIMMDC1 +GCNT4 +CYP39A1 +FKBP11 +ZDHHC3 +KCNK9 +FAM13B +FAM53C +REEP2 +ARMCX1 +SLC22A17 +TLR8 +SLC25A37 +GASK1B +NME8 +KRCC1 +PLAC8 +PHF21A +MRPL35 +RSRC1 +MEX3C +AMZ2 +WAC +SPG21 +ARL17A +AHSP +ARL6IP4 +TNFRSF12A +SPTBN5 +ZNF771 +PRR16 +NGRN +THEM6 +MS4A4A +DACT1 +CRNKL1 +ZBTB7A +FZR1 +TAOK3 +KLRF1 +KRT76 +ZNF117 +MBTPS2 +HOOK1 +CDC40 +CHST15 +ZMYND10 +PLA1A +UBR5 +POP5 +TEX264 +POMP +TMA7 +MRPS17 +ATRAID +SNX7 +UCHL5 +ANGPT4 +CRLF3 +CSAD +ATP6V1D +WNT16 +ZNF589 +EIF3L +NIP7 +RWDD1 +AIG1 +TRPV2 +COMMD10 +WDR83OS +TRAPPC4 +PPME1 +NOL7 +HEMK1 +BIN2 +ACTL6B +AMOTL2 +PRKAG2 +POLK +ZNF107 +DDX41 +SNX9 +SUCO +ANAPC5 +ANAPC7 +SCARA3 +MAGEC2 +FAM8A1 +HPCAL4 +YTHDF2 +VGLL1 +RNF138 +IP6K2 +PCYOX1 +PRRX2 +LCMT1 +GULP1 +REV1 +RHCG +SFMBT1 +GPR89B +UBE2J1 +EVL +DCDC2 +LIMA1 +CABP2 +ISYNA1 +HSD17B7 +ANKFY1 +VCX2 +VCX3A +SPOUT1 +NOP16 +RTCB +HACD3 +CTDSPL2 +NELFCD +TRIAP1 +HIKESHI +CWC15 +TRMT112 +UFC1 +RTF2 +CHMP5 +GTSE1 +ETV7 +DTL +NCKIPSD +LARS1 +TMEM14C +CXXC5 +TMEM138 +OSER1 +GSKIP +JKAMP +ANAPC11 +ZC3HC1 +TRMO +PHF7 +VTA1 +PPHLN1 +MTFP1 +ZCCHC17 +SCLY +VPS54 +ZNF581 +SIRT7 +SIRT6 +CINP +RAB14 +ACKR4 +PEX5L +LGSN +NT5DC3 +RAB6B +IL23A +MBIP +HDAC7 +ARMCX3 +TDP2 +UFM1 +CYRIB +GDE1 +LARP7 +ESF1 +AZIN1 +PCF11 +MED15 +PIAS4 +TRIM33 +SRRT +NBAS +CUTA +LSR +LIPT1 +NOP58 +METTL13 +PIGT +TRMT6 +ATP6V1H +GET4 +DPH5 +ERGIC3 +TAF9B +NSG2 +UBE2D4 +KLF13 +CCZ1 +DYNC2LI1 +SLC25A39 +LUC7L2 +OTUD6B +RBMX2 +DHRS7 +RTRAF +SF3B6 +MRPL48 +TMBIM4 +PPIL1 +YPEL5 +CIAO2B +MRPS23 +MRPS33 +PTRH2 +CHMP3 +CDK5RAP1 +RASD1 +STYXL1 +GINS2 +MPC1 +FKBP7 +ZFR +ASB1 +ASB4 +NUB1 +HSPB11 +SARAF +TPPP3 +ASB2 +PALS2 +SUFU +OAZ3 +LSM7 +LSM8 +CPSF3 +TRAPPC2L +HECA +VPS29 +CYB5R2 +NLK +PADI3 +ACSL5 +GPRC5B +EMCN +CYB5R1 +ZNF44 +SELENOT +RAB23 +CAB39 +UIMC1 +FBXO40 +DNAJB11 +CMPK1 +POLR3K +WBP11 +UPB1 +MSRB1 +RAPGEF6 +GHRL +WWOX +ARID4B +CD244 +LUC7L3 +RTEL1 +HIGD1B +ERAP1 +TMEM8B +CDK12 +C9orf78 +SYT17 +ATP8A2 +RAB8B +INPP5K +GNG13 +STK26 +TM7SF3 +RSF1 +MAP3K20 +MYOZ2 +KDM3B +ASIC5 +SIX4 +COQ3 +CALML5 +TUBA8 +PHAX +GALNT7 +ADA2 +BCL11A +CPXCR1 +BTBD1 +SPA17 +IL17D +NUDT9 +CHIC1 +TM6SF2 +TM6SF1 +UBASH3A +ZFYVE1 +LRP1B +PANK1 +SHC3 +NUP54 +TPCN1 +CLIC5 +STX18 +MBD3 +ADAM22 +BCO1 +PRKAG3 +PTOV1 +S1PR5 +RIPPLY3 +FXYD7 +FXYD6 +FXYD5 +FXYD4 +P2RY13 +GPR84 +IL20RA +IL20RB +FGFRL1 +GPR87 +C11orf24 +TRIM34 +CDHR5 +CLDN22 +MYO3A +DUOX1 +RAB4B +RAB24 +PELO +SLCO1C1 +PPIL3 +FTHL17 +CNTN5 +CSNK1G1 +A4GALT +CPSF2 +BRWD1 +SLC37A1 +RBM11 +PCBP3 +C21orf58 +YBEY +SMIM11 +MIS18A +TSPEAR +SETD4 +FAM3B +RIPK4 +CLIC6 +GSAP +TLR9 +POLE3 +CHRAC1 +GPR88 +H2BC12L +MRPL39 +C21orf91 +DCUN1D1 +NANS +CYCS +ERRFI1 +KCNK10 +TREM2 +TREM1 +SNTG1 +SNTG2 +GPR173 +GPR85 +GNG2 +GDAP1 +DPM3 +SOX18 +UNC93A +CYTL1 +WNT4 +HAO1 +TERF2IP +SLC38A2 +NLGN3 +SIAE +TAS2R5 +DNAJC10 +YIPF1 +GAR1 +SSH1 +SH3TC1 +SEMA5B +GFOD1 +RBM27 +SASH3 +KCTD5 +ANLN +RIN2 +ATAD2B +FBXO42 +MOV10L1 +TAF7L +PRR13 +MRPS21 +FBXW5 +CCSER2 +RETREG1 +XRN1 +ETAA1 +SPIN2A +ANKIB1 +MIOS +ZFAND6 +ARMCX6 +MIEF1 +TOLLIP +KRT20 +NLE1 +RNF216 +PLEKHA5 +PIMREG +CHPF2 +TRMT13 +DGCR8 +UGT2B28 +OTULINL +NEURL1B +C11orf71 +TMX3 +PRMT7 +HEATR5B +SMOX +TMCO1 +RBM47 +ZDHHC13 +CPVL +DHX29 +ADAMTSL4 +RHOF +PCDH18 +HMGCLL1 +EXOSC4 +DDX4 +MTRF1L +PUS7 +APBB1IP +CCDC93 +WDR44 +ANKRD16 +ASNSD1 +MIER2 +USP53 +MRPL50 +CCHCR1 +EXOC6 +SHLD2 +ROBO4 +NDUFB11 +FAM193B +DDIT4 +RC3H2 +TOMM7 +CRCT1 +MTMR12 +RNF186 +SDK2 +NECAB2 +MAGEL2 +GNL3L +WDR5B +DDX49 +ING3 +SGTB +SPATA6 +EPB41L4B +DLL4 +UGT1A10 +UGT1A8 +UGT1A7 +UGT1A6 +UGT1A5 +EGLN1 +GNB1L +LZTFL1 +EQTN +MXRA8 +L1TD1 +UGT1A9 +NDFIP2 +DDX56 +INO80 +CCNJ +FBXL19 +VSIG10 +ARL15 +PAF1 +PARP14 +HES2 +MAP10 +MINDY2 +UGT1A4 +UGT1A1 +UGT1A3 +TBC1D13 +WDR74 +TMEM106B +RSBN1 +LRRN3 +CRLS1 +GTPBP2 +CROT +ZNHIT6 +P4HTM +MANSC1 +RRN3 +PDP1 +GPN2 +MARCHF5 +CNGB3 +RBFOX1 +SLC6A20 +OTUD4 +NKX1-1 +TMED9 +SLC35F2 +RAB39A +MPHOSPH8 +FEV +XAF1 +LEPROT +LY6K +EPDR1 +FBLIM1 +FNDC8 +ZNF853 +NUTM2F +IL17RD +FAM20A +KLHDC4 +PCSK4 +GRAMD1C +ROPN1 +ZRANB1 +TRIM44 +BTG4 +HYDIN +DIRAS2 +PPP1R12C +CFAP46 +RNF111 +NSMCE4A +ALKBH4 +BORCS6 +DNAJB12 +TET2 +KCTD9 +TRPM4 +BNC2 +MED18 +DCHS2 +MBTD1 +KLHL24 +HAUS6 +TRIT1 +CNNM2 +AHI1 +ZNF586 +DYM +SAMD9 +GIPC2 +ZNF562 +AFTPH +KLHL28 +QPCTL +GATAD2A +ZNF280D +ZCCHC10 +NDE1 +ERCC6L +TRPM7 +SWT1 +CDHR2 +GIN1 +NXPE4 +BCAS3 +ASPN +NUP62CL +BEST2 +VPS13C +GDAP2 +BSPRY +WBP1L +LRRC49 +APTX +BIVM +MFSD6 +SYTL2 +ESRP1 +SIDT1 +ARHGEF38 +DEF8 +FBXL12 +ANKRD49 +PAQR5 +WDR55 +FAM83E +TENT5C +GON4L +GDPD2 +PGPEP1 +ELP6 +MS4A12 +SNRK +CC2D1A +TOR4A +GPATCH4 +PPP1R14D +TMEM214 +TMEM104 +EPS8L1 +QRICH1 +PIGG +PALMD +FNBP1L +CNTLN +DCAF16 +ZCCHC2 +DPP8 +ST7L +BCOR +TEX10 +ANKHD1 +CWC25 +RETSAT +TBC1D8B +PLPPR1 +BLTP3A +NSUN2 +ALKBH5 +INO80D +NCAPG2 +MTMR10 +RNF43 +SLC66A1 +CASZ1 +ELOVL2 +PXK +LAX1 +CDKAL1 +TTC19 +MKS1 +NSD3 +CYP2W1 +TASOR2 +SPDL1 +SEMA4C +RPP25 +FOCAD +YTHDF1 +TMEM260 +CMTM6 +DNAAF5 +DUS2 +CHTF8 +RASIP1 +LIME1 +ZSCAN32 +UBE2R2 +CHCHD3 +BPNT2 +TMEM161A +HAUS4 +TRMT10C +EXD3 +RHBDL2 +KANSL2 +DUSP23 +ADPRS +SOHLH2 +SARS2 +COMMD4 +OCIAD1 +RNF125 +ABITRAM +DNAJC28 +SLC41A3 +LPCAT2 +MRPL16 +SDHAF2 +COMMD8 +TRNAU1AP +ODR4 +FAM120C +C1orf109 +PARP16 +TXNL4B +TMEM160 +ODAM +GEMIN8 +SSH3 +TIPIN +UCKL1 +C1orf56 +PIGX +CT55 +TMEM70 +HPF1 +TTC12 +BANP +TMEM132A +INTS11 +THG1L +C20orf27 +SLC25A38 +SLC35F6 +PLAAT2 +C2orf42 +NMRK1 +CLN6 +PINX1 +HCFC1R1 +ULK4 +CZIB +ACSM5 +ZNF770 +C1orf159 +ZSCAN2 +GID8 +OXSM +MTARC2 +TESC +AURKAIP1 +TUG1 +TTC22 +TMCO3 +PAK1IP1 +LAMTOR1 +RMND1 +TRMT61B +FAM118A +HERC6 +FAM174C +PARPBP +PIH1D1 +PPP2R3C +MCUB +STX17 +PRPF39 +MARCHF1 +C14orf119 +ANKRD40CL +TTC38 +PID1 +PHIP +BANK1 +TMEM255A +HEATR3 +C17orf80 +FBXO34 +USP47 +SLC35A5 +FKBP14 +MOCOS +NOL8 +CCDC40 +PTCD3 +CDCA4 +TRMT12 +EPN3 +PLEKHB2 +VPS37C +REX1BD +NRDE2 +MRPL20 +ATG16L1 +ZWILCH +CRYBG2 +SUSD4 +WIPI1 +ZCWPW1 +SPATA6L +SLC52A1 +PDPR +ENOX1 +TMEM248 +DET1 +C9orf40 +RNF31 +OXR1 +UACA +TMEM45A +FEZF2 +TAPBPL +IFT57 +ARGLU1 +KIF26B +SOBP +RADX +CCDC186 +SLC38A4 +MED9 +TMEM51 +NTAQ1 +GPATCH1 +SAMD4B +EBLN2 +WDR70 +DMAC2 +ATG2B +RALGPS2 +GPATCH2 +SLFN12 +ANO1 +BSDC1 +AGGF1 +MAGOHB +PLEKHJ1 +DYNC2I1 +XKR8 +ARHGAP17 +TMEM39B +SLC6A15 +CRTAC1 +PRPF38B +FANCL +AKIRIN2 +PIWIL2 +CEP192 +HEATR1 +TRIM68 +ANO10 +ODAD2 +RBM28 +LARP1B +SRBD1 +WRAP53 +FIGN +FAM90A1 +ANKZF1 +ELP3 +HAUS2 +CDCA8 +LRRC8D +THAP1 +ZDHHC4 +RBM23 +UBR7 +MTPAP +C19orf73 +TMEM38B +DALRD3 +SDAD1 +MSTO1 +ARMC1 +DARS2 +RFWD3 +ARHGEF10L +TMEM33 +PNPO +SHQ1 +CEP55 +CENPQ +MSL2 +MRPS18A +PRMT6 +TBCCD1 +DNAAF2 +MRPS10 +INTS10 +KLHL11 +SEC61A2 +RMDN3 +MRM3 +FAIM +LINS1 +SMG8 +RNF220 +RIF1 +DZANK1 +SLC25A36 +VPS13D +RIC8B +NUDT11 +NADSYN1 +DNAJC17 +PBRM1 +EVA1B +CCDC198 +RESF1 +RPRD1A +APPL2 +PLEKHG6 +MAP1S +LGI2 +GOLPH3L +ZNF532 +SBNO1 +ARL8B +DCUN1D2 +SETD5 +ATAD3A +DPPA4 +BBS7 +RCBTB1 +P3H2 +FANCI +NKAPD1 +TMLHE +EXD2 +MACO1 +KLHDC8A +LRRC20 +TRIM62 +ETNK2 +RAVER2 +NAT10 +LRRC1 +PNMA8A +PANK4 +USP40 +CCDC87 +MOB1A +SMU1 +UBA6 +VRTN +SLC38A7 +OGFOD1 +STEAP3 +KIRREL1 +SLC47A1 +UQCC1 +CCDC25 +NEIL3 +PACC1 +YY1AP1 +ELP2 +PCMTD2 +ASXL2 +TYW1 +TMEM39A +WDR41 +ADI1 +MRGBP +THNSL2 +DNAI7 +TMEM143 +TRAPPC14 +TMEM19 +ECHDC2 +PSPC1 +NUDT15 +IMP3 +TMEM100 +PHF10 +VPS53 +PGM2 +FGGY +QRSL1 +ZNF654 +CWF19L1 +TMEM140 +LRRC36 +MCOLN3 +UBE2W +RBM41 +C4orf19 +TMEM40 +RHOT1 +ACOXL +BRF2 +PPP6R3 +UEVLD +FBXW7 +KLHL26 +TBC1D19 +CCDC91 +RNF121 +BRIX1 +PI4K2B +OLAH +GIMAP4 +SPTLC3 +DDX19A +ZNF444 +RFK +CPPED1 +TMEM144 +SLC29A3 +RSAD1 +AP5S1 +TMA16 +MIS18BP1 +TMEM74B +C5orf22 +LARP6 +ABCF3 +UFSP2 +AGPAT5 +LIN7C +RNLS +MNS1 +BLOC1S4 +ACER3 +DRAM1 +SYNJ2BP +SLC39A9 +NIPSNAP3B +FBXL8 +SHFL +WDR33 +GIMAP5 +LSG1 +STRBP +SLC35C1 +PLCXD1 +ZGRF1 +TCP11L1 +ABHD10 +CHDH +STK32B +COPRS +LAPTM4B +HJURP +SLC22A15 +TBC1D2 +STYK1 +PI4K2A +TMEM63B +HEMGN +IMPACT +TMEM176A +LGR4 +PIDD1 +TMCO6 +LRRC59 +MCM10 +PRO2268 +NCBP3 +ZNF331 +SIRPG +GPALPP1 +YOD1 +AP1AR +STRADB +CAMK2N1 +CSGALNACT2 +DNAJA4 +NDUFAF7 +PARL +ETNK1 +CHST12 +HES6 +TRPV6 +TNFRSF19 +NOP10 +MACROH2A2 +GPRC5D +SLC35E3 +BATF3 +DDX43 +SAGE1 +SMPD3 +ASIC4 +ELAC1 +TRIM36 +DHTKD1 +FEM1A +PIP4P2 +SVOP +ELMOD1 +SLC30A10 +MAML3 +CDCA7L +IL17RB +RBM38 +ZNF823 +SOX6 +KLK15 +ENOSF1 +PLXNA3 +HAUS7 +CDC42BPG +ZNF821 +DNAH3 +GALNT10 +CNOT11 +FOXRED1 +CDV3 +STAB2 +NAGK +SUPT20H +KIF27 +CHRNA9 +UBE2Q1 +MIOX +MED29 +BMP2K +VEZT +OTUD5 +ZCCHC8 +RNPC3 +ITLN1 +DDX60 +CDKN2AIP +TENT5A +CARMIL1 +KIF21A +PPP1R9A +ANKRD10 +ZNF280C +VPS50 +OTUB1 +FERMT1 +MTMR8 +KIF16B +PRR5 +ASAP3 +TASP1 +DOCK10 +STAP2 +TRMT1 +TTC27 +THUMPD1 +POMGNT1 +ZDHHC7 +AMBRA1 +SMPD4 +ZNF407 +PNRC2 +SLC39A4 +LRRC40 +G2E3 +TBC1D22B +KRBOX4 +DEPDC1 +CHD7 +SYBU +FLVCR2 +BTBD2 +OSGEP +LYAR +RAB20 +PIGV +NHP2 +SLC48A1 +BCAS4 +TMEM127 +NLRP2 +INTS8 +ZNF692 +RNF126 +ZNF416 +PRPF40A +DDX27 +HIF1AN +ZNF446 +CDC37L1 +URGCP +NPLOC4 +DENND4C +GPATCH2L +MFN1 +PEX26 +PPP4R3A +NBPF1 +SLC30A6 +IWS1 +LIMS2 +RUFY2 +SCYL2 +KANSL3 +RABL6 +MREG +TRMU +YEATS2 +PACS1 +FRMD4A +LUC7L +KDM4D +NSUN5 +RBM22 +VAC14 +RADIL +IARS2 +MAP7D1 +ARHGEF40 +YJU2 +POLR3B +CCDC88A +IPO9 +NDC1 +NECAP2 +KBTBD4 +FAR2 +ZNF334 +TENM3 +DOK4 +LMBR1L +WDR11 +POLR3E +SLF2 +TSR1 +IQCC +CEP72 +ASF1B +INTS13 +BTBD7 +N4BP2 +ATF7IP +FAM222B +C1orf112 +HHAT +ZFP64 +DNAJC11 +VPS35 +ARFGAP1 +NAXD +ENAH +EDEM2 +PARVA +CHFR +COA1 +AP5M1 +NUP133 +CNDP2 +CCAR1 +AGK +TMEM184C +SEPTIN11 +OGDHL +TMEM30A +CDK5RAP2 +INTS9 +UGGT2 +RCOR3 +WDR12 +DHX32 +TTC17 +ZNF701 +EXOC1 +IFT122 +INAVA +H2AJ +NGLY1 +ZNF83 +EXOC2 +PRR11 +TBC1D23 +TDP1 +SAYSD1 +MBD5 +ZNF839 +CFAP44 +ERMARD +RIOK2 +CMTR2 +MCTP2 +FGD6 +ZNF415 +TXLNG +LMBRD1 +DEPDC1B +CSGALNACT1 +LRIF1 +MINDY1 +DDX28 +PCID2 +MBNL3 +METTL2B +CACNA2D3 +SCN3B +IL26 +DCP1A +ADAP2 +LRP2BP +HR +ST6GALNAC1 +TRERF1 +FOXJ2 +ADCY10 +SPATA7 +UTP6 +BDP1 +TSNAXIP1 +DOK5 +KDM3A +RNF130 +ALLC +VPS11 +PAG1 +PECR +DCAF6 +SELENOS +GLT8D1 +EMC3 +CAND1 +UBAP2 +CENPJ +EAPP +CENPN +EAF2 +WWC3 +ARHGAP15 +PPP2R2D +BRK1 +ITFG2 +CISD1 +PLGRKT +USE1 +PSENEN +TEX2 +ZC3H15 +ACOT13 +KIZ +TMEM165 +BEX1 +ACTR10 +DBNDD2 +ECHDC1 +TMEM126B +SLC22A11 +HDAC8 +ASH1L +ZNG1A +PBK +GSDMB +GABRQ +WSB2 +LMO3 +ZKSCAN7 +GOLGA6B +GPRC5C +LENEP +MYNN +ZNF395 +DEFB103B +MESP1 +UNC45A +ZNF302 +THSD1 +ACSS2 +KMT2E +RNF114 +ZC4H2 +CMAS +ANGPTL8 +BIN3 +APOBR +ERBIN +LANCL2 +NXT2 +CTTNBP2NL +RCC2 +NKRF +INKA2 +DMAP1 +MYO5C +APOM +ZMAT5 +LIN37 +KLHL9 +SULF2 +SEPTIN3 +AJAP1 +NDUFA12 +NSFL1C +RAB5IF +GNG12 +BAIAP2L1 +SLC25A40 +BCAP29 +SLC50A1 +KLHL7 +CFC1 +NXF3 +NXF2 +MYDGF +SMG9 +BARX1 +PDGFC +ALG1 +UBFD1 +KLHL4 +TMEM234 +PCDHGC5 +PCDHGC4 +PCDHGB7 +PCDHGB6 +PCDHGB5 +PCDHGB3 +PCDHGB2 +PCDHGB1 +PCDHGA11 +PCDHGA10 +PCDHGA9 +PCDHGA7 +PCDHGA6 +PCDHGA5 +PCDHGA4 +PCDHGA3 +PCDHGA2 +PCDHGA1 +PCDHB15 +PCDHB14 +PCDHB13 +PCDHB12 +PCDHB11 +PCDHB10 +PCDHB9 +PCDHB8 +PCDHB7 +PCDHB6 +PCDHB4 +PCDHB3 +PCDHB2 +PCDHAC2 +PCDHAC1 +PCDHA13 +PCDHA12 +PCDHA11 +PCDHA10 +PCDHA8 +PCDHA7 +PCDHA6 +PCDHA5 +PCDHA4 +PCDHA3 +PCDHA2 +PCDHA1 +TEX15 +TEX14 +TEX13B +TEX13A +TEX12 +TEX11 +NSMCE3 +RNF17 +STK31 +TDRD1 +GSDMC +DNAH7 +ANKH +MOSPD1 +MTFR1L +LMOD3 +ATOSA +SUSD2 +ZNF253 +KIAA1217 +BTNL2 +C21orf62 +MRAP +YLPM1 +CRTAM +RNF20 +TMX4 +SERTAD4 +MEPCE +CTNNBL1 +GPCPD1 +LRRC8A +CPXM1 +KYAT3 +IRGC +WDR45B +BEX4 +GKN1 +PARD3 +IL36G +SLC7A10 +TRPV5 +ANKRD7 +METTL3 +PRMT8 +PPAN +CABP5 +LTB4R2 +CTPS2 +RPRM +CCL28 +EIF4ENIF1 +KCNQ5 +DNAJC12 +MMP26 +CHST7 +CYP26B1 +ERO1B +SLC2A9 +DIABLO +INPP5E +ASAH2 +BCCIP +EIF5A2 +TMPRSS4 +CLDND1 +TWNK +NPDC1 +POLE4 +OR2S2 +TRIM39 +KCNK13 +KCNK12 +PANX2 +MUC13 +SUCNR1 +AKIP1 +C11orf16 +TMEM9B +NRIP3 +ASCL3 +SAR1A +CFAP298 +JPH1 +RETN +SLC2A4RG +BARHL1 +FMN2 +ZC3HAV1 +IFNK +SLAMF8 +GPR137 +SPHK2 +TCEAL7 +GRIPAP1 +EMC7 +RAD18 +CELF4 +CDC42SE1 +FSTL5 +UGGT1 +KCMF1 +TM9SF3 +MDM1 +LGALS14 +TCIM +UBQLN4 +AGPAT3 +AGPAT4 +DPYSL5 +WRNIP1 +BDH2 +ANKS1B +TMEM167B +NDUFA4L2 +PNO1 +PAPOLB +SH3GLB2 +C15orf39 +THAP10 +SPIRE1 +STARD7 +MAP3K7CL +IFT46 +C1GALT1 +OTOR +EXOSC5 +SMARCAD1 +MEIS3 +DHX33 +SEMA3G +MCCC1 +NMUR2 +PAK6 +LXN +NCLN +GPR108 +SPPL2B +FEM1C +DUS3L +CA10 +SMCO4 +CCDC177 +PMEPA1 +BMAL2 +DUSP22 +HMCES +CMC2 +ENY2 +OLFML3 +MRPS22 +EMSY +MFF +SDR39U1 +XAB2 +SMYD2 +C5orf15 +PRTFDC1 +NT5M +NIT2 +MEPE +LHX9 +OTUD7B +SHD +RGMA +WDR93 +PARP6 +C14orf132 +ATXN7L3 +CEACAM19 +FAM20C +STOX2 +PRDM8 +PRDM9 +PRDM10 +PRDM11 +POGLUT1 +PSMG2 +ADPRM +DTWD1 +BBX +CDC42SE2 +KIF15 +TOMM22 +CHPT1 +TULP4 +SLC12A9 +COQ8A +CTNNBIP1 +ADAMTS9 +SDHAF3 +YAE1 +CCDC47 +ACKR3 +CABP4 +AKR1B10 +COQ9 +CCNL1 +CIAPIN1 +VPS35L +PDXP +SLC17A7 +RSRP1 +ANKMY2 +RARS2 +TWSG1 +HRES2 +PLSCR2 +PLSCR3 +UTP3 +CHRNA10 +DAZ3 +DAZ2 +TBX20 +PCBP4 +DDX24 +KNL1 +SLC17A6 +AGTRAP +PLSCR4 +ENTPD7 +CASS4 +PCNP +TRIM49 +CPA6 +PITHD1 +RPGRIP1 +PARP11 +AVEN +ANO2 +C12orf4 +TIGAR +PNPLA2 +CYSLTR2 +NAT14 +PDSS2 +REXO4 +PLAAT1 +RAB25 +TRPC7 +PGLYRP4 +ZNF695 +INTS12 +CAMK1D +EPPIN +GOPC +LPAR5 +NUP107 +CD248 +PLXDC1 +CD177 +RHBG +LYRM4 +MRPL47 +ATP13A1 +CHMP1B +MAN1C1 +DAZ4 +APMAP +RGL3 +RNPEPL1 +RTN4 +ADCK1 +PAK5 +LDAF1 +SCYL3 +RALGAPB +LYRM1 +SMIM8 +LYZL6 +SLURP1 +SLC44A2 +SMURF1 +TMEM63C +PHTF2 +JPH2 +TRIM54 +PELI2 +PELI1 +GJC2 +SALL4 +ASPHD2 +ZNFX1 +DOLPP1 +CAMK1G +CORO1B +VARS2 +ZMIZ1 +KIAA1191 +ACTR3B +SLC39A10 +ANKRD50 +FAM219B +NIPAL3 +RALGAPA2 +THOC2 +ADAMTSL3 +DENND11 +SELENON +VN1R1 +MCOLN1 +ATP10A +ATP8B2 +ATP10D +ZNF248 +SLC45A4 +ADGRG6 +SPRYD7 +CEMIP +THAP11 +VANGL2 +TTC7A +ARFGEF3 +ERGIC1 +PPP4R3B +NHSL1 +LYRM2 +SMAGP +SNX14 +ZNF630 +SLC4A10 +KIR2DL5A +KAT14 +PBXIP1 +CBX8 +RCN3 +ZNF286A +ZNF287 +SENP7 +JPH3 +ZNF304 +TTYH1 +GJD2 +AICDA +MRS2 +RHOJ +CLTRN +CLK4 +S100A14 +RAB22A +CYP20A1 +SPC25 +ABHD6 +NMRAL1 +LRTM1 +MIF4GD +SCYL1 +AS3MT +TMIGD3 +RHBDD2 +C3orf14 +WDR18 +SLC24A3 +NDRG3 +NDRG2 +BIRC6 +PLEKHG5 +TENM2 +GALNT16 +DSCAML1 +REXO1 +KIAA1143 +TMCC3 +GATAD2B +PPM1H +ISY1 +MYORG +AMIGO1 +STRIP2 +TBC1D24 +SCAF4 +HHATL +SLC12A5 +PNMA8B +LRRC47 +ERMN +CNOT6 +ZNF512B +ZNF490 +PLEKHH1 +GRAMD1B +SHROOM4 +USP31 +PRR12 +PLEKHG1 +KIAA1210 +CRACD +RNF150 +NLN +ESYT2 +ODF2L +AHRR +ARID1B +HEG1 +RIMKLB +NWD2 +MRTFB +LRFN2 +KIDINS220 +CFAP92 +NLGN4X +MTA3 +AARS2 +MAVS +ZNF608 +INTS2 +MTUS1 +XPO5 +COG6 +GPR158 +CASKIN2 +ARHGAP31 +SERINC1 +STARD9 +HECW2 +RPTOR +SRGAP1 +NYNRIN +CASKIN1 +PCDH19 +KCTD16 +RTL9 +CGN +HACE1 +NUFIP2 +TBC1D14 +MIB1 +ELAPOR1 +KIAA1328 +SORCS2 +ALPK3 +WDR35 +DISP3 +ZNF398 +KLHL42 +TXNDC16 +CC2D2A +PDP2 +ZNF624 +IGSF9 +TAOK1 +NCEH1 +MICAL3 +LRRC7 +NLGN2 +SEMA6A +USP35 +STAMBPL1 +IFT80 +ARRDC3 +CEP126 +KLHL8 +KLHL14 +ZNF319 +SIPA1L2 +ARHGAP20 +TRMT5 +CARNS1 +DOCK6 +ZNF471 +MARCHF4 +PCDH10 +KIF17 +CCDC191 +UNC79 +FAM135A +PREX1 +KCNT1 +TMEM181 +ARHGAP21 +CRAMP1 +SYT13 +CFAP97 +RIC1 +WDFY1 +MRTFA +ZNF687 +EBF4 +HOMEZ +PDZD4 +BEGAIN +BAHCC1 +WDR48 +FNIP2 +USP36 +TRMT9B +PITPNM2 +SLAIN2 +JCAD +DIP2B +RANBP10 +ISLR2 +FAM234B +RELCH +ZNF492 +TSHZ3 +VPS18 +SHROOM3 +STIM2 +ZBTB2 +LRFN1 +ZFAT +NYAP2 +KLHL1 +DPP10 +SH3RF1 +LRCH2 +LRRN1 +EP400 +ARHGAP23 +CCDC146 +COL20A1 +ZSWIM5 +MYH7B +POGK +USP28 +DHX37 +KIAA1522 +PHF12 +CIP2A +UVSSA +GRAMD1A +HCN3 +CALCOCO1 +ZBTB4 +PHRF1 +CAMSAP3 +USP29 +PLEKHA4 +RDH14 +FBRSL1 +EPB41L5 +KIAA1549 +BEND3 +RNF213 +ZFP14 +GPAM +ALS2 +CHD8 +ZDBF2 +ZBTB26 +CACHD1 +VAT1L +ZSWIM6 +LRRC4C +TNRC6C +KIAA1586 +MAGEE1 +ZNF317 +USP37 +DDX55 +FANCM +SHTN1 +CPNE5 +FHIP2A +NCKAP5L +CWC22 +GBA2 +WDFY4 +DENND1A +MEAK7 +MIER1 +SLC7A14 +KIAA1614 +ZNF529 +SFMBT2 +SEMA4G +PRX +PCDHB16 +PPP4R4 +ANO8 +GPR107 +METTL14 +IGDCC4 +EPG5 +NCOA5 +WDR19 +ANKRD36B +SPTBN4 +ZFYVE28 +GBA3 +SCUBE2 +TRIB3 +ANKRA2 +RBAK +MARK4 +SUGP1 +BRINP2 +GATAD1 +RAB40C +HES4 +POLD4 +CCAR2 +HAMP +G6PC2 +LSM2 +CCNB1IP1 +CCDC181 +GRHL3 +SLAMF7 +HMHB1 +RAP2C +C6orf47 +CATSPERG +ZP4 +KRTAP5-8 +CYP4F11 +SLC4A5 +ZNF410 +CADM3 +SLC46A2 +MUC3B +PTBP2 +NGB +NEUROD4 +WFDC1 +CTDSP1 +CXCL16 +SQOR +PLEKHB1 +MS4A7 +TP53INP2 +SRPRB +ENOPH1 +RHOU +NLRC4 +TRAPPC1 +ZBED5 +CREBZF +PCTP +ABHD17C +RPRD1B +ZNF71 +ZNF77 +INIP +JAM2 +OVOL2 +LY6G5B +PRUNE1 +MYL7 +ZNF462 +ZNF250 +OPRPN +ARHGAP22 +OSTC +SCAF1 +KMT2C +CACTIN +PRODH2 +DNASE2B +DLGAP3 +EPS15L1 +SELENOK +SINHCAF +RBM25 +DMRT3 +WIZ +MID1IP1 +ABRACL +RRAGD +MYOZ1 +LY6G6D +PRM3 +SNX6 +MPP4 +IL22RA1 +PGAP6 +IL21 +CARD18 +ENPP5 +HIVEP3 +EVA1C +ACE2 +TLNRD1 +NTN4 +CACNG8 +CACNG7 +CACNG6 +UBL5 +SIGIRR +PRDM12 +PRDM13 +PLEKHA1 +PLEKHA2 +HRH4 +TRPV4 +SCPEP1 +SENP2 +ALOXE3 +GNB4 +ZNF350 +KLHL12 +RXFP1 +PBOV1 +LGR6 +TMEM35A +AFAP1 +GPBP1L1 +MYG1 +FAM3A +AVPI1 +TSKS +SLC25A19 +EDA2R +EXOC4 +TGIF2 +CDH26 +BACH2 +ELOVL5 +SLC5A7 +HAPLN2 +SAV1 +TRMT11 +MRPS35 +APOBEC3G +PPCDC +NIF3L1 +CCDC90B +FASTKD5 +CCDC81 +HPSE2 +AASDHPPT +NYX +AGBL5 +LDAH +ELAC2 +ALX4 +GUF1 +SPCS3 +NAA35 +RINT1 +SCOC +KCNK15 +DHX35 +RIC8A +MIIP +ATG101 +PROK2 +PAPPA2 +CELF6 +EEFSEC +CELF5 +FKBP10 +SMAP1 +TRAPPC11 +ZFAND3 +C14orf93 +SLC22A23 +BCORL1 +CELA2A +SRR +BCAN +ABHD4 +MRPL17 +PKNOX2 +FAM204A +RNF123 +THADA +UBE2O +VIPAS39 +PIEZO2 +HEATR6 +SH2D4A +NSUN3 +FAM111A +DUSP21 +MANBAL +GPATCH3 +NAPB +SLC17A9 +BLOC1S5 +ELMO2 +GALNT11 +FAM200C +CHTF18 +TNN +CIDEC +ZNF335 +ANKEF1 +CHP2 +XPNPEP3 +MRPS14 +STEEP1 +MCUR1 +ZNF667 +PCIF1 +FAM217B +GPSM3 +NECAB3 +FKBPL +DMRTC2 +DMRTC1 +DMRTB1 +DMRTA2 +DMRTA1 +CLSPN +TP53AIP1 +KIF13A +NEUROG2 +NEUROD6 +PRDM16 +PRDM15 +PRDM14 +FIGNL1 +ANO3 +MYO1G +TSPYL2 +RBM26 +PRSS22 +OXCT2 +PERP +MMP27 +NPAS3 +CDH23 +C19orf33 +LHPP +SLC28A3 +RBKS +PBLD +GOLPH3 +CLSTN2 +MCCC2 +SNX16 +GAL3ST2 +POPDC2 +SAMSN1 +SMOC1 +SMOC2 +GFRA4 +EPB41L4A +PARVG +ELSPBP1 +LRRC4 +TNMD +CENPK +NPFFR1 +RTP4 +CRLF2 +MAGEF1 +NPVF +MOAP1 +TMBIM1 +VSIR +SLC39A8 +DUS1L +RRAGC +FN3K +ADGRL4 +NOD2 +TINAGL1 +LIN7B +XYLT1 +XYLT2 +IFIH1 +ABCG4 +RBSN +PDF +KIF9 +C17orf75 +NCAPG +ERAP2 +NECAB1 +CARD9 +OSGEPL1 +DPEP2 +P3H1 +DPEP3 +EDDM3B +IRF2BPL +POPDC3 +MMS19 +LHX5 +DNAJC1 +TFB2M +SEMA4A +PJA1 +STRA6 +ROBO3 +TOR3A +MLST8 +HERPUD2 +ATL2 +MS4A6A +MS4A5 +PDLIM2 +ABCG5 +ABCG8 +TENT4B +ARHGEF28 +RAB17 +RHBDF1 +ZSCAN31 +NOC3L +FBRS +RNF25 +SOX17 +NSD1 +COP1 +LMBR1 +XPO4 +NFKBIZ +ARHGAP9 +HS1BP3 +AZI2 +HIF3A +NXN +SIL1 +IKZF4 +IKZF5 +CHST8 +MMP25 +GREM2 +ZMAT3 +GMCL1 +GMCL2 +ZNF106 +PALS1 +HHIP +AKTIP +CDH24 +CDH22 +RGS18 +GALNT17 +KLHL25 +ARAP3 +GZF1 +TMEM267 +TMEM168 +MTMR14 +SUSD1 +DCLRE1C +ATG3 +INF2 +POLR1E +SUDS3 +TTC31 +CIAO3 +ZDHHC6 +PCNX4 +ACTR6 +MRPS25 +NOM1 +DNAI2 +CSMD1 +TPSB2 +CPEB1 +TEKT3 +ALDH8A1 +NDST4 +CLEC7A +GPR135 +TSPY2 +MOSPD3 +GIGYF1 +PLA2G2F +VPS16 +EBF2 +MFSD14A +SPANXD +CSRNP1 +SPANXC +ANAPC1 +GORASP1 +CTAGE1 +TMPRSS3 +COPS7B +NUCKS1 +HS3ST6 +PDIA2 +UNKL +WDR13 +SMAP2 +METTL17 +ACBD3 +MFSD1 +PLPPR2 +SMURF2 +CCDC136 +SMYD3 +RUSF1 +ATPAF1 +MTARC1 +TNS3 +FHIP2B +PARP12 +GAREM1 +ZNF574 +CREB3L2 +S100PBP +IPPK +MEAF6 +CCDC14 +ILRUN +ENGASE +PCED1A +CFAP68 +RMND5B +FNDC3B +MTHFSD +MICAL1 +CERK +AEN +RBM15 +CRTC3 +GINS3 +TBC1D15 +EPS8L2 +LMF1 +EXO5 +IFT22 +CEP85 +DDX31 +RMND5A +DEPTOR +IQCH +EFCAB6 +ARV1 +NMNAT1 +P2RY12 +IL25 +CYP3A43 +ELOVL1 +KLC2 +FNDC4 +FBXL17 +PORCN +GNPNAT1 +ISL2 +MARCHF7 +SPATA20 +YTHDC2 +SLC13A3 +ETNPPL +TUT1 +AIDA +USP46 +NIBAN2 +VWA1 +PLEKHG2 +DCLRE1B +NABP1 +ARMCX5 +METTL4 +RFX7 +CDCP1 +PCDH20 +PAPOLG +C12orf43 +LPIN3 +RANBP17 +AGXT2 +BCL11B +CASD1 +LRRC19 +SLC30A5 +CCDC71 +RASAL3 +TTC23 +MRPL14 +NT5DC2 +CENPH +MRPS26 +MRPS24 +MRPS15 +MRPS11 +MRPS9 +MRPS6 +MRPS5 +MRPL41 +MRPL40 +MRPL38 +MRPL36 +MRPL34 +MRPL32 +MRPL11 +MRPL9 +MRPL1 +NDRG4 +SLC26A6 +PINK1 +REEP1 +GPBP1 +ACD +RAPH1 +CDK15 +TMEM237 +NBEAL1 +RTN4R +MRPL44 +VPS33A +NOL6 +TMEM135 +JMJD4 +KRI1 +MARCKSL1 +UPF3B +UPF3A +RSRC2 +PRAMEF1 +PRAMEF2 +INTS3 +SOWAHC +WNK1 +PCDH15 +NADK +ZFP69B +SPATS2 +ZSWIM4 +CPLANE1 +ZNF649 +MPPE1 +COA7 +PYCR3 +UBE2Z +C8orf33 +WNK4 +WNK3 +WNK2 +OR2B8P +STK33 +PLEKHA3 +PHACTR4 +BRD9 +CAPRIN2 +ZSCAN18 +GRAMD2B +AACS +ZBTB10 +KCTD14 +ZNF747 +DLK2 +ANTKMT +FUNDC2 +DDRGK1 +MRPS34 +RASL11B +ZFTA +LRRC61 +TMEM108 +CYP4F12 +LYNX1 +CHID1 +TRAK2 +SLC2A11 +MTMR9 +BOLL +DUSP26 +CRELD1 +MRPL57 +COLEC11 +OTUB2 +PCYOX1L +YIPF2 +PRR14 +HROB +CYREN +GDAP1L1 +LRFN4 +AUNIP +VKORC1 +TRIR +MIS12 +CUEDC2 +SCNM1 +METRN +DBNDD1 +SLX1B +DDX50 +CAMKV +DDA1 +GGCT +GID4 +CENPM +C7orf25 +TMEM106C +NUP37 +SMIM2 +FNDC11 +AHNAK +ZNF655 +SPATA5L1 +PDCL3 +ERI3 +INTS15 +NABP2 +KXD1 +PVRIG +ZFYVE21 +DDX54 +TMEM38A +TSEN34 +KCTD15 +SECISBP2 +NOC4L +ALG8 +TRPM8 +PRRG4 +PRRG3 +ASPSCR1 +TMEM223 +ATG9A +METTL16 +FTO +POGLUT2 +ELOVL6 +FASTKD3 +TMEM109 +C2orf49 +DSCC1 +DCTPP1 +C1orf50 +CCDC86 +LBHD1 +MLPH +WDR77 +SLC25A23 +SMIM7 +ALG12 +ZNF426 +TMUB2 +TRAPPC6A +METTL22 +CARD14 +CHAC1 +BBLN +CSTPP1 +TRIM48 +C1orf116 +TAF1D +RNF26 +MAPKAP1 +DHX58 +NDUFAF5 +TMEM185B +APOO +RETREG2 +DERL1 +CCDC28B +PHF23 +MBOAT7 +PPDPF +CHCHD7 +FKRP +MMP28 +ZSCAN5A +FA2H +GDPD3 +DHRS11 +TNIP2 +PLEKHF1 +MFSD11 +GNPTAB +NOL12 +TMEM243 +LENG1 +LILRA6 +C1orf35 +PRR15L +RBM42 +CENPO +BRME1 +CRELD2 +ZNF343 +FBXL15 +ZNF576 +THTPA +EFHD2 +TTPAL +BRCC3 +FSD1 +TMEM43 +IRX6 +IRX3 +IRX1 +THOC6 +ZNF557 +MMEL1 +DCAF10 +OR13A1 +OR5H6 +OR52E1 +OR5H2 +OR4K5 +OR51G1 +OR11H2 +OR51B4 +OR51B2 +OR4C5 +CPLANE2 +ZXDC +BHLHE41 +HMGN5 +FCRL2 +B3GNT4 +BCL2L14 +NOX5 +GLB1L +KREMEN2 +ZBED2 +LRFN3 +CYBC1 +HAUS3 +LRRC2 +FYCO1 +BIRC7 +WDR25 +PAGR1 +ULBP3 +OR52N1 +OR5AL1 +OR10G6 +OR4F5 +OR2A4 +OR4K1 +OR6J1 +RIPOR1 +MAIP1 +NKAIN1 +GCC1 +ATP13A3 +TTC13 +EPS8L3 +ABHD8 +NKAP +CDC73 +SLC52A2 +SPAG16 +TMEM231 +CORO7 +CHPF +CARS2 +RNF128 +MRPL24 +ARMH3 +MUL1 +SAP130 +OBI1 +CEP97 +TCTN1 +ADIPOR2 +CERS4 +PGBD5 +FAM118B +RIC3 +VCPKMT +ACSS3 +NAA16 +TANGO6 +CCNJL +HMBOX1 +RNASEH2B +SNRNP25 +GALNT14 +ARMT1 +NDNF +TNFAIP8L2 +OGFRL1 +SH3TC2 +OCEL1 +C1orf54 +EFL1 +FAM184A +FAT4 +SCRN3 +CCDC121 +ARMC7 +TMEM53 +ROGDI +ARSJ +CHMP6 +SRD5A3 +CLXN +PANK3 +AKIRIN1 +MCPH1 +MAP7D3 +USB1 +RHBDF2 +TMEM204 +HECTD3 +BEND5 +RPAP3 +ARHGAP10 +DYNC2H1 +PPP1R3B +NEIL1 +HSPBAP1 +ICE2 +DHX40 +PLEKHF2 +PARP8 +C3orf52 +TUT7 +NLRX1 +FN3KRP +ZNF329 +VEPH1 +FASTKD1 +OGFOD2 +SMC6 +VTCN1 +RTL10 +CENPU +ZDHHC14 +MSANTD2 +SAP30L +STEAP4 +GAL3ST4 +QTRT2 +ZNF322 +YRDC +MANEA +GALNT12 +ZC2HC1C +RIOX1 +ZMAT4 +ZYG11B +OGFOD3 +C11orf80 +LRRK1 +PRKRIP1 +NOL9 +COLGALT1 +MORC4 +IPO4 +GTDC1 +IGFLR1 +CCDC51 +NPEPL1 +PPCS +TBL1XR1 +AAGAB +VPS37B +ANKRD55 +SUV39H2 +ZNF768 +THAP9 +WDR59 +LIN28A +PALB2 +SH3D21 +NSUN7 +NARS2 +E2F8 +KCTD17 +TBC1D17 +TEFM +BBS10 +TTLL7 +ZBBX +CCDC7 +DIPK2B +ZNF419 +CLIP4 +ECHDC3 +ADGB +LMAN1L +ZNF385D +SLC25A22 +ZFAND1 +SNIP1 +ASB13 +ZNF750 +DHRS12 +ZNF668 +GEMIN7 +C1orf115 +ISOC2 +ELMO3 +KATNBL1 +TXNDC15 +MCTP1 +GRTP1 +ZFHX4 +ACBD4 +MICALL2 +CCDC82 +IQCA1 +LRRC31 +SUGCT +MYH14 +RERGL +KLHL36 +ZNF665 +CLMN +FBXO31 +GSDMD +SPRING1 +ALG9 +ZNF408 +ARMC5 +UGT2A3 +CARF +SHCBP1 +HHIPL2 +HPS6 +VASH2 +GSTCD +TTC21B +PTCD2 +SLTM +MMRN2 +EHMT1 +AGMAT +NIPAL2 +TLE6 +MOB3B +ZNF552 +DNAI4 +CATSPERB +ARHGAP28 +CAMKMT +EFCC1 +CLMP +METTL8 +NAA40 +ZMYM1 +KDM8 +QSER1 +GEMIN6 +PEAK1 +LONRF3 +PIP4K2C +TMC5 +CCDC102B +NHEJ1 +AGBL2 +ZBTB3 +FAM124B +ZDHHC11 +RNF122 +CFAP69 +MFSD13A +CSPP1 +NHERF4 +TLCD3A +EPHX3 +TM4SF20 +SNX22 +NEK11 +TUBAL3 +ZNF669 +RBFA +JHY +TREML2 +BORA +TCTN2 +ALG13 +CPSF7 +BAALC +RPAP2 +CBLL1 +NUDT18 +RABEP2 +THSD4 +UBA5 +DCAKD +CCDC134 +ZC3H14 +PODNL1 +MAP9 +HDAC11 +CAAP1 +PLBD1 +LPCAT1 +RIN3 +ZNF671 +MCMBP +GGNBP2 +ZNF672 +ATP8B4 +THNSL1 +RPP21 +ZNF613 +PRR5L +CYBRD1 +NUP85 +NAA60 +TMC7 +MORN1 +BTNL8 +PYROXD1 +ACTR5 +ATAD5 +MAGIX +SETD6 +MAB21L4 +TCEAL4 +MRM1 +NANOG +ADM2 +SPEF2 +FAM110D +MAP6D1 +DOK3 +TNIP3 +KIAA0319L +SYNPO2L +COQ8B +CCNP +CNTNAP3 +SLC35E1 +ZNF696 +L2HGDH +C10orf95 +DHDDS +PLPPR3 +PLEKHS1 +SYNDIG1 +NOL10 +PDZD7 +ERMP1 +PAQR6 +DENND1C +CEP76 +JADE1 +DENND2D +DNAJC22 +SCD5 +WDR76 +ATAT1 +WLS +ZNF442 +CPED1 +GRHL2 +TRMT2B +DSN1 +FRMD1 +DNAJB14 +POF1B +SVEP1 +TTC26 +PLEKHH3 +STN1 +ELOVL7 +ANKRD53 +GREB1L +PCNX2 +ESRP2 +DOCK5 +TRAPPC13 +C10orf88 +TMEM156 +RMI1 +PSME3IP1 +PHC3 +MINDY3 +WWC2 +DGLUCY +NAA25 +UBTD1 +FOXRED2 +TMEM62 +MYO15B +NRSN2 +SLC8B1 +PANK2 +FBXL18 +SEMA6D +ZNF556 +CSRNP3 +TRPM3 +GPR157 +PGAP1 +LRRTM4 +ATF7IP2 +DCAF17 +ADAMTS20 +CCDC15 +TUBA4B +ZNF606 +MZT2B +ZFP2 +ZNF614 +BICC1 +BAIAP2L2 +ARL14 +PIF1 +MAP3K19 +VCPIP1 +CCDC33 +BBOF1 +TRIM46 +CCDC170 +LRRC8E +MROH9 +RPF1 +ZNF703 +PTGES2 +SIKE1 +FRAS1 +THOC7 +UXS1 +SLC66A2 +ZC3H12A +ASRGL1 +CENPT +EDC3 +NAA15 +CWH43 +PGGHG +PRR36 +ABHD18 +MOGAT2 +CTC1 +IFT74 +DBF4B +SPSB1 +MYCT1 +TEDC2 +MYO19 +RUBCNL +CEP290 +TTI2 +TMEM134 +TMEM254 +RNF34 +MUS81 +FUZ +HKDC1 +FBXO11 +CHD9 +FHOD3 +OPA3 +SPG11 +PROSER1 +ARMC9 +CCDC92 +TM2D3 +ALPK1 +CFAP43 +NAA50 +COQ10B +ACSF2 +TARS2 +RAB11FIP1 +NUBPL +PAAF1 +ORAI2 +RUFY1 +TASL +WDR26 +FAAP100 +PIGZ +ELL3 +PREX2 +CEP63 +SLC35F5 +ATOSB +EFHC2 +PHAF1 +TRIM45 +ZNF430 +EDEM3 +HSD3B7 +ITPKC +GRPEL1 +SCUBE1 +CDK5RAP3 +MTERF2 +PLEKHO2 +EFHD1 +WDCP +TRABD +MED28 +FLAD1 +SPHKAP +PDGFD +KLHL15 +TET1 +LRRC27 +EPC1 +CPEB4 +PPP1R2C +ZKSCAN3 +GKAP1 +CXXC4 +SP6 +CEP70 +CCDC68 +PUS1 +ABTB1 +WNT10A +ULBP2 +ULBP1 +DNAJC5 +ADAM33 +KCNIP4 +WDR82 +PABPC1L +PNPLA3 +BPIFB2 +TRAF3IP3 +SEL1L2 +DCAF11 +ZSCAN16 +REEP4 +COASY +SKIC8 +TNKS2 +RNF39 +PDCD1LG2 +CD276 +UBXN6 +SLC19A3 +TSGA10 +AKNA +ESX1 +PBX4 +SLC35G2 +ACAD10 +SRCIN1 +IQCN +TTYH3 +ARHGAP39 +THSD7B +SLC44A4 +VWA7 +MPIG6B +LY6G6C +LY6G5C +PRR3 +THUMPD2 +TSEN2 +AARSD1 +TMEM121 +PRR7 +KHDC1 +ITIH5 +NDFIP1 +SPX +THAP7 +STARD5 +CPTP +LIMD2 +TMEM177 +B9D2 +CYB5B +ZNF34 +COL18A1 +INTS5 +CMIP +ASXL3 +CEP44 +ZNF436 +EEPD1 +DDHD1 +GPRASP3 +DUSP16 +ZFP91 +APOL6 +APOL5 +APOL4 +APOL3 +TAS1R2 +TAS1R1 +SH3BP5L +GRIP2 +KDM7A +SETD7 +LNPK +PRRT1 +EGFL8 +ILKAP +NPL +TMPRSS5 +GJA9 +TUBB1 +WNT5B +ZBP1 +SLC2A10 +KCNH6 +SLC25A32 +COLEC12 +CLPTM1L +OR5AC2 +OR11H1 +OR4F17 +OR4K15 +OR8J3 +OR8J2 +OR52P1 +OR51G2 +OR51E2 +OR4P4 +OR4C15 +OR4A5 +OR4A16 +OR4A15 +OR10W1 +OR2AE1 +OR4F16 +OR9H1P +OR6N2 +OR6K2 +OR2T7 +OR2L5 +OR2G3 +OR2G2 +OR2C3 +POLR2M +PTDSS2 +GPR63 +RSPH6A +SYNC +CFHR5 +DCSTAMP +HM13 +MOB2 +ITFG1 +SGPP1 +SLC38A1 +TMX1 +LRRC3 +GDPD5 +FBXO38 +TDRD3 +STMN4 +VOPP1 +CYRIA +RCC1L +YIPF5 +INTS14 +MAGED4B +FAM117A +TRIM11 +LMAN2L +C1orf21 +NDEL1 +CSRNP2 +TXNDC5 +ACTL8 +CLPB +PDRG1 +ANKRD13C +APOLD1 +YJU2B +GFOD2 +COL21A1 +PLA2G12A +CDADC1 +TRIM8 +URM1 +LBH +NECTIN4 +FIP1L1 +SNX27 +FAM83D +ANP32E +NIPA2 +TMEM163 +ACSBG2 +CAB39L +ITM2C +TSPAN14 +CDT1 +KAZALD1 +UNC93B1 +DEFB126 +DIAPH3 +SHCBP1L +TRMT1L +TSC22D4 +TSSK3 +MAP1LC3B +CCNL2 +VMP1 +C6orf62 +ISCA1 +REXO5 +AMN +OR5V1 +OR2B2 +DOCK8 +PPP1R14C +TRIM7 +NUAK2 +TIGD6 +RNF170 +ADAMTS12 +TLR10 +ADAMTS10 +SLCO5A1 +OR12D3 +NETO2 +NETO1 +SPACA1 +VANGL1 +TRIM56 +SBF2 +RNF146 +SPRY4 +ST6GALNAC5 +KRTAP1-3 +KRTAP1-1 +TMEM14B +SFXN3 +ZNF611 +MED25 +SHARPIN +KRTAP9-9 +KRTAP4-6 +KRTAP2-1 +ARPC5L +ISG20L2 +RAB1B +LAS1L +HYI +FAHD1 +QTRT1 +SLIRP +SLC25A28 +ABHD17A +CABLES2 +SEH1L +KIF18A +ZNF93 +HDHD3 +PCDH11Y +PITPNM3 +ELOVL3 +FCRL5 +FCRL4 +TCF7L1 +ADPGK +SH3BGRL3 +SF3B5 +INO80B +GSG1 +CCDC70 +SLC25A31 +PUS7L +PMFBP1 +DRC3 +ABHD11 +RAB33B +EMC6 +CDCA3 +MXD3 +APH1B +GLT8D2 +KATNAL2 +DOHH +ARHGAP24 +DDX59 +PUS3 +EPPK1 +SCRT1 +PLVAP +ODAD4 +CHST9 +NUF2 +FAM110A +AIF1L +DNAL1 +RTBDN +RILP +COG3 +UCK1 +GPR101 +TAAR8 +MFRP +TMUB1 +THAP2 +AKR1E2 +RASSF5 +NUDT12 +SOX7 +BCL2L12 +RTP3 +TMEM47 +CCM2 +GUCD1 +AMMECR1L +C18orf21 +C19orf12 +ZMIZ2 +C11orf68 +TEX101 +RAMAC +FAM107B +SELENOO +CCDC3 +FAM167A +SLC35G5 +DYNLRB2 +DYNLRB1 +TEKT1 +TLN2 +MS4A8 +PARP9 +SESN2 +CRISPLD1 +CD99L2 +HSDL1 +RPS6KL1 +RHNO1 +TRAPPC9 +SLC4A9 +CALN1 +SH3BGRL2 +JAM3 +FERMT3 +TRPT1 +NRIP2 +ESPN +CRISPLD2 +YPEL3 +TLCD3B +INHBE +RIOK1 +SLC25A18 +ATG10 +ITCH +H2AB3 +TFAP2D +MARVELD1 +GRWD1 +ZNF484 +L3MBTL2 +LONP2 +KRTAP4-12 +TAS1R3 +RBP5 +RBM4B +FRMD8 +ARMC10 +KCNK16 +USP26 +SYT15 +ESYT3 +SYT16 +SETDB2 +ROPN1L +ANGPTL6 +KLF16 +FSD1L +TMTC1 +ATAD3B +TAF3 +RSPH3 +TMEM120A +RAB34 +HMCN1 +GPR61 +TBC1D10A +BCO2 +MRO +TM2D2 +USHBP1 +CDCA7 +MIXL1 +TSPAN10 +SLC25A2 +PRSS27 +TTLL2 +FGFBP2 +WDR87 +SPATA9 +SNX25 +KCTD10 +SPATA16 +TTC29 +KRTAP1-5 +KRTAP3-1 +KRTAP3-2 +KRTAP9-2 +KRTAP9-3 +KRTAP9-8 +KRTAP17-1 +HASPIN +STARD3NL +STK40 +SPRTN +HDAC10 +RASSF4 +LRMDA +EIF2A +TATDN1 +TM2D1 +TSSK1B +IMMP2L +FCAMR +SLC4A11 +IFI27L2 +TSSK6 +SPNS1 +FAM234A +CCDC8 +NCALD +FAM172A +BRIP1 +CTTNBP2 +REG4 +KREMEN1 +TMPRSS13 +B3GNT5 +OBSCN +EMILIN2 +KATNAL1 +MND1 +WDR54 +ADGRV1 +RBM48 +MAGT1 +DTNBP1 +KIRREL2 +HDHD2 +TMEM222 +TEX35 +FHIP1B +SLC10A7 +PLEKHN1 +FAM186B +ARMC2 +HORMAD1 +MYCBPAP +QRICH2 +FSCB +TKTL2 +C3orf20 +KBTBD7 +ANKRD27 +ENKD1 +NSRP1 +ZRANB3 +RAB6C +FBXO30 +ARL6 +USP44 +SLC41A2 +C4orf17 +PCBD2 +PRAM1 +ZIC4 +PCGF6 +QRFPR +ZNF394 +LRRIQ1 +ATRIP +WDR75 +ACAD11 +CEP78 +USP42 +ZNRF3 +TOMM40L +UTP15 +SLC7A6OS +FAM161A +EVA1A +ABRAXAS1 +SYDE2 +ZNF644 +KAT8 +PPP1R1B +RNASEH2C +RPF2 +ARID5B +BLTP1 +GTF2IRD2 +ASCC2 +NLRC5 +C19orf44 +ANTXR1 +LOXL4 +POLR1B +ELMOD3 +SLA2 +SLC49A3 +CHD6 +MINDY4 +ZCCHC7 +TMEM164 +FAR1 +SLITRK6 +METTL25 +CIAO2A +SETD3 +USP48 +POMK +TXNDC2 +MEX3B +ANKRD20A1 +ZNF541 +TMEM117 +ZMYND12 +TBC1D3F +WDR24 +RGPD5 +SPATC1L +IQCG +NBPF3 +ZMYND15 +C2orf16 +DRC7 +LRRC8C +TRAF7 +MAF1 +TMEM126A +RHBDD1 +ATP13A4 +ZCCHC9 +ZDHHC18 +MRI1 +MED10 +RTL6 +FYTTD1 +PSD2 +SLF1 +SGIP1 +GARNL3 +CAMKK1 +SLC37A3 +FLYWCH1 +SYT3 +DCUN1D5 +TCHP +FBXW9 +PSMG3 +HSDL2 +HAGHL +POLR3GL +ALKBH7 +C9orf64 +RPAIN +CHCHD5 +CARD19 +POLDIP3 +YIPF4 +NOA1 +COQ5 +SLC25A33 +NICN1 +DNAJC30 +PRADC1 +BTBD10 +C2orf88 +RNF135 +TMEM79 +NTPCR +EIF1AD +TMEM175 +ZDHHC16 +EFCAB2 +ING5 +CAPNS2 +WDR83 +PRXL2A +UTP23 +PHF6 +GINS4 +LLPH +MIEN1 +UQCC2 +DDI2 +PGAP4 +CHCHD6 +NUDT22 +PYM1 +PDCD2L +ZNF397 +NUDT16L1 +C7orf50 +MRPL45 +BRMS1L +VPS25 +TMEM107 +MON1A +NAA38 +CCDC115 +CCDC77 +CMSS1 +ACBD6 +THOC3 +SARNP +METTL26 +ZBED3 +LZIC +HVCN1 +ZNF414 +MCRIP2 +DYDC2 +PCGF5 +COA8 +AKT1S1 +TMEM101 +ELOF1 +GFM2 +COG8 +HPS3 +ARFGAP2 +NIFK +PRAC1 +HOOK3 +ECRG4 +CYSTM1 +C15orf48 +PROK1 +CARD11 +ADGRA1 +ZNF528 +MSANTD4 +HHIPL1 +RAB11FIP4 +MAML2 +FRMPD3 +DOT1L +LZTS2 +BRSK1 +SYVN1 +ABLIM2 +ZNF333 +ZNF512 +MAP3K21 +EFCAB7 +L3MBTL3 +PHYHIPL +LCOR +ZMAT1 +NEURL4 +SLX4 +MEGF11 +MEGF10 +FBN3 +FAM120B +SPIRE2 +JPH4 +ZNF527 +NKX6-2 +PLPP5 +GHDC +MCM8 +DCTN5 +ACTRT3 +CNFN +ACRBP +GON7 +JAGN1 +ZC3H8 +HOPX +ZNF559 +RHOXF2 +CDIN1 +SRRM4 +ACSS1 +MCHR2 +KBTBD8 +SANBR +MRPL43 +PGBD1 +TMEM185A +MAK16 +PARD6G +FAXC +MAP1LC3A +MT4 +SLC12A8 +LYZL1 +COL25A1 +GNPTG +PARD6B +ZBTB37 +KRTAP4-4 +TUBB6 +NT5C1A +ZGPAT +ST6GAL2 +ZNF594 +KIRREL3 +FNDC1 +KRBA1 +ZNF469 +NTNG2 +TNRC18 +TTBK1 +SLITRK2 +AFAP1L2 +KISS1R +GPR174 +IL1F10 +USP38 +MFSD14B +KIF2B +C22orf23 +PLA2G12B +LCE3D +DGAT2 +EBPL +SPINK7 +SPZ1 +GLYR1 +ADGRE3 +RNASE7 +CCDC62 +DPY30 +GLIS2 +MYPN +RETNLB +HES7 +HYCC1 +USP32 +ZNF347 +CARD6 +TRIM55 +TRIM63 +KDM2B +SLC9A7 +ACCS +HINT2 +INSM2 +PPP1R9B +C9orf24 +MS4A14 +SPATA22 +GARIN1B +CCDC54 +MCEE +GJA10 +LOXL3 +ABHD1 +CAPS2 +CREB3L3 +MYO18B +COX4I2 +GTPBP3 +GPT2 +BEX2 +LNX1 +MGARP +HDGFL2 +PIGO +PSRC1 +PLEKHA8 +PRRC2B +SPSB2 +CBX2 +FAM167B +CNDP1 +UNC119B +USP30 +FUT10 +B3GNT9 +PCGF1 +ZNF577 +CRACR2A +TRIM51 +MPV17L2 +TMEM276 +ZNF607 +NAA11 +KMT5C +TUBA1C +FAM220A +PYROXD2 +GPAT3 +MFSD9 +NFKBID +PERM1 +BUD13 +PLCD4 +PLPP7 +RTN4IP1 +TXNDC17 +IL17RC +LMNB2 +FCRLA +SFT2D3 +ADTRP +ATP5MK +ABHD14B +ZNF496 +RAX2 +HPDL +PHF5A +TRIM52 +ZNF503 +LRCH3 +KLHL22 +RIOX2 +CCDC142 +TMEM25 +PTPN5 +HAVCR2 +CBR4 +RSPO3 +AGBL4 +ZC3H10 +ADGRG7 +ZNF514 +PARP10 +ORAI1 +ZBTB45 +MFSD2A +RPUSD4 +AIFM2 +ZDHHC12 +C1orf198 +SPPL2A +SLC7A3 +ADO +ZSCAN10 +POMGNT2 +FBH1 +LINGO1 +MIGA2 +ATAD1 +TBRG1 +PLXDC2 +TMTC4 +RNFT2 +NFATC2IP +CEP89 +ARHGEF39 +ZNF341 +FAM136A +AOPEP +TMEM87B +ZNF382 +SLC35B4 +ATOH8 +ZNF587 +FAM222A +UTP4 +LRP11 +PPP1R15B +ALG10 +FIZ1 +FAM104A +ZNF566 +SLC49A4 +SPRYD3 +TMEM209 +FIBCD1 +MASTL +RAB2B +C8orf76 +RITA1 +MEDAG +ZFYVE19 +ZNRF1 +ATG4C +PWWP3A +CORO6 +HSH2D +WDR73 +MAEL +ABHD13 +LTV1 +SERAC1 +TIGD5 +PRPF38A +TNS4 +CGNL1 +MPND +NUDCD1 +RELT +SYTL1 +UBASH3B +CCDC183 +FBXL20 +AJUBA +ALKBH6 +IGSF21 +LSM10 +PNMA6A +TOX2 +C1orf94 +ATG4D +MFSD5 +DISP1 +FRMD5 +CEP19 +FAM83A +ARHGAP19 +COX14 +PPP1R16A +RBM17 +PIGY +UBL7 +FAM86B1 +RERG +PHYKPL +TCEAL3 +TMEM128 +TMEM141 +USP45 +CFAP300 +TMEM241 +REPS1 +TMEM60 +SMIM3 +H2AC12 +H2BC12 +KRTAP9-4 +KRTAP4-1 +KRTAP4-5 +KRTAP4-3 +KRTAP4-2 +KRTAP3-3 +KRTAP2-4 +ATCAY +COL27A1 +FBF1 +PPIL4 +PAQR8 +BAGE5 +BAGE4 +BAGE3 +ABCC11 +LGALS12 +SHISAL1 +KRTAP4-16 +SHANK3 +DGCR6L +SYDE1 +TRIM5 +ZCCHC3 +ALG2 +MYLK2 +STRIP1 +RIMBP3 +MICALL1 +TUBGCP6 +KIAA1671 +SLX9 +RGS8 +EAF1 +DNAJC14 +NKD1 +NKD2 +SLC22A16 +SLC45A3 +RHPN2 +ZIC5 +CCNB3 +ZCRB1 +CABS1 +STON2 +DOCK7 +HELZ2 +KNDC1 +DCLK3 +LRRCC1 +CNTNAP4 +ZFHX2 +KIAA1755 +ITPRIP +UNK +CFAP74 +TSPYL5 +DISP2 +TNKS1BP1 +CIPC +DIXDC1 +CEP295 +ZNF518B +TANC1 +FHDC1 +ZC3H12C +SSH2 +SELENOI +LBX2 +GFM1 +SCIN +CCDC65 +DNAJC5B +TSLP +PSKH2 +SCRT2 +MBD3L1 +GALP +GTPBP10 +HSFY1 +PNPT1 +GGACT +ANKRD13A +RRP36 +TRIM4 +RSPH1 +UMODL1 +SERPINB12 +SERPINB11 +WNT3A +HPS4 +LMLN +SIGLEC10 +GAL3ST3 +NAV3 +NAV1 +NAV2 +PPP1R3F +KCNK17 +CHRFAM7A +ARHGAP11B +ABCC10 +FGD3 +FCHSD1 +ATG16L2 +MVB12B +KLHL6 +SIGLEC12 +SEC16B +PLCZ1 +TRIM15 +AQP10 +SLC25A21 +CFAP91 +TPD52L3 +LHX4 +FATE1 +SLAMF9 +ZNF628 +KBTBD6 +DYNC2I2 +TMEM116 +UBE3B +BMERB1 +PAPLN +RHOT2 +GLB1L2 +KLC4 +SAPCD2 +RSPRY1 +DPH6 +MIDN +SYT8 +UBE3D +FAM181A +CCDC120 +LACRT +ZNF30 +PHLDB2 +VWA5B2 +TMEM250 +TSR2 +KCNH7 +BTBD6 +TSPAN18 +EFCAB11 +HS6ST2 +FRMD7 +EMILIN3 +SYS1 +WFDC8 +SNX21 +ZSWIM1 +UCN2 +KIAA2013 +ZNF551 +UNC5A +OTULIN +CEACAM21 +EFCAB12 +KLHL13 +TP53I13 +TGIF2LX +ZNF616 +ZNF766 +CCDC97 +THAP3 +EXOC3L2 +ZNF468 +ZNF160 +FER1L5 +CTU1 +MACIR +FAM110B +SAMD1 +DCAF15 +TICRR +MED30 +TMEM41A +IFT20 +MCFD2 +CCDC32 +KNSTRN +ATP6V1E2 +BMF +ZNF622 +ERI1 +GADD45GIP1 +ZNF835 +TMEM263 +LRRC46 +SCRN2 +YIF1B +MLIP +SHF +DUOXA1 +STPG1 +MCU +CCDC74A +ZNF799 +TIMM29 +ZNF625 +ZNF700 +ZNF439 +LYRM7 +ERVH48-1 +STARD13 +N4BP2L1 +ZFAND2A +COX19 +ZNF486 +TGIF2LY +TBL1Y +CARMIL3 +PPP1R3E +LRSAM1 +CCDC126 +SEC11C +FAM104B +PAGE5 +PYGO2 +CEP95 +ANGEL2 +PIP4P1 +PRMT9 +ZNF479 +CFAP119 +TCEAL8 +ZNF598 +SPOCD1 +JPT2 +SPSB3 +IL33 +DMAC1 +ZNF697 +TRIM41 +ESAM +ADCK2 +DHX57 +ZNF251 +KIFC2 +CREB3L1 +FMNL3 +CERS5 +DPP9 +CCDC149 +AP5B1 +CCDC34 +ANKRD30A +TRIM47 +ZNF682 +L3MBTL4 +SLC25A46 +TMEM67 +TIGD7 +IGFN1 +SCARF2 +NUP210L +GGTLC2 +SLC39A13 +BOD1 +MSANTD3 +LMF2 +C12orf29 +R3HDM4 +TMEM259 +DERL3 +DDX60L +CDKN2AIPNL +ANKRD40 +UAP1L1 +ZNF502 +SESTD1 +BTF3L4 +CCDC74B +ATP23 +RCCD1 +FAAP24 +RNF185 +ACBD5 +PKDCC +ISX +COL23A1 +PCED1B +ANKRD44 +RSAD2 +UBXN11 +MTRFR +RPS19BP1 +PLXNA4 +ZNF830 +SLFN11 +RASL10B +CHURC1 +DEPDC7 +NEXN +TDRD12 +ATPAF2 +BOC +ZNF765 +NLRP12 +MYADM +ZNF845 +SYT12 +CENPL +SMDT1 +LONRF1 +ACY3 +IDI2 +YTHDC1 +MIDEAS +MFSD4B +LIN52 +ZNF804A +NEK9 +CABLES1 +NXPE3 +CHMP7 +ALKBH8 +MYLK3 +EXOC3L4 +WDR20 +CHRDL1 +CALML4 +MARVELD3 +RFT1 +TTC5 +FDXACB1 +C11orf52 +TIMD4 +NDUFAF2 +ARRDC4 +COG7 +EOLA1 +ZNF300 +MYOZ3 +TPGS1 +CCNQ +SLC25A51 +SNX29 +GGTLC1 +ZC3HAV1L +TTC30A +INTS4 +OXNAD1 +DSEL +RIPPLY1 +MTDH +MTSS2 +TMEM88 +MTG1 +UBTD2 +DAPL1 +CDHR1 +STYXL2 +RCSD1 +LMBRD2 +MRPS36 +ZNF461 +ZNF585B +CAPN13 +GLYATL1 +TMEM132C +SCGB3A1 +TMEM129 +MEX3A +STRADA +PRR29 +METTL18 +GORAB +NAF1 +C1orf105 +CRB3 +SPSB4 +PXYLP1 +MRRF +RBM18 +CHMP4C +BBIP1 +LDHAL6B +SPECC1 +ATXN3L +BICDL1 +FANK1 +G6PC3 +ASB16 +ZNF764 +MOB1B +TIMM50 +TIFA +MGME1 +DTD1 +FAM114A1 +TMEM169 +TMEM183A +ARRDC1 +DPH7 +OTOP2 +DNER +SLC38A5 +BPIFB1 +DRC1 +HELB +SHKBP1 +H2AC25 +ZNF276 +REEP6 +IMP4 +HNRNPLL +UBE2Q2 +CCDC102A +MARS2 +ADAMTSL1 +PEX11G +MARCHF9 +ZBTB47 +B3GNT7 +NT5C1B +PKHD1L1 +COQ10A +TEX30 +NEURL3 +DMKN +NAPRT +KCNG4 +TMEM44 +ORAI3 +ZNF561 +OLFM2 +PRDM6 +PIGM +IGSF8 +CFAP107 +PGAP3 +ODAD1 +LEMD1 +HAUS8 +MVB12A +SP140L +OPALIN +MMGT1 +MYL10 +SYCE1 +MGAM2 +ARMC6 +ZNF670 +MAPK1IP1L +TPTE2 +SDR42E1 +ZFAND4 +TRMT10A +CACNA2D4 +TBC1D31 +FBXO44 +MRFAP1 +LOC93622 +TADA2B +TBCK +TJAP1 +MYOCD +ACP4 +CGB5 +CAPZA3 +ARHGAP18 +CADPS2 +GCNA +ACTR8 +ATP5IF1 +CLEC6A +CPA5 +FOXP2 +PIGS +TTYH2 +MUC16 +POM121L2 +CGB7 +LRRC4B +HTRA3 +CAMK2N2 +FTMT +ZNF101 +SYAP1 +LENG9 +SFXN1 +HSPB9 +SFXN5 +ORMDL1 +ORMDL3 +PAXBP1 +TMEM203 +CGB8 +SYTL3 +SYTL4 +SYTL5 +ARHGAP12 +RP1L1 +ABCC12 +OPN4 +FOXQ1 +GNG8 +H2AZ2 +EPSTI1 +TP53INP1 +PPP1R14A +CEP41 +FNIP1 +LIMS3 +TGS1 +MYL12B +EGLN2 +EGLN3 +CAVIN3 +PRRT2 +ERI2 +SAT2 +DTD2 +GTF3C6 +SNX18 +MRAP2 +RWDD2A +CMTM7 +GARIN5A +TUBA3E +RDH13 +IL17F +IFT43 +STX1B +GLMP +KRT71 +FDX2 +HOGA1 +WDR89 +L3HYPDH +TP53RK +SGF29 +PHF21B +VPS26B +GLB1L3 +NACC1 +CFAP36 +MED8 +KTI12 +RPUSD1 +PLCD3 +PTH2 +MTFR2 +CDCA5 +AHNAK2 +SAAL1 +IZUMO4 +SCAMP4 +ADAT3 +CHST14 +GOLM2 +KIF12 +MISP3 +SLC46A1 +C12orf57 +LARP4 +GLCCI1 +TMEM106A +SLC52A3 +SFT2D1 +TEX261 +SMIM12 +AZIN2 +TMEM54 +TUBA3D +HELQ +CMTM1 +CYP2U1 +ADPRHL1 +MFSD3 +SDSL +KLHDC7B +ODF3 +PIK3IP1 +HENMT1 +FAM83F +SLC35A4 +ZNF257 +DTX2 +ZIM3 +TOE1 +BUD23 +TRIM9 +TXNRD3 +UCN3 +SIGLEC11 +SLC2A13 +LACTB +EFHC1 +CGB1 +CGB2 +NLRP3 +MAL2 +SLC22A9 +TIRAP +ERMAP +LRRC37B +CYGB +CARD16 +PGLYRP2 +PGLYRP3 +PKD1L2 +BTBD9 +LMTK3 +CSMD2 +MBD6 +XKR4 +GPRIN1 +CSMD3 +SLC25A25 +STK11IP +TUBGCP5 +KLHL32 +FMNL2 +ELFN2 +TMEM132B +SLITRK1 +ESCO1 +CCDC85A +TMEM200A +MYSM1 +RNF157 +GALNT13 +SORCS1 +KLHL29 +SCAND3 +RHPN1 +LENG8 +PNMA5 +PWWP2A +SMYD4 +FHAD1 +SLAMF6 +OSBPL1A +OSBPL5 +OSBPL6 +OSBPL7 +OSBPL8 +OSBPL9 +OSBPL10 +OSBPL11 +C1QTNF1 +C1QTNF2 +C1QTNF3 +C1QTNF4 +C1QTNF5 +C1QTNF6 +C1QTNF7 +FBXO32 +TMEM123 +SMIM19 +GPRASP2 +MRFAP1L1 +TSGA13 +PTPMT1 +FLYWCH2 +WDR31 +VASN +ZNF618 +CGAS +SLC26A9 +NT5C3B +CCDC124 +HAUS1 +SLC26A7 +MARCHF3 +ZNF554 +ATG4A +KCTD12 +OMA1 +DDIT4L +RAB42 +SLC25A26 +FBXO17 +PCMTD1 +GPR146 +FCRL1 +FCRL3 +LRRC42 +GBP4 +GBP5 +LRRC56 +MALSU1 +UHRF2 +ZNF689 +FCHO2 +ARHGEF25 +ZNF501 +TENT5B +SLC5A11 +TNFRSF13C +KIR3DL3 +NOSTRIN +ALPK2 +ARHGAP33 +EVI5L +TRMT61A +RASGRP4 +C12orf56 +DIS3L +ARL11 +FANCD2OS +IQCD +DHRS1 +WDFY2 +RAB3C +NXNL1 +CTHRC1 +TSR3 +ODAD3 +ZNF653 +RNF166 +RMI2 +OSR2 +LRRC58 +LYSMD3 +BATF2 +SLC22A12 +DNTTIP1 +FOXP4 +ZNF526 +LRRC3B +KLHDC3 +DNAAF10 +NUS1 +FAM210B +PHACTR3 +CYYR1 +CMTM5 +TGM7 +TM4SF19 +PABIR1 +ZMYND19 +COX20 +ABHD15 +TLCD1 +GINM1 +MOGAT1 +ACSM1 +C8orf34 +PANX3 +RBP7 +SLC26A8 +LYPD1 +IL22RA2 +ZNF837 +TM4SF18 +RAB39B +GRIN3A +GRIN3B +TOP1MT +OLIG1 +CLNK +TSEN15 +NIBAN1 +MAS1L +MRGPRD +APOA5 +MRGPRE +MRGPRF +MRPL53 +MRPL54 +PPP1R27 +RPL39L +HSPA12B +CNTROB +SNAP47 +LEAP2 +SLC18B1 +LRG1 +MED12L +WDR17 +ART5 +ACAP3 +ARAP2 +ARAP1 +AGAP2 +AGAP1 +AGAP3 +TADA1 +CATSPER1 +THEM4 +DACH2 +CATSPER2 +SCGB3A2 +SH2D1B +DCD +WFIKKN1 +RAB3IP +SSX2IP +MRGPRX2 +MRGPRX3 +MRGPRX4 +PLAAT5 +FTSJ3 +SLC16A10 +GALNT15 +IP6K3 +DEFB118 +CIB3 +TAGAP +TMC1 +TMC2 +RLN3 +TWIST2 +PARD3B +RFFL +ZNF354B +TRIM6 +UBE2J2 +BORCS5 +OLFM3 +ANTXR2 +MUCL1 +GPR62 +EXOSC6 +C10orf71 +PRAP1 +ZNF511 +CHCHD1 +MSS51 +CFAP70 +C10orf90 +BTBD16 +FAM24A +PSTK +ZNF488 +PIK3AP1 +MORN4 +ZFYVE27 +MMP21 +COMTD1 +FRA10AC1 +ANKRD22 +SFXN2 +PDZD8 +AGAP4 +BORCS7 +LYZL2 +GSTO2 +SFR1 +CALHM3 +CLRN3 +ANAPC16 +PNLIPRP3 +SFXN4 +CPXM2 +OR52E2 +OR52J3 +OR51L1 +OR51A7 +OR51S1 +OR51F2 +OR52R1 +IFTAP +OR4C46 +OR4X2 +OR4B1 +OR52M1 +OR52K2 +OR5P2 +OR5P3 +LARGE2 +SLC36A4 +FAT3 +TRIM64 +TMEM45B +CYP2R1 +DBX1 +POU2AF3 +PIH1D2 +NXPE1 +NXPE2 +JAML +DNAJC24 +ARL14EP +OR8I2 +OR2D3 +OR2D2 +OR52W1 +OR56A4 +OR56A1 +TRIM51G +DEPDC4 +LRRK2 +CCDC38 +TMEM52B +FAM186A +NOPCHAP1 +OR2AP1 +OR10P1 +SDR9C7 +LRIG3 +TMEM132D +SLC15A4 +RHEBL1 +C12orf54 +ZNF641 +OR10AD1 +TPH2 +SP7 +GTSF1 +OR10A7 +KRT74 +NEDD1 +IKBIP +H4C16 +ERP27 +FGD4 +AEBP2 +ASCL4 +ABTB3 +SPIC +ANO4 +ALKBH2 +FOXN4 +SPPL3 +TEX29 +CSNK1A1L +RXFP2 +TEX26 +SLAIN1 +PRR20A +SPACA7 +TDRD9 +ANKRD9 +AK7 +IFI27L1 +C14orf28 +TRAPPC6B +CLBA1 +PLD4 +ADSS1 +RNASE11 +TPPP2 +RNASE8 +MRPL52 +PSMB11 +OR4K14 +OR4L1 +OR11H6 +LRR1 +KLHDC1 +FRMD6 +SOCS4 +NAA30 +GPHB5 +NOXRED1 +JDP2 +ISCA2 +ACOT4 +TTC8 +TC2N +SLC24A4 +SLC25A29 +DEGS2 +KLHL33 +LEO1 +C15orf40 +SENP8 +MTFMT +SLC51B +TARS3 +HIGD2B +LRRC28 +TMEM266 +NIPA1 +AGBL1 +HYKK +WHAMM +FSD2 +PLA2G4E +C16orf46 +NTAN1 +CEP20 +DNAAF1 +ACSM2A +DCUN1D3 +NRN1L +CMTM3 +C16orf78 +SPATA2L +SPATA33 +NOXO1 +CCDC78 +IQCK +ZG16B +PAQR4 +ZC3H18 +GPR139 +CDYL2 +ANKS3 +UBALD1 +SEPTIN12 +KRBOX5 +TMEM219 +EARS2 +SNX20 +TMEM170A +METTL23 +HSF5 +OR4D2 +MSI2 +SLC38A10 +CANT1 +USH1G +CD300LB +KIF19 +ZPBP2 +CYB5D1 +OVCA2 +USP43 +KRBA2 +CHCT1 +SPATA32 +HEXIM2 +LSM12 +CCDC43 +CNTD1 +TMEM132E +WFIKKN2 +B4GALNT2 +SPACA3 +RSKR +SEZ6 +ANKRD13B +SLC43A2 +CYB5D2 +C17orf49 +ZFP3 +GGT6 +SPNS2 +EFCAB13 +MRPL10 +WDR81 +TBC1D16 +AFMID +GJD3 +KRT222 +KRT40 +ZSWIM7 +RIBIN +MIEF2 +SLC5A10 +FAM210A +LOXHD1 +INO80C +TTC39C +DIPK1C +CLDND2 +ZNF816 +ZNF543 +CEACAM20 +RAVER1 +OR7D4 +OR7G1 +OR1M1 +COX6B2 +CALR3 +ACER1 +MICOS13 +MBD3L2 +TRAPPC5 +PCP2 +OSCAR +ZNF813 +ZNF441 +ZNF491 +ZNF440 +SWSAP1 +CCDC159 +JOSD2 +IZUMO2 +CPT1C +ALDH16A1 +NTN5 +NLRP13 +NLRP8 +NLRP5 +ZNF787 +ZNF573 +WDR88 +TMIGD2 +EID2B +TNFAIP8L1 +ZNF57 +IRGQ +ZNF428 +JSRP1 +MOB3A +MFSD12 +GIPC3 +NDUFA11 +MISP +LRRC25 +OR1I1 +WTIP +ZNF792 +NR2C2AP +HSPB6 +CCDC105 +CYP4F22 +RINL +FBXO27 +PLK5 +C19orf47 +OR10H4 +ANKLE1 +C2CD4C +GABPB2 +TCHHL1 +RPTN +CCDC163 +TDRD10 +SHE +KDF1 +CCSAP +LRRC38 +AADACL3 +PUSL1 +B3GALT6 +DNAI3 +KLHDC9 +AXDND1 +MAB21L3 +IFFO2 +H3C14 +SLC44A3 +ATXN7L2 +CFAP276 +LYPLAL1 +OR2M5 +OR2M3 +OR2T12 +OR14C36 +OR2T34 +OR2T10 +OR2T4 +OR2T11 +ATP6V1G3 +ASB17 +TYW3 +ERICH3 +LRRIQ3 +TPRG1L +PRXL2B +MYOM3 +DMBX1 +OR10J5 +TMCO2 +ZNF684 +TCEANC2 +PODN +LRRC39 +GJB4 +HMGB4 +RNF19B +A3GALT2 +DCST2 +DNAH14 +OR2AJ1 +OR14L1P +OR2B11 +ZNF648 +TEDDM1 +C1orf122 +OSCP1 +C1orf216 +KLHDC7A +VWA5B1 +UBXN10 +C1orf87 +ARL8A +SYT2 +GOLT1A +UHMK1 +FCRLB +WDR64 +C1orf131 +LIX1L +SPATA17 +EDARADD +KLF17 +TMEM125 +TSACC +IQGAP3 +NAXE +ARHGEF19 +MRPL55 +H2BC26 +NUTF2P4 +DRAM2 +PIFO +C1orf162 +OR10T2 +OR6P1 +OR10X1 +OR10Z1 +OR6K6 +OR6N1 +TATDN3 +BHLHE23 +NKAIN4 +VSTM2L +FITM2 +WFDC12 +SPATA25 +OCSTAMP +TSHZ2 +C20orf85 +ZNF831 +TBC1D20 +SIRPD +C20orf141 +PROKR2 +SLX4IP +CSTL1 +CST9L +CST9 +DUSP15 +BPIFB6 +BPIFA3 +C20orf144 +CHMP4B +PIGU +FAM83C +GAB4 +C22orf39 +TANGO2 +ZNF280A +SGSM1 +EMID1 +ANKRD54 +PPP1R21 +TRABD2A +TMEM150A +NUP35 +XIRP2 +TYW5 +NMS +LYG1 +MITD1 +DIS3L2 +CMPK2 +MBOAT2 +CNTNAP5 +TAF8 +TMEM18 +FBLN7 +NEU4 +RBM45 +C2orf73 +TRIM43 +BBS5 +CFAP210 +ACMSD +ICA1L +FAM168B +OR9A4 +CIB4 +REG3G +RFTN2 +CLHC1 +PLEKHH2 +AP1S3 +C2orf76 +SGPP2 +ACVR1C +OSR1 +TTC32 +UBR3 +KCTD18 +FLACC1 +ZNF513 +SPATA3 +LYPD6 +LYPD6B +GALM +TMEM198 +ZFAND2B +TMEM178A +CPO +MDH1B +C2orf50 +SLC66A3 +TMEM182 +FBXO36 +MTERF4 +CCDC148 +M1AP +CPNE4 +MIX23 +KCNH8 +DNAJC19 +OTOL1 +FAM3D +ZPLD1 +LYZL4 +KLHL40 +TRIM71 +FAM131A +CD200R1 +CHCHD4 +ZDHHC19 +CRYBG3 +DCBLD2 +LRRC15 +FAM43A +TPRA1 +TMEM42 +UROC1 +ERICH6 +NUDT16 +COL6A6 +GRK7 +TMEM207 +METTL6 +TAMM41 +IL17RE +RTP1 +IQCF1 +GLYCTK +PPM1M +C3orf49 +SNTN +SYNPR +LSMEM2 +H1-8 +OCIAD2 +SCLT1 +C4orf33 +SMIM43 +PABPC4L +ADAD1 +ZFP42 +LIN54 +SPATA18 +FAM241A +TMPRSS11B +GNPDA2 +SPATA4 +CPEB2 +EVC2 +ARL9 +AASDH +PDCL2 +C4orf36 +PACRGL +TRAM1L1 +OTOP1 +ENPP6 +SLC9B2 +SETD9 +IL31RA +EMB +SLCO6A1 +C5orf47 +PPARGC1B +MROH2B +EGFLAM +PRRC1 +NADK2 +UGT3A1 +CAPSL +JMY +C5orf58 +ZNF474 +CCDC127 +OR2Y1 +UBE2QL1 +CFAP90 +ATPSCKMT +CMBL +POU5F2 +DNAJC21 +AFAP1L1 +GRPEL2 +TMEM171 +TMEM174 +LSM11 +POC5 +GPR151 +STARD4 +WDR36 +NUDCD2 +UBLCP1 +ACOT12 +SOWAHA +SHROOM1 +C5orf24 +ADAT2 +RIPPLY2 +IRAK1BP1 +CLVS2 +TAAR9 +TAAR1 +STXBP5 +NCOA7 +HINT3 +PACRG +B3GAT2 +SDHAF4 +CD109 +RAET1E +PM20D2 +SRSF12 +C6orf141 +HUS1B +TRIM40 +MUCL3 +TMEM270 +TRIM50 +OR9A2 +LLCFC1 +TMEM139 +NOBOX +OR2A14 +OR6B1 +OR2F2 +ZNF786 +COL26A1 +PRSS37 +KLF14 +SSMEM1 +C7orf57 +SVOPL +MTPN +LRGUK +ASB10 +PRSS58 +MPLKIP +SSC4D +C7orf31 +ASZ1 +CLDN23 +ZNF572 +GOT1L1 +CIBAR1 +VPS37A +NDUFAF6 +TMEM68 +ABRA +LYPD2 +NKX2-6 +TMEM71 +SGCZ +ADHFE1 +UBXN2B +PXDNL +GPAT4 +UNC5D +LETM2 +DCAF4L2 +RALYL +HGSNAT +RNF183 +NACC2 +PIERCE1 +CARNMT1 +C9orf57 +C9orf85 +CFAP95 +LCN8 +DIPK1B +PTRH1 +PIP5KL1 +TAF1L +PTPDC1 +ARID3C +RPP25L +C9orf131 +OR13C5 +OR13C8 +OR13C3 +OR13C4 +OR13F1 +OR1L8 +OR1N2 +OR1N1 +SLITRK4 +SPANXN3 +MAGEC3 +BEND2 +PASD1 +DCAF12L1 +DGKK +DNAAF6 +PWWP3B +FAM199X +AMER1 +APOOL +HDX +FUNDC1 +ADGRG4 +PTCHD1 +PPP4R3C +MAGEB10 +DCAF8L1 +OTUD6A +UPRT +MAGEE2 +MAGEB16 +FOXR2 +GAB3 +PNCK +ZFP92 +ACTRT1 +GPR119 +PAGE3 +RBMXL3 +DOCK11 +SPIN4 +RPS4Y2 +KRTAP13-1 +TCP10L +RNF113B +MUC17 +ASB11 +ASB5 +ASB6 +ASB7 +ASB8 +ASB9 +MYL6B +ZNF358 +MYO3B +RNF32 +APOBEC3D +S100A16 +CHODL +DEFB104A +TCEAL2 +SELENOM +NEK7 +ZFP28 +ACTRT2 +GATA5 +SLC32A1 +C20orf96 +BPIFA2 +ZBTB46 +WFDC3 +GCNT7 +NOL4L +CBLN4 +CTCFL +TRIM69 +MROH8 +SAMD10 +ABHD16B +CCM2L +BRI3BP +SOGA1 +TLDC2 +RIMS4 +ANKRD60 +SUN5 +MACROD2 +DYNLL2 +TMEM37 +UBE2F +ADAMTS14 +NRSN1 +SMCR8 +RPL10L +TRPM6 +KRT72 +SRXN1 +ROMO1 +NEURL2 +ZSWIM3 +WFDC10A +BANF2 +NANP +DEFB127 +SCP2D1 +ISM1 +WFDC6 +C20orf173 +RIPOR3 +CST11 +DEFB129 +ZNF280B +SIRPA +PABPC5 +SREK1 +RBBP8NL +CNBD2 +STK35 +R3HDML +DCANP1 +MIB2 +DUSP19 +SLC34A3 +ITLN2 +RAB40A +ASB15 +ASB14 +ASB12 +ACSM6 +SAMD8 +LIPJ +TRUB1 +MPP7 +FRMPD2 +VTI1A +DYDC1 +EIF5AL1 +HECTD2 +FGFBP3 +C10orf82 +CACUL1 +SYT9 +LDLRAD3 +PSMA8 +OR52B4 +OR52I2 +OR51E1 +XRRA1 +UBQLNL +MUC15 +FREY1 +FAM76B +SESN3 +PIWIL4 +ARHGAP42 +KBTBD3 +CWF19L2 +POGLUT3 +LAYN +TTC36 +SPINDOC +PLEKHA7 +SPTY2D1 +TMEM86A +OR10A5 +OR2AG1 +DNHD1 +PRICKLE1 +AMDHD1 +SLC2A14 +BCDIN3D +ALG10B +GLIPR1L2 +RFLNA +ZNF664 +ETFRF1 +CPNE8 +TMEM120B +CFAP251 +GLT1D1 +TSPAN19 +BEST3 +E2F7 +KRT80 +CFAP54 +A2ML1 +KICS2 +C12orf60 +FBXL14 +RAD9B +PHETA1 +FAM216B +LACC1 +HNRNPA1L2 +B3GLCT +RDH12 +GSC +SERPINA12 +PRIMA1 +MIPOL1 +PPP1R36 +SLC38A6 +ARMH4 +ABHD12B +PTGR2 +FAM161B +LRRC74A +ISM2 +CEP128 +MDP1 +TTC7B +LRFN5 +TERB2 +C2CD4A +LYSMD4 +FAM81A +GCOM1 +PIERCE2 +PGPEP1L +C15orf61 +HAPLN3 +MESP2 +TMCO5A +NRG4 +ZSCAN29 +TTBK2 +CDAN1 +SLC38A8 +VWA3A +OTOA +ZFP90 +CARMIL2 +KCTD19 +CMTM4 +CMTM2 +BEAN1 +TEKT5 +RNF151 +PRR35 +FBXL16 +C16orf92 +GSG1L +SLC22A31 +IL34 +ZNF597 +BICDL2 +TMED6 +ZNF785 +ZNF688 +PRSS36 +C16orf89 +DNAAF8 +MGAT5B +TOM1L2 +TEPSIN +B3GNTL1 +RBFOX3 +CD300LF +DNAH2 +RTN4RL1 +EFCAB3 +SLC47A2 +CDRT15 +CFAP52 +CCDC42 +PIK3R6 +ODF4 +C17orf50 +SLFN13 +SLC35G3 +UNC45B +CD300LG +KIF18B +RUNDC1 +EME1 +TMEM199 +PROCA1 +DHRS13 +KCTD11 +NOTUM +TMC8 +WIPF2 +KRT25 +SCGB1C1 +STARD6 +C18orf25 +CCBE1 +CBLN2 +SLC25A52 +DSG4 +ANKRD29 +APCDD1 +VSIG10L +C19orf84 +SPACA6 +ZNF480 +ZNF534 +ZNF578 +ERVV-1 +SMIM17 +C19orf18 +ZNF418 +ZNF417 +ZNF548 +PPM1N +KLC3 +IGSF23 +LYPD4 +ZNF560 +TMEM190 +HIPK4 +TMC4 +ZNF524 +ZNF784 +ZNF563 +SPC24 +KASH5 +DACT3 +SIX5 +IGFL2 +ZNF420 +ZNF565 +NLRP4 +ZNF582 +ZNF583 +FAM98C +CAPN12 +DPY19L3 +LGALS16 +TTC9B +TICAM1 +ZNRF4 +ZNF599 +FAM187B +CILP2 +PROSER3 +ZNF558 +CDC42EP5 +ZNF98 +ZNF738 +ZNF714 +ZNF681 +C19orf25 +ATP8B3 +DIRAS1 +ZNF555 +ZNF569 +ZNF570 +SYT6 +C1orf74 +CREB3L4 +C1orf127 +BROX +SAMD11 +SAMD13 +C1orf52 +PHF13 +CIART +TLCD4 +NBPF4 +UBE2U +SLC35F3 +HJV +ANKRD35 +FAM163A +B3GALNT2 +MFSD4A +PM20D1 +GCSAML +SLC30A7 +CCDC27 +KNCN +MOB3C +GLIS1 +NBPF12 +LELP1 +RC3H1 +DCDC2B +ZNF362 +DCST1 +CNIH3 +MANEAL +IL23R +NTMT2 +FAM78B +SHISA4 +EXOC8 +PDIK1L +BNIPL +CLDN19 +CFAP57 +C1orf210 +CCDC24 +BTBD19 +CCDC17 +LRRC71 +SRARP +RNF187 +PYHIN1 +SPATA45 +GARIN4 +ADIG +GTSF1L +WFDC5 +SHLD1 +COMMD7 +BPIFB4 +LSM14B +LIPI +LCA5L +IGSF5 +SIK1 +SLC9B1 +CCT8L2 +XKR3 +AIFM3 +RIMBP3C +YDJC +C22orf15 +HSCB +CCDC117 +HORMAD2 +DUSP18 +C22orf42 +ENTHD1 +DNAJB7 +CHADL +MEI1 +PHETA2 +NFAM1 +PNPLA5 +CDPF1 +TTL +CKAP2L +ZNG1B +TEKT4 +SMYD1 +C2orf15 +OTOS +COPS9 +OR6B3 +COMMD1 +PROM2 +ANKAR +FBXO41 +TTC30B +GPAT2 +ITPRIPL1 +RAB6D +FAM117B +TCF23 +GAREM2 +PUS10 +SEPTIN10 +KANSL1L +PLB1 +ZSWIM2 +ZNF385B +ERFE +ARL6IP6 +METTL21A +CCNYL1 +KLHL23 +PPP1R1C +SGO2 +C2CD6 +SLC38A11 +SLC23A3 +GPBAR1 +FAHD2B +LRATD1 +RMDN2 +GDF7 +SLC16A14 +ASPRV1 +WDSUB1 +UPP2 +GPR155 +TTC14 +DTX3L +TAFA4 +SGO1 +PP2D1 +EFHB +PPM1L +WDR49 +LRRC34 +CPNE9 +DPPA2 +CCDC80 +BTLA +CCDC12 +MB21D2 +PPP4R2 +XXYLT1 +RNF38 +GLIPR2 +ROPN1B +C3orf22 +ZCWPW2 +CMC1 +NEK10 +CCDC50 +PYDC2 +SPICE1 +CMTM8 +CCDC13 +NCBP2AS2 +FGD5 +CNTN4 +IGSF11 +TEX55 +ZNF827 +SH3D19 +NFXL1 +NIPAL1 +PAQR3 +SHISA3 +SCFD2 +MGAT4D +ZNF595 +JAKMIP1 +THAP6 +ODAPH +KLB +FAM53A +PPM1K +C4orf45 +TRMT44 +RASGEF1B +DAB2IP +SLC38A9 +SLC36A2 +SPINK13 +CREBRF +CEP120 +SLC25A48 +TMEM167A +MBLAC2 +TMEM161B +SRFBP1 +PLEKHG4B +ZMAT2 +MARVELD2 +IRX2 +BTNL9 +ARSK +FAM81B +TTC23L +CCDC112 +PPP1R2B +GARIN3 +PRELID2 +SH3RF2 +PLAC8L1 +RNF145 +ZC2HC1B +SNRNP48 +CNKSR3 +RAET1L +SAMD3 +SLC2A12 +MBOAT1 +HDGFL1 +PNLDC1 +RNF217 +NKAIN2 +KHDC3L +CFAP206 +CCDC167 +RUNDC3B +ABCA13 +BMT2 +CLEC2L +FMC1 +AMOT +VKORC1L1 +AMOTL1 +IQUB +KCTD7 +TMEM213 +GIMAP8 +CRYGN +ZNF425 +ZNF746 +ATP6V0E2 +SLC2A7 +AMZ1 +METTL27 +VPS37D +RBM33 +AGR3 +PRAG1 +PEBP4 +CDCA2 +TMEM65 +RDH10 +LOC84773-CYHR1 +ANKRD46 +ESCO2 +FBXO16 +LRATD2 +CFAP418 +VPS13B +TDRP +ERICH1 +SLC7A13 +TMEM74 +FAM91A1 +C8orf48 +MCMDC2 +CLVS1 +NKX6-3 +KCNU1 +SBSPON +CAMSAP1 +LINGO2 +NXNL2 +MAMDC4 +LCN6 +AK8 +OR1Q1 +TTLL11 +RASEF +TTC39B +TRMT10B +TTC16 +FAM120AOS +SAXO1 +FREM1 +KIAA2026 +SPAAR +ZNF483 +SHOC1 +KIAA1958 +TSTD2 +ZNF782 +PRUNE2 +CBLL2 +CSAG1 +FMR1NB +FAAH2 +ZXDB +FAM47A +MOSPD2 +ARHGAP36 +RIBC1 +AKAP14 +RHOXF1 +MAGEB6 +CXorf65 +AWAT1 +AWAT2 +ZDHHC15 +USP51 +TCEAL6 +H2BW1 +CXorf38 +PABIR2 +PABIR3 +HSFY2 +RBMY1F +USP54 +NKX2-3 +SLC35G1 +CFAP58 +SLC5A12 +DEUP1 +PATE1 +C11orf65 +LDHAL6A +C11orf42 +TMTC2 +CLEC12A +TMTC3 +C12orf50 +ALDH1L2 +LMNTD1 +DENND5B +TAMALIN +SLC5A8 +PPTC7 +CCDC63 +CCDC60 +DGKH +CCDC122 +GPR180 +STOML3 +GARIN2 +TMEM229B +SYNE3 +CLEC14A +FITM1 +REM2 +TMEM30B +MDGA2 +SAMD15 +NOP9 +EML5 +STRC +CFAP161 +TBC1D21 +DNAAF4 +OTUD7A +SPRED1 +ODF3L1 +PGBD4 +ADAL +EXD1 +FSIP1 +ZFPM1 +ADAD2 +ITPRIPL2 +C16orf82 +ZFP1 +ANKFN1 +MARCHF10 +MFSD6L +SLFN5 +NAGS +RETREG3 +TMEM92 +PHOSPHO1 +RHBDL3 +TRPV3 +SLC16A11 +FBXO39 +SPPL2C +KRT28 +ZNF519 +C18orf54 +ZNF836 +ZNF610 +ZNF600 +ZNF320 +ZNF497 +ZNF550 +ZNF296 +DEDD2 +ZNF846 +OR7D2 +ZNF579 +ZNF791 +ZNF564 +ZNF709 +ZNF433 +ZNF114 +ZNF567 +ZNF383 +EID2 +ZNF780B +PRR22 +LGI4 +SYNE4 +ZNF676 +ZNF100 +ZNF540 +DENND2C +GBP6 +PLPPR5 +FNDC7 +DENND1B +TDRD5 +TOR1AIP2 +CALML6 +IFNLR1 +CITED4 +LEXM +SPRR4 +KANK4 +SASS6 +SDE2 +CNST +FAM43B +HFM1 +PAQR7 +TTC24 +CCDC185 +UBL4B +WFDC13 +APCDD1L +LRRN4 +TTLL9 +CCDC116 +CABP7 +TMPRSS6 +APOBEC3H +WBP2NL +TTLL8 +DAW1 +LONRF2 +CCDC138 +ADGRF3 +TEX44 +OXER1 +TOGARAM2 +FAM171B +C1QL2 +UBXN2A +CLEC4F +DQX1 +PARP15 +SPTSSB +DNAJB8 +GPR156 +XIRP1 +RNF168 +CHST13 +PRICKLE2 +KBTBD12 +SPATA5 +BBS12 +DCLK2 +ADGRA3 +TRIM60 +FREM3 +MMAA +ZBTB49 +TIGD2 +RASSF6 +RBM46 +SGMS2 +MIER3 +CDC20B +UGT3A2 +TENT2 +DCP2 +NIM1K +LIX1 +ZNF366 +FAM151B +PRSS35 +LCA5 +OLIG3 +TXLNB +DACT2 +C6orf118 +ZNF92 +GALNTL5 +DDX53 +ZNF679 +RNF133 +CDC14C +THAP5 +CCDC71L +PKD1L1 +GIMAP7 +ZNF467 +BHLHA15 +BMPER +ZNF800 +CNBD1 +SLC30A8 +COL22A1 +SNX31 +TMEM64 +ZNF596 +IDO2 +STKLD1 +KCNV2 +OLFML2A +TMEM252 +QSOX2 +GLIS3 +ZNF883 +ZNF169 +TENT5D +SPIN3 +FAM47B +SUPT20HL2 +TCEANC +ZCCHC12 +ARX +FAM170B +TMEM273 +FUT11 +OIT3 +PWWP2B +SSBP4 +CLEC4C +ACTL10 +DHX36 +HTR3C +GIMAP1 +GPHA2 +S100Z +COMMD6 +XAGE3 +XAGE5 +PSORS1C1 +PSORS1C2 +NUDT10 +ADAMTS15 +ADAMTS16 +ADAMTS17 +ADAMTS18 +COX7B2 +GSX2 +KCNG3 +PPP1R18 +ZNF525 +ZNF431 +ZNF721 +ANKRD24 +ZNF384 +ADAMTS19 +ASXL1 +SYNPO2 +SPACA4 +RHOV +UBE2L5 +NLRP6 +ZNF675 +CLYBL +FAM9A +FAM9B +FAM9C +SPTSSA +PTCRA +POLR3H +ABHD3 +PGAM5 +B3GNT6 +HIGD2A +KRT24 +CYS1 +AGO3 +AGO4 +SCAMP5 +SDR16C5 +PRXL2C +ZNF367 +ANTXRL +PLPP4 +METTL15 +MPZL3 +IMMP1L +OR56B4 +KRT78 +RILPL2 +DNAH10 +AMN1 +DTX3 +METTL7B +ZFC3H1 +MYRFL +PLBD2 +GARIN6 +CCER1 +EEF2KMT +PIANP +DCP1B +ANO6 +ARID2 +METTL21C +VSTM4 +PAOX +FAM24B +ADCY4 +FAM227B +GRAMD2A +LCTL +UBR1 +PATL2 +LDHD +FCSK +MLKL +ZNF778 +ACSF3 +WDR90 +EME2 +NLRC3 +NSMCE1 +ZNF48 +LKAAEAR1 +DZIP1L +TTC21A +MCEMP1 +ZNF627 +DAND5 +ZNF585A +NLRP7 +GGN +CADM4 +THAP8 +U2AF1L4 +ZNF626 +NIBAN3 +ADM5 +LCE4A +ALG14 +FAM76A +FYB2 +TMEM201 +TMEM61 +CYP4Z1 +FAAP20 +CDCP2 +SLC5A9 +CC2D1B +NBPF11 +NUDT17 +TXLNA +DYNLT5 +PLD5 +C1orf100 +SPAG17 +SLFNL1 +KRTCAP2 +CRTC2 +IBA57 +FAM209A +RNF215 +APOBEC3A +APOBEC3F +FOXD4L1 +CFAP221 +VWA3B +CREG2 +TET3 +GKN2 +TEX37 +ANKRD23 +APLF +PIKFYVE +KRTCAP3 +FAM237A +TMEM17 +SPRED2 +TIGD1 +CFAP20DC +KCTD6 +LIPH +ARL13B +DHFR2 +HTR3D +RPL22L1 +SLC51A +FBXO45 +KLHDC8B +MUC20 +GABRR3 +CEP112 +DHRS7C +TVP23C +CENPV +FLCN +PLD6 +ARHGAP27 +ZNF385C +SAMD14 +LYRM9 +SLC16A13 +SPEM2 +CENPX +LRRC45 +SLC39A11 +TRIM65 +UNC13D +RDM1 +SPNS3 +FBXO15 +RAB12 +ZBTB7C +ZNF584 +ZSCAN4 +HACD2 +STT3B +DNAH12 +PDE12 +DENND6A +TIGIT +C4orf46 +SLC10A4 +TIGD4 +TMEM154 +SMIM14 +TMEM192 +RWDD4 +PRIMPOL +TAPT1 +SPATA24 +DNAJC18 +FAM153B +RANBP3L +CCDC125 +GAPT +CMYA5 +STK32A +TCTE1 +KHDRBS2 +TRIM39-RPP21 +C7orf33 +TMEM184A +ADCK5 +TSNARE1 +TUBB +R3HCC1 +PRSS55 +C8orf74 +HTRA4 +ADAM32 +ERICH5 +LGI3 +TMEM268 +C9orf72 +CCDC171 +NAIF1 +FAM219A +CCDC107 +ANKS6 +SUSD3 +CT83 +SLC25A43 +RTL3 +NRK +INTS6L +ZNF449 +VMA21 +TMEM31 +PAGE2 +CDY2B +ANO5 +CERS3 +PDILT +NLRP11 +HIPK1 +SLC44A5 +AMER3 +MTLN +C2orf69 +DIPK2A +SENP5 +USF3 +TRIML2 +LVRN +SLC36A1 +C6orf163 +DHRSX +SAMD9L +AMER2 +ATAD3C +USP12 +PLAC9 +MTIF3 +GSX1 +OR8U1 +OR4C16 +OR4C11 +OR4S2 +OR4C6 +OR5D14 +OR5L1 +OR5D18 +OR5AS1 +OR8K5 +OR5T2 +OR8H1 +OR8K3 +OR8J1 +OR8U3 +OR5M3 +OR5M8 +OR5M11 +OR5AR1 +LRRC55 +SMTNL1 +YPEL4 +MED19 +TEX47 +ZNF804B +CABCOCO1 +TMEM26 +ZCCHC24 +ENKUR +ARMC3 +UNC5B +STOX1 +FAM241B +TYSND1 +ZNF25 +GJD4 +CCNY +RTKN2 +TBATA +HYLS1 +TMEM218 +SLC37A2 +OR8B12 +OR8G5 +OR10G8 +OR10G9 +OR10S1 +OR6T1 +OR4D5 +TBCEL +TLCD5 +MRPL21 +TPCN2 +SPATA19 +OR6Q1 +OR9I1 +OR9Q1 +OR9Q2 +OR1S2 +OR1S1 +OR10Q1 +OR5B17 +OR5B21 +GLYATL2 +MPEG1 +OR5A2 +OR5A1 +OR4D6 +OR4D11 +PATL1 +OOSP2 +MS4A15 +VWCE +CYB561A3 +PPP1R32 +GDPD4 +DDIAS +CCDC83 +LTO1 +LRTOMT +ERICH6B +CBY2 +DLEU7 +FAM124A +SKA1 +CFAP53 +DOK6 +ATOH7 +OTUD1 +HEPACAM +OAF +TIGD3 +FAM181B +CCDC89 +LRRC63 +RNF152 +ZNG1E +ZNF438 +SLC16A9 +FAM13C +MARCHF8 +HNRNPA3 +ZNF485 +RASGEF1A +REEP3 +JMJD1C +UCMA +FAM171A1 +SLC39A12 +NSUN6 +ARL5B +LRRN4CL +HNRNPUL2 +ALKBH3 +EEF1AKMT1 +SKA3 +MICU2 +SPATA13 +CPNE2 +ADGRG5 +PRSS54 +CES5A +AK9 +NT5DC1 +CALHM4 +ZUP1 +FAM162B +TBC1D32 +BEND6 +GSTA5 +OPN5 +ADGRF4 +ADGRF5 +TDRD6 +SPATS1 +RSPH9 +LRRC73 +OARD1 +KIF6 +TMEM217 +FGD2 +PI16 +C6orf89 +ARMC12 +SMIM29 +LEMD2 +ZBTB9 +ZBTB12 +C6orf136 +H2AC1 +KDM1B +RBM24 +RNF182 +PHACTR1 +SMIM13 +SYCP2L +PXDC1 +ZSCAN25 +FAM200A +VWDE +PRPS1L1 +POLR1F +SP8 +JAZF1 +PPP1R35 +GPC2 +BRAT1 +SDK1 +FOXK1 +MMD2 +DAGLB +CCZ1B +THSD7A +VSTM2A +TMED4 +MTURN +PRR15 +SRRM3 +RSBN1L +ELAPOR2 +LRWD1 +FAM185A +FBXL13 +NAPEPLD +ATXN7L1 +CDHR3 +BEND7 +LNX2 +ADGRG3 +HS3ST5 +GPRC6A +RFX6 +SLC35F1 +FAM83B +ADGRF2 +TSPO2 +UNC5CL +KCTD20 +PXT1 +LHFPL5 +SCUBE3 +ZSCAN23 +NKAPL +FAM217A +TMEM130 +FERD3L +NYAP1 +SLC29A4 +RSPH10B +ITPRID1 +ZNRF2 +SEMA3D +MAPK15 +SPDYA +MS4A6E +VGLL2 +CNPY4 +DEFB105A +DEFB106A +DEFB107A +DEFB108B +DEFB110 +DEFB112 +DEFB113 +DEFB114 +DEFB115 +DEFB116 +DEFB119 +DEFB121 +DEFB123 +DEFB124 +DEFB125 +DEFB128 +DEFB130A +ATP6V0D2 +ATP6V1C2 +CTAG1A +CNOT6L +GAS2L2 +AKR7L +CDC26 +SLC17A8 +RNASEH1 +AFG1L +STAC3 +PELI3 +POLR2J2 +STH +SPESP1 +IL27 +TMEM9 +ZNF396 +NEIL2 +STXBP4 +FNDC5 +HEPACAM2 +TECRL +PRR14L +EPHX4 +CDY1B +SERHL2 +RICTOR +EIF4E1B +IPMK +ZBTB38 +SLC25A30 +LCLAT1 +CADM2 +TMEM244 +GPATCH11 +ZNF620 +ANKRD18A +MMS22L +WASHC2C +EBF3 +WDR27 +CERS6 +MSRB3 +ZDHHC20 +ANGPTL5 +YTHDF3 +RALGAPA1 +KCTD13 +ASPHD1 +ETFBKMT +METAP1D +UBN2 +LRRC43 +BRWD3 +EHBP1L1 +SNX32 +CXorf58 +FBXO33 +TTLL10 +TSGA10IP +RNF169 +CALHM5 +BPIFC +LCORL +CNIH2 +AKNAD1 +TBC1D28 +PHYHD1 +ZDHHC24 +MCM9 +PROSER2 +SLC41A1 +C11orf86 +MEIOB +LPCAT4 +NUDT8 +LYG2 +VXN +OR6C74 +OR6C3 +NAALADL2 +TMEM256 +OR2T6 +ZDHHC23 +LCE5A +KRTAP15-1 +MORN5 +OR1L4 +CALHM1 +MPV17L +TMEM86B +CBARP +TAC4 +CFAP65 +TMCO4 +CFAP299 +PLA2G4F +TXNDC8 +MCOLN2 +ANKK1 +LRRC57 +MYADML2 +EIF2S3B +CT47A11 +EPGN +LHFPL7 +MBLAC1 +TCP11L2 +ZNF718 +TEX49 +RASGEF1C +RNF144B +ELMOD2 +H2BC1 +COL24A1 +OOSP1 +OR52B2 +PCSK9 +NPNT +DYNLT2B +PDZD9 +INAFM1 +SMCO1 +C19orf38 +BCL6B +CNEP1R1 +SYT14 +PAN3 +ANKRD31 +ZNF549 +COL6A5 +SYCE2 +TMEM196 +OR4C3 +OR4S1 +HMCN2 +CDRT15L2 +STEAP1B +NUDT14 +PTF1A +NATD1 +CCDC110 +LMNTD2 +GK5 +EML3 +CCDC197 +SCML4 +SERPINA11 +ST6GALNAC3 +MFSD8 +TMEM151A +TCERG1L +LYSMD2 +BCLAF3 +NUTM1 +MAMDC2 +GLIPR1L1 +MAP7D2 +WDR72 +C10orf67 +OR51F1 +NPB +KANK3 +HEATR9 +SUN3 +SERINC5 +TINCR +FRMD3 +CATSPERE +CATSPERD +PLCXD2 +ZNF683 +ARHGAP30 +GCSAM +RNF214 +C9orf43 +CFAP126 +NEGR1 +GPX6 +SHPRH +CCDC96 +KLHL34 +UTS2B +SNX33 +TAB3 +C2orf72 +FAM133B +ANKS4B +SVIP +ALS2CL +NCR3 +LY6G6F +HSPA12A +SGMS1 +NALCN +TMIE +WFDC11 +WFDC9 +MRGPRX1 +ASPM +BOD1L1 +TAS2R39 +TAS2R40 +TAS2R41 +TAS2R43 +TAS2R31 +TAS2R45 +TAS2R46 +TAS2R30 +TAS2R19 +TAS2R20 +TAS2R50 +IL4I1 +FAM205A +CYP4X1 +TUBB8B +MAGI3 +PRSS33 +PYDC1 +FDCSP +TIPRL +STEAP2 +NPHP4 +SEC14L3 +BRD3OS +TAS2R33 +TAS2R36 +TAS2R37 +BEST4 +HS6ST3 +MDGA1 +MAGEA2B +NPAS4 +RGL4 +NPSA +NAP1L5 +ADGRF1 +PGBD2 +PGBD3 +DAOA +ATP5MGL +SELENOH +SSX7 +WFDC10B +IFNL2 +IFNL3 +IFNL1 +AQP11 +OR51B5 +OR10AG1 +OR5J2 +RAB40AL +POC1B +ZNF311 +C10orf53 +FUOM +JAKMIP3 +STK32C +BLOC1S2 +RBM20 +NUTM2E +MKX +OR4C13 +OR4C12 +CSNK2A3 +OR51V1 +TRIM49B +MAJIN +SLC25A45 +BCL9L +FOXR1 +CCDC153 +OR8D1 +OR8D2 +OR8B4 +OR9G4 +P4HA3 +PGM2L1 +KLHL35 +KCTD21 +CRACR2B +TMEM80 +CCDC88B +TTC9C +SLC22A24 +RCOR2 +HARBI1 +IGSF22 +OR10A4 +OLFML1 +OTOGL +CD163L1 +ZNF740 +RASSF3 +B4GALNT3 +OR6C6 +ANKRD52 +SLC39A5 +SPRYD4 +ADGRD1 +MORN3 +DPY19L2 +CLEC9A +GAS2L3 +MYO1H +HECTD4 +KSR2 +GATC +C12orf40 +MUC19 +GXYLT1 +TMPRSS12 +CHAMP1 +SIAH3 +KCNRG +TMEM272 +SLC46A3 +GPR137C +PROX2 +ZDHHC22 +TMED8 +SLC25A47 +OR4K3 +TSSK4 +FAM177A1 +CEP170B +TEDC1 +SLC24A5 +PRTG +REC114 +GOLGA6L2 +OR4N4 +SAXO2 +FAM98B +PLA2G4D +GOLGA6L1 +GOLGA8G +FBXL22 +NOMO2 +TERB1 +CES4A +EXOC3L1 +NPW +BRICD5 +PGP +GREP1 +C16orf54 +INO80E +NUDT7 +ZNF843 +NHLRC4 +UQCC4 +TMEM114 +CLEC18C +FADS6 +HID1 +TSEN54 +UBALD2 +TMEM235 +CCDC57 +HEXD +VMO1 +C17orf58 +MILR1 +RNF227 +CDRT4 +KANSL1 +CFAP97D1 +FAM171A2 +MEIOC +TTLL6 +NEK8 +PIGW +C17orf78 +CISD3 +GSDMA +SLC13A5 +TMEM102 +CAVIN1 +SLC26A11 +ENDOV +GDPD1 +NDUFAF8 +LGALS9B +METRNL +LAMA1 +KCTD1 +DYNAP +BOD1L2 +SIGLEC15 +PTGR3 +SMIM21 +HMSD +SSC5D +ZNF547 +ZIK1 +ZNF776 +ZSCAN1 +ZNF780A +ACTMAP +PRR19 +TMEM145 +CXCL17 +ZNF575 +LYPD5 +ZNF283 +PPP1R37 +NKPD1 +TPRX1 +MAMSTR +IZUMO1 +EMC10 +KLK9 +SIGLECL1 +ZNF615 +ZNF841 +ACTL9 +OR2Z1 +ZNF763 +ZNF844 +SCGB2B2 +WDR62 +ZFP82 +VSTM1 +TMEM150B +GARIN5B +SMIM24 +SLC25A41 +MBD3L5 +OR10H5 +NWD1 +SLC25A42 +ZNF493 +ODF3L2 +ZNF875 +TAFA3 +RIIAD1 +THEM5 +C1orf167 +OR2L13 +SLC9C2 +OR14A16 +CYP4A22 +C1orf185 +NBPF15 +EEIG2 +SYPL2 +CYB561D1 +ANKRD34A +RSPO1 +EPHA10 +SPATA46 +ZNF326 +BTBD8 +RIMKLA +SLC25A34 +C20orf204 +SIRPB2 +C20orf203 +KRTAP13-4 +SEC14L4 +SH2D6 +NT5DC4 +CCDC150 +RNF149 +ALKAL2 +CCDC141 +STPG4 +RTP5 +FAM240C +DNAJC5G +ERICH2 +IAH1 +HYCC2 +UNC80 +RUFY4 +RGPD4 +DUSP28 +SLC9A9 +EOGT +EPHA6 +FBXW12 +C3orf38 +HTR3E +ZNF619 +ZNF621 +RABL3 +PRR23E +IGSF10 +C3orf33 +CCDC66 +SLC9C1 +TCAIM +ZNF852 +ZNF660 +SUMF1 +RPUSD3 +PRRT3 +DPH3 +C3orf70 +TPRG1 +IQCM +DCAF4L1 +CYP4V2 +DOK7 +RNF212 +GPRIN3 +COX18 +YIPF7 +FRYL +RNF175 +FAM200B +STPG2 +C4orf54 +EFCAB9 +SH3PXD2B +FAM153A +ARL10 +KIAA0825 +GPR150 +DTWD2 +RELL2 +RIMOC1 +SLC36A3 +KIF4B +OR2V2 +RNF180 +SREK1IP1 +ZNF454 +RGMB +CEP57L1 +PPIL6 +DCBLD1 +CAGE1 +PRR18 +HCG22 +PNPLA1 +TREML4 +RPL7L1 +POM121L12 +CNPY1 +SPDYE1 +TCAF2 +ZNF775 +ATG9B +ZNF789 +LSMEM1 +XKR6 +NSMCE2 +ZNF707 +FAM83H +MICU3 +ZFP41 +SCARA5 +TRIQK +DPY19L4 +FBXO43 +NKAIN3 +PPP1R42 +CRB2 +SCAI +CFAP157 +SPATA31E1 +LCN12 +PAXX +TPRN +TUSC1 +FAM78A +LURAP1L +OR13C9 +OR13D1 +FOXD4L3 +ATP11C +NLRP2B +H2BW2 +YIPF6 +CFAP47 +FAM133A +MAGEB18 +TMSB15B +P2RY8 +ILDR1 +STON1-GTF2A1L +TRARG1 +LIN9 +TRIM59 +KRT6C +TRIM42 +EIF4E3 +FAM149B1 +RFESD +VN1R2 +VN1R3 +VN1R4 +VN1R5 +KLHL10 +DHRS4L2 +POTED +C14orf39 +CCDC85C +H2AC21 +DDX51 +TTC6 +TAAR6 +KRT73 +ZAR1 +RAB37 +MMAB +SERPINA9 +PPM1J +SNAI3 +H3C15 +UBAC2 +CHSY3 +KRTAP7-1 +KRTAP8-1 +KRTAP11-1 +KRTAP19-1 +KRTAP13-2 +KRTAP13-3 +KRTAP23-1 +KRTAP6-1 +KRTAP6-2 +KRTAP6-3 +KRTAP19-2 +KRTAP19-3 +KRTAP19-4 +KRTAP19-5 +KRTAP19-6 +KRTAP19-7 +KRTAP20-1 +KRTAP20-2 +KRTAP21-1 +KRTAP21-2 +KRTAP22-1 +KRTAP20-3 +FAM151A +NLRP9 +NLRP10 +NLRP14 +S100A7A +GPIHBP1 +CLEC4D +IFNE +RAB7B +TAS2R60 +ANO9 +HCAR2 +FFAR4 +KCNK18 +ST8SIA6 +DUSP29 +LUZP2 +CENATAC +TMEM225 +OR8D4 +VSIG10L2 +OR5F1 +OR5AP2 +ANKRD13D +ANKRD42 +B4GALNT4 +OR52L1 +OR2AG2 +C1QL4 +TMEM119 +KRT79 +TAFA2 +C1QTNF9 +RNASE10 +VSX2 +TMEM202 +PRSS53 +RAB43 +JMJD8 +CIBAR2 +TMEM95 +METTL2A +C17orf67 +ENPP7 +OXLD1 +CCDC137 +ARL16 +MSL1 +LRRC30 +CPLX4 +ZNF181 +ZNF260 +ZNF546 +MYPOP +NANOS2 +ADAMTSL5 +CLEC4G +LINGO4 +RXFP4 +ANKRD45 +C1orf174 +KLHL17 +TMEM240 +TMEM52 +BRINP3 +ZBTB8OS +TFAP2E +ZNF678 +PRSS38 +CCDC190 +ARMH1 +ZFP69 +SLC35E4 +TEX33 +SMIM45 +SPOPL +CYP27C1 +MROH2A +ESPNL +FAM166C +PRR30 +C2orf74 +CCDC39 +IHO1 +KY +GADL1 +CCDC158 +TMPRSS11A +TRIML1 +LRRC66 +NAT8L +SLC6A19 +STING1 +FAM170A +ARSI +H3Y2 +ANKRD34B +SLC35D3 +ZC3H12D +MYLK4 +DPPA5 +CLPSL1 +TREML1 +ZNF680 +UNCX +COL28A1 +ABCB5 +FAM221A +CTAGE6 +TSPAN33 +AGBL3 +KLHL38 +NRBP2 +ZNF517 +WDR97 +TMEM249 +RSPO2 +POTEA +ZDHHC21 +ACER2 +RTL5 +NHSL2 +PABPC1L2A +NEXMIF +BEX5 +TCEAL5 +VSIG1 +ZC3H12B +SATL1 +DCAF12L2 +RTL4 +LHFPL1 +EZHIP +LIPM +CYP26C1 +VWA2 +NANOS1 +LRIT2 +HMX3 +AKR1C8 +MALRD1 +EBLN1 +OR52B6 +OTOG +DCDC1 +POU2AF2 +MS4A10 +OR2AT4 +HEPHL1 +OR10A2 +OVCH2 +SMCO2 +OVCH1 +SYT10 +ACSM4 +ANKRD33 +OR6C2 +OR6C4 +H1-7 +OR8S1 +FREM2 +NEK5 +OR6S1 +SLC35F4 +LRRC9 +COX8C +GLDN +GOLGA6A +TMC3 +ZNF774 +FMN1 +C16orf96 +ZKSCAN2 +ATXN1L +PKD1L3 +CD300E +SMTNL2 +NACA2 +KRT27 +SLFN14 +STAC2 +ANKRD62 +VSTM2B +ZNF850 +NCCRP1 +SYCN +LEUTX +ZNF404 +ZNF284 +C19orf81 +ZNF677 +RFPL4A +ZSCAN5B +ZSCAN22 +NANOS3 +PALM3 +RD3 +AADACL4 +PRAMEF5 +HNRNPCL1 +PRAMEF9 +PRAMEF10 +CCDC18 +OR6F1 +OR14K1 +OR2W3 +OR2T8 +OR2T3 +MYBPHL +OR10R2 +FCRL6 +KCNT2 +BARHL2 +DYNLT4 +OR2T29 +ARHGAP40 +RSPO4 +TGM6 +XKR7 +MSGN1 +CRACDL +FIGLA +NOTO +ZNF892 +NCKAP5 +FOXI3 +EVX2 +CDKL4 +SH3RF3 +GPR148 +LRRIQ4 +SAMD7 +AADACL2 +GPR149 +ZNF860 +TMPRSS7 +CD200R1L +PAQR9 +RTP2 +OSTN +ATP13A5 +REELD1 +PRSS48 +SOWAHB +LRIT3 +MSANTD1 +SLC10A6 +HSD17B13 +PFN3 +ZNF879 +PLCXD3 +IRGM +FBLL1 +MCIDAS +ACTBL2 +FAM174A +MTX3 +RSPH4A +ECT2L +EYS +ZNF391 +ZFP57 +SEPTIN14 +MACC1 +OR6V1 +OR2A12 +OR2A1 +GNAT3 +MOGAT3 +GARIN1A +STRA8 +KLRG2 +PRSS51 +SLC10A5 +ADGRD2 +QRFP +OR1J1 +OR1B1 +KIF24 +IGFBPL1 +CAVIN4 +ZNF81 +ITIH6 +LANCL3 +MPC1L +DCAF8L2 +SOWAHD +OR13H1 +CCDC160 +CXorf66 +DGAT2L6 +RAB41 +ARSH +MAGEB5 +CENPVL3 +GNG5B +TUBB8 +LRRTM1 +LRRTM3 +CATSPER3 +TUBB2B +SLC35B2 +SERINC2 +NME9 +OTOP3 +C6orf52 +TBX10 +GATD1 +AMIGO2 +TMEM255B +RBPMS2 +ANKDD1A +ARPIN +ACSM2B +CLEC18A +CTU2 +SKA2 +MCRIP1 +SELENOV +ZNF530 +SHISAL2A +FAM131C +GEN1 +FTCDNL1 +WDR53 +LNP1 +CFAP100 +SLC6A18 +NIPAL4 +HCN1 +NUP43 +ZNF713 +WDR86 +GJC3 +FOXD4L4 +NMNAT3 +PLET1 +RTN4RL2 +GPR142 +DNAAF3 +C6orf58 +ZNF429 +RAET1G +RILPL1 +LCE1A +LCE1B +LCE1C +LCE1D +LCE1E +LCE1F +LCE2A +LCE2C +LCE2D +LCE3A +LCE3B +LCE3C +LCE3E +TBC1D26 +TAS2R42 +ZACN +SLCO4C1 +PADI6 +RAMACL +ZNF445 +KRT26 +RGSL1 +ANKRD37 +KRTAP12-2 +SPATA12 +KRTAP12-1 +KRTAP10-10 +GPR141 +ZNF233 +TICAM2 +POLN +BMP8A +VCY1B +LILRA5 +BPIFB3 +DPPA3 +RFLNB +IRF2BP2 +ZBTB41 +NANOGNB +TMPRSS9 +GLT6D1 +PRAC2 +PRSS41 +GSTK1 +USP50 +DND1 +FBXW10B +NDUFS7 +PTCHD3 +NHLRC2 +CCDC172 +GALNT18 +NCR3LG1 +FAM111B +TMEM179B +TBC1D10C +DNAJB13 +KRT77 +PTPRQ +C12orf42 +ASPG +TEX9 +KIF7 +ZNF710 +HDDC3 +TEPP +SPEM1 +EFCAB5 +LRRC37A3 +ANKRD30B +CCDC178 +ATP9B +PEAK3 +HSD11B1L +TEX45 +ZNF699 +TMEM205 +YJEFN3 +SBSN +ZNF829 +ZNF568 +B3GNT8 +IGFL1 +ZSWIM9 +ZNF773 +DRAXIN +SPATA21 +SVBP +TEX38 +MROH7 +MIGA1 +PEAR1 +SFT2D2 +MIA3 +STUM +FAM89A +PFN4 +FAM228B +ANKRD36 +RBM43 +CERKL +CATIP +RBM44 +AQP12A +LHFPL4 +TOPAZ1 +C3orf62 +STIMATE +NRROS +C5orf34 +MAST4 +SIMC1 +GJB7 +VWC2 +TRIM73 +NAT16 +SLC26A5 +LHFPL3 +KCP +SPATC1 +ENHO +PTAR1 +ERCC6L2 +SWI5 +C9orf50 +PNPLA7 +AGRN +CYSRT1 +LRRC10 +RAB15 +SLC27A1 +ZC3H6 +KLHL30 +USP17L2 +CA13 +ENTPD8 +TRIM74 +CENPS +CATSPER4 +NHLRC1 +RNF148 +RBMY1B +RBMY1D +RBMY1E +RBMY1J +KCTD8 +KCTD4 +IL31 +KRTAP10-4 +KRTAP10-6 +KRTAP10-7 +KRTAP10-9 +KRTAP10-1 +KRTAP10-11 +KRTAP10-2 +KRTAP10-5 +KRTAP10-8 +KRTAP10-3 +KRTAP12-3 +KRTAP12-4 +KRTAP10-12 +AMIGO3 +MRGPRG +ZKSCAN4 +SUMO4 +CENPW +SOGA3 +CEP85L +NPSR1 +C6orf120 +KRTAP5-1 +KRTAP5-3 +KRTAP5-4 +KRTAP5-10 +TBPL2 +NSUN4 +THEMIS +RASL11A +GPR153 +PEDS1 +PEDS1-UBE2V1 +ILDR2 +SLC22A25 +SKIDA1 +WASHC2A +SH2D4B +GPR15LG +SLC16A12 +CC2D2B +ENO4 +ARMS2 +TEX36 +C10orf143 +IFITM5 +OR56B1 +INSC +FIBIN +C11orf96 +SLC22A10 +SPDYC +LIPT2 +VSTM5 +OR8G3P +CLEC2A +CLEC12B +REP15 +CCDC184 +C12orf75 +CFAP73 +TMEM233 +KMT5A +C1QTNF9B +SHISA2 +NHLRC3 +SERP2 +TOMM20L +RTL1 +TMEM179 +NANOGP8 +CCDC9B +TNFAIP8L3 +C2CD4B +INSYN1 +SBK1 +C16orf87 +C16orf86 +GLTPD2 +INCA1 +SCIMP +C17orf100 +SPDYE4 +TMEM220 +SHISA6 +LRRC75A +TMIGD1 +CCL4L1 +C17orf98 +CCDC103 +RPRML +YPEL2 +BTBD17 +PVALEF +POTEC +CLEC17A +ZNF728 +RPSA2 +RGS9BP +KRTDAP +ZNF790 +CEACAM16 +BLOC1S3 +MEIOSIN +IGFL3 +ZNF808 +ZNF888 +ZNF761 +TMEM238 +ZNF470 +ZNF749 +ZNF324B +C1QTNF12 +HES5 +SMIM1 +RNF207 +TMEM82 +TRNP1 +CD164L2 +TRABD2B +LDLRAD1 +GBP7 +C1orf146 +DIPK1A +SLC6A17 +NOTCH2NLA +LYSMD1 +HRNR +FLG2 +CFAP141 +C1orf53 +TMEM81 +CAPN8 +COA6 +OR14A2 +SMIM26 +EFCAB8 +FAM209B +KRTAP26-1 +SMIM34 +CCDC188 +LRRC75B +MFSD2B +PCARE +TMEM247 +TSPYL6 +C2orf78 +BOLA3 +C2orf81 +C2orf68 +SLC9A4 +SP5 +PLEKHM3 +C2orf80 +RESP18 +SNORC +OR6B2 +ZNF662 +CDHR4 +INKA1 +IQCF2 +IQCF5 +MUSTN1 +VGLL3 +PRR23B +PRR23C +PLSCR5 +ANKUB1 +LEKR1 +TMEM212 +C4orf50 +SMIM20 +BEND4 +GRXCR1 +TMPRSS11F +LRRC14B +ANXA2R +TEX43 +SMIM32 +PROB1 +C5orf46 +ARHGEF37 +PSMG4 +SFTA2 +CLPSL2 +BNIP5 +GLYATL3 +GFRAL +LIN28B +SAMD5 +IYD +NUPR2 +GTF2IRD2B +LAMTOR4 +FEZF1 +FAM180A +XKR5 +NUGGC +ALKAL1 +XKR9 +RBM12B +MROH5 +MAFA +SPATA31A6 +SPATA31D4 +SPATA31D3 +SPATA31D1 +C9orf153 +IER5L +CFAP77 +LCN15 +AJM1 +LRRC26 +MYMK +LOC389831 +MAP3K15 +SPACA5 +USP27X +CENPVL1 +PAGE2B +ZCCHC13 +LOC389895 +UBE2NL +CSAG3 +C1QL3 +NKX1-2 +OR52K1 +OR52I1 +OR51D1 +OR52A5 +OR51B6 +OR51M1 +OR51Q1 +OR51I1 +OR51I2 +OR52D1 +OR52H1 +OR52N4 +OR56B2P +OR52N5 +OR52N2 +OR52E6 +OR52E8 +OR52E4 +OR52E5 +OR56A3 +OR56A5 +OR10A6 +ACCSL +OR4X1 +OR5D13 +OR5D16 +OR5W2 +OR8H2 +OR8H3 +OR5T3 +OR5T1 +OR8K1 +OR5M9 +OR5M10 +OR5M1 +OR9G1 +OR5AK2 +OR5B2 +OR5B12 +OR5AN1 +OR4D10 +OR4D9 +OR10V1 +LRRC10B +GPR152 +TRIM77 +IZUMO1R +KDM4E +BSX +OR6X1 +OR6M1 +OR10G4 +OR10G7 +OR8B3 +OR8A1 +OR5BS1P +OR6C1 +OR6C75 +OR6C76 +OR6C70 +OR4N2 +OR4K2 +OR4Q2 +OR4K13 +OR4K17 +OR4N5 +OR11G2 +OR11H7 +OR11H4 +RNASE9 +OR5AU1 +SERPINA2 +OR4M2 +KBTBD13 +UBAP1L +SKOR1 +ANKRD34C +GDPGP1 +OR4F6 +OR4F15 +C1QTNF8 +PTX4 +PABPN1L +ARL5C +KRT39 +ONECUT3 +OR7G2 +OR7G3 +OR7A10 +NUDT19 +ZNF793 +ACP7 +ERFL +PINLYP +PPIAP59 +ZNF805 +HES3 +PRAMEF12 +PRAMEF8 +PRAMEF18 +PRAMEF17 +PLA2G2C +FRRS1 +VHLL +OR10K2 +OR10K1 +OR6Y1 +OR6K3 +OR10J4 +VSIG8 +OR11L1 +OR2L8 +OR2AK2 +OR2L3 +OR2M2 +OR2T33 +OR2M7 +OR2G6 +SPINT4 +LOC391322 +PTRHD1 +SULT6B1 +DYTN +TRIM61 +TRIM75 +MYL12BP2 +HELT +TAF11L2 +TAF11L4 +TAF11L6 +H3Y1 +OR10AC1 +OR2A25 +USP17L8 +USP17L7 +GDF6 +MAP1LC3BP1 +FAM221B +OR13J1 +OR13C2 +OR1L6 +OR5C1 +OR1K1 +LCN9 +MAGEB6B +GLOD5 +ARL13A +NCBP2L +ELFN1 +AGMO +IQCA1L +GRID2IP +OR2A5 +MUC21 +SPRED3 +TMEM200B +SLC25A35 +MEX3D +EEIG1 +SMIM10L2A +HEATR4 +MYO18A +CCDC187 +SHC4 +CTXN2 +C10orf120 +EEF1AKMT2 +FOXI2 +FAM180B +PCNX3 +TRIM49D1 +C11orf87 +HOATZ +PATE2 +PATE4 +SNX19 +C12orf76 +SERTM1 +PLEKHD1 +C14orf180 +FAM174B +LOC400499 +KNOP1 +C17orf97 +MED11 +GRAPL +TEX19 +PRSS57 +VMAC +SIGLEC16 +ZNF880 +ZNF772 +PRAMEF4 +PRAMEF13 +SH2D5 +NCMAP +C1orf141 +C1orf226 +CLEC20A +NBPF9 +FAM177B +DEFB132 +C20orf202 +LRRC74B +CHCHD10 +IL17REL +EML6 +PAIP2B +RGPD1 +ANKRD36C +FSIP2 +C2orf66 +ASB18 +IQCF3 +C3orf85 +FOXL2NB +C3orf80 +C4orf48 +DTHD1 +PRR27 +AMTN +CCSER1 +C4orf3 +RGS7BP +C5orf63 +STMND1 +MCCD1 +SAPCD1 +RAB44 +CRIP3 +KLHL31 +LRRD1 +SMIM30 +PRRT4 +RAB19 +OR2A7 +USP17L1 +RBIS +SAMD12 +HACD4 +TMEM215 +TOMM5 +CENPP +C9orf152 +SNX30 +WDR38 +LCNL1 +FAM166A +SLC25A53 +SERTM2 +GOLGA7B +OR51C1P +OR51T1 +OR51A4 +OR51A2 +FIGNL2 +RNF223 +LDLRAD2 +OR2T2 +OR2T5 +OR14I1 +SRRD +VWC2L +OR5K2 +CFAP99 +OR2A42 +SOHLH1 +XKRX +KPNA7 +SPACDR +GRIFIN +IGLON5 +UFSP1 +IFITM10 +OR2T27 +OR2T35 +OR4A47 +OR4C45 +OR5H14 +OR5H15 +OR5K3 +OR5K4 +OR6C65 +OR6C68 +PLPP6 +APOBEC4 +ZBTB34 +HAPLN4 +CUEDC1 +SPINK6 +CTXN1 +YY2 +C16orf74 +SCGB1D4 +DENND10 +GTF2H5 +ANKHD1-EIF4EBP3 +POTEG +DUOXA2 +ERVFRD-1 +TAFA1 +TNFSF12-TNFSF13 +NOMO3 +SPINK14 +FNDC9 +TBC1D3B +TBC1D3C +CCL3L3 +ACBD7 +C10orf105 +C10orf62 +AGAP6 +DDI1 +DEFB103A +IDNK +LCN10 +BLID +DENND6B +C8orf82 +PIM3 +STX19 +VCX3B +RGS21 +ASTL +LHX8 +SLURP2 +KRTAP5-5 +MXRA7 +IFIT1B +KRTAP5-2 +KRTAP5-6 +TMEM41B +KRTAP5-7 +KRTAP5-11 +IQSEC3 +ZNF705A +SMCO3 +H3-5 +DBX2 +PLEKHG7 +ALG11 +MZT1 +OR11H12 +RNASE13 +CCDC196 +CCDC88C +GOLGA6L22 +GOLGA8B +EIF2AK4 +UNC13C +GOLGA6L9 +TTLL13 +SMIM22 +NPIPB4 +NPIPB15 +NPIPB7 +NPIPB12 +CTRB2 +RNASEK +GPR179 +HSBP1L1 +PLIN5 +ZNF506 +ZNF724 +PSG8 +PRAMEF11 +PRAMEF6 +HNRNPCL2 +UQCRHL +MICOS10 +FAM183A +ZYG11A +BCL2L15 +NUDT4B +H3-7 +H2BC18 +ETV3L +LRRC52 +RHEX +TRIM67 +MAP1LC3C +RIMBP3B +PIWIL3 +SHISA8 +ODF3B +CAPN14 +TMEM89 +IQCF6 +UQCC5 +MTHFD2L +TMEM150C +C4orf47 +MARCHF11 +C6orf226 +TMEM151B +ZC3H11C +OOEP +CALHM6 +ZNF716 +LOC441239 +TYW1B +SPDYE3 +SPDYE2 +AKR1B15 +CTAGE15 +OR4F21 +FAM90A7 +FAM90A16 +FAM90A8 +FAM90A18 +FAM90A9 +FAM90A10 +AARD +LRRC24 +SPATA31C1 +NUTM2G +ANKRD18B +STPG3 +NRARP +CENPVL2 +RTL8B +CT45A3 +CT45A5 +SPANXN4 +PGAM4 +CDNF +FRG2B +OR5B3 +TSPAN11 +OR9K2 +OR4Q3 +OR4M1 +TARM1 +ANKRD65 +PRAMEF7 +PRAMEF25 +BECN2 +OR13G1 +SULT1C3 +GALNTL6 +OR2B3 +OR2J1 +OR2J3 +OR14J1 +OR10C1 +OR2I1P +PTCHD4 +RFPL4B +ZNF727 +OR2A2 +FOXB2 +FAM47C +SPDYE21 +SPDYE5 +LMOD2 +PRY2 +BPY2B +BPY2C +IGFL4 +ARHGEF35 +SULT1A4 +TARP +TRIM6-TRIM34 +ZNG1C +POTEE +PALM2AKAP2 +FRG2 +KPRP +LCE6A +LRRC37A2 +SPIN2B +GIMAP6 +LRRC18 +H2AB2 +H2AB1 +F8A2 +F8A3 +PPDPFL +IGIP +COA5 +TRIM72 +CISD2 +CCDC73 +EID3 +GPX8 +RNASE12 +PHOSPHO2 +RBMXL1 +SPANXN1 +SPANXN2 +CHAC2 +FBXO47 +SPANXN5 +RNF165 +PJVK +WEE2 +TIFAB +CLEC18B +C18orf32 +MS4A13 +SPRN +ARGFX +DEFB107B +DEFB104B +TPRX2 +DPRX +DUXA +DEFB106B +DEFB105B +OR8U8 +OR8U9 +OR9G9 +CT45A6 +CT45A1 +LURAP1 +C8orf58 +EOLA2 +SSX4B +SLX1A +CKMT1A +POLR2J3 +DNAJC25 +CCDC157 +NBDY +ATXN7L3B +DNAJC25-GNG10 +BOLA2 +PEF1 +KIR2DL5B +PRR5-ARHGAP8 +ANKRD30BL +ASPDH +FBXO48 +FAM72C +H4C15 +PRR9 +UGT2A2 +CPLX3 +NPS +CYB5RL +NPIPB13 +DEFB135 +DEFB136 +DEFB134 +CTXN3 +HIGD1C +SERINC4 +SCART1 +FAM229B +ZNF704 +MBOAT4 +ZNF674 +ACOT1 +ACOT6 +POTEM +DEFB109B +TMEM91 +HEPN1 +ECSCR +SPDYE14 +FAM110C +TRIM64B +MROH6 +FKBP1C +PRRT1B +AGAP9 +IQANK1 +AKAIN1 +TRIM49C +UBTFL1 +RAD21L1 +SCX +HNRNPA1L3 +NPIPA3 +NPIPA2 +ZNF487 +CPSF4L +INSYN2A +FAM163B +TMEM232 +SMIM5 +C11orf97 +ZC3H11B +SMIM15 +FAM25A +GRXCR2 +TMEM72 +MAP1LC3B2 +CT47B1 +C15orf62 +BTBD18 +TMEM253 +SPINK9 +LIPK +LIPN +RNF224 +ZNF862 +SLC35G6 +CCER2 +CCDC168 +MS4A4E +GOLGA8N +GOLGA6L4 +KRTAP24-1 +KRTAP27-1 +PGA3 +ZFP62 +PGA4 +TMPPE +CTAGE9 +SPDYE10 +CBLN3 +RNF222 +PRR21 +SPDYE9 +TMEM88B +FNDC10 +ZNG1F +C18orf63 +FAM25C +GSG1L2 +SDHAF1 +ARL14EPL +PIRT +EXOC1L +WIPF3 +DRGX +SYCE3 +ZCCHC18 +DEFB131A +NKX2-4 +SMIM10 +PPIAL4G +SMIM10L2B +CLDN25 +FAM83G +PHGR1 +MEIG1 +RASSF10 +ALG1L2 +SMIM23 +EVPLL +GAGE2B +GAGE13 +GAGE12G +CLRN2 +CCNI2 +PPIAL4D +LINGO3 +GOLGA6L24 +PRAMEF26 +TMEM200C +PRAMEF33 +USP17L4 +PRAMEF19 +PRAMEF20 +TMEM191C +ARRDC5 +IGBP1C +FAM90A22 +FAM90A23 +FAM90A14 +MT1HL1 +CCDC154 +SEBOX +USP17L3 +MAGEB17 +SPATA31C2 +PABPC1L2B +SLC35G4 +CBY3 +TAF11L5 +TAF11L3 +C16orf90 +LACTBL1 +SPINK8 +C19orf67 +FABP9 +FABP12 +C3orf84 +OSTCP2 +C4orf51 +URAD +LYPD8 +SBK2 +SYNDIG1L +TRIM64C +ZAR1L +SETSIP +FAM227A +RNF225 +ZNF723 +SH2D7 +MINDY4B +PRSS56 +HRCT1 +C6orf132 +GOLGA6L10 +SPATA31A1 +STMP1 +SRGAP2B +C13orf42 +SERPINE3 +ASCL5 +LOC647264 +RD3L +GMNC +TEX22 +ANHX +PPP1R3G +ZSCAN5C +PNMA6E +HNRNPCL3 +ANKRD33B +CASTOR1 +SKOR2 +GOLGA8S +XAGE1B +GOLGA8J +GOLGA8T +ZDHHC11B +ZBTB8A +GOLGA8K +FAM228A +ANXA8 +NBPF6 +OR1D4 +TRIM43B +XAGE1A +KRTAP4-11 +PRB2 +POTEI +CFC1B +CT47A7 +ASAH2B +MATCAP1 +FAM86B2 +NCF1 +FOXD4L6 +SPAG11A +FOXD4L5 +AQP12B +SRGAP2C +SCGB1C2 +RGPD3 +LGALS7B +PPIAL4A +SFTPA1 +GPR89A +TP53TG3C +TMEM236 +PHLDB3 +PPIAL4C +H3C13 +PRAMEF22 +PRAMEF15 +GOLGA6C +GOLGA6D +MBD3L4 +MBD3L3 +GSTT2B +GOLGA8M +POTEJ +MZT2A +ZG16 +FAM72B +ACTR3C +OCM +ZNF732 +LGALS9C +NME1-NME2 +LRTM2 +FER1L6 +BOLA2B +IQCJ +PCP4L1 +MSMP +PPAN-P2RY11 +H2AC19 +INS-IGF2 +ATXN8 +RNF208 +SPATA31A3 +GOLGA6L6 +SSX2B +CT47C1 +RGPD8 +BHLHA9 +FAM156B +MUC5B +SPATA31A5 +GOLGA8Q +TLCD2 +GXYLT2 +RHOXF2B +MROH1 +CT47A10 +CT47A9 +GOLGA8O +CT47A8 +CT47A6 +CT47A5 +CT47A4 +CT47A3 +CT47A2 +CT47A1 +ANXA8L1 +ZBTB8B +NUTM2A +NUTM2D +TSPY9 +TSPY3 +RSPH10B2 +NALF1 +KRTAP4-8 +GGTLC3 +TMEM191B +MAGED4 +KRTAP1-4 +MAGEA9B +CLEC19A +KRTAP2-2 +D2HGDH +KRTAP19-8 +GOLGA6L7 +PWWP4 +KRTAP9-1 +GTF2H2C +NXF2B +DEFA1B +OVOL3 +USP17L24 +USP17L25 +POTEF +USP17L26 +USP17L5 +LOC728392 +USP17L27 +TSPY4 +USP17L28 +TSPY8 +USP17L29 +USP17L30 +OPN1MW2 +METTL24 +DNLZ +SERF1B +GOLGA8H +SPDYE8 +C2orf92 +UQCC6 +CNTNAP3B +CCDC192 +MS4A18 +CCDC169 +DCDC2C +CCDC30 +MEIKIN +CDK11A +DMRTC1B +SLC35E2B +EIF3CL +SPANXB1 +SPANXA2 +NPIPB8 +NPIPB6 +LOC728743 +FAM90A17 +FAM90A19 +CROCC2 +ANKDD1B +C1GALT1C1L +FAM72D +NBPF8 +C12orf71 +NPIPB11 +CT45A2 +ZNF736 +PPIAL4F +ZNF705D +RPEL1 +SLC15A5 +TEX46 +GASK1A +AGAP5 +SPACA5B +CCR2 +PRR20B +SFTPA2 +PRR20C +PRR20D +PRR20E +NUTM2B +TP53TG3D +OC90 +TP53TG3B +PLIN4 +TRIM49D2 +GAGE12J +GAGE2D +GAGE12C +GAGE12B +GAGE12E +CASTOR2 +CCDC61 +GAGE12H +GAGE2A +DSTNP4 +MBD3L2B +RAD51AP2 +TMEM242 +PRAMEF14 +FAM72A +RGPD6 +SPDYE6 +PRR23A +CCDC175 +ZNF878 +OR4F29 +CEACAM18 +FHIP1A +UMAD1 +RGPD2 +TBC1D3 +TBC1D3H +CRPPA +SHISA7 +LOC729966 +MORN2 +RFPL4AL1 +NPIPB2 +BORCS8 +SHISA9 +SEC14L6 +ZNF814 +ZNF726 +MOSMO +LOC730098 +FAM166B +TMEM229A +TEX50 +ACOD1 +PPIAL4E +ZNF735 +GTF2H2C_2 +KRTAP2-3 +RFX8 +BCLAF1P2 +CSKMT +CEMP1 +PRCD +RELL1 +PSAPL1 +TVP23A +UQCC3 +GAGE12F +DUXB +DDTL +OCTN3 +SIGLEC14 +POM121C +SPDYE12 +ZSCAN30 +MCTS2 +GAGE8 +TMEM170B +ZGLP1 +GJE1 +MINAR2 +C8orf88 +FAM229A +TRAPPC3L +CTAGE4 +TEKTIP1 +OST4 +CIROP +ZBTB42 +LOC100129098 +KHDC1L +DEFB131B +CXorf51A +SMIM27 +C1orf68 +TDRD15 +SMIM10L1 +FAM236A +MKRN2OS +ETDB +TEX13C +MUC8 +ZNF730 +FAM47E +TCF24 +IZUMO3 +CCDC152 +ZNF737 +TMEM269 +FAM205C +HSFX2 +CCDC166 +C8orf89 +SUPT20HL1 +C17orf107 +TMEM262 +CXorf49 +TMEM221 +CD300H +PRR32 +ATP6V1FNB +LRRC70 +LRRC69 +EFCAB10 +SBK3 +TSTD3 +SMIM6 +SYCE1L +SPATA48 +ZNF316 +BSPH1 +TSTD1 +NEMP2 +ANKRD63 +DPEP2NB +C11orf91 +SP9 +CD300LD +PRR23D1 +ARMCX4 +PET100 +ZNF717 +INSYN2B +KRTAP25-1 +ZNF705G +TEX13D +FOXO6 +FAM240A +GOLGA6L25 +NPIPB5 +KIR2DS2 +FAM236B +KRTAP4-9 +ZNF705B +GAGE12D +NBPF10 +CLDN24 +KRTAP4-7 +GOLGA8F +SHISAL2B +SMIM9 +CXorf49B +CXorf51B +FAM25G +PRR23D2 +DEFB130B +XNDC1N +CD24 +KCNJ18 +TEN1 +UPK3BL1 +JMJD7 +PLA2G4B +C17orf99 +CTAGE8 +KLLN +KRTAP20-4 +PATE3 +SRRM5 +ERICH4 +EPOP +TRAP +TOMM6 +C5orf52 +C2CD4D +ARHGEF33 +ERVV-2 +MEF2B +RASA4B +CMC4 +LOC100286986 +FAM90A26 +USP17L10 +WASHC1 +USP17L11 +USP17L12 +ZNF729 +USP17L13 +MANSC4 +USP17L17 +USP17L18 +POTEB2 +USP17L19 +USP17L20 +USP17L21 +SMKR1 +USP17L22 +GLYATL1B +ANKRD66 +TTC34 +TIMM23 +TTTY13C +SDR42E2 +NBPF20 +KRTAP22-2 +KRTAP21-3 +NPIPA5 +ERVMER34-1 +USP17L15 +DUX4 +LIMS4 +TMEM239 +FRG2C +CLDN34 +B3GALT9 +LOC100288966 +TSPY10 +TMEM225B +TMEM238L +CNTNAP3C +DEFB4B +ZNF605 +ZNF783 +ZNF587B +C4B_2 +GPR75-ASB3 +TMED7-TICAM2 +PET117 +SPDYE2B +ANKRD61 +SAP25 +TRPC5OS +ZBED6 +PRR20G +ZNF722 +MSANTD7 +IGLL5 +KLRF2 +CCDC180 +CCDC179 +IQCJ-SCHIP1 +TEX48 +INAFM2 +LRRC3C +SDIM1 +KRTAP9-7 +SPATA1 +KRTAP16-1 +SPDYE18 +LOC100505841 +CEBPZOS +SMIM31 +TMEM210 +APELA +LRRC72 +ARL17B +GVQW3 +TMEM35B +HSFX1 +KRBOX1 +EDDM13 +MISFA +THEGL +C16orf95 +OCLN +SLFN12L +CASP12 +GFY +MRLN +TPBGL +LRCOL1 +GIMD1 +CT47A12 +SMLR1 +LOC100507221 +ZNF865 +SMIM18 +TMEM178B +MICA +STRIT1 +TGFBR3L +NPIPB9 +KRTAP9-6 +RNF212B +MUC22 +LOC100507703 +C13orf46 +AQP7B +LY75-CD302 +ARPC4-TTLL3 +MSANTD3-TMEFF1 +RBM14-RBM4 +CENPS-CORT +ATP5MF-PTCD1 +ABHD14A-ACY1 +CCDC169-SOHLH2 +RNF103-CHMP3 +SMIM35 +STIMATE-MUSTN1 +EPPIN-WFDC6 +ARPIN-AP3S2 +NT5C1B-RDH14 +PHOSPHO2-KLHL23 +FPGT-TNNI3K +RPL17-C18orf32 +TGIF2-RAB5IF +GIMAP1-GIMAP5 +PMF1-BGLAP +TLCD4-RWDD3 +SAA2-SAA4 +FAM187A +ST20-MTHFS +POC1B-GALNT4 +KLRC4-KLRK1 +ARMCX5-GPRASP2 +NEDD8-MDP1 +BCL2L2-PABPN1 +RPL36A-HNRNPH2 +LGTN +CORO7-PAM16 +ZNF559-ZNF177 +RPS10-NUDT3 +ZNF816-ZNF321P +HSPE1-MOB4 +CKLF-CMTM1 +SYNJ2BP-COX16 +CHURC1-FNTB +NDUFC2-KCTD14 +COMMD3-BMI1 +MICOS10-NBL1 +C8orf44-SGK3 +ZHX1-C8orf76 +KRTAP29-1 +FXYD6-FXYD2 +ZNF664-RFLNA +BIVM-ERCC5 +TVP23C-CDRT4 +RBAK-RBAKDN +LOC100533997 +TNFAIP8L2-SCNM1 +URGCP-MRPS24 +ISY1-RAB43 +FAM47E-STBD1 +TIMM23B +LOC100652777 +KIAA2012 +LOC100653049 +LOC100653133 +CEP295NL +MYZAP +FSBP +CYP3A7-CYP3A51P +TMEM265 +CCDC200 +PTGES3L +PTGES3L-AARSD1 +APOBEC3A_B +POTEB +LOC100996401 +CTXND1 +CTXND2 +LOC100996598 +TCP11X1 +TCP11X2 +SPEGNB +LOC100996696 +LOC100996701 +LOC100996709 +NOTCH2NLC +SPDYE11 +LOC100996750 +NPY4R2 +NOTCH2NLB +FMC1-LUC7L2 +PYURF +LOC101059915 +GOLGA8R +NPIPA7 +LOC101059948 +NPIPA8 +ZNF891 +CT45A7 +LOC101060212 +NBPF19 +OPN1MW3 +HNRNPCL4 +TBC1D3G +LOC101060341 +TBC1D3K +TBC1D3L +TBC1D3D +LOC101060445 +LOC101060588 +NBPF26 +IFNL4 +USP17L23 +MMP24OS +BLACAT1 +LOC101927180 +LOC101927345 +SMIM36 +LOC101927375 +PANO1 +CCDC182 +GOLGA6L19 +HSFX4 +LOC101928044 +LY6L +C21orf140 +PIGBOS1 +MEI4 +ARMH2 +ETDA +ARL4AP5 +HSFX3 +CCDC92B +CFAP97D2 +TEX52 +LOC101929601 +LOC101929614 +LOC101929627 +MYMX +LOC101929773 +LOC101929775 +NOTCH2NLR +LOC101929805 +TEX51 +LOC101929937 +PRAMEF27 +LITAFD +LOC101930434 +AK6 +C11orf98 +LOC102723382 +LOC102723407 +LOC102723451 +LOC102723475 +LOC102723502 +KANTR +LOC102723532 +CSAG2 +LOC102723553 +SPDYE16 +LOC102723564 +LOC102723573 +GOLGA6L26 +CT45A10 +LOC102723655 +CT45A9 +LOC102723713 +LOC102723728 +CT45A8 +LOC102723750 +TLE7 +SPDYE17 +TBC1D3E +PTTG1IP2 +LOC102723934 +UBE2V1P16 +LOC102723971 +LOC102723996 +LOC102724014 +LOC102724023 +LOC102724052 +TP53TG3E +LOC102724117 +TP53TG3F +LOC102724159 +LOC102724183 +LOC102724197 +LOC102724200 +LOC102724207 +LOC102724250 +LOC102724334 +LOC102724428 +GAGE10 +LOC102724474 +LOC102724485 +SYT15B +PRR33 +LOC102724560 +LOC102724594 +POTEB3 +LOC102724652 +MSANTD5 +LOC102724737 +LOC102724813 +TBC1D3I +LOC102724877 +LOC102724971 +LOC102725023 +LOC102725035 +LOC102725191 +TPTEP2-CSNK1E +ZNF511-PRAP1 +LINC02210-CRHR1 +SPDYE13 +SPDYE15 +OR4N4C +LOC105369591 +LOC105369669 +LOC105369787 +LOC105369889 +LOC105370092 +LOC105370706 +PERCC1 +LOC105371206 +LOC105371216 +PPIAL4H +LOC105371253 +CHD9NB +CPHXL +LOC105371932 +LOC105372073 +LOC105372204 +NFILZ +GNG14 +SMIM47 +ERVK3-1 +LOC105372704 +LOC105373071 +LOC105373091 +LOC105373102 +LOC105373146 +FAM236D +ERVFC1 +PNMA6F +LOC105373397 +LOC105373989 +LOC105374298 +LOC105374341 +LOC105374355 +LOC105375012 +LOC105375107 +LOC105375112 +LOC105375116 +UPK3B +LOC105375434 +LOC105375604 +LY6S +LOC105375816 +LOC105375817 +LOC105375947 +TEX53 +LOC105376335 +LOC105376714 +LOC105376722 +NPIPA9 +LOC105377015 +SCPPPQ1 +LOC105377805 +LOC105377864 +LOC105378148 +LOC105378149 +MARCOL +LOC105378571 +TMEM275 +LRRC53 +LOC105378947 +KLF18 +LOC105378955 +LOC105379198 +LOC105379199 +LOC105379278 +LOC105379417 +LOC105379473 +LOC105379504 +LOC105379522 +LOC105379528 +LOC105379545 +LOC105379554 +LOC105379561 +LOC105379585 +PRH1-TAS2R14 +BUB1B-PAK6 +GET1-SH3BGR +TBC1D7-LOC100130357 +CNPY3-GNMT +PYDC5 +BOLA2-SMG1P6 +SETDB2-PHF11 +LOC107983958 +LOC107983962 +LOC107983983 +LOC107983987 +SPEM3 +LOC107983989 +UPK3BL2 +LOC107984004 +LOC107984126 +LOC107984142 +LOC107984156 +LOC107984203 +LOC107984227 +SMIM38 +PPIAP40 +LOC107984365 +LOC107984449 +LOC107984638 +LBHD2 +LOC107984678 +LOC107984732 +LOC107984876 +LOC107984890 +LOC107984936 +LOC107984956 +LOC107984973 +LOC107985043 +LOC107985108 +LOC107985149 +LINC02798 +LOC107985222 +LOC107985303 +LOC107985567 +LOC107985729 +PPIAP60 +LOC107985876 +LOC107985915 +LOC107986012 +MDFIC2 +LOC107986346 +LOC107986372 +LOC107986373 +LOC107986375 +LOC107986675 +LOC107986768 +LOC107986800 +FAM237B +LOC107986837 +LOC107986860 +LOC107986982 +LOC107987004 +LOC107987020 +LOC107987025 +LOC107987042 +LOC107987067 +OOSP4B +LOC107987235 +LOC107987236 +LOC107987269 +LOC107987288 +LOC107987292 +LOC107987371 +LOC107987372 +LOC107987423 +LOC107987425 +LOC107987432 +LOC107987433 +LOC107987441 +LOC107987457 +LOC107987462 +LOC107987464 +LOC107987478 +LOC107987479 +LOC107987545 +ERV3-1-ZNF117 +HTD2 +FAM236C +CFAP298-TCP10L +ZNF765-ZNF761 +P3R3URF +P3R3URF-PIK3R3 +ZNF660-ZNF197 +LOC110384692 +LY6G6F-LY6G6D +EEF1AKMT4 +EEF1AKMT4-ECE2 +ASDURF +PNMA8C +SPRR5 +SMIM28 +CCDC194 +CCDC195 +MYOCOS +C1orf232 +FAM240B +C17orf113 +ETDC +CSNKA2IP +SMIM33 +C19orf85 +MMP24-AS1-EDEM2 +LYNX1-SLURP2 +PMIS2 +TEX54 +CRYZL2P-SEC16B +THSD8 +TMDD1 +LOC112267855 +LOC112267881 +LOC112267897 +LOC112267908 +LOC112267968 +LOC112267992 +LOC112268016 +LOC112268044 +LOC112268067 +LOC112268070 +LOC112268076 +LOC112268080 +LOC112268119 +LOC112268145 +CPHXL2 +LOC112268170 +LOC112268186 +ZNF470-DT +LOC112268260 +TMA7B +LOC112268307 +LOC112268317 +LOC112268330 +LOC112268336 +LOC112268337 +LOC112268340 +LOC112268342 +LOC112268347 +LOC112268354 +LOC112268355 +LOC112268362 +LOC112268384 +LOC112268389 +LOC112268390 +LOC112268437 +HIGD2AP2 +LOC112268458 +LOC112268470 +TMEM271 +SCYGR1 +SCYGR3 +SCYGR4 +SCYGR6 +SCYGR8 +SHLD3 +SCYGR2 +SCYGR10 +SCYGR5 +SCYGR7 +TAF11L7 +TAF11L8 +TAF11L10 +TAF11L12 +TAF11L14 +TAF11L9 +TAF11L11 +TAF11L13 +OOSP3 +OOSP4A +SPADH +LOC112694756 +DERPC +SMIM40 +SMIM41 +SMIM39 +ATF7-NPFF +ARHGAP11A-SCG5 +H2BK1 +ABCF2-H2BK1 +CCDC201 +LOC114841035 +GUCA1ANB +SLCO1B3-SLCO1B7 +DUS4L-BCAP29 +H2AL3 +FOXL3 +TBCEL-TECTA +FAM246C +FAM246B +FAM246A +SMIM42 +LOC118142757 +ZNF593OS +OR4M2B +C17orf114 +LRRC51 +TOMT +HRURF +TMEM217B +TSC22D4-C7ORF61 +LOC122319436 +LOC122319696 +LOC122394732 +TMSB15C +SMIM44 +LOC122455338 +C8orf90 +LOC122455340 +LOC122455342 +LOC122513141 +LCE7A +SAGSIN1 +LOC122526780 +LOC122539214 +KCNJ17 +C1orf50-AS1 +RIPPLY2-CYB5R4 +H2BN1 +TPD52-MRPS28 +LOC124900163 +LOC124900164 +LOC124900165 +LOC124900172 +LOC124900173 +LOC124900189 +LOC124900192 +LOC124900193 +LOC124900214 +LOC124900217 +LOC124900251 +LOC124900252 +LOC124900275 +LOC124900276 +LOC124900286 +LOC124900290 +LOC124900301 +LOC124900338 +LOC124900372 +LOC124900374 +LOC124900385 +LOC124900386 +LOC124900388 +LOC124900389 +LOC124900417 +LOC124900418 +LOC124900420 +LOC124900467 +LOC124900476 +LOC124900512 +LOC124900567 +LOC124900568 +LOC124900569 +LOC124900571 +LOC124900572 +LOC124900573 +LOC124900574 +LOC124900575 +LOC124900576 +LOC124900580 +LOC124900581 +LOC124900585 +LOC124900586 +LOC124900587 +LOC124900588 +LOC124900597 +LOC124900614 +LOC124900625 +LOC124900627 +LOC124900628 +LOC124900629 +LOC124900630 +LOC124900631 +LOC124900641 +LOC124900642 +LOC124900646 +LOC124900647 +LOC124900661 +LOC124900692 +LOC124900752 +LOC124900837 +LOC124900839 +LOC124900844 +LOC124900855 +LOC124900866 +LOC124900867 +LOC124900868 +LOC124900940 +LOC124900971 +LOC124900986 +LOC124900992 +LOC124900993 +LOC124900994 +LOC124900995 +LOC124900996 +LOC124900997 +LOC124900998 +LOC124901001 +LOC124901030 +LOC124901041 +LOC124901069 +LOC124901104 +LOC124901105 +LOC124901110 +LOC124901141 +LOC124901163 +LOC124901165 +LOC124901178 +LOC124901225 +LOC124901227 +LOC124901228 +LOC124901229 +LOC124901231 +LOC124901232 +LOC124901234 +LOC124901235 +LOC124901299 +LOC124901350 +LOC124901354 +LOC124901355 +LOC124901373 +LOC124901415 +LOC124901418 +LOC124901446 +LOC124901449 +LOC124901481 +LOC124901482 +LOC124901483 +LOC124901495 +LOC124901498 +LOC124901580 +LOC124901637 +LOC124901638 +LOC124901639 +LOC124901643 +LOC124901644 +LOC124901645 +LOC124901646 +LOC124901647 +LOC124901648 +LOC124901649 +LOC124901650 +LOC124901651 +LOC124901652 +LOC124901670 +LOC124901689 +LOC124901693 +LOC124901712 +LOC124901780 +LOC124901794 +LOC124901797 +LOC124901798 +LOC124901803 +LOC124901807 +LOC124901818 +LOC124901819 +LOC124901820 +LOC124901866 +LOC124901867 +LOC124901868 +LOC124901872 +LOC124901876 +LOC124901892 +LOC124901993 +LOC124902042 +LOC124902048 +LOC124902050 +LOC124902053 +LOC124902071 +LOC124902106 +LOC124902107 +LOC124902135 +LOC124902171 +LOC124902201 +LOC124902206 +LOC124902211 +LOC124902215 +LOC124902312 +LOC124902313 +LOC124902325 +LOC124902361 +LOC124902363 +LOC124902392 +LOC124902393 +LOC124902420 +LOC124902436 +LOC124902461 +LOC124902474 +LOC124902508 +LOC124902528 +LOC124902530 +LOC124902531 +LOC124902536 +LOC124902551 +LOC124902561 +LOC124902565 +LOC124902601 +LOC124902602 +LOC124902605 +LOC124902608 +LOC124902616 +LOC124902669 +LOC124902693 +LOC124902694 +LOC124902704 +LOC124902707 +LOC124902713 +LOC124902738 +LOC124902766 +LOC124902802 +LOC124902805 +LOC124902806 +LOC124902807 +LOC124902875 +LOC124902876 +LOC124902886 +LOC124902894 +LOC124902897 +LOC124902898 +LOC124902928 +LOC124902942 +LOC124903061 +LOC124903067 +LOC124903090 +LOC124903130 +LOC124903151 +LOC124903162 +LOC124903164 +LOC124903173 +LOC124903185 +LOC124903206 +LOC124903211 +LOC124903217 +LOC124903219 +LOC124903229 +LOC124903230 +LOC124903233 +LOC124903248 +LOC124903276 +LOC124903317 +LOC124903319 +LOC124903372 +LOC124903377 +LOC124903391 +LOC124903401 +LOC124903404 +LOC124903405 +LOC124903406 +LOC124903407 +LOC124903408 +LOC124903441 +LOC124903442 +LOC124903450 +LOC124903452 +LOC124903470 +LOC124903496 +LOC124903532 +LOC124903544 +LOC124903566 +LOC124903569 +LOC124903570 +LOC124903571 +LOC124903573 +LOC124903575 +LOC124903583 +LOC124903619 +LOC124903621 +LOC124903671 +LOC124903680 +LOC124903698 +LOC124903713 +LOC124903723 +LOC124903725 +LOC124903734 +LOC124903754 +LOC124903757 +LOC124903759 +LOC124903761 +LOC124903762 +LOC124903763 +LOC124903766 +LOC124903767 +LOC124903813 +LOC124903827 +LOC124903828 +LOC124903837 +LOC124903840 +LOC124903856 +LOC124903857 +LOC124903972 +LOC124904011 +LOC124904063 +LOC124904075 +LOC124904077 +LOC124904094 +LOC124904095 +LOC124904102 +LOC124904103 +LOC124904106 +LOC124904176 +LOC124904200 +LOC124904228 +LOC124904248 +LOC124904253 +LOC124904276 +LOC124904304 +LOC124904331 +LOC124904333 +LOC124904394 +LOC124904395 +LOC124904396 +LOC124904399 +LOC124904409 +LOC124904411 +LOC124904414 +LOC124904417 +LOC124904439 +LOC124904461 +LOC124904532 +LOC124904542 +LOC124904573 +LOC124904579 +LOC124904581 +LOC124904583 +LOC124904584 +LOC124904588 +LOC124904605 +LOC124904607 +LOC124904660 +LOC124904701 +LOC124904708 +LOC124904770 +LOC124904774 +LOC124904779 +LOC124904789 +LOC124904790 +LOC124904791 +LOC124904792 +LOC124904903 +LOC124904927 +LOC124904930 +LOC124904942 +LOC124904950 +LOC124904951 +LOC124904958 +LOC124904962 +LOC124904970 +LOC124905027 +LOC124905049 +LOC124905050 +LOC124905051 +LOC124905081 +LOC124905115 +LOC124905135 +LOC124905139 +LOC124905153 +LOC124905155 +LOC124905156 +LOC124905230 +LOC124905300 +LOC124905320 +LOC124905330 +LOC124905331 +LOC124905344 +LOC124905345 +LOC124905351 +LOC124905352 +LOC124905357 +LOC124905359 +LOC124905366 +LOC124905368 +LOC124905372 +LOC124905373 +LOC124905374 +LOC124905375 +LOC124905376 +LOC124905377 +LOC124905385 +LOC124905395 +LOC124905403 +LOC124905406 +LOC124905408 +LOC124905409 +LOC124905410 +LOC124905411 +LOC124905412 +LOC124905413 +LOC124905416 +LOC124905421 +LOC124905441 +LOC124905442 +LOC124905444 +LOC124905447 +LOC124905450 +LOC124905455 +LOC124905463 +LOC124905466 +LOC124905476 +LOC124905479 +LOC124905482 +LOC124905483 +LOC124905509 +LOC124905529 +LOC124905537 +LOC124905539 +LOC124905540 +LOC124905553 +LOC124905556 +LOC124905557 +LOC124905558 +LOC124905564 +LOC124905565 +LOC124905566 +LOC124905596 +LOC124905600 +LOC124905612 +LOC124905613 +LOC124905614 +LOC124905615 +LOC124905616 +LOC124905617 +LOC124905618 +LOC124905619 +LOC124905620 +LOC124905621 +LOC124905623 +LOC124905624 +LOC124905625 +LOC124905626 +LOC124905627 +LOC124905628 +LOC124905629 +LOC124905630 +LOC124905651 +LOC124905658 +LOC124905660 +LOC124905662 +LOC124905664 +LOC124905666 +LOC124905668 +LOC124905677 +LOC124905679 +LOC124905682 +LOC124905683 +LOC124905687 +LOC124905692 +LOC124905693 +LOC124905699 +LOC124905703 +LOC124905729 +LOC124905733 +LOC124905738 +LOC124905743 +LOC124905752 +LOC124905938 +LOC124905939 +LOC124905943 +LOC124905945 +LOC124905946 +LOC124905947 +LOC124905948 +LOC124905949 +LOC124905955 +LOC124905956 +LOC124905962 +LOC124905964 +LOC124905976 +LOC124905977 +LOC124906005 +LOC124906010 +LOC124906014 +LOC124906039 +LOC124906086 +LOC124906092 +LOC124906109 +LOC124906236 +LOC124906241 +LOC124906252 +LOC124906253 +LOC124906255 +LOC124906262 +LOC124906280 +LOC124906293 +LOC124906322 +LOC124906326 +LOC124906397 +LOC124906399 +LOC124906400 +LOC124906401 +LOC124906402 +LOC124906403 +LOC124906404 +LOC124906405 +LOC124906406 +LOC124906407 +LOC124906408 +LOC124906409 +LOC124906410 +LOC124906411 +LOC124906412 +LOC124906413 +LOC124906415 +LOC124906416 +LOC124906418 +LOC124906419 +LOC124906420 +LOC124906421 +LOC124906437 +LOC124906452 +LOC124906453 +LOC124906454 +LOC124906455 +LOC124906456 +LOC124906457 +LOC124906458 +LOC124906459 +LOC124906460 +LOC124906461 +LOC124906462 +LOC124906463 +LOC124906464 +LOC124906465 +LOC124906466 +LOC124906470 +LOC124906475 +LOC124906476 +LOC124906477 +LOC124906478 +LOC124906479 +LOC124906480 +LOC124906481 +LOC124906482 +LOC124906483 +LOC124906484 +LOC124906485 +LOC124906486 +LOC124906487 +LOC124906488 +LOC124906489 +LOC124906490 +LOC124906491 +LOC124906492 +LOC124906493 +LOC124906494 +LOC124906495 +LOC124906496 +LOC124906497 +LOC124906498 +LOC124906505 +LOC124906506 +LOC124906507 +LOC124906516 +LOC124906517 +LOC124906525 +LOC124906545 +LOC124906547 +LOC124906578 +LOC124906582 +LOC124906588 +LOC124906589 +LOC124906590 +LOC124906591 +LOC124906592 +LOC124906593 +LOC124906594 +LOC124906595 +LOC124906596 +LOC124906597 +LOC124906598 +LOC124906601 +LOC124906602 +LOC124906603 +LOC124906617 +LOC124906620 +LOC124906621 +LOC124906625 +LOC124906629 +LOC124906633 +LOC124906635 +LOC124906636 +LOC124906647 +LOC124906649 +LOC124906654 +LOC124906655 +LOC124906656 +LOC124906661 +LOC124906663 +LOC124906668 +LOC124906669 +LOC124906670 +LOC124906671 +LOC124906672 +LOC124906673 +LOC124906674 +LOC124906675 +LOC124906676 +LOC124906677 +LOC124906684 +LOC124906687 +LOC124906688 +LOC124906689 +LOC124906690 +LOC124906691 +LOC124906692 +LOC124906693 +LOC124906694 +LOC124906695 +LOC124906696 +LOC124906697 +LOC124906698 +LOC124906699 +LOC124906700 +LOC124906701 +LOC124906702 +LOC124906703 +LOC124906704 +LOC124906705 +LOC124906706 +LOC124906707 +LOC124906708 +LOC124906709 +LOC124906710 +LOC124906711 +LOC124906712 +LOC124906714 +LOC124906715 +LOC124906716 +LOC124906717 +LOC124906718 +LOC124906721 +LOC124906722 +LOC124906723 +LOC124906724 +LOC124906729 +LOC124906734 +LOC124906735 +LOC124906737 +LOC124906738 +LOC124906740 +LOC124906741 +LOC124906743 +LOC124906744 +LOC124906745 +LOC124906746 +LOC124906747 +LOC124906748 +LOC124906749 +LOC124906750 +LOC124906751 +LOC124906752 +LOC124906753 +LOC124906754 +LOC124906755 +LOC124906756 +LOC124906757 +LOC124906758 +LOC124906759 +LOC124906760 +LOC124906761 +LOC124906762 +LOC124906763 +LOC124906764 +LOC124906765 +LOC124906766 +LOC124906767 +LOC124906777 +LOC124906779 +LOC124906780 +LOC124906781 +LOC124906782 +LOC124906783 +LOC124906787 +LOC124906791 +LOC124906793 +LOC124906796 +LOC124906799 +LOC124906816 +LOC124906817 +LOC124906834 +LOC124906837 +LOC124906842 +LOC124906852 +LOC124906857 +LOC124906860 +LOC124906864 +LOC124906869 +LOC124906874 +LOC124906875 +LOC124906876 +LOC124906878 +LOC124906879 +LOC124906883 +LOC124906884 +LOC124906885 +LOC124906892 +LOC124906896 +LOC124906900 +LOC124906915 +LOC124906916 +LOC124906917 +LOC124906918 +LOC124906919 +LOC124906920 +LOC124906921 +LOC124906922 +LOC124906923 +LOC124906924 +LOC124906925 +LOC124906926 +LOC124906927 +LOC124906928 +LOC124906929 +LOC124906930 +LOC124906931 +LOC124906932 +LOC124906935 +LOC124906938 +LOC124906943 +LOC124906949 +LOC124906954 +LOC124906959 +LOC124906960 +LOC124906971 +LOC124906977 +LOC124906983 +LOC124906984 +LOC124906987 +LOC124906991 +LOC124906992 +LOC124907012 +LOC124907013 +LOC124907020 +LOC124907090 +LOC124907096 +LOC124907100 +LOC124907103 +LOC124907107 +LOC124907112 +LOC124907352 +LOC124907358 +LOC124907364 +LOC124907387 +LOC124907389 +LOC124907401 +LOC124907405 +LOC124907406 +LOC124907420 +LOC124907421 +LOC124907423 +LOC124907425 +LOC124907432 +LOC124907501 +LOC124907502 +LOC124907507 +LOC124907508 +LOC124907509 +LOC124907510 +LOC124907512 +LOC124907513 +LOC124907514 +LOC124907518 +LOC124907523 +LOC124907524 +LOC124907525 +LOC124907531 +LOC124907532 +LOC124907536 +LOC124907566 +LOC124907776 +LOC124907780 +LOC124907782 +LOC124907789 +LOC124907791 +LOC124907795 +LOC124907797 +LOC124907799 +LOC124907801 +LOC124907803 +LOC124907805 +LOC124907806 +LOC124907807 +LOC124907808 +LOC124907813 +LOC124907828 +LOC124907831 +LOC124907835 +LOC124907836 +LOC124907837 +LOC124907839 +LOC124907841 +LOC124907846 +LOC124907854 +LOC124907867 +LOC124907874 +LOC124907900 +LOC124907920 +LOC124907928 +LOC124907929 +LOC124907935 +LOC124907947 +LOC124907948 +LOC124907949 +LOC124907996 +LOC124908005 +LOC124908006 +LOC124908007 +LOC124908013 +LOC124908015 +LOC124908018 +LOC124908022 +LOC124908023 +LOC124908024 +LOC124908025 +LOC124908026 +LOC124908027 +LOC124908028 +LOC124908029 +LOC124908030 +LOC124908038 +LOC124908041 +LOC124908044 +LOC124908045 +LOC124908046 +LOC124908047 +LOC124908048 +LOC124908066 +LOC124908081 +LOC124908082 +LOC124908083 +LOC124908084 +LOC124908086 +LOC124908089 +LOC124908091 +LOC124908094 +LOC124908102 +LOC124908103 +LOC124908104 +LOC124908109 +LOC124908110 +LOC124908119 +LOC124908120 +LOC124908130 +LOC124908135 +LOC124908139 +LOC124908143 +LOC124908165 +LOC124908166 +LOC124908168 +LOC124908169 +LOC124908173 +LOC124908231 +LOC124908234 +LOC124908409 +LOC124908410 +LOC124908419 +LOC124908420 +LOC124908421 +LOC124908425 +LOC124908428 +LOC124908430 +LOC124908433 +LOC124908434 +LOC124908437 +LOC124908444 +LOC124908445 +LOC124908452 +LOC124908456 +LOC124908458 +LOC124908466 +LOC124908467 +LOC124908533 +LOC124908534 +LOC124908535 +LOC124908536 +LOC124908551 +LOC124908552 +LOC124908553 +LOC124908554 +LOC124908555 +LOC124908556 +LOC124908557 +LOC124908558 +LOC124908777 +LOC124908884 +LOC124908886 +LOC124908905 +LOC124908978 +LOC124908979 +LOC124908980 +LOC124908981 +LOC124908988 +LOC124909015 +LOC124909084 +LOC124909093 +LOC124909094 +LOC124909159 +LOC124909197 +LOC124909293 +LOC124909294 +LOC124909305 +LOC124909306 +LOC124909317 +LOC124909318 +LOC124909320 +LOC124909329 +LOC124909330 +LOC124909332 +LOC124909439 +LOC124909461 +LOC124909474 +LOC124909483 +LOC124909484 +LOC124909485 +LOC124909486 +LOC124909487 +LOC124909494 +FAM83A-AS2 +POLGARF +EFNA4-EFNA3 +FAM157D +SMIM46 +ND6 +CYTB +ND5 +ND4L +ND4 +COX3 +ATP6 +ND3 +ATP8 +COX2 +COX1 +ND2 +ND1 +COX3 +ATP6 +ND4 +ND6 +ND4L +COX2 +CYTB +ND3 +ND1 +ND5 +ATP8 +ND2 +COX1 \ No newline at end of file diff --git a/tests/data/example_gene_list.txt b/tests/data/example_gene_list.txt new file mode 100644 index 0000000..13087dd --- /dev/null +++ b/tests/data/example_gene_list.txt @@ -0,0 +1,614 @@ +A1CF +A4GNT +AADAC +ABCC8 +ACADL +ACKR1 +ACMSD +ACSL6 +ACSM2B +ACSM3 +ACSM6 +ACTL6B +ADAMTS8 +ADCYAP1 +ADGRV1 +ADH1A +ADH1B +ADIPOQ +AGR3 +AGTR2 +AJAP1 +AKAIN1 +AKR7A3 +AKR7L +ALB +ALDOB +ALKAL2 +AMBP +AMHR2 +AMPD1 +AMY1B +AMY2A +AMY2B +ANKRD20A1 +ANKRD34C +ANKRD40CL +ANKRD62 +ANKS4B +ANO5 +ANPEP +APOBEC2 +APOH +AQP12A +AQP12B +AQP8 +ARHGDIG +ARSL +ART3 +ART4 +ARX +ASB16 +ASCL5 +ASTN1 +ATP1A2 +ATP2A3 +ATRNL1 +AVPR1B +B3GAT1 +B3GNT6 +BANF2 +BEGAIN +BEX1 +BHLHA15 +BLK +BMP5 +BNIP5 +BRSK2 +BTBD17 +BTNL3 +BTNL8 +BTNL9 +C10orf62 +C10orf71 +C12orf42 +C14orf180 +C16orf89 +C1orf127 +C1QL1 +C22orf42 +C2CD4B +C2orf72 +C4BPA +C6 +C7 +CA4 +CABP7 +CACNA1B +CACNA2D2 +CALCB +CALN1 +CAPN6 +CAPN9 +CARTPT +CASR +CBFA2T3 +CBLIF +CCDC141 +CCDC196 +CCDC92B +CCKBR +CCL14 +CCL15 +CCL19 +CCL21 +CCR7 +CD160 +CD27 +CD300LG +CD8A +CDH17 +CDH18 +CDH22 +CDHR5 +CDX2 +CEL +CELA2A +CELA2B +CELA3A +CELA3B +CELF3 +CFAP97D2 +CFC1 +CFTR +CHAD +CHGA +CHGB +CHRDL1 +CHRNB2 +CHRNB3 +CHST5 +CHST8 +CHST9 +CIDEC +CLCNKA +CLDN18 +CLDN3 +CLEC17A +CLEC9A +CLPS +CLRN3 +CLU +CMA1 +CNMD +CNR1 +CNTFR +CNTN2 +COLEC11 +CPA1 +CPA2 +CPB1 +CPLX2 +CR2 +CRH +CRP +CRYBA2 +CTNND2 +CTRB1 +CTRB2 +CTRC +CTRL +CTXND1 +CUX2 +CUZD1 +CXCL13 +DACH2 +DCDC2 +DCX +DDC +DLK1 +DMRTC1B +DNASE1L3 +DNASE2B +DPEP1 +DPP10 +DPYS +DPYSL5 +DUSP26 +ECE2 +EDN3 +EGF +ELAPOR1 +ENAM +ENHO +ENTPD8 +EPB41L4B +EPCIP +EPHA8 +EPO +ERBB4 +ERICH5 +ERP27 +F11 +F5 +FABP4 +FAM107A +FAM177B +FAM180B +FAM240C +FAM3B +FBP2 +FBXW12 +FCRL3 +FFAR1 +FGFR4 +FGL1 +FLT3 +FMO5 +FOXA2 +FOXI1 +FRMPD1 +FSTL5 +FUT9 +FXYD2 +FYB2 +G6PC1 +G6PC2 +GABRA4 +GABRB1 +GABRG1 +GAD2 +GALNT16 +GATM +GBA3 +GC +GCG +GCGR +GCNT3 +GFAP +GHRL +GHSR +GJC3 +GJD2 +GLRA1 +GLRA3 +GLS2 +GMNC +GNAT3 +GNMT +GP2 +GPA33 +GPBAR1 +GPD1 +GPHA2 +GPM6A +GPR119 +GPR142 +GPR148 +GPT2 +GRB14 +GRIA2 +GRIA4 +GRIK3 +GRPR +GSTA2 +GSTM1 +GUCA1C +GUCA2A +GUCY2C +GZMK +HABP2 +HEPACAM2 +HHATL +HLF +HMGCLL1 +HMX3 +HNF1B +HOGA1 +HOXB13 +HPD +HTR1A +IAPP +IGFALS +IGFN1 +IGLL5 +IGSF1 +IHH +IL12B +IL22RA1 +INS +INS-IGF2 +INSC +INSM1 +IRX2 +ITGAD +ITIH4 +ITLN1 +ITPRID1 +JCHAIN +JSRP1 +KASH5 +KCNA2 +KCNA5 +KCNC1 +KCNG3 +KCNH6 +KCNH7 +KCNIP1 +KCNJ11 +KCNJ16 +KCNJ3 +KCNK10 +KCNK16 +KCNK3 +KCNMB2 +KCNQ2 +KCNT1 +KCTD8 +KIF12 +KIF19 +KIF1A +KIRREL2 +KLB +KLF15 +KLHL1 +KLHL32 +KLK1 +KLKB1 +KLRB1 +KNG1 +KRT20 +KRT222 +LCN10 +LCN6 +LEFTY1 +LGALS2 +LHFPL4 +LILRA4 +LMO3 +LRRC19 +LRRC66 +LRRC7 +LRRTM3 +LRRTM4 +LTF +LTK +LY9 +MAFA +MAP3K15 +MBOAT4 +MEP1A +MFSD6L +MGAM2 +MLXIPL +MOGAT3 +MRLN +MS4A1 +MT1G +MT1H +MTMR7 +MTUS2 +MUC13 +MUC17 +MUC5AC +MUC6 +MUSK +MYH7 +MYLK2 +MYMX +MYO1A +MYO7B +MYOT +MYPN +MYRFL +MYRIP +MYT1 +MYT1L +MZB1 +NAT16 +NAT8L +NEURL1 +NEURL3 +NEUROD1 +NHERF4 +NKX2-2 +NKX6-1 +NKX6-2 +NKX6-3 +NLRP2 +NLRP9 +NOL4 +NOS1 +NPAP1 +NPHS1 +NPY +NR0B1 +NR0B2 +NR1H4 +NR5A2 +NRAP +NRG4 +NRSN1 +NRXN1 +NT5C1A +NTRK2 +NXPE1 +OGDHL +OLFM1 +OMG +ONECUT1 +OPRM1 +OR10G4 +OR10G8 +OR10G9 +OR2T11 +OR4D5 +OR52N1 +OR8D4 +ORM2 +OTC +P2RX1 +P2RX2 +PAH +PAK3 +PAK5 +PAX5 +PCDHA1 +PCP4 +PCSK1 +PCSK1N +PCSK2 +PDIA2 +PDK4 +PDX1 +PDZK1 +PEX5L +PGA4 +PGC +PHGR1 +PHYHIPL +PIGR +PIP5K1B +PIRT +PLA2G10 +PLA2G1B +PLA2G2A +PLA2G2D +PLIN5 +PLPPR1 +PM20D1 +PNLIP +PNLIPRP1 +PNLIPRP2 +POTEC +POU6F2 +PPARGC1A +PPP1R1A +PPP1R1B +PPY +PRLHR +PRODH2 +PROX1 +PRPH +PRRT1B +PRSS1 +PRSS2 +PRSS3 +PTF1A +PTPN5 +PTPRN2 +PVRIG +RAB3C +RALYL +RBP2 +RBP4 +RBPJL +REG1A +REG1B +REG3A +REG3G +REG4 +RELN +RERGL +RFX6 +RIC3 +RIMBP2 +RIMS1 +RNF186 +RPL3L +RXRG +SBK2 +SCARA5 +SCG3 +SCGN +SCML4 +SCRT1 +SERPINA10 +SERPINA6 +SERPINI2 +SEZ6 +SEZ6L +SFRP5 +SGCZ +SGSM1 +SH2D6 +SH2D7 +SH3GL2 +SHISAL2B +SI +SIM1 +SLC12A1 +SLC16A12 +SLC17A4 +SLC17A6 +SLC1A2 +SLC22A31 +SLC25A18 +SLC26A5 +SLC28A2 +SLC2A2 +SLC30A2 +SLC30A8 +SLC38A11 +SLC38A3 +SLC39A5 +SLC3A1 +SLC4A10 +SLC4A4 +SLC5A8 +SLC5A9 +SLC6A17 +SLC6A19 +SLC6A4 +SLC7A14 +SLC7A2 +SLC8A2 +SLITRK1 +SLITRK5 +SMIM31 +SMIM32 +SMLR1 +SNTG2 +SORCS1 +SOWAHA +SPAG6 +SPATA21 +SPIB +SPINK1 +SPINK4 +SPTB +SPX +SST +SSTR1 +SSTR3 +SSTR5 +ST8SIA3 +STAB2 +STMND1 +SULT1C2 +SV2B +SVOP +SYBU +SYCN +SYNPR +SYT4 +SYT6 +TAGLN3 +TCEAL2 +TCERG1L +TCL1A +TDRD1 +TENT5C +TEX11 +THBS4 +THRSP +TM4SF20 +TM4SF5 +TMC2 +TMED6 +TMEFF2 +TMEM132C +TMEM132D +TMEM179 +TMEM196 +TMEM238L +TMEM52 +TMEM63C +TMEM72 +TNFRSF17 +TNR +TNXB +TPO +TPSD1 +TRARG1 +TRIM50 +TRIM63 +TRPM3 +TRPM5 +TRPV6 +TSPAN8 +TSPEAR +TTLL6 +TTN +TTR +TUBB4A +TUNAR +UBD +UCN3 +UMOD +UNC5CL +UNC5D +UNC79 +UNC80 +VIL1 +VIPR2 +VSTM2A +VTN +VWA5B2 +WNK2 +XCR1 +XKR4 +ZBTB16 +ZDHHC22 +ZG16 +ZNF831 \ No newline at end of file From 872dc8eb8abd92f642db94956697c36b74d5abe8 Mon Sep 17 00:00:00 2001 From: rschauner Date: Mon, 17 Aug 2026 15:30:03 -0400 Subject: [PATCH 05/12] test(enrichment): improve handle_command and API failure tests - Replaced `#[should_panic]` in `handle_command` tests with explicit error handling checks. - Added validation for unsupported background file usage in `handle_command`. - Introduced parameterized tests for `APIFailure::to_string` with `rstest`. - Enhanced `test_enrichr_result_empty` with multithreaded async execution and result persistence checks. --- src/enrich/api.rs | 24 ++++++++++++++++++++++++ src/enrich/core.rs | 33 +++++++++++++++++++++++++++++++-- src/enrich/mod.rs | 30 ++++++++++++++++++++++++++---- 3 files changed, 81 insertions(+), 6 deletions(-) diff --git a/src/enrich/api.rs b/src/enrich/api.rs index b24ebf3..6e3eecd 100644 --- a/src/enrich/api.rs +++ b/src/enrich/api.rs @@ -338,3 +338,27 @@ impl EnrichrAPI { // Ok(EnrichrResult::empty(library_name)) } } + +#[cfg(test)] +mod tests { + use super::*; + use rstest::rstest; + + #[rstest] + #[case::without_short_id("Something went wrong", None, "API Failure: Something went wrong")] + #[case::with_short_id( + "Enrichment request failed", + Some("abc123"), + "API Failure: Enrichment request failed\nResults can be found at: https://maayanlab.cloud/Enrichr/enrich?dataset=abc123" + )] + fn test_api_failure_display( + #[case] message: &str, + #[case] short_id: Option<&str>, + #[case] expected: &str, + ) { + let short_id = short_id.map(String::from); + let failure = APIFailure::new(message.to_string(), short_id.as_ref()); + + assert_eq!(failure.to_string(), expected); + } +} diff --git a/src/enrich/core.rs b/src/enrich/core.rs index b2b471d..59bd67f 100644 --- a/src/enrich/core.rs +++ b/src/enrich/core.rs @@ -761,12 +761,41 @@ mod tests { assert_eq!(Enrichment::parse_color(input), expected); } - #[test] - fn test_enrichr_result_empty() { + #[rstest] + #[timeout(Duration::from_secs(10))] + #[tokio::test(flavor = "multi_thread", worker_threads = 1)] + async fn test_enrichr_result_empty() { + let libraries = vec!["test_lib".to_string()]; + let gene_list = vec!["gene1".to_string()]; let result = EnrichrResult::empty("test_lib"); assert_eq!(result.library, "test_lib"); assert_eq!(result.rank.len(), 1); assert_eq!(result.p_value, vec![1.0]); + + let enrich = Enrichment { + gene_list, + libraries, + background: None, + results: vec![result], + }; + + let temp = TempDir::default(); + let tsv_file = temp.with_file_name(get_timestamp()).with_extension("tsv"); + let svg_file = temp.with_file_name(get_timestamp()).with_extension("svg"); + let pdf_file = temp.with_file_name(get_timestamp()).with_extension("pdf"); + let png_file = temp.with_file_name(get_timestamp()).with_extension("png"); + assert!(enrich.save_results(tsv_file).is_ok()); + assert!( + enrich + .bar_plot( + vec![svg_file, pdf_file, png_file], + Some("test_lib".to_string()), + None, + None + ) + .await + .is_ok() + ); } #[test] diff --git a/src/enrich/mod.rs b/src/enrich/mod.rs index 69244f8..76c8b1b 100644 --- a/src/enrich/mod.rs +++ b/src/enrich/mod.rs @@ -142,9 +142,6 @@ mod tests { use super::super::*; #[test] - #[should_panic( - expected = "This command requires the `enrichment` feature. Rebuild with `--features enrichment`" - )] fn test_handle_command() { let cmd = Commands::RunEnrichr { library: Library::ReactomePathways2024, @@ -153,7 +150,13 @@ mod tests { output_file: PathBuf::from("output.txt"), output_plot: vec![PathBuf::from("plot.png")], }; - let _ = handle_command(cmd).unwrap(); + if let Err(e) = handle_command(cmd) { + assert_eq!(e.kind(), clap::ErrorKind::MissingSubcommand); + assert_eq!( + e.to_string(), + "This command requires the `enrichment` feature. Rebuild with `--features enrichment`" + ); + } } } @@ -173,5 +176,24 @@ mod tests { assert_eq!(result, None); } + + #[test] + fn handle_command_rejects_background_before_calling_enrichr() { + let cmd = Commands::RunEnrichr { + library: Library::ReactomePathways2024, + gene_list: PathBuf::from("genes.txt"), + background: Some(PathBuf::from("background.txt")), + output_file: PathBuf::from("output.txt"), + output_plot: vec![PathBuf::from("plot.png")], + }; + + let err = handle_command(cmd).expect_err("expected background validation error"); + + assert_eq!(err.kind(), clap::error::ErrorKind::ValueValidation); + assert!( + err.to_string() + .contains("Background is not supported in the API") + ); + } } } From 8edb851722112d79994d9ddde4288d687a4063cf Mon Sep 17 00:00:00 2001 From: rschauner Date: Mon, 17 Aug 2026 15:31:35 -0400 Subject: [PATCH 06/12] refactor(tcr-align): simplify alignment logic and extract helper functions - Introduced `create_dual_progress_bar` to handle progress bar creation for outer and inner loops. - Extracted `calculate_single_chain_score` and `calculate_single_chain_background_score` for better modularity and reduced code duplication. - Removed redundant `height` parameter by directly retrieving it from `groups.height()`. - Optimized test coverage by parameterizing `test_downsample_vec_limits` with `rstest`. - Added helper `get_f64_col_by_idx` to streamline test code for column value extraction. test(tcr-align): enforce `cargo nextest run` for `test_blosum62_error_handling` - Added an assertion to ensure the test runs only with `cargo nextest run` due to its reliance on per-test process isolation. --- src/tcr_align/align.rs | 4 + src/tcr_align/dataframe.rs | 266 ++++++++++++++++++------------------- 2 files changed, 137 insertions(+), 133 deletions(-) diff --git a/src/tcr_align/align.rs b/src/tcr_align/align.rs index 7232b76..85f6ae8 100644 --- a/src/tcr_align/align.rs +++ b/src/tcr_align/align.rs @@ -289,6 +289,10 @@ mod tests { #[test] fn test_blosum62_error_handling() { + assert!( + std::env::var_os("NEXTEST").is_some(), + "this test must be run with `cargo nextest run` because it relies on nextest's per-test process isolation" + ); // Force the BLOSUM62 to an error state set_blosum62_to_err_for_test("test error").expect("set error"); diff --git a/src/tcr_align/dataframe.rs b/src/tcr_align/dataframe.rs index 6fd70cd..4e3bbb6 100644 --- a/src/tcr_align/dataframe.rs +++ b/src/tcr_align/dataframe.rs @@ -1,5 +1,6 @@ use crate::tcr_align::align::{build_protein_aligner, run_parasail}; -use indicatif::ProgressStyle; +use indicatif::{ProgressBar, ProgressStyle}; +use parasail_rs::aligner::Aligner; use polars::error::PolarsResult; use polars::frame::{DataFrame, UniqueKeepStrategy}; use polars::prelude::{ExplodeOptions, IntoLazy, NamedFrom, Series, col, len, lit}; @@ -326,7 +327,7 @@ pub(crate) fn fraction_self_greater( gap_open: i32, gap_extend: i32, ) -> PolarsResult { - let height = &groups.height(); + let height = groups.height(); let patterns: Vec = groups .column("pattern")? @@ -338,10 +339,10 @@ pub(crate) fn fraction_self_greater( .map(ToString::to_string) .collect(); - let mut out_pattern: Vec = Vec::with_capacity(*height); - let mut out_self_a: Vec = Vec::with_capacity(*height); - let mut out_self_b: Vec = Vec::with_capacity(*height); - let mut out_frac: Vec = Vec::with_capacity(*height); + let mut out_pattern: Vec = Vec::with_capacity(height); + let mut out_self_a: Vec = Vec::with_capacity(height); + let mut out_self_b: Vec = Vec::with_capacity(height); + let mut out_frac: Vec = Vec::with_capacity(height); let mut rng = SmallRng::from_rng(&mut rand::rng()); @@ -351,7 +352,6 @@ pub(crate) fn fraction_self_greater( n_replicates, gap_open, gap_extend, - *height, &patterns, &mut out_pattern, &mut out_self_a, @@ -371,7 +371,7 @@ pub(crate) fn fraction_self_greater( fn downsample_vec( v: Vec, pattern: &str, - pb: &indicatif::ProgressBar, + pb: &ProgressBar, rng: &mut SmallRng, ) -> Vec { let out: Vec = if v.len() > MAX_GROUP_SEQS { @@ -402,7 +402,6 @@ fn downsample_vec( /// - `n_replicates`: The number of replicates to run for statistical significance evaluation. /// - `gap_open`: Gap opening penalty value used by the aligner during sequence alignment. /// - `gap_extend`: Gap extension penalty value used by the aligner during sequence alignment. -/// - `height`: The number of groups (or rows in `groups`) to process. /// - `patterns`: A slice of strings representing the patterns used to process each group. /// - `out_pattern`: A mutable reference to a vector where the output patterns will be stored. /// - `out_self_a`: A mutable reference to a vector where self-similarity scores for `TcRa` @@ -458,7 +457,6 @@ fn downsample_vec( /// /// let groups = load_dataframe(); // Load a DataFrame from some source. /// let all_unique_alpha = vec![String::from("SEQ1"), String::from("SEQ2")]; -/// let height = groups.height(); /// let n_replicates = 100; /// let mut out_pattern = vec![]; /// let mut out_self_a = vec![]; @@ -471,7 +469,6 @@ fn downsample_vec( /// n_replicates, /// -10, /// -1, -/// height, /// &vec![String::from("pattern1"), String::from("pattern2")], /// &mut out_pattern, /// &mut out_self_a, @@ -493,14 +490,12 @@ fn downsample_vec( /// to the number of replicates (`n_replicates`) and the size of the sequences. Adjust these /// parameters based on available computational resources. #[allow(clippy::too_many_arguments)] -#[allow(clippy::too_many_lines)] fn calculate_scores( groups: &DataFrame, all_unique_alpha: &[String], n_replicates: usize, gap_open: i32, gap_extend: i32, - height: usize, patterns: &[String], out_pattern: &mut Vec, out_self_a: &mut Vec, @@ -508,32 +503,8 @@ fn calculate_scores( out_frac: &mut Vec, rng: &mut SmallRng, ) { - let progress_style = ProgressStyle::with_template( - "{msg} [{bar:40.cyan/blue}] {pos}/{len} Elapsed: {elapsed_precise} ETA: {eta}", - ); - let inner_progress_style = - ProgressStyle::with_template("\x1b[37m{msg}\x1b[0m [{bar:40.cyan/blue}] {pos}/{len}"); - let mpb: indicatif::MultiProgress; - let pb: indicatif::ProgressBar; - let inner_pb: indicatif::ProgressBar; - - if let Ok(progress_style) = progress_style { - mpb = indicatif::MultiProgress::new(); - pb = mpb.add(indicatif::ProgressBar::new(height as u64)); - pb.set_style(progress_style); - match inner_progress_style { - Ok(inner_progress_style) => { - inner_pb = mpb.add(indicatif::ProgressBar::new(n_replicates as u64)); - inner_pb.set_style(inner_progress_style); - } - Err(_) => { - inner_pb = indicatif::ProgressBar::hidden(); - } - } - } else { - pb = indicatif::ProgressBar::hidden(); - inner_pb = indicatif::ProgressBar::hidden(); - } + let height = groups.height(); + let (pb, inner_pb) = create_dual_progress_bar(n_replicates, height); let aligner = match build_protein_aligner(gap_open, gap_extend) { Ok(aligner) => aligner, @@ -565,16 +536,9 @@ fn calculate_scores( out_self_b.push(f64::NAN); } Ok(b_full) => { - let b = downsample_vec(b_full, pattern, &inner_pb, rng); - let self_b_mean = if b.len() <= 1 { - f64::NAN - } else { - run_parasail(&aligner, &b, None).unwrap_or_else(|e| { - eprintln!("Error running parasail for pattern {pattern}: {e}"); - f64::NAN - }) - }; - out_self_b.push(self_b_mean); + let (_, self_mean) = + calculate_single_chain_score(rng, &inner_pb, &aligner, pattern, b_full); + out_self_b.push(self_mean); } } @@ -583,42 +547,19 @@ fn calculate_scores( out_self_a.push(f64::NAN); } Ok(a_full) => { - let a = downsample_vec(a_full, pattern, &inner_pb, rng); - let self_a_mean = if a.len() <= 1 { - f64::NAN - } else { - run_parasail(&aligner, &a, None).unwrap_or_else(|e| { - eprintln!("Error running parasail for pattern {pattern}: {e}"); - f64::NAN - }) - }; - out_self_a.push(self_a_mean); - let n_val = a.len().min(all_unique_alpha.len()).min(MAX_BG_SEQS); - let mut greater_count = 0usize; - if a.len() > 1 && n_val > 0 && !self_a_mean.is_nan() { - for _rep in 0..n_replicates { - let background: Vec = - all_unique_alpha.sample(rng, n_val).cloned().collect(); - - let bg_mean = - run_parasail(&aligner, &a, Some(&background)).unwrap_or_else(|e| { - eprintln!("Error running parasail for pattern {pattern}: {e}"); - f64::NAN - }); - // we want lower scores to be better - if self_a_mean < bg_mean { - greater_count += 1; - } - inner_pb.inc(1); - } - } else { - greater_count = n_replicates; - } - let final_value = if self_a_mean.is_nan() { - -1. - } else { - (greater_count as f64) / (n_replicates as f64) - }; + let (downsampled_sequences, self_mean) = + calculate_single_chain_score(rng, &inner_pb, &aligner, pattern, a_full); + out_self_a.push(self_mean); + let final_value = calculate_single_chain_background_score( + all_unique_alpha, + n_replicates, + rng, + &inner_pb, + &aligner, + pattern, + &downsampled_sequences, + self_mean, + ); out_frac.push(final_value); } } @@ -629,13 +570,106 @@ fn calculate_scores( } } +fn create_dual_progress_bar(n_replicates: usize, height: usize) -> (ProgressBar, ProgressBar) { + let progress_style = ProgressStyle::with_template( + "{msg} [{bar:40.cyan/blue}] {pos}/{len} Elapsed: {elapsed_precise} ETA: {eta}", + ); + let inner_progress_style = + ProgressStyle::with_template("\x1b[37m{msg}\x1b[0m [{bar:40.cyan/blue}] {pos}/{len}"); + let mpb: indicatif::MultiProgress; + let pb: ProgressBar; + let inner_pb: ProgressBar; + + if let Ok(progress_style) = progress_style { + mpb = indicatif::MultiProgress::new(); + pb = mpb.add(ProgressBar::new(height as u64)); + pb.set_style(progress_style); + match inner_progress_style { + Ok(inner_progress_style) => { + inner_pb = mpb.add(ProgressBar::new(n_replicates as u64)); + inner_pb.set_style(inner_progress_style); + } + Err(_) => { + inner_pb = ProgressBar::hidden(); + } + } + } else { + pb = ProgressBar::hidden(); + inner_pb = ProgressBar::hidden(); + } + (pb, inner_pb) +} + +fn calculate_single_chain_score( + rng: &mut SmallRng, + pb: &ProgressBar, + aligner: &Aligner, + pattern: &str, + all_seqs: Vec, +) -> (Vec, f64) { + let downsampled_sequences = downsample_vec(all_seqs, pattern, pb, rng); + let self_mean = if downsampled_sequences.len() <= 1 { + f64::NAN + } else { + run_parasail(aligner, &downsampled_sequences, None).unwrap_or_else(|e| { + eprintln!("Error running parasail for pattern {pattern}: {e}"); + f64::NAN + }) + }; + + (downsampled_sequences, self_mean) +} + +#[allow(clippy::too_many_arguments)] +fn calculate_single_chain_background_score( + unique_seqs: &[String], + n_replicates: usize, + rng: &mut SmallRng, + pb: &ProgressBar, + aligner: &Aligner, + pattern: &str, + downsampled_sequences: &[String], + self_mean: f64, +) -> f64 { + let n_val = downsampled_sequences + .len() + .min(unique_seqs.len()) + .min(MAX_BG_SEQS); + let mut greater_count = 0usize; + if downsampled_sequences.len() > 1 && n_val > 0 && !self_mean.is_nan() { + for _rep in 0..n_replicates { + let background: Vec = unique_seqs.sample(rng, n_val).cloned().collect(); + + let bg_mean = run_parasail(aligner, downsampled_sequences, Some(&background)) + .unwrap_or_else(|e| { + eprintln!("Error running parasail for pattern {pattern}: {e}"); + f64::NAN + }); + // we want lower scores to be better + if self_mean < bg_mean { + greater_count += 1; + } + pb.inc(1); + } + } else { + greater_count = n_replicates; + } + if self_mean.is_nan() { + -1. + } else { + (greater_count as f64) / (n_replicates as f64) + } +} + #[cfg(test)] mod tests { use super::*; use indicatif::ProgressBar; use polars::prelude::*; + use pretty_assertions::assert_eq; use rand::SeedableRng; use rand::rngs::SmallRng; + use rstest::rstest; use std::collections::HashSet; fn row_idx_for_pattern(df: &DataFrame, pattern: &str) -> usize { @@ -648,6 +682,9 @@ mod tests { .find_map(|(idx, v)| (v == Some(pattern)).then_some(idx)) .expect("pattern not found") } + fn get_f64_col_by_idx(out: &DataFrame, idx: usize, name: &str) -> f64 { + out.column(name).unwrap().f64().unwrap().get(idx).unwrap() + } #[test] fn test_all_unique_cdr3_alpha_basic() { @@ -701,22 +738,17 @@ mod tests { assert_eq!(set, expected); } - #[test] - fn test_downsample_vec_limits() { - // create > MAX_GROUP_SEQS items - let total = MAX_GROUP_SEQS + 200; + #[rstest] + #[case(MAX_GROUP_SEQS + 200)] + #[case(10)] + fn test_downsample_vec_limits(#[case] total: usize) { let v: Vec = (0..total).map(|i| format!("S{}", i)).collect(); let mut rng = SmallRng::from_seed([1; 32]); let pb = ProgressBar::hidden(); let out = downsample_vec(v.clone(), "pat", &pb, &mut rng); - assert_eq!(out.len(), MAX_GROUP_SEQS); - - // small vector should be returned unchanged - let small = vec!["a".to_string()]; - let mut rng2 = SmallRng::from_seed([1; 32]); - let out2 = downsample_vec(small.clone(), "pat", &pb, &mut rng2); - assert_eq!(out2, small); + assert!(out.len() <= MAX_GROUP_SEQS); + assert_eq!(out.len(), total.min(MAX_GROUP_SEQS)); } #[test] @@ -748,28 +780,9 @@ mod tests { assert_eq!(out.height(), 2); let idx = row_idx_for_pattern(&out, "single"); - let tcra_score = out - .column("TcRa_alignment_score") - .unwrap() - .f64() - .unwrap() - .get(idx) - .unwrap(); - let tcrb_score = out - .column("TcRb_alignment_score") - .unwrap() - .f64() - .unwrap() - .get(idx) - .unwrap(); - let frac = out - .column("TcRa_alignment_score_v_background") - .unwrap() - .f64() - .unwrap() - .get(idx) - .unwrap(); - + let tcra_score = get_f64_col_by_idx(&out, idx, "TcRa_alignment_score"); + let tcrb_score = get_f64_col_by_idx(&out, idx, "TcRb_alignment_score"); + let frac = get_f64_col_by_idx(&out, idx, "TcRa_alignment_score_v_background"); assert!(tcra_score.is_nan()); assert!(tcrb_score.is_nan()); assert!(frac.is_nan()); @@ -789,21 +802,8 @@ mod tests { let out = fraction_self_greater(&groups, &all_alpha, 3, 7, 1).unwrap(); let idx = row_idx_for_pattern(&out, "pat1"); - let tcra_score = out - .column("TcRa_alignment_score") - .unwrap() - .f64() - .unwrap() - .get(idx) - .unwrap(); - let frac = out - .column("TcRa_alignment_score_v_background") - .unwrap() - .f64() - .unwrap() - .get(idx) - .unwrap(); - + let tcra_score = get_f64_col_by_idx(&out, idx, "TcRa_alignment_score"); + let frac = get_f64_col_by_idx(&out, idx, "TcRa_alignment_score_v_background"); assert!(tcra_score.is_nan()); assert_eq!(frac, -1.0); } From 71c4d95d1ec0a9764a27c0425ab6a82893b4c56d Mon Sep 17 00:00:00 2001 From: rschauner Date: Mon, 17 Aug 2026 15:32:12 -0400 Subject: [PATCH 07/12] test(io): add missing assertions and new test for `read_excel` functionality - Added assertions in `read_excel` tests to ensure non-empty dimensions (width and height). - Introduced `test_read_excel_from_generic` for testing Excel file parsing with generic input. --- src/io.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/io.rs b/src/io.rs index b1946e4..7b4ca5a 100644 --- a/src/io.rs +++ b/src/io.rs @@ -561,4 +561,13 @@ mod tests { assert!(df.width() > 0, "expected at least one column"); assert!(df.height() > 0, "expected at least one row"); } + + #[rstest] + #[case::normal_file("tests/data/plate_reader_data_expected.xlsx")] + fn test_read_excel_from_generic(#[case] path: PathBuf) { + let df = read_from_file(path, None).collect().unwrap(); + + assert!(df.width() > 0, "expected at least one column"); + assert!(df.height() > 0, "expected at least one row"); + } } From c1b8e2573d53052b2bc5515d5c6d6eed8e30679e Mon Sep 17 00:00:00 2001 From: rschauner Date: Mon, 17 Aug 2026 15:33:34 -0400 Subject: [PATCH 08/12] test(geo-submission): expand thread parser and default tests with `rstest` - Added tests for `thread_parser` and `thread_default` with separate cases for `base_cmd` and `no_base_cmd` configurations. - Refactored `num_cpu` logic to support test-specific overrides and ensure consistency in test environments. - Updated `thread_parser` to utilize the new `num_cpu` function. --- src/geo_submission/mod.rs | 13 +++++++-- src/geo_submission/test.rs | 58 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/src/geo_submission/mod.rs b/src/geo_submission/mod.rs index 59a8964..43e631c 100644 --- a/src/geo_submission/mod.rs +++ b/src/geo_submission/mod.rs @@ -28,14 +28,23 @@ pub enum Progress { #[yesno(help = "Hide progress bar")] NoProgress, } +#[cfg(test)] +fn num_cpu() -> usize { + 4 +} + +#[cfg(not(test))] +fn num_cpu() -> usize { + num_cpus::get() +} #[cfg(feature = "base_cmd")] fn thread_parser() -> RangedI64ValueParser { - clap::value_parser!(i32).range(1 + -(num_cpus::get() as i64)..=num_cpus::get() as i64) + clap::value_parser!(i32).range(1 + -(num_cpu() as i64)..=num_cpu() as i64) } #[cfg(feature = "base_cmd")] fn thread_default() -> i32 { - num_cpus::get().try_into().unwrap() + num_cpu().try_into().unwrap() } #[cfg(not(feature = "base_cmd"))] diff --git a/src/geo_submission/test.rs b/src/geo_submission/test.rs index 3f9894e..a6c5666 100644 --- a/src/geo_submission/test.rs +++ b/src/geo_submission/test.rs @@ -3,8 +3,10 @@ use crate::geo_submission::helper::{ TOO_MANY_CORES_SUBTRACTED_ERROR, make_progress_bar, process_cores_with_available, subtract_from_available_cores, }; +use clap::builder::TypedValueParser; use pretty_assertions::assert_eq; use rstest::{fixture, rstest}; +use std::ffi::OsStr; #[rstest] #[case::progress_bar(Progress::Progress, 1000, 1000)] @@ -67,3 +69,59 @@ fn test_subtract_too_many_cores_error_message() { assert!(result.is_err()); assert_eq!(result.unwrap_err(), TOO_MANY_CORES_SUBTRACTED_ERROR); } + +#[rstest] +fn test_thread_default() { + assert_eq!(thread_default(), 4); +} + +#[cfg(feature = "base_cmd")] +#[rstest] +#[case("1", 1)] +#[case("4", 4)] +#[case("-3", -3)] +fn test_thread_parser_accepts_valid_values_base_cmd(#[case] raw: &str, #[case] expected: i32) { + let parser = thread_parser(); + let value = parser + .parse_ref(&clap::Command::new("test"), None, OsStr::new(raw)) + .expect("value should parse"); + assert_eq!(value, expected); +} + +#[cfg(feature = "base_cmd")] +#[rstest] +#[case("-4")] +#[case("5")] +fn test_thread_parser_rejects_invalid_values_base_cmd(#[case] raw: &str) { + let parser = thread_parser(); + assert!( + parser + .parse_ref(&clap::Command::new("test"), None, OsStr::new(raw)) + .is_err() + ); +} + +#[cfg(not(feature = "base_cmd"))] +#[rstest] +#[case("-1", -1)] +#[case("0", 0)] +fn test_thread_parser_accepts_valid_values_no_base_cmd(#[case] raw: &str, #[case] expected: i32) { + let parser = thread_parser(); + let value = parser + .parse_ref(&clap::Command::new("test"), None, OsStr::new(raw)) + .expect("value should parse"); + assert_eq!(value, expected); +} + +#[cfg(not(feature = "base_cmd"))] +#[rstest] +#[case("-2")] +#[case("2")] +fn test_thread_parser_rejects_invalid_values_no_base_cmd(#[case] raw: &str) { + let parser = thread_parser(); + assert!( + parser + .parse_ref(&clap::Command::new("test"), None, OsStr::new(raw)) + .is_err() + ); +} From f6331cb8c020d26af04d26469d59875dec2e9726 Mon Sep 17 00:00:00 2001 From: rschauner Date: Mon, 17 Aug 2026 15:33:56 -0400 Subject: [PATCH 09/12] refactor(main): streamline command handling logic in main_helper function --- src/main.rs | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/src/main.rs b/src/main.rs index dbae419..c3b702f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -59,30 +59,18 @@ macro_rules! exit_on_error_feature_subcommand { #[cfg(feature = "base_cmd")] pub(crate) fn main_helper(cli: Cli) { - match cli.command { - Some(Commands::Aggregate(cmd)) => { - exit_on_error_feature_subcommand!(Cli, aggregate::handle_command(cmd)) - } - Some(Commands::Split(cmd)) => { - exit_on_error_feature_subcommand!(Cli, split::handle_command(cmd)) - } - Some(Commands::ReformatPlateReaderData(cmd)) => { - exit_on_error_feature_subcommand!(Cli, plate_reader::handle_command(cmd)) - } - Some(Commands::CopyCellRangerOuts(cmd)) => { - exit_on_error_feature_subcommand!(Cli, copy_cellranger_outs::handle_command(cmd)) - } - Some(Commands::TcrAlign(cmd)) => { - exit_on_error_feature_subcommand!(Cli, tcr_align::handle_command(cmd)) - } - Some(Commands::MatchFastq(cmd)) => { - exit_on_error_feature_subcommand!(Cli, geo_submission::handle_command(&cmd)) - } - Some(Commands::RunEnrichr(cmd)) => { - exit_on_error_feature_subcommand!(Cli, enrich::handle_command(cmd)) - } - None => {} - } + let result = match cli.command { + Some(Commands::Aggregate(cmd)) => aggregate::handle_command(cmd), + Some(Commands::Split(cmd)) => split::handle_command(cmd), + Some(Commands::ReformatPlateReaderData(cmd)) => plate_reader::handle_command(cmd), + Some(Commands::CopyCellRangerOuts(cmd)) => copy_cellranger_outs::handle_command(cmd), + Some(Commands::TcrAlign(cmd)) => tcr_align::handle_command(cmd), + Some(Commands::MatchFastq(cmd)) => geo_submission::handle_command(&cmd), + Some(Commands::RunEnrichr(cmd)) => enrich::handle_command(cmd), + None => Ok(()), + }; + + exit_on_error_feature_subcommand!(Cli, result); } #[cfg(not(feature = "base_cmd"))] @@ -117,6 +105,7 @@ fn main() { mod tests { use super::*; use clap::Parser; + use pretty_assertions::assert_eq; #[test] fn parses_no_command() { From d7cb247af629e99006b311b2fee0d9a27d4724b8 Mon Sep 17 00:00:00 2001 From: rschauner Date: Mon, 17 Aug 2026 15:34:52 -0400 Subject: [PATCH 10/12] test(aggregate): add unit test for handle_command with AggregateCellRangerTCR chore: add missing empty line in gene list file --- src/aggregate/mod.rs | 36 ++++++++++++++++++++++++++++++++ tests/data/example_gene_list.txt | 1 + 2 files changed, 37 insertions(+) diff --git a/src/aggregate/mod.rs b/src/aggregate/mod.rs index 02178da..418df76 100644 --- a/src/aggregate/mod.rs +++ b/src/aggregate/mod.rs @@ -45,3 +45,39 @@ pub fn handle_command(cmd: Commands) -> Result<(), Error> { } Ok(()) } + +#[cfg(test)] +#[cfg(feature = "base_cmd")] +mod tests { + use super::*; + use crate::test_helpers::{get_timestamp, write_text_file}; + use temp_testdir::TempDir; + + #[test] + fn test_handle_aggregate_cellranger_tcr_command() { + let temp_dir = TempDir::default(); + let input_file = temp_dir + .with_file_name(get_timestamp()) + .with_extension("csv"); + let output_file = temp_dir + .with_file_name(get_timestamp()) + .with_extension("tsv"); + + write_text_file( + &input_file, + "sample,barcode,chain,v_gene,d_gene,j_gene,cdr3\n\ + sample1,barcode1,TRB,TRBV1,,TRBJ1,CASSIRSSYEQYF\n", + ); + + let cmd = Commands::AggregateCellRangerTCR { + input_files: vec![input_file], + output_file: output_file.clone(), + keep_alpha: false, + }; + + let result = handle_command(cmd); + + assert!(result.is_ok()); + assert!(output_file.exists()); + } +} diff --git a/tests/data/example_gene_list.txt b/tests/data/example_gene_list.txt index 13087dd..bbc302c 100644 --- a/tests/data/example_gene_list.txt +++ b/tests/data/example_gene_list.txt @@ -503,6 +503,7 @@ SLC17A4 SLC17A6 SLC1A2 SLC22A31 + SLC25A18 SLC26A5 SLC28A2 From 64a7d06ee8f3520ecb712b276c9ca46f18f61f83 Mon Sep 17 00:00:00 2001 From: rschauner Date: Mon, 17 Aug 2026 15:36:56 -0400 Subject: [PATCH 11/12] chore: update dependencies and Codecov config - Update `Cargo.lock` - Added `temp_testdir` for improved test sandboxing. - Adjusted Codecov config to include `target: auto` in project status checks. --- .idea/vcs.xml | 1 + Cargo.lock | 426 +++++++++++++++++++++----------------------------- codecov.yml | 6 +- 3 files changed, 188 insertions(+), 245 deletions(-) diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 7ddfc9e..d8b2cb4 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -3,6 +3,7 @@ + diff --git a/Cargo.lock b/Cargo.lock index 7a5573e..9804297 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -192,15 +192,6 @@ dependencies = [ "syn 2.0.119", ] -[[package]] -name = "atoi_simd" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad17c7c205c2c28b527b9845eeb91cf1b4d008b438f98ce0e628227a822758e" -dependencies = [ - "debug_unsafe", -] - [[package]] name = "atoi_simd" version = "0.18.1" @@ -318,16 +309,16 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures 0.3.0", + "cpufeatures", ] [[package]] name = "block-buffer" -version = "0.10.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ - "generic-array", + "hybrid-array", ] [[package]] @@ -417,7 +408,7 @@ version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fa68281b1a76b54a62156474adb06bb380a67e07dd60656e3217152b42183f3" dependencies = [ - "atoi_simd 0.18.1", + "atoi_simd", "byteorder", "codepage", "encoding_rs", @@ -487,7 +478,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", - "cpufeatures 0.3.0", + "cpufeatures", "rand_core 0.10.1", ] @@ -500,7 +491,7 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -682,6 +673,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + [[package]] name = "constant_time_eq" version = "0.4.2" @@ -750,15 +747,6 @@ dependencies = [ "libc", ] -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - [[package]] name = "cpufeatures" version = "0.3.0" @@ -851,12 +839,11 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" -version = "0.1.7" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "generic-array", - "typenum", + "hybrid-array", ] [[package]] @@ -900,14 +887,24 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" [[package]] name = "digest" -version = "0.10.7" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", + "const-oid", "crypto-common", ] +[[package]] +name = "digest-io" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2de63d600bc7fab91180bc17385f29b342468dc8ef2af09dceba450a293de3da" +dependencies = [ + "digest", +] + [[package]] name = "dirs" version = "6.0.0" @@ -1046,6 +1043,7 @@ dependencies = [ "rstest_reuse", "serde", "serde_json", + "temp_testdir", "tempfile", "tokio", "walkdir", @@ -1229,12 +1227,12 @@ dependencies = [ [[package]] name = "fs4" -version = "0.13.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4" +checksum = "7e72ed92b67c146290f88e9c89d60ca163ea417a446f61ffd7b72df3e7f1dfd5" dependencies = [ "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1337,16 +1335,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -1367,11 +1355,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] @@ -1505,9 +1491,6 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash 0.2.0", - "rayon", - "serde", - "serde_core", ] [[package]] @@ -1515,6 +1498,14 @@ name = "hashbrown" version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", + "rayon", + "serde", + "serde_core", +] [[package]] name = "heck" @@ -1588,6 +1579,15 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15" +[[package]] +name = "hybrid-array" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" +dependencies = [ + "typenum", +] + [[package]] name = "hyper" version = "1.10.1" @@ -1662,7 +1662,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core", ] [[package]] @@ -1866,7 +1866,7 @@ dependencies = [ "simd_cesu8", "thiserror", "walkdir", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -1947,7 +1947,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -2285,7 +2285,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -2421,12 +2421,12 @@ dependencies = [ [[package]] name = "polars" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82f1f122456ec136102033b13f71905b7c3f01e526642679c86aace9f9cdefde" +checksum = "d52d3ed4e6b3917427f6d3c43edbd2740babe228bb4ccfa3431eac105844045d" dependencies = [ "getrandom 0.2.17", - "getrandom 0.3.4", + "getrandom 0.4.3", "polars-arrow", "polars-buffer", "polars-compute", @@ -2445,11 +2445,11 @@ dependencies = [ [[package]] name = "polars-arrow" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87d4892d5cc6461bb4a184d18e6fa03a5d316ee1d6de06a33dfa08d479fbc2db" +checksum = "c5ab55460ca2553d1a2bbaf2046998cfbbb685bc18d1e168b4367b63301eb271" dependencies = [ - "atoi_simd 0.17.0", + "atoi_simd", "bitflags 2.13.1", "bytemuck", "bytes", @@ -2459,9 +2459,9 @@ dependencies = [ "either", "ethnum", "getrandom 0.2.17", - "getrandom 0.3.4", + "getrandom 0.4.3", "half", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "itoa", "lz4", "num-traits", @@ -2490,9 +2490,9 @@ dependencies = [ [[package]] name = "polars-async" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e87f836190486f500b28347436985cc0af29b7a514e53f98840d396ce4d5f5" +checksum = "e8f484cb2db25ff605107a9f8dca8d5a47d25770cf5e04ceb75c0ef4d6bc2418" dependencies = [ "atomic-waker", "crossbeam-channel", @@ -2503,16 +2503,16 @@ dependencies = [ "polars-config", "polars-error", "polars-utils", - "rand 0.9.5", + "rand 0.10.2", "slotmap", "tokio", ] [[package]] name = "polars-buffer" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e481eeaf33c544ac0dd71a2e375553ca2fdae47b3472a96eaccb6eb43218783d" +checksum = "485320cdb93ad4b4725fea30e5d4e59c32c8ad62420dbda7830eb96080e47363" dependencies = [ "bytemuck", "either", @@ -2523,23 +2523,23 @@ dependencies = [ [[package]] name = "polars-compute" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55d41642a9ee887ac394c5a310af3256fa8340a86cde2cb624c515aa963461c" +checksum = "0b54be44ceacf1028fd8219b34c791ed4e1db852950f3eb7e10ba9bf63bbdb50" dependencies = [ - "atoi_simd 0.17.0", + "atoi_simd", "bytemuck", "chrono", "either", "fast-float2", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "itoa", "num-traits", "polars-arrow", "polars-buffer", "polars-error", "polars-utils", - "rand 0.9.5", + "rand 0.10.2", "serde", "strength_reduce", "strum_macros", @@ -2549,9 +2549,9 @@ dependencies = [ [[package]] name = "polars-config" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65af861341b00eac73bcb65423fb5cc3d2322526d6b7561a0ddf094947c38033" +checksum = "13dcd35a686654570d9642ed4f3c55eccad75911024c95d6b1459663cfb83bc1" dependencies = [ "polars-error", "serde", @@ -2559,9 +2559,9 @@ dependencies = [ [[package]] name = "polars-core" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5924fc46306054bae78f9d35ea5e404cf185baa7f170eb55a16ff95191069c" +checksum = "ac24a25f4c2696089bb9059e4b45338ea74833a79b9552fef066d6f2cfb3aaed" dependencies = [ "bitflags 2.13.1", "boxcar", @@ -2570,8 +2570,8 @@ dependencies = [ "chrono-tz", "comfy-table", "either", - "getrandom 0.3.4", - "hashbrown 0.16.1", + "getrandom 0.4.3", + "hashbrown 0.17.1", "indexmap", "itoa", "num-traits", @@ -2585,7 +2585,7 @@ dependencies = [ "polars-row", "polars-schema", "polars-utils", - "rand 0.9.5", + "rand 0.10.2", "rand_distr", "rayon", "regex", @@ -2600,12 +2600,12 @@ dependencies = [ [[package]] name = "polars-dtype" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b65a750bb99ea66be90c8a7e336f6f3a87427a0f7f89d2a40adae98314e9b27" +checksum = "768f9d1f996eebc7f9b0d7686d9147cf4b4f217fd907c4b90f4448dcee01ea05" dependencies = [ "boxcar", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "polars-arrow", "polars-error", "polars-utils", @@ -2615,9 +2615,9 @@ dependencies = [ [[package]] name = "polars-error" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e49a75e3406b9b5b4e5ff177877fe0de766e9688fbdb263a7b25f293dc47d61a" +checksum = "8f6995c2121c31687704fae5281517e29bbd34838fcf8dd15c8e8ae526bb6624" dependencies = [ "object_store", "parking_lot", @@ -2629,12 +2629,12 @@ dependencies = [ [[package]] name = "polars-expr" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e21fdd37e8d9ef109f13d3454baffa0a57041cf60069123b8a2bd846c8ad0205" +checksum = "b59262210ac41f3b30f49f46855501206eba27baaa6bd919545703bc706dd617" dependencies = [ "bitflags 2.13.1", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "num-traits", "polars-arrow", "polars-buffer", @@ -2646,7 +2646,7 @@ dependencies = [ "polars-row", "polars-time", "polars-utils", - "rand 0.9.5", + "rand 0.10.2", "rayon", "recursive", "regex", @@ -2655,22 +2655,23 @@ dependencies = [ [[package]] name = "polars-io" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6363a1c44a65fe8d73cce7fe4d77c9b6fea3a0da44007012e755e5b4e65aa078" +checksum = "3ba705af75665c6c6f6822bdc20a0b162846dd9d23573221096945b45210c2db" dependencies = [ "async-trait", - "atoi_simd 0.17.0", + "atoi_simd", "blake3", "bytes", "chrono", "chrono-tz", + "crossbeam-queue", "fast-float2", "fastrand", "fs4", "futures", "glob", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "home", "itoa", "memchr", @@ -2690,7 +2691,7 @@ dependencies = [ "polars-schema", "polars-time", "polars-utils", - "rand 0.9.5", + "rand 0.10.2", "rayon", "regex", "reqwest 0.12.28", @@ -2703,14 +2704,14 @@ dependencies = [ [[package]] name = "polars-json" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dca6cd170370ef7e189a4c362846c57553843653c3fe65aafe12ca77599987c" +checksum = "495117c99362a05d4ea744c21f54d570991fd8ae3ec9dfb1f0e01f055747553f" dependencies = [ "chrono", "chrono-tz", "fallible-streaming-iterator", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "indexmap", "itoa", "num-traits", @@ -2725,9 +2726,9 @@ dependencies = [ [[package]] name = "polars-lazy" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809d9590232a37d638337629c18279af97bdb0d17c3d8b2b6bb186e903e8bd5e" +checksum = "79654a98520b5df9be08ce5004be90a5c8004d0f73d54500c1aa923874ec84f3" dependencies = [ "bitflags 2.13.1", "chrono", @@ -2752,9 +2753,9 @@ dependencies = [ [[package]] name = "polars-mem-engine" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c6b7d162c506bc8eee82b065fa0399ebcd20b8f08675a534f3d360904ba38" +checksum = "843e77a0987bea00063c227cbb889f30e754942b42851043cd9f90403e516ca2" dependencies = [ "memmap2", "polars-arrow", @@ -2772,9 +2773,9 @@ dependencies = [ [[package]] name = "polars-ooc" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3eea0b386837b760a97ec9c92df99cbc10f94885cae060fd7100f9b794163" +checksum = "265c422c52d04c876a07cd688fe0da2c43c6597cdaff36e34746c443ec2e9fdb" dependencies = [ "async-trait", "boxcar", @@ -2782,17 +2783,21 @@ dependencies = [ "polars-async", "polars-config", "polars-core", + "polars-error", "polars-io", "polars-utils", + "rand 0.10.2", + "rand_distr", "thread_local", "tokio", + "uuid", ] [[package]] name = "polars-ops" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb146490a717ac5ae4ff3a22a5adf3ebae79361f187b1f550f9e24783d7ad765" +checksum = "a3eeac77f1380bc8ba40ae9a9512911697952dfd3cfa48013f98a477e7ec6771" dependencies = [ "argminmax", "base64", @@ -2800,7 +2805,7 @@ dependencies = [ "chrono", "chrono-tz", "either", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "hex", "indexmap", "libm", @@ -2824,16 +2829,16 @@ dependencies = [ [[package]] name = "polars-parquet" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6b79ba2103c00cbb9c5dd4459ffff1d8ce15286c7a6d376a04c711df20d8b7" +checksum = "d33a17979d2afa0309437478662cf996361a6e1768bf467db82bd4f4a9443064" dependencies = [ "async-stream", "base64", "bytemuck", "ethnum", "futures", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "num-traits", "polars-arrow", "polars-buffer", @@ -2860,9 +2865,9 @@ dependencies = [ [[package]] name = "polars-plan" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f5ccc230515adb10762a8c7b0df03fd88f3328deb5b60e9b1eeb2eceef4d344" +checksum = "467bd857c46405807e6645942be2de284aa43bc503fc6d20efb16e1adf25b7a6" dependencies = [ "bitflags 2.13.1", "blake3", @@ -2870,9 +2875,11 @@ dependencies = [ "bytes", "chrono", "chrono-tz", + "digest-io", "either", "futures", - "hashbrown 0.16.1", + "hashbrown 0.17.1", + "hex", "indexmap", "memmap2", "num-traits", @@ -2899,9 +2906,9 @@ dependencies = [ [[package]] name = "polars-row" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4e3254450024078e10c919ecd3b467bdcfdd5cf386c2ca6eedec89bd4771d2" +checksum = "71ac05187ac33abcfe9b7c997f0cd2ea9bfe8e04e9018d343e16fb2b64e2f5bb" dependencies = [ "bitflags 2.13.1", "bytemuck", @@ -2915,9 +2922,9 @@ dependencies = [ [[package]] name = "polars-schema" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8a0de8951d02576fd0cdcecd9c605a6b6364d3105b7469b8d7874ea34eea2f" +checksum = "dacc161d9b647e4b936836a07d731cec06e2ed2c7d51a7f7565b5ce7767dcf40" dependencies = [ "indexmap", "polars-error", @@ -2928,9 +2935,9 @@ dependencies = [ [[package]] name = "polars-sql" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b282a6164927eb12774b66b071b773a1573173ae53758e8d4df50389ff06efa2" +checksum = "ae4b287917a1c50b9fab9618c32d3ac8c4b18ef1c61aded55d065c97c921c793" dependencies = [ "bitflags 2.13.1", "hex", @@ -2948,14 +2955,15 @@ dependencies = [ [[package]] name = "polars-stream" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfa8ff4ee21799898579595a0ef2fb728d0a9cac3d061835fb7f7f6dd854734a" +checksum = "b173c0c52f53ca930f3b59bc56a5854a650eb9555d67bba9022051714bc0b88f" dependencies = [ "async-channel", "async-trait", "bitflags 2.13.1", "bytes", + "chrono", "chrono-tz", "crossbeam-channel", "crossbeam-queue", @@ -2990,9 +2998,9 @@ dependencies = [ [[package]] name = "polars-testing" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bc80ac4b0216c03dbc14af3cbcc031ba8eabd57f86a73feb10fe5bf9aad165" +checksum = "2f9ce170c693a29b59216c18ff2c73cf290139797dd1f5b8b9ceaa2510e6cd4c" dependencies = [ "polars-core", "polars-ops", @@ -3000,11 +3008,11 @@ dependencies = [ [[package]] name = "polars-time" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1063fe074c4212a54917be604377c6e6bfbc8b6c942a5c57be214e4ccaaafdf" +checksum = "bff76883a07b033d9191e6d6ff86ee696770bcc462241666a8ccdddff1afdbc2" dependencies = [ - "atoi_simd 0.17.0", + "atoi_simd", "bytemuck", "chrono", "chrono-tz", @@ -3023,9 +3031,9 @@ dependencies = [ [[package]] name = "polars-utils" -version = "0.54.4" +version = "0.55.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590b0a94aa8f97992d52f1198600ecc1c1f7cfa03c1b31cae057143455804ac0" +checksum = "88aa5ed59ba6f52190b3368d3d9536f95c8c2ab161ee08a22bb3f4319a11a9bd" dependencies = [ "argminmax", "bincode", @@ -3037,7 +3045,7 @@ dependencies = [ "foldhash 0.2.0", "futures", "half", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "indexmap", "libc", "memmap2", @@ -3045,7 +3053,7 @@ dependencies = [ "num-traits", "polars-config", "polars-error", - "rand 0.9.5", + "rand 0.10.2", "raw-cpuid", "rayon", "regex", @@ -3265,20 +3273,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "libc", - "rand_chacha 0.3.1", + "rand_chacha", "rand_core 0.6.4", ] -[[package]] -name = "rand" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.5", -] - [[package]] name = "rand" version = "0.10.2" @@ -3300,16 +3298,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.5", -] - [[package]] name = "rand_core" version = "0.6.4" @@ -3319,15 +3307,6 @@ dependencies = [ "getrandom 0.2.17", ] -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] - [[package]] name = "rand_core" version = "0.10.1" @@ -3336,12 +3315,12 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "rand_distr" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" +checksum = "4d431c2703ccf129de4d45253c03f49ebb22b97d6ad79ee3ecfc7e3f4862c1d8" dependencies = [ "num-traits", - "rand 0.9.5", + "rand 0.10.2", ] [[package]] @@ -3881,12 +3860,12 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.9" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ "cfg-if", - "cpufeatures 0.2.17", + "cpufeatures", "digest", ] @@ -3998,9 +3977,9 @@ dependencies = [ [[package]] name = "sqlparser" -version = "0.60.0" +version = "0.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505aa16b045c4c1375bf5f125cce3813d0176325bfe9ffc4a903f423de7774ff" +checksum = "13c6d1b651dc4edf07eead2a0c6c78016ce971bc2c10da5266861b13f25e7cec" dependencies = [ "log", "recursive", @@ -4009,9 +3988,9 @@ dependencies = [ [[package]] name = "sqlparser_derive" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028e551d5e270b31b9f3ea271778d9d827148d4287a5d96167b6bb9787f5cc38" +checksum = "a6dd45d8fc1c79299bfbb7190e42ccbbdf6a5f52e4a6ad98d92357ea965bd289" dependencies = [ "proc-macro2", "quote", @@ -4072,9 +4051,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum_macros" -version = "0.27.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ "heck", "proc-macro2", @@ -4132,9 +4111,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.37.2" +version = "0.39.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" +checksum = "d2071df9448915b71c4fe6d25deaf1c22f12bd234f01540b77312bb8e41361e6" dependencies = [ "libc", "memchr", @@ -4184,6 +4163,12 @@ version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" +[[package]] +name = "temp_testdir" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "921f1e9c427802414907a48b21a6504ff6b3a15a1a3cf37e699590949ad9befc" + [[package]] name = "tempfile" version = "3.27.0" @@ -4768,37 +4753,23 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.61.3" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ "windows-collections", - "windows-core 0.61.2", + "windows-core", "windows-future", - "windows-link 0.1.3", "windows-numerics", ] [[package]] name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", -] - -[[package]] -name = "windows-core" -version = "0.61.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", + "windows-core", ] [[package]] @@ -4809,19 +4780,19 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] name = "windows-future" -version = "0.2.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", + "windows-core", + "windows-link", "windows-threading", ] @@ -4847,12 +4818,6 @@ dependencies = [ "syn 2.0.119", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" @@ -4861,12 +4826,12 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", + "windows-core", + "windows-link", ] [[package]] @@ -4875,18 +4840,9 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] @@ -4895,16 +4851,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -4913,7 +4860,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -4925,22 +4872,13 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-sys" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -4961,11 +4899,11 @@ dependencies = [ [[package]] name = "windows-threading" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] diff --git a/codecov.yml b/codecov.yml index ff6dc3b..74d2256 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,4 +1,8 @@ coverage: range: 60..80 round: nearest - precision: 0 \ No newline at end of file + precision: 0 + status: + project: + default: + target: auto \ No newline at end of file From 8b53ff83acbe0d1a17434625e31d60b595455702 Mon Sep 17 00:00:00 2001 From: rschauner Date: Mon, 17 Aug 2026 16:12:46 -0400 Subject: [PATCH 12/12] refactor(enrichment): update `enrich` method to use `&str` instead of `&String` --- src/enrich/api.rs | 7 ++++--- src/enrich/core.rs | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/enrich/api.rs b/src/enrich/api.rs index 6e3eecd..4968f7a 100644 --- a/src/enrich/api.rs +++ b/src/enrich/api.rs @@ -12,7 +12,7 @@ pub trait EnrichrAPITrait: Send + Sync { libraries: &[String], send_background: bool, ) -> Result<(), APIFailure>; - async fn enrich(&mut self, library_name: &String) -> Result; + async fn enrich(&mut self, library_name: &str) -> Result; fn get_short_id(&self) -> Option; } @@ -25,8 +25,9 @@ impl EnrichrAPITrait for EnrichrAPI { ) -> Result<(), APIFailure> { self.send_genes(gene_list, libraries, send_background).await } - async fn enrich(&mut self, library_name: &String) -> Result { - self.enrich(library_name).await + async fn enrich(&mut self, library_name: &str) -> Result { + let library_name = library_name.to_string(); + self.enrich(&library_name).await } fn get_short_id(&self) -> Option { self.get_short_id() diff --git a/src/enrich/core.rs b/src/enrich/core.rs index 59bd67f..cd18efc 100644 --- a/src/enrich/core.rs +++ b/src/enrich/core.rs @@ -667,7 +667,7 @@ mod tests { ) -> Result<(), APIFailure> { Ok(()) } - async fn enrich(&mut self, library_name: &String) -> Result { + async fn enrich(&mut self, library_name: &str) -> Result { Ok(EnrichrResult::empty(library_name)) } fn get_short_id(&self) -> Option {