Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

How CyteType works

CyteType annotates the clusters of a single-cell RNA-seq dataset. For each cluster it proposes a cell type, maps it to the Cell Ontology, calls a cell state, and records the evidence behind each decision. The work is done on CyteType’s servers by a team of agents: each one handles a part of the problem, such as understanding the study, annotating a cluster or reviewing an annotation, and uses analysis tools on your data along the way. An independent reviewer checks every call before the results come back to you.

What you provide

InputPythonRWhat it is for
Clustersa column of adata.obs, named by group_keya column of obj@meta.data, named by group_keyThe unit of annotation. Every cell in a cluster receives the cluster’s label.
Marker genessc.tl.rank_genes_groups() resultsa FindAllMarkers() tableThe starting evidence for each cluster (the top 50 genes per cluster by default).
Study contextstudy_context textstudy_context textWhat the sample is: organism, tissue, condition, assay and anything else that frames the study.
Report metadata (optional)metadata dictionarymetadata listTags shown in the report header. A title entry names the job in the dashboard.
Coordinates (optional)a 2D embedding in adata.obsm, such as X_umapa reduction, such as umapThe embedding shown in the report.

From these inputs, the client prepares the rest on your computer:

The uploaded files let CyteType compute evidence from your individual cells on the server, such as differential expression between related clusters. Chat and target analysis use them later as well. Without them, CyteType still annotates from the marker genes and cluster summaries, with less evidence to draw on.

Prepare your data covers each requirement, and Study context and metadata shows how to describe your study.

What happens during a job

While a job runs, the report shows its stage: Preparing, Understanding context, Annotating clusters, Refining annotations, Reviewing and Finalizing. After the short preparation step, the stages do the following.

  1. Understanding the study. CyteType reads your study context together with the data. It determines the organism, infers the likely tissue from gene expression, writes a short study summary with keywords, and chooses the pathway libraries that fit the study. When files were uploaded, it also works out their layout, for example which column holds the clusters and which columns describe samples, donors or conditions.

  2. Annotating each cluster. Clusters are processed in parallel. For each one, CyteType first builds its context: pathway enrichment, which metadata values the cluster is enriched in or depleted of, and how much of it comes from its largest donor. It then weighs competing candidate identities over rounds of evidence review, looking at supporting markers, expected markers that are weak or absent, and unexpected markers. A supported identity is placed in a curated reference hierarchy of cell types, from broad lineage (L1) to specific identity (L5), linked to the Cell Ontology. CyteType moves to a more specific level only when the evidence supports it, and otherwise keeps the broader label. The cell state, such as activation or proliferation, is called separately from the identity.

  3. Refining across clusters. CyteType compares clusters with their closest relatives, using differential expression between them (computed from your cells when files were uploaded). It can add a short qualifier to tell similar clusters apart, harmonizes the wording of labels, and sorts identities that are not in the reference hierarchy into biological groups.

  4. Independent review. A separate reviewer checks each annotation against independent evidence: assessments from a panel of expert perspectives, marker genes from external databases (SingleCellBase and CellGuide), and differential genes against neighboring clusters. When files were uploaded, it also uses a classifier trained on your cells, which tests how well the key genes separate the cluster from the others, and co-expression checks for clusters that look mixed. The reviewer then:

    • assigns a confidence of High, Moderate or Low;

    • decides whether the cluster is heterogeneous and, if so, what kind (distinct populations, mixed lineage, doublet artifact, transitional state, or unresolved);

    • writes a one-sentence granular label with the cell type, state and key genes;

    • when your cluster names are labels rather than numbers or generic names, scores how closely CyteType’s label matches your label for the cluster, from 0 to 100.

  5. Finalizing. CyteType builds the study summary: display groups and colors, a marker gene dot plot and, when coordinates were provided, cluster outlines on the embedding. Then it saves the results and the report is complete.

By default, the agents use models that CyteType hosts. You can run them on your own model provider instead (see Use your own LLM).

What you get back

ResultIn your AnnData or Seurat objectIn the report
Cell type label{prefix}_annotation_{group_key} columnCluster card and the embedding
Cell Ontology term and ID{prefix}_cellOntologyTerm_{group_key} and {prefix}_cellOntologyTermID_{group_key} columnsCluster card
Cell state{prefix}_cellState_{group_key} columnCluster card and the Cell State Evidence section
Reviewer confidence{prefix}_reviewerConfidence_{group_key} columnCluster card and the Quality Control section
HeterogeneityisHeterogeneous and heterogeneityType in the per-cluster resultsCluster card and the Quality Control section
Granular labelgranularAnnotation in the per-cluster resultsCluster card
L1 to L5 hierarchyraw_annotations in the full resultsJustification section; L1 to L4 also in the CSV download
Evidence: supporting, missing and unexpected genes, justificationThe per-cluster resultsCell Type Evidence and Justification sections
Match with your own labelsraw_annotations in the full resultsFilter in the cluster list and the CSV download

{prefix} is cytetype unless you set results_prefix. In Python, get_results() returns the full results, with the per-cluster results in annotations. In R, obj@misc$cytetype_results is a table of the per-cluster results, with the full results in its "result" attribute.

Every job also has a report at https://cytetype.nygen.io/report/<job_id>. Its link is printed when the job starts and stored in your object. See Results in AnnData and Seurat for every column and key, and The CyteType report for every section of the report.

What is uploaded

Each job sends:

Your original AnnData or Seurat file is not uploaded. Note that obs.duckdb contains every column of your cell metadata, so remove columns you do not want to share before you prepare the job (before CyteType() in Python, PrepareCyteTypeR() in R). Turning off the metadata summaries with aggregate_metadata does not remove columns from the file. Security and privacy describes how uploaded data is stored and who can access it.

Treat the results as reviewed proposals

Interpret and review results explains each signal and the limits to keep in mind.

After annotation