Skip to content

Releases: pirl-unc/oncoref

OncoRef 1.29.0: normal-tissue hazard ontology

Choose a tag to compare

@iskandr iskandr released this 03 Nov 21:42
3f6d8b5

OncoRef 1.29.0 adds a central, evidence-linked Vital / Protected / Manageable / Disposable ontology for adult human normal tissues.

  • 107 assessments: 39 bulk tissues and 68 cell populations, with 50 references and separate rationale for acute loss, sustained injury, repair and compensation.
  • Shared decisions across RNA, IHC and the existing rare-cell screen. Ciliated/goblet lung cells are Protected; alveolar and key regenerative compartments remain Vital. Protected rare-cell findings now create explicit review holds.
  • 625 CTA / 18,351 Unsafe / 628 Other, with 104 classification changes against 1.28.0. Every change retains source-specific evidence and exclusion reasons. Complete and cached replays are byte-identical.
  • A searchable report, a 46-page PDF, four SVG/PNG figures, CSV/JSON inventories and an updated 39-slide walkthrough. The inventory covers 123 canonical human anatomy concepts and 1,072 native mapping rows, including unresolved scopes.
  • The attached report bundle contains the searchable HTML, tables, registry and figures for offline use. Historical decisions and source hashes remain reproducible; the wheel includes the registry and rare-cell provenance.

Ontology and API · Complete evidence report · Searchable report · Release details and classification changes · PR #661

These tiers are qualitative protection priorities for research, not measured fatality probabilities. Receptor recognition is a separate question; nonadult/nonhuman hazard calls remain unresolved. Existing numeric screening thresholds are unchanged and are not clinical safety limits.

v1.28.0

Choose a tag to compare

@iskandr iskandr released this 03 Nov 18:10
24cca28

PyPI package: https://pypi.org/project/oncoref/1.28.0/

This release was published by ./deploy.sh after local lint and test checks passed.

OncoRef 1.27.1: withhold artifacts derived from invalid-scale sources

Choose a tag to compare

@iskandr iskandr released this 03 Nov 04:44
e4dff1e

Refs #604 (the source repair itself is not done).

per_sample_expression already rejected the legacy UNC NUTM1 source, but artifacts derived from it were still served: cancer_reference_expression("NUTM") and cohort_gene_percentiles("NUTM") returned the invalid summaries without warning, and some readers returned an empty frame for a named invalid cohort.

Every reader now consults the availability manifest's source_scale_class for the cohort's selected source (registry-driven, so it applies to any source later marked invalid_legacy_tpm):

  • Percentile, representative and within-sample readers raise ValueError for a named invalid cohort; available_*_cohorts() omit it.
  • cancer_reference_expression raises for a named invalid cohort whatever on_missing says, and omits it with a UserWarning from default listings.
  • The summary_rows_all source-union view omits an invalid source with a warning unless it is named, and still returns a valid source such as Treehouse.
  • cancer_reference_expression_availability() still describes the source, with available=False and missing_reason="invalid_source_scale".

Valid cohorts are unaffected.

Still open (#604): recover or verify linear expression, rebuild and version the source and all derived NUTM artifacts, reassess NUTM1 ranks, declare a common ranking universe for cross-source percentiles. The controlled input is not in this repository. Consumers that read raw artifact files directly (e.g. the PirlyGenes compatibility reader) bypass these guards.

See docs/audits/nutm-expression-scale.md.

OncoRef 1.27.0: simpler decisions and adult Disposable evidence

Choose a tag to compare

@iskandr iskandr released this 01 Nov 23:29
82f97b9

OncoRef 1.27.0 makes the final decision independent of descriptive evidence attributes.

Decision Proteins
CTA 701
Unsafe 18,062
Other 453
Unassessed 647

All 701 previous CTAs and all 18,062 previous Unsafe assignments remain. Other now records only the unmet identity requirement: 448 Nonreproductive and 5 Diffuse (Reproductive without cancer currently zero).

cta_selection.profiles() exposes native-unit tumor and normal RNA, tumor replication, measurement support, adult Disposable expression and developmental evidence as independent columns. Replace old Low/Weak/Normal/Tumor-supported/Disposable subtype filters with those attributes. They can overlap without changing the categorical decision.

Disposable designates an allowed adult compartment. The adult Disposable-only expression pattern no longer requires measured/low developmental expression: TCHHL1, LCE3B and LCE3C have the adult pattern among Other proteins, with missing developmental measurements explicitly retained.

The only top-level movement is OR10A4, Other → Unassessed after reviewed adult human nasal/olfactory RNA in two primary studies. Original donor spreadsheets are pinned through the shared cache API at version 2014-05-06. Native qPCR is not converted to TPM or treated as protein/clinical toxicity.

Simple rules, four protein reviews and exact data · Release and migration · Full source report · 37-slide logic PDF · Editable slides · PR #658

Validation: 2,838 local tests passed / 22 skipped; targeted policy/API/species/provenance checks, artifact receipts, strict docs, package builds and built-wheel API passed. Current safety ceilings, known CTA membership and species/reference boundaries are preserved. Historical sequence bundles remain independently versioned; translation QC and rare-normal coverage are separate requirements.

OncoRef 1.26.0: reviewed normal-cell evidence and Other audit

Choose a tag to compare

@iskandr iskandr released this 31 Oct 04:36
ff366ed

OncoRef 1.26.0 adds reviewed rare-normal-cell and activated-immune evidence to the independent normal-safety assessment, with a complete audit of all 600 previous Other proteins.

Category Proteins
CTA 701
Unsafe 18,062
Other 454
Unassessed 646

All 698 previous CTAs remain. CDY1/B, OR2T7 and BPY2/B/C are added. Of the 600 baseline Other proteins: 3 become CTA, 31 Unsafe, 112 receive review holds and 454 remain Other.

Normal safety, cancer presence and reproductive identity remain independent. Existing RNA/IHC safety ladders are unchanged. Any positive measured tumor RNA now attests to cancer presence; reliable reproductive protein supplies presence independently of the RNA-only floor. Neither overrides safety, concentration or required coverage.

gene_knowledge.findings() exposes 210 accepted, source-linked findings with exact identities, tissue/cell/state, native units and limitations. All 611 baseline Other genes were searched; search retrieval is distinct from individual paper adjudication. The human olfactory supplement uses the shared pinned reference/cache API.

cta_selection.sequence_dispositions() provides direct-target and shared-sequence screening roles: CTA candidate; Unsafe exclude; Other allow under the named policy; Unassessed review. These do not establish peptide/HLA clearance or update the independently versioned legacy FASTA. MROH5/SERPINA2 translation QC remains tracked in #657; mapped identity is not a complete-translation guarantee. Human rules do not transfer to dog/mouse by orthology.

Release guide · Complete 600-protein audit · Funnel and logic · Rules/API · Reviewed PR #656

Attached: the 31-page protein audit, 36-slide logic PDF and editable PPTX, 9-page TCR-T safety report, per-protein decisions, reviewed findings, native normal measurements, 143-cohort cancer audit and package artifacts.

Complete and cached full-context replays are byte-identical. Artifact hashes, all 600 decisions, high-raw holds, package API, documentation and rendered reports were verified. Validation: 2,836 local tests passed / 22 skipped; all eight CI checks passed, including Python 3.10–3.14 and Windows. Detailed results are recorded in the PR.

OncoRef 1.25.0: categorical protein decisions

Choose a tag to compare

@iskandr iskandr released this 31 Oct 01:57
084fd1f

OncoRef 1.25.0 provides a categorical decision for every assessed protein: CTA, Unsafe, or one of eight named Other categories. Missing required normal evidence or unresolved normal-screen holds remain Unassessed.

698 CTA / 600 Other / 18,031 Unsafe / 534 Unassessed across 19,863 representative proteins. The 698 CTAs cover 741 gene loci. All 522 prior CTAs remain included; Unsafe membership is unchanged.

Other category Proteins
Low 254
Normal 171
Weak 92
Tumor-supported 66
Diffuse 8
Inducible 5
Reproductive 2
Disposable 2

Reproductive admission now uses the full mapped bulk panel, reliable reproductive IHC, supported reproductive-cell RNA, or supported developmental RNA. Indirect signals in generic/immune cells require complete outside-cluster coverage, all outside values below 5 nTPM, and no published normal-induction conflict. IFNA2/14 remain Other:Inducible. Safety, cancer, coverage and concentration gates remain independent.

from oncoref import cta_selection
cta_selection.results()[["label", "classification", "reasons"]]
cta_selection.results(category="Other", subtype="Low")

The old category="Neither" query is a deprecated alias for Other. candidates() returns CTA only. Native dog/mouse nominations remain Unassessed. Existing legacy CTA and exact-protein/k-mer background APIs retain their separate versioned policies.

Full report and funnel · Rules and API · Every category and change · Clinical SAE review · Reviewed PR #652

Assets include the 35-slide PDF and editable deck, one-page logic PDF, clinical SAE PDF, and categorical CSV tables. Complete/cached replays are byte-identical. Exact-head CI passed Python 3.10–3.14, Windows, lint and minimal-install checks; installed-wheel, source-archive, receipt and strict documentation checks passed.

These are research screening assignments, not clinical safety or clearance of every epitope. Raw values without adequate read/cell support remain explicit (Other:Weak); the 66 Tumor-supported proteins require rare-normal-context review. Human decisions do not transfer through orthology.

Publication note: the GitHub trusted-publisher exchange failed with invalid-publisher (run). The tested wheel and source archive were then uploaded successfully using the repository's existing PyPI credentials. Trusted-publisher configuration remains tracked in #371.

OncoRef 1.24.0 — TCR-T clinical evidence and serious events

Choose a tag to compare

@iskandr iskandr released this 30 Oct 03:59
9394771

Adds a reviewed TCR-T clinical-evidence layer, a serious-event summary in the CTA curation report, and reproducible PDF/slides and tables.

Selection unchanged: 522 CTA proteins (558 loci), 18,031 Unsafe, 20 Neither and 1,290 unassigned. CTAG2 remains CTA.

  • Eight products, nine cohorts and eleven sentinel events, with exact peptide/HLA/protein mappings and linked primary evidence. Twelve source artifacts use the uniform pinned cache; 55 peptide/isoform links were sequence-verified.
  • A qualifying reviewed cohort grants one RNA ladder step, capped at Enhanced-negative. Protein/clinical-injury exclusions and other eligibility requirements remain. Trials do not stack or transfer through protein families or species.
  • Treatment toxicity is distinguished from evidence of antigen-specific injury. MAGE-A3 titin/neurological signals and TBI-1301's unresolved lung injury block credit for those products. c259's late cardiac event and Guillain–Barré cases remain explicit caveats.
  • New offline API: oncoref.tcr_trials; CLI: oncoref tcr-trials --table all. Explanations expose baseline/effective ceilings and supporting product IDs.

Clinical review and nine-page PDF · Full curation report · Release guide · PR and validation

Policy: oncoref.cta-selection.2026-10-29.4. This is a targeted literature review and research screening policy, not an exhaustive SAE registry or clinical clearance of every peptide from a protein. The attached protein-selection table contains all categories; the PDF, tables and checksums preserve the review trail. Downstream k-mer backgrounds remain separately versioned.

Reference provenance migration

The regenerated selection now uses the verified full Ensembl 115 reference already introduced in the common reference API by 1.23.1. That release deliberately retained its older frozen selection table; rebuilding the table in 1.24.0 updated reference_id on all 19,863 result rows and the selection coverage metadata:

  • Previous selection: openvax:reference:v1:sha256:00bdffd455b7227d0b77e8f7a67d7e2e3d8146526281f2ed33a154b1f10b01d2.
  • Current selection: openvax:reference:v1:sha256:ba6f6186a301a3ef9217ea0199ec3b851f9da2eb43558b7ba7e0d6fcd9cd85e9.

The human reference assets and mapping implementation are unchanged from 1.23.1. Protein group IDs, member loci and category assignments are unchanged. Preserve the new reference ID and policy/source snapshot; do not treat these two hashes as aliases for identical reference definitions. The current selection reference equals human.cta_snapshot().as_dict()["references"][0]["identity"] and is available through cta_selection.coverage()["reference"]. This is a provenance update, separate from the clinical RNA-credit rule.

v1.23.1

Choose a tag to compare

@iskandr iskandr released this 29 Oct 21:22
4423162

Human CTA snapshots now retain every annotated transcript/protein alternative against pinned Ensembl 115 sequence assets. The same optional-data API and CLI verify those assets for humans, dogs and mice. Historical assay references, source observations and saved snapshots preserve their original identities.

  • PR #649; closes #599.
  • 2,533 candidate genes, 21,500 versioned RNAs and 17,123 transcript/protein pairs; bundled mapping 2.2 MB.
  • 2,821 local tests passed, six optional skips; all eight CI jobs passed on the reviewed head. Source archive, normal installed wheel, strict docs and independent sequence/source audits passed.
  • Published tested artifacts match the clean merged tree. Sequence mappings do not establish isoform abundance or reproductive restriction.

PyPI: https://pypi.org/project/oncoref/1.23.1/

OncoRef 1.23.0: reproductive concentration and common coverage

Choose a tag to compare

@iskandr iskandr released this 29 Oct 20:38
4f29737

CTA identity and normal-tissue safety are separate

This release contains 522 human CTA proteins (558 member loci), 18,031 Unsafe, 20 Neither and 1,290 unassigned. PRAME, MAGE-A4, NY-ESO-1, XAGE1A/B and CTAG2 remain selected by the general rules. Research classifications do not establish clinical safety.

The new reproductive-concentration score averages N / (N + R) over a fixed HPA v23 panel of 38 normal contexts / 29 equally weighted anatomical units. Disposable tissues count; thymus is Permissive and excluded from both comparator and reference. Above 10% blocks a complete adult/placental route with reproductive RNA ≥5 nTPM. Supported embryonic evidence remains independent, with concentration explicitly unassessed.

Diffuseness alone moves MTCP1 from CTA to Neither. The same single move occurs at boundaries from 7.5% through 20%. It does not change any Unsafe assignment. Compared with 1.22, another 23 CTAs and one Neither protein move to unassigned because every member locus now requires the full 52-context GTEx v11 core. The old reproductive-versus-highest-normal veto is removed.

Normal-tissue safety and cancer-expression rules are unchanged. Missing measurements remain missing; source units and donor/assay limitations remain visible. Seven adult-positive CTAs lack a complete HPA contrast and have explicit unassessed flags. Developmental concentration still needs compatible adult/developmental measurements.

Reports, tables and migration

Attached: 30-slide PDF, diffuseness PDF, ZNF730 calculation PDF, complete protein decisions, calculation tables and SHA256 checksums. Scripts for reports and slides are committed.

Use cta_selection.results(species="human", category="CTA"); schema unchanged. Pin package 1.23.0, policy oncoref.cta-selection.2026-10-29.3, and source snapshot IDs. Preserve evidence flags and null categories. Old Disposable/Silent sets and k-mer backgrounds retain separate policies; their migration is tracked in #647.

Preserves all 1.22.1–1.22.3 additions: mouse P1A native evidence, managed dog protein datasets and optional peptide assignments. Native dog/mouse quantitative CTA selection remains unassessed; human evidence never transfers through orthology.

Validation includes identical complete/cached replays, independent score recalculation, unchanged Unsafe membership, retained-target checks, installed-wheel APIs, source-archive identity tests, strict docs, lint and the PR CI matrix. See PR #648.

Publication: uploaded the tested artifacts through the repository's established Twine path after the GitHub trusted-publisher exchange returned invalid-publisher. PyPI files and decision bytes were verified against the reviewed release; Pages deployment and PDF checksums were also verified.

v1.22.3

Choose a tag to compare

@iskandr iskandr released this 29 Oct 19:24
cf814fc

Expression datasets now expose optional assignment sources through evidence_sources() and with_evidence(source_id, feature_ids=...). The dog integration consumes ORFdata's pinned, released peptide evidence, preserving all candidate proteins, reported memberships, native confidence/exclusion fields and exact source identities in portable exports. Values, missingness, contracts and donor counts are unchanged.

The optional dataset is discoverable/acquirable through the existing oncoref data commands. Enrichment defaults to offline use with a zero transfer budget; ordinary reads remain summary-only. The full optional release transfers 6.9 GB and occupies 24.7 GB installed. Bounded validation uses the producer's audited native/synthetic fixture, avoiding a large local download.

PR: #646
Closes #585 after PR #645.
PyPI: https://pypi.org/project/oncoref/1.22.3/

Validation: all eight CI checks passed, including Python 3.10–3.14, minimal installs and Windows. 134 focused local tests, lint and strict docs passed; 13 evidence checks passed from the extracted source archive. A normal wheel with public ORFdata 0.42.2 produced a 130,566-byte selected-evidence export that replayed without ORFdata or PyEnsembl. The exact tested distributions were published after comparing package contents and merged/tested trees. Attached receipts retain source/artifact hashes and acceptance scope.