diff --git a/.gitignore b/.gitignore index 3a314b92..fe768acf 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ __pycache__/ .Python build/ develop-eggs/ +assets/ dist/ downloads/ eggs/ diff --git a/data/pbmc3k_processed.h5ad b/data/pbmc3k_processed.h5ad new file mode 100644 index 00000000..e529a6d8 Binary files /dev/null and b/data/pbmc3k_processed.h5ad differ diff --git a/data/pbmc3k_raw.h5ad b/data/pbmc3k_raw.h5ad new file mode 100644 index 00000000..460ee0b6 Binary files /dev/null and b/data/pbmc3k_raw.h5ad differ diff --git a/rapids_singlecell/__init__.py b/rapids_singlecell/__init__.py index f986277d..a07cfe71 100755 --- a/rapids_singlecell/__init__.py +++ b/rapids_singlecell/__init__.py @@ -5,4 +5,4 @@ from . import pl from . import gr -__version__ = "0.6.2" +__version__ = "0.6.3" diff --git a/rapids_singlecell/cunnData/__init__.py b/rapids_singlecell/cunnData/__init__.py index f4b6d825..c926676e 100644 --- a/rapids_singlecell/cunnData/__init__.py +++ b/rapids_singlecell/cunnData/__init__.py @@ -31,6 +31,15 @@ def update_shape(self, shape): def __setitem__(self, key, item): if self.shape == item.shape: + if issparse_gpu(item): + item = item + elif isinstance(item, cp.ndarray): + item = item + elif not issparse_cpu(item): + inter = sparse.csr_matrix(item) + item = cp.sparse.csr_matrix(inter, dtype=cp.float32) + else: + item = cp.sparse.csr_matrix(item, dtype=cp.float32) if issparse_gpu(item): if item.nnz > 2**31 - 1: raise ValueError( @@ -103,6 +112,7 @@ def __init__( obsm: Optional[Mapping[str, Any]] = None, varm: Optional[Mapping[str, Any]] = None, ): + # Initialize from adata if adata: if not issparse_cpu(adata.X): inter = sparse.csr_matrix(adata.X) @@ -119,12 +129,7 @@ def __init__( self.raw = None if adata.layers: for key, matrix in adata.layers.items(): - if not issparse_cpu(matrix): - inter = sparse.csr_matrix(matrix) - inter = cp.sparse.csr_matrix(inter, dtype=cp.float32) - else: - inter = cp.sparse.csr_matrix(matrix, dtype=cp.float32) - self._layers[key] = inter + self._layers[key] = matrix if adata.obsm: for key, matrix in adata.obsm.items(): self._obsm[key] = matrix.copy() @@ -132,6 +137,7 @@ def __init__( for key, matrix in adata.varm.items(): self._varm[key] = matrix.copy() + # Initialize from items else: if issparse_gpu(X): self._X = X @@ -143,11 +149,11 @@ def __init__( del inter else: self._X = cp.sparse.csr_matrix(X, dtype=cp.float32) - if obs: + if obs is not None: self._obs = obs else: self._obs = pd.DataFrame(index=range(self.shape[0])) - if var: + if var is not None: self._var = var else: self._var = pd.DataFrame(index=range(self.shape[1])) @@ -162,16 +168,7 @@ def __init__( if layers: for key, matrix in layers.items(): - if issparse_gpu(matrix): - inter = matrix - elif isinstance(matrix, cp.ndarray): - inter = matrix - elif not issparse_cpu(X): - inter = sparse.csr_matrix(matrix) - inter = cp.sparse.csr_matrix(inter, dtype=cp.float32) - else: - inter = cp.sparse.csr_matrix(matrix, dtype=cp.float32) - self.layers[key] = inter + self.layers[key] = matrix if obsm: for key, matrix in obsm.items(): self.obsm[key] = matrix.copy() diff --git a/rapids_singlecell/cunnData_funcs/_hvg.py b/rapids_singlecell/cunnData_funcs/_hvg.py index e25961bd..e61b8e79 100644 --- a/rapids_singlecell/cunnData_funcs/_hvg.py +++ b/rapids_singlecell/cunnData_funcs/_hvg.py @@ -164,10 +164,9 @@ def highly_variable_genes( batches = cudata.obs[batch_key].cat.categories df = [] genes = cudata.var.index.to_numpy() + X = cudata.layers[layer] if layer is not None else cudata.X for batch in batches: - inter_matrix = cudata.X[ - np.where(cudata.obs[batch_key] == batch)[0], - ].tocsc() + inter_matrix = X[np.where(cudata.obs[batch_key] == batch)[0],].tocsc() thr_org = cp.diff(inter_matrix.indptr).ravel() thr = cp.where(thr_org >= 1)[0] thr_2 = cp.where(thr_org < 1)[0] @@ -336,6 +335,12 @@ def _highly_variable_genes_single_batch( ].sort() # interestingly, np.argpartition is slightly slower if n_top_genes > X.shape[1]: n_top_genes = X.shape[1] + if n_top_genes > dispersion_norm.size: + warnings.warn( + "`n_top_genes` > number of normalized dispersions, returning all genes with normalized dispersions.", + UserWarning, + ) + n_top_genes = dispersion_norm.size disp_cut_off = dispersion_norm[n_top_genes - 1] gene_subset = np.nan_to_num(df["dispersions_norm"].values) >= disp_cut_off else: @@ -448,6 +453,7 @@ def _highly_variable_genes_seurat_v3( ranked_norm_gene_vars = ranked_norm_gene_vars.get() ma_ranked = np.ma.masked_invalid(ranked_norm_gene_vars) median_ranked = np.ma.median(ma_ranked, axis=0).filled(np.nan) + df["highly_variable_nbatches"] = num_batches_high_var.get() df["highly_variable_rank"] = median_ranked df["variances_norm"] = cp.mean(norm_gene_vars, axis=0).get() @@ -598,6 +604,7 @@ def _highly_variable_pearson_residuals( if clip < 0: raise ValueError("Pearson residuals require `clip>=0` or `clip=None`.") + clip = cp.array([clip], dtype=cp.float32) theta = cp.array([theta], dtype=cp.float32) sums_genes = cp.zeros(X_batch.shape[1], dtype=cp.float32) sums_cells = cp.zeros(X_batch.shape[0], dtype=cp.float32) diff --git a/rapids_singlecell/cunnData_funcs/_normalize.py b/rapids_singlecell/cunnData_funcs/_normalize.py index 52a2d7bf..1601a9f3 100644 --- a/rapids_singlecell/cunnData_funcs/_normalize.py +++ b/rapids_singlecell/cunnData_funcs/_normalize.py @@ -323,6 +323,8 @@ def normalize_pearson_residuals( "`flavor='pearson_residuals'` expects raw count data, but non-integers were found.", UserWarning, ) + computed_on = layer if layer else "cudata.X" + settings_dict = dict(theta=theta, clip=clip, computed_on=computed_on) if theta <= 0: raise ValueError("Pearson residuals require theta > 0") if clip is None: @@ -331,6 +333,7 @@ def normalize_pearson_residuals( if clip < 0: raise ValueError("Pearson residuals require `clip>=0` or `clip=None`.") theta = cp.array([1 / theta], dtype=cp.float32) + clip = cp.array([clip], dtype=cp.float32) sums_cells = cp.zeros(X.shape[0], dtype=cp.float32) sums_genes = cp.zeros(X.shape[1], dtype=cp.float32) @@ -420,7 +423,9 @@ def normalize_pearson_residuals( residuals.shape[1], ), ) + if inplace == True: + cudata.uns["pearson_residuals_normalization"] = settings_dict if layer: cudata.layers[layer] = residuals else: diff --git a/rapids_singlecell/cunnData_funcs/_pca.py b/rapids_singlecell/cunnData_funcs/_pca.py index 798e6011..8cc7561a 100644 --- a/rapids_singlecell/cunnData_funcs/_pca.py +++ b/rapids_singlecell/cunnData_funcs/_pca.py @@ -1,7 +1,8 @@ from ..cunnData import cunnData +from anndata import AnnData from cuml.decomposition import PCA, TruncatedSVD -from typing import Optional +from typing import Optional, Union from cupy.sparse import issparse import math @@ -9,10 +10,11 @@ def pca( - cudata: cunnData, + cudata: Union[cunnData, AnnData], layer: str = None, - n_comps: int = 50, + n_comps: Optional[int] = None, zero_center: bool = True, + random_state: Union[int, None] = 0, use_highly_variable: Optional[bool] = None, chunked: bool = False, chunk_size: int = None, @@ -23,18 +25,22 @@ def pca( Parameters ---------- cudata : - cunnData object + cunnData, AnnData object layer If provided, use `cudata.layers[layer]` for expression values instead of `cudata.X`. n_comps - Number of principal components to compute. Defaults to 50 + Number of principal components to compute. Defaults to 50, or 1 - minimum + dimension size of selected representation zero_center If `True`, compute standard PCA from covariance matrix. If `False`, omit zero-centering variables + random_state + Change to use different initial states for the optimization. + use_highly_variable Whether to use highly variable genes only, stored in `.var['highly_variable']`. @@ -78,6 +84,13 @@ def pca( if use_highly_variable: X = X[:, cudata.var["highly_variable"]] + if n_comps is None: + min_dim = min(X.shape[0], X.shape[1]) + if 50 >= min_dim: + n_comps = min_dim - 1 + else: + n_comps = 50 + if chunked: from cuml.decomposition import IncrementalPCA @@ -97,11 +110,15 @@ def pca( X_pca[start_idx:stop_idx] = pca_func.transform(chunk) else: if zero_center: - pca_func = PCA(n_components=n_comps, output_type="numpy") + pca_func = PCA( + n_components=n_comps, random_state=random_state, output_type="numpy" + ) X_pca = pca_func.fit_transform(X) elif not zero_center: - pca_func = TruncatedSVD(n_components=n_comps, output_type="numpy") + pca_func = TruncatedSVD( + n_components=n_comps, random_state=random_state, output_type="numpy" + ) X_pca = pca_func.fit_transform(X) cudata.obsm["X_pca"] = X_pca diff --git a/rapids_singlecell/cunnData_funcs/_scale.py b/rapids_singlecell/cunnData_funcs/_scale.py index 3a5de03d..4e5e1657 100644 --- a/rapids_singlecell/cunnData_funcs/_scale.py +++ b/rapids_singlecell/cunnData_funcs/_scale.py @@ -5,7 +5,7 @@ def scale( cudata: cunnData, - max_value: int = 10, + max_value: Optional[int] = None, layer: Optional[str] = None, inplace: bool = True, ) -> Optional[cp.ndarray]: @@ -45,7 +45,8 @@ def scale( stddev = cp.sqrt(X.var(axis=0)) X /= stddev del stddev - X = cp.clip(X, a_max=max_value) + if max_value: + X = cp.clip(X, a_max=max_value) if inplace: if layer: cudata.layers[layer] = X diff --git a/rapids_singlecell/cunnData_funcs/_simple.py b/rapids_singlecell/cunnData_funcs/_simple.py index 291c3a5c..da8d9d86 100644 --- a/rapids_singlecell/cunnData_funcs/_simple.py +++ b/rapids_singlecell/cunnData_funcs/_simple.py @@ -291,7 +291,7 @@ def calculate_qc_metrics( qc_vars = [qc_vars] for qc_var in qc_vars: sums_cells_sub = cp.zeros(X.shape[0], dtype=cp.float32) - mask = cp.array(cudata.var["MT"], dtype=cp.bool_) + mask = cp.array(cudata.var[qc_var], dtype=cp.bool_) if cp.sparse.issparse(X): if cpx.scipy.sparse.isspmatrix_csr(X): block = (32,) diff --git a/rapids_singlecell/cunnData_funcs/_utils.py b/rapids_singlecell/cunnData_funcs/_utils.py index 5d47cc65..f6a8bdea 100644 --- a/rapids_singlecell/cunnData_funcs/_utils.py +++ b/rapids_singlecell/cunnData_funcs/_utils.py @@ -98,7 +98,7 @@ def _check_nonnegative_integers(X): if issparse(X): data = X.data else: - data = data + data = X """Checks values of data to ensure it is count data""" # Check no negatives if cp.signbit(data).any(): diff --git a/rapids_singlecell/scanpy_gpu/__init__.py b/rapids_singlecell/scanpy_gpu/__init__.py index 19c4c907..58916ba8 100644 --- a/rapids_singlecell/scanpy_gpu/__init__.py +++ b/rapids_singlecell/scanpy_gpu/__init__.py @@ -3,7 +3,7 @@ from ._draw_graph import draw_graph from ._embedding_density import embedding_density from ._harmony_integrate import harmony_integrate -from ._pca import pca +from ..pp import pca from ._pymde import mde from ._rank_gene_groups import rank_genes_groups_logreg from ._tsne import tsne diff --git a/rapids_singlecell/scanpy_gpu/_pca.py b/rapids_singlecell/scanpy_gpu/_pca.py deleted file mode 100644 index 695cafc5..00000000 --- a/rapids_singlecell/scanpy_gpu/_pca.py +++ /dev/null @@ -1,121 +0,0 @@ -from cuml.decomposition import PCA, TruncatedSVD -from anndata import AnnData -from typing import Optional - -from scipy.sparse import issparse -import warnings -import math -import numpy as np - - -def pca( - adata: AnnData, - layer: str = None, - n_comps: int = 50, - zero_center: bool = True, - use_highly_variable: Optional[bool] = None, - chunked: bool = False, - chunk_size: int = None, -) -> None: - """ - Performs PCA using the cuML decomposition function for the :class:`~anndata.AnnData` object. - - Parameters - ---------- - adata - annData object - - layer - If provided, use `adata.layers[layer]` for expression values instead of `adata.X`. - - n_comps - Number of principal components to compute. Defaults to 50 - - zero_center - If `True`, compute standard PCA from covariance matrix. - If `False`, omit zero-centering variables - - use_highly_variable - Whether to use highly variable genes only, stored in - `.var['highly_variable']`. - By default uses them if they have been determined beforehand. - - chunked - If `True`, perform an incremental PCA on segments of `chunk_size`. - The incremental PCA automatically zero centers and ignores settings of - `random_seed` and `svd_solver`. If `False`, perform a full PCA. - - chunk_size - Number of observations to include in each chunk. - Required if `chunked=True` was passed. - - Returns - -------- - adds fields to `adata`: - - `.obsm['X_pca']` - PCA representation of data. - `.varm['PCs']` - The principal components containing the loadings. - `.uns['pca']['variance_ratio']` - Ratio of explained variance. - `.uns['pca']['variance']` - Explained variance, equivalent to the eigenvalues of the - covariance matrix. - """ - - if use_highly_variable is True and "highly_variable" not in adata.var.keys(): - raise ValueError( - "Did not find adata.var['highly_variable']. " - "Either your data already only consists of highly-variable genes " - "or consider running `highly_variable_genes` first." - ) - - X = adata.layers[layer] if layer is not None else adata.X - - if use_highly_variable is None: - use_highly_variable = True if "highly_variable" in adata.var.keys() else False - - if use_highly_variable: - X = X[:, adata.var["highly_variable"]] - - if issparse(X) and zero_center: - warnings.warn( - "Your Countmatrix seems to be sparse, this can lead to a massive performance penalty.", - UserWarning, - ) - - if chunked: - from cuml.decomposition import IncrementalPCA - - X_pca = np.zeros((X.shape[0], n_comps), X.dtype) - - pca_func = IncrementalPCA( - n_components=n_comps, output_type="numpy", batch_size=chunk_size - ) - pca_func.fit(X) - - n_batches = math.ceil(X.shape[0] / chunk_size) - for batch in range(n_batches): - start_idx = batch * chunk_size - stop_idx = min(batch * chunk_size + chunk_size, X.shape[0]) - chunk = X[start_idx:stop_idx, :] - chunk = chunk.toarray() if issparse(chunk) else chunk - X_pca[start_idx:stop_idx] = pca_func.transform(chunk) - elif zero_center: - pca_func = PCA(n_components=n_comps, output_type="numpy") - X_pca = pca_func.fit_transform(X) - - elif not zero_center: - pca_func = TruncatedSVD(n_components=n_comps, output_type="numpy") - X_pca = pca_func.fit_transform(X) - adata.obsm["X_pca"] = X_pca - adata.uns["pca"] = { - "variance": pca_func.explained_variance_, - "variance_ratio": pca_func.explained_variance_ratio_, - } - if use_highly_variable: - adata.varm["PCs"] = np.zeros(shape=(adata.n_vars, n_comps)) - adata.varm["PCs"][adata.var["highly_variable"]] = pca_func.components_.T - else: - adata.varm["PCs"] = pca_func.components_.T diff --git a/rapids_singlecell/squidpy_gpu/_autocorr.py b/rapids_singlecell/squidpy_gpu/_autocorr.py index 570a9acd..4b423ca2 100644 --- a/rapids_singlecell/squidpy_gpu/_autocorr.py +++ b/rapids_singlecell/squidpy_gpu/_autocorr.py @@ -110,11 +110,11 @@ def spatial_autocorr( # check sparse: if use_sparse: vals = sparse.csr_matrix(vals) - data = cp.sparse.csr_matrix(vals) + data = cp.sparse.csr_matrix(vals, dtype=cp.float32) else: if sparse.issparse(vals): vals = vals.toarray() - data = cp.array(vals) + data = cp.array(vals, dtype=cp.float32) # Run Spartial Autocorr if mode == "moran": score, score_perms = _morans_I_cupy( @@ -136,7 +136,8 @@ def spatial_autocorr( raise NotImplementedError(f"Mode `{mode}` is not yet implemented.") g = sparse.csr_matrix(adj_matrix_cupy.get()) score = score.get() - score_perms = score_perms.get() + if n_perms is not None: + score_perms = score_perms.get() with np.errstate(divide="ignore"): pval_results = _p_value_calc(score, score_perms, g, params) diff --git a/rapids_singlecell/squidpy_gpu/_ligrec.py b/rapids_singlecell/squidpy_gpu/_ligrec.py index 337c430c..15970480 100644 --- a/rapids_singlecell/squidpy_gpu/_ligrec.py +++ b/rapids_singlecell/squidpy_gpu/_ligrec.py @@ -14,7 +14,7 @@ Mapping, Iterable, ) -from ._utils import _create_sparse_df +from ._utils import _create_sparse_df, _assert_categorical_obs SOURCE = "source" @@ -245,8 +245,6 @@ def ligrec( interactions = _get_interactions( interactions_params, transmitter_params, receiver_params ) - else: - interactions = interactions.copy() if isinstance(interactions, Mapping): interactions = pd.DataFrame(interactions) @@ -277,6 +275,13 @@ def ligrec( assert isinstance(interactions, pd.DataFrame) + if corr_axis: + if corr_axis not in {"clusters", "interactions"}: + raise ValueError(f"Invalid option `{corr_axis}` for `CorrAxis`.") + + if n_perms <= 0: + raise ValueError(f"Expected `n_perms` to be positive, found `{n_perms}`.") + if interactions.empty: raise ValueError("The interactions are empty") # Prepare adata @@ -355,18 +360,23 @@ def find_min_gene_in_complex(_complex: str | None) -> str | None: interactions, tgt, how="left", left_index=True, right_index=True ) else: - raise NotImplementedError( - f"Complex policy {complex_policy!r} is not implemented." - ) + raise ValueError(f"Invalid option `{complex_policy!r}` for `ComplexPolicy`.") interactions = interactions[ interactions[SOURCE].isin(data.columns) & interactions[TARGET].isin(data.columns) ] + _assert_categorical_obs(adata, key=cluster_key) + if interactions.empty: + raise ValueError("After filtering by genes, no interactions remain.") filtered_data = data.loc[ :, list(set(interactions[SOURCE]) | set(interactions[TARGET])) ] + if len(adata.obs[cluster_key].cat.categories) <= 1: + raise ValueError( + f"Expected at least `2` clusters, found `{len(adata.obs[cluster_key].cat.categories)}`." + ) filtered_data["clusters"] = ( adata.obs.copy()[cluster_key].astype("string").astype("category").values ) diff --git a/rapids_singlecell/squidpy_gpu/_utils.py b/rapids_singlecell/squidpy_gpu/_utils.py index 5b15bd5c..8a9d01cf 100644 --- a/rapids_singlecell/squidpy_gpu/_utils.py +++ b/rapids_singlecell/squidpy_gpu/_utils.py @@ -8,6 +8,7 @@ from scipy import stats from scipy.sparse import spmatrix, issparse import pandas as pd +from pandas.api.types import infer_dtype, is_categorical_dtype ### Taken from squidpy: https://github.com/scverse/squidpy/blob/main/squidpy/gr/_ppatterns.py @@ -202,3 +203,13 @@ def _create_sparse_df( return pd.DataFrame._from_arrays( arrays, columns=columns, index=index, verify_integrity=False ) + + +def _assert_categorical_obs(adata, key): + if key not in adata.obs: + raise KeyError(f"Cluster key `{key}` not found in `adata.obs`.") + + if not is_categorical_dtype(adata.obs[key]): + raise TypeError( + f"Expected `adata.obs[{key!r}]` to be `categorical`, found `{infer_dtype(adata.obs[key])}`." + ) diff --git a/rapids_singlecell/tests/_data/dummy.h5ad b/rapids_singlecell/tests/_data/dummy.h5ad new file mode 100644 index 00000000..f1f55513 Binary files /dev/null and b/rapids_singlecell/tests/_data/dummy.h5ad differ diff --git a/rapids_singlecell/tests/_data/test_data.h5ad b/rapids_singlecell/tests/_data/test_data.h5ad new file mode 100644 index 00000000..0daf6243 Binary files /dev/null and b/rapids_singlecell/tests/_data/test_data.h5ad differ diff --git a/rapids_singlecell/tests/_scripts/seurat_hvg.csv b/rapids_singlecell/tests/_scripts/seurat_hvg.csv new file mode 100644 index 00000000..34f43688 --- /dev/null +++ b/rapids_singlecell/tests/_scripts/seurat_hvg.csv @@ -0,0 +1,766 @@ +"means" "dispersions" "dispersions_norm" "highly_variable" +"HES4" 1.88077032191863 3.55366810363084 0.64023993665225 TRUE +"TNFRSF4" 0.862206964359899 3.53394568786647 0.312503920962044 FALSE +"SSU72" 2.78955473500241 3.05248251287271 -0.546511229064831 FALSE +"PARK7" 3.51562963004536 2.45678328702603 -0.734551702076537 FALSE +"RBP7" 0.779661894396393 3.59259048136138 0.848527753345566 TRUE +"SRM" 2.49550683986714 3.23588798534154 -0.249684360972197 FALSE +"MAD2L2" 2.05198283629147 3.2607335950542 -0.661689679526853 FALSE +"AGTRAP" 2.20008855043616 3.33014916346082 0.0255378327794182 FALSE +"TNFRSF1B" 2.12140619189998 3.37607011045442 0.387214229590131 FALSE +"EFHD2" 2.27299086606244 3.26768979892266 -0.466396227648297 FALSE +"NECAP2" 2.34002252354718 3.28416770240885 0.104030378053144 FALSE +"HP1BP3" 2.03090714091537 3.35886246940694 -0.225561862620218 FALSE +"C1QA" 2.26780119055147 3.93296434445563 4.77334982009271 TRUE +"C1QB" 1.56524398237555 3.97964719581811 3.33604014219507 TRUE +"HNRNPR" 2.46599869940325 3.22905980837902 -0.299710064912194 FALSE +"GALE" 0.676448698010205 3.42185061730017 -0.676457727295982 FALSE +"STMN1" 2.24648448379207 3.78470712108589 3.60566618419126 TRUE +"CD52" 3.9383240596554 2.65726626877817 0.254094755148372 FALSE +"FGR" 2.69591551909111 3.21700205644603 0.167425178928824 FALSE +"ATPIF1" 2.96814435737181 3.00283733638007 -0.18347721876371 FALSE +"SESN2" 0.205440249022099 3.48953831056964 0.441192697680527 FALSE +"EIF3I" 2.97101781554166 2.9000046561409 -0.6398134720155 FALSE +"LCK" 2.61248206065248 3.49304289851706 1.98594725205813 TRUE +"MARCKSL1" 2.40099871205148 3.32493702299919 0.402721225241548 FALSE +"SFPQ" 2.16157141818453 3.25187041411575 -0.590990742163032 FALSE +"PSMB2" 2.81001099723218 3.03368873008977 -0.617756413426228 FALSE +"MEAF6" 2.51071071704727 3.15328542182515 -0.854860736722014 FALSE +"NDUFS5" 3.11828489136254 2.82952861863563 -0.952562014836549 FALSE +"CAP1" 3.33127429016772 2.66489777846549 -0.898238151329864 FALSE +"SMAP2" 2.12149230757857 3.30882718006133 -0.142395509924957 FALSE +"C1orf228" 1.34773840883918 3.52729637972859 0.163933471425264 FALSE +"PRDX1" 3.07493711474154 3.00454271280564 -0.175909341639264 FALSE +"TMEM69" 0.958612646535407 3.32754139299571 -1.57406800748461 FALSE +"SCP2" 2.74799354433686 3.04717258564314 -0.566640585075036 FALSE +"MAGOH" 2.27062297589741 3.19748898661502 -1.01930243953784 FALSE +"JAK1" 2.73745653446834 3.11810685254423 -0.484083887167165 FALSE +"CCBL2" 1.13356732074892 3.41539203317771 -1.01249628906537 FALSE +"GBP2" 2.17540327076784 3.45016016075597 0.970752335551299 TRUE +"CD53" 3.51568067232204 2.55102239654541 -0.407812099116343 FALSE +"DENND2D" 1.80773774122602 3.42843268138354 -0.0804581789000627 FALSE +"C1orf162" 3.24942561210149 3.01582481520873 0.64252400956364 FALSE +"RHOC" 2.985741750694 3.32204178661091 1.23304292347939 TRUE +"CD2" 2.53557133944634 3.36110621201421 1.11676508734336 TRUE +"RP11-782C8.1" 0.370210663657041 3.37004316966741 -0.73064188045319 FALSE +"TXNIP" 3.2731625108326 2.98027688141431 0.486449083571333 FALSE +"CD160" 0.626919468581951 3.68140402798016 0.894211411042321 TRUE +"RP11-277L2.3" 0.664996704554698 3.44846098615156 -0.515426959080756 FALSE +"APH1A" 2.43813050354468 3.16948589068915 -0.73617021895599 FALSE +"MRPS21" 2.75295580601676 3.06523192160569 -0.498179608647018 FALSE +"CTSS" 3.54762757164911 3.14905736097152 1.66565514637711 FALSE +"MRPL9" 2.08300092575028 3.24120889728365 -0.748466011881596 FALSE +"S100A10" 3.81536096876538 2.44223867599515 -0.492237754855533 FALSE +"S100A9" 2.93029830903276 3.58932753136182 1.48860978715106 TRUE +"S100A8" 1.79100124352522 3.64342527255502 1.16835405436805 TRUE +"S100A6" 4.01980558791941 2.200924885923 -0.438355066417699 FALSE +"S100A4" 4.19267544737091 2.19511910191538 -0.134003732316128 FALSE +"RAB13" 0.690678797190794 3.36105158683678 -1.04437876728369 FALSE +"TPM3" 3.38289950746532 2.58912183328031 -1.2309361107997 FALSE +"HAX1" 2.44928220942326 3.18071193608576 -0.653924133872012 FALSE +"PMVK" 2.45046175895629 3.18505655637903 -0.622093867943636 FALSE +"PBXIP1" 1.8229903618879 3.44149071306331 -0.00460891537313223 FALSE +"DAP3" 2.25542389981013 3.25354017657867 -0.577839583255053 FALSE +"CCT3" 2.72444627797158 3.08593103645915 -0.696054084521543 FALSE +"SH2D2A" 1.05291375289055 3.54952016366369 0.331799604605673 FALSE +"MNDA" 2.50137095628744 3.33497476625665 0.476261377346501 FALSE +"FCER1A" 2.74486704433425 3.99108486884635 3.01162811231844 TRUE +"TAGLN2" 3.6933593313478 2.52503477022935 -0.342701464152289 FALSE +"LY9" 1.19787954406166 3.55566714133674 0.39340753736688 FALSE +"FCER1G" 3.61782460590848 3.42844644985511 1.28893143832626 FALSE +"SDHC" 2.64245219336588 3.08660335050013 -0.691624964850644 FALSE +"FCGR3A" 3.03212523741908 3.88389506038811 3.72635552834778 FALSE +"FCRLA" 1.20589759528181 3.64802336988037 1.31904556971929 TRUE +"CD247" 2.35082305573306 3.48621802034511 1.58432437768794 TRUE +"CREG1" 1.53902857465827 3.34760775908679 -0.756759826238331 FALSE +"RCSD1" 2.44375827328678 3.23729611150838 -0.239367917341764 FALSE +"XCL2" 0.540378449629801 3.80171120788367 1.35868462509435 TRUE +"XCL1" 0.673182330404454 3.57923209204653 0.275925154834737 FALSE +"PRDX6" 2.87323039456323 3.04722400641683 -0.566445654520422 FALSE +"C1orf21" 0.875691073768353 3.34781133709859 -1.3887971168783 FALSE +"TPR" 2.49690081334352 3.17458841749232 -0.698787254717891 FALSE +"PTPRC" 3.13800013048897 2.90841006663251 -0.602513135956354 FALSE +"PTPN7" 1.44125985833881 3.4445339272991 -0.129110038669163 FALSE +"NUCKS1" 2.48688778047874 3.27964792433752 0.0709168426377314 FALSE +"G0S2" 1.18912873845411 3.72012413383654 2.04167370570866 TRUE +"TRAF3IP3" 3.16899765019373 2.99825210787012 -0.203824894168744 FALSE +"NENF" 2.57797947202887 3.13285736625516 -0.386909372801589 FALSE +"CAPN2" 2.21017564094795 3.20940125154174 -0.92548065800644 FALSE +"COA6" 1.67581756008637 3.31473724112648 -0.740872828010337 FALSE +"ARID4B" 2.17720305391113 3.25324734391835 -0.580145952534994 FALSE +"RP11-156E8.1" 0.284484072581432 3.38119127267806 -1.04002606033147 FALSE +"SH3YL1" 1.694717034835 3.46219556579768 0.115657895877465 FALSE +"ID2" 3.20837502043912 3.14766745584641 1.22138551243336 FALSE +"HPCAL1" 1.95324651319074 3.32800286314145 -0.362715506743191 FALSE +"RAB10" 2.08675184028479 3.3288422298726 -0.358984992330866 FALSE +"OST4" 3.38848298306141 2.62297846214517 -1.082286941062 FALSE +"PPM1G" 2.17873901921501 3.2635955037283 -0.498643165708662 FALSE +"LBH" 2.06320580886345 3.4330046497431 0.103958550856389 FALSE +"SRSF7" 2.92332809912547 3.01009588806467 -0.707194308878235 FALSE +"ZFP36L2" 2.98697085195399 3.05750567641627 0.0591221709010196 FALSE +"ERLEC1" 1.47260668125104 3.46731442399555 0.0184060983653875 FALSE +"CAPG" 2.75040027041101 3.3135801149545 0.443281353486645 FALSE +"RNF181" 2.67271003354135 3.04683439915985 -0.953617774664238 FALSE +"GNLY" 2.7495375274892 4.06006663022984 3.27313045935005 TRUE +"CD8A" 1.4634273769048 3.59348828554246 0.835450647400119 TRUE +"CD8B" 1.77317700698711 3.68394018560444 1.40369015953436 TRUE +"MAL" 1.64318096077802 3.47144089598116 0.0451272544056004 FALSE +"DUSP2" 2.531132387685 3.380728830085 1.24603640758204 TRUE +"MGAT4A" 1.38759438748501 3.46413340182902 -0.293913731468961 FALSE +"LIMS1" 2.16137334569797 3.37009247185121 0.340133955053407 FALSE +"IL1B" 1.25491202982231 3.55771267704059 0.384410990215494 FALSE +"NIFK" 1.78674809979223 3.3331205081553 -0.634091247175682 FALSE +"GYPC" 3.26593350000607 3.06138394280262 0.842553567079129 FALSE +"MZT2B" 3.27153526537439 2.8848499252847 0.0674724082537133 FALSE +"CCDC115" 2.41118903796896 3.16293800176348 -0.784142430957143 FALSE +"CXCR4" 2.46374667112144 3.30203613064927 0.234940971896115 FALSE +"PPIG" 2.3491076588617 3.2642249511761 -0.0420774592796026 FALSE +"SSB" 2.61475888290781 3.14110121837938 -0.332599920102376 FALSE +"WIPF1" 2.00804851083515 3.33284278723216 -0.341204758336087 FALSE +"ITGA4" 2.18805519540149 3.31652567882021 -0.0817616276935953 FALSE +"HSPD1" 2.56038959284022 3.18612018177459 -0.0360206964289463 FALSE +"BZW1" 1.88473444093461 3.29736748706907 -0.49887257340366 FALSE +"NBEAL1" 3.04309527455068 2.9010704255307 -0.635083952090102 FALSE +"CD28" 1.17833159289949 3.55652783303207 0.40203379874517 FALSE +"AC079767.4" 0.75609360948958 3.68939377289349 0.94256078825022 TRUE +"SLC11A1" 1.37615070991924 3.47772767618663 -0.195373404572057 FALSE +"SP110" 2.40978638296584 3.24003539037167 -0.219298965676284 FALSE +"SP140" 1.5961055279512 3.3802462541091 -0.545407775031058 FALSE +"SP100" 2.47521852699296 3.19000451274842 -0.585843342832518 FALSE +"NCL" 2.64474405046805 3.14645992506896 -0.297297439768953 FALSE +"ARL4C" 2.42223987529934 3.30597023620197 0.263763657765005 FALSE +"UBE2F" 2.05581859860972 3.33834619910936 -0.316745178794656 FALSE +"OGG1" 0.842049416232588 3.46358161767188 -0.330636182704285 FALSE +"MRPS25" 1.83637521214718 3.33994598099191 -0.594444606657735 FALSE +"ACAA1" 2.42286250511087 3.15931449544319 -0.810689554061706 FALSE +"EXOG" 1.20605526350558 3.42932766021026 -0.872826809384204 FALSE +"EIF1B" 2.25854504434191 3.2539598165724 -0.574534471082372 FALSE +"UQCRC1" 2.60427554021496 3.0685228131831 -0.810737252577224 FALSE +"NDUFAF3" 2.83560702243022 3.06616628397382 -0.494637542637929 FALSE +"IMPDH2" 2.42585028766239 3.24211646139579 -0.204052283655239 FALSE +"GPX1" 3.6105586131361 2.84302749100406 0.604608636949215 FALSE +"GNAI2" 2.62659107028335 3.14492000647294 -0.307442228259969 FALSE +"MANF" 2.23349723834358 3.43751742582445 0.871177324249738 TRUE +"TEX264" 2.47180296893221 3.18819046951439 -0.599133682297661 FALSE +"TKT" 3.25564846508779 2.849134855879 -0.0893363347393464 FALSE +"ARL6IP5" 3.22468408835907 2.82309971146852 -0.203644897947614 FALSE +"PCNP" 2.2494031628663 3.28822351050334 -0.30467136560034 FALSE +"BBX" 1.92891438174297 3.35610292890043 -0.237826472651718 FALSE +"CD47" 2.49222840449586 3.19157160415785 -0.574362262109909 FALSE +"TIGIT" 0.96818939105192 3.60013416487041 0.917478360958406 TRUE +"COX17" 2.31104990672131 3.23389195422206 -0.264308009771308 FALSE +"EAF2" 2.01877998181135 3.53354084510981 0.550785559671043 TRUE +"GATA2" 0.189738871344609 3.61939208308945 2.21643129578065 TRUE +"RAB7A" 2.8987150914124 3.00905528851261 -0.711139108485027 FALSE +"H1FX" 2.62614265316577 3.26193175061855 0.463416308280052 FALSE +"SELT" 2.5748117702135 3.19186416871151 0.00181996133090909 FALSE +"SIAH2" 1.90641093943005 3.33636929145934 -0.325531424670991 FALSE +"GPR171" 0.773750066473151 3.49700202824371 -0.221684270216929 FALSE +"P2RY13" 1.01490152740574 3.52410523315076 0.0770790877187818 FALSE +"SSR3" 2.6346205193935 3.22265416230132 0.204660535770916 FALSE +"MFSD1" 1.62246493235478 3.38991666808116 -0.48278657182849 FALSE +"SEC62" 2.63945478975412 3.19986329318145 0.0545171792685254 FALSE +"EIF4A2" 3.30739005339261 2.84435879857266 -0.11030584579257 FALSE +"CCDC50" 1.72345530596264 3.4965446694018 0.315179100533326 FALSE +"HES1" 1.35371879587411 3.59134813206372 0.628223101558617 TRUE +"ATP5I" 2.67091313276188 3.06589134864023 -0.828073007387867 FALSE +"SPON2" 1.39974189083309 3.73302162636687 1.65516665691299 TRUE +"LYAR" 1.96041828509616 3.35888177318778 -0.2254760681397 FALSE +"CYTL1" 0.494106397368457 3.77214774939208 1.21559384247036 TRUE +"MRFAP1" 2.44679501225525 3.20491542523992 -0.476600583327349 FALSE +"BLOC1S4" 2.19704394854576 3.29186896345672 -0.275959538531454 FALSE +"BST1" 1.08042068875366 3.40819759541628 -1.08460236483721 FALSE +"FGFBP2" 1.5871240843349 3.82309830014627 2.32230068540171 TRUE +"MED28" 1.95596091462539 3.27795177635202 -0.585164519424375 FALSE +"KLF3" 1.96615774778099 3.3995331200336 -0.0448036282373467 FALSE +"SMIM14" 1.8733167730832 3.52480611379101 0.51196457730003 TRUE +"HOPX" 1.99199632234595 3.6895845704617 1.24431241125872 TRUE +"SPINK2" 0.64367493790273 3.75372270451607 1.33184277586563 TRUE +"IGFBP7" 2.12535811325291 3.46257699304813 1.06854812281712 TRUE +"IGJ" 2.02952034671665 4.31110894566778 4.00663971502981 TRUE +"CCNI" 3.27938208538782 2.81324330174249 -0.246919942495526 FALSE +"HNRNPDL" 3.2598845827918 2.80695519518584 -0.27452817905681 FALSE +"PLAC8" 3.00339922727606 3.36001913842592 1.40157341782591 FALSE +"HSD17B11" 2.46937497489751 3.23188418539812 -0.279017653255639 FALSE +"BANK1" 1.43566745072261 3.67783394119589 1.38163475670373 TRUE +"CCDC109B" 2.61533399141984 3.20338247650842 0.0777011128903178 FALSE +"SNHG8" 2.57262896000928 3.23038728345501 0.255605357583006 FALSE +"ANXA5" 3.30607435588407 2.7834626341202 -0.377673406874909 FALSE +"HMGB2" 2.85267319857206 3.35791655991469 0.611355989210591 TRUE +"SUB1" 3.08179304336015 3.14585089367294 0.451168019962388 FALSE +"IL7R" 2.22330155102622 3.59018870846112 2.0736263810646 TRUE +"FYB" 2.62833568552046 3.28191306290392 0.595050660531786 TRUE +"EMB" 1.60525338597389 3.34100009177806 -0.799548074852102 FALSE +"GZMK" 1.82348368517279 3.89375393761685 2.62242043667214 TRUE +"GZMA" 2.43305136877294 3.78614829441993 3.7817224790948 TRUE +"NSA2" 2.29678066911439 3.24559647737468 -0.640404680308627 FALSE +"COX7C" 3.59614114322243 2.22843708096564 -1.52625855378757 FALSE +"GLRX" 3.02324468069108 3.01487027279973 -0.130079163703886 FALSE +"CAMK4" 1.33153829226669 3.46161160457309 -0.312193392407886 FALSE +"EPB41L4A-AS1" 2.07925483366828 3.35132896289923 -0.259044074339529 FALSE +"REEP5" 2.93993627952589 3.00513323554622 -0.726007184268013 FALSE +"SNX2" 2.61398752309147 3.20516412861831 0.0894384111254829 FALSE +"IRF1" 2.08293528255313 3.36868185297734 -0.181920209251845 FALSE +"SKP1" 3.17378605057298 2.86758922239192 -0.783662076857227 FALSE +"TXNDC15" 1.58440901561121 3.39225463635209 -0.467646952511503 FALSE +"H2AFY" 3.13961463675365 2.94172091620841 -0.45469098201903 FALSE +"EGR1" 0.755854624853946 3.46616246971674 -0.408307681141864 FALSE +"MZB1" 1.89502940314269 4.19894567224949 3.50813686461313 TRUE +"NDUFA2" 2.85485509122861 3.03381640323039 -0.617272418450524 FALSE +"NDFIP1" 2.7535666656136 3.06568029273253 -0.496479882521461 FALSE +"CD74" 4.39880166182438 2.60402299400562 0.707106781186547 FALSE +"NUDCD2" 1.98067806054445 3.36181368053905 -0.212445384144632 FALSE +"NPM1" 3.90178321099788 2.20586010931427 -0.430866386484064 FALSE +"ATP6V0E1" 3.34379860542157 2.69986516791462 -0.744712133419028 FALSE +"HIGD2A" 3.62934687928222 2.3627226327381 -0.635850014226434 FALSE +"LMAN2" 2.91974587368354 3.02706685494151 -0.642859221158197 FALSE +"F12" 0.240142663431215 3.35755263308639 -1.3631912991643 FALSE +"PRR7" 1.25417390301911 3.44610729039542 -0.424578956152598 FALSE +"NHP2" 2.87524692361751 3.04847637234876 -0.561698071623503 FALSE +"SQSTM1" 2.36043469270379 3.19265611498893 -0.566416741943501 FALSE +"RNF130" 2.59071798702997 3.27293445728469 0.535900744954109 TRUE +"SERPINB1" 2.77391025775678 3.15138730332642 -0.171573936690829 FALSE +"SERPINB6" 2.18562732509154 3.2683987789217 -0.460812254576051 FALSE +"LY86" 2.81317057210154 3.25245517733428 0.211563369931743 FALSE +"ADTRP" 0.676051990032346 3.52107861259993 -0.0759865199703292 FALSE +"DEK" 2.76343860238718 3.10724137875725 -0.338926330355305 FALSE +"SOX4" 1.10798430666125 3.55882381561274 0.42504522777171 FALSE +"FAM65B" 2.43119761902019 3.28395555473758 0.102476107176322 FALSE +"HIST1H4C" 2.16308906306601 3.39128869694704 0.507076817092301 TRUE +"HIST1H1E" 2.46011240294088 3.23831352043661 -0.231914010082303 FALSE +"ZNRD1" 1.95954047684283 3.3140703241945 -0.424637829148126 FALSE +"LTB" 3.79717633154273 3.36188072620072 1.1687084798 FALSE +"LST1" 3.63853174752907 3.49409660575534 1.40750080911858 FALSE +"AIF1" 3.65665169135743 3.53135765627296 1.47479721160771 FALSE +"DDAH2" 2.11340429878934 3.32865209691498 0.0137468382652377 FALSE +"CLIC1" 3.92330153224379 1.73580916802688 -1.14411901412209 FALSE +"C6orf48" 3.26808655348311 2.89201107681185 0.0989137910660921 FALSE +"HLA-DRA" 4.14245186724542 3.33325849456824 1.12153477577529 FALSE +"HLA-DRB5" 3.91408203666622 3.00981880472529 0.789055970109514 FALSE +"HLA-DRB1" 4.12317921160857 3.05565265897838 0.815293889198523 FALSE +"HLA-DQA1" 3.68334996316207 3.40805018890775 1.25209417885776 FALSE +"HLA-DQB1" 3.54240798739379 3.27740161855204 2.11064186131899 FALSE +"HLA-DQA2" 3.49808501697905 3.28641585974323 2.14189544173609 FALSE +"HLA-DMB" 3.00743880994498 3.29519571695649 1.11390925106961 FALSE +"HLA-DMA" 3.31313113840681 3.23950601917576 1.62460717526643 FALSE +"HLA-DPA1" 4.04364135819571 3.18712882360912 1.05810518534791 FALSE +"HLA-DPB1" 4.03173419935203 3.2760181401218 1.19298532918502 FALSE +"HSD17B8" 1.41476751550311 3.43002959578333 -0.541120762000296 FALSE +"TAPBP" 2.35771334653687 3.26760910155185 -0.0172839447419166 FALSE +"DAXX" 1.78971204570193 3.29640775234363 -0.847342030957476 FALSE +"CUTA" 3.23620771231059 2.92721041573804 0.253458194396349 FALSE +"HMGA1" 2.68823776570973 3.19839966219859 0.0448749639018696 FALSE +"CCDC167" 2.2417364768391 3.34809811149758 0.166904927264235 FALSE +"CNPY3" 3.01119556212996 2.96333107129326 -0.358792507130755 FALSE +"MEA1" 2.33090504699858 3.19456717900589 -0.552415592991462 FALSE +"HSP90AB1" 3.2733330113404 2.804935751696 -0.283394643562035 FALSE +"ELOVL5" 1.94096442998644 3.33080521468527 -0.350260625658804 FALSE +"UBE2J1" 2.28703739021791 3.41116421484514 0.663617702434484 TRUE +"PNISR" 2.84910153982415 3.04456680162047 -0.576518828600864 FALSE +"RP3-467N11.1" 0.228668589920236 3.41011296999176 -0.644635827167253 FALSE +"CD164" 2.632249719051 3.13283307285002 -0.387069414674882 FALSE +"GTF3C6" 2.50336540233086 3.21077613822447 -0.433662871804668 FALSE +"RWDD1" 2.71267840038055 3.10855368493143 -0.547018944319712 FALSE +"GOPC" 1.29738004317114 3.37600577515729 -0.932721284740385 FALSE +"SAMD3" 1.45178351218028 3.45699836876203 -0.0483959840370171 FALSE +"DYNLT1" 1.97139648287987 3.32396100564693 -0.380679296677205 FALSE +"SOD2" 2.30358639457007 3.33924632341811 0.0971876625405603 FALSE +"TCP1" 2.27049072699976 3.25288183558515 -0.583024720191396 FALSE +"MRPL18" 2.41433158620565 3.16931059842845 -0.737454473711627 FALSE +"RNASET2" 3.55413776411645 2.52836778496456 -0.486358668909856 FALSE +"MAD1L1" 1.93519971071393 3.34319018071071 -0.295216397028156 FALSE +"CHST12" 1.87351132993537 3.31104759754241 -0.438072154004845 FALSE +"EIF2AK1" 1.56342739361332 3.35462386364832 -0.711326723714702 FALSE +"NDUFA4" 3.5313509543955 2.4196384731799 -0.863337742076391 FALSE +"TOMM7" 3.47234138295704 2.5953242492034 -0.254211647863172 FALSE +"CPVL" 2.90014579363954 3.5320455353688 1.27145997690549 TRUE +"LSM5" 1.94349075302528 3.30911772969625 -0.44664933433243 FALSE +"SEPT7" 2.96719887949065 3.057044987757 0.0570777922443779 FALSE +"AOAH" 1.67883149723539 3.36460215023991 -0.451226063103958 FALSE +"STK17A" 2.28547537054658 3.406941310819 0.630357832761845 TRUE +"COA1" 1.85962174058007 3.29801434064504 -0.838009955309245 FALSE +"PPIA" 3.84072050060515 1.97395756653606 -0.782753987303413 FALSE +"SNHG15" 1.98659188274985 3.30186164622693 -0.478898556221889 FALSE +"UPP1" 1.70251680017246 3.44110647375852 -0.00684081900160539 FALSE +"CCT6A" 2.46699995045641 3.17710426010359 -0.68035527817101 FALSE +"SBDS" 1.86319408097774 3.33261067921621 -0.637052654415536 FALSE +"WBSCR22" 2.3493036223267 3.19241126155589 -0.568210627107461 FALSE +"EIF4H" 2.4691986216715 3.15843222700747 -0.817153372999493 FALSE +"LAT2" 2.09148787357433 3.27395693790332 -0.417035829110541 FALSE +"NCF1" 2.05389185978319 3.33473810706238 -0.332781124565232 FALSE +"HSPB1" 2.49467999604256 3.25969132982628 -0.0752924155800499 FALSE +"RSBN1L-AS1" 0.303696615126449 3.45377698244236 -0.0477025325384536 FALSE +"CDK6" 0.74369361209756 3.55655353954441 0.138687495641845 FALSE +"CCDC132" 0.348488159454098 3.32205965300362 -0.962888014795907 FALSE +"BRI3" 2.44602987057203 3.32008159723281 0.367148612928619 FALSE +"PDAP1" 2.40859502009045 3.21403510533497 -0.409786495326051 FALSE +"ATP5J2" 3.21330592099154 2.71228684873763 -0.690174141805705 FALSE +"MCM7" 1.19119917917552 3.45599025313887 -0.60560162657811 FALSE +"LAMTOR4" 3.51216970285824 2.44221792511759 -0.785051760822904 FALSE +"PILRA" 2.56765585415311 3.49057588404772 1.96969487348407 TRUE +"ZNHIT1" 2.97766060424037 2.90776608029641 -0.605370926991997 FALSE +"FAM185A" 0.26161221766767 3.50499179216143 0.652458157777893 TRUE +"RINT1" 0.120314869557555 3.46943002356181 0.166291117654948 FALSE +"SYPL1" 1.85032922833223 3.40973410094924 -0.189071298374853 FALSE +"RP11-390E23.6" 0.386946146446636 3.37178116836425 -0.722229752562229 FALSE +"CPA5" 0.80794929426823 3.47986840813046 -0.181772024122253 FALSE +"MTPN" 2.22318096874595 3.26281401808078 -0.504798198033965 FALSE +"C7orf55" 1.5484530032343 3.34630014841228 -0.765227318322415 FALSE +"NDUFB2" 3.16518984246629 2.77285027462809 -1.20408111445315 FALSE +"MRPS33" 2.01485208304681 3.35999162428856 -0.220543402389014 FALSE +"GSTK1" 3.4814505781444 2.60137286692168 -0.233240280860595 FALSE +"ZYX" 2.36189161198549 3.22648582519528 -0.318568000405514 FALSE +"GIMAP7" 3.33751674898341 3.1838687105225 1.38032887541682 FALSE +"TMEM176B" 2.51113532566192 3.62661746163109 2.61294166772995 TRUE +"TMEM176A" 1.51193913471295 3.51183285909641 0.306687239045162 FALSE +"OFD1" 1.73282506417802 3.40124525700978 -0.238379844777042 FALSE +"NDUFB11" 3.33687528578276 2.71504562397523 -0.678061605433606 FALSE +"TIMP1" 3.31636498152831 3.13320094586693 1.15786959931528 FALSE +"CFP" 3.10993350047188 3.35593348697256 1.38344269448016 FALSE +"EBP" 2.00817689496213 3.32142831124919 -0.391935702968046 FALSE +"WDR13" 1.42412700270031 3.36050865719832 -1.04505468551383 FALSE +"PQBP1" 2.44420339226037 3.22064512426307 -0.361359096365817 FALSE +"PLP2" 2.87666000690641 3.17018239563911 -0.100323788044715 FALSE +"MSN" 2.57944941850045 3.16219705958519 -0.193623192614587 FALSE +"IGBP1" 2.82613831967294 3.07243996825482 -0.470854688574563 FALSE +"IL2RG" 3.15102075797078 3.02435185591424 -0.0880031417300249 FALSE +"COX7B" 2.23638412234519 3.27919865592683 -0.375751713430052 FALSE +"ITM2A" 2.03683717403862 3.55312675230888 0.637833933609996 TRUE +"TCEAL8" 1.76493938389587 3.31923539215111 -0.714744736823374 FALSE +"NGFRAP1" 1.42625360351265 3.53052896191991 0.187365373524195 FALSE +"RPL39" 2.4746451537889 3.28385381743747 0.101730742771905 FALSE +"NDUFA1" 3.08277499344226 2.82728056744339 -0.962538096912818 FALSE +"CD40LG" 1.13908642258007 3.62261294522185 1.06437021264756 TRUE +"SSR4" 3.43267775977527 2.82707067190924 0.549284209944994 FALSE +"MPP1" 1.43587248580675 3.35865952559766 -0.685193612173036 FALSE +"BLK" 1.40709315652298 3.66154429360133 1.13705148936854 TRUE +"BIN3" 1.47925428927643 3.41635553315693 -0.311580504835096 FALSE +"PNOC" 1.32209115379711 3.61891732479677 0.828062915934563 TRUE +"RP11-489E7.4" 0.839191116734345 3.39447833977714 -0.962252420736102 FALSE +"LEPROTL1" 2.190983710905 3.3619002313788 0.275611330633594 FALSE +"GTF2E2" 1.58934064713754 3.30980778860192 -1.00153524532824 FALSE +"PPAPDC1B" 1.52794987271751 3.54282262012451 0.507362838677888 TRUE +"GOLGA7" 2.12054388683268 3.27405241684299 -0.416283830706009 FALSE +"CHCHD7" 1.78939801782059 3.32479413278222 -0.682456073926386 FALSE +"TRAM1" 2.45675474953881 3.2390988589173 -0.226160335193182 FALSE +"TPD52" 1.72478331813181 3.4417388773682 -0.00316742095644467 FALSE +"MTDH" 3.05280739350945 2.90419025102596 -0.621239233913001 FALSE +"ZNF706" 2.97642929127324 3.00867737168276 -0.157561140113553 FALSE +"EIF3E" 2.80476202747249 3.23224722511165 0.134957223191815 FALSE +"LYPD2" 1.48400536912563 3.93487286137792 3.04610191376563 TRUE +"LY6E" 3.52876106620447 2.69712548928742 0.0987468736630405 FALSE +"COMMD5" 1.80082344851781 3.29410196863405 -0.860735473438945 FALSE +"PLGRKT" 1.89151195740484 3.35462448195361 -0.24439734023361 FALSE +"PTPLAD2" 1.97973182028553 3.3047987040352 -0.465844981333787 FALSE +"SIT1" 2.30867132505524 3.43445841645396 1.20511472414158 TRUE +"CCDC107" 2.38671189360534 3.25136998870585 -0.136257582352883 FALSE +"TLN1" 2.25112946854537 3.28757012178372 -0.309817498101959 FALSE +"DCAF10" 0.481516391549768 3.36824458252357 -0.739347263894807 FALSE +"ANXA1" 3.25038837946519 3.06685872744265 0.866590874351591 FALSE +"OSTF1" 2.91874199622537 3.00811793836013 -0.714692500859333 FALSE +"HNRNPK" 3.21429230631956 2.78646598228775 -0.364487061201765 FALSE +"HIATL1" 0.41347302038409 3.42662282947277 -0.456789353880501 FALSE +"ANP32B" 3.17699292897818 2.90427022125329 -0.620884353403957 FALSE +"TXN" 2.74419136757791 3.11334414322823 -0.315791414682894 FALSE +"ATP6V1G1" 3.3624065422185 2.67533139326953 -0.852428859915367 FALSE +"NDUFA8" 2.29102036642718 3.24193855002767 -0.669214756521754 FALSE +"ARPC5L" 2.47398015958645 3.25774525032343 -0.0895501006968455 FALSE +"C9orf78" 2.69694232632053 3.1099048951144 -0.538117342930835 FALSE +"NUP214" 1.52019913561372 3.39592830859287 -0.443857921705363 FALSE +"FCN1" 3.00566712020149 3.66796422708078 2.76812836550596 FALSE +"EGFL7" 0.399810426341325 3.69789824376537 0.856217084416377 TRUE +"SNHG7" 2.87596116491333 3.1531742059832 -0.164799983267586 FALSE +"PHPT1" 2.49749987471086 3.16465937202615 -0.771531047332516 FALSE +"C9orf142" 2.66017680966191 3.25386481848245 0.410272382033987 FALSE +"CLIC3" 1.8141475170406 3.75786503540309 1.83309219738145 TRUE +"KLF6" 2.96287747966498 3.05535843198089 0.0495934347232158 FALSE +"AKR1C3" 0.874161648288546 3.68549922435558 1.69773017207376 TRUE +"RBM17" 2.1937098366361 3.2222877835298 -0.82398548506327 FALSE +"PRKCQ-AS1" 1.71687725243083 3.47143905449621 0.169349893829095 FALSE +"GATA3" 1.23423492994735 3.49010705475675 -0.105639449011703 FALSE +"VIM" 4.06739551743169 1.9219411241981 -0.435360027336482 FALSE +"NSUN6" 0.20596103820399 3.47281238673302 0.212531604456449 FALSE +"DNAJC1" 1.96217309942806 3.32776983822773 -0.36375117180688 FALSE +"COMMD3" 2.22770289465426 3.28622758770585 -0.320391384741297 FALSE +"APBB1IP" 2.48652270934974 3.1514430844842 -0.868358369088895 FALSE +"ABI1" 1.9545422921601 3.35519898919245 -0.241843977734274 FALSE +"EPC1" 1.98110160133363 3.32679869892316 -0.368067341411495 FALSE +"HNRNPF" 2.9008348399592 3.00853895646476 -0.713096467062922 FALSE +"ZNF22" 1.77069596051533 3.30773405385662 -0.781551745766572 FALSE +"SRGN" 3.72197863086736 2.5051152677656 -0.378677660114587 FALSE +"PPA1" 3.07620328737387 3.00059713651996 -0.193418459314089 FALSE +"PRF1" 1.8335541021299 3.69343093664082 1.45881841271069 TRUE +"C10orf54" 3.10529102324294 3.11671626265077 0.321878495177014 FALSE +"PSAP" 3.46133598638492 3.14536293573533 1.65284607972742 FALSE +"ANAPC16" 3.10599776502874 2.90271739964013 -0.627775244463765 FALSE +"RPS24" 4.21077942971783 1.07699270335599 -1.36746490532121 FALSE +"ANXA11" 2.59306967007297 3.17767650974705 -0.0916465373194863 FALSE +"HHEX" 2.09034326754452 3.32248723087241 -0.0348080518899119 FALSE +"PDLIM1" 2.14187005036965 3.44068961198054 0.896161670916329 TRUE +"PGAM1" 2.48769771347841 3.10654000418404 -1.19733464100159 FALSE +"NPM3" 1.82637503444921 3.29752206894404 -0.840869379064064 FALSE +"ADD3" 1.81659996207802 3.36901610265621 -0.425587050408244 FALSE +"C10orf118" 1.55583445100185 3.44113631092627 -0.151111457212627 FALSE +"RGS10" 3.11344058999419 2.98653088838909 -0.255839656101156 FALSE +"TIAL1" 1.74825858844177 3.30627166797725 -0.790046203021887 FALSE +"FAM175B" 0.637380484828048 3.44589579613699 -0.530950025332543 FALSE +"ZNF511" 2.08386519741503 3.29430495572696 -0.512483807785518 FALSE +"FUOM" 1.88410913859839 3.30974848647591 -0.443845974168261 FALSE +"PSMD13" 2.35688939270209 3.19424541014928 -0.554772988478762 FALSE +"IFITM2" 3.68160552077843 2.79230472645207 0.140009202813686 FALSE +"IFITM1" 2.43556259778112 3.45732566196546 1.37264846853062 TRUE +"IFITM3" 2.77828655358999 3.61091668782621 1.57045192879319 TRUE +"RNH1" 3.26444325814092 2.91788175144473 0.212500241745586 FALSE +"IRF7" 2.02560475814499 3.30093399139887 -0.483021461714036 FALSE +"TALDO1" 3.2495587119335 2.8413084720404 -0.12369845225257 FALSE +"CTSD" 2.52001367158521 3.27471482545831 0.0347751688948523 FALSE +"CARS" 1.41363644116194 3.47795422679604 -0.193731215329537 FALSE +"ILK" 2.01411380987544 3.2684345129826 -0.627463417925022 FALSE +"NUCB2" 2.19571108474883 3.46016863191925 1.04957971226943 TRUE +"LDHA" 3.39712417337079 2.63270732937401 -1.03957187802874 FALSE +"CAT" 2.68053409953225 3.1405792354425 -0.33603867751737 FALSE +"CD82" 1.61837904247347 3.52631429390243 0.400462425327005 FALSE +"SPI1" 3.36083675348535 3.18607058054864 1.38999629247011 FALSE +"PSMC3" 2.37639006864026 3.17648331331814 -0.684904559805325 FALSE +"MTCH2" 2.22067237147074 3.20646806105152 -0.948582659099955 FALSE +"TIMM10" 2.22482618831079 3.19240079283312 -1.0593773882006 FALSE +"LPXN" 1.76265157982474 3.38799642004087 -0.3153374254694 FALSE +"MS4A1" 1.82431674142266 3.89874243045918 2.65139674163744 TRUE +"CYB561A3" 1.86270639868611 3.47322837237393 0.17974337782185 FALSE +"POLR2G" 2.95246554993266 2.97156414890618 -0.853263936893935 FALSE +"SLC3A2" 2.11634154429574 3.27708068132422 -0.392433020610266 FALSE +"OTUB1" 2.52290522943674 3.15701231479031 -0.82755616551445 FALSE +"BAD" 1.94136074781356 3.29094728778422 -0.527406758847808 FALSE +"CAPN1" 1.87628679434777 3.35167320661519 -0.257514104070181 FALSE +"NEAT1" 2.74255371475709 3.16384281381358 -0.182781172394637 FALSE +"KAT5" 1.2824138523676 3.36696528440057 -0.998252764467951 FALSE +"CTSW" 2.50184992092505 3.6280099264227 2.6231433704384 TRUE +"SF3B2" 2.72419388741045 3.09907065820968 -0.609491922174002 FALSE +"ADRBK1" 1.90484899588517 3.33468077078783 -0.333035952152058 FALSE +"POLD4" 3.28883662808768 2.78210585353592 -0.383630417780375 FALSE +"TBC1D10C" 2.93736587657673 3.1334831260796 -0.239446723320405 FALSE +"PTPRCAP" 3.54018037063507 3.33524683974809 2.31119898354919 FALSE +"CORO1B" 2.83313843837161 3.19031629023234 -0.023998385714872 FALSE +"GSTP1" 3.77041958250188 2.71995033635047 0.00933145512566443 FALSE +"UNC93B1" 2.28536280184206 3.27465212032249 -0.411560526684235 FALSE +"NDUFS8" 2.88862913685384 3.01809661674621 -0.676864417523986 FALSE +"MRPL21" 2.1553790638201 3.25544960469411 -0.562800801915119 FALSE +"LAMTOR1" 3.18383343358424 2.81331710139359 -0.246595921551035 FALSE +"MRPL48" 2.00051481315874 3.29806612811421 -0.495767505748207 FALSE +"SPCS2" 2.83155534622748 3.15482445635242 -0.158544063788521 FALSE +"TMEM126B" 1.76592133461715 3.32021335578926 -0.709064108721915 FALSE +"CTSC" 3.02764656960464 3.04078979991481 -0.0150571700901549 FALSE +"CWC15" 2.38279312796731 3.22725438234769 -0.31293727162123 FALSE +"FDX1" 2.21824013630881 3.28086232098308 -0.362648578097767 FALSE +"POU2AF1" 1.2522944791464 3.49211481385886 -0.0910858779238025 FALSE +"IL18" 1.03335103697836 3.42054386391006 -0.960862192076992 FALSE +"AMICA1" 2.90919616463609 3.26972963656569 0.277048964125279 FALSE +"CD3E" 2.92322571312313 3.45878855490342 0.993750739797926 TRUE +"CD3D" 3.09327082029195 3.59156091384064 2.42907660084387 FALSE +"CD3G" 2.2518104436951 3.5321563210233 1.61655948325521 TRUE +"FLI1" 1.80565531723311 3.3051818761287 -0.796376399726668 FALSE +"NINJ2" 1.5609515143884 3.46499337118086 0.00337601585060111 FALSE +"CD27" 2.90048060223493 3.52186727817359 1.23287531203383 TRUE +"CHD4" 1.3426981733221 3.36509561660317 -1.01180535808916 FALSE +"MLF2" 2.58958487797847 3.09999260264193 -0.603418269131707 FALSE +"LAG3" 0.892093375483209 3.53825618418845 0.351902623221687 FALSE +"CD4" 1.94017466695926 3.2872142166916 -0.543998166389395 FALSE +"KLRG1" 1.50777997640318 3.55248491474149 0.569931464629263 TRUE +"KLRB1" 1.1924799123468 3.60226689776107 0.860452451661331 TRUE +"KLRC2" 0.377902755908066 3.61136368610661 0.437379160465871 FALSE +"KLRC1" 0.599887622791987 3.6309163749101 0.588688943290777 TRUE +"RP11-291B21.2" 0.978938283551164 3.52872409157692 0.26477760311724 FALSE +"PRR4" 0.904315732416752 3.430788953806 -0.630366956945641 FALSE +"H2AFJ" 2.38184034537358 3.28237801066042 0.0909184464142142 FALSE +"WBP11" 1.3632085384555 3.40002055106161 -0.758646243607779 FALSE +"LDHB" 3.71062938452355 2.76529358903266 0.0912249535718192 FALSE +"FGFR1OP2" 1.76035231530845 3.40513812546283 -0.215767615582579 FALSE +"FKBP11" 2.135253356219 3.65349385725856 2.57222189391006 TRUE +"TMBIM6" 3.3237217096618 2.81448072395967 -0.241486980285002 FALSE +"COX14" 2.52408398744522 3.13571565361898 -0.983583238701814 FALSE +"HNRNPA1" 3.98648113617842 1.7958536858051 -1.05300780399819 FALSE +"NFE2" 0.8730624102893 3.48102103731114 -0.171236788614978 FALSE +"CD63" 3.11515145536368 3.07268154888682 0.12646750087714 FALSE +"WIBG" 2.0294320307228 3.33272357388905 -0.341734594792701 FALSE +"CNPY2" 2.57769129295769 3.14878839713026 -0.281957761015772 FALSE +"ATP5B" 3.38007438412281 2.66905319984354 -0.87999357239605 FALSE +"RP11-620J15.3" 1.01814228650138 3.51284571233393 -0.0357691831393403 FALSE +"TMBIM4-1" 2.68455938124627 3.13435538068185 -0.377040643665837 FALSE +"LYZ" 3.75075224876102 3.78102784301741 1.9257213037436 FALSE +"ATXN7L3B" 1.17805656257772 3.41012741810466 -1.0652607643385 FALSE +"NAP1L1" 3.55567504337354 2.61347062537124 -0.19129573349932 FALSE +"OSBPL8" 2.46106481956778 3.20877395865184 -0.448331566404239 FALSE +"BTG1" 3.77566666663771 2.63181890853916 -0.149840869742786 FALSE +"ISCU" 2.99603328783625 3.0106828226902 -0.148661634657808 FALSE +"HVCN1" 1.95519124092409 3.46154263802075 0.230793904961229 FALSE +"PPP1CC" 2.59884593528146 3.160535098199 -0.204571983535569 FALSE +"MAPKAPK5-AS1" 1.68065698646624 3.3484481281919 -0.545058786548605 FALSE +"ERP29" 3.60119967242132 2.3653440623085 -1.05158372977254 FALSE +"OAS1" 2.41730767894551 3.38488413031527 0.841915502003081 TRUE +"COX6A1" 3.50438682070113 2.38237205057007 -0.992545415932638 FALSE +"TRIAP1" 1.58815147511883 3.38383843261868 -0.522146460568415 FALSE +"POP5" 2.01722334743994 3.29899166797298 -0.491654000108527 FALSE +"ACADS" 0.963008418267332 3.40491964251251 -0.866817058553811 FALSE +"RNF34" 1.15273322429456 3.46085051376541 -0.556889783814366 FALSE +"AC084018.1" 0.963804155489779 3.42214197170866 -0.709401909686537 FALSE +"MPHOSPH9" 0.83013817581624 3.4636988298338 -0.329564842718418 FALSE +"SAP18" 3.29207895163967 2.73110560471937 -0.607549481703003 FALSE +"POMP" 2.55771840396182 3.10827532628545 -0.548852735791161 FALSE +"ALOX5AP" 2.25336594515534 3.47230897984495 1.1451978904923 TRUE +"WBP4" 1.18779191823964 3.40446825046509 -1.12197963301957 FALSE +"TSC22D1" 0.510620462965645 3.52372010161378 0.0131734099573617 FALSE +"ESD" 1.87835099052462 3.31057927051557 -0.440153605006518 FALSE +"EBPL" 1.83724170186105 3.34633700171372 -0.557321537360457 FALSE +"UCHL3" 1.70565827196434 3.27625488864867 -0.964402542580352 FALSE +"TNFSF13B" 1.82566382890225 3.35420686661042 -0.511608410672598 FALSE +"APEX1" 2.76202388943155 3.1294290812593 -0.254815165850972 FALSE +"DHRS4L2" 2.22120701005766 3.20754177788256 -0.940125994765445 FALSE +"PSME2" 3.65622261394295 2.32823873494105 -0.698130659385556 FALSE +"NEDD8" 3.40027342167025 2.6073602953745 -0.212481065229147 FALSE +"TINF2" 1.7595825909509 3.3571167498208 -0.494705978218076 FALSE +"GZMH" 1.87399710375762 3.89137561842566 2.14116045726274 TRUE +"GZMB" 2.0486734718415 3.98502854304607 2.55739518767246 TRUE +"NFKBIA" 3.09724085002722 3.05115538005322 0.030941728238131 FALSE +"PNN" 2.17417094634476 3.28000583093699 -0.369394349996051 FALSE +"RN7SL1" 0.310033909671626 3.46443195456467 0.0979622210236809 FALSE +"RPL36AL" 3.81477657430148 2.08048952933797 -1.14558530773851 FALSE +"ARF6" 2.89712400777323 3.04212544263297 -0.585773754720087 FALSE +"LGALS3" 2.95714605386322 3.18277617655643 -0.0525821357321126 FALSE +"DAAM1" 0.57574442907445 3.3389868067356 -1.1779022261292 FALSE +"DHRS7" 2.63315560935975 3.12874487999587 -0.414001910926923 FALSE +"ERH" 2.94360458991256 2.98295189076515 -0.810094247344307 FALSE +"COX16" 2.37305761054682 3.21971122305615 -0.368201195734782 FALSE +"FOS" 3.5425532392012 2.83233297420364 0.567529316155106 FALSE +"AHSA1" 2.11580830099645 3.27233952829737 -0.429774653475961 FALSE +"CALM1" 3.6435137992878 2.4942334037929 -0.398331166592955 FALSE +"EVL" 3.10536424801186 3.0527650495379 0.0380848907026398 FALSE +"PPP2R5C" 2.16753490785345 3.36382049675213 0.290735466929016 FALSE +"PLD4" 2.13199666321673 3.33876460147225 0.0933935888323726 FALSE +"CRIP1" 3.28862271314085 2.88640782945323 0.0743124620023625 FALSE +"AL928768.3" 1.7146392005646 4.15897724941942 4.16300429829345 TRUE +"KIAA0125" 1.01945656848426 3.66270174888895 1.46615926283861 TRUE +"NDNL2" 2.21232432750462 3.27493874593466 -0.40930304452347 FALSE +"EMC7" 2.3954251974654 3.19457782918572 -0.552337565906698 FALSE +"NOP10" 2.80317292512519 3.08273225448191 -0.431837752057912 FALSE +"SRP14" 3.78208186613075 2.05364490308828 -1.19406882464621 FALSE +"GCHFR" 1.85443389356539 3.403698874406 -0.224127691233205 FALSE +"ZNF106" 1.57011312783586 3.35824131646188 -0.687901744353156 FALSE +"CEP152" 0.384044007868824 3.339003760918 -0.880876444227342 FALSE +"EID1" 3.27396963601886 2.72379885596588 -0.639630116193344 FALSE +"MYO5A" 0.387572249547068 3.33901136594997 -0.880839634935318 FALSE +"SLTM" 2.3921926680529 3.22437706851683 -0.334017517583643 FALSE +"RPS27L" 2.49398843531957 3.20787309734392 -0.454931603475441 FALSE +"PPIB" 3.42580923411985 2.84692516143766 0.61812238189483 FALSE +"SPG21" 2.21463548061152 3.23828286509114 -0.698007171362482 FALSE +"PKM" 3.32942161679077 2.71947340695577 -0.658621209685313 FALSE +"CSK" 2.48614248640561 3.16790612038109 -0.747744189894056 FALSE +"SCAMP2" 2.34337481252477 3.22258586920363 -0.347140494189483 FALSE +"IMP3" 2.67094856594968 3.11208595458494 -0.523748799637702 FALSE +"ETFA" 2.382941320182 3.23501720275826 -0.256064030384178 FALSE +"CTSH" 2.83992491495104 3.19157178082816 -0.0192389575573612 FALSE +"IL16" 2.32376187865812 3.28175962625499 0.0863879377064578 FALSE +"ISG20" 3.05616653278971 3.33691307040955 1.29903659313704 FALSE +"ZNF710" 0.302510697367751 3.33310817634192 -1.69737291191455 FALSE +"IDH2" 2.72799970062989 3.13704308313857 -0.359334400608181 FALSE +"NGRN" 0.293903724983969 3.43376727742207 -0.321256392386435 FALSE +"SLCO3A1" 0.493085615604123 3.35090980631333 -0.823249717162938 FALSE +"VIMP" 2.19695313202799 3.39113008491449 0.505827578298676 TRUE +"POLR3K" 1.79200575384459 3.35693182884598 -0.495780115583827 FALSE +"NME4" 1.53699849852633 3.37119182644184 -0.604040131047366 FALSE +"C16orf13" 2.65421059498564 3.11214437158573 -0.523363955842171 FALSE +"STUB1" 2.6255955188528 3.12871673890011 -0.414187300898267 FALSE +"NDUFB10" 3.1714067608239 2.77984017918255 -1.17306230946285 FALSE +"SRRM2" 2.3237448190312 3.25887370066073 -0.0812826637521603 FALSE +"TCEB2" 3.35644682211781 2.64219840729023 -0.99790084049594 FALSE +"IL32" 3.18508097437666 3.81022388494304 4.13037162214629 FALSE +"CORO7" 1.49121264588086 3.4097277909081 -0.354498749631726 FALSE +"HMOX2" 2.43012488739796 3.20685758971942 -0.462371581093321 FALSE +"RSL1D1" 2.93058749992548 3.02165993383195 -0.663356270407244 FALSE +"TNFRSF17" 1.29279173449958 4.00988201127786 3.66203455705021 TRUE +"BFAR" 1.55489148281805 3.39206751374831 -0.468858673398396 FALSE +"NDUFAB1" 2.71570586891656 3.11380696089873 -0.512411028219006 FALSE +"LAT" 2.44442334440561 3.49183730868594 1.62549332460236 TRUE +"BRD7" 1.16657333980853 3.39613503906858 -1.20549903958126 FALSE +"TMEM208" 2.18834303466666 3.28070010433175 -0.363926207105802 FALSE +"DPEP2" 1.81715482167584 3.44782424269604 0.0321802095079433 FALSE +"PSMD7" 2.69331054932511 3.1592198759391 -0.213236501049554 FALSE +"GABARAPL2" 3.05887265215854 2.88321460607683 -0.71432196990088 FALSE +"C16orf74" 1.64545519715339 3.41688132963283 -0.308175685966357 FALSE +"IRF8" 1.85937966824741 3.63118625107702 1.09726211737773 TRUE +"GLOD4" 1.82939397728794 3.39627496597286 -0.267250422204789 FALSE +"SERPINF1" 1.41748893074723 3.36530116349807 -1.01031541771555 FALSE +"PSMB6" 3.18074359800394 2.73596222179072 -0.586226269097547 FALSE +"RNF167" 2.38891216415749 3.26093462172524 -0.0661836076523231 FALSE +"CLEC10A" 2.36594049161634 3.820537860374 4.03367292714074 TRUE +"TMEM256" 2.28584368835803 3.22156759273921 -0.82965775506666 FALSE +"EIF4A1" 3.87441317833487 1.90582900374495 -0.886131881399053 FALSE +"LSMD1" 2.61240381830552 3.13612548110962 -0.365379446448042 FALSE +"TRAPPC1" 3.45808144976913 2.49271102899477 -0.609985413133518 FALSE +"NCOR1" 2.52274379556912 3.18745292908864 -0.604537171279372 FALSE +"TNFRSF13B" 1.38031143188512 3.59876201313415 0.681963834240456 TRUE +"SNORD3B-2" 1.24675450771303 3.48593386192884 -0.13588952155318 FALSE +"IFT20" 2.13208648542484 3.2609666690596 -0.519348040347258 FALSE +"UNC119" 2.39855608213416 3.26340416172117 -0.048090860879279 FALSE +"NSRP1" 1.78792689808665 3.37028157877281 -0.418236368941893 FALSE +"CCL5" 2.77338811709309 3.87529260416926 2.57267224378342 TRUE +"CCL4" 1.0511249797538 3.64169233678438 1.25559294600193 TRUE +"GGNBP2" 2.27922701317041 3.22255558857385 -0.821876234934065 FALSE +"CWC25" 1.54356057470269 3.4153841296945 -0.317870871906012 FALSE +"MIEN1" 2.70482405569605 3.14408683121987 -0.312931081203359 FALSE +"CCR7" 1.90994749768619 3.51670403136384 0.475955364469793 FALSE +"NT5C3B" 0.771948123880509 3.343965121875 -1.14777630356906 FALSE +"DNAJC7" 2.25154446759174 3.20804863342093 -0.936133967230667 FALSE +"CCR10" 0.801337425291691 3.76664423842912 2.43941001832113 TRUE +"COA3" 2.19740659286139 3.27287174272182 -0.42558289768762 FALSE +"SLC25A39" 2.24100230144089 3.21426086975865 -0.887205985517354 FALSE +"ABI3" 2.89832295263727 3.20587699709897 0.0349905598481674 FALSE +"PHB" 2.77621828268808 3.06437536075699 -0.501426737566584 FALSE +"SUPT4H1" 2.93970298604634 2.94878583383306 -0.939614049352395 FALSE +"VMP1" 1.92883847386978 3.38186782705919 -0.123315949006977 FALSE +"PSMC5" 2.86999435160577 3.01449034114468 -0.690535415696962 FALSE +"CD79B" 2.84176860254764 3.6051815423987 1.54871061689013 TRUE +"DDX5" 3.77464779124756 2.16627034942249 -0.990658366225575 FALSE +"CD300A" 2.28388397984871 3.39974816577667 0.573704149617894 TRUE +"SUMO2" 3.42782335250183 2.43712610232806 -0.802705791777586 FALSE +"ACOX1" 0.492072973180953 3.46177239089959 -0.286661144595184 FALSE +"UBALD2" 1.53192280630342 3.40107933861356 -0.410502193754082 FALSE +"ST6GALNAC1" 0.274560898986033 3.48501115446387 0.379301679016756 FALSE +"SRSF2" 2.98666118989634 2.89705236613655 -0.652914725002025 FALSE +"SEPT9" 2.61413368580122 3.1943011067012 0.017874199869861 FALSE +"DCXR" 2.66768237951364 3.13918674981164 -0.345212196324342 FALSE +"CD7" 2.79237087781125 3.55157866193919 1.34550793306925 TRUE +"ANKRD12" 2.1434646211977 3.25284478100334 -0.583316564513242 FALSE +"PSMG2" 2.13606686709123 3.25441029869955 -0.570986444239716 FALSE +"TTC39C" 1.82848276874254 3.43921111202697 -0.0178502724154508 FALSE +"RNF138" 1.34054558502666 3.4430159746887 -0.446986864972786 FALSE +"ACAA2" 1.66861938161565 3.32980632480297 -0.653342109222304 FALSE +"NOP56" 2.02440052302235 3.27665807807809 -0.590914282760244 FALSE +"IDH3B" 2.36858948015518 3.18773341041145 -0.602482263257409 FALSE +"C20orf27" 2.81700460469908 3.07708427075547 -0.453248643441959 FALSE +"PCNA" 1.92681044999994 3.48948646538109 0.354988546987522 FALSE +"DTD1" 1.89180152659098 3.30012283589523 -0.486626593040638 FALSE +"NAA20" 2.02489479179352 3.2624009076075 -0.654279410237939 FALSE +"CST3" 3.87266101830714 3.70706007871455 1.84704591777024 FALSE +"CST7" 2.36352013310648 3.5912068490142 2.35351066106011 TRUE +"APMAP" 1.82385488816104 3.39210066558381 -0.291497385147886 FALSE +"EIF2S2" 2.81877706032528 3.05188746162684 -0.548767003551868 FALSE +"DYNLRB1" 2.92893109715304 3.01257319717096 -0.69780309977272 FALSE +"RBM39" 2.72760321845281 3.07463165385955 -0.770492984634845 FALSE +"TOP1" 2.03182368754573 3.2688526549337 -0.625605011441792 FALSE +"YWHAB" 3.37074808174454 2.59216218508851 -1.21758729884904 FALSE +"STK4" 1.91145116685317 3.32130289305684 -0.392493116499919 FALSE +"CD40" 1.34237652462335 3.40954750323109 -0.689588568559011 FALSE +"ZFAS1" 3.26221173651 2.84065226714444 -0.126579551648249 FALSE +"BCAS4" 1.31078818485541 3.51301727545523 0.0604290425842048 FALSE +"PSMA7" 3.70184262015965 2.15297593885639 -1.01466912254841 FALSE +"ADRM1" 2.74433349911799 3.03145981157427 -0.626206000845517 FALSE +"PPDPF" 3.70917800551077 2.29780596243752 -0.753094652048315 FALSE +"RGS19" 3.15313752271327 2.93950689261703 -0.464516061244376 FALSE +"GZMM" 2.47874240483735 3.47488674930115 1.50130737130099 TRUE +"PRSS57" 0.709220822554557 3.94826714249575 2.50911470602256 TRUE +"CFD" 2.84723814010623 3.71046642164492 1.94783413124585 TRUE +"CNN2" 3.00323234114854 3.08482057741565 0.180336356420705 FALSE +"HMHA1" 2.39283661108827 3.22489277945028 -0.330239232015325 FALSE +"GPX4" 3.44506841519488 2.59625049630521 -0.2510002252189 FALSE +"C19orf24" 2.46814911759545 3.18846497134477 -0.597122582208558 FALSE +"ABHD17A" 1.57635083390745 3.41584169039307 -0.314907916900643 FALSE +"TIMM13" 2.75910432364373 3.08053149182117 -0.440180603697268 FALSE +"GNG7" 1.76203899779364 3.49720326738288 0.319004651967895 FALSE +"SLC39A3" 1.6026774054119 3.30949755044099 -1.00354420657569 FALSE +"AES" 3.19645833825022 3.16698599022316 1.30620447379883 FALSE +"S1PR4" 2.92801073856382 3.15140301087611 -0.171514391080131 FALSE +"C19orf77" 0.511817382652722 3.73309107285334 1.0265547145141 TRUE +"MATK" 1.58652817616651 3.55807415089641 0.606124816228831 TRUE +"TMIGD2" 1.40700405541319 3.49012338119997 -0.105521104110771 FALSE +"SH3GL1" 1.02312430586355 3.39589871127882 -1.20786762905002 FALSE +"NDUFA11" 3.31978216914435 2.68460425184431 -0.811715924976139 FALSE +"CLPP" 2.31718877187444 3.24894571250279 -0.154018710142789 FALSE +"ALKBH7" 2.8621718237541 3.02838692923039 -0.637854963251816 FALSE +"STXBP2" 2.97132016287779 3.25948423046367 0.955433891813368 TRUE +"PRAM1" 1.73034077734327 3.43531150841942 -0.0405016236246931 FALSE +"EIF3G" 3.40489212234929 2.59543960636747 -0.253811689139252 FALSE +"ICAM4" 1.7772643639441 3.56261956954824 0.698983691962379 TRUE +"ICAM3" 3.29400678585182 2.72425881385486 -0.637610648792036 FALSE +"S1PR5" 0.887915380404925 3.51604071185922 0.148849258950584 FALSE +"ILF3-AS1" 2.05267070540039 3.3759332336717 -0.14969188855979 FALSE +"ILF3" 1.73355287731612 3.28416581667598 -0.918450895394821 FALSE +"ACP5" 1.79560618918677 3.40998194366918 -0.18763167192587 FALSE +"C19orf43" 3.66343251324588 2.19887261277014 -0.931776101613565 FALSE +"JUNB" 4.05380477204222 2.22221272665815 -0.406053017836545 FALSE +"PRDX2" 2.95057551234195 3.08153363722124 -0.436381579593953 FALSE +"CALR" 2.65133166821602 3.19118238315577 -0.00267155547852289 FALSE +"LYL1" 2.33536803427462 3.31724532018289 0.346369017325006 FALSE +"C19orf53" 3.16436473031736 2.79951637906891 -1.08574606609069 FALSE +"DDX39A" 2.30013644905545 3.27443938366181 -0.413236054606464 FALSE +"DNAJB1" 2.00278626978874 3.38532640069678 -0.107944528717884 FALSE +"NDUFB7" 2.93963730681195 2.92874368394805 -1.01559165748205 FALSE +"TPM4" 2.29263724839099 3.23979404425685 -0.686105024926598 FALSE +"BST2" 3.17506747117006 2.83325099983036 -0.936043360614697 FALSE +"IFI30" 2.85076823438554 3.44322765211275 0.934761051508159 TRUE +"LSM4" 2.9543320592816 2.97652355768902 -0.83446335815266 FALSE +"LRRC25" 2.54049014676706 3.38840801344387 1.2966258940397 TRUE +"COPE" 3.54598383391014 2.39720120837223 -0.941130741523855 FALSE +"UQCRFS1" 3.09869205893859 2.82343803607911 -0.979589936480713 FALSE +"U2AF1L4" 1.76255121620343 3.36702337520004 -0.437162065208865 FALSE +"HCST" 3.23021908139091 3.05521156186913 0.81545342947447 FALSE +"TYROBP" 3.63507593900109 3.45796190467109 1.34223868273705 FALSE +"POLR2I" 2.1695581156555 3.26862109163297 -0.459061305050001 FALSE +"SPINT2" 2.38844560562016 3.25656712708157 -0.0981814593780597 FALSE +"PPP1R14A" 1.69312644261049 3.63819086307192 1.13794931083336 TRUE +"SERTAD3" 1.41154117961891 3.33287725651987 -1.245345424383 FALSE +"CD79A" 2.55117267541198 4.08044186650481 5.85565718702568 TRUE +"RABAC1" 2.94951585872543 3.0419475800826 -0.586448012283793 FALSE +"PAFAH1B3" 1.97867292918424 3.31297635916622 -0.429499890215301 FALSE +"ZNF428" 2.23109792169309 3.27731524022097 -0.39058561932245 FALSE +"CALM3" 3.0194689152838 3.08156711100402 0.165898585578688 FALSE +"AP2S1" 3.44353021999209 2.64439744868238 -0.084068298721592 FALSE +"FTL" 4.49103232958047 1.5469629152355 -0.707106781186548 FALSE +"SNRNP70" 2.07997867397491 3.25168248470156 -0.701916789281399 FALSE +"CD37" 3.82224431575387 2.17497573497486 -0.974935751811395 FALSE +"FLT3LG" 1.970299806232 3.45944945648318 0.221490886859855 FALSE +"NOSIP" 3.23284966047349 3.24435342976625 1.64588996637151 FALSE +"FUZ" 0.659916465170035 3.38785814142607 -0.882160794927724 FALSE +"SPIB" 1.67547557426147 3.56558468612117 0.716206954536968 TRUE +"JOSD2" 2.05004428645473 3.29956793377812 -0.489092821768203 FALSE +"CD33" 2.21506666007505 3.32265189002931 -0.0335111855474503 FALSE +"NKG7" 2.86310987439543 3.91107961376435 2.70833690085605 TRUE +"FPR1" 1.36148532323964 3.46244095456051 -0.306181713025613 FALSE +"ZNF600" 0.317701654354738 3.52661104566874 0.948016250111536 TRUE +"ZNF524" 1.86511753362464 3.32878690279856 -0.659263553598737 FALSE +"CTD-3138B18.5" 0.344095934259196 3.38497144796139 -0.658387173686617 FALSE +"ATP6V1E1" 2.40396621188404 3.21436560753577 -0.407365116187893 FALSE +"BID" 2.97622732038644 3.10862320211162 0.285964261344062 FALSE +"MRPL40" 2.20172857816021 3.37711898332359 0.395475221247938 FALSE +"UFD1L" 2.37918109310491 3.18918750031914 -0.591829072570739 FALSE +"COMT" 2.57810709279703 3.10849926696943 -0.547377442954696 FALSE +"DGCR6L" 2.20262456816448 3.26603503595417 -0.479429249552333 FALSE +"SDF2L1" 2.53099539846667 3.26378978729801 0.475656818376051 FALSE +"IGLL5" 2.02317776150909 4.32095716633225 4.05040953310977 TRUE +"IGLL1" 0.396912866528015 4.03353506809634 2.48074067946924 TRUE +"CHCHD10" 2.84803778259013 3.09285195248981 -0.393475078689755 FALSE +"SMARCB1" 2.45535848295947 3.35156104743066 0.59777849619555 TRUE +"MIF" 2.9974728247457 3.00190085723968 -0.187632992795672 FALSE +"ASCC2" 1.46183606611481 3.37169593795579 -0.600775734130829 FALSE +"PIK3IP1" 1.97267972224139 3.41938476024801 0.0434257799346298 FALSE +"HMOX1" 2.26625251593555 3.54277002201964 1.70015368991908 TRUE +"EIF3D" 3.1456873345638 2.80838608730384 -1.04638533549461 FALSE +"IL2RB" 1.07703697479522 3.52569334603516 0.0929959100993111 FALSE +"LGALS2" 2.34537707362106 3.68218825129432 3.02007345219663 TRUE +"EIF3L" 3.55411882736079 2.47934890932978 -0.656313670014485 FALSE +"ADSL" 2.11303477285882 3.25989089946784 -0.52782087236007 FALSE +"RBX1" 2.86726791020208 3.05150916596198 -0.550201081230497 FALSE +"TTC38" 0.993488234346266 3.51766916363223 0.163733597494548 FALSE +"TYMP" 3.14942249530857 3.24050437387103 0.871207781742147 FALSE +"CCT8" 2.72267647287639 3.02332133497672 -1.10851886068876 FALSE +"SOD1" 3.37875548385482 2.66646555338911 -0.891354759552662 FALSE +"PAXBP1" 0.425662638175597 3.47008375124559 -0.246433136193615 FALSE +"ATP5O" 3.4277180993434 2.55583373605459 -0.391130541226468 FALSE +"MRPS6" 2.32597825960564 3.27872423956319 0.0641495925638163 FALSE +"TTC3" 1.59182076431075 3.38937472893264 -0.486295923304141 FALSE +"U2AF1" 3.15925424977627 2.79930398551865 -1.08668859600157 FALSE +"CSTB" 3.4772808013323 2.56546395439329 -0.357741285614294 FALSE +"SUMO3" 2.51254534173561 3.17021610371403 -0.730820413173816 FALSE +"ITGB2" 3.51163693858791 2.60117887552272 -0.233912874999023 FALSE +"S100B" 1.30307756616295 3.70544932468219 1.45530430679135 TRUE +"PRMT2" 2.53377804135866 3.233181935983 0.274016174151852 FALSE +"MT-ND3" 2.1881501449375 3.30109707049301 -0.203278360969233 FALSE diff --git a/rapids_singlecell/tests/_scripts/seurat_hvg_v3.csv.gz b/rapids_singlecell/tests/_scripts/seurat_hvg_v3.csv.gz new file mode 100644 index 00000000..a2bb6739 Binary files /dev/null and b/rapids_singlecell/tests/_scripts/seurat_hvg_v3.csv.gz differ diff --git a/rapids_singlecell/tests/_scripts/seurat_hvg_v3_batch.csv b/rapids_singlecell/tests/_scripts/seurat_hvg_v3_batch.csv new file mode 100644 index 00000000..76f5486a --- /dev/null +++ b/rapids_singlecell/tests/_scripts/seurat_hvg_v3_batch.csv @@ -0,0 +1,4001 @@ +"x" +"1" "LYZ" +"2" "S100A9" +"3" "GNLY" +"4" "FTL" +"5" "PPBP" +"6" "IGLL5" +"7" "FTH1" +"8" "PF4" +"9" "HLA-DRA" +"10" "S100A8" +"11" "CD74" +"12" "NKG7" +"13" "CST3" +"14" "FCER1A" +"15" "GNG11" +"16" "GZMB" +"17" "CCL4" +"18" "HLA-DPB1" +"19" "SDPR" +"20" "HLA-DPA1" +"21" "HLA-DRB1" +"22" "AL928768.3" +"23" "CD79A" +"24" "LST1" +"25" "CLU" +"26" "CCL3" +"27" "TYMS" +"28" "CCL5" +"29" "STMN1" +"30" "FCGR3A" +"31" "IFI27" +"32" "RRM2" +"33" "PRDX1" +"34" "PRF1" +"35" "HLA-DQA1" +"36" "FGFBP2" +"37" "TK1" +"38" "FCER1G" +"39" "TYROBP" +"40" "IL8" +"41" "C1QA" +"42" "ACTB" +"43" "AIF1" +"44" "FCN1" +"45" "GZMH" +"46" "IFITM3" +"47" "SPARC" +"48" "ITGA2B" +"49" "GP9" +"50" "KIAA0101" +"51" "CST7" +"52" "TUBB1" +"53" "CLEC10A" +"54" "APOBEC3B" +"55" "SAT1" +"56" "IGJ" +"57" "HBA1" +"58" "COTL1" +"59" "TREML1" +"60" "PTGDS" +"61" "SERPINF1" +"62" "MZB1" +"63" "HLA-DQB1" +"64" "TUBA1B" +"65" "C1QB" +"66" "CA2" +"67" "GIMAP5" +"68" "S100B" +"69" "NPC2" +"70" "HAGH" +"71" "LGALS2" +"72" "MS4A6A" +"73" "PRKCB" +"74" "CMTM5" +"75" "CLDN5" +"76" "BIRC5" +"77" "ZWINT" +"78" "TNFRSF17" +"79" "RALY" +"80" "GZMK" +"81" "SIVA1" +"82" "FUS" +"83" "LGALS1" +"84" "VMO1" +"85" "C10orf32" +"86" "G0S2" +"87" "MYL9" +"88" "TALDO1" +"89" "TCL1A" +"90" "HMGB2" +"91" "RP5-887A10.1" +"92" "NRGN" +"93" "ODC1" +"94" "CD9" +"95" "HLA-DRB5" +"96" "CXCL2" +"97" "GAPDH" +"98" "COQ7" +"99" "ENHO" +"100" "CD1C" +"101" "CD79B" +"102" "S100A4" +"103" "HIST1H2AC" +"104" "MS4A7" +"105" "CTSS" +"106" "RGS1" +"107" "PPP1R14A" +"108" "ABI3" +"109" "WARS" +"110" "NCF2" +"111" "C1orf162" +"112" "SF3B5" +"113" "PSMA7" +"114" "CSNK2B" +"115" "LTB" +"116" "S100A12" +"117" "LY6G6F" +"118" "CFD" +"119" "STAMBP" +"120" "PHACTR4" +"121" "IRF8" +"122" "LILRA4" +"123" "PTTG1" +"124" "TNFSF13B" +"125" "LYAR" +"126" "SH3KBP1" +"127" "FOLR3" +"128" "MANBA" +"129" "CLEC2B" +"130" "SDHB" +"131" "CEBPB" +"132" "GZMA" +"133" "H2AFY" +"134" "ISG15" +"135" "PPIB" +"136" "IL1B" +"137" "TIMP1" +"138" "TIGIT" +"139" "IFIT2" +"140" "APOBEC3A" +"141" "UBLCP1" +"142" "RABL6" +"143" "GPX1" +"144" "TMSB4X" +"145" "ZNF263" +"146" "KLRG1" +"147" "NDUFA12" +"148" "CWC15" +"149" "IDH2" +"150" "FEM1B" +"151" "GUSB" +"152" "BIK" +"153" "ASB8" +"154" "GSTP1" +"155" "ARRB2" +"156" "TRAPPC3" +"157" "C14orf1" +"158" "CKB" +"159" "PTCRA" +"160" "S100A11" +"161" "AQP3" +"162" "BLOC1S1" +"163" "RXRA" +"164" "CLIC3" +"165" "HBP1" +"166" "RGS18" +"167" "PITPNA-AS1" +"168" "STX11" +"169" "GPR183" +"170" "MAP3K7CL" +"171" "ANXA5" +"172" "CLYBL" +"173" "DCAF5" +"174" "TSC22D1" +"175" "OARD1" +"176" "CCNA2" +"177" "CISD1" +"178" "GINS2" +"179" "CCT7" +"180" "ACD" +"181" "BOLA1" +"182" "RPUSD3" +"183" "ITM2C" +"184" "SH3BP1" +"185" "UBXN1" +"186" "UBA5" +"187" "CARHSP1" +"188" "SRGN" +"189" "TNFRSF13B" +"190" "RPL7L1" +"191" "CAPZA2" +"192" "CHMP4A" +"193" "PSMG2" +"194" "FN3KRP" +"195" "C17orf62" +"196" "PRSS57" +"197" "ICAM2" +"198" "MKI67" +"199" "FYB" +"200" "PTX3" +"201" "PLEKHA3" +"202" "MMD" +"203" "QRICH1" +"204" "CHTF8" +"205" "KIFC1" +"206" "CCND3" +"207" "ATP5H" +"208" "EWSR1" +"209" "THOC7" +"210" "TYMP" +"211" "PSMD14" +"212" "SP140" +"213" "GADD45B" +"214" "HES1" +"215" "STK38" +"216" "IFNGR2" +"217" "IGFBP7" +"218" "RBM3" +"219" "PSAP" +"220" "IDH3G" +"221" "HNRNPH3" +"222" "AHNAK" +"223" "FEN1" +"224" "ISOC2" +"225" "LINC00936" +"226" "RIC3" +"227" "ALKBH7" +"228" "YWHAE" +"229" "SUMO3" +"230" "RBCK1" +"231" "EXOSC8" +"232" "SURF1" +"233" "INTS12" +"234" "S1PR4" +"235" "ABT1" +"236" "SLA" +"237" "GSTO1" +"238" "SMIM7" +"239" "TMEM40" +"240" "PACS1" +"241" "CLEC4C" +"242" "DPH5" +"243" "CD160" +"244" "PPP6C" +"245" "ASF1B" +"246" "GSTA4" +"247" "COMMD10" +"248" "SMIM5" +"249" "HSP90AA1" +"250" "SSBP1" +"251" "TMX2" +"252" "ID2" +"253" "SPG7" +"254" "TNFRSF9" +"255" "NUDT1" +"256" "ATP5C1" +"257" "IL23A" +"258" "NAPSA" +"259" "PCNA" +"260" "SPON2" +"261" "FAM96A" +"262" "RHOG" +"263" "LYPLA1" +"264" "ACRBP" +"265" "SNX3" +"266" "ACTG1" +"267" "GMNN" +"268" "MLLT11" +"269" "RFC1" +"270" "AKR1C3" +"271" "PPA1" +"272" "ANXA1" +"273" "USP3" +"274" "HNRNPM" +"275" "SPTSSB" +"276" "CENPM" +"277" "GGNBP2" +"278" "VDAC3" +"279" "HIST1H4C" +"280" "NKAP" +"281" "HOPX" +"282" "MS4A1" +"283" "LYPD2" +"284" "CARS" +"285" "KRT1" +"286" "BTN3A1" +"287" "CTSW" +"288" "KCNG1" +"289" "RRAGC" +"290" "HDAC1" +"291" "FAM32A" +"292" "RP11-349A22.5" +"293" "SERPINA1" +"294" "PTPN7" +"295" "SAT2" +"296" "PGM1" +"297" "RAD21" +"298" "IL6" +"299" "GMPR" +"300" "ZCCHC9" +"301" "CTD-2006K23.1" +"302" "CLEC1B" +"303" "RBM39" +"304" "ARL6IP5" +"305" "DNASE1L3" +"306" "FH" +"307" "KCNQ1OT1" +"308" "MT-CO2" +"309" "PRDX3" +"310" "GTPBP2" +"311" "IFI35" +"312" "TRIP12" +"313" "HN1" +"314" "IFITM2" +"315" "UQCRC1" +"316" "XCL2" +"317" "CCL4L1" +"318" "RFNG" +"319" "RBM4" +"320" "ID1" +"321" "STOML2" +"322" "ACAP1" +"323" "TMEM242" +"324" "HP1BP3" +"325" "PSMB8" +"326" "RAD51" +"327" "PRPF31" +"328" "YWHAB" +"329" "FBXO41" +"330" "METTL23" +"331" "RP11-1070N10.3" +"332" "VAPA" +"333" "FCGR3B" +"334" "UXS1" +"335" "SMARCA4" +"336" "ANAPC13" +"337" "TMEM208" +"338" "RP11-879F14.2" +"339" "RP11-367G6.3" +"340" "TTC3" +"341" "COX5A" +"342" "FKBP2" +"343" "IFI30" +"344" "DNAJC2" +"345" "FAM107B" +"346" "POMT1" +"347" "AP001189.4" +"348" "JAKMIP1" +"349" "RETN" +"350" "KLRC1" +"351" "PAICS" +"352" "MPP1" +"353" "SHOC2" +"354" "RAB32" +"355" "SEPT5" +"356" "IFIT1" +"357" "EPN1" +"358" "LGALS3BP" +"359" "PYCARD" +"360" "HIST1H2BJ" +"361" "SRSF7" +"362" "RIOK2" +"363" "EGFL7" +"364" "CCDC115" +"365" "F13A1" +"366" "CD2" +"367" "SLC40A1" +"368" "MGST2" +"369" "RUFY1" +"370" "CACNA2D3" +"371" "APOBEC3H" +"372" "S100A6" +"373" "IRF7" +"374" "CFP" +"375" "ATP6V0E1" +"376" "JAK1" +"377" "KIAA0125" +"378" "MRPL20" +"379" "RP11-706O15.1" +"380" "IL32" +"381" "LMNB1" +"382" "CRIP2" +"383" "ZNF559" +"384" "PMEPA1" +"385" "POLR2G" +"386" "NCR3" +"387" "PSMB6" +"388" "RDH14" +"389" "H2AFZ" +"390" "NPRL2" +"391" "CDC42EP3" +"392" "SNX17" +"393" "PDIA3" +"394" "XCL1" +"395" "TNNT1" +"396" "HGD" +"397" "C19orf33" +"398" "GP1BA" +"399" "DSCC1" +"400" "PPIL2" +"401" "MAL" +"402" "SRSF6" +"403" "DEPTOR" +"404" "SSX2IP" +"405" "RASD1" +"406" "MANF" +"407" "NUSAP1" +"408" "SPI1" +"409" "TSPAN33" +"410" "ATG16L1" +"411" "FAM110A" +"412" "SLC16A3" +"413" "CD247" +"414" "SLC48A1" +"415" "NEMF" +"416" "DENND5A" +"417" "TMEM50A" +"418" "PSMC4" +"419" "HLA-DQA2" +"420" "RGS16" +"421" "FPR1" +"422" "FAM212A" +"423" "FABP5" +"424" "GFI1B" +"425" "PINK1" +"426" "UBE2C" +"427" "SH3BGRL" +"428" "UBE2D2" +"429" "MAEA" +"430" "EREG" +"431" "ITGB3" +"432" "TNFAIP8" +"433" "COPS8" +"434" "HMOX1" +"435" "CCND2" +"436" "ATP6V0B" +"437" "TNFSF10" +"438" "OAZ1" +"439" "CHI3L2" +"440" "HNRNPF" +"441" "NIT1" +"442" "GPKOW" +"443" "GPR42" +"444" "PRELID1" +"445" "RTN4" +"446" "TMEM14B" +"447" "ACY3" +"448" "CDKN1C" +"449" "ITSN2" +"450" "ZBTB32" +"451" "SERPINE2" +"452" "RP11-290F20.3" +"453" "GBP1" +"454" "TNFRSF1A" +"455" "IFFO1" +"456" "LINC00926" +"457" "EIF1AY" +"458" "MAFB" +"459" "FCGR2B" +"460" "KCTD10" +"461" "APOBEC3G" +"462" "SLBP" +"463" "LGALS3" +"464" "AC147651.3" +"465" "FAM221A" +"466" "UBE2Q1" +"467" "PDZD4" +"468" "DAB2" +"469" "KIR2DL3" +"470" "PLD4" +"471" "CD14" +"472" "NAA20" +"473" "APOOL" +"474" "ERP44" +"475" "UBAC2" +"476" "TMEM140" +"477" "HELQ" +"478" "TMEM176B" +"479" "CYTL1" +"480" "RP6-91H8.3" +"481" "MYLK" +"482" "RP11-598F7.3" +"483" "LILRA3" +"484" "SLC39A3" +"485" "AP4S1" +"486" "IL4I1" +"487" "RP5-1028K7.2" +"488" "UBE2J1" +"489" "CPQ" +"490" "TRPM4" +"491" "MYCL" +"492" "NUDC" +"493" "SEC61B" +"494" "ERICH1" +"495" "NDUFB5" +"496" "ZSCAN5A" +"497" "SPATA7" +"498" "HCAR3" +"499" "C6orf25" +"500" "DHRS4" +"501" "TPM1" +"502" "BCDIN3D" +"503" "PPM1N" +"504" "PGRMC1" +"505" "IFI6" +"506" "FCRLA" +"507" "VIM" +"508" "RP11-164H13.1" +"509" "NT5C3A" +"510" "GIMAP4" +"511" "TSPAN4" +"512" "CPVL" +"513" "TMSB10" +"514" "CRELD2" +"515" "METTL8" +"516" "TMEM141" +"517" "ZFAT" +"518" "SERPING1" +"519" "LTC4S" +"520" "NDUFB9" +"521" "S100A10" +"522" "DHRS9" +"523" "HAPLN3" +"524" "RP11-428G5.5" +"525" "RP1-313I6.12" +"526" "TNFSF4" +"527" "CENPN" +"528" "NCKAP1L" +"529" "NFE2" +"530" "RHOC" +"531" "TTC38" +"532" "CTA-217C2.1" +"533" "PRR5" +"534" "TBCC" +"535" "NDFIP1" +"536" "CPNE2" +"537" "PNMA1" +"538" "ESAM" +"539" "MALAT1" +"540" "CYFIP1" +"541" "TSPAN15" +"542" "RAMP1" +"543" "SLC25A5" +"544" "ICOSLG" +"545" "SCGB1C1" +"546" "ZNF467" +"547" "VAMP8" +"548" "MEOX1" +"549" "SETD1B" +"550" "MYBL2" +"551" "SMARCD3" +"552" "PHF12" +"553" "MT3" +"554" "THEM6" +"555" "CTD-2267D19.2" +"556" "NEIL1" +"557" "TCP1" +"558" "IL18RAP" +"559" "CTTN" +"560" "TAOK2" +"561" "ARL2" +"562" "TUBA8" +"563" "SRM" +"564" "COPS6" +"565" "SEPT11" +"566" "VPREB3" +"567" "CD8B" +"568" "CCL3L3" +"569" "PLEKHG5" +"570" "TROAP" +"571" "MX2" +"572" "GID8" +"573" "C2orf88" +"574" "OCIAD1" +"575" "CENPW" +"576" "PITPNM1" +"577" "ORAI1" +"578" "ATP6V1A" +"579" "PPP1R14B" +"580" "GABARAPL2" +"581" "SOX4" +"582" "CTA-250D10.23" +"583" "SH3BGRL3" +"584" "KLRB1" +"585" "MS4A4A" +"586" "CLIC2" +"587" "ARSD" +"588" "CCR10" +"589" "UBB" +"590" "CTNNAL1" +"591" "ZNF528" +"592" "H2AFX" +"593" "ENKUR" +"594" "PSMA2-1" +"595" "UPK3A" +"596" "DMTN" +"597" "PILRA" +"598" "CXCL3" +"599" "MCFD2" +"600" "H1F0" +"601" "P2RY13" +"602" "SPRY1" +"603" "IER3" +"604" "ACSM3" +"605" "SARM1" +"606" "PPAPDC2" +"607" "RPS2" +"608" "ZWILCH" +"609" "B2M" +"610" "TAF5" +"611" "CHCHD1" +"612" "UBE2D3" +"613" "RP11-383C5.4" +"614" "MPP6" +"615" "RP11-70P17.1" +"616" "IFNG" +"617" "ATP5SL" +"618" "KIF16B" +"619" "MRPL19" +"620" "GPATCH4" +"621" "DUSP23" +"622" "IL13RA1" +"623" "SSPN" +"624" "CITED4" +"625" "FCRL2" +"626" "KLF6" +"627" "POLR3GL" +"628" "SLC35A2" +"629" "EZH2" +"630" "C19orf59" +"631" "NLRC4" +"632" "MCM7" +"633" "UGT2B17" +"634" "PPP2R1B" +"635" "RP11-291B21.2" +"636" "ANTXR2" +"637" "CD37" +"638" "RP11-218M22.1" +"639" "ORAI3" +"640" "PFN1" +"641" "SYCE1" +"642" "PRPF19" +"643" "ICAM4" +"644" "LRRC25" +"645" "POU2AF1" +"646" "ZNF394" +"647" "UBALD2" +"648" "RAB13" +"649" "RAB11B-AS1" +"650" "C16orf93" +"651" "ZNF185" +"652" "TNFRSF4" +"653" "CTBP2" +"654" "TMEM176A" +"655" "CD68" +"656" "RP11-407N17.5" +"657" "TERF2IP" +"658" "KCNE1" +"659" "RLN2" +"660" "ZNF503" +"661" "ERV3-1" +"662" "AC079305.10" +"663" "ARRDC4" +"664" "DUSP4" +"665" "CES4A" +"666" "GANAB" +"667" "SBNO2" +"668" "FAM13A" +"669" "TPPP3" +"670" "HSPA5" +"671" "COCH" +"672" "RP13-270P17.3" +"673" "TNNI2" +"674" "HOXB-AS1" +"675" "RFC3" +"676" "LRRK1" +"677" "SPOCD1" +"678" "BATF3" +"679" "ACOT7" +"680" "PGLYRP2" +"681" "ALDH1A1" +"682" "LIN52" +"683" "TRMT61A" +"684" "EIF3H" +"685" "FAM49B" +"686" "SAV1" +"687" "NLN" +"688" "KIR3DL2" +"689" "HES4" +"690" "SNRNP25" +"691" "SLC27A1" +"692" "VPS37C" +"693" "ADIPOR2" +"694" "COL6A2" +"695" "XXbac-B135H6.15" +"696" "MOB2" +"697" "SLC25A14" +"698" "EXOC3L1" +"699" "LINC00528" +"700" "RCE1" +"701" "FCER2" +"702" "GLRX3" +"703" "EPB41L3" +"704" "ZNF799" +"705" "FCRL5" +"706" "MCM4" +"707" "RMI2" +"708" "HBEGF" +"709" "CELA1" +"710" "TMEM97" +"711" "DRAP1" +"712" "OAF" +"713" "RNASEL" +"714" "SLC4A10" +"715" "F2R" +"716" "VIL1" +"717" "CYBA" +"718" "NEK8" +"719" "SENCR" +"720" "SREBF1" +"721" "LAG3" +"722" "IDO1" +"723" "ORC2" +"724" "WARS2" +"725" "FXYD2" +"726" "LIMS2" +"727" "MRPS18B" +"728" "LGALSL" +"729" "AC022182.3" +"730" "OSBPL7" +"731" "PPARGC1B" +"732" "HNRNPA2B1" +"733" "MT1E" +"734" "STXBP2" +"735" "FCRL6" +"736" "BIN2" +"737" "PID1" +"738" "WDYHV1" +"739" "UQCRH" +"740" "TPRG1L" +"741" "PDLIM1" +"742" "LILRB4" +"743" "YBX1" +"744" "SPIB" +"745" "NLRP12" +"746" "C2orf76" +"747" "STK3" +"748" "CHD7" +"749" "BASP1" +"750" "AC011899.9" +"751" "ANXA2" +"752" "SYCE1L" +"753" "MT-CO1" +"754" "STAG3" +"755" "SPATA6" +"756" "HOMER1" +"757" "MAD2L1" +"758" "DHFR" +"759" "PTK2" +"760" "SCT" +"761" "TUBB2A" +"762" "SH2D1B" +"763" "SIGLEC9" +"764" "FXR2" +"765" "LRFN1" +"766" "HRASLS2" +"767" "MFN2" +"768" "CTB-61M7.2" +"769" "GAS2L1" +"770" "PRKCE" +"771" "MT2A" +"772" "MGST1" +"773" "ZNF703" +"774" "GPBAR1" +"775" "RNASE4" +"776" "AL928742.12" +"777" "AC009501.4" +"778" "PERP" +"779" "EFNB1" +"780" "SCFD2" +"781" "ZNF844" +"782" "RP11-432J24.2" +"783" "ABHD5" +"784" "MCOLN3" +"785" "WDR4" +"786" "CLIC1" +"787" "RP13-188A5.1" +"788" "ARHGDIB" +"789" "CXCR3" +"790" "RP11-554J4.1" +"791" "LINC00662" +"792" "TOPBP1" +"793" "NAPA-AS1" +"794" "CTC-260E6.6" +"795" "RPS5" +"796" "BYSL" +"797" "HMGB1" +"798" "CCT5" +"799" "CD38" +"800" "TNFRSF18" +"801" "AC079767.4" +"802" "CD70" +"803" "ASPHD2" +"804" "FAM98A" +"805" "C1orf51" +"806" "LYL1" +"807" "LCN2" +"808" "NCOA4" +"809" "PTGIR" +"810" "ACSL1" +"811" "TPO" +"812" "PFKFB3" +"813" "EGR1" +"814" "FLJ00104" +"815" "FOXM1" +"816" "RP13-580F15.2" +"817" "ZDHHC1" +"818" "C1orf186" +"819" "KHK" +"820" "CDKN3" +"821" "LRRC26" +"822" "FANCG" +"823" "PGM2L1" +"824" "FXYD1" +"825" "PRKCI" +"826" "RP11-110A12.2" +"827" "JUP" +"828" "IFI27L1" +"829" "PON2" +"830" "EMP3" +"831" "TRIP13" +"832" "SPATA5L1" +"833" "FFAR2" +"834" "MCM6" +"835" "RP11-293M10.5" +"836" "FXYD6" +"837" "MARC1" +"838" "TRIB1" +"839" "CEP170" +"840" "RP5-1074L1.4" +"841" "TCF7L2" +"842" "CXCL16" +"843" "CPLX1" +"844" "TNFAIP8L1" +"845" "TMCC1-AS1" +"846" "BGLAP" +"847" "LIPT2" +"848" "ZNF211" +"849" "PDCD1" +"850" "CCBL1" +"851" "LOH12CR2" +"852" "C10orf11" +"853" "RPS6" +"854" "FCF1" +"855" "WNT10A" +"856" "PVRL3" +"857" "RP11-22N19.2" +"858" "NACA" +"859" "FAH" +"860" "RP13-131K19.7" +"861" "AP001258.4" +"862" "YEATS2" +"863" "STAP1" +"864" "CLEC4G" +"865" "KLRF1" +"866" "YAE1D1" +"867" "DUS2" +"868" "C12orf66" +"869" "RP11-403A21.2" +"870" "AC195454.1" +"871" "LY6E" +"872" "TMEM53" +"873" "FAM214A" +"874" "ARID1B" +"875" "NUDT7" +"876" "ALDH7A1" +"877" "TUBG1" +"878" "GPR63" +"879" "TNFRSF21" +"880" "PORCN" +"881" "KLRD1" +"882" "ADM" +"883" "S100Z" +"884" "PIGZ" +"885" "BAMBI" +"886" "KLHDC10" +"887" "SLC35B4" +"888" "MORN3" +"889" "LINC00309" +"890" "SCD" +"891" "SOD2" +"892" "PAK3" +"893" "GEMIN4" +"894" "POLR1B" +"895" "WHSC1" +"896" "TESK1" +"897" "FBXL17" +"898" "FRMPD3" +"899" "RP11-378J18.3" +"900" "CNFN" +"901" "C2CD4D" +"902" "TKT" +"903" "ZNF684" +"904" "ZNF526" +"905" "CEBPD" +"906" "RP11-611L7.1" +"907" "PPP2R2B" +"908" "EMR2" +"909" "ZBED6" +"910" "Y-RNA" +"911" "FAM76A" +"912" "ARC" +"913" "ZNF333" +"914" "CHAC2" +"915" "LINC00996" +"916" "FLNB" +"917" "WIPI1" +"918" "AGL" +"919" "TMEM86A" +"920" "RP11-110I1.14" +"921" "C11orf68" +"922" "YPEL4" +"923" "KRTAP5-AS1" +"924" "OVCH1-AS1" +"925" "SAMD12" +"926" "FBXO43" +"927" "MDK" +"928" "PLEK2" +"929" "FAM41C" +"930" "ANKRD65" +"931" "RP11-181G12.2" +"932" "PGF" +"933" "AL590822.1" +"934" "RHOBTB3" +"935" "DIO1" +"936" "RP11-493L12.4" +"937" "LINC00337" +"938" "ERRFI1" +"939" "RP4-635E18.6" +"940" "RP11-305E17.6" +"941" "AKR7A3" +"942" "RP1-224A6.9" +"943" "ASAP3" +"944" "RP1-150O5.3" +"945" "KIAA1522" +"946" "ZSCAN20" +"947" "THEM5" +"948" "OXCT2" +"949" "RP11-269F19.2" +"950" "ZSWIM5" +"951" "C8orf31" +"952" "CCDC17" +"953" "MORC4" +"954" "AC096677.1" +"955" "STIL" +"956" "RP5-1024G6.5" +"957" "AL161915.1" +"958" "WDR78" +"959" "ZRANB2-AS1" +"960" "GIPC2" +"961" "TTLL7" +"962" "RP5-837M10.4" +"963" "RP5-1180E21.4" +"964" "AC093901.1" +"965" "RP4-666F24.3" +"966" "RP11-326G21.1" +"967" "PTPRN" +"968" "ECM1" +"969" "TMOD4" +"970" "AL450992.2" +"971" "SCN9A" +"972" "EFNA1" +"973" "MUC1" +"974" "CRABP2" +"975" "PEAR1" +"976" "RP11-71G12.1" +"977" "RP11-367J7.3" +"978" "SLAMF9" +"979" "RP11-574F21.2" +"980" "RP11-46A10.4" +"981" "RP11-569A11.1" +"982" "ADORA1" +"983" "RP11-312O7.2" +"984" "ITGB5" +"985" "DTL" +"986" "RP11-245P10.6" +"987" "RP11-544D21.2" +"988" "OR2W3" +"989" "RP11-407H12.8" +"990" "OR2T10" +"991" "FAM150B" +"992" "AC019118.2" +"993" "AC011747.7" +"994" "AC009228.1" +"995" "RP11-420A23.1" +"996" "GCKR" +"997" "CYP1B1-AS1" +"998" "SLC8A1-AS1" +"999" "CLHC1" +"1000" "TMEM17" +"1001" "AC097495.2" +"1002" "TGFA" +"1003" "AC007040.6" +"1004" "ATOH8" +"1005" "RP11-548P2.2" +"1006" "TEKT4" +"1007" "AC009505.2" +"1008" "AC104653.1" +"1009" "PKD2L2" +"1010" "FAM81B" +"1011" "AC140481.2" +"1012" "TNFAIP6" +"1013" "RP11-1152H14.1" +"1014" "SCN3A" +"1015" "BBS5" +"1016" "AC010894.3" +"1017" "OSBPL6" +"1018" "DFNB59" +"1019" "FZD5" +"1020" "CRYGD" +"1021" "DIRC3" +"1022" "RP11-16P6.1" +"1023" "B3GNT7" +"1024" "SAG" +"1025" "IQCA1" +"1026" "AC105760.2" +"1027" "RP11-445F6.2" +"1028" "FAM132B" +"1029" "CXXC11" +"1030" "MYCT1" +"1031" "PPARG" +"1032" "UBE2E2-AS1" +"1033" "THRB" +"1034" "RP11-10C24.3" +"1035" "HOXA1" +"1036" "VIPR1-AS1" +"1037" "KRBOX1-1" +"1038" "LIMD1-AS1" +"1039" "RP13-131K19.1" +"1040" "LAMB2" +"1041" "RP5-966M1.6" +"1042" "RP11-81N13.1" +"1043" "MGAM" +"1044" "HHLA2" +"1045" "RAB43" +"1046" "RP11-102M11.2" +"1047" "IL20RB" +"1048" "TERC" +"1049" "ZDHHC19" +"1050" "TM4SF19-1" +"1051" "RP13-616I3.1" +"1052" "STK32B" +"1053" "CC2D2A" +"1054" "KIT" +"1055" "RP11-646I6.5" +"1056" "RP11-798L4.1" +"1057" "RP11-127B20.2" +"1058" "RP11-499E18.1" +"1059" "C4orf21" +"1060" "FAT4" +"1061" "CCRN4L" +"1062" "MGARP" +"1063" "NEIL3" +"1064" "CTD-2044J15.2" +"1065" "KNDC1" +"1066" "PRLR" +"1067" "CTD-2113L7.1" +"1068" "RAB3C" +"1069" "RP11-307L14.1" +"1070" "MAST4-AS1" +"1071" "DMGDH" +"1072" "CKMT2" +"1073" "GPR98" +"1074" "CDCA3" +"1075" "EPB41L4A" +"1076" "CTC-487M23.8" +"1077" "ZNF608" +"1078" "CTC-203F4.2" +"1079" "SPOCK1" +"1080" "AICDA" +"1081" "SLC23A1" +"1082" "MIR143HG" +"1083" "CTC-248O19.1" +"1084" "NIPAL4" +"1085" "SOX30" +"1086" "RP11-175K6.1" +"1087" "C5orf58" +"1088" "C6orf52" +"1089" "RP11-456H18.2" +"1090" "HIST1H2BB" +"1091" "HIST1H2AD" +"1092" "HIST1H2AI" +"1093" "PGBD1" +"1094" "POU5F1" +"1095" "ARMC12" +"1096" "RP1-153P14.5" +"1097" "RP3-330M21.5" +"1098" "RCAN2" +"1099" "EYS" +"1100" "RP11-63L7.5" +"1101" "RP1-249I4.2" +"1102" "SLC22A16" +"1103" "RP1-93H18.7" +"1104" "RP11-10J5.1" +"1105" "RP1-67K17.4" +"1106" "RP1-45I4.3" +"1107" "STXBP5-AS1" +"1108" "RP11-350J20.12" +"1109" "CCDC170" +"1110" "ESR1" +"1111" "RP5-933K21.3" +"1112" "PNLDC1" +"1113" "SLC22A3" +"1114" "AC093627.9" +"1115" "PDGFA" +"1116" "RP11-449P15.2" +"1117" "RP11-1275H24.1" +"1118" "AC004895.4" +"1119" "HOXA10-AS" +"1120" "RP11-638I8.1" +"1121" "ZPBP" +"1122" "C7orf72" +"1123" "RP11-340I6.8" +"1124" "RP11-458F8.4" +"1125" "CALN1" +"1126" "LRRD1" +"1127" "AC002451.3" +"1128" "SLC26A4" +"1129" "ST7-OT4" +"1130" "POT1-AS1" +"1131" "SLC13A4" +"1132" "FAM131B" +"1133" "ARHGEF35" +"1134" "MAP3K15" +"1135" "PTCHD1" +"1136" "LANCL3" +"1137" "JADE3" +"1138" "ZNF157" +"1139" "XPNPEP2" +"1140" "SLC6A8" +"1141" "RP11-91J19.4" +"1142" "TNFRSF10C" +"1143" "RP11-380I10.4" +"1144" "RBPMS" +"1145" "XKR4" +"1146" "PENK" +"1147" "MCMDC2" +"1148" "RP11-48B3.3" +"1149" "AC023632.1" +"1150" "SDC2" +"1151" "CASC8" +"1152" "RP13-467H17.1" +"1153" "GS1-393G12.12" +"1154" "RECQL4" +"1155" "RP11-509J21.3" +"1156" "SPATA6L" +"1157" "LURAP1L" +"1158" "CDKN2B-AS1" +"1159" "RUSC2" +"1160" "MAMDC2-AS1" +"1161" "PRUNE2" +"1162" "RP11-154D17.1" +"1163" "RP11-435O5.5" +"1164" "HSD17B3" +"1165" "CTSV" +"1166" "RP11-217B7.2" +"1167" "RP11-235C23.5" +"1168" "NR6A1" +"1169" "RP11-344B5.2" +"1170" "RP11-492E3.51" +"1171" "COL5A1" +"1172" "C9orf163" +"1173" "FAM157B" +"1174" "IDI2-AS1" +"1175" "RP11-342D11.3" +"1176" "NAMPTL" +"1177" "C10orf10" +"1178" "JMJD1C-AS1" +"1179" "DNA2" +"1180" "AC022532.1" +"1181" "ZMIZ1-AS1" +"1182" "NUTM2E" +"1183" "RP11-77P6.2" +"1184" "RP11-76P2.4" +"1185" "NDUFB8" +"1186" "KCNIP2" +"1187" "RP11-451M19.3" +"1188" "FGFR2" +"1189" "ATE1-AS1" +"1190" "CDHR5" +"1191" "BRSK2" +"1192" "RP11-732A19.9" +"1193" "LDHAL6A" +"1194" "MPPED2" +"1195" "DEPDC7" +"1196" "RAPSN" +"1197" "RP11-804A23.4" +"1198" "ZP1" +"1199" "RP11-21A7A.3" +"1200" "RP11-783K16.14" +"1201" "CNIH2" +"1202" "RBM14-RBM4" +"1203" "RP11-849H4.4" +"1204" "P4HA3" +"1205" "KLHL35" +"1206" "LRRC32" +"1207" "RP11-89C3.4" +"1208" "KIRREL3" +"1209" "GLB1L3" +"1210" "NRIP2" +"1211" "TSPAN9" +"1212" "CCND2-AS1" +"1213" "RP11-118B22.4" +"1214" "CLEC12B" +"1215" "CLEC1A" +"1216" "STYK1" +"1217" "GPR19" +"1218" "SMCO3" +"1219" "AC026310.1" +"1220" "RP11-421F16.3" +"1221" "RP11-967K21.1" +"1222" "RP11-328C8.4" +"1223" "RP11-96H19.1" +"1224" "RP11-89H19.1" +"1225" "KRT81" +"1226" "SOAT2" +"1227" "CYP27B1" +"1228" "RP11-320P7.1" +"1229" "RP11-588H23.3" +"1230" "NTN4" +"1231" "STK17A" +"1232" "C16orf13" +"1233" "STUB1" +"1234" "DSCR3" +"1235" "KIF5B" +"1236" "ABRACL" +"1237" "CORO1B" +"1238" "HLA-DMA" +"1239" "KARS" +"1240" "SH3GLB1" +"1241" "MYADM" +"1242" "NDUFB10" +"1243" "TMEM219" +"1244" "CIR1" +"1245" "VPS28" +"1246" "AP2S1" +"1247" "ALDH2" +"1248" "C14orf166" +"1249" "IRF9" +"1250" "ZC3H15" +"1251" "NSA2" +"1252" "CLNS1A" +"1253" "MED30" +"1254" "NXT2" +"1255" "LMAN2" +"1256" "DNAJC15" +"1257" "SCPEP1" +"1258" "FERMT3" +"1259" "JTB" +"1260" "GCA" +"1261" "THYN1" +"1262" "BMPR2" +"1263" "PLA2G12A" +"1264" "FAM96B" +"1265" "AATF" +"1266" "LRRFIP1" +"1267" "ATG4C" +"1268" "VAMP5" +"1269" "RPN2" +"1270" "CCT2" +"1271" "DDT" +"1272" "FKBP3" +"1273" "CTNNBL1" +"1274" "GDI2" +"1275" "KDM3B" +"1276" "DNAJA3" +"1277" "EIF5" +"1278" "ARHGDIA" +"1279" "ELOF1" +"1280" "MLX" +"1281" "ANAPC11" +"1282" "LUC7L" +"1283" "CAT" +"1284" "RNF139" +"1285" "TTC14" +"1286" "UBE2D1" +"1287" "VKORC1" +"1288" "PRKD2" +"1289" "PHF14" +"1290" "UBE2L6" +"1291" "EFHD2" +"1292" "ACP1" +"1293" "CD47" +"1294" "GNB2" +"1295" "TMEM205" +"1296" "MRPS12" +"1297" "TSSC1" +"1298" "OSCAR" +"1299" "TAF12" +"1300" "MMADHC" +"1301" "PPP2CA" +"1302" "MESDC2" +"1303" "IDI1" +"1304" "NOP58" +"1305" "EIF4E" +"1306" "REXO2" +"1307" "ZBP1" +"1308" "NAT9" +"1309" "MTERFD2" +"1310" "PARP1" +"1311" "RNF213" +"1312" "MYCBP2" +"1313" "SCP2" +"1314" "C21orf33" +"1315" "TIMM17A" +"1316" "C19orf52" +"1317" "TMEM165" +"1318" "TBCB" +"1319" "STX18" +"1320" "TOMM22" +"1321" "ADD1" +"1322" "DNAJA1" +"1323" "EMB" +"1324" "OXLD1" +"1325" "DERL1" +"1326" "ZNF688" +"1327" "CMTM7" +"1328" "RER1" +"1329" "PACSIN2" +"1330" "ADSL" +"1331" "ISCA2" +"1332" "PRDX4" +"1333" "ECHDC1" +"1334" "HDAC5" +"1335" "UNC45A" +"1336" "RBM7" +"1337" "PCNP" +"1338" "VTI1B" +"1339" "FKBP5" +"1340" "NUP54" +"1341" "CDA" +"1342" "VPS25" +"1343" "C15orf48" +"1344" "UBXN4" +"1345" "RNF113A" +"1346" "EIF2B1" +"1347" "PNRC1" +"1348" "GGA3" +"1349" "ITPA" +"1350" "WDR55" +"1351" "ZNF493" +"1352" "SURF6" +"1353" "GINM1" +"1354" "RPUSD2" +"1355" "NCOR2" +"1356" "BSDC1" +"1357" "REEP3" +"1358" "CDC40" +"1359" "LILRB2" +"1360" "TRADD" +"1361" "PSMC5" +"1362" "MFSD10" +"1363" "PLD6" +"1364" "CHD2" +"1365" "CCDC91" +"1366" "PMVK" +"1367" "CASP4" +"1368" "EIF3D" +"1369" "SNX9" +"1370" "RNF187" +"1371" "ATP5A1" +"1372" "ERGIC3" +"1373" "RILPL2" +"1374" "ARRDC3" +"1375" "BTN3A2" +"1376" "ZUFSP" +"1377" "C9orf16" +"1378" "CEPT1" +"1379" "OAZ2" +"1380" "CCDC12" +"1381" "SAFB2" +"1382" "YPEL5" +"1383" "GATA2" +"1384" "AURKB" +"1385" "LDHA" +"1386" "PTGES3" +"1387" "PGK1" +"1388" "SCGB3A1" +"1389" "ATXN10" +"1390" "PCBP1" +"1391" "MNDA" +"1392" "C1QC" +"1393" "PPIG" +"1394" "BAZ2A" +"1395" "MRPL9" +"1396" "EVI2B" +"1397" "PPT1" +"1398" "ERH" +"1399" "NUDT16L1" +"1400" "RNF181" +"1401" "ING5" +"1402" "STRA13" +"1403" "BBC3" +"1404" "PPIE" +"1405" "NT5C" +"1406" "PITHD1" +"1407" "PTAFR" +"1408" "REEP5" +"1409" "CDT1" +"1410" "PLBD1" +"1411" "LAMTOR1" +"1412" "SIGLEC10" +"1413" "ATP1A1" +"1414" "DUT" +"1415" "MYOM2" +"1416" "TMEM9B" +"1417" "GMPR2" +"1418" "METTL3" +"1419" "RBP7" +"1420" "AHSA1" +"1421" "NDNL2" +"1422" "GPS1" +"1423" "RAN" +"1424" "PNISR" +"1425" "CENPF" +"1426" "COMMD5" +"1427" "MRPL47" +"1428" "CISD3" +"1429" "ATP1B3" +"1430" "DHRS4L2" +"1431" "DIAPH1" +"1432" "DUSP10" +"1433" "MT-ND6" +"1434" "ARPC5" +"1435" "CDC123" +"1436" "CYTIP" +"1437" "CGRRF1" +"1438" "CYB5B" +"1439" "HSP90B1" +"1440" "GNAI2" +"1441" "ATP5O" +"1442" "NCAPG" +"1443" "HSD17B11" +"1444" "WDR45" +"1445" "HAVCR2" +"1446" "ADI1" +"1447" "C5orf15" +"1448" "DONSON" +"1449" "NIT2" +"1450" "WDR5" +"1451" "HIST1H2BC" +"1452" "IL7R" +"1453" "NIFK" +"1454" "DNAJA2" +"1455" "MCM2" +"1456" "LYN" +"1457" "GOLGB1" +"1458" "CCDC85B" +"1459" "FGR" +"1460" "ZAP70" +"1461" "MRPS33" +"1462" "LSM6" +"1463" "RPL22L1" +"1464" "XRCC5" +"1465" "IFIT5" +"1466" "SMARCC2" +"1467" "HAUS1" +"1468" "MAX" +"1469" "FCGR2A" +"1470" "ZNF593" +"1471" "E2F3" +"1472" "PFDN2" +"1473" "CEP120" +"1474" "MRPL12" +"1475" "ADAM10" +"1476" "ASAH1" +"1477" "GIMAP7" +"1478" "CTD-2302E22.4" +"1479" "SRSF3" +"1480" "ZFP36L1" +"1481" "TEN1" +"1482" "TGFB1" +"1483" "YTHDF2" +"1484" "CRBN" +"1485" "DHRS7" +"1486" "FBXO33" +"1487" "KIAA0930" +"1488" "MBNL2" +"1489" "MRPL23" +"1490" "ARPC1B" +"1491" "CLIP1" +"1492" "CKS1B" +"1493" "NAA25" +"1494" "TMEM104" +"1495" "NDUFA11" +"1496" "SEC11C" +"1497" "JUND" +"1498" "MED7" +"1499" "HNRNPA0" +"1500" "MTDH" +"1501" "RBM17" +"1502" "FBXO21" +"1503" "MED27" +"1504" "FTSJ2" +"1505" "NARS" +"1506" "RASGRP4" +"1507" "DRAXIN" +"1508" "TAPBP" +"1509" "CENPU" +"1510" "MRPL28" +"1511" "SAAL1" +"1512" "FCGRT" +"1513" "GSK3A" +"1514" "TP53BP2" +"1515" "WDR83" +"1516" "DOK2" +"1517" "EIF2S3" +"1518" "TRAF3IP3" +"1519" "ARPC5L" +"1520" "FAM89B" +"1521" "GNG3" +"1522" "ABCC3" +"1523" "FGL2" +"1524" "HEXIM2" +"1525" "BCL2A1" +"1526" "GNS" +"1527" "BBS2" +"1528" "ARF4" +"1529" "METTL9" +"1530" "STK32C" +"1531" "RELT" +"1532" "GZMM" +"1533" "OBSCN" +"1534" "HLA-DMB" +"1535" "PPIF" +"1536" "CTSC" +"1537" "FAM43A" +"1538" "RAB2A" +"1539" "SMC4" +"1540" "CSNK1A1" +"1541" "TRIOBP" +"1542" "NR2C2AP" +"1543" "RANBP1" +"1544" "POLR2I" +"1545" "EIF3M" +"1546" "RSL1D1" +"1547" "ATP6V1C1" +"1548" "CD82" +"1549" "DTX2" +"1550" "FCGR1A" +"1551" "DHX8" +"1552" "ACTN4" +"1553" "JAZF1" +"1554" "KLRC2" +"1555" "SWAP70" +"1556" "ZNF468" +"1557" "PDZK1IP1" +"1558" "TMEM91" +"1559" "ASGR1" +"1560" "BLVRA" +"1561" "CTC-378H22.1" +"1562" "ZMAT3" +"1563" "GTF3A" +"1564" "NF1" +"1565" "PPA2" +"1566" "SAMD3" +"1567" "MX1" +"1568" "MEF2D" +"1569" "TMEM229B" +"1570" "PRPF8" +"1571" "ZBTB10" +"1572" "SENP2" +"1573" "C20orf196" +"1574" "ATP5D" +"1575" "RP11-1399P15.1" +"1576" "ALKBH4" +"1577" "CDK1" +"1578" "ADAL" +"1579" "PGBD2" +"1580" "LIG1" +"1581" "POU2F2" +"1582" "POLG" +"1583" "DENND2D" +"1584" "PTPRN2" +"1585" "RPL39L" +"1586" "SRPK1" +"1587" "TXNDC17" +"1588" "EHMT2" +"1589" "ICOS" +"1590" "DYNC2LI1" +"1591" "C16orf58" +"1592" "MRPL41" +"1593" "CDC37" +"1594" "COMMD8" +"1595" "SGK1" +"1596" "TOP2A" +"1597" "NAIP" +"1598" "NDUFA2" +"1599" "C1orf54" +"1600" "GRN" +"1601" "ZNF397" +"1602" "FLNA" +"1603" "NRROS" +"1604" "CORO1C" +"1605" "TMC8" +"1606" "ITCH" +"1607" "RABIF" +"1608" "ANKRA2" +"1609" "ANKRD49" +"1610" "FASTKD1" +"1611" "SMYD4" +"1612" "TAF1" +"1613" "CLCN3" +"1614" "CTSZ" +"1615" "PGM2" +"1616" "MARCKSL1" +"1617" "CLSTN3" +"1618" "DICER1" +"1619" "MLTK" +"1620" "EPSTI1" +"1621" "SFR1" +"1622" "SIRT6" +"1623" "RIT1" +"1624" "DOHH" +"1625" "RHBDD3" +"1626" "HMG20A" +"1627" "VMAC" +"1628" "C12orf45" +"1629" "SLC25A11" +"1630" "RP5-827C21.4" +"1631" "HARS" +"1632" "IL17RA" +"1633" "USF1" +"1634" "PICALM" +"1635" "RP11-111M22.3" +"1636" "HDAC2" +"1637" "STT3A" +"1638" "TMEM234" +"1639" "OSTC" +"1640" "UCHL1" +"1641" "EIF2S2" +"1642" "TRPV2" +"1643" "LAT2" +"1644" "USP25" +"1645" "LPIN1" +"1646" "OAS1" +"1647" "ANKRD44" +"1648" "XRCC6" +"1649" "ANKHD1" +"1650" "COX7B" +"1651" "GALNT1" +"1652" "HSPD1" +"1653" "AMDHD2" +"1654" "HDGF" +"1655" "CTC-444N24.11" +"1656" "GADD45G" +"1657" "LPAR5" +"1658" "GAS6" +"1659" "MAFF" +"1660" "COG4" +"1661" "OAS3" +"1662" "RBFA" +"1663" "TCTA" +"1664" "TANGO6" +"1665" "PRKCD" +"1666" "RGMB" +"1667" "RPUSD1" +"1668" "PCYT1A" +"1669" "RP11-301O19.1" +"1670" "CISH" +"1671" "TMEM116" +"1672" "CEP164" +"1673" "MDS2" +"1674" "FHL1" +"1675" "DAK" +"1676" "TRAF7" +"1677" "POLR3E" +"1678" "CDK16" +"1679" "SLC31A2" +"1680" "SMCHD1" +"1681" "ANAPC4" +"1682" "UBE2R2" +"1683" "RP11-390E23.6" +"1684" "USP8" +"1685" "AIM2" +"1686" "NDUFS1" +"1687" "SCAND1" +"1688" "BLNK" +"1689" "SMPDL3A" +"1690" "BPTF" +"1691" "SSR3" +"1692" "CIDEB" +"1693" "PKN2" +"1694" "COLGALT1" +"1695" "FAM127A" +"1696" "AAR2" +"1697" "ACAT2" +"1698" "RAB27B" +"1699" "AAAS" +"1700" "ZCCHC11" +"1701" "DAGLB" +"1702" "RAB34" +"1703" "RP11-138A9.2" +"1704" "GRINA" +"1705" "HMGA1" +"1706" "MGRN1" +"1707" "NELL2" +"1708" "MAF1" +"1709" "NFAT5" +"1710" "DNAJB14" +"1711" "TOP1MT" +"1712" "AKAP8" +"1713" "GIMAP1" +"1714" "TUBB" +"1715" "BANP" +"1716" "LRRC8C" +"1717" "GSTZ1" +"1718" "USF2" +"1719" "TARSL2" +"1720" "CDK19" +"1721" "MLEC" +"1722" "ANKZF1" +"1723" "LYRM4" +"1724" "PASK" +"1725" "CYB561" +"1726" "SMARCD1" +"1727" "STAU2" +"1728" "SYTL2" +"1729" "TXK" +"1730" "USP19" +"1731" "LSM14A" +"1732" "C5AR1" +"1733" "DIDO1" +"1734" "TUBA4A" +"1735" "PELI1" +"1736" "TCL1B" +"1737" "GFER" +"1738" "UBAP2" +"1739" "ERCC6L2" +"1740" "LBR" +"1741" "PEX26" +"1742" "ZFYVE28" +"1743" "SKAP2" +"1744" "SPATS2L" +"1745" "ZNF195" +"1746" "AK2" +"1747" "SNHG12" +"1748" "FAM207A" +"1749" "RBBP6" +"1750" "AP003733.1" +"1751" "GLRX5" +"1752" "SPG20" +"1753" "HVCN1" +"1754" "BBX" +"1755" "SF3A3" +"1756" "KIF3A" +"1757" "PRR12" +"1758" "P2RX5" +"1759" "ZNF106" +"1760" "MVD" +"1761" "APH1B" +"1762" "CIRH1A" +"1763" "THAP2" +"1764" "CHMP1B" +"1765" "WBP2" +"1766" "LTV1" +"1767" "RMND5A" +"1768" "IL1RAP" +"1769" "C3orf38" +"1770" "DNMT3A" +"1771" "RFC2" +"1772" "ZMAT5" +"1773" "LINC01003" +"1774" "TRUB2" +"1775" "BRK1" +"1776" "TNFAIP2" +"1777" "APOBEC3C" +"1778" "MVB12A" +"1779" "MINA" +"1780" "TXNDC5" +"1781" "TPM2" +"1782" "ARG2" +"1783" "SLC16A5" +"1784" "NAT14" +"1785" "TYW5" +"1786" "ARL16" +"1787" "DENND6A" +"1788" "POLR3K" +"1789" "RNF26" +"1790" "TMEM194A" +"1791" "TMUB2" +"1792" "NEXN" +"1793" "ZYX" +"1794" "ZNF3" +"1795" "SAMD9L" +"1796" "ATG7" +"1797" "LAIR1" +"1798" "NAAA" +"1799" "B4GALT4" +"1800" "GTF2H2" +"1801" "SLC39A1" +"1802" "PLA2G7" +"1803" "SLC44A1" +"1804" "APMAP" +"1805" "ZNF628" +"1806" "MKNK1" +"1807" "QRSL1" +"1808" "IP6K1" +"1809" "LAS1L" +"1810" "NUDCD3" +"1811" "SLC4A7" +"1812" "NDUFS3" +"1813" "URGCP" +"1814" "YDJC" +"1815" "MRPS18A" +"1816" "ATG16L2" +"1817" "CBX5" +"1818" "CCPG1" +"1819" "DPM1" +"1820" "ST3GAL2" +"1821" "PTGES2" +"1822" "RAB10" +"1823" "IL4R" +"1824" "TMEM60" +"1825" "RAB4B" +"1826" "SAMD4B" +"1827" "DDB2" +"1828" "RHEBL1" +"1829" "TMBIM1" +"1830" "TMEM69" +"1831" "SREK1" +"1832" "POLD2" +"1833" "USP33" +"1834" "INO80C" +"1835" "IRAK1" +"1836" "ATPAF1" +"1837" "DDAH2" +"1838" "PPP1R8" +"1839" "TMEM189" +"1840" "NFATC1" +"1841" "SMIM14" +"1842" "SLFN5" +"1843" "POP7" +"1844" "AP3M1" +"1845" "MAT2A" +"1846" "ADA" +"1847" "RCL1" +"1848" "HTATIP2" +"1849" "TBXAS1" +"1850" "LIX1L" +"1851" "ALOX5AP" +"1852" "DIS3" +"1853" "PRDM2" +"1854" "CLPP" +"1855" "FLT3LG" +"1856" "SMCO4" +"1857" "GUCD1" +"1858" "NUMB" +"1859" "CD302" +"1860" "AC093323.3" +"1861" "ATXN7L3B" +"1862" "PIGL" +"1863" "ZCCHC10" +"1864" "MARCH6" +"1865" "PROCA1" +"1866" "AC113189.5" +"1867" "C1orf198" +"1868" "NSMAF" +"1869" "BTK" +"1870" "GOLT1B" +"1871" "GTF2F2" +"1872" "ST20" +"1873" "GHITM" +"1874" "GPR171" +"1875" "DLST" +"1876" "FAM103A1" +"1877" "TBC1D23" +"1878" "VOPP1" +"1879" "C6orf48" +"1880" "EXOC4" +"1881" "DTYMK" +"1882" "MYC" +"1883" "NUDT5" +"1884" "PHF3" +"1885" "C5orf30" +"1886" "CHIC2" +"1887" "TMEM62" +"1888" "AGA" +"1889" "POLDIP2" +"1890" "NUDT11" +"1891" "KIF11" +"1892" "BIRC3" +"1893" "ZNF341" +"1894" "ZNF836" +"1895" "NDUFAF4" +"1896" "RNPEP" +"1897" "CD27" +"1898" "USP20" +"1899" "ZNF626" +"1900" "ARSG" +"1901" "C1orf63" +"1902" "CCDC107" +"1903" "LTB4R" +"1904" "IL27RA" +"1905" "MBOAT7" +"1906" "SUV420H2" +"1907" "CCDC174" +"1908" "RALBP1" +"1909" "ARID5B" +"1910" "CD55" +"1911" "C1orf50" +"1912" "CERS2" +"1913" "TACC1" +"1914" "GARS" +"1915" "PLAC8" +"1916" "IFI44L" +"1917" "VPS72" +"1918" "TINF2" +"1919" "LAMP2" +"1920" "MKKS" +"1921" "ELL" +"1922" "SH2D1A" +"1923" "ABHD14A" +"1924" "FBXO7" +"1925" "PUM1" +"1926" "PHACTR1" +"1927" "OLFM1" +"1928" "UBE2E1" +"1929" "DDX54" +"1930" "COA6" +"1931" "MDH2" +"1932" "DNAJB9" +"1933" "TTTY15" +"1934" "C22orf39" +"1935" "HMGXB4" +"1936" "TAF1D" +"1937" "GLB1" +"1938" "C16orf52" +"1939" "CEP85L" +"1940" "TAOK3" +"1941" "TCEA2" +"1942" "ELMO1" +"1943" "CXXC1" +"1944" "PNO1" +"1945" "PILRB" +"1946" "SEC11A" +"1947" "C16orf54" +"1948" "HEMGN" +"1949" "KLF13" +"1950" "SNRNP27" +"1951" "SPIN1" +"1952" "TIMM22" +"1953" "TMEM80" +"1954" "STX17" +"1955" "PEX16" +"1956" "BRAT1" +"1957" "SERPINB1" +"1958" "JARID2" +"1959" "ASXL2" +"1960" "CTNNBIP1" +"1961" "PGRMC2" +"1962" "SMU1" +"1963" "C9orf142" +"1964" "PRAF2" +"1965" "GRAP" +"1966" "HNRNPL" +"1967" "PACRGL" +"1968" "IQCE" +"1969" "DENND1C" +"1970" "PCP2" +"1971" "HSPBP1" +"1972" "SNRPB" +"1973" "PRPF38A" +"1974" "TMCO1" +"1975" "SLC2A3" +"1976" "SETD5" +"1977" "FAAH" +"1978" "PHPT1" +"1979" "IFT57" +"1980" "TRIM8" +"1981" "ADAM8" +"1982" "CD96" +"1983" "PDHB" +"1984" "VPS13A" +"1985" "CCT4" +"1986" "RPUSD4" +"1987" "KLHL6" +"1988" "SPEN" +"1989" "CAPNS1" +"1990" "ARAP1" +"1991" "NUDT9" +"1992" "EMC10" +"1993" "MID1IP1" +"1994" "PCNX" +"1995" "RAB21" +"1996" "SELPLG" +"1997" "CSRNP1" +"1998" "MRTO4" +"1999" "TMEM102" +"2000" "METTL13" +"2001" "PHF5A" +"2002" "DEXI" +"2003" "SIAH2" +"2004" "HENMT1" +"2005" "CD4" +"2006" "RARS" +"2007" "NOG" +"2008" "CNPY3" +"2009" "SLC6A6" +"2010" "RASAL3" +"2011" "RP11-792A8.4" +"2012" "TFAM" +"2013" "ERCC1" +"2014" "GUCY1B3" +"2015" "CLSPN" +"2016" "MRPS36" +"2017" "ATP6V1D" +"2018" "AP3M2" +"2019" "TCEAL1" +"2020" "SYNE2" +"2021" "DOCK10" +"2022" "P2RY10" +"2023" "DUSP22" +"2024" "USP7" +"2025" "DHX36" +"2026" "ARIH2OS" +"2027" "NOP56" +"2028" "TOX4" +"2029" "MOB1A" +"2030" "TMEM203" +"2031" "ILF3" +"2032" "CTA-29F11.1" +"2033" "RBM25" +"2034" "RARA" +"2035" "TOB1" +"2036" "TMEM126B" +"2037" "XXbac-BPG299F13.17" +"2038" "MRPS18C" +"2039" "SDHA" +"2040" "HDLBP" +"2041" "PHGDH" +"2042" "TNFRSF25" +"2043" "RFC5" +"2044" "TBC1D8" +"2045" "MRE11A" +"2046" "RWDD4" +"2047" "ARHGEF2" +"2048" "MAPK14" +"2049" "DDX1" +"2050" "KHDRBS1" +"2051" "URB2" +"2052" "KRT7" +"2053" "MYO9B" +"2054" "RP3-395M20.9" +"2055" "ARL6" +"2056" "PQBP1" +"2057" "NOS3" +"2058" "RNPEPL1" +"2059" "TNS1" +"2060" "CCNE1" +"2061" "TIMM13" +"2062" "LRRC47" +"2063" "MORF4L2" +"2064" "BRD9" +"2065" "GPR35" +"2066" "LDOC1L" +"2067" "TCEA1" +"2068" "MLLT10" +"2069" "C9orf69" +"2070" "GPBP1L1" +"2071" "CYLD" +"2072" "SDAD1" +"2073" "C5orf56" +"2074" "COMMD4" +"2075" "ZNF276" +"2076" "TBC1D15" +"2077" "DLGAP4" +"2078" "PNPLA8" +"2079" "LDLRAP1" +"2080" "NKIRAS2" +"2081" "NME3" +"2082" "VPS29" +"2083" "ZFX" +"2084" "DYNLT1" +"2085" "CLPX" +"2086" "NARG2" +"2087" "SEC31A" +"2088" "TCF7" +"2089" "CCNH" +"2090" "TMX3" +"2091" "ANKRD22" +"2092" "CNOT7" +"2093" "TM7SF3" +"2094" "TMEM87A" +"2095" "CALHM2" +"2096" "DDX17" +"2097" "ANKRD36C" +"2098" "KIAA1429" +"2099" "ECI2" +"2100" "FAM173A" +"2101" "PSMA3" +"2102" "UBA2" +"2103" "SIGLEC14" +"2104" "TMEM199" +"2105" "C15orf61" +"2106" "DERL2" +"2107" "GRB2" +"2108" "CD84" +"2109" "ANXA6" +"2110" "ACTR6" +"2111" "SEPHS2" +"2112" "AGO4" +"2113" "NKTR" +"2114" "DTX3" +"2115" "DECR1" +"2116" "SAMM50" +"2117" "C20orf27" +"2118" "ZNHIT3" +"2119" "THOC6" +"2120" "MBD4" +"2121" "URM1" +"2122" "MRPL21" +"2123" "SDF2L1" +"2124" "KLF11" +"2125" "PPP2R5C" +"2126" "PCGF1" +"2127" "THEMIS" +"2128" "NDUFA4" +"2129" "CDV3" +"2130" "NOTCH2NL" +"2131" "ANXA2R" +"2132" "AMICA1" +"2133" "DESI1" +"2134" "ACTR1B" +"2135" "TOR1A" +"2136" "ALG13" +"2137" "CHERP" +"2138" "DMAP1" +"2139" "CYTH4" +"2140" "CCDC69" +"2141" "ATF7IP2" +"2142" "CASC4" +"2143" "ATP6V0E2" +"2144" "EBNA1BP2" +"2145" "C19orf24" +"2146" "SGOL1" +"2147" "DCP2" +"2148" "CDC16" +"2149" "GYS1" +"2150" "MARCH5" +"2151" "ATP6AP1" +"2152" "CNDP2" +"2153" "TLE4" +"2154" "TDG" +"2155" "NAPRT1" +"2156" "KIAA1430" +"2157" "NENF" +"2158" "MRPL40" +"2159" "SETX" +"2160" "EDC3" +"2161" "CYB561D2" +"2162" "RP11-421L21.3" +"2163" "KIAA0040" +"2164" "KDELR2" +"2165" "SH3BP5" +"2166" "U2SURP" +"2167" "LEPROT" +"2168" "TMEM248" +"2169" "IRAK4" +"2170" "ATAD1" +"2171" "PUS10" +"2172" "SPNS1" +"2173" "COPS4" +"2174" "SNAPIN" +"2175" "C1orf35" +"2176" "ZBTB8OS" +"2177" "BZRAP1-AS1" +"2178" "NANS" +"2179" "USP36" +"2180" "FOSL2" +"2181" "MRPL51" +"2182" "CNPY2" +"2183" "GGA2" +"2184" "APOA1BP" +"2185" "LPGAT1" +"2186" "PRPF18" +"2187" "SLU7" +"2188" "AMD1" +"2189" "ZNF32" +"2190" "BEX4" +"2191" "TAF6L" +"2192" "EIF1B" +"2193" "DGKZ" +"2194" "GALK1" +"2195" "HCCS" +"2196" "RNF166" +"2197" "TPD52L2" +"2198" "ARPP19" +"2199" "CCDC25" +"2200" "ZNF567" +"2201" "ECSIT" +"2202" "FOPNL" +"2203" "RBPJ" +"2204" "ZNF277" +"2205" "PLAGL2" +"2206" "YIPF3" +"2207" "ETS1" +"2208" "UTP6" +"2209" "CCDC66" +"2210" "CCNL1" +"2211" "MRPL42" +"2212" "PIGF" +"2213" "E4F1" +"2214" "RP11-400F19.6" +"2215" "CCDC124" +"2216" "HDDC3" +"2217" "HECTD1" +"2218" "TIMMDC1" +"2219" "TIMM10B" +"2220" "SNX5" +"2221" "RMDN3" +"2222" "RNF125" +"2223" "BABAM1" +"2224" "SF3B1" +"2225" "CAPZA1" +"2226" "C1orf86" +"2227" "CRLS1" +"2228" "AC010642.1" +"2229" "NRBF2" +"2230" "CAND1" +"2231" "BAG4" +"2232" "MPLKIP" +"2233" "QSOX1" +"2234" "RP5-1073O3.7" +"2235" "ACAA1" +"2236" "TMEM138" +"2237" "MOCS2" +"2238" "PTPN4" +"2239" "C16orf80" +"2240" "RP11-432I5.1" +"2241" "TNRC6B" +"2242" "RUNDC1" +"2243" "RP11-314N13.3" +"2244" "ASF1A" +"2245" "PRNP" +"2246" "POLE4" +"2247" "C1GALT1C1" +"2248" "WLS" +"2249" "BEX2" +"2250" "VIT" +"2251" "CRTAP" +"2252" "KLK1" +"2253" "ASCC2" +"2254" "DUS3L" +"2255" "DYNLL1" +"2256" "SRP72" +"2257" "MAP3K7" +"2258" "MPV17" +"2259" "STX4" +"2260" "THEM4" +"2261" "PPP2R3C" +"2262" "STK11IP" +"2263" "ALG5" +"2264" "MON1B" +"2265" "NFKBIA" +"2266" "RAB9A" +"2267" "WIBG" +"2268" "GTPBP6" +"2269" "ADH5" +"2270" "TPGS1" +"2271" "SNX10" +"2272" "EIF4E2" +"2273" "ZSWIM6" +"2274" "DCAF8" +"2275" "ANKEF1" +"2276" "RGS19" +"2277" "STX16" +"2278" "EI24" +"2279" "MRPL1" +"2280" "AGPAT1" +"2281" "HAUS5" +"2282" "NFATC3" +"2283" "FAM120C" +"2284" "FBXO25" +"2285" "IGSF6" +"2286" "THRAP3" +"2287" "MAP3K8" +"2288" "UGP2" +"2289" "ADPRM" +"2290" "SNN" +"2291" "TPST2" +"2292" "CAMK2G" +"2293" "OPTN" +"2294" "ORMDL2" +"2295" "SMARCB1" +"2296" "SNW1" +"2297" "IFI44" +"2298" "NPM3" +"2299" "SNHG7" +"2300" "LUC7L3" +"2301" "MZT2A" +"2302" "PWP1" +"2303" "NFYC" +"2304" "PSTPIP1" +"2305" "ITGB7" +"2306" "TMEM55A" +"2307" "C1orf123" +"2308" "MRPL18" +"2309" "PRKACB" +"2310" "CAPN12" +"2311" "PI4KB" +"2312" "UBE2F" +"2313" "DIMT1" +"2314" "NDUFB6" +"2315" "CD2AP" +"2316" "HMCES" +"2317" "MTIF3" +"2318" "RP11-139H15.1" +"2319" "ITM2A" +"2320" "RASGRP2" +"2321" "SARS" +"2322" "EPC1" +"2323" "RPL26L1" +"2324" "HMBOX1" +"2325" "TCEAL4" +"2326" "XXbac-BPGBPG55C20.2" +"2327" "EAPP" +"2328" "INIP" +"2329" "GOT2" +"2330" "PPIL4" +"2331" "NDUFA5" +"2332" "SNX14" +"2333" "PLEKHJ1" +"2334" "PBRM1" +"2335" "TRMT1L" +"2336" "ISY1" +"2337" "SRPR" +"2338" "IRF2" +"2339" "MFSD1" +"2340" "ACADM" +"2341" "CD48" +"2342" "NISCH" +"2343" "ENY2" +"2344" "LITAF" +"2345" "TGFBR2" +"2346" "HADHA" +"2347" "PCSK7" +"2348" "SNX20" +"2349" "IFT20" +"2350" "SATB1" +"2351" "CDC5L" +"2352" "NONO" +"2353" "DYNLL2" +"2354" "FRAT1" +"2355" "LRCH4" +"2356" "MTCH2" +"2357" "UBE3A" +"2358" "LMF2" +"2359" "PRPF6" +"2360" "NDUFA10" +"2361" "RP11-430B1.2" +"2362" "YPEL3" +"2363" "CAMLG" +"2364" "METTL21A" +"2365" "C12orf10" +"2366" "PLRG1" +"2367" "GYG1" +"2368" "RAD23A" +"2369" "GPR56" +"2370" "PSIP1" +"2371" "ETHE1" +"2372" "MRPS16" +"2373" "C8orf44" +"2374" "CCNG1" +"2375" "GBP4" +"2376" "RP11-66N24.3" +"2377" "QPRT" +"2378" "FBXO4" +"2379" "IMP3" +"2380" "ABCD4" +"2381" "ARL2BP" +"2382" "LINC00493" +"2383" "MAP2K7" +"2384" "FBXW5" +"2385" "RTFDC1" +"2386" "CCDC22" +"2387" "DCK" +"2388" "CHMP3" +"2389" "RORA" +"2390" "WDR1" +"2391" "DNAJC8" +"2392" "ATG12" +"2393" "USP5" +"2394" "FASTK" +"2395" "NAP1L4" +"2396" "FAM45A" +"2397" "GIT2" +"2398" "MRPS23" +"2399" "RBM14" +"2400" "EIF5B" +"2401" "RGS14" +"2402" "ARL4A" +"2403" "AFAP1L2" +"2404" "C15orf57" +"2405" "GOSR2" +"2406" "P2RY6" +"2407" "FFAR3" +"2408" "C5AR2" +"2409" "TASP1" +"2410" "DNAJC10" +"2411" "PIK3R1" +"2412" "DNAJC7" +"2413" "NR3C1" +"2414" "ACTR2" +"2415" "FOXP1" +"2416" "DNPH1" +"2417" "MFF" +"2418" "FRY-AS1" +"2419" "GNPDA2" +"2420" "DRAM2" +"2421" "ZMAT2" +"2422" "MGMT" +"2423" "PAFAH1B1" +"2424" "UBE2B" +"2425" "CALCOCO2" +"2426" "DDX46" +"2427" "EMC7" +"2428" "FAM120A" +"2429" "LARS" +"2430" "CDC42SE2" +"2431" "TRABD2A" +"2432" "MTERFD1" +"2433" "RP4-561L24.3" +"2434" "UBE2K" +"2435" "AMIGO1" +"2436" "DPCD" +"2437" "SEMA4F" +"2438" "ACOX2" +"2439" "PDCD4" +"2440" "MSH5" +"2441" "TXN2" +"2442" "TMEM14C" +"2443" "TIAM2" +"2444" "TMEM18" +"2445" "CTPS2" +"2446" "UFD1L" +"2447" "BUB3" +"2448" "ZMAT4" +"2449" "PEX19" +"2450" "ANKRD18A" +"2451" "CD274" +"2452" "C9orf147" +"2453" "hsa-mir-1199" +"2454" "MEIG1" +"2455" "DEF6" +"2456" "CEP55" +"2457" "RGL2" +"2458" "C14orf2" +"2459" "HPRT1" +"2460" "ARGLU1" +"2461" "PRRG4" +"2462" "CADM1" +"2463" "PRICKLE1" +"2464" "BLCAP" +"2465" "LINC01146" +"2466" "DUOX1" +"2467" "FXN" +"2468" "RP11-76E17.3" +"2469" "TXNL4B" +"2470" "CMTM3" +"2471" "SMPD3" +"2472" "TANK" +"2473" "ISOC1" +"2474" "RNF165" +"2475" "MED9" +"2476" "NANP" +"2477" "LYSMD4" +"2478" "WDR62" +"2479" "ESYT1" +"2480" "ZNF808" +"2481" "MAP2K3" +"2482" "SHARPIN" +"2483" "GALT" +"2484" "NDUFS2" +"2485" "RNF7" +"2486" "XPOT" +"2487" "DEGS1" +"2488" "RP11-575L7.8" +"2489" "CUTA" +"2490" "PIGT" +"2491" "RRS1" +"2492" "SIRPG" +"2493" "AAGAB" +"2494" "KPNA1" +"2495" "HMGCL" +"2496" "OAT" +"2497" "RAP1A" +"2498" "DCTN3" +"2499" "TGOLN2" +"2500" "LDHB" +"2501" "CELF1" +"2502" "ZNF92" +"2503" "RWDD1" +"2504" "TTC1" +"2505" "OLA1" +"2506" "ARID4A" +"2507" "YTHDC1" +"2508" "LYRM5" +"2509" "WHAMM" +"2510" "ARPC1A" +"2511" "CNEP1R1" +"2512" "GDPD1" +"2513" "PSMD7" +"2514" "CCDC109B" +"2515" "RHEB" +"2516" "ATP10D" +"2517" "CCDC94" +"2518" "ARF6" +"2519" "BRWD1" +"2520" "NOL7" +"2521" "PMF1" +"2522" "SSBP3" +"2523" "SRSF2" +"2524" "MAPK1IP1L" +"2525" "TRIM14" +"2526" "AP3S1" +"2527" "UIMC1" +"2528" "SPCS1" +"2529" "ELP6" +"2530" "NDUFA9" +"2531" "MAGEH1" +"2532" "PHLDA2" +"2533" "RCN2" +"2534" "ZFAND4" +"2535" "C16orf74" +"2536" "VPS51" +"2537" "CUL4B" +"2538" "SCAF11" +"2539" "SMIM12" +"2540" "CACYBP" +"2541" "PPP1R18" +"2542" "SNHG8" +"2543" "WTAP" +"2544" "RBMX" +"2545" "TREX1" +"2546" "BNIP2" +"2547" "LY86" +"2548" "NGFRAP1" +"2549" "CCT6A" +"2550" "DGUOK" +"2551" "GLTP" +"2552" "VPS13C" +"2553" "MRPL14" +"2554" "TMED5" +"2555" "IDH1" +"2556" "TRIM28" +"2557" "CD93" +"2558" "CORO7" +"2559" "C7orf26" +"2560" "RNASEH2B" +"2561" "RPIA" +"2562" "DDX24" +"2563" "NUDCD1" +"2564" "ARID4B" +"2565" "FGFR1OP2" +"2566" "ATXN3" +"2567" "CLTB" +"2568" "CASC3" +"2569" "RNF25" +"2570" "LENG1" +"2571" "COMMD3" +"2572" "ILF3-AS1" +"2573" "CYTH2" +"2574" "NAGA" +"2575" "TMEM177" +"2576" "MPHOSPH10" +"2577" "TC2N" +"2578" "POLR2E" +"2579" "PRR5L" +"2580" "MYO1G" +"2581" "ZNF75A" +"2582" "RCHY1" +"2583" "ACADVL" +"2584" "THUMPD3" +"2585" "NFKBIL1" +"2586" "TRA2B" +"2587" "GIMAP2" +"2588" "MGA" +"2589" "CAMK1D" +"2590" "MTIF2" +"2591" "UBIAD1" +"2592" "ANKAR" +"2593" "MGAT1" +"2594" "TWF2" +"2595" "EIF4G2" +"2596" "SLC25A38" +"2597" "LAMTOR5" +"2598" "ZNF330" +"2599" "CCDC152" +"2600" "NFU1" +"2601" "CAP1" +"2602" "EMG1" +"2603" "ZNF428" +"2604" "ODF3B" +"2605" "CCP110" +"2606" "TIMM9" +"2607" "CRTC2" +"2608" "MADD" +"2609" "STX5" +"2610" "MIS18BP1" +"2611" "TCEAL8" +"2612" "GMEB1" +"2613" "SPRTN" +"2614" "STAU1" +"2615" "RBMS1" +"2616" "SAMSN1" +"2617" "SNRPE" +"2618" "XRRA1" +"2619" "SNAP47" +"2620" "CCM2" +"2621" "PSMD4" +"2622" "ACTL6A" +"2623" "CIAPIN1" +"2624" "LYRM2" +"2625" "KIF9" +"2626" "SPSB2" +"2627" "AF213884.2" +"2628" "NHP2L1" +"2629" "RP11-295P9.3" +"2630" "SPCS2" +"2631" "PPM1G" +"2632" "TXN" +"2633" "LILRB3" +"2634" "TMEM222" +"2635" "GGH" +"2636" "GRAP2" +"2637" "WNK1" +"2638" "JKAMP" +"2639" "LMAN1" +"2640" "CSRP1" +"2641" "ECHS1" +"2642" "ZNF232" +"2643" "GTF2B" +"2644" "CCNI" +"2645" "RAB1B" +"2646" "ACOT13" +"2647" "RP11-178G16.4" +"2648" "SCFD1" +"2649" "DHX15" +"2650" "ARMC7" +"2651" "ISCU" +"2652" "LRRC59" +"2653" "BOLA3" +"2654" "TAF7" +"2655" "EFCAB14" +"2656" "SCAPER" +"2657" "SMS" +"2658" "RFXANK" +"2659" "CHN2" +"2660" "CPSF3L" +"2661" "TMBIM6" +"2662" "L3MBTL2" +"2663" "PARL" +"2664" "R3HDM2" +"2665" "CD1E" +"2666" "IL16" +"2667" "GNPAT" +"2668" "ST7L" +"2669" "RP11-589C21.6" +"2670" "PTGDR" +"2671" "MRPL43" +"2672" "PEMT" +"2673" "PRPS2" +"2674" "EIF2S1" +"2675" "RHOB" +"2676" "SPPL2A" +"2677" "ZNF131" +"2678" "SRA1" +"2679" "LAPTM4A" +"2680" "PDE12" +"2681" "SNRNP35" +"2682" "ATF4" +"2683" "NCBP2" +"2684" "NABP1" +"2685" "MRP63" +"2686" "VPS26B" +"2687" "ARHGAP30" +"2688" "MIS12" +"2689" "DHX9" +"2690" "TRIP11" +"2691" "CAPZB" +"2692" "RELB" +"2693" "FAM204A" +"2694" "MICU1" +"2695" "IMPDH2" +"2696" "ATM" +"2697" "PAXIP1-AS1" +"2698" "UXT" +"2699" "OSM" +"2700" "SDCCAG8" +"2701" "NUTF2" +"2702" "RPPH1" +"2703" "CDCA8" +"2704" "TAL1" +"2705" "UCK1" +"2706" "RP11-307C12.12" +"2707" "IRF4" +"2708" "TRIM58" +"2709" "ASAP2" +"2710" "EPOR" +"2711" "ITGB1BP1" +"2712" "BOLA3-AS1" +"2713" "PDXDC1" +"2714" "EXOC6" +"2715" "NCKAP1" +"2716" "RP13-131K19.2" +"2717" "FAM3D" +"2718" "LIMD2" +"2719" "NEK11" +"2720" "PIGX" +"2721" "RP11-10L12.4" +"2722" "ZNF45" +"2723" "C18orf21" +"2724" "CTD-2517O10.6" +"2725" "PTPN6" +"2726" "TMEM171" +"2727" "BAG5" +"2728" "TIFAB" +"2729" "FAXDC2" +"2730" "ZNF350" +"2731" "HIST1H4H" +"2732" "RABEP2" +"2733" "RP5-894D12.3" +"2734" "MNAT1" +"2735" "NME8" +"2736" "MBLAC1" +"2737" "MRPL2" +"2738" "SERPINE1" +"2739" "ZBED5-AS1" +"2740" "ZNF630" +"2741" "MRS2" +"2742" "LONRF3" +"2743" "SLC2A8" +"2744" "RP11-258F1.1" +"2745" "ZNF883" +"2746" "KCNC3" +"2747" "KCNMA1" +"2748" "RP11-416N2.4" +"2749" "RP11-142C4.6" +"2750" "TGFBRAP1" +"2751" "MT-ND5" +"2752" "SRGAP1" +"2753" "CBLN3" +"2754" "FBXO3" +"2755" "ABHD12" +"2756" "PKMYT1" +"2757" "AC137932.6" +"2758" "RP11-468E2.4" +"2759" "RP11-333E1.1" +"2760" "EVA1B" +"2761" "FAM106A" +"2762" "NEURL1" +"2763" "SNPH" +"2764" "AC005253.2" +"2765" "PLAGL1" +"2766" "DMC1" +"2767" "ZNF585A" +"2768" "SDHAF2" +"2769" "FEM1A" +"2770" "KLHL24" +"2771" "RNF168" +"2772" "ASB7" +"2773" "DHCR24" +"2774" "LEPR" +"2775" "SELL" +"2776" "PRKACA" +"2777" "RPS10P7" +"2778" "ACBD3" +"2779" "CXCR1" +"2780" "IRS1" +"2781" "DVL3" +"2782" "NMNAT3" +"2783" "PRKAR2B" +"2784" "PSMA1" +"2785" "RP11-297B17.3" +"2786" "SBDS" +"2787" "FIBCD1" +"2788" "MPC2" +"2789" "MLLT6" +"2790" "SUV39H2" +"2791" "KIAA1377" +"2792" "OASL" +"2793" "FNTA" +"2794" "RP11-1008C21.1" +"2795" "SMAP2" +"2796" "AC025335.1" +"2797" "NOL11" +"2798" "SLC5A10" +"2799" "TNFSF12" +"2800" "PLTP" +"2801" "ZNF207" +"2802" "DMWD" +"2803" "FADS1" +"2804" "FBXW4" +"2805" "ZNF813" +"2806" "STK4" +"2807" "ARPC4" +"2808" "WBP2NL" +"2809" "MAD2L1BP" +"2810" "CDADC1" +"2811" "USP51" +"2812" "DPY30" +"2813" "RP11-479G22.8" +"2814" "DBNDD1" +"2815" "SYVN1" +"2816" "CTC-297N7.5" +"2817" "ITSN1" +"2818" "BCL2L11" +"2819" "COMTD1" +"2820" "RFWD3" +"2821" "NNT-AS1" +"2822" "HERPUD2" +"2823" "TTPAL" +"2824" "EGLN3" +"2825" "SLC25A12" +"2826" "UQCC1" +"2827" "AKTIP" +"2828" "EOGT" +"2829" "MRPS6" +"2830" "FNBP4" +"2831" "TAF10" +"2832" "RP3-467K16.4" +"2833" "L1TD1" +"2834" "KLC4" +"2835" "RP11-443B7.1" +"2836" "RAB40C" +"2837" "AC079354.1" +"2838" "PGLS" +"2839" "SEPW1" +"2840" "TXNRD3" +"2841" "RAB11B" +"2842" "RP11-362K14.7" +"2843" "EIF2AK4" +"2844" "RP11-290F5.1" +"2845" "GPX3" +"2846" "RP11-393I2.4" +"2847" "TXLNB" +"2848" "RGS10" +"2849" "RP11-230C9.4" +"2850" "CTSB" +"2851" "GFRA2" +"2852" "CTD-2006H14.2" +"2853" "CHPF2" +"2854" "MSMP" +"2855" "APBB1IP" +"2856" "CDNF" +"2857" "HAX1" +"2858" "SUCLG2" +"2859" "SLC6A12" +"2860" "C1R" +"2861" "MDP1" +"2862" "N4BP2L1" +"2863" "RP11-511B23.1" +"2864" "CTD-2184C24.2" +"2865" "THAP11" +"2866" "MEG3" +"2867" "GOLGA7" +"2868" "RP11-452L6.7" +"2869" "RAB12" +"2870" "FAM83D" +"2871" "KRBOX4" +"2872" "SIGLEC12" +"2873" "TMED4" +"2874" "CTA-85E5.10" +"2875" "GLYCTK" +"2876" "RP3-508I15.21" +"2877" "MKL1" +"2878" "CHCHD3" +"2879" "DOK3" +"2880" "C9orf37" +"2881" "R3HDM1" +"2882" "FAM212B" +"2883" "NFE2L2" +"2884" "CSTB" +"2885" "GRPEL1" +"2886" "HOOK2" +"2887" "SSR2" +"2888" "ERI3" +"2889" "NR2C1" +"2890" "SIK1" +"2891" "SRP9" +"2892" "SRSF9" +"2893" "RNF14" +"2894" "TBPL1" +"2895" "ATP5F1" +"2896" "CR1" +"2897" "EIF4EBP1" +"2898" "SMDT1" +"2899" "ARHGAP24" +"2900" "TMEM251" +"2901" "MED28" +"2902" "PIGU" +"2903" "CEP68" +"2904" "UBE2I" +"2905" "BET1" +"2906" "C14orf80" +"2907" "RAB8A" +"2908" "PCMT1" +"2909" "HTT" +"2910" "PLEKHA1" +"2911" "DEDD" +"2912" "DNAJC19" +"2913" "RAB8B" +"2914" "DNTTIP1" +"2915" "UBE2D4" +"2916" "AP1B1" +"2917" "MTRF1" +"2918" "CCNB1" +"2919" "NOC4L" +"2920" "CNIH4" +"2921" "GLG1" +"2922" "DDX56" +"2923" "AES" +"2924" "IL3RA" +"2925" "LIN7A" +"2926" "CASP5" +"2927" "GPRC5C" +"2928" "CTNNB1" +"2929" "PYCRL" +"2930" "RIOK1" +"2931" "SCARB1" +"2932" "ALOX12" +"2933" "CANX" +"2934" "ZNF561" +"2935" "BLZF1" +"2936" "NELFB" +"2937" "CALM3" +"2938" "HSPB11" +"2939" "HNRNPA3" +"2940" "REPS2" +"2941" "NOP2" +"2942" "ABHD17B" +"2943" "CD163" +"2944" "CLEC7A" +"2945" "SGSM2" +"2946" "CENPT" +"2947" "SUSD1" +"2948" "C19orf53" +"2949" "TMEM160" +"2950" "PDCD2L" +"2951" "TRIM23" +"2952" "NPHP3" +"2953" "NME6" +"2954" "CWC27" +"2955" "RAB5C" +"2956" "POLR2K" +"2957" "GLRX" +"2958" "TIMM17B" +"2959" "DEPDC1B" +"2960" "EIF4A3" +"2961" "VSIG4" +"2962" "CDCA5" +"2963" "CDC45" +"2964" "KIAA0196" +"2965" "NFIC" +"2966" "VIPR1" +"2967" "ANKRD27" +"2968" "TAPSAR1" +"2969" "ZNF175" +"2970" "SIN3A" +"2971" "RABL2B" +"2972" "PAIP2B" +"2973" "BID" +"2974" "FTCDNL1" +"2975" "PSMC6" +"2976" "APC" +"2977" "COPS5" +"2978" "KIAA1715" +"2979" "SLC20A2" +"2980" "INTS2" +"2981" "VTI1A" +"2982" "PYURF" +"2983" "NECAB3" +"2984" "WBP5" +"2985" "MARK3" +"2986" "RARRES3" +"2987" "CECR5" +"2988" "HDAC9" +"2989" "PXMP4" +"2990" "RBM5" +"2991" "EID1" +"2992" "TRIT1" +"2993" "SLC19A1" +"2994" "TULP3" +"2995" "DPY19L1" +"2996" "C17orf59" +"2997" "OPRL1" +"2998" "C4orf3" +"2999" "RAB7A" +"3000" "NBR1" +"3001" "ZRANB3" +"3002" "TBXA2R" +"3003" "PLEKHB2" +"3004" "IDUA" +"3005" "CD27-AS1" +"3006" "NEFH" +"3007" "MALT1" +"3008" "C14orf119" +"3009" "CHPF" +"3010" "MKLN1" +"3011" "ZBTB47" +"3012" "RP11-506M13.3" +"3013" "TOP2B" +"3014" "LDLRAD3" +"3015" "SLC43A3" +"3016" "FAM111B" +"3017" "AATK" +"3018" "CTC-297N7.8" +"3019" "C4orf33" +"3020" "PTBP2" +"3021" "CASC7" +"3022" "EGLN2" +"3023" "EHD3" +"3024" "KCNK6" +"3025" "VPS54" +"3026" "C2orf40" +"3027" "NAP1L1" +"3028" "NR2C2" +"3029" "OSER1" +"3030" "ZNF502" +"3031" "CEP97" +"3032" "SDR39U1" +"3033" "TRMT10A" +"3034" "CTD-2015H6.3" +"3035" "LINC01024" +"3036" "GMPPA" +"3037" "NKAPL" +"3038" "CARD16" +"3039" "MED20" +"3040" "LAMP3" +"3041" "HRH2" +"3042" "IKBIP" +"3043" "PCAT1" +"3044" "ELP5" +"3045" "PAPSS2" +"3046" "FANK1" +"3047" "TGFBR1" +"3048" "FLT3" +"3049" "SLFN13" +"3050" "ADCY9" +"3051" "MT-ATP8" +"3052" "CENPL" +"3053" "CETP" +"3054" "TKTL1" +"3055" "GCSH" +"3056" "7SK-2" +"3057" "HYAL3" +"3058" "PRCD" +"3059" "CUEDC1" +"3060" "SIRPB2" +"3061" "REEP6" +"3062" "RNPS1" +"3063" "ADAT3" +"3064" "MPG" +"3065" "PSPN" +"3066" "ZNF404" +"3067" "CTD-2368P22.1" +"3068" "ANKRD54" +"3069" "FOXRED2" +"3070" "FMNL1" +"3071" "TST" +"3072" "TEF" +"3073" "PAXBP1-AS1" +"3074" "EMILIN2" +"3075" "RP11-488C13.5" +"3076" "C1QBP" +"3077" "TRIM69" +"3078" "YPEL2" +"3079" "ATP6V1E2" +"3080" "SF3B2" +"3081" "TBCK" +"3082" "AIM1L" +"3083" "BCL11A" +"3084" "FAM8A1" +"3085" "NUF2" +"3086" "C9orf91" +"3087" "COLGALT2" +"3088" "TMEM131" +"3089" "EML6" +"3090" "CSDE1" +"3091" "DYSF" +"3092" "MARS2" +"3093" "TMPRSS11E" +"3094" "CENPE" +"3095" "AL590452.1" +"3096" "CTD-2353F22.1" +"3097" "CXCR6" +"3098" "PKIB" +"3099" "AC004893.11" +"3100" "DDX51" +"3101" "CLCN5" +"3102" "AC145212.1" +"3103" "ZNF596" +"3104" "AC073072.5" +"3105" "RP11-390B4.5" +"3106" "ARHGAP6" +"3107" "RP11-338I21.1" +"3108" "ARHGAP19" +"3109" "LAMP5" +"3110" "RP11-430H10.1" +"3111" "RP11-701P16.5" +"3112" "AP001462.6" +"3113" "AURKC" +"3114" "WNT5B" +"3115" "EIF4A1" +"3116" "GPT2" +"3117" "SHPK-1" +"3118" "TPM4" +"3119" "PURA" +"3120" "TUBG2" +"3121" "ST6GALNAC1" +"3122" "ZNF337-AS1" +"3123" "DDIT4" +"3124" "RAC1" +"3125" "RP11-1094M14.11" +"3126" "DPH6" +"3127" "SLC2A13" +"3128" "PDK2" +"3129" "REC8" +"3130" "TTN-AS1" +"3131" "NDUFB11" +"3132" "SMC2" +"3133" "MIS18A" +"3134" "ACOT11" +"3135" "HCFC2" +"3136" "COX6C" +"3137" "RP11-122G18.5" +"3138" "RP11-443B7.3" +"3139" "TRIM11" +"3140" "CENPA" +"3141" "TUFM" +"3142" "CNRIP1" +"3143" "AC022201.5" +"3144" "BACE2" +"3145" "BIN1" +"3146" "KCNAB1" +"3147" "SKP1" +"3148" "DERL3" +"3149" "PLK4" +"3150" "AC068610.3" +"3151" "DNAJC1" +"3152" "CAV1" +"3153" "EARS2" +"3154" "RP11-305L7.3" +"3155" "RP11-324I22.4" +"3156" "HKDC1" +"3157" "RGS12" +"3158" "STRN" +"3159" "SUOX" +"3160" "CTD-2547L24.4" +"3161" "FAM154B" +"3162" "FPR2" +"3163" "HBQ1" +"3164" "IMP4" +"3165" "CTRL" +"3166" "CDH1" +"3167" "NFATC2" +"3168" "RP11-863P13.3" +"3169" "RP13-753N3.1" +"3170" "NDRG2" +"3171" "RP11-1151B14.4" +"3172" "ATP9A" +"3173" "LINC00659" +"3174" "MYL6" +"3175" "C19orf77" +"3176" "SNX29P2" +"3177" "AP1M2" +"3178" "RHOH" +"3179" "SMC3" +"3180" "ZNF763" +"3181" "DPY19L4" +"3182" "ZNF443" +"3183" "CDC20" +"3184" "CTD-2537I9.12" +"3185" "QPCTL" +"3186" "CBX3" +"3187" "ZNF135" +"3188" "USP30" +"3189" "ENO1" +"3190" "EIF3K" +"3191" "NIPSNAP1" +"3192" "MIR4435-1HG" +"3193" "RP11-70C1.1" +"3194" "FRMD3" +"3195" "AC115618.1" +"3196" "LINC00341" +"3197" "MCM3" +"3198" "PDE6B" +"3199" "PEX11G" +"3200" "ATP1B1" +"3201" "AFTPH" +"3202" "FAM72A" +"3203" "DISP1" +"3204" "TLR5" +"3205" "RP11-378A13.2" +"3206" "ACPP" +"3207" "MTCH1" +"3208" "TAPT1-AS1" +"3209" "YIPF5" +"3210" "GALM" +"3211" "RELL1" +"3212" "LMNB2" +"3213" "ARMCX5" +"3214" "GNAZ" +"3215" "ZFP69" +"3216" "RP11-809N8.4" +"3217" "CXCL10" +"3218" "TIRAP" +"3219" "RNF126" +"3220" "SLC25A15" +"3221" "TECPR2" +"3222" "ADSSL1" +"3223" "SIRT1" +"3224" "CCL2" +"3225" "PDIK1L" +"3226" "IGFBP4" +"3227" "RP11-166P13.4" +"3228" "LMNA" +"3229" "RP5-1103G7.4" +"3230" "ATXN1L" +"3231" "SNX4" +"3232" "ZNF69" +"3233" "LAIR2" +"3234" "NAPG" +"3235" "ZNF582-AS1" +"3236" "RP11-223C24.1" +"3237" "LONRF1" +"3238" "PTGS1" +"3239" "TPI1" +"3240" "RP11-727F15.12" +"3241" "SRRM1" +"3242" "CD19" +"3243" "NPIPB11" +"3244" "FASLG" +"3245" "CD3EAP" +"3246" "CRCP" +"3247" "LIMK1" +"3248" "PTRHD1" +"3249" "CPNE5" +"3250" "PRUNE" +"3251" "WDR76" +"3252" "NOSIP" +"3253" "RP4-575N6.4" +"3254" "GMFG" +"3255" "PAN2" +"3256" "MYO5A" +"3257" "DNAJB11" +"3258" "ZNF174" +"3259" "DBP" +"3260" "CMTR2" +"3261" "ABCC10" +"3262" "ACP2" +"3263" "DNAJC30" +"3264" "UGCG" +"3265" "MYNN" +"3266" "UTRN" +"3267" "PPIP5K2" +"3268" "RP1-28O10.1" +"3269" "XBP1" +"3270" "KPNA2" +"3271" "PARS2" +"3272" "MUM1" +"3273" "ORMDL1" +"3274" "TRIM16L" +"3275" "AP001053.11" +"3276" "C19orf43" +"3277" "CTC-338M12.5" +"3278" "DDI2" +"3279" "CTBS" +"3280" "EMR1" +"3281" "TRPC4AP" +"3282" "WDR60" +"3283" "AP1S2" +"3284" "CEACAM4" +"3285" "ZNF148" +"3286" "PJA1" +"3287" "RP11-532F6.3" +"3288" "RP11-85F14.5" +"3289" "ZSWIM8" +"3290" "COX14" +"3291" "NDUFS5" +"3292" "ZNF747" +"3293" "LAMTOR2" +"3294" "RP11-412D9.4" +"3295" "SLC10A7" +"3296" "MAPK7" +"3297" "AP2M1" +"3298" "MACROD2" +"3299" "LSM1" +"3300" "FAM210B" +"3301" "TOP1" +"3302" "DHX34" +"3303" "TMEM109" +"3304" "VWA8" +"3305" "RP11-796G6.2" +"3306" "AC144652.1" +"3307" "BLOC1S5" +"3308" "CSTA" +"3309" "RP11-362F19.1" +"3310" "MRPL52" +"3311" "RAD51B" +"3312" "ANXA11" +"3313" "CDKN2A" +"3314" "PRR4" +"3315" "SLC50A1" +"3316" "ARID5A" +"3317" "HSH2D" +"3318" "C1orf112" +"3319" "AC009948.5" +"3320" "SRGAP3" +"3321" "TMCC2" +"3322" "GHRL" +"3323" "FGFRL1" +"3324" "SERTAD1" +"3325" "COL19A1" +"3326" "SLC35A1" +"3327" "RP3-428L16.2" +"3328" "SCAI" +"3329" "ZNF12" +"3330" "CCZ1B" +"3331" "NUDT22" +"3332" "AC004854.4" +"3333" "ADAR" +"3334" "NCAPG2" +"3335" "ZNF674-AS1" +"3336" "RAC2" +"3337" "EDA" +"3338" "ENTPD3-AS1" +"3339" "RP11-297N6.4" +"3340" "ANK1" +"3341" "NSMCE1" +"3342" "DYNLRB1" +"3343" "E2F5" +"3344" "TMEM67" +"3345" "ARF1" +"3346" "RP11-434C1.1" +"3347" "NRL" +"3348" "GPR68" +"3349" "RP11-111A22.1" +"3350" "NEAT1" +"3351" "EFCAB7" +"3352" "SLC38A7" +"3353" "TNFAIP1" +"3354" "DHRS11" +"3355" "RP11-214N9.1" +"3356" "CCDC142" +"3357" "PPP1R13L" +"3358" "KCNMB3" +"3359" "ZNF765" +"3360" "PRELID2" +"3361" "HSPA1L" +"3362" "TMEM87B" +"3363" "KRT10" +"3364" "TSNARE1" +"3365" "ARHGEF39" +"3366" "PMPCA" +"3367" "INVS" +"3368" "NIPSNAP3B" +"3369" "RNF144B" +"3370" "AGAP4" +"3371" "PLXDC2" +"3372" "LDLRAD4" +"3373" "CTD-3138B18.5" +"3374" "LGALS12" +"3375" "AMDHD1" +"3376" "DYNLT3" +"3377" "RP11-275I4.1" +"3378" "ZNF669" +"3379" "RP11-862L9.3" +"3380" "LGMN" +"3381" "LIM2" +"3382" "GALNS" +"3383" "MYO15B" +"3384" "RP11-53I6.3" +"3385" "SERPINB8" +"3386" "PFAS" +"3387" "SNF8" +"3388" "GLUD1" +"3389" "KMT2B" +"3390" "RP3-325F22.5" +"3391" "IFRD1" +"3392" "TCF25" +"3393" "RP11-274B18.2" +"3394" "TADA2A" +"3395" "GFOD2" +"3396" "USP38" +"3397" "ARL4D" +"3398" "ENSA" +"3399" "DOCK5" +"3400" "N6AMT1" +"3401" "EAF2" +"3402" "RP11-545I5.3" +"3403" "AEBP1" +"3404" "RFT1" +"3405" "SPC25" +"3406" "GATA1" +"3407" "JUNB" +"3408" "CARD9" +"3409" "RP11-509J21.2" +"3410" "MSI2" +"3411" "CTC-524C5.2" +"3412" "PIM3" +"3413" "TMEM191C" +"3414" "ZFHX3" +"3415" "MTMR10" +"3416" "PHF11" +"3417" "PNOC" +"3418" "SUSD3" +"3419" "CD72" +"3420" "MT1F" +"3421" "SGTA" +"3422" "IL24" +"3423" "MED4" +"3424" "FAM76B" +"3425" "ZNF563" +"3426" "RFC4" +"3427" "AP4M1" +"3428" "CLCF1" +"3429" "EDF1" +"3430" "FRMD4B" +"3431" "RBM26-AS1" +"3432" "ZBTB17" +"3433" "LCORL" +"3434" "LINC01011" +"3435" "CDR2" +"3436" "TSPAN5" +"3437" "MCM5" +"3438" "LRBA" +"3439" "TATDN3" +"3440" "PDCD6" +"3441" "ZMPSTE24" +"3442" "TNFAIP3" +"3443" "PKIG" +"3444" "C12orf75" +"3445" "FXYD5" +"3446" "HEMK1" +"3447" "RLF" +"3448" "AC010883.5" +"3449" "CEP72" +"3450" "LINC01013" +"3451" "SLC22A5" +"3452" "KCTD9" +"3453" "LRRC27" +"3454" "MBNL1-AS1" +"3455" "CTD-2260A17.2" +"3456" "MIPEP" +"3457" "A2M-AS1" +"3458" "FNTB" +"3459" "CARM1" +"3460" "TTF1" +"3461" "FGGY" +"3462" "OTUD1" +"3463" "PDIA5" +"3464" "SMOX" +"3465" "RP11-539L10.3" +"3466" "FNBP1" +"3467" "NUDT6" +"3468" "DDX43" +"3469" "CAHM" +"3470" "RP11-66N11.8" +"3471" "RP11-262H14.4" +"3472" "EXD3" +"3473" "GBGT1" +"3474" "FUT4" +"3475" "USP10" +"3476" "ALKBH8" +"3477" "ARHGEF12" +"3478" "PEAK1" +"3479" "SORT1" +"3480" "STPG1" +"3481" "LGALS9B" +"3482" "CCT6B" +"3483" "LINC00910" +"3484" "ZNF212" +"3485" "GAB2" +"3486" "SLC17A9" +"3487" "ABCA5" +"3488" "C20orf201" +"3489" "DEK" +"3490" "RPS19BP1" +"3491" "ZIK1" +"3492" "RP3-400N23.6" +"3493" "ICA1" +"3494" "TTLL1" +"3495" "ERP29" +"3496" "UAP1" +"3497" "CAMTA1" +"3498" "ATG3" +"3499" "NUP210" +"3500" "ALG14" +"3501" "PLCL1" +"3502" "N4BP3" +"3503" "SLC25A46" +"3504" "DCUN1D2" +"3505" "RPL36AL" +"3506" "RP11-894P9.1" +"3507" "LSMD1" +"3508" "ZNF407" +"3509" "SNTA1" +"3510" "TREM1" +"3511" "FCAR" +"3512" "RFPL2" +"3513" "STK36" +"3514" "PHLDA1" +"3515" "RP11-1191J2.5" +"3516" "HILPDA" +"3517" "RP11-527L4.5" +"3518" "SND1" +"3519" "CACFD1" +"3520" "ARHGAP22" +"3521" "RP11-326C3.15" +"3522" "PTGDR2" +"3523" "L2HGDH" +"3524" "UBAP1L" +"3525" "BMP8B" +"3526" "KIAA0556" +"3527" "CMTM2" +"3528" "NCBP1" +"3529" "SPAG5" +"3530" "C14orf28" +"3531" "CATSPERG" +"3532" "HIST1H2BD" +"3533" "FAM109B" +"3534" "RP11-25K19.1" +"3535" "LRRK2" +"3536" "RAB20" +"3537" "IFNG-AS1" +"3538" "RP11-727F15.9" +"3539" "RP5-821D11.7" +"3540" "CD5" +"3541" "TOMM40" +"3542" "CEP78" +"3543" "LPAR2" +"3544" "CHST2" +"3545" "YES1" +"3546" "CD320" +"3547" "RP11-222K16.2" +"3548" "RP11-18H21.1" +"3549" "TOM1L2" +"3550" "C3AR1" +"3551" "MRPS15" +"3552" "EID2" +"3553" "HEATR5A" +"3554" "FCRLB" +"3555" "RBBP8" +"3556" "LZTS2" +"3557" "TLE2" +"3558" "AC005082.12" +"3559" "GSTM4" +"3560" "TMEM59" +"3561" "AGPAT9" +"3562" "MARCH2" +"3563" "TRABD" +"3564" "BLM" +"3565" "ZCCHC18" +"3566" "MRM1" +"3567" "ARHGAP11A" +"3568" "IPPK" +"3569" "FDXACB1" +"3570" "RRP1" +"3571" "CHEK1" +"3572" "TNFRSF1B" +"3573" "SQRDL" +"3574" "TMOD2" +"3575" "CSNK1G1" +"3576" "FBXL12" +"3577" "FLYWCH2" +"3578" "PLCB1" +"3579" "ZNF726" +"3580" "AD000090.2" +"3581" "TPRKB" +"3582" "ZNF570" +"3583" "C19orf73" +"3584" "GBP2" +"3585" "PRMT6" +"3586" "MORN2" +"3587" "RP11-452F19.3" +"3588" "IL17RC" +"3589" "POC1A" +"3590" "FAM198B" +"3591" "ATP6V1F" +"3592" "KIF13A" +"3593" "ATAD3C" +"3594" "ZFP57" +"3595" "FAM104A" +"3596" "RP11-514O12.4" +"3597" "DBI" +"3598" "MAGEE1" +"3599" "C9orf139" +"3600" "PTPN18" +"3601" "TXNL1" +"3602" "CPM" +"3603" "HCK" +"3604" "SSH1" +"3605" "GRHPR" +"3606" "RP11-22P6.2" +"3607" "NCBP2-AS2" +"3608" "ZNF133" +"3609" "SAMD1" +"3610" "ELOVL4" +"3611" "ZNF749" +"3612" "COX4I1" +"3613" "KIAA1147" +"3614" "LAPTM4B" +"3615" "PRMT5" +"3616" "LARP4" +"3617" "HIST1H1B" +"3618" "CD300C" +"3619" "PDZD11" +"3620" "MACF1" +"3621" "COQ2" +"3622" "IFT52" +"3623" "CLUAP1" +"3624" "NOL9" +"3625" "LXN" +"3626" "FNIP2" +"3627" "LINC00426" +"3628" "NBPF12" +"3629" "RNGTT" +"3630" "CBFA2T3" +"3631" "RAD51D" +"3632" "FAM129C" +"3633" "ZNHIT6" +"3634" "SMG9" +"3635" "MARCH8" +"3636" "PPP1R12C" +"3637" "HIVEP3" +"3638" "SULF2" +"3639" "OSBPL1A" +"3640" "SH2B2" +"3641" "ARFGAP2" +"3642" "GOT1" +"3643" "OLIG1" +"3644" "TRMT112" +"3645" "MSTO1" +"3646" "USP6NL" +"3647" "AC009506.1" +"3648" "LRR1" +"3649" "CCL20" +"3650" "MLYCD" +"3651" "ROPN1L" +"3652" "TRIM16" +"3653" "DNAJC18" +"3654" "GFPT1" +"3655" "CPT1A" +"3656" "ZNF324" +"3657" "ENTPD5" +"3658" "SRGAP2" +"3659" "CPNE7" +"3660" "CD59" +"3661" "ABHD17A" +"3662" "FBF1" +"3663" "RP5-1125A11.1" +"3664" "ARHGAP33" +"3665" "PTGER4" +"3666" "MUTYH" +"3667" "RNF207" +"3668" "ARHGEF19" +"3669" "TMTC2" +"3670" "NCR1" +"3671" "REG4" +"3672" "CACNA1I" +"3673" "RP11-126K1.6" +"3674" "CENPO" +"3675" "F5" +"3676" "VEGFA" +"3677" "AC061992.2" +"3678" "HK2" +"3679" "CDK12" +"3680" "TMEM194B" +"3681" "DCTPP1" +"3682" "GCLC" +"3683" "RP11-10K16.1" +"3684" "NT5E" +"3685" "CD69" +"3686" "MMS22L" +"3687" "EHMT1" +"3688" "WASL" +"3689" "POLR2A" +"3690" "WDR91" +"3691" "SYF2" +"3692" "CXorf65" +"3693" "SLC25A43" +"3694" "PRSS23" +"3695" "AMPD3" +"3696" "ZNF408" +"3697" "CTNND1" +"3698" "RP11-23P13.6" +"3699" "METTL1" +"3700" "AACS" +"3701" "KATNAL1" +"3702" "CENPQ" +"3703" "ARHGEF7" +"3704" "ZNF598" +"3705" "LINC00937" +"3706" "RP11-505K9.1" +"3707" "ZNF287" +"3708" "NCLN" +"3709" "NDC80" +"3710" "GCH1" +"3711" "HSD11B1L" +"3712" "CMPK1" +"3713" "BRD1" +"3714" "DENND5B" +"3715" "SNAP23" +"3716" "PSMB7" +"3717" "TMED9" +"3718" "CTB-152G17.6" +"3719" "HSP90AB1" +"3720" "LINC00886" +"3721" "UPF3B" +"3722" "CCDC28B" +"3723" "STK38L" +"3724" "CD7" +"3725" "RNASE2" +"3726" "MR1" +"3727" "LSP1" +"3728" "MZT1" +"3729" "RP11-169K16.9" +"3730" "TOR2A" +"3731" "TSPAN13" +"3732" "GUK1" +"3733" "PSMB9" +"3734" "TRAK1" +"3735" "HCAR2" +"3736" "KCNN4" +"3737" "KIAA0226L" +"3738" "RPS17" +"3739" "ZNF264" +"3740" "SLC27A5" +"3741" "SETDB1" +"3742" "NACC1" +"3743" "TPT1" +"3744" "LINC-PINT" +"3745" "CCNB2" +"3746" "SEPT6" +"3747" "TAB2" +"3748" "ARMC6" +"3749" "TNFRSF8" +"3750" "AC109826.1" +"3751" "COMMD9" +"3752" "MINOS1" +"3753" "THAP5" +"3754" "TFEC" +"3755" "NCF1" +"3756" "AGMAT" +"3757" "TMEM8B" +"3758" "NBPF1" +"3759" "SPTLC1" +"3760" "POLI" +"3761" "RP11-295G20.2" +"3762" "HMGN1" +"3763" "HLA-DOA" +"3764" "MTSS1" +"3765" "LRRN3" +"3766" "PHKG2" +"3767" "KLF9" +"3768" "NUFIP1" +"3769" "JUN" +"3770" "CTA-211A9.5" +"3771" "FLOT1" +"3772" "BANK1" +"3773" "MTRR" +"3774" "CC2D1B" +"3775" "TMEM66" +"3776" "ADC" +"3777" "TTC22" +"3778" "CCDC24" +"3779" "MPZ" +"3780" "TTC21B" +"3781" "DHFRL1" +"3782" "PRRT3" +"3783" "FANCD2" +"3784" "RP11-553L6.5" +"3785" "SEPSECS" +"3786" "TPRG1" +"3787" "CRIPAK" +"3788" "RP11-102N12.3" +"3789" "HIST1H4E" +"3790" "LIN54" +"3791" "ANO9" +"3792" "NOTCH4" +"3793" "AC091729.9" +"3794" "CKAP5" +"3795" "FOLR2" +"3796" "MTURN" +"3797" "ARMCX1" +"3798" "PTPRO" +"3799" "PKIA" +"3800" "ZFYVE26" +"3801" "RP11-318E3.9" +"3802" "ZSCAN32" +"3803" "PLCE1" +"3804" "SPATA33" +"3805" "TCP11L1" +"3806" "HOXB4" +"3807" "RAD51AP1" +"3808" "HAL" +"3809" "HEATR6" +"3810" "CENPJ" +"3811" "C19orf82" +"3812" "RASL11A" +"3813" "OLFM2" +"3814" "RP11-841O20.2" +"3815" "ASB2" +"3816" "CTA-292E10.6" +"3817" "PER3" +"3818" "C17orf58" +"3819" "COL9A2" +"3820" "AC132872.2" +"3821" "FLVCR1" +"3822" "RP11-535A5.1" +"3823" "SUSD4" +"3824" "EBI3" +"3825" "ARRDC5" +"3826" "TTL" +"3827" "LMBRD2" +"3828" "LARGE" +"3829" "ABCB1" +"3830" "CDC42EP1" +"3831" "CXorf24" +"3832" "SPSB1" +"3833" "FBXO48" +"3834" "FYCO1" +"3835" "ZFP91" +"3836" "ERCC8" +"3837" "IFT46" +"3838" "KBTBD7" +"3839" "PPP1R17" +"3840" "CDC14B" +"3841" "RP11-473M20.9" +"3842" "CTB-55O6.12" +"3843" "RP11-536K7.3" +"3844" "IGSF22" +"3845" "ZNF569" +"3846" "AC013264.2" +"3847" "RACGAP1" +"3848" "DPH1" +"3849" "PREPL" +"3850" "GOLGA2" +"3851" "PRR11" +"3852" "ANAPC16" +"3853" "SLC22A4" +"3854" "ZNF436" +"3855" "AP2A1" +"3856" "HIGD2A" +"3857" "UGGT1" +"3858" "PRKAR1B" +"3859" "PRMT2" +"3860" "FAM86A" +"3861" "DENND1A" +"3862" "PPM1F" +"3863" "ZCWPW1" +"3864" "DNAJC11" +"3865" "DEAF1" +"3866" "GALNT10" +"3867" "DHRS13" +"3868" "FZR1" +"3869" "CEP128" +"3870" "N4BP1" +"3871" "ARHGEF10L" +"3872" "TPM3" +"3873" "LRRIQ3" +"3874" "TMCO4" +"3875" "RPL10A" +"3876" "S100A13" +"3877" "NME7" +"3878" "SETD8" +"3879" "CTNS" +"3880" "RNF144A" +"3881" "GPR160" +"3882" "RASSF1" +"3883" "SPINK2" +"3884" "DDX3X" +"3885" "VARS2" +"3886" "FAM220A" +"3887" "HLA-F" +"3888" "HMGA1P4" +"3889" "CCDC50" +"3890" "TSC1" +"3891" "PTDSS2" +"3892" "LARP1" +"3893" "OSBP" +"3894" "TAGLN" +"3895" "OTUD5" +"3896" "ZNF646" +"3897" "ALYREF" +"3898" "GNA15" +"3899" "GPR82" +"3900" "ZNF678" +"3901" "TET3" +"3902" "TNRC18" +"3903" "RP11-383J24.6" +"3904" "RTKN2" +"3905" "NDUFC2" +"3906" "DOK1" +"3907" "KIAA1731" +"3908" "TMPO-AS1" +"3909" "FBXW8" +"3910" "MED29" +"3911" "KLF10" +"3912" "LPCAT2" +"3913" "ANG" +"3914" "MTHFSD" +"3915" "PCBP4" +"3916" "COPE" +"3917" "AC016629.8" +"3918" "GGCT" +"3919" "RP1-43E13.2" +"3920" "ZNF566" +"3921" "LILRA6" +"3922" "RP11-117D22.2" +"3923" "KCNK12" +"3924" "GK5" +"3925" "RP11-395A13.2" +"3926" "BBS7" +"3927" "SLC2A9" +"3928" "ABL1" +"3929" "WDR19" +"3930" "DLEU1" +"3931" "DOCK9" +"3932" "RP11-420G6.4" +"3933" "MYB" +"3934" "RNF157" +"3935" "CHAF1A" +"3936" "ZNF117" +"3937" "CD8A" +"3938" "PAXIP1" +"3939" "ZXDA" +"3940" "BRWD3" +"3941" "EIF3I" +"3942" "ANGPT2" +"3943" "BCL11B" +"3944" "CEBPA" +"3945" "RP11-11N9.4" +"3946" "WDR33" +"3947" "NFIL3" +"3948" "ANKRD16" +"3949" "RP5-1091N2.9" +"3950" "SLC35F2" +"3951" "MSANTD2" +"3952" "RP11-637A17.2" +"3953" "VARS" +"3954" "PAWR" +"3955" "TTC8" +"3956" "GADD45GIP1" +"3957" "RP11-649E7.5" +"3958" "ANKRD9" +"3959" "FANCI" +"3960" "MYL6B" +"3961" "CCDC18" +"3962" "RP11-4F5.2" +"3963" "CROT" +"3964" "IGF1R" +"3965" "AC016586.1" +"3966" "NAGLU" +"3967" "RP13-516M14.4" +"3968" "WDR3" +"3969" "FAM189B" +"3970" "WDR7" +"3971" "RP11-104L21.3" +"3972" "TP53INP2" +"3973" "FLJ27365" +"3974" "RMDN2" +"3975" "FBXO2" +"3976" "LY75" +"3977" "AMMECR1L" +"3978" "OSGEPL1" +"3979" "GNB4" +"3980" "SCLY" +"3981" "AC062017.1" +"3982" "NDUFB2-AS1" +"3983" "STARD4" +"3984" "PM20D2" +"3985" "TMSB4Y" +"3986" "GLA" +"3987" "LRRC61" +"3988" "TLR8" +"3989" "ARPC3" +"3990" "ASPH" +"3991" "OSGIN2" +"3992" "RANBP6" +"3993" "IL2RA" +"3994" "ASRGL1" +"3995" "SNX30" +"3996" "UAP1L1" +"3997" "EXOC3" +"3998" "PYROXD2" +"3999" "KDELC2" +"4000" "ACAP2" diff --git a/rapids_singlecell/tests/test_autocorr.py b/rapids_singlecell/tests/test_autocorr.py new file mode 100644 index 00000000..4c9ff4bf --- /dev/null +++ b/rapids_singlecell/tests/test_autocorr.py @@ -0,0 +1,41 @@ +import pytest +from rapids_singlecell.gr import spatial_autocorr +import pandas as pd +from anndata import read_h5ad +from pathlib import Path +import numpy as np + +MORAN_I = "moranI" +GEARY_C = "gearyC" + + +@pytest.mark.parametrize("mode", ["moran", "geary"]) +def test_autocorr_consistency(mode): + file = Path(__file__).parent / Path("_data/dummy.h5ad") + dummy_adata = read_h5ad(file) + + spatial_autocorr(dummy_adata, mode=mode) + df1 = spatial_autocorr(dummy_adata, mode=mode, copy=True, n_perms=50) + df2 = spatial_autocorr(dummy_adata, mode=mode, copy=True, n_perms=50) + + idx_df = df1.index.values + idx_adata = dummy_adata[:, dummy_adata.var.highly_variable.values].var_names.values + + if mode == "moran": + UNS_KEY = MORAN_I + elif mode == "geary": + UNS_KEY = GEARY_C + + assert UNS_KEY in dummy_adata.uns.keys() + assert "pval_sim_fdr_bh" in df1 + assert "pval_norm_fdr_bh" in dummy_adata.uns[UNS_KEY] + assert dummy_adata.uns[UNS_KEY].columns.shape == (4,) + assert df1.columns.shape == (9,) + # test pval_norm same + np.testing.assert_allclose( + df1["pval_norm"].values, df2["pval_norm"].values, atol=1e-5, rtol=1e-5 + ) + # test highly variable + assert dummy_adata.uns[UNS_KEY].shape != df1.shape + # assert idx are sorted and contain same elements + assert not np.array_equal(idx_df, idx_adata) diff --git a/rapids_singlecell/tests/test_clustering.py b/rapids_singlecell/tests/test_clustering.py new file mode 100644 index 00000000..3baf62cf --- /dev/null +++ b/rapids_singlecell/tests/test_clustering.py @@ -0,0 +1,18 @@ +import pytest +import rapids_singlecell as rsc +from scanpy.datasets import pbmc68k_reduced + + +@pytest.fixture +def adata_neighbors(): + return pbmc68k_reduced() + + +def test_leiden_basic(adata_neighbors): + rsc.tl.leiden(adata_neighbors, use_weights=False) + rsc.tl.leiden(adata_neighbors, use_weights=True) + + +def test_louvain_basic(adata_neighbors): + rsc.tl.louvain(adata_neighbors, use_weights=False) + rsc.tl.louvain(adata_neighbors, use_weights=True) diff --git a/rapids_singlecell/tests/test_emdedding_density.py b/rapids_singlecell/tests/test_emdedding_density.py new file mode 100644 index 00000000..357bcf7e --- /dev/null +++ b/rapids_singlecell/tests/test_emdedding_density.py @@ -0,0 +1,21 @@ +import numpy as np +from anndata import AnnData +import rapids_singlecell as rsc + + +def test_embedding_density(): + # Test that density values are scaled + # Test that the highest value is in the middle for a grid layout + test_data = AnnData(X=np.ones((9, 10), dtype=np.float32)) + test_data.obsm["X_test"] = np.array( + [[x, y] for x in range(3) for y in range(3)], dtype=np.float32 + ) + rsc.tl.embedding_density(test_data, "test") + + max_dens = np.max(test_data.obs["test_density"]) + min_dens = np.min(test_data.obs["test_density"]) + max_idx = test_data.obs["test_density"].idxmax() + + assert max_idx == "4" + assert max_dens == 1 + assert min_dens == 0 diff --git a/rapids_singlecell/tests/test_hvg.py b/rapids_singlecell/tests/test_hvg.py new file mode 100644 index 00000000..bbeef89b --- /dev/null +++ b/rapids_singlecell/tests/test_hvg.py @@ -0,0 +1,323 @@ +import scanpy as sc +import numpy as np +import cupy as cp +import cupyx as cpx +import rapids_singlecell as rsc +from rapids_singlecell.cunnData import cunnData +import pandas as pd +import pytest + + +def test_highly_variable_genes_basic(): + cudata = cunnData(sc.datasets.blobs()) + + rsc.pp.highly_variable_genes(cudata) + + cudata = cunnData(sc.datasets.blobs()) + np.random.seed(0) + cudata.obs["batch"] = np.random.binomial(3, 0.5, size=(cudata.n_obs)) + cudata.obs["batch"] = cudata.obs["batch"].astype("category") + rsc.pp.highly_variable_genes(cudata, batch_key="batch") + assert "highly_variable_nbatches" in cudata.var.columns + assert "highly_variable_intersection" in cudata.var.columns + + cudata = cunnData(sc.datasets.blobs()) + batch = np.random.binomial(4, 0.5, size=(cudata.n_obs)) + cudata.obs["batch"] = batch + cudata.obs["batch"] = cudata.obs["batch"].astype("category") + rsc.pp.highly_variable_genes(cudata, batch_key="batch", n_top_genes=3) + assert "highly_variable_nbatches" in cudata.var.columns + assert cudata.var["highly_variable"].sum() == 3 + highly_var_first_layer = cudata.var["highly_variable"].copy() + + cudata = cunnData(sc.datasets.blobs()) + new_layer = cudata.X.toarray() + cp.random.shuffle(new_layer) + cudata.layers["test_layer"] = cpx.scipy.sparse.csr_matrix(new_layer) + cudata.obs["batch"] = batch + cudata.obs["batch"] = cudata.obs["batch"].astype("category") + rsc.pp.highly_variable_genes( + cudata, batch_key="batch", n_top_genes=3, layer="test_layer" + ) + assert "highly_variable_nbatches" in cudata.var.columns + assert cudata.var["highly_variable"].sum() == 3 + assert (highly_var_first_layer != cudata.var["highly_variable"]).any() + + rsc.pp.highly_variable_genes(cudata) + no_batch_hvg = cudata.var.highly_variable.copy() + assert no_batch_hvg.any() + cudata.obs["batch"] = "batch" + cudata.obs["batch"] = cudata.obs["batch"].astype("category") + rsc.pp.highly_variable_genes(cudata, batch_key="batch") + assert np.all(no_batch_hvg == cudata.var.highly_variable) + assert np.all(cudata.var.highly_variable_intersection == cudata.var.highly_variable) + + cudata.obs["batch"] = "a" + cudata.obs.batch.loc[::2] = "b" + rsc.pp.highly_variable_genes(cudata, batch_key="batch") + assert cudata.var["highly_variable"].any() + + colnames = [ + "means", + "dispersions", + "dispersions_norm", + "highly_variable_nbatches", + "highly_variable_intersection", + "highly_variable", + ] + + assert np.all(np.isin(colnames, cudata.var.columns)) + + +from pathlib import Path + +FILE = Path(__file__).parent / Path("_scripts/seurat_hvg.csv") +FILE_V3 = Path(__file__).parent / Path("_scripts/seurat_hvg_v3.csv.gz") +FILE_V3_BATCH = Path(__file__).parent / Path("_scripts/seurat_hvg_v3_batch.csv") + + +def test_higly_variable_genes_compare_to_seurat(): + seurat_hvg_info = pd.read_csv(FILE, sep=" ") + + pbmc = sc.datasets.pbmc68k_reduced() + pbmc.X = pbmc.raw.X + pbmc.var_names_make_unique() + pbmc = rsc.cunnData.cunnData(pbmc) + + rsc.pp.normalize_total(pbmc, target_sum=1e4) + rsc.pp.log1p(pbmc) + rsc.pp.highly_variable_genes( + pbmc, flavor="seurat", min_mean=0.0125, max_mean=3, min_disp=0.5 + ) + + np.testing.assert_array_equal( + seurat_hvg_info["highly_variable"], pbmc.var["highly_variable"] + ) + + # (still) Not equal to tolerance rtol=2e-05, atol=2e-05 + # np.testing.assert_allclose(4, 3.9999, rtol=2e-05, atol=2e-05) + np.testing.assert_allclose( + seurat_hvg_info["means"], + pbmc.var["means"], + rtol=2e-05, + atol=2e-05, + ) + np.testing.assert_allclose( + seurat_hvg_info["dispersions"], + pbmc.var["dispersions"], + rtol=2e-05, + atol=2e-05, + ) + np.testing.assert_allclose( + seurat_hvg_info["dispersions_norm"], + pbmc.var["dispersions_norm"], + rtol=2e-05, + atol=2e-05, + ) + + +def test_higly_variable_genes_compare_to_seurat_v3(): + seurat_hvg_info = pd.read_csv( + FILE_V3, sep=" ", dtype={"variances_norm": np.float64} + ) + + pbmc = sc.datasets.pbmc3k() + pbmc.var_names_make_unique() + pbmc = rsc.cunnData.cunnData(pbmc) + + rsc.pp.highly_variable_genes(pbmc, n_top_genes=1000, flavor="seurat_v3") + + np.testing.assert_array_equal( + seurat_hvg_info["highly_variable"], pbmc.var["highly_variable"] + ) + np.testing.assert_allclose( + seurat_hvg_info["variances"], + pbmc.var["variances"], + rtol=2e-05, + atol=2e-05, + ) + + batch = np.zeros((pbmc.shape[0]), dtype=int) + batch[1500:] = 1 + pbmc.obs["batch"] = batch + rsc.pp.highly_variable_genes( + pbmc, n_top_genes=4000, flavor="seurat_v3", batch_key="batch" + ) + df = pbmc.var.copy() + df.sort_values( + ["highly_variable_nbatches", "highly_variable_rank"], + ascending=[False, True], + na_position="last", + inplace=True, + ) + df = df.iloc[:4000] + seurat_hvg_info_batch = pd.read_csv( + FILE_V3_BATCH, sep=" ", dtype={"variances_norm": np.float64} + ) + + # ranks might be slightly different due to many genes having same normalized var + seu = pd.Index(seurat_hvg_info_batch["x"].values) + assert len(seu.intersection(df.index)) / 4000 > 0.95 + + rsc.pp.log1p(pbmc) + with pytest.warns( + UserWarning, + match="`flavor='seurat_v3'` expects raw count data, but non-integers were found.", + ): + rsc.pp.highly_variable_genes(pbmc, n_top_genes=1000, flavor="seurat_v3") + + +def test_seurat_v3_mean_var_output_with_batchkey(): + pbmc = sc.datasets.pbmc3k() + pbmc.var_names_make_unique() + pbmc = rsc.cunnData.cunnData(pbmc) + + n_cells = pbmc.shape[0] + batch = np.zeros((n_cells), dtype=int) + batch[1500:] = 1 + pbmc.obs["batch"] = batch + + # true_mean, true_var = _get_mean_var(pbmc.X) + true_mean = cp.mean(pbmc.X.toarray().astype(cp.float64), axis=0) + true_var = cp.var( + pbmc.X.toarray().astype(cp.float64), axis=0, dtype=np.float64, ddof=1 + ) + + rsc.pp.highly_variable_genes( + pbmc, batch_key="batch", flavor="seurat_v3", n_top_genes=4000 + ) + cp.testing.assert_allclose(true_mean, pbmc.var["means"], rtol=2e-05, atol=2e-05) + cp.testing.assert_allclose(true_var, pbmc.var["variances"], rtol=2e-05, atol=2e-05) + + +def test_cellranger_n_top_genes_warning(): + X = np.random.poisson(2, (100, 30)) + cudata = rsc.cunnData.cunnData(X=X) + rsc.pp.normalize_total(cudata, target_sum=1e4) + rsc.pp.log1p(cudata) + + with pytest.warns( + UserWarning, + match="`n_top_genes` > number of normalized dispersions, returning all genes with normalized dispersions.", + ): + rsc.pp.highly_variable_genes(cudata, n_top_genes=1000, flavor="cell_ranger") + + +def _check_pearson_hvg_columns(output_df, n_top_genes): + assert pd.api.types.is_float_dtype(output_df["residual_variances"].dtype) + + assert output_df["highly_variable"].values.dtype is np.dtype("bool") + assert np.sum(output_df["highly_variable"]) == n_top_genes + + assert np.nanmax(output_df["highly_variable_rank"].values) <= n_top_genes - 1 + + +@pytest.mark.parametrize("clip", [None, np.Inf, 30]) +@pytest.mark.parametrize("theta", [100, np.Inf]) +@pytest.mark.parametrize("n_top_genes", [100, 200]) +def test_highly_variable_genes_pearson_residuals_general(clip, theta, n_top_genes): + adata = sc.datasets.pbmc3k().copy() + adata = adata[:1000, :500] + np.random.seed(42) + adata.obs["batch"] = np.random.randint(0, 3, size=adata.shape[0]) + sc.pp.filter_genes(adata, min_cells=1) + # cleanup var + del adata.var + + cudata = rsc.cunnData.cunnData(adata) + + # compute reference output + residuals_reference = rsc.pp.normalize_pearson_residuals( + cudata, clip=clip, theta=theta, inplace=False + ) + residual_variances_reference = cp.var(residuals_reference, axis=0) + + # compute output to be tested + rsc.pp.highly_variable_genes( + cudata, + flavor="pearson_residuals", + n_top_genes=n_top_genes, + clip=clip, + theta=theta, + ) + + # check output is complete + for key in [ + "highly_variable", + "means", + "variances", + "residual_variances", + "highly_variable_rank", + ]: + assert key in cudata.var.columns + + assert np.allclose( + cudata.var["residual_variances"].values, residual_variances_reference + ) + + # check hvg flag + hvg_idx = np.where(cudata.var["highly_variable"])[0] + topn_idx = np.sort( + np.argsort(-cudata.var["residual_variances"].values)[:n_top_genes] + ) + assert np.all(hvg_idx == topn_idx) + + # check ranks + assert np.nanmin(cudata.var["highly_variable_rank"].values) == 0 + + # more general checks on ranks, hvg flag and residual variance + _check_pearson_hvg_columns(cudata.var, n_top_genes) + + +@pytest.mark.parametrize("n_top_genes", [100, 200]) +def test_highly_variable_genes_pearson_residuals_batch(n_top_genes): + adata = sc.datasets.pbmc3k().copy() + adata = adata[:1000, :500] + np.random.seed(42) + adata.obs["batch"] = np.random.randint(0, 3, size=adata.shape[0]) + sc.pp.filter_genes(adata, min_cells=1) + # cleanup var + del adata.var + + cudata = rsc.cunnData.cunnData(adata) + n_genes = cudata.shape[1] + + rsc.pp.highly_variable_genes( + cudata, + flavor="pearson_residuals", + n_top_genes=n_top_genes, + batch_key="batch", + ) + + # check output is complete + for key in [ + "highly_variable", + "means", + "variances", + "residual_variances", + "highly_variable_rank", + "highly_variable_nbatches", + "highly_variable_intersection", + ]: + assert key in cudata.var.keys() + + # general checks on ranks, hvg flag and residual variance + _check_pearson_hvg_columns(cudata.var, n_top_genes) + + # check intersection flag + nbatches = len(np.unique(cudata.obs["batch"])) + assert cudata.var["highly_variable_intersection"].values.dtype is np.dtype("bool") + assert np.sum(cudata.var["highly_variable_intersection"]) <= n_top_genes * nbatches + assert np.all( + cudata.var["highly_variable"][cudata.var.highly_variable_intersection] + ) + + # check ranks (with batch_key these are the median of within-batch ranks) + assert pd.api.types.is_float_dtype(cudata.var["highly_variable_rank"].dtype) + + # check nbatches + assert cudata.var["highly_variable_nbatches"].values.dtype is np.dtype("int") + assert np.min(cudata.var["highly_variable_nbatches"].values) >= 0 + assert np.max(cudata.var["highly_variable_nbatches"].values) <= nbatches + + assert len(cudata.var) == n_genes diff --git a/rapids_singlecell/tests/test_ligrec.py b/rapids_singlecell/tests/test_ligrec.py new file mode 100644 index 00000000..69be230f --- /dev/null +++ b/rapids_singlecell/tests/test_ligrec.py @@ -0,0 +1,148 @@ +import sys +from itertools import product +from time import time +from typing import TYPE_CHECKING, Mapping, Optional, Sequence, Tuple + +import numpy as np +import pandas as pd +import pytest +import scanpy as sc +from anndata import AnnData, read_h5ad +from pandas.testing import assert_frame_equal +from scanpy import settings as s +from scanpy.datasets import blobs +from itertools import product + +from rapids_singlecell.gr import ligrec +from pathlib import Path + +_CK = "leiden" +Interactions_t = Tuple[Sequence[str], Sequence[str]] +Complexes_t = Sequence[Tuple[str, str]] + + +@pytest.fixture() +def adata() -> AnnData: + file = Path(__file__).parent / Path("_data/test_data.h5ad") + adata = read_h5ad(file) + adata.raw = adata.copy() + return adata + + +@pytest.fixture() +def interactions(adata: AnnData) -> Tuple[Sequence[str], Sequence[str]]: + return tuple(product(adata.raw.var_names[:5], adata.raw.var_names[:5])) + + +class TestInvalidBehavior: + def test_not_adata(self, interactions: Interactions_t): + with pytest.raises( + TypeError, match=r"Expected `adata` to be of type `anndata.AnnData`" + ): + ligrec(None, _CK, interactions=interactions) + + def test_adata_no_raw(self, adata: AnnData, interactions: Interactions_t): + del adata.raw + with pytest.raises(AttributeError, match=r"No `.raw` attribute"): + ligrec(adata, _CK, use_raw=True, interactions=interactions) + + def test_raw_has_different_n_obs( + self, adata: AnnData, interactions: Interactions_t + ): + adata.raw = sc.datasets.blobs(n_observations=adata.n_obs + 1) + # raise below happend with anndata < 0.9 + # with pytest.raises(ValueError, match=rf"Expected `{adata.n_obs}` cells in `.raw`"): + with pytest.raises( + ValueError, + match=rf"Index length mismatch: {adata.n_obs} vs. {adata.n_obs + 1}", + ): + ligrec(adata, _CK, interactions=interactions) + + def test_invalid_cluster_key(self, adata: AnnData, interactions: Interactions_t): + with pytest.raises(KeyError, match=r"Cluster key `foobar` not found"): + ligrec(adata, cluster_key="foobar", interactions=interactions) + + def test_cluster_key_is_not_categorical( + self, adata: AnnData, interactions: Interactions_t + ): + adata.obs[_CK] = adata.obs[_CK].astype("string") + with pytest.raises( + TypeError, match=rf"Expected `adata.obs\[{_CK!r}\]` to be `categorical`" + ): + ligrec(adata, _CK, interactions=interactions) + + def test_only_1_cluster(self, adata: AnnData, interactions: Interactions_t): + adata.obs["foo"] = 1 + adata.obs["foo"] = adata.obs["foo"].astype("category") + with pytest.raises( + ValueError, match=rf"Expected at least `2` clusters, found `1`." + ): + ligrec(adata, "foo", interactions=interactions) + + def test_invalid_complex_policy(self, adata: AnnData, interactions: Interactions_t): + with pytest.raises( + ValueError, match=rf"Invalid option `'foobar'` for `ComplexPolicy`." + ): + ligrec(adata, _CK, interactions=interactions, complex_policy="foobar") + + def test_invalid_fdr_axis(self, adata: AnnData, interactions: Interactions_t): + with pytest.raises( + ValueError, match=r"Invalid option `foobar` for `CorrAxis`." + ): + ligrec( + adata, + _CK, + interactions=interactions, + corr_axis="foobar", + corr_method="fdr_bh", + ) + + def test_too_few_permutations(self, adata: AnnData, interactions: Interactions_t): + with pytest.raises(ValueError, match=r"Expected `n_perms` to be positive"): + ligrec(adata, _CK, interactions=interactions, n_perms=0) + + def test_invalid_interactions_type(self, adata: AnnData): + with pytest.raises(TypeError, match=r"Expected either a `pandas.DataFrame`"): + ligrec(adata, _CK, interactions=42) + + def test_invalid_interactions_dict(self, adata: AnnData): + with pytest.raises(KeyError, match=r"Column .* is not in `interactions`."): + ligrec(adata, _CK, interactions={"foo": ["foo"], "target": ["bar"]}) + with pytest.raises(KeyError, match=r"Column .* is not in `interactions`."): + ligrec(adata, _CK, interactions={"source": ["foo"], "bar": ["bar"]}) + + def test_invalid_interactions_dataframe( + self, adata: AnnData, interactions: Interactions_t + ): + df = pd.DataFrame(interactions, columns=["foo", "target"]) + with pytest.raises(KeyError, match=r"Column .* is not in `interactions`."): + ligrec(adata, _CK, interactions=df) + + df = pd.DataFrame(interactions, columns=["source", "bar"]) + with pytest.raises(KeyError, match=r"Column .* is not in `interactions`."): + ligrec(adata, _CK, interactions=df) + + def test_interactions_invalid_sequence( + self, adata: AnnData, interactions: Interactions_t + ): + interactions += ("foo", "bar", "bar") # type: ignore + with pytest.raises( + ValueError, match=r"Not all interactions are of length `2`." + ): + ligrec(adata, _CK, interactions=interactions) + + def test_interactions_only_invalid_names(self, adata: AnnData): + with pytest.raises(ValueError, match=r"After filtering by genes"): + ligrec(adata, _CK, interactions=["foo", "bar", "baz"]) + + def test_invalid_clusters(self, adata: AnnData, interactions: Interactions_t): + with pytest.raises(ValueError, match=r"Invalid cluster `'foo'`."): + ligrec(adata, _CK, interactions=interactions, clusters=["foo"]) + + def test_invalid_clusters_mix(self, adata: AnnData, interactions: Interactions_t): + with pytest.raises( + ValueError, match=r"Expected a `tuple` of length `2`, found `3`." + ): + ligrec( + adata, _CK, interactions=interactions, clusters=["foo", ("bar", "baz")] + ) diff --git a/rapids_singlecell/tests/test_normalization.py b/rapids_singlecell/tests/test_normalization.py new file mode 100644 index 00000000..a54d71f5 --- /dev/null +++ b/rapids_singlecell/tests/test_normalization.py @@ -0,0 +1,81 @@ +import numpy as np +import cupy as cp +from anndata import AnnData +import rapids_singlecell as rsc +from rapids_singlecell.cunnData import cunnData +import pytest +from scipy.sparse import csr_matrix + +X_total = np.array([[1, 0], [3, 0], [5, 6]]) + + +def test_normalize_total(): + adata = AnnData(X_total, dtype=np.float32) + cudata = cunnData(adata) + rsc.pp.normalize_total(cudata, target_sum=1) + cp.testing.assert_allclose( + cp.ravel(cudata.X.sum(axis=1)), np.ones(cudata.shape[0], dtype=np.float32) + ) + + +def test_normalize_total_layers(): + adata = AnnData(X_total) + cudata = cunnData(adata) + cudata.layers["layer"] = cudata.X.copy() + + rsc.pp.normalize_total(cudata, target_sum=1, layer="layer") + assert np.allclose( + cudata.layers["layer"].sum(axis=1), np.ones(cudata.shape[0], dtype=np.float32) + ) + + +@pytest.mark.parametrize( + "sparsity_func", [cp.array, csr_matrix], ids=lambda x: x.__name__ +) +@pytest.mark.parametrize("dtype", ["float32"]) +@pytest.mark.parametrize("theta", [0.01, 1.0, 100, np.Inf]) +@pytest.mark.parametrize("clip", [None, 1.0, np.Inf]) +def test_normalize_pearson_residuals_values(sparsity_func, dtype, theta, clip): + # toy data + X = np.array([[3, 6], [2, 4], [1, 0]]) + ns = np.sum(X, axis=1) + ps = np.sum(X, axis=0) / np.sum(X) + mu = np.outer(ns, ps) + + # compute reference residuals + if np.isinf(theta): + # Poisson case + residuals_reference = (X - mu) / np.sqrt(mu) + else: + # NB case + residuals_reference = (X - mu) / np.sqrt(mu + mu**2 / theta) + + # compute output to test + cudata = cunnData(X=sparsity_func(X, dtype=cp.float32)) + output_X = rsc.pp.normalize_pearson_residuals( + cudata, theta=theta, clip=clip, inplace=False + ) + + rsc.pp.normalize_pearson_residuals(cudata, theta=theta, clip=clip, inplace=True) + assert np.all(np.isin(["pearson_residuals_normalization"], list(cudata.uns.keys()))) + assert np.all( + np.isin( + ["theta", "clip", "computed_on"], + list(cudata.uns["pearson_residuals_normalization"].keys()), + ) + ) + + # test against inplace + cp.testing.assert_array_equal(cudata.X, output_X) + if clip is None: + # default clipping: compare to sqrt(n) threshold + clipping_threshold = np.sqrt(cudata.shape[0]).astype(np.float32) + assert np.max(output_X) <= clipping_threshold + assert np.min(output_X) >= -clipping_threshold + elif np.isinf(clip): + # no clipping: compare to raw residuals + assert np.allclose(output_X, residuals_reference) + else: + # custom clipping: compare to custom threshold + assert np.max(output_X) <= clip + assert np.min(output_X) >= -clip diff --git a/rapids_singlecell/tests/test_pca.py b/rapids_singlecell/tests/test_pca.py new file mode 100644 index 00000000..7554f774 --- /dev/null +++ b/rapids_singlecell/tests/test_pca.py @@ -0,0 +1,106 @@ +import rapids_singlecell as rsc +import numpy as np +import pytest +from anndata import AnnData +from scanpy.datasets import pbmc3k_processed + +A_list = [ + [0, 0, 7, 0, 0], + [8, 5, 0, 2, 0], + [6, 0, 0, 2, 5], + [0, 0, 0, 1, 0], + [8, 8, 2, 1, 0], + [0, 0, 0, 4, 5], +] + +A_pca = np.array( + [ + [-4.4783009, 5.55508466, 1.73111572, -0.06029139, 0.17292555], + [5.4855141, -0.42651191, -0.74776055, -0.74532146, 0.74633582], + [0.01161428, -4.0156662, 2.37252748, -1.33122372, -0.29044446], + [-3.61934397, 0.48525412, -2.96861931, -1.16312545, -0.33230607], + [7.14050048, 1.86330409, -0.05786325, 1.25045782, -0.50213107], + [-4.53998399, -3.46146476, -0.32940009, 2.04950419, 0.20562023], + ] +) + +A_svd = np.array( + [ + [-0.77034038, -2.00750922, 6.64603489, -0.39669256, -0.22212097], + [-9.47135856, -0.6326006, -1.33787112, -0.24894361, -1.02044665], + [-5.90007339, 4.99658727, 0.70712592, -2.15188849, 0.30430008], + [-0.19132409, 0.42172251, 0.11169531, 0.50977966, -0.71637566], + [-11.1286238, -2.73045559, 0.08040596, 1.06850585, 0.74173764], + [-1.50180389, 5.56886849, 1.64034442, 2.24476032, -0.05109001], + ] +) + + +def test_pca_transform(): + A = np.array(A_list).astype("float32") + A_pca_abs = np.abs(A_pca) + A_svd_abs = np.abs(A_svd) + + adata = AnnData(A) + + rsc.pp.pca(adata, n_comps=4, zero_center=True) + + assert np.linalg.norm(A_pca_abs[:, :4] - np.abs(adata.obsm["X_pca"])) < 2e-05 + + rsc.pp.pca(adata, n_comps=4, zero_center=False) + assert np.linalg.norm(A_svd_abs[:, :4] - np.abs(adata.obsm["X_pca"])) < 2e-05 + + +def test_pca_shapes(): + adata = AnnData(np.random.randn(30, 20)) + rsc.pp.pca(adata) + assert adata.obsm["X_pca"].shape == (30, 19) + + adata = AnnData(np.random.randn(20, 30)) + rsc.pp.pca(adata) + assert adata.obsm["X_pca"].shape == (20, 19) + with pytest.raises(ValueError): + rsc.pp.pca(adata, n_comps=100) + + +def test_pca_chunked(): + chunked = pbmc3k_processed() + default = pbmc3k_processed() + chunked.X = chunked.X.astype(np.float64) + default.X = default.X.astype(np.float64) + rsc.pp.pca(chunked, chunked=True, chunk_size=chunked.shape[0]) + rsc.pp.pca(default) + + np.testing.assert_allclose( + np.abs(chunked.obsm["X_pca"]), + np.abs(default.obsm["X_pca"]), + rtol=1e-7, + atol=1e-6, + ) + + np.testing.assert_allclose( + np.abs(chunked.varm["PCs"]), np.abs(default.varm["PCs"]), rtol=1e-7, atol=1e-6 + ) + np.testing.assert_allclose( + np.abs(chunked.uns["pca"]["variance"]), np.abs(default.uns["pca"]["variance"]) + ) + + np.testing.assert_allclose( + np.abs(chunked.uns["pca"]["variance_ratio"]), + np.abs(default.uns["pca"]["variance_ratio"]), + ) + + +def test_pca_reproducible(): + pbmc = pbmc3k_processed() + pbmc.X = pbmc.X.astype(np.float32) + rsc.tl.pca(pbmc) + a = pbmc.obsm["X_pca"] + rsc.tl.pca(pbmc) + b = pbmc.obsm["X_pca"] + np.array_equal(a, b) + cpbmc = rsc.cunnData.cunnData(pbmc) + cpbmc.X = cpbmc.X.toarray() + rsc.tl.pca(cpbmc) + c = pbmc.obsm["X_pca"] + np.array_equal(a, c) diff --git a/rapids_singlecell/tests/test_preprocessing.py b/rapids_singlecell/tests/test_preprocessing.py new file mode 100644 index 00000000..7ec68b29 --- /dev/null +++ b/rapids_singlecell/tests/test_preprocessing.py @@ -0,0 +1,21 @@ +import scanpy as sc +import rapids_singlecell as rsc +import cupy as cp + + +def test_scale(): + adata = sc.datasets.pbmc68k_reduced() + adata.X = adata.raw.X + + v = adata[:, 0 : adata.shape[1] // 2] + cudata = rsc.cunnData.cunnData(v) + cudata.X = cudata.X.toarray().astype(cp.float64) + + rsc.pp.scale(cudata) + + cp.testing.assert_allclose( + cudata.X.var(axis=0), cp.ones(cudata.shape[1]), atol=0.01 + ) + cp.testing.assert_allclose( + cudata.X.mean(axis=0), cp.zeros(cudata.shape[1]), atol=0.00001 + ) diff --git a/rapids_singlecell/tests/test_qc_metrics.py b/rapids_singlecell/tests/test_qc_metrics.py new file mode 100644 index 00000000..1e882014 --- /dev/null +++ b/rapids_singlecell/tests/test_qc_metrics.py @@ -0,0 +1,89 @@ +import scanpy as sc +import rapids_singlecell as rsc +from scipy import sparse +import numpy as np +import cupy as cp +from anndata import AnnData +from cupyx.scipy import sparse as sparse_gpu +import pytest +import pandas as pd + + +def test_qc_metrics(): + cudata = rsc.cunnData.cunnData( + X=sparse.csr_matrix(np.random.binomial(100, 0.005, (1000, 1000))) + ) + cudata.var["mito"] = np.concatenate( + (np.ones(100, dtype=bool), np.zeros(900, dtype=bool)) + ) + cudata.var["negative"] = False + rsc.pp.calculate_qc_metrics(cudata, qc_vars=["mito", "negative"]) + assert (cudata.obs["n_genes_by_counts"] < cudata.shape[1]).all() + assert ( + cudata.obs["n_genes_by_counts"] >= cudata.obs["log1p_n_genes_by_counts"] + ).all() + assert (cudata.obs["total_counts"] == cp.ravel(cudata.X.sum(axis=1)).get()).all() + assert (cudata.obs["total_counts"] >= cudata.obs["log1p_total_counts"]).all() + assert ( + cudata.obs["total_counts_mito"] >= cudata.obs["log1p_total_counts_mito"] + ).all() + assert (cudata.obs["total_counts_negative"] == 0).all() + + for col in filter(lambda x: "negative" not in x, cudata.obs.columns): + assert (cudata.obs[col] >= 0).all() # Values should be positive or zero + assert (cudata.obs[col] != 0).any().all() # Nothing should be all zeros + if col.startswith("pct_counts_in_top"): + assert (cudata.obs[col] <= 100).all() + assert (cudata.obs[col] >= 0).all() + for col in cudata.var.columns: + assert (cudata.var[col] >= 0).all() + assert ( + cudata.var["mean_counts"] < cp.ravel(cudata.X.max(axis=0).toarray()).get() + ).all() + assert (cudata.var["mean_counts"] >= cudata.var["log1p_mean_counts"]).all() + assert (cudata.var["total_counts"] >= cudata.var["log1p_total_counts"]).all() + # Should return the same thing if run again + old_obs, old_var = cudata.obs.copy(), cudata.var.copy() + rsc.pp.calculate_qc_metrics(cudata, qc_vars=["mito", "negative"]) + assert set(cudata.obs.columns) == set(old_obs.columns) + assert set(cudata.var.columns) == set(old_var.columns) + for col in cudata.obs: + assert np.allclose(cudata.obs[col], old_obs[col]) + for col in cudata.var: + assert np.allclose(cudata.var[col], old_var[col]) + # with log1p=False + cudata = rsc.cunnData.cunnData( + X=sparse.csr_matrix(np.random.binomial(100, 0.005, (1000, 1000))) + ) + cudata.var["mito"] = np.concatenate( + (np.ones(100, dtype=bool), np.zeros(900, dtype=bool)) + ) + cudata.var["negative"] = False + rsc.pp.calculate_qc_metrics(cudata, qc_vars=["mito", "negative"], log1p=False) + assert not np.any(cudata.obs.columns.str.startswith("log1p_")) + assert not np.any(cudata.var.columns.str.startswith("log1p_")) + + +def adata_mito(): + a = np.random.binomial(100, 0.005, (1000, 1000)) + init_var = pd.DataFrame( + dict(mito=np.concatenate((np.ones(100, dtype=bool), np.zeros(900, dtype=bool)))) + ) + adata_dense = AnnData(X=a, var=init_var.copy()) + return adata_dense + + +@pytest.mark.parametrize( + "cls", [cp.array, sparse_gpu.csc_matrix, sparse_gpu.csr_matrix] +) +def test_qc_metrics_format(cls): + adata_dense = adata_mito() + cudata_dense = rsc.cunnData.cunnData(adata_dense) + rsc.pp.calculate_qc_metrics(cudata_dense, qc_vars=["mito"]) + cudata = rsc.cunnData.cunnData(adata_dense) + cudata.X = cudata.X + + rsc.pp.calculate_qc_metrics(cudata, qc_vars=["mito"]) + assert np.allclose(cudata.obs, cudata_dense.obs) + for col in cudata.var: # np.allclose doesn't like mix of types + assert np.allclose(cudata.var[col], cudata_dense.var[col]) diff --git a/rapids_singlecell/tests/test_rank_genes_groups_logreg.py b/rapids_singlecell/tests/test_rank_genes_groups_logreg.py new file mode 100644 index 00000000..6ddca046 --- /dev/null +++ b/rapids_singlecell/tests/test_rank_genes_groups_logreg.py @@ -0,0 +1,37 @@ +import numpy as np +import scanpy as sc +import rapids_singlecell as rsc + + +def test_rank_genes_groups_with_renamed_categories(): + adata = sc.datasets.blobs(n_variables=4, n_centers=3, n_observations=200) + assert np.allclose(adata.X[1], [9.214668, -2.6487126, 4.2020774, 0.51076424]) + adata.obs.blobs = adata.obs.blobs.astype("category") + # for method in ['logreg', 't-test']: + + rsc.tl.rank_genes_groups_logreg(adata, "blobs") + assert adata.uns["rank_genes_groups"]["names"].dtype.names == ("0", "1", "2") + assert adata.uns["rank_genes_groups"]["names"][0].tolist() == ("1", "3", "0") + + adata.rename_categories("blobs", ["Zero", "One", "Two"]) + assert adata.uns["rank_genes_groups"]["names"][0].tolist() == ("1", "3", "0") + + rsc.tl.rank_genes_groups_logreg(adata, "blobs") + assert adata.uns["rank_genes_groups"]["names"][0].tolist() == ("1", "3", "0") + assert adata.uns["rank_genes_groups"]["names"].dtype.names == ("Zero", "One", "Two") + + +def test_rank_genes_groups_with_renamed_categories_use_rep(): + adata = sc.datasets.blobs(n_variables=4, n_centers=3, n_observations=200) + assert np.allclose(adata.X[1], [9.214668, -2.6487126, 4.2020774, 0.51076424]) + adata.obs.blobs = adata.obs.blobs.astype("category") + + adata.layers["to_test"] = adata.X.copy() + adata.X = adata.X[::-1, :] + + rsc.tl.rank_genes_groups_logreg(adata, "blobs", layer="to_test", use_raw=False) + assert adata.uns["rank_genes_groups"]["names"].dtype.names == ("0", "1", "2") + assert adata.uns["rank_genes_groups"]["names"][0].tolist() == ("1", "3", "0") + + rsc.tl.rank_genes_groups_logreg(adata, "blobs") + assert not adata.uns["rank_genes_groups"]["names"][0].tolist() == ("3", "1", "0")