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.

Target analysis

Target analysis turns a completed annotation job into cell-type-resolved target hypotheses, each backed by evidence you can audit. It answers two kinds of question:

The output is a ranked, annotated list of hypotheses for further study. It does not establish that any target causes disease, works or is safe; see Limits.

What CyteType adds

Requirements

Start an analysis

  1. Open the dashboard and go to Reports.

  2. Find the completed report and click Target analysis.

  3. The dialog shows the status of the job’s latest run. If you can start a run, it also shows an Analysis options (JSON) box, filled with the options of the latest run or with {}.

  4. Keep {} or edit the options (see Analysis options), then click Run analysis. After a completed run the button reads Run again.

  5. Click Refresh to update the status.

If you cannot start a run, the dialog says why: your plan does not include target analysis, your organization’s license has expired, or you are neither the owner nor a member of the job’s organization. You can still view existing results.

A job has one current run at a time:

Analysis options

The options are a JSON object. {} lets CyteType infer everything from the study. Each key you add narrows the analysis; unknown keys are rejected.

KeyValueEffect
diseaseText, for example "ulcerative colitis"Names the indication instead of inferring it from the study description and metadata. It is matched to a disease term in the Open Targets knowledge base; if no term matches, the disease stays unresolved.
diseaseArea"oncology", "immunology", "neurology", "metabolic" or "general"Overrides the area inferred from the disease. The area sets the scoring weights, which evidence counts as genetic support, whether a known cancer driver counts as a safety liability (it does not in oncology), and the area-specific interpretation questions.
targetsA list of up to 50 objects {"gene": "...", "direction": "..."}; direction is optional: "inhibit", "activate" or "deplete"Switches from discovery to target assessment of these genes. Each gene may appear once. deplete means removing the cells that carry the target.
modalitiesA list from "smallMolecule", "antibody", "antibodyDrugConjugate", "cellTherapy", "oligonucleotide", "proteinDegrader", "geneTherapy"Restricts candidates to targets that these modalities can act on, and adds a question about modality fit.
cellTypesA list of up to 20 cell typesRestricts the populations in scope. Each entry is matched to the CyteType label, granular label, lineage levels or Cell Ontology term of the populations (a Cell Ontology ID such as "CL:0000236" also works); without an exact match, a model chooses among the populations. A cell type that matches nothing stops the run with an error rather than widening the scope.
comparison{"conditionColumn": "...", "diseaseLabels": [...], "referenceLabels": [...], "donorColumn": "..."}; donorColumn is optionalFixes the condition column, the disease and reference labels and, optionally, the donor column instead of inferring them. The column and labels are cell metadata column names and values; disease and reference labels must not overlap, and a column or label that does not exist stops the run. The other design checks still apply, so the design can still become descriptive.

Discovery with an explicit disease and cell types:

{
  "disease": "ulcerative colitis",
  "cellTypes": ["fibroblast", "CL:0000236"]
}

Target assessment for antibody targets:

{
  "targets": [
    {"gene": "TNF", "direction": "inhibit"},
    {"gene": "IL23A"}
  ],
  "modalities": ["antibody"]
}

An explicit comparison:

{
  "disease": "ulcerative colitis",
  "comparison": {
    "conditionColumn": "disease",
    "diseaseLabels": ["ulcerative colitis"],
    "referenceLabels": ["normal"],
    "donorColumn": "donor_id"
  }
}

When you leave disease out and the study profiles more than one disease in separate patient groups, the run stops and asks you to name one: “The study profiles several diseases: ... Name the one to analyse in the request’s disease field; each needs its own run.”

How a run works

The status line shows the current stage:

StageWhat it does
loadReads the job’s annotated populations and uploaded files
routeDecides the objective, disease, disease area, modalities and populations in scope
designPlans the disease-versus-reference comparison from the metadata, or explains why there is none
measurementsComputes expression, specificity, disease association and changes in population abundance from the raw counts
knowledgeCollects public facts from Open Targets for every gene that can become a candidate
scoringScores and ranks candidates under two lenses and checks how stable the rankings are
interpretationAsks a model short questions about the top candidates

Only the route, design and interpretation stages use a language model. In the route and design stages, the model’s choices are checked against the options offered. Every number comes from computation, and model interpretations never change scores.

Results

When a run is complete, click Open results JSON in the dialog. It opens the run record and its result as JSON in a new tab, where you can save it. The report page does not display target analysis results.

The result holds:

KeyContent
requestThe options the run used
routeThe objective, disease, disease areas, populations in scope and the routing decisions, each with its source
designcomparative or descriptive; the donor and condition columns, disease and reference labels, donors per group, covariates, compared sites, checks and decisions
populationsPer population: cell counts, the disease association and abundance-shift summaries, the top 5 candidates under each lens, and any conflict between the annotation and where the population is found
rankingsOne ranking per lens (novelty and validation), with the criterion weights and the top 25 candidates in discovery, or every candidate in target assessment
interpretationsThe model’s answers about the interpreted candidates (at most 30)
genesPublic facts for the ranked genes
knowledgeThe Open Targets release used and what could not be resolved
exclusions, unmeasuredTargets, limitationsHow many candidates were excluded and why, requested targets that could not be measured, and the limitations computed for this run
versions, stageSecondsVersions of the result schema, playbooks, thresholds and scoring, and the time each stage took

Which genes become candidates

In discovery, a gene becomes a candidate in a population when at least 5% of the population’s cells, and at least 5 cells, express it (in a comparative design, of the compared disease and reference cells). Non-protein-coding genes, gene symbols shared by more than one gene in the data, genes that none of the requested modalities can act on, and genes characteristic of another cell type (most likely doublets or contamination) are dropped; exclusions counts them. In target assessment, every requested gene is kept in every population in scope, and these conditions become flags instead.

Read a ranked candidate

Each candidate is a gene in a population (in discovery, each gene appears once, at its best population, with the other populations that score nearly as well listed). It has:

CriterionMeaning
Disease associationDonor-level expression change between disease and reference within the population
Population shiftDonor-level change in the population’s abundance with disease
Population specificityExpression in the population relative to other cell types in the dataset, scaled by the share of donors who express it
Tissue specificityBody-wide tissue specificity from public expression atlases
Genetic supportHuman genetic evidence linking the gene to the disease
TractabilityEvidence that a requested (or any feasible) modality can act on the target
SafetyAbsence of known on-target safety liabilities
Clinical precedentThe most advanced clinical program against the target in any indication
Indication activityClinical programs against the target in this disease or its subtypes

The two lenses weight the criteria differently. novelty favors strong data signals on targets with little clinical precedent or indication activity, and in most disease areas gives population specificity more weight; validation favors strong data signals on targets with clinical precedent. Each ranking in the result lists its weights.

FlagMeaning
notExpressedExpressed by fewer than 5% of the population’s cells, or by fewer than 5 cells
ambiguousSymbolThe gene symbol is shared by more than one gene in the uploaded data
notProteinCodingNot a protein-coding gene
notInKnowledgeBaseNo single matching entry in the knowledge base
modalityIncompatibleNone of the requested modalities can act on it
directionConflictThe requested direction is the opposite of the one the data imply
exploratoryDonorCountThe comparison has fewer than 3 donors in a group
lowAnnotationConfidenceThe population’s reviewer confidence is Low
heterogeneousPopulationThe population was flagged as heterogeneous
ambientLikeShiftThe disease shift may come from another population’s RNA (ambient RNA or doublets)
otherCellTypeGeneThe gene is characteristic of another cell type and most likely comes from doublets or contamination
annotationContextConflictThe population’s annotation conflicts with where it is found, for example a non-malignant cell type found only in disease

Claims ladder

What a result can support depends on the data the job holds:

Data availableClaims allowedClaims not allowed
Annotation only, no uploaded filesNone: the run fails
Raw counts and cell metadataExpression level, fraction of cells expressing, specificity in the profiled tissueDisease association; specificity outside the tissue
Donors with disease and reference labels, at least 3 donors per groupDonor-level disease difference within a population, donor consistency, change in abundanceCausality; benefit of an intervention

Comparisons with 2 donors per group run, but count as exploratory: their disease-association score is halved and they get the exploratoryDonorCount flag. Small cohorts detect only large changes, so a gene without a significant change may still differ.

Limits

Target analysis never claims:

  1. Causality. An expression change can follow from disease rather than cause it.

  2. Efficacy or benefit of an intervention.

  3. Safety clearance. RNA from one tissue cannot clear safety.

  4. Protein presence, surface accessibility or activity. Surface location comes from public annotations, never from the RNA data.

  5. Novelty, freedom to operate, patent position, licensing or market size. The novelty lens reflects only how little public clinical activity a target has.

  6. Generalization beyond the cohort without replication.

  7. Absence from missing evidence. An untested gene is not a null result.

No output approves a target for development. Also keep in mind:

Who can see the results

Target analysis results belong to the report’s data, so everyone who can open the report can read them: the people you share it with, members of your organization for an Organization report, and anyone with the link for a public report (see Visibility and sharing). In the dashboard, the Target analysis button of a personal report shared with someone shows them the results without letting them start a run. Members of the job’s organization can start runs on its reports if their plan includes target analysis.

AI assistants connected through the MCP connector can read the latest run with the get_target_discovery tool: its status and options, the disease and comparison design, the populations in scope with their disease-associated gene counts and abundance shifts, the top candidates of each lens (10 by default, at most 25) with their scores, coverage, direction, flags and key evidence, and the run’s limitations. While the latest run is queued, running or failed, the tool reports that status instead of results. The connector cannot start a run.