Skip to content

QuickStart

gx-Cai edited this page Jul 17, 2025 · 3 revisions

Quick Start Guide for the TopicVI

Installation

To install the TopicVI package, you can folow these steps:

  1. Install the pytorch package with the guidance from the official PyTorch website based on your hardware and operating system. Noticed that your should install the torch package with the version of 2.0 or later.

  2. Install the other required packages by running the following command in your terminal or command prompt:

    pip install -r requirements.txt
  3. Install the TopicVI package by running the following command in your terminal or command prompt:

     pip install -e .
import scanpy as sc
import numpy as np
import pandas as pd
import os
import scvi
import topicvi as tv

Preprare the data

# achive the pbmc dataset
adata = scvi.data.pbmc_dataset()
[34mINFO    [0m Downloading file at data/gene_info_pbmc.csv                                                               
Downloading...: 909it [00:01, 776.05it/s]                            
[34mINFO    [0m Downloading file at data/pbmc_metadata.pickle                                                             
Downloading...: 4001it [00:03, 1025.95it/s]                            
[34mINFO    [0m Downloading file at data/pbmc8k\filtered_gene_bc_matrices.tar.gz                                          
Downloading...: 37559it [00:33, 1111.97it/s]                             
[34mINFO    [0m Extracting tar file                                                                                       
[34mINFO    [0m Removing extracted data at data/pbmc8k/filtered_gene_bc_matrices\GRCh38                                   
[34mINFO    [0m Downloading file at data/pbmc4k\filtered_gene_bc_matrices.tar.gz                                          
Downloading...: 100%|██████████| 18424/18424.0 [00:16<00:00, 1091.47it/s]
[34mINFO    [0m Extracting tar file                                                                                       
[34mINFO    [0m Removing extracted data at data/pbmc4k/filtered_gene_bc_matrices\GRCh38                                   
sc.pp.filter_genes(adata, min_cells=1)
sc.pp.filter_cells(adata, min_genes=1)
adata.var_names_make_unique()
adata.obs_names_make_unique()
adata.var.set_index('gene_symbols', inplace=True)
adata.obs['str_labels'].unique()
array(['CD4 T cells', 'CD14+ Monocytes', 'CD8 T cells', 'B cells',
       'Other', 'Dendritic Cells', 'FCGR3A+ Monocytes', 'NK cells',
       'Megakaryocytes'], dtype=object)

preprocess the expression data

To minimize the memory usage, we recommend you to use preprocess_adata function in the TopicVI package to preprocess your data. This function will perform the following steps:

  1. Calculate the size factor for each cell.
  2. perform the quality control to remove the cells with low quality.
  3. Normalize the data, and log-transform the data.
  4. get HVGs (highly variable genes) based on the normalized data.
  5. reconvert the count data to the original format.
adata = tv.pp.preprocess_adata(adata, batch_key="batch", nhvg=2000)
Total number of cells: 11990
Number of cells after filtering of low quality cells: 11746

prepare the gene prior knowledge

In the TopicVI package, we provide a bunch of known gene sets.

In model, you should specify two kind of gene priors:

  1. cluster specific gene prior, like cell type specific gene prior.
  2. background gene prior, all others.
tv.prior.summary_of_builtin_priors()
        Summary of built-in priors:

        Cell Types Related:
        - CellMarkerDB. use `search_cellmarker_db` to search for cell markers.
        - ScTypeDB. use `search_sctype_db` to search for cell types.
        - Meta-Program. use `get_metaprogram` to get meta-programs.

        Common Used Annotations:
        (From Enrichr Database and MSigDB)
        use get_priors to get the gene sets, specify the source as below.
        - GO. (GOBP, GOMF, GOCC)
        - KEGG.
        - Reactome.
        - Hallmark.
        - Immune Related.
        - TF. 
        - Tissue. (Tissue specific gene sets from DAVID database)

        Others:
        - DEGenes. use `get_de_genes` to get differentially expressed genes.
        - Random. use `get_random_select_gs` to get random gene sets.
tv.prior.load_sctype_db()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
tissue_type cell_type positive_markers negative_markers cell_type_abbv
0 Immune system Pro-B cells CD27,IgD,CD24,PTPRC,PAX5,CD24,CD38,CD79A,DNTT,... NaN Pro-B
1 Immune system Pre-B cells CD19,CD27,IgD,CD24,PTPRC,PAX5,CD24,CD38,CD79A,... NaN Pre-B
2 Immune system Naive B cells CD19,IgD,CD38,CD24,CD20,MS4A1,PTPRC,PAX5,CD24,... NaN Naive B
3 Immune system Memory B cells CD19,CD27,IgD,CD38,CD24,CD20,MS4A1,PTPRC,PAX5,... NaN Memory B
4 Immune system Plasma B cells CD27,IgD,CD38,CD24,CD20,MS4A1,PTPRC,PAX5,CD24,... CD20,MS4A1 Plasma B
... ... ... ... ... ...
236 Eye Cancer cells EPCAM NaN Cancer
237 Lung Cancer stem cells ABCG2,ALCAM,ALDH1A1,BMI1,CD24,CD44,KIT,NANOG,N... NaN CSCs
238 Brain Cancer cells CD44,MBTPS2,PARP1 NaN Cancer
239 Brain Cancer stem cells FUT4,MSI1,NES,PROM1,SOX2,THY1 NaN CSCs
240 Kidney Cancer stem cells EPCAM NaN CSCs

241 rows × 5 columns

cell_markers = tv.prior.search_sctype_db(
    cell_type = '', # use all cell types
    tissue_type='Immune system',
)
Loading cell type database
Searching for tissue type Immune system
Searching for cell type 
cellmarkerdb_search_result = tv.prior.search_cellmarker_db(
    cell_types=['B cell', 'T cell', 'Monocyte', 'NK'],
    tissue_type='Peripheral blood',
)
Searching for cell markers with tissue type Peripheral blood and cancer type Normal
# for background knowledge, here we use Hallmark and Reactome gene sets
background_genesets = {
    **tv.prior.get_priors('Hallmark'),
    **tv.prior.get_priors('Reactome'),
}

Add the gene prior knowledge into adata

tv.prior.add_prior_to_adata(
    adata, background_prior=background_genesets,
    cluster_prior=cell_markers,
    cluster_min_genes=5,
    background_min_genes=10,
    key_added='annotation'
)
adata.write_h5ad('./results/tutorial_pbmc/adata.h5ad')

Train the model

adata = sc.read_h5ad('./results/tutorial_pbmc/adata.h5ad')
adata
AnnData object with n_obs × n_vars = 11746 × 2000
    obs: 'n_counts', 'batch', 'labels', 'str_labels', 'n_genes', 'size_factor', 'default_cluster'
    var: 'n_counts-0', 'n_counts-1', 'n_counts', 'n_cells', 'highly_variable', 'highly_variable_rank', 'means', 'variances', 'variances_norm', 'highly_variable_nbatches'
    uns: 'annotation', 'cell_types', 'hvg', 'log1p', 'pca'
    obsm: 'X_pca', 'design', 'normalized_qc', 'qc_pc', 'raw_qc'
    varm: 'PCs'
    layers: 'counts', 'normalized'

Training in one step

config = tv.make_default_config(project_name='tutorial_pbmc', working_dir='./results/')
config['data_kwargs']['default_cluster_key'] = 'default_cluster'
config['data_kwargs']['batch_key'] = 'batch'
config['data_kwargs']['size_factor_key'] = 'size_factor'
config
{'data_kwargs': {'annotation_key': 'annotation',
  'batch_key': 'batch',
  'default_cluster_key': 'default_cluster',
  'size_factor_key': 'size_factor'},
 'description': 'this is a default config, please modify it if need',
 'extra_kwargs': {'topicvi': {'data_kwargs': {'label_key': None},
   'model_kwargs': {'cluster_decoder_params': {'center_penalty_weight': 1},
    'pretrain_kwargs': {'batch_size': 128,
     'early_stopping': True,
     'max_epochs': 1000,
     'plan_kwargs': {'lr': 0.001, 'reduce_lr_on_plateau': True}}},
   'train_kwargs': {'max_epochs': 1000,
    'plan_kwargs': {'cl_weight': 1},
    'pretrain_model': './results/tutorial_pbmc\\pretrain_model'}},
  'topicvi_denovo_finding': {'data_kwargs': {'label_key': None},
   'train_kwargs': {'pretrain_model': './results/tutorial_pbmc\\pretrain_model'}}},
 'model_kwargs': {'n_clusters': 10, 'n_topics': 32},
 'project_name': 'tutorial_pbmc',
 'save_dir': './results/tutorial_pbmc',
 'train_kwargs': {'batch_size': 1024,
  'early_stopping': True,
  'max_epochs': 500}}
tv.utils.write_config(config, './results/tutorial_pbmc/config.yaml')

To initiate the cluster training process, we set the default_cluster_key in configuration file, and now we run the process by following code:

tv.model.run_default_cluster(adata, layer = 'counts', batch_key='batch', max_cells=2e5)
WARNING: adata.X seems to be already log-transformed.


2025-06-09 13:02:59,603 - harmonypy - INFO - Computing initial centroids with sklearn.KMeans...


2025-06-09 13:02:59,603 - Computing initial centroids with sklearn.KMeans...


2025-06-09 13:03:00,488 - harmonypy - INFO - sklearn.KMeans initialization complete.


2025-06-09 13:03:00,488 - sklearn.KMeans initialization complete.


2025-06-09 13:03:00,535 - harmonypy - INFO - Iteration 1 of 10


2025-06-09 13:03:00,535 - Iteration 1 of 10


2025-06-09 13:03:02,299 - harmonypy - INFO - Iteration 2 of 10


2025-06-09 13:03:02,299 - Iteration 2 of 10


2025-06-09 13:03:04,090 - harmonypy - INFO - Iteration 3 of 10


2025-06-09 13:03:04,090 - Iteration 3 of 10


2025-06-09 13:03:04,701 - harmonypy - INFO - Iteration 4 of 10


2025-06-09 13:03:04,701 - Iteration 4 of 10


2025-06-09 13:03:05,289 - harmonypy - INFO - Iteration 5 of 10


2025-06-09 13:03:05,289 - Iteration 5 of 10


2025-06-09 13:03:07,174 - harmonypy - INFO - Iteration 6 of 10


2025-06-09 13:03:07,174 - Iteration 6 of 10


2025-06-09 13:03:07,777 - harmonypy - INFO - Converged after 6 iterations


2025-06-09 13:03:07,777 - Converged after 6 iterations
Cluster for default_cluster_0.1 with leiden
resolution: 0.1, inverse_davies_bouldin_score: 0.6893958775655347
Cluster for default_cluster_0.2 with leiden
resolution: 0.2, inverse_davies_bouldin_score: 0.6392904553639157
Cluster for default_cluster_0.30000000000000004 with leiden
resolution: 0.30000000000000004, inverse_davies_bouldin_score: 0.5934891939533107
Cluster for default_cluster_0.4 with leiden
resolution: 0.4, inverse_davies_bouldin_score: 0.5279317952626994
Cluster for default_cluster_0.5 with leiden
resolution: 0.5, inverse_davies_bouldin_score: 0.5094809137093559
Cluster for default_cluster_0.6 with leiden
resolution: 0.6, inverse_davies_bouldin_score: 0.4812182836305442
Cluster for default_cluster_0.7000000000000001 with leiden
resolution: 0.7000000000000001, inverse_davies_bouldin_score: 0.4818665994064204
Cluster for default_cluster_0.8 with leiden
resolution: 0.8, inverse_davies_bouldin_score: 0.48679599740633733
Cluster for default_cluster_0.9 with leiden
resolution: 0.9, inverse_davies_bouldin_score: 0.4860558345379068
Cluster for default_cluster_1.0 with leiden
resolution: 1.0, inverse_davies_bouldin_score: 0.48440001073369177
optimised clustering against None
optimal cluster resolution: 0.1
optimal score: 0.6893958775655347
tv.run_topicvi(
    adata, config, verbose=True, save_model=True,
)
[34mINFO    [0m No backup URL provided for missing file .[35m/results/[0m[95mtutorial_pbmc[0m\pretrain_model\model.pt                   


GPU available: True (cuda), used: True
TPU available: False, using: 0 TPU cores
HPU available: False, using: 0 HPUs
You are using a CUDA device ('NVIDIA GeForce RTX 3060') that has Tensor Cores. To properly utilize them, you should set `torch.set_float32_matmul_precision('medium' | 'high')` which will trade-off precision for performance. For more details, read https://pytorch.org/docs/stable/generated/torch.set_float32_matmul_precision.html#torch.set_float32_matmul_precision
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]


No pretrained model found or something error occuredstart training from scratch. Failed to load model file at ./results/tutorial_pbmc\pretrain_model\model.pt. If attempting to load a saved model from <v0.15.0, please use the util function `convert_legacy_save` to convert to an updated format.
use the parameters for pretrain {'n_hidden': 128, 'n_latent': 32, 'n_layers': 2, 'dropout_rate': 0, 'dispersion': 'gene', 'gene_likelihood': 'zinb'}



Epoch 475/1000:  48%|####7     | 475/1000 [07:01<07:46,  1.13it/s, v_num=1, train_loss_step=608, train_loss_epoch=601]Monitored metric elbo_validation did not improve in the last 45 records. Best score: 646.872. Signaling Trainer to stop.


GPU available: True (cuda), used: True
TPU available: False, using: 0 TPU cores
HPU available: False, using: 0 HPUs
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]


Epoch 912/1000:  91%|#########1| 912/1000 [20:00<01:55,  1.32s/it, v_num=1, train_loss_step=4.79e+3, train_loss_epoch=4.78e+3]Monitored metric elbo_validation did not improve in the last 45 records. Best score: 25.990. Signaling Trainer to stop.
os.listdir('./results/tutorial_pbmc/')
['adata.h5ad', 'pretrain_model', 'topicvi']

analyze the results

Directly get the results from the saved npz file.

with open('./results/tutorial_pbmc/topicvi/results.npz', 'rb') as f:
    topicvi_results = np.load(f, allow_pickle=True)
topicvi_results.keys()
KeysView(NpzFile 'object' with keys: loading, factors, embedding, labels)

Or you can analyze the results with the TopicVI model.

model = tv.TopicVI.load(
    './results/tutorial_pbmc/topicvi/model/',
    adata=adata,
) 
[34mINFO    [0m File .[35m/results/tutorial_pbmc/topicvi/model/[0m[95mmodel.pt[0m already downloaded                                    
model.store_topics_info()
adata.obsm['topicvi'] = model.get_latent_representation()
_ = model.get_cluster_assignment()
adata
AnnData object with n_obs × n_vars = 11746 × 2000
    obs: 'n_counts', 'batch', 'labels', 'str_labels', 'n_genes', 'size_factor', 'default_cluster', '_scvi_batch', '_scvi_labels_', '_scvi_labels', 'model_predict', 'leiden_topicvi'
    var: 'n_counts-0', 'n_counts-1', 'n_counts', 'n_cells', 'highly_variable', 'highly_variable_rank', 'means', 'variances', 'variances_norm', 'highly_variable_nbatches'
    uns: 'annotation', 'cell_types', 'hvg', 'log1p', 'pca', '_scvi_uuid', '_scvi_manager_uuid', 'neighbors', 'umap', 'leiden_topicvi', 'model_predict_colors', 'default_cluster_colors', 'leiden_topicvi_colors', 'str_labels_colors'
    obsm: 'X_pca', 'design', 'normalized_qc', 'qc_pc', 'raw_qc', 'topic_by_sample', 'topicvi', 'X_umap'
    varm: 'PCs', 'topic_by_gene'
    layers: 'counts', 'normalized'
    obsp: 'distances', 'connectivities'
sc.pp.neighbors(adata, use_rep="topicvi", knn=True, metric="euclidean",)
sc.tl.umap(adata,)
sc.tl.leiden(adata, resolution=0.3, key_added="leiden_topicvi")
sc.pl.umap(
    adata,
    color=['model_predict', 'default_cluster', 'leiden_topicvi', 'str_labels'],
    frameon=False, palette="tab20", cmap="RdBu_r",
    ncols=2,
    # save = 'umaps.pdf',
)

png

Analyze the topics

# store the topic loading as a new data
fdata = model.get_topic_combined_data()
fdata
AnnData object with n_obs × n_vars = 11746 × 32
    obs: 'n_counts', 'batch', 'labels', 'str_labels', 'n_genes', 'size_factor', 'default_cluster', '_scvi_batch', '_scvi_labels_', '_scvi_labels', 'model_predict', 'leiden_topicvi'
    var: 'ISG15', 'PANK4', 'KLHL21', 'PER3', 'CA6', 'CTNNBIP1', 'KIF1B', 'DFFA', 'FBXO2', 'PLOD1', 'TNFRSF8', 'TNFRSF1B', 'DHRS3', 'EFHD2', 'ATP13A2', 'PADI2', 'CDA', 'C1QA', 'C1QB', 'ID3', 'GALE', 'FUCA1', 'CNR2', 'ZNF593', 'SH3BGRL3', 'DHDDS', 'HMGN2', 'RPS6KA1', 'ZDHHC18', 'SLC9A1', 'MAP3K6', 'FGR', 'IFI6', 'FAM76A', 'EYA3', 'PHACTR4', 'GMEB1', 'MECR', 'TMEM39B', 'TXLNA', 'MARCKSL1', 'YARS', 'ZMYM1', 'KIAA0319L', 'CSF3R', 'SNIP1', 'FHL3', 'TRIT1', 'PPT1', 'COL9A2', 'HIVEP3', 'CDC20', 'HYI', 'DPH2', 'ATP6V0B', 'PTCH2', 'EIF2B3', 'TOE1', 'AKR1A1', 'IPP', 'MKNK1', 'ECHDC2', 'C1orf123', 'SSBP3', 'HOOK1', 'L1TD1', 'ALG6', 'ITGB3BP', 'PGM1', 'GADD45A', 'HHLA3', 'FPGT', 'CRYZ', 'AK5', 'IFI44L', 'GNG5', 'MCOLN3', 'BCL10', 'GBP2', 'TGFBR3', 'GFI1', 'GCLM', 'PTBP2', 'DPYD', 'SLC25A24', 'TAF13', 'AMPD2', 'GSTM3', 'RBM15', 'KCNA3', 'DENND2D', 'CHI3L2', 'RHOC', 'LRIG2', 'NRAS', 'TSPAN2', 'CD2', 'TTF2', 'FAM46C', 'GDAP2', 'WDR3', 'WARS2', 'PHGDH', 'FCGR1B', 'CD160', 'PIAS3', 'PEX11B', 'NOTCH2NL', 'PRKAB2', 'HIST2H2BE', 'MTMR11', 'PLEKHO1', 'C1orf54', 'ADAMTSL4', 'C1orf56', 'CDC42SE1', 'SELENBP1', 'RORC', 'S100A10', 'S100A11', 'S100A9', 'S100A12', 'S100A6', 'S100A4', 'SLC27A3', 'DENND4B', 'SLC39A1', 'RAB13', 'RPS27', 'ATP8B2', 'PMVK', 'CKS1B', 'ZBTB7B', 'ADAM15', 'CLK2', 'RIT1', 'KIAA0907', 'SEMA4A', 'MRPL24', 'SH2D2A', 'ETV3', 'FCRL2', 'CD1D', 'CD1C', 'MNDA', 'PYHIN1', 'AIM2', 'FCER1A', 'SLAMF1', 'SLAMF7', 'CD244', 'NIT1', 'FCER1G', 'FCGR2A', 'FCGR2B', 'POGK', 'GPA33', 'POU2F1', 'CD247', 'CREG1', 'SFT2D2', 'SELP', 'RALGPS2', 'TOR3A', 'ABL2', 'SOAT1', 'IER5', 'RNASEL', 'NPL', 'NCF2', 'C1orf21', 'C1orf27', 'PTGS2', 'RGS2', 'GLRX2', 'CFH', 'ASPM', 'NEK7', 'ZNF281', 'KIF21B', 'RNPEP', 'PTPN7', 'KLHL12', 'LAX1', 'RBBP5', 'CR2', 'CD34', 'G0S2', 'RCOR3', 'TRAF5', 'SLC30A1', 'LPGAT1', 'ATF3', 'RPS6KC1', 'GPATCH2', 'BPNT1', 'TLR5', 'TP53BP2', 'NVL', 'CNIH4', 'LBR', 'C1orf35', 'HIST3H2A', 'NUP133', 'TAF5L', 'COG2', 'TARBP1', 'GPR137B', 'MTR', 'OPN3', 'CHML', 'SMYD3', 'AHCTF1', 'TRIM58', 'ZNF672', 'ZNF692', 'SH3YL1', 'ADI1', 'RSAD2', 'KLF11', 'ODC1', 'NOL10', 'PQLC3', 'DDX1', 'SMC6', 'RHOB', 'HS1BP3', 'TP53I3', 'POMC', 'DNMT3A', 'ASXL2', 'MPV17', 'LBH', 'TTC27', 'RASGRP3', 'FAM98A', 'CEBPZ', 'QPCT', 'GEMIN6', 'DHX57', 'THUMPD2', 'EML4', 'HAAO', 'SRBD1', 'MSH2', 'FOXN2', 'MTIF2', 'VRK2', 'B3GNT2', 'VPS54', 'AFTPH', 'MEIS1', 'GMCL1', 'MXD1', 'PCYOX1', 'NAGK', 'MPHOSPH10', 'DYSF', 'STAMBP', 'MTHFD2', 'SUCLG1', 'TMSB10', 'CAPG', 'VAMP8', 'ST3GAL5', 'MRPL35', 'CD8A', 'KRCC1', 'MAL', 'DUSP2', 'TMEM127', 'ZAP70', 'MGAT4A', 'TSGA10', 'LIPT1', 'IL18R1', 'IL18RAP', 'C2orf49', 'FHL2', 'SLC20A1', 'SLC35F5', 'MARCO', 'PTPN4', 'CLASP1', 'MAP3K2', 'PROC', 'LIMS2', 'MBD5', 'NMI', 'ACVR1', 'BAZ2B', 'SLC4A10', 'GCA', 'SCN9A', 'STK39', 'DHRS9', 'FASTKD1', 'METTL8', 'CYBRD1', 'PDK1', 'CHN1', 'MTX2', 'AGPS', 'PRKRA', 'TTN', 'UBE2E3', 'SSFA2', 'ZNF804A', 'OSGEPL1', 'PMS1', 'INPP1', 'STAT4', 'NIF3L1', 'WDR12', 'CYP20A1', 'CTLA4', 'ICOS', 'KLF7', 'IDH1', 'IKZF2', 'BARD1', 'ATIC', 'MREG', 'PECR', 'SMARCAL1', 'BCS1L', 'RNF25', 'CYP27A1', 'STK16', 'CHPF', 'SLC4A3', 'SERPINE2', 'CCL20', 'TRIP12', 'ITM2C', 'RAMP1', 'FARP2', 'STK25', 'PDCD1', 'ARL8B', 'EDEM1', 'SETD5', 'MTMR14', 'BRPF1', 'CAMK1', 'CRELD1', 'TATDN2', 'SEC13', 'ATG7', 'TSEN2', 'TMEM40', 'FBLN2', 'XPC', 'NR2C2', 'ANKRD28', 'SATB1', 'NR1D2', 'TOP2B', 'AZI2', 'GPD1L', 'CMTM6', 'DYNC1LI1', 'CRTAP', 'UBP1', 'PDCD6IP', 'EPM2AIP1', 'PLCD1', 'MYD88', 'OXSR1', 'CX3CR1', 'CTNNB1', 'VIPR1', 'ZNF197', 'ZNF35', 'SACM1L', 'LZTFL1', 'FYCO1', 'XCR1', 'NBEAL2', 'UQCRC1', 'SLC25A20', 'IMPDH2', 'USP19', 'GPX1', 'TCTA', 'RNF123', 'GNAI2', 'RASSF1', 'CYB561D2', 'CISH', 'RAD54L2', 'PARP3', 'PCBP4', 'ALAS1', 'BAP1', 'NISCH', 'NEK4', 'SFMBT1', 'PRKCD', 'CACNA2D3', 'ARHGEF3', 'DNASE1L3', 'RPP14', 'FHIT', 'C3orf14', 'MITF', 'HTR1F', 'ZNF654', 'CLDND1', 'CPOX', 'SENP7', 'ZBTB11', 'IFT57', 'TRAT1', 'DPPA4', 'CD96', 'ABHD10', 'SLC35A5', 'GTPBP8', 'SIDT1', 'TMEM39A', 'GTF2E1', 'EAF2', 'CSTA', 'HSPBAP1', 'SEC22A', 'MYLK', 'OSBPL11', 'MGLL', 'SEC61A1', 'RPN1', 'GP9', 'H1FX', 'ASTE1', 'ACPP', 'DNAJC13', 'TOPBP1', 'SRPRB', 'DBR1', 'FAIM', 'ZBTB38', 'RASA2', 'ATP1B3', 'CHST2', 'CPA3', 'HLTF', 'SIAH2', 'GPR171', 'P2RY14', 'P2RY13', 'GMPS', 'SSR3', 'TIPARP', 'PTX3', 'RSRC1', 'LXN', 'MFSD1', 'MYNN', 'EIF5A2', 'ZMAT3', 'DCUN1D1', 'MCCC1', 'ABCC5', 'EIF2B5', 'ABCF3', 'MAGEF1', 'SENP2', 'IGF2BP2', 'RPL39L', 'RTP4', 'LRCH3', 'IQCG', 'MYL5', 'DGKQ', 'TACC3', 'CYTL1', 'MAN2B2', 'S100P', 'SLC2A9', 'BST1', 'CD38', 'QDPR', 'LAP3', 'TBC1D19', 'KLF3', 'TLR1', 'TMEM156', 'TMEM33', 'SLC30A9', 'GUF1', 'ATP10D', 'TXK', 'EXOC1', 'SPINK2', 'SULT1B1', 'PF4', 'PPBP', 'CXCL3', 'CXCL2', 'MTHFD2L', 'EREG', 'CXCL10', 'PAQR3', 'PLAC8', 'COQ2', 'HPSE', 'ARHGAP24', 'HERC6', 'HERC5', 'TSPAN5', 'METAP1', 'DAPP1', 'BANK1', 'NFKB1', 'MANBA', 'BDH2', 'INTS12', 'PAPSS1', 'PLA2G12A', 'ALPK1', 'USP53', 'MAD2L1', 'TNIP3', 'ANXA5', 'EXOSC9', 'SPRY1', 'MGST2', 'MAML3', 'ARHGAP10', 'FBXW7', 'TLR2', 'MAP9', 'GUCY1A3', 'CTSO', 'PDGFC', 'GALNT7', 'HMGB2', 'CASP3', 'BRD9', 'FASTKD3', 'ANKH', 'BASP1', 'C5orf22', 'MTMR12', 'TARS', 'IL7R', 'WDR70', 'TTC33', 'OXCT1', 'PARP8', 'MOCS2', 'NDUFS4', 'GZMK', 'GZMA', 'DHX29', 'ANKRD55', 'MAP3K1', 'PLK2', 'CD180', 'CCNB1', 'CDK7', 'MRPS27', 'PTCD2', 'ANKRA2', 'HEXB', 'GCNT4', 'COL4A3BP', 'IQGAP2', 'F2R', 'CRHBP', 'ARSB', 'HOMER1', 'SERINC5', 'ZFYVE16', 'ATG10', 'CCNH', 'CETN3', 'MCTP1', 'LNPEP', 'RIOK2', 'ST8SIA4', 'MAN2A1', 'CAMK4', 'DCP2', 'FEM1C', 'COMMD10', 'DMXL1', 'HSD17B4', 'CSNK1G3', 'LMNB1', 'MARCH3', 'SLC12A2', 'RAPGEF6', 'IRF1', 'KIF3A', 'TGFBI', 'FAM53C', 'SIL1', 'CD14', 'GNPDA1', 'LARS', 'TCERG1', 'ADRB2', 'SH3TC2', 'PCYOX1L', 'SLC26A2', 'CSF1R', 'CD74', 'ATOX1', 'ITK', 'THG1L', 'PTTG1', 'DOCK2', 'KCNMB1', 'RPL26L1', 'SFXN1', 'HRH2', 'RNF44', 'HK3', 'MXD3', 'PRR7', 'DOK3', 'N4BP3', 'RUFY1', 'MAML1', 'MGAT4B', 'CNOT6', 'TRIM52', 'DUSP22', 'EXOC2', 'SERPINB6', 'NQO2', 'RIPK1', 'TUBB2A', 'RPP40', 'LYRM4', 'F13A1', 'LY86', 'HIVEP1', 'PHACTR1', 'GFOD1', 'CD83', 'MYLIP', 'GMPR', 'KIF13A', 'GMNN', 'HIST1H1C', 'HIST1H2AC', 'HIST1H1E', 'HIST1H4E', 'HIST1H2AE', 'HIST1H1D', 'HIST1H2BJ', 'ZNF184', 'HIST1H2BN', 'GABBR1', 'HCG18', 'PRR3', 'ABCF1', 'IER3', 'MICA', 'MICB', 'LTA', 'TNF', 'LTB', 'NEU1', 'SKIV2L', 'NOTCH4', 'HLA-DOB', 'TAP1', 'HLA-DMB', 'HLA-DMA', 'HLA-DPB1', 'RPS18', 'ZBTB22', 'BAK1', 'TAF11', 'FKBP5', 'KCTD20', 'CDKN1A', 'FGD2', 'PIM1', 'TREM1', 'BYSL', 'MRPS10', 'TBCC', 'MAD2L1BP', 'NFKBIE', 'PLA2G7', 'CD2AP', 'CENPQ', 'MCM3', 'EFHC1', 'TMEM14A', 'ICK', 'COL19A1', 'SMAP1', 'OGFRL1', 'SLC17A5', 'TMEM30A', 'FAM46A', 'CYB5R4', 'NT5E', 'SLC35A1', 'MDN1', 'MANEA', 'FBXL4', 'ASCC3', 'PRDM1', 'PDSS2', 'SESN1', 'MICAL1', 'ZBTB24', 'SLC16A10', 'REV3L', 'TSPYL4', 'TSPYL1', 'KPNA5', 'SMPDL3A', 'TRMT11', 'RNF146', 'VNN1', 'VNN3', 'VNN2', 'RPS12', 'TBPL1', 'PERP', 'HEBP2', 'HECA', 'STX11', 'RAB32', 'KATNA1', 'RMND1', 'MYCT1', 'ZDHHC14', 'TULP4', 'DYNLT1', 'ACAT2', 'AGPAT4', 'CCR6', 'MAFK', 'NUDT1', 'CHST12', 'LFNG', 'GNA12', 'ZNF12', 'C1GALT1', 'RPA3', 'ARL4A', 'ANKMY2', 'BZW2', 'TSPAN13', 'AHR', 'HDAC9', 'TWISTNB', 'SP4', 'IL6', 'MPP6', 'SNX10', 'SCRN1', 'KBTBD2', 'AOAH', 'ELMO1', 'AEBP1', 'DDX56', 'OGDH', 'UPP1', 'LANCL2', 'MRPS17', 'PHKG1', 'ZNF273', 'GUSB', 'ASL', 'STYXL1', 'FGL2', 'CROT', 'ABCB4', 'ABCB1', 'SLC25A40', 'DBF4', 'STEAP4', 'CDK6', 'SAMD9', 'GNG11', 'CASD1', 'PDK4', 'SLC25A13', 'ASNS', 'STAG3', 'ZCWPW1', 'SLC12A9', 'PLOD3', 'CLDN15', 'SH2B2', 'ALKBH4', 'RINT1', 'PRKAR2B', 'DLD', 'TFEC', 'ING3', 'FAM3C', 'ARF5', 'SND1', 'RBM28', 'IMPDH1', 'MEST', 'MKLN1', 'C7orf49', 'TMEM140', 'CREB3L2', 'TBXAS1', 'PARP12', 'MRPS33', 'CLEC5A', 'EPHB6', 'TPK1', 'REPIN1', 'GIMAP6', 'TMEM176B', 'TMEM176A', 'ABCB8', 'CDK5', 'SLC4A2', 'SMARCD3', 'GALNT11', 'PAXIP1', 'WDR60', 'PLCXD1', 'IL3RA', 'PRKX', 'WWC3', 'TLR7', 'TLR8', 'TRAPPC2', 'OFD1', 'GEMIN8', 'SCML1', 'RPS6KA3', 'MBTPS2', 'SMS', 'PHEX', 'PRDX4', 'ACOT9', 'CXorf21', 'RPGR', 'MID1IP1', 'BCOR', 'CHST7', 'SLC9A7', 'RP2', 'TIMP1', 'CFP', 'PCSK1N', 'PIM2', 'GPKOW', 'PLP2', 'GSPT2', 'MAGED1', 'TSPYL2', 'MAGEH1', 'ZMYM3', 'CYSLTR1', 'P2RY10', 'BTK', 'GLA', 'ARMCX3', 'ARMCX2', 'ARMCX5', 'BEX1', 'TCEAL4', 'TCEAL1', 'RBM41', 'PSMD10', 'ATG4A', 'ACSL4', 'AMMECR1', 'WDR44', 'SLC25A5', 'UPF3B', 'ZBTB33', 'AIFM1', 'MBNL3', 'MOSPD1', 'SLC9A6', 'CD40LG', 'CXorf40A', 'HMGB3', 'CETN2', 'ZNF185', 'ABCD1', 'RENBP', 'IRAK1', 'DNASE1L1', 'ATP6AP1', 'PLXNA3', 'SLC10A3', 'G6PD', 'MPP1', 'CLIC2', 'TMLHE', 'ERICH1', 'KBTBD11', 'MYOM2', 'AGPAT5', 'MFHAS1', 'MSRA', 'LONRF1', 'ATP6V1B2', 'DOK2', 'NUDT18', 'POLR3D', 'RHOBTB2', 'CHMP7', 'KCTD9', 'DPYSL2', 'EPHX2', 'CCDC25', 'PNOC', 'HMBOX1', 'KIF13B', 'DCTN6', 'GSR', 'WRN', 'RAB11FIP1', 'EIF4EBP1', 'PLEKHA2', 'ADAM9', 'AP3M2', 'POLB', 'SLC20A2', 'HGSNAT', 'TGS1', 'PLAG1', 'IMPAD1', 'SDCBP', 'NSMAF', 'GGH', 'RRS1', 'MYBL1', 'VCPIP1', 'C8orf44', 'LACTB2', 'MSC', 'STAU2', 'UBE2W', 'LY96', 'GDAP1', 'PKIA', 'IL7', 'MRPS28', 'ZBTB10', 'IMPA1', 'CA2', 'DECR1', 'DPY19L4', 'PLEKHF2', 'ANKRD46', 'NCALD', 'KLF10', 'BAALC', 'OXR1', 'TRPS1', 'TAF2', 'MRPL13', 'ZHX2', 'ATAD2', 'TRMT12', 'TRIB1', 'MYC', 'NDRG1', 'LY6E', 'ZC3H3', 'ZNF623', 'GRINA', 'FBXL6', 'SLC39A4', 'ZNF7', 'C8orf33', 'RLN2', 'RANBP6', 'DDX58', 'TOPORS', 'CD72', 'SIT1', 'TLN1', 'GNE', 'TJP2', 'TMEM2', 'ALDH1A1', 'ANXA1', 'GCNT1', 'RMI1', 'ZCCHC6', 'CTSL', 'CKS2', 'GADD45G', 'AUH', 'NFIL3', 'NOL8', 'NINJ1', 'FBP1', 'XPA', 'NANS', 'TGFBR1', 'SEC61B', 'STX17', 'TEX10', 'SLC31A2', 'SLC31A1', 'POLE3', 'TNFSF8', 'TLR4', 'CDK5RAP2', 'TRAF1', 'DENND1A', 'ARPC5L', 'RABEPK', 'PBX3', 'SH2D3C', 'FPGS', 'FAM102A', 'LCN2', 'ENDOG', 'TOR1B', 'POMT1', 'RAPGEF1', 'GFI1B', 'GTF3C5', 'REXO4', 'SLC2A6', 'FCN1', 'NOTCH1', 'EGFL7', 'NPDC1', 'ANAPC2', 'EHMT1', 'BET1L', 'IFITM2', 'IFITM3', 'RNH1', 'IRF7', 'SCT', 'DRD4', 'DEAF1', 'TALDO1', 'SLC25A22', 'CD151', 'CTSD', 'TNNI2', 'LSP1', 'ASCL2', 'C11orf21', 'TSPAN32', 'CD81', 'SLC22A18', 'RHOG', 'TRIM22', 'ILK', 'TAF10', 'RIC3', 'ADM', 'RNF141', 'CTR9', 'ZBED5', 'CYP2R1', 'NUCB2', 'HPS5', 'UEVLD', 'ZDHHC13', 'FANCF', 'RCN1', 'PRRG4', 'QSER1', 'LMO2', 'APIP', 'COMMD9', 'TRAF6', 'HSD17B12', 'CD82', 'SLC35C1', 'PHF21A', 'MDK', 'C11orf49', 'DDB2', 'ACP2', 'SPI1', 'SLC43A1', 'UBE2L6', 'SERPING1', 'LPXN', 'FAM111A', 'MS4A6A', 'MS4A4A', 'CCDC86', 'PRPF19', 'TMEM109', 'SLC15A3', 'CD5', 'VPS37C', 'DDB1', 'BEST1', 'ASRGL1', 'MTA2', 'GNG3', 'RTN3', 'VEGFB', 'FKBP2', 'PPP1R14B', 'PLCB3', 'RPS6KA4', 'MAP4K2', 'TM7SF2', 'LTBP3', 'MAP3K11', 'CTSW', 'KLC2', 'RAB1B', 'RIN1', 'ZDHHC24', 'POLD4', 'CLCF1', 'CDK2AP2', 'GSTP1', 'UNC93B1', 'TCIRG1', 'FADD', 'FOLR3', 'FOLR2', 'INPPL1', 'FCHSD2', 'P2RY2', 'PLEKHB1', 'MRPL48', 'POLD3', 'UVRAG', 'PAK1', 'GAB2', 'NARS2', 'PRCP', 'RAB30', 'TMEM126B', 'SYTL2', 'PRSS23', 'CTSC', 'CHORDC1', 'BIRC3', 'BIRC2', 'PDGFD', 'ACAT1', 'DDX10', 'C11orf1', 'C11orf57', 'TIMM8B', 'IL18', 'ZBTB16', 'PAFAH1B2', 'TAGLN', 'FXYD2', 'FXYD6', 'CD3E', 'CD3D', 'CD3G', 'ARCN1', 'HYOU1', 'HMBS', 'CBL', 'CRTAM', 'GRAMD1B', 'NRGN', 'STT3A', 'PUS3', 'DCPS', 'ETS1', 'ZBTB44', 'NCAPD3', 'PFKP', 'AKR1C3', 'PFKFB3', 'KIN', 'DHTKD1', 'CAMK1D', 'PHYH', 'HSPA14', 'RPP38', 'TRDMT1', 'VIM', 'STAM', 'NSUN6', 'DNAJC1', 'COMMD3', 'MAP3K8', 'ZNF248', 'ZNF33B', 'MARCH8', 'NCOA4', 'CCDC6', 'ARID5B', 'EGR2', 'RUFY2', 'DDX50', 'HK1', 'H2AFY2', 'PRF1', 'PCBD1', 'DDIT4', 'P4HA1', 'ZMIZ1', 'TSPAN14', 'MINPP1', 'LIPA', 'IFIT2', 'IFIT3', 'IFIT1', 'CEP55', 'NOC3L', 'HELLS', 'PDLIM1', 'ALDH18A1', 'BLNK', 'TM9SF3', 'FRAT1', 'FRAT2', 'SLC25A28', 'CWF19L1', 'NPM3', 'HPS6', 'TRIM8', 'NT5C2', 'GSTO1', 'MXI1', 'DUSP5', 'CASP7', 'DCLRE1A', 'NHLRC2', 'BAG3', 'PLEKHA1', 'OAT', 'LHPP', 'DHX32', 'PTPRE', 'PPP2R2D', 'UTF1', 'NINJ2', 'C12orf4', 'KCNA5', 'CD9', 'TNFRSF1A', 'LTBR', 'CD27', 'NCAPD2', 'COPS7A', 'LAG3', 'USP5', 'ENO2', 'PTPN6', 'C1RL', 'CLSTN3', 'FOXJ2', 'C3AR1', 'CLEC4E', 'KLRG1', 'KLRB1', 'CD69', 'KLRF1', 'CLEC1B', 'CLEC7A', 'OLR1', 'KLRC4', 'ETV6', 'APOLD1', 'HEBP1', 'H2AFJ', 'EPS8', 'DERA', 'ST8SIA1', 'IPO8', 'FAM60A', 'DNM1L', 'ABCD2', 'YAF2', 'PUS7L', 'NELL2', 'SLC38A1', 'AMIGO2', 'TMEM106C', 'CCNT1', 'TROAP', 'SPATS2', 'LIMA1', 'GALNT6', 'KRT5', 'IGFBP6', 'ITGB7', 'MFSD5', 'AAAS', 'SP1', 'TARBP2', 'ATF7', 'NFE2', 'ITGA5', 'CD63', 'MYL6B', 'CS', 'ATP5B', 'PRIM1', 'NXPH4', 'R3HDM2', 'DDIT3', 'METTL1', 'XPOT', 'TBK1', 'IFNG', 'YEATS4', 'FRS2', 'TMEM19', 'RAB21', 'CRADD', 'ACTR6', 'SCYL2', 'CHPT1', 'NUP37', 'TDG', 'HCFC2', 'TXNRD1', 'CHST11', 'RIC8B', 'CORO1C', 'UNG', 'GLTP', 'ARPC3', 'SH2B3', 'ATXN2', 'ACAD10', 'ALDH2', 'RPH3A', 'OAS3', 'TPCN1', 'TESC', 'WSB2', 'DYNLL1', 'C12orf43', 'P2RX7', 'P2RX4', 'SETD1B', 'DIABLO', 'ZCCHC8', 'CDK2AP1', 'MMP17', 'ULK1', 'DDX51', 'PXMP2', 'GOLGA3', 'ZNF26', 'ZNF84', 'CRYL1', 'IFT88', 'SACS', 'PARP4', 'CENPJ', 'MTMR6', 'CDK8', 'FLT3', 'USPL1', 'ALOX5AP', 'EXOSC8', 'MTRF1', 'TSC22D1', 'LRCH1', 'SUCLA2', 'RCBTB2', 'CYSLTR2', 'CDADC1', 'RCBTB1', 'TRIM13', 'CKAP2', 'UCHL3', 'LMO7', 'TGDS', 'DNAJC3', 'GPR18', 'TM9SF2', 'ERCC5', 'PCID2', 'TEP1', 'RNASE6', 'RNASE2', 'CHD8', 'SLC7A7', 'C14orf93', 'PSMB5', 'ACIN1', 'THTPA', 'PCK2', 'GMPR2', 'CIDEB', 'GZMH', 'GZMB', 'COCH', 'ARHGAP5', 'EGLN3', 'NFKBIA', 'FKBP3', 'RPS29', 'SAV1', 'NIN', 'PYGL', 'PTGER2', 'CDKN3', 'GCH1', 'LGALS3', 'FBXO34', 'PELI2', 'ARID4A', 'DAAM1', 'MNAT1', 'TRMT5', 'SLC38A6', 'HIF1A', 'SNAPC1', 'SGPP1', 'SYNE2', 'MTHFD1', 'ZBTB25', 'AKAP5', 'FUT8', 'VTI1B', 'PNMA1', 'ENTPD5', 'NPC2', 'ACYP1', 'FOS', 'BATF', 'VASH1', 'GSTZ1', 'GTF2A1', 'GPR65', 'C14orf159', 'GPR68', 'FBLN5', 'LGMN', 'GOLGA5', 'IFI27', 'TCL1B', 'VRK1', 'BCL11B', 'DYNC1H1', 'RCOR1', 'CKB', 'GPR132', 'CRIP2', 'CYFIP1', 'TUBGCP5', 'HERC2', 'MTMR10', 'SLC12A6', 'RASGRP1', 'RPUSD2', 'GCHFR', 'DNAJC17', 'SPINT1', 'RPAP1', 'MGA', 'EHD4', 'TTBK2', 'EPB42', 'MFAP1', 'WDR76', 'SLC30A4', 'DTWD1', 'ATP8B4', 'USP8', 'TMOD3', 'MAPK6', 'PIGB', 'AQP9', 'CCNB2', 'PARP16', 'DPP8', 'DENND4A', 'ZWILCH', 'CLN6', 'GLCE', 'RPLP1', 'MYO9A', 'MPI', 'SCAMP5', 'PPCDC', 'MAN2C1', 'PTPN9', 'SNUPN', 'PSTPIP1', 'HMG20A', 'PSMA4', 'CTSH', 'TMED3', 'BCL2A1', 'FAH', 'TM6SF1', 'WDR73', 'MRPL46', 'MFGE8', 'ANPEP', 'FURIN', 'FES', 'MCTP2', 'LRRK1', 'CHSY1', 'NME4', 'MSLN', 'METRN', 'NTHL1', 'KCTD5', 'PRSS21', 'IL32', 'MEFV', 'TFAP4', 'CORO7', 'ROGDI', 'NAGPA', 'PMM2', 'CARHSP1', 'ATF7IP2', 'NUBP1', 'DEXI', 'TNFRSF17', 'ERCC4', 'PARN', 'BFAR', 'TMEM159', 'CRYM', 'METTL9', 'IGSF6', 'PALB2', 'ARHGAP17', 'LCMT1', 'IL4R', 'CD19', 'MAPK3', 'TBC1D10B', 'MYLPF', 'ITGAL', 'SETD1A', 'BCKDK', 'PYCARD', 'ITGAX', 'ZNF267', 'NETO2', 'HEATR3', 'ADCY7', 'BRD7', 'NOD2', 'MT2A', 'NUP93', 'HERPUD1', 'CETP', 'KIFC3', 'GOT2', 'C16orf70', 'FBXL8', 'FHOD1', 'ATP6V0D1', 'CTCF', 'PARD6A', 'DPEP2', 'SMPD3', 'NIP7', 'TERF2', 'PDPR', 'AARS', 'COG4', 'AP1G1', 'DHX38', 'RFWD3', 'ADAT1', 'MON1B', 'GAN', 'PLCG2', 'MPHOSPH6', 'MLYCD', 'COTL1', 'CRISPLD2', 'ZDHHC7', 'KIAA0513', 'IRF8', 'KLHDC4', 'SLC7A5', 'CYBA', 'CDT1', 'CBFA2T3', 'ANKRD11', 'ZNF276', 'DBNDD1', 'PRPF8', 'SERPINF2', 'SERPINF1', 'MNT', 'P2RX5', 'ITGAE', 'P2RX1', 'MYBBP1A', 'ARRB2', 'PFN1', 'MIS12', 'MED31', 'CLEC10A', 'ASGR2', 'ASGR1', 'ACADVL', 'GABARAP', 'CHRNB1', 'PIK3R5', 'HS3ST3B1', 'TRPV2', 'TNFRSF13B', 'FLCN', 'MED9', 'PEMT', 'SREBF1', 'GRAP', 'LGALS9', 'IFT20', 'UNC119', 'ERAL1', 'TAOK1', 'GIT1', 'BLMH', 'EVI2A', 'UTP6', 'SUZ12', 'C17orf75', 'SLFN12', 'CCL4', 'DUSP14', 'IKZF3', 'IGFBP4', 'CCR7', 'JUP', 'CNP', 'STAT5A', 'CCR10', 'IFI35', 'VAT1', 'DHX8', 'TMUB2', 'ACBD4', 'TBX21', 'SKAP1', 'HOXB2', 'UBE2Z', 'ZNF652', 'SLC35B1', 'FAM117A', 'ANKRD40', 'TOB1', 'NME1', 'MBTD1', 'MMD', 'PCTP', 'DGKE', 'TRIM25', 'SCPEP1', 'CUEDC1', 'RNF43', 'TRIM37', 'DHX40', 'PTRH2', 'USP32', 'MAP3K3', 'CCDC47', 'SMARCD2', 'CD79B', 'ERN1', 'TEX2', 'POLG2', 'HELZ', 'PITPNC1', 'SLC16A6', 'ABCA5', 'C17orf80', 'CD300C', 'SLC9A3R1', 'NAT9', 'NT5C', 'LLGL2', 'GALK1', 'SPHK1', 'UBE2O', 'RHBDF2', 'SYNGR2', 'TK1', 'PGS1', 'USP36', 'TIMP2', 'LGALS3BP', 'CBX4', 'GAA', 'EIF4A3', 'NPLOC4', 'PDE6G', 'DCXR', 'SECTM1', 'NARF', 'FOXK2', 'METTL4', 'EMILIN2', 'TWSG1', 'PPP4R1', 'NAPG', 'IMPA2', 'TUBB6', 'SEH1L', 'CEP192', 'ABHD3', 'RBBP8', 'TAF4B', 'RNF125', 'SETBP1', 'SLC14A1', 'PSTPIP2', 'POLI', 'ZCCHC2', 'SERPINB10', 'SERPINB8', 'CD226', 'CNDP2', 'ZNF516', 'TRIB3', 'SIRPG', 'AVP', 'FASTKD5', 'CDC25B', 'PANK2', 'RASSF2', 'PCNA', 'MKKS', 'ESF1', 'SNX5', 'RIN2', 'CRNKL1', 'CST3', 'CST7', 'ID1', 'TPX2', 'HCK', 'KIF3B', 'ASIP', 'AHCY', 'MYL9', 'SAMHD1', 'MAFB', 'MYBL2', 'PKIG', 'TOMM34', 'PIGT', 'TNNC2', 'CTSA', 'SNAI1', 'CEBPB', 'BCAS4', 'TSHZ2', 'ZNF217', 'ZBP1', 'TUBB1', 'SYCP2', 'LSM14B', 'SS18L1', 'BIRC7', 'STMN3', 'SLC2A4RG', 'UCKL1', 'RGS19', 'PCMTD2', 'CDC34', 'GZMM', 'CFD', 'ARID3A', 'ABCA7', 'MUM1', 'SCAMP4', 'BTBD2', 'MKNK2', 'DOT1L', 'TIMM13', 'GNA15', 'PIP5K1C', 'MATK', 'PTPRS', 'RFX2', 'MLLT1', 'DENND1C', 'CD70', 'TNFSF14', 'ZNF557', 'MCOLN1', 'PNPLA6', 'STXBP2', 'RETN', 'SNAPC2', 'CD320', 'MARCH2', 'MYO1F', 'ZNF266', 'ZNF426', 'ZNF562', 'DNMT1', 'ICAM4', 'KEAP1', 'TMED1', 'CARM1', 'RAB3D', 'ACP5', 'MAN2B1', 'HOOK2', 'JUNB', 'RNASEH2A', 'LYL1', 'STX10', 'IER2', 'CCDC130', 'RFX1', 'PKN1', 'GIPC1', 'OCEL1', 'ABHD8', 'PLVAP', 'FCHO1', 'IL12RB1', 'PGPEP1', 'ISYNA1', 'SLC25A42', 'GATAD2A', 'ATP13A1', 'ZNF85', 'ZNF493', 'ZNF91', 'PLEKHF1', 'ZNF507', 'GPATCH1', 'CEBPA', 'CEBPG', 'KIAA0355', 'GPI', 'FXYD1', 'FXYD7', 'LSR', 'FFAR2', 'ZBTB32', 'TYROBP', 'CAPNS1', 'ZNF529', 'ZNF573', 'SPINT2', 'RYR1', 'ACTN4', 'SIRT2', 'SAMD4B', 'PAF1', 'ZFP36', 'SUPT5H', 'TIMM50', 'ZNF780B', 'PLD3', 'SERTAD3', 'BLVRB', 'EXOSC5', 'CEACAM4', 'CD79A', 'ERF', 'PAFAH1B3', 'LYPD3', 'ETHE1', 'XRCC1', 'KCNN4', 'ZNF230', 'ZNF227', 'ZNF180', 'RELB', 'GEMIN7', 'ERCC2', 'CD3EAP', 'VASP', 'PTGIR', 'SLC1A5', 'CCDC9', 'C5AR1', 'KPTN', 'TMEM143', 'CA11', 'LIN7B', 'TRPM4', 'FCGRT', 'NOSIP', 'RRAS', 'FUZ', 'TBC1D17', 'KCNC3', 'POLD1', 'SPIB', 'KLK1', 'SIGLEC9', 'CD33', 'NKG7', 'ZNF350', 'ZNF480', 'ZNF528', 'ZNF468', 'ZNF331', 'TSEN34', 'LILRA6', 'LILRA4', 'LILRB4', 'KIR2DL3', 'KIR2DL1', 'TNNT1', 'HSPBP1', 'ISOC2', 'CCDC106', 'EPN1', 'ZNF787', 'ZNF264', 'ZNF550', 'ZNF134', 'ZNF587', 'ZNF606', 'ZNF274', 'SLC27A5', 'UBE2M', 'ZFY', 'TTTY15', 'IL17RA', 'PEX26', 'SLC25A1', 'HIRA', 'MRPL40', 'CLDN5', 'GNB1L', 'SNAP29', 'SDF2L1', 'YPEL1', 'GNAZ', 'VPREB3', 'SMARCB1', 'SLC2A11', 'TPST2', 'XBP1', 'OSM', 'TCN2', 'EIF4ENIF1', 'YWHAH', 'TOM1', 'HMOX1', 'APOL6', 'APOL3', 'CSF2RB', 'MPST', 'KCTD17', 'IL2RB', 'CDC42EP1', 'LGALS2', 'SH3BP1', 'H1F0', 'JOSD1', 'APOBEC3C', 'APOBEC3F', 'CBX7', 'GRAP2', 'XPNPEP3', 'CENPM', 'TTLL1', 'BIK', 'TSPO', 'UPK3A', 'FAM118A', 'TRMU', 'CERK', 'MLC1', 'SCO2', 'ARSA', 'SAMSN1', 'USP25', 'IL10RB', 'IFNAR1', 'IFNGR2', 'CRYZL1', 'CBR3', 'MORC3', 'WRB', 'BACE2', 'MX2', 'MX1', 'SLC37A1', 'PDE9A', 'U2AF1', 'CSTB', 'AGPAT3', 'AIRE', 'PTTG1IP', 'ITGB2', 'PCNT', 'S100B'
    obsm: 'topicvi'
topics = tv.TopicDict.transfer_from_adata(adata, topk=50) # get top 50 genes for each topic
priors1 = adata.uns['annotation']['background']
priors2 = adata.uns['annotation']['clusters']
topics.compare_prior_overlap(prior = {**priors1, **priors2})
topics[0]
Index(['GNG5', 'GNG11', 'GNG3', 'GNAI2', 'GNA15', 'SPHK1', 'PLCB3', 'ADCY7',
       'PRKAR2B', 'ZNF217', 'FKBP5', 'POU2F1', 'GTF2A1', 'CCNT1', 'EREG',
       'CARM1', 'NRAS', 'MYC', 'FOS', 'TBCC', 'HLTF', 'UCHL3', 'UBE2W', 'USP5',
       'FBXW7', 'MAPK3', 'TUBB6', 'CTR9', 'PAF1', 'UBE2Z', 'CDC34', 'BCL10',
       'TALDO1', 'ACSL4', 'AKAP5', 'PRKX', 'CAMK4', 'CDK5', 'PRKAB2', 'PRKCD',
       'DHRS9', 'DHRS3', 'AKR1C3', 'PDK4', 'SREBF1', 'MECR'],
      dtype='object', name='gene_symbols')
topics.get_topic_annotes(ntop=1)
[{'Signaling By Nuclear Receptors R-HSA-9006931': 0.4117647058823529},
 {'DNA Repair R-HSA-73894': 0.5483870967741935},
 {'Membrane Trafficking R-HSA-199991': 0.34782608695652173},
 {'Organelle Biogenesis And Maintenance R-HSA-1852241': 0.6764705882352942},
 {'Intra-Golgi And Retrograde Golgi-to-ER Traffic R-HSA-6811442': 0.4716981132075472},
 {'RHO GTPase Cycle R-HSA-9012999': 0.8490566037735849},
 {'KEAP1-NFE2L2 Pathway R-HSA-9755511': 0.21818181818181817},
 {'SLC Transporter Disorders R-HSA-5619102': 0.3076923076923077},
 {'S Phase R-HSA-69242': 0.8260869565217391},
 {'Toll-like Receptor Cascades R-HSA-168898': 0.5714285714285714},
 {'Plasmacytoid Dendritic cells': 0.8181818181818182},
 {'Regulation Of Lipid Metabolism By PPARalpha R-HSA-400206': 0.6666666666666666},
 {'HIV Infection R-HSA-162906': 0.8611111111111112},
 {'C-type Lectin Receptors (CLRs) R-HSA-5621481': 0.5151515151515151},
 {'Phospholipid Metabolism R-HSA-1483257': 0.46153846153846156},
 {'Mitochondrial Translation R-HSA-5368287': 0.55},
 {'Memory CD8+ T cells': 0.9090909090909091},
 {'Intracellular Signaling By Second Messengers R-HSA-9006925': 0.39655172413793105},
 {'Apoptosis R-HSA-109581': 0.265625},
 {'Memory B cells': 0.14},
 {'Costimulation By CD28 Family R-HSA-388841': 0.625},
 {'DNA Double-Strand Break Repair R-HSA-5693532': 0.34},
 {'CD4+ NKT-like cells': 0.6153846153846154},
 {'M Phase R-HSA-68886': 1.0},
 {'Interferon Alpha Response': 0.0379746835443038},
 {'tRNA Modification In Nucleus And Cytosol R-HSA-6782315': 0.05172413793103448},
 {'Xenobiotic Metabolism': 0.05952380952380952},
 {'Interferon Gamma Response': 0.032520325203252036},
 {'Neutrophil Degranulation R-HSA-6798695': 0.02531645569620253},
 {'Oxidative Phosphorylation': 0.0379746835443038},
 {'Complement': 0.04},
 {'Metabolism Of Vitamins And Cofactors R-HSA-196854': 0.024691358024691357}]
sc.tl.rank_genes_groups(fdata, groupby='leiden_topicvi',)
sc.pl.rank_genes_groups_heatmap(
    fdata, groupby='leiden_topicvi', n_genes=3, use_raw=False, cmap='RdBu_r',
    vmin=0.25, vmax=0.75
)

png

tv.pl.ridge_topic_group(
    fdata, 
    groupby='leiden_topicvi', 
    target_topic=0, 
    topic_annote='Signaling By Nuclear Receptors R-HSA-9006931'
)
<seaborn.axisgrid.FacetGrid at 0x1ceec25de90>

png