Spec
| Target | GO term prediction (cellular component) — GO release 2026-05-19 (OBO) / GAF 2026-05-21, experimental-evidence only, terms with 15-500 annotated genes, paralog/gene-family-aware split (Ensembl Compara family ids). SUPERSEDED by 0.0.3 — labels are not true-path consistent: the recipe selected an upstream relation=='propagated' closure that was computed over the unfiltered corpus BEFORE the GENCODE v49 / IEA filters ran, so ~293k direct annotations were dropped and 29.77% of is_a edges have genes(child) not a subset of genes(parent). S-min here is weighted by marginal Resnik ic, whereas 0.0.3 weights it by conditional information accretion ia — a different measure, not on the same scale, so S-min values are not comparable across the two. Retained for provenance and for pinned adapters; use 0.0.3 for new work. |
|---|---|
| Axis | Function & pathways — Molecular function, biological process, and pathway membership. |
| Shape | Term membership (multi-label) · metric family: f_max |
| Task | gene_function_classification / gene_function |
| Dataset | ashburner_2000_nature_genetics/go_cc@0.0.2 |
| Publication | ashburner_2000_nature_genetics |
| Metrics |
|
| Temporal discovery | no — held-out genes |
| License | Declared per SPDX in the dataset's recipe README ↗ (commercial-use gated by CI). |
| References |
|
IO contract
- ic_column
- ic
- pairing_key
- gene_term
- required_metadata
- gene_id, term
- target_kind
- binary
What the prediction looks like
This eval has the term membership (multi-label) shape. The figure is seeded to it — drag the control to watch the score respond.
A gene × term grid — which terms does the gene carry?
Used by GO · pathways · HPO · disease · domains · cell-type & tissue markers · lineage · temporal discovery
Truth is sparse — most cells are 0. The model emits a probability per cell (the shading); Fmax sweeps the threshold to the best-F1 operating point, so no single arbitrary cutoff is punished. Cell-type, lineage and temporal-discovery evals reuse this exact grid.
Run it
Fetch the censored splits, predict, score — task and dataset filled in.
import prima_bench as pb
# Downloads on demand into the local cache; returns local Paths.
train_path, test_path = pb.fetch_data(task="gene_function_classification", dataset="ashburner_2000_nature_genetics/go_cc@0.0.2")
train = pb.load(train_path, task="gene_function_classification", split="train", dataset="ashburner_2000_nature_genetics/go_cc@0.0.2")
test = pb.load(test_path, task="gene_function_classification", split="test", dataset="ashburner_2000_nature_genetics/go_cc@0.0.2")
# Your model produces predictions aligned to the eval input.
predictions = my_model(test)
# Score against the censored solution over this task's metric panel:
# gene_function_term_auprc, gene_function_term_auroc, gene_function_micro_auprc, gene_function_fmax, gene_function_smin
run = pb.Evaluation(task="gene_function_classification", dataset="ashburner_2000_nature_genetics/go_cc@0.0.2")
run.update(predictions=predictions) # one-shot; or stream shard-by-shard
result = run.compute() # -> EvalResult
print(result)
Results
Awaiting scored models — the row scaffold is live; numbers land with results.json.
Awaiting results · prima-bench
go_cc · leaderboard
results.json wired up yet. The eval scaffold below is live; drop a document matching src/data/results.schema.md at src/data/results.json (or pass a results prop) and every bar fills in. Each track's tick marks the chance baseline.Gene Function
1| Eval | Score | awaiting |
|---|---|---|
go_ccashburner_2000_nature_genetics/go_cc@0.0.2 | — |