mllmcelltype-consensus-annotation

Annotates scRNA-seq clusters via multi-LLM consensus over marker genes with Python-recomputed confidence metrics.

1|Updated Nov 20, 2025
One-click install
npx skills add https://github.com/tony-zhelonkin/scio --skill mllmcelltype-consensus-annotation-tony-zhelonkin
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: mllmcelltype-consensus-annotation
Source: https://github.com/tony-zhelonkin/scio/tree/main/skills/mllmcelltype-consensus-annotation
Command: npx skills add https://github.com/tony-zhelonkin/scio --skill mllmcelltype-consensus-annotation-tony-zhelonkin

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires mllmcelltype, google-genai, pydantic, requests, pandas, pyyaml, python-dotenv, and includes references (resource) components.

What problem does it solve? Single-cell RNA-seq cluster annotation from marker genes is subjective and error-prone when done by hand or with a single LLM prompt. This Skill runs a version-locked CLI that asks several LLMs to label each cluster, reconciles them by consensus with cross-model discussion, and returns a label per cluster plus a Python-recomputed confidence score and a full prompt-to-label trace. ## Core Features & Use Cases - Multi-LLM consensus annotation: Query a panel of models (OpenAI, Anthropic, Gemini, or OpenRouter slugs) over per-cluster marker genes and reconcile their votes into one label per cluster, with forced determinism (temp=0, seed=0) and captured token/USD cost. - Two modes via YAML profiles: cell-TYPE mode (markers only, reference-free labels) and cell-STATE mode (markers plus injected per-cluster evidence such as gene programs and binned signature scores, with vocabulary guards). - Trustworthy uncertainty: Consensus proportion and entropy are recomputed in Python from per-model votes (the authoritative py_* columns), not taken from the LLM's self-reported numbers; every run writes labels.csv, validation.json, and a trace directory with the exact prompt, model responses, and cost summary. - Use Case: After clustering a PBMC dataset with scanpy and computing marker genes, run mllmct annotate --profile celltype.yaml to get reference-free cell-type labels with per-cluster confidence, then map them back onto your AnnData object and triage low-confidence clusters. ## Quick Start Ask the AI to annotate your scRNA-seq clusters by running the mllmct annotate command with the celltype profile, your markers CSV, species, tissue, and a comma-separated model panel after exporting the required API key.

Frequently Asked Questions about mllmcelltype-consensus-annotation

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I annotate scRNA-seq clusters with multiple LLMs?▼

Run mllmct annotate with a markers CSV (cluster column plus semicolon-joined gene symbols), species, tissue, and a comma-separated model panel such as openai/gpt-5,anthropic/claude-sonnet-4.6,google/gemini-2.5-flash. The tool queries each model, reconciles votes by consensus, and writes labels.csv with per-cluster confidence.

What is the difference between cell-type and cell-state annotation modes?▼

Both modes run the same code path; the YAML profile decides. Cell-type mode sends only marker genes and returns identity labels, while cell-state mode injects per-cluster evidence (gene programs, signatures, binned scores) and applies vocabulary guards so only functional states are emitted.

When should I use mLLMCelltype instead of reference-based label transfer?▼

Use it when you have no annotated reference atlas and only marker gene lists per cluster. If you have an annotated atlas, use cellxgene-census-annotation for label transfer; if you have partial ground-truth labels, use scvi-scanvi for semi-supervised propagation.

Which API keys does multi-LLM consensus annotation require?▼

You need a key for each provider implied by your model panel: OPENROUTER_API_KEY for slash-separated slugs, or GEMINI_API_KEY, OPENAI_API_KEY, and ANTHROPIC_API_KEY for bare model ids. Provide them via environment variables, --api-key arguments, or an --env-file dotenv; the tool fails fast with the exact export command if one is missing.

Why should I trust the py_consensus_proportion column over llm_reported_proportion?▼

The py_* columns are recomputed in Python directly from the per-model label votes, making them the authoritative uncertainty metrics. The llm_reported_* columns are the library's post-discussion self-reported numbers and are kept only for comparison, never as confidence.

What are the limitations of LLM-based cell annotation?▼

Novel open-vocab labels are hypotheses needing orthogonal validation, not conclusions, and low-confidence clusters often indicate doublets or insufficient marker specificity rather than rare biology. Do not pass Ensembl IDs as markers, and do not use it for reference-based label transfer.