single-cell-annotation-guide — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited single-cell-annotation-guide (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Cell type annotation is the process of assigning biological identities to computationally defined clusters in single-cell RNA-seq data. It is one of the most consequential analytical decisions in a scRNA-seq project: annotation errors propagate into downstream analyses of differential expression, trajectory inference, and cell-cell communication. This guide presents a three-tier decision strategy — manual marker-based annotation first, automated reference-free classification second, and ensemble reference-based label transfer third — and explains when each approach is most appropriate.
The guide synthesizes community know-how on CellTypist (Dominguez Conde et al., Science 2022), popV (Luecken et al., Nature Methods 2024), and classical marker-based approaches, following standards established by the Human Cell Atlas project.
The three tiers represent a progression from effort-intensive but transparent (manual) to efficient and scalable (automated). They are not mutually exclusive: best practice is to run automated annotation first to generate hypotheses and then validate with manual marker inspection. For high-stakes biological claims — rare cell types, novel disease states, clinical applications — all three tiers should be used in parallel and discordant results resolved explicitly before publication.
A cell type marker is a gene whose expression distinguishes one cell population from all others in a dataset. Canonical markers are those validated across many studies and tissues — for example, CD3E for T cells, CD19 and MS4A1 (CD20) for B cells, CD14 for classical monocytes, and EPCAM for epithelial cells. Effective markers fulfill three criteria: they are highly expressed in the target cell type (high sensitivity), they are absent or very low in all other cell types (high specificity), and their identity is confirmed by at least two independent markers.
Clusters produced by algorithms such as Leiden or Louvain represent groups of transcriptionally similar cells; they do not inherently correspond to biological cell types. A single true cell type may appear as multiple clusters if the resolution parameter is too high (overclustering), and biologically distinct cell types may be merged if resolution is too low. Annotation quality depends on both the quality of the clustering and the quality of the evidence used to assign identities.
Reference atlases are large, curated scRNA-seq datasets with expert-validated cell type labels that serve as a "ground truth" for annotation of new query datasets. Prominent examples include the Human Cell Atlas (HCA), the Human Lung Cell Atlas (HLCA, 2.4M cells), Tabula Sapiens (500K cells across 28 tissues), and the Human BM Atlas for bone marrow. Label transfer is the computational process of projecting query cells onto the reference space and assigning labels based on proximity.
Label transfer quality depends critically on biological match between query and reference. Adult tissue query data annotated with a fetal reference will produce systematic errors for cell types that differ between developmental stages. Similarly, a blood-derived reference will poorly annotate tumor-infiltrating immune cells, which have altered transcriptional programs compared to their circulating counterparts.
Automated annotation tools produce confidence scores (probability or agreement rate) that quantify the certainty of each cell's label. These scores should never be ignored. Cells with low confidence scores may represent novel cell types absent from the reference, doublets (two cells captured together), or transitional states along a differentiation continuum.
Validation refers to verifying that automated labels are consistent with independent biological evidence — typically canonical marker gene expression. Even when an automated method reports high confidence, a few minutes spent visualizing marker genes in a UMAP or dotplot is essential to catch systematic misannotations, especially for rare or disease-specific cell populations absent from training data.
Doublets are droplets containing two or more cells, which appear as a single cell with an anomalously high gene count and mixed transcriptional identity. Annotating doublets before removing them produces spurious "cell types" that combine markers from two real populations (e.g., an apparent NK-B cell hybrid). Tools such as Scrublet and DoubletFinder should be applied before annotation; doublets should be marked and excluded from the annotation workflow.
Batch effects — systematic technical differences between samples processed at different times, with different reagents, or on different platforms — can mimic cell type differences. If one batch contains more stressed cells (higher stress gene expression), they may cluster separately and be misannotated as a distinct cell type. Batch correction with Harmony, scVI, or BBKNN should be applied before annotation when multiple batches are present.
Cell ontologies are formal vocabularies that define cell type names, synonyms, and parent-child relationships. The Cell Ontology (CL), maintained by the OBO Foundry, is the standard used by the Human Cell Atlas and most major atlases. Using ontology-compliant cell type names (e.g., "CD8-positive, alpha-beta T cell" rather than "CD8 T cell") enables cross-dataset comparison and interoperability. CellTypist and popV return labels that map to the Cell Ontology when tissue-matched models are used.
Annotation hierarchies reflect that cell identities exist at multiple levels of granularity. At the coarsest level, cells are classified as broad lineages (immune, epithelial, stromal). At intermediate granularity, they are classified as cell types (T cell, B cell, macrophage). At the finest granularity, they are classified as cell states or subtypes (exhausted CD8 T cell, tissue-resident memory T cell, M1 macrophage). Choosing the right granularity for an annotation depends on the biological question and the depth of sequencing: underpowered studies should not attempt fine-grained annotation.
Marker gene evidence is not all equally reliable. Evidence categories, from most to least reliable, are:
sc.tl.rank_genes_groups. These are hypothesis-generating and require biological interpretation.rank_genes_groups in your dataset. This is the strongest evidence — it means the marker's biology is reflected in your actual data.When building a marker panel for annotation, prioritize cross-validated markers (Category 3) and use canonical published markers (Category 1) as anchors.
When planning a cell type annotation strategy, choose the tier based on dataset characteristics and scientific context:
Is the tissue and cell type composition well-characterized?
├── YES, standard tissue with clear markers (blood, lung, gut, brain)
│ ├── Dataset < 5,000 cells OR small team experiment
│ │ └── Tier 1: Manual marker-based annotation
│ │ (dotplot + violin + UMAP visualization)
│ └── Dataset ≥ 5,000 cells OR high-throughput study
│ ├── Standard tissue with pre-trained atlas available
│ │ └── Tier 2: CellTypist automated annotation
│ │ (select tissue-matched model, use majority_voting)
│ └── Need cross-atlas integration or rare cell types
│ └── Tier 3: popV ensemble label transfer
│ (requires reference AnnData + tissue label)
└── NO, novel tissue, disease state, or poorly characterized system
├── Reference atlas exists for related tissue
│ └── Tier 3: popV ensemble label transfer
│ (multiple methods + consensus = more robust)
└── No good reference exists
└── Tier 1: Manual annotation (cautious, exploratory)
+ Tier 2: CellTypist as validation
(report as "putative" cell types, note limitations)| Scenario | Recommended Approach | Rationale |
|---|---|---|
| Small dataset (<5,000 cells), well-characterized tissue | Tier 1: Manual markers | Automated tools provide marginal advantage; manual review is faster and more transparent |
| Large dataset (>50,000 cells), blood or immune tissue | Tier 2: CellTypist with Immune_All_High model | CellTypist has the most complete immune training data; scales without added complexity |
| Large dataset, lung or airway tissue | Tier 2: CellTypist with Human_Lung_Atlas model | HLCA-trained model provides granular lung-specific annotation |
| Novel disease condition or patient-derived samples | Tier 3: popV with tissue-matched reference | Ensemble consensus is more robust to distribution shift; produces a method-agreement score |
| Integration with published atlas (e.g., HLCA, HBA) | Tier 3: popV | Designed for atlas-query integration; maintains label ontology compatibility |
| Rare cell types (<1% of dataset) | Tier 3: popV + manual inspection | Rare populations benefit from multi-method ensemble; manual inspection catches misannotation |
| Fetal or developmental tissue | Tier 1 + Tier 3 with fetal reference | Fetal cell types are distinct from adult; use a matched fetal reference (Tabula Sapiens fetal) |
| Mixed or uncertain tissue composition | Tier 2 (CellTypist) then Tier 1 validation | CellTypist provides a quick hypothesis; validate each predicted type with markers |
| Benchmark or methods comparison study | All three tiers in parallel | Triangulating annotation from multiple strategies increases credibility |
adata.obs, and exclude them before proceeding to annotation.sc.pl.dotplot), violin plot (sc.pl.violin), or feature plot on UMAP (sc.pl.umap). If a population labeled "B cell" does not express MS4A1 and CD19, the label is suspect. This step takes 15–30 minutes and catches the most common annotation errors.scrub.scrub_doublets()) or DoubletFinder immediately after QC filtering, before any normalization or clustering. Set the expected doublet rate to the multiplet rate reported by the 10x Genomics cell ranger summary (typically 1–4% per thousand cells loaded). Filter cells with predicted_doublet == True from adata.obs before proceeding.celltypist.models.models_description()) or the popV reference documentation to confirm match. If no matched reference exists, use Tier 1 manual annotation as the primary approach and flag the uncertainty.sc.tl.score_genes_cell_cycle with established gene lists. Visualize cell cycle scores on UMAP. If a cluster is primarily defined by proliferation genes, label it as "[Cell Type] proliferating" rather than treating it as a distinct lineage. Optionally, regress out cell cycle scores if you want clusters to reflect lineage rather than cell state.sc.pp.normalize_total, sc.pp.log1p).sc.pp.highly_variable_genes).adata.obs["doublet_score"] and boolean flags in adata.obs["predicted_doublet"].sc.pp.neighbors, k=15–30).sc.tl.umap).celltypist.models.models_description().celltypist.annotate(adata, model=model, majority_voting=True).adata.obs["celltypist_cell_type"] and adata.obs["celltypist_conf_score"].cell_type containing validated labels.adata.X.popv.process_query(query_adata, ref_adata, ...) and popv.annotate_data(query_adata).adata.obs["popv_prediction"] and agreement scores in adata.obs["popv_score"].adata.obs["cell_type"].adata.obs["annotation_method"] (manual/celltypist/popv/manual_refined)..h5ad for downstream analysis.Immune_All_High_Resolution or Immune_All_Low_Resolution. For lung use Human_Lung_Atlas. For gut use Human_Colon_Cell_Atlas or Cells_of_the_Human_Intestine. For fetal use Fetal_Human_Pancreas or the appropriate fetal model. Run celltypist.models.models_description() for the full list with tissue metadata.| Cell Type | Positive Markers | Negative Markers |
|---|---|---|
| CD4 T cell | CD3E, CD4, IL7R | CD8A, CD19, CD14 |
| CD8 T cell | CD3E, CD8A, GZMK | CD4, CD19, CD14 |
| NK cell | NKG7, GNLY, KLRB1 | CD3E, CD19, CD14 |
| B cell | CD19, MS4A1, CD79A | CD3E, CD14, NKG7 |
| Plasma cell | MZB1, JCHAIN, IGHG1 | CD19, CD3E, CD14 |
| Classical monocyte | CD14, S100A8, LYZ | CD3E, CD19, FCGR3A |
| Non-classical monocyte | FCGR3A, CX3CR1, LST1 | CD14, CD3E, CD19 |
| Conventional DC | FCER1A, CST3, CD1C | CD3E, CD19, CD14 |
| Plasmacytoid DC | CLEC4C, IL3RA, JCHAIN | CD3E, CD19, CD14 |
| Alveolar macrophage | MARCO, FABP4, PPARG | CD14, CD3E, CD19 |
| AT2 epithelial (lung) | SFTPC, SFTPB, LAMP3 | CD45/PTPRC, VWF |
| Endothelial cell | PECAM1, VWF, CDH5 | EPCAM, CD45/PTPRC |
| Fibroblast | COL1A1, DCN, PDGFRA | EPCAM, CD45/PTPRC |
| Epithelial cell | EPCAM, KRT18, CDH1 | CD45/PTPRC, VWF |
scanpy-scrna-seq — Full scRNA-seq analysis pipeline in Scanpy covering QC, normalization, clustering, and basic marker-based annotation; use as the computational foundation before applying this guide's annotation strategycelltypist-cell-annotation — Tier 2 automated annotation tool using pre-trained logistic regression models for 100+ cell types across blood, lung, gut, brain, and other tissuespopv-cell-annotation — Tier 3 ensemble label transfer tool using 10+ methods with majority voting; use for robust annotation of novel or heterogeneous datasetsscvi-tools-single-cell — Deep generative models for batch correction (scVI) and semi-supervised annotation (scANVI); use scANVI as an alternative to popV for joint integration and annotationharmony-batch-correction — Batch correction for PCA embeddings; apply before annotation when integrating samples from multiple donors or processing batchesanndata-data-structure — Core data container for all scRNA-seq analysis; required for understanding how annotations are stored and propagated in AnnData objectscellxgene-census — Source of large curated reference atlases (Human Cell Atlas, Tabula Sapiens) for use as label transfer references in popV workflowsmuon-multiomics-singlecell — Multi-modal single-cell analysis; annotation of multi-omics data (RNA+ATAC, CITE-seq) requires considering the additional modalities as supplementary evidencemofaplus-multi-omics — Multi-omics factor analysis; latent factors from MOFA+ can inform cell state annotation when transcriptional signatures are not sufficientcellchat-cell-communication — Downstream analysis of annotated single-cell data; ligand-receptor interaction inference depends entirely on having accurate cell type labels from annotation~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.