name: bioinformatics-singlecell
description: "Advanced single-cell multi-omics analysis including scRNA-seq, scCITE-seq, scATAC-seq, and TARGET-seq. Use when analyzing single-cell data, cell type identification, trajectory analysis, differential expression, UMAP/clustering, integrating protein and RNA modalities (TotalVI), or working with Scanpy, Seurat, scvi-tools. Includes workflows for MPN, hematologic malignancies, megakaryocyte biology."
license: Proprietary
Single-Cell Multi-Omics Analysis
Core Libraries & Environment
# Essential imports
import scanpy as sc
import anndata as ad
import scvi
import muon as mu
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Settings
sc.settings.verbosity = 3
sc.settings.set_figure_params(dpi=100, frameon=False, figsize=(6, 6))
Standard scRNA-seq Workflow
# 1. Load and QC
adata = sc.read_10x_mtx('path/to/filtered_feature_bc_matrix/')
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)
adata.var['mt'] = adata.var_names.str.startswith('MT-')
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)
adata = adata[adata.obs.pct_counts_mt < 20, :]
# 2. Normalization & HVG
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata, n_top_genes=2000, batch_key='batch')
# 3. Dimensionality reduction
sc.pp.scale(adata, max_value=10)
sc.tl.pca(adata, svd_solver='arpack')
sc.pp.neighbors(adata, n_neighbors=15, n_pcs=40)
sc.tl.umap(adata)
sc.tl.leiden(adata, resolution=0.5)
TotalVI for CITE-seq Integration
# Setup MuData
mdata = mu.MuData({'rna': adata_rna, 'protein': adata_prot})
# Train TotalVI
scvi.model.TOTALVI.setup_mudata(
mdata, rna_layer='counts', protein_layer='counts',
batch_key='batch', modalities={'rna_layer': 'rna', 'protein_layer': 'protein'}
)
model = scvi.model.TOTALVI(mdata, latent_distribution='normal', n_latent=20)
model.train(max_epochs=200, early_stopping=True)
# Get embeddings
mdata.obsm['X_totalVI'] = model.get_latent_representation()
sc.pp.neighbors(mdata, use_rep='X_totalVI')
sc.tl.umap(mdata)
sc.tl.leiden(mdata, key_added='leiden_totalVI', resolution=0.6)
Differential Expression
# DEG analysis
sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon')
result = adata.uns['rank_genes_groups']
df = pd.DataFrame({
'gene': result['names']['0'],
'log2FC': result['logfoldchanges']['0'],
'pval_adj': result['pvals_adj']['0']
})
sig_genes = df[(df['pval_adj'] < 0.05) & (abs(df['log2FC']) > 1)]
Publication-Quality Visualization
# Dot plot with proper expression cutoffs
sc.pl.dotplot(
adata, var_names=marker_genes, groupby='leiden',
expression_cutoff=0.0001, mean_only_expressed=False,
standard_scale='None', smallest_dot=0.1, dot_max=1.0,
cmap='viridis', colorbar_title='Expression'
)
# UMAP by batch
for batch in adata.obs['batch'].unique():
adata_batch = adata[adata.obs['batch'] == batch]
sc.pl.umap(adata_batch, color='FOXP3', title=f'{batch}')
Cell Type Annotation Markers
Hematopoietic Markers
- HSC: CD34, KIT, THY1, CD38low
- CMP/GMP: CD34+, CD38+, CD123
- MEP: CD34+, CD38+, CD41/ITGA2B
- Megakaryocytes: ITGA2B, PF4, GP1BA, PPBP, VWF
- Erythroid: HBB, HBA1/2, GYPA, KLF1
MPN-Specific Markers
- Inflammatory MKs: S100A8/9, CHI3L1, CXCL8, IL6
- Fibrosis markers: TGFB1, COL1A1, LOXL2, VEGFA
- Disease genes: JAK2, CALR, MPL, PPM1D, ASXL1
Output & Saving
# Save processed data
adata.write('processed_adata.h5ad')
model.save('totalvi_model/')
df.to_csv('DEG_results.csv', index=False)
See references/cell_markers.md for complete marker lists.
See references/scvi_advanced.md for advanced scvi-tools workflows.
1---2name: bioinformatics-singlecell3description: <!--4---5<!--6# COPYRIGHT NOTICE7# This file is part of the "Universal Biomedical Skills" project.8# Copyright (c) 2026 MD BABU MIA, PhD <md.babu.mia@mssm.edu>9# All Rights Reserved.10#11# This code is proprietary and confidential.12# Unauthorized copying of this file, via any medium is strictly prohibited.13#14# Provenance: Authenticated by MD BABU MIA1516-->1718---19name: bioinformatics-singlecell20description: "Advanced single-cell multi-omics analysis including scRNA-seq, scCITE-seq, scATAC-seq, and TARGET-seq. Use when analyzing single-cell data, cell type identification, trajectory analysis, differential expression, UMAP/clustering, integrating protein and RNA modalities (TotalVI), or working with Scanpy, Seurat, scvi-tools. Includes workflows for MPN, hematologic malignancies, megakaryocyte biology."21license: Proprietary22---2324# Single-Cell Multi-Omics Analysis2526## Core Libraries & Environment2728```python29# Essential imports30import scanpy as sc31import anndata as ad32import scvi33import muon as mu34import pandas as pd35import numpy as np36import matplotlib.pyplot as plt37import seaborn as sns3839# Settings40sc.settings.verbosity = 341sc.settings.set_figure_params(dpi=100, frameon=False, figsize=(6, 6))42```4344## Standard scRNA-seq Workflow4546```python47# 1. Load and QC48adata = sc.read_10x_mtx('path/to/filtered_feature_bc_matrix/')49sc.pp.filter_cells(adata, min_genes=200)50sc.pp.filter_genes(adata, min_cells=3)51adata.var['mt'] = adata.var_names.str.startswith('MT-')52sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], inplace=True)53adata = adata[adata.obs.pct_counts_mt < 20, :]5455# 2. Normalization & HVG56sc.pp.normalize_total(adata, target_sum=1e4)57sc.pp.log1p(adata)58sc.pp.highly_variable_genes(adata, n_top_genes=2000, batch_key='batch')5960# 3. Dimensionality reduction61sc.pp.scale(adata, max_value=10)62sc.tl.pca(adata, svd_solver='arpack')63sc.pp.neighbors(adata, n_neighbors=15, n_pcs=40)64sc.tl.umap(adata)65sc.tl.leiden(adata, resolution=0.5)66```6768## TotalVI for CITE-seq Integration6970```python71# Setup MuData72mdata = mu.MuData({'rna': adata_rna, 'protein': adata_prot})7374# Train TotalVI75scvi.model.TOTALVI.setup_mudata(76 mdata, rna_layer='counts', protein_layer='counts',77 batch_key='batch', modalities={'rna_layer': 'rna', 'protein_layer': 'protein'}78)79model = scvi.model.TOTALVI(mdata, latent_distribution='normal', n_latent=20)80model.train(max_epochs=200, early_stopping=True)8182# Get embeddings83mdata.obsm['X_totalVI'] = model.get_latent_representation()84sc.pp.neighbors(mdata, use_rep='X_totalVI')85sc.tl.umap(mdata)86sc.tl.leiden(mdata, key_added='leiden_totalVI', resolution=0.6)87```8889## Differential Expression9091```python92# DEG analysis93sc.tl.rank_genes_groups(adata, 'leiden', method='wilcoxon')94result = adata.uns['rank_genes_groups']95df = pd.DataFrame({96 'gene': result['names']['0'],97 'log2FC': result['logfoldchanges']['0'],98 'pval_adj': result['pvals_adj']['0']99})100sig_genes = df[(df['pval_adj'] < 0.05) & (abs(df['log2FC']) > 1)]101```102103## Publication-Quality Visualization104105```python106# Dot plot with proper expression cutoffs107sc.pl.dotplot(108 adata, var_names=marker_genes, groupby='leiden',109 expression_cutoff=0.0001, mean_only_expressed=False,110 standard_scale='None', smallest_dot=0.1, dot_max=1.0,111 cmap='viridis', colorbar_title='Expression'112)113114# UMAP by batch115for batch in adata.obs['batch'].unique():116 adata_batch = adata[adata.obs['batch'] == batch]117 sc.pl.umap(adata_batch, color='FOXP3', title=f'{batch}')118```119120## Cell Type Annotation Markers121122### Hematopoietic Markers123- **HSC**: CD34, KIT, THY1, CD38low124- **CMP/GMP**: CD34+, CD38+, CD123125- **MEP**: CD34+, CD38+, CD41/ITGA2B126- **Megakaryocytes**: ITGA2B, PF4, GP1BA, PPBP, VWF127- **Erythroid**: HBB, HBA1/2, GYPA, KLF1128129### MPN-Specific Markers130- **Inflammatory MKs**: S100A8/9, CHI3L1, CXCL8, IL6131- **Fibrosis markers**: TGFB1, COL1A1, LOXL2, VEGFA132- **Disease genes**: JAK2, CALR, MPL, PPM1D, ASXL1133134## Output & Saving135136```python137# Save processed data138adata.write('processed_adata.h5ad')139model.save('totalvi_model/')140df.to_csv('DEG_results.csv', index=False)141```142143See `references/cell_markers.md` for complete marker lists.144See `references/scvi_advanced.md` for advanced scvi-tools workflows.145146147<!-- AUTHOR_SIGNATURE: 9a7f3c2e-MD-BABU-MIA-2026-MSSM-SECURE -->