Consensus cell type annotation: runs 10+ algorithms (KNN-Harmony/BBKNN/Scanorama/scVI, CellTypist, ONCLASS, Random Forest, SCANVI, SVM, XGBoost) on a labeled reference and transfers labels via majority voting. Outputs per-method labels, consensus, agreement score.
SkillScore100Maintained
Automatic
◆Research pack
Last verified 9/3/2026
What it changes
Passed 21 of 21 test cases with the skill, and 10 of 21 without it.
Without skill45%
With skill100%
Checks it passed that the model alone missed
Method list includes 'onclass'
Call sets n_epochs_unsupervised=150
Call sets n_epochs_semisupervised=40
and 16 more in the full report
12 fixed10 passed either way0 still failing0 broke
Pass-rate lift
+55 pp
Tokens
+197%
Agent turns
0%
Response time
-30%
Model gemini-3.6-flashMeasured 9/3/2026v2 · latest is v322 of 22 cases passed with skill · 21 comparable
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
See it in action
One of 11 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 11
Prompt
When attempting to initialize joint preprocessing for cell type annotation, a user gets `KeyError: 'cell_type'` because their reference AnnData stores annotations under `obs['cell_ontology_class']`. What argument in `Process_Query` must be modified to point to the correct reference metadata column?
case-11 · gemini-3.6-flash · 9/3/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md600 linessingle file
popV Multi-Method Cell Type Transfer
Overview
popV (Population Voting for single-cell annotation) annotates a query scRNA-seq dataset by running 10+ independent classification algorithms against a labeled reference atlas and aggregating results via majority voting. Each method produces its own label; the final popv_prediction is the consensus across all methods, and the popv_agreement score quantifies how many methods agree. This ensemble strategy is robust to individual method failures on unusual datasets and provides a principled uncertainty estimate: low agreement highlights novel cell states or annotation gaps.
When to Use
Annotating a query dataset by transferring labels from a well-curated reference atlas when you want a consensus rather than a single model's judgment
Identifying novel or ambiguous cell states as cells where methods disagree (low popv_agreement score)
Benchmarking annotation reliability by comparing per-method labels to detect systematic disagreements
Annotating large atlas datasets (>100k cells) where batch effects between reference and query are substantial
Producing annotation for downstream analyses that require high-confidence labels (clinical data, regulatory submissions)
Use omics-plotting SKILL for confidence bar charts and method-agreement heatmaps from exported tables (UMAPs stay in scanpy sc.pl.*)
Use CellTypist (celltypist-cell-annotation) instead when speed matters and a pre-trained model matches your tissue; popV is slower because it trains multiple models on your reference
Use scANVI (scvi-tools-single-cell) instead when you need a single probabilistic deep generative model with formal uncertainty quantification and do not require the ensemble
Data requirements: Two AnnData objects — a labeled reference (adata_ref) with cell type labels in obs, and an unlabeled query (adata_query). Both must be from the same species and have overlapping gene sets. Raw counts in adata.X (popV applies its own normalization internally)
Environment: Python 3.9+; GPU recommended for scVI/SCANVI methods (falls back to CPU); 32 GB RAM recommended for >200k reference cells
Settle these with the user before writing any analysis code.
decisions:
- id: D1
param: annotationStrategy
kind: required
source: user
ask: "Name cell types from canonical markers by hand over the clusters, transfer them from an annotated reference by ensemble consensus, or do both and compare the two?"
default: "ensemble transfer, then confirm against markers"