Generate comprehensive single-cell RNA-seq analysis code templates for Seurat (R) and Scanpy (Python). This skill provides ready-to-use code frameworks for preprocessing, quality control, normalization, clustering, marker identification, visualization, and advanced analyses like batch correction and trajectory inference.
Technical Difficulty: High
bash
python scripts/main.py --tool seurat --output seurat_analysis.R --species human
bash
python scripts/main.py --tool scanpy --output scanpy_analysis.py --species mouse
bash
python scripts/main.py --tool both --output scrna_pipeline --species human --batch-correction harmony --trajectory true
ParameterTypeRequiredDescription--toolstringYesAnalysis tool: seurat, scanpy, or both--outputstringYesOutput file or directory path--speciesstringNoSpecies: human or mouse (default: human)--batch-correctionstringNoMethod: harmony, rpca, cca, scanorama, scvi--trajectoryboolNoInclude trajectory analysis (default: false)--cell-communicationboolNoInclude cell-cell communication (default: false)--de-analysisboolNoInclude differential expression (default: false)--spatialboolNoInclude spatial transcriptomics (default: false)
text
output/
├── seurat/
│ ├── 01_load_and_qc.R
│ ├── 02_normalize_integrate.R
│ ├── 03_cluster_annotate.R
│ ├── 04_visualize.R
│ └── 05_de_analysis.R (if --de-analysis)
├── scanpy/
│ ├── 01_load_qc.py
│ ├── 02_normalize_integrate.py
│ ├── 03_cluster_annotate.py
│ ├── 04_visualize.py
│ └── 05_trajectory.py (if --trajectory)
└── README.md
MetricHumanMousemin_genes200200max_genes2500025000min_cells33max_mt_percent20%20%doublet_thresholdAutoAuto
ScenarioSeuratScanpySmall batches (<5)HarmonyHarmonyLarge batchesRPCAScanoramaComplex variationCCAscVI
r
# Load data
seurat_obj <- CreateSeuratObject(counts = raw_data, project = "Sample")
# QC
seurat_obj[["percent.mt"]] <- PercentageFeatureSet(seurat_obj, pattern = "^MT-")
seurat_obj <- subset(seurat_obj, subset = nFeature_RNA > 200 & percent.mt < 20)
# Normalize
seurat_obj <- NormalizeData(seurat_obj)
seurat_obj <- FindVariableFeatures(seurat_obj, selection.method = "vst", nfeatures = 2000)
# Scale and PCA
seurat_obj <- ScaleData(seurat_obj)
seurat_obj <- RunPCA(seurat_obj, features = VariableFeatures(object = seurat_obj))
# Cluster
seurat_obj <- FindNeighbors(seurat_obj, dims = 1:30)
seurat_obj <- FindClusters(seurat_obj, resolution = 1.0)
seurat_obj <- RunUMAP(seurat_obj, dims = 1:30)
# Visualize
DimPlot(seurat_obj, reduction = "umap", label = TRUE)
FeaturePlot(seurat_obj, features = c("CD3E", "CD14", "CD79A"))
python
import scanpy as sc
# Load data
adata = sc.read_10x_mtx("filtered_gene_bc_matrices/")
# QC
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'], percent_top=None, inplace=True)
adata = adata[adata.obs.pct_counts_mt < 20, :]
# Normalize
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata, n_top_genes=2000)
# PCA and UMAP
sc.pp.scale(adata)
sc.tl.pca(adata, svd_solver='arpack')
sc.pp.neighbors(adata, n_neighbors=15, n_pcs=30)
sc.tl.umap(adata)
sc.tl.leiden(adata, resolution=1.0)
# Visualize
sc.pl.umap(adata, color=['leiden', 'total_counts'])
sc.pl.dotplot(adata, var_names=['CD3E', 'CD14', 'CD79A'], groupby='leiden')
references/seurat_template.R - Complete Seurat analysis templatereferences/scanpy_template.py - Complete Scanpy analysis templatereferences/batch_correction_guide.md - Batch correction comparisonrequirements.txt - Python dependenciesr
install.packages(c("Seurat", "SeuratObject", "tidyverse", "patchwork"))
# Optional
remotes::install_github("satijalab/seurat-wrappers")
remotes::install_github("immunogenomics/harmony")
BiocManager::install("SingleR")
bash
pip install scanpy leidenalg scvi-tools cellchatpy
Run basic validation:
bash
cd scripts
python test_main.py
All errors return semantic messages:
json
{
"status": "error",
"error": {
"type": "invalid_parameter",
"message": "Unsupported batch correction method: 'xyz'",
"suggestion": "Use one of: harmony, rpca, cca, scanorama, scvi"
}
}
If using generated templates in publications:
Risk IndicatorAssessmentLevelCode ExecutionPython/R scripts executed locallyMediumNetwork AccessNo external API callsLowFile System AccessRead input files, write output filesMediumInstruction TamperingStandard prompt guidelinesLowData ExposureOutput files saved to workspaceLow
bash
# Python dependencies
pip install -r requirements.txt
Current Stage: Draft
Next Review Date: 2026-03-06
Known Issues: None
Planned Improvements: