Methodology
How the Oncology Failure Atlas dataset is built, classified, scored, and audited.
Pharma Innovation Research by Sebastian Azar · Current release: 11,525 production records · Last reviewed: June 2026
1. Methodology Summary
The Oncology Failure Atlas (OFA) converts public records of terminated and withdrawn oncology trials into a structured, source-linked atlas of reported discontinuation patterns.
The current production dataset combines public trial metadata, supplementary evidence layers, a discontinuation-pattern taxonomy (MDIP™), transparent confidence labels, and a deterministic historical recurrence signal (RecurSignal™) — all calculated across the full 11,525-record dataset and reproducible from the documented inputs.
2. Why OFA is useful
Public discontinuation data is scattered across registries, publications, and regulatory databases. OFA brings it into a single comparable structure so users can:
- identify recurring discontinuation patterns across sponsors, phases, and indications
- compare similar reported trial failures side by side
- surface evidence gaps in publication and safety reporting
- generate better-informed research and portfolio-review questions
OFA is a research and question-generation layer. It is not designed for clinical, regulatory, or investment decision-making.
3. Dataset Scope
The current production dataset contains 11,525 terminated and withdrawn oncology trial records from ClinicalTrials.gov, deduplicated by NCT ID.
Inclusion criteria
- Trial status: Terminated or Withdrawn
- Registered on ClinicalTrials.gov
- Intervention type: drug or biological
- Oncology indication
Dataset totals
| Metric | Value |
|---|---|
| Total trials in production | 11,525 |
| MDIP™ classified records | 11,525 |
| RecurSignal™ scored records | 11,525 |
Technical note — dataset history
The current dataset combines the original 5,000-record baseline with 6,525 newly added records. This matters only because the original baseline and newly added records used different classification workflows before being harmonized for the current release. The relevant labels in internal documentation are Phase 1 (original baseline) and Phase 2 (newly added records).
Mechanism Harmonization (product-facing mechanism source)
Product-facing mechanism is read exclusively from public.trial_mechanism_harmonization.harmonized_mechanism_class, joined to trial records by nct_id. Mechanism filtering, mechanism distributions, and mechanism-based views never read the legacy raw public.trials.mechanism_class field.
- Product-facing mechanism source:
trial_mechanism_harmonization.harmonized_mechanism_class. - Legacy / raw / contaminated:
public.trials.mechanism_class— present in the base table but excluded from product surfaces. - Why this matters: the raw field mixes naming conventions, formulations, and drug-class aliases. Harmonization is the only source consistent enough to drive mechanism filtering and comparison.
MDIP™ categories are discontinuation-pattern categories — not biological mechanisms. Do not conflate the two: MDIP describes why a trial stopped (publicly reported), while harmonized mechanism describes what the intervention targets.
4. Data Sources and Evidence Coverage
ClinicalTrials.gov is the primary source for trial metadata and reported discontinuation language. Each trial is linked to additional public evidence layers used for classification and reviewer-side audit.
ClinicalTrials.gov
Primary source for trial metadata. The why_stopped field is the main input to rule-based classification for newly added records.
PubMed
PubMed coverage rows are calculated across all 11,525 records.
- DIRECT_NCT — direct NCT ID match in abstract or title
- TITLE_SIMILARITY — title-similarity match used as fallback
- NONE — no matching PubMed signal identified
OpenFDA
OpenFDA coverage rows are calculated across all 11,525 records.
- EXACT — exact drug name match
- FUZZY — fuzzy name match used as fallback
- NO_MATCH — no matching OpenFDA signal identified
CrossRef
CrossRef is a supplementary positive DOI-link layer. It surfaces additional DOI-to-NCT links where available, but it is not interpreted as a complete publication-absence layer.
EMA EPAR matching and interpretation
OFA's EMA EPAR layer is a public-source regulatory-document context layer. It links OFA trials to EMA human medicine / EPAR context only when an exact medicine or intervention-name match was resolved during backend processing. The purpose is to show whether public EMA context is available for a matched medicine name, not to interpret the outcome of the OFA trial.
EMA context must not be read as trial-level regulatory assessment. It does not establish causality between a discontinued trial and an EMA decision, and it does not support conclusions about clinical risk, safety, efficacy, approvability, commercial value, treatment choice, or asset quality. Missing EMA context means only that the current matching process did not resolve a match.
The first backend integration excluded veterinary records, excluded fuzzy matches, avoided exposing full EPAR text, and avoided exposing raw EMA JSON. Broad-context and review-only matches remain backend-only unless separately reviewed and approved for product exposure.
Coverage rows indicate that the source was searched and categorized for each trial; they do not mean that a publication or safety record was found for every trial.
Important caveat. A NONE or NO_MATCH result means no match was found by the current public-data matching process. It does not prove absence of scientific, publication, regulatory, or safety evidence for that trial.
5. How MDIP Classification Works
MDIP = Mapped Discontinuation Intelligence Patterns. MDIP is OFA's discontinuation-pattern taxonomy. It maps public stop-reason language from terminated or withdrawn oncology trials into structured, comparable categories. MDIP classifies publicly reported stop-language, not definitive root cause, and it does not classify biological mechanisms. Categories are research-navigation labels, not final root-cause determinations.
Source. Public stop/discontinuation language — primarily the ClinicalTrials.gov why_stopped field, plus related trial metadata where available.
Deterministic mapping. Rules map reported stop language into MDIP categories. The same input always produces the same category.
Unclear handling.
UNCLEAR_NOT_SPECIFIED— no usable stop reason reported.UNCLEAR_WHY_STOPPED_REPORTED— stop reason exists but is too ambiguous to map to a specific category.
The current dataset uses two complementary classification workflows that have been harmonized into a single output:
- Original baseline records were classified using an audited classification workflow with rule checks, evidence consistency checks, and a confidence governor.
- Newly added records were classified using deterministic MDIP rules applied primarily to the ClinicalTrials.gov
why_stoppedfield, with no LLM in the loop.
For records classified from why_stopped, the deterministic rule order is conservative:
- If
why_stoppedmatched a defined MDIP rule, the first matched category was assigned. - If
why_stoppedwas present but did not match a defined rule, the record was assignedUNCLEAR_WHY_STOPPED_REPORTEDwith LOW confidence. - If
why_stoppedwas absent but secondary public context matched a rule, a context-based category could be assigned with LOW confidence. - Otherwise, the record was assigned
UNCLEAR_NOT_SPECIFIED.
Unclear categories are intentionally preserved. They represent transparent limits in public reporting, not missing work or hidden classifications. Generic phrases such as “study halted prematurely” are not treated as INVESTIGATOR_SITE_OPERATIONAL unless an additional cause is present in the source text.
MDIP™ short codes (display)
| Code | Description |
|---|---|
| EFF | Efficacy — did not demonstrate sufficient clinical benefit (reported) |
| BMK | Biomarker — patient selection or stratification issue (reported) |
| TOX | Toxicity — safety signal led to discontinuation (reported) |
| DES | Design — protocol, endpoint, or statistical design (reported) |
| REC | Recruitment — insufficient enrolment or retention (reported) |
| STR | Strategic / portfolio discontinuation (reported) |
MDIP audit table
| MDIP category | What it captures | Example public stop language | Caveat |
|---|---|---|---|
| Recruitment / Enrollment | Insufficient enrolment, slow accrual, or inability to retain participants. | “Low accrual.” / “Slow recruitment.” | Operational signal — does not imply lack of scientific merit. |
| Sponsor Strategic / Portfolio | Publicly reported sponsor, business, or pipeline/portfolio decision. | “Business decision.” / “Sponsor portfolio prioritization.” | Public reason only — underlying motivation is not verified. |
| Efficacy / Futility | Interim analysis, futility finding, or lack of demonstrated clinical benefit. | “Did not meet efficacy endpoint.” / “Futility analysis.” | Reflects reported outcome, not a final scientific conclusion. |
| Safety / Toxicity | Reported safety signal, adverse event pattern, or toxicity concern. | “Safety concerns.” / “Adverse events.” | Reported safety language — not a regulatory determination. |
| Funding / Resource | Loss of funding, grant termination, or sponsor financial constraints. | “Loss of funding.” / “Grant ended.” | Resource signal — independent of scientific outcome. |
| Unclear / Not Specified | No usable stop reason reported. | (empty why_stopped field) | Transparent bucket — not a hidden classification. |
| Unclear Why Stopped — Reported | Stop reason exists but is too ambiguous to map to a specific category. | “Study halted prematurely.” / “Administrative reasons.” | Preserved on purpose to flag ambiguous public language. |
Technical note — classification workflows
The original baseline used a Claude-assisted workflow with audit checks. Newly added records used deterministic MDIP rules without Claude or any LLM. The dashboard does not call an LLM at render time.
6. Confidence Labels
Every classified record carries a confidence label that reflects evidence clarity in the underlying public sources. Confidence labels are not guarantees of correctness; they describe how clear the reported signal is.
| Label | Meaning |
|---|---|
| HIGH | Clear, corroborated public discontinuation language |
| MEDIUM | Reported discontinuation language is consistent but partial |
| LOW | Reported language is sparse, ambiguous, or matched a fallback rule |
| UNKNOWN | Insufficient public context to assign a confidence tier |
7. How RecurSignal Is Calculated
RecurSignal™ is the current deterministic historical recurrence signal, calculated across all 11,525 records after MDIP classification.
discontinuation-category base weight
+ trial phase weight
+ classification confidence modifier
Output is capped between 5 and 95 to avoid false precision at the extremes. The current full-dataset average is 44.0 across 11,525 records.
RecurSignal is not a prediction, probability, forecast, risk score, clinical recommendation, or investment signal. It is a retrospective signal designed to show where similar publicly reported discontinuation patterns have appeared before.
Discontinuation-category base weights
| Category | Base weight |
|---|---|
| SAFETY_TOXICITY / TOX | 72 |
| EFFICACY_FUTILITY / EFF | 65 |
| BIOMARKER / BMK | 58 |
| FORMULATION_PK_OPTIMIZATION | 50 |
| REGULATORY_ADMINISTRATIVE / DES | 45 |
| SPONSOR_STRATEGIC_PORTFOLIO / STR | 42 |
| MANUFACTURING_SUPPLY | 40 |
| FUNDING_RESOURCE | 38 |
| SPONSOR_SUPPORT_WITHDRAWAL | 38 |
| RECRUITMENT_ENROLLMENT / REC | 35 |
| SPONSOR_REQUESTED_UNSPECIFIED | 35 |
| INVESTIGATOR_SITE_OPERATIONAL | 30 |
| UNCLEAR_WHY_STOPPED_REPORTED | 28 |
| COVID_EXTERNAL_SHOCK | 25 |
| UNCLEAR_NOT_SPECIFIED | 20 |
Trial phase weights
| Phase | Weight |
|---|---|
| PHASE3 / Phase III | +15 |
| PHASE4 | +12 |
| PHASE2 / Phase II | +8 |
| UNKNOWN / NULL / NA | +4 |
| PHASE1 / Phase I | +2 |
| EARLY_PHASE1 | +0 |
Classification confidence modifier
| Confidence | Modifier |
|---|---|
| HIGH | +8 |
| MEDIUM | +0 |
| LOW | -8 |
| UNKNOWN / NULL | -5 |
Recurrence bands (display only)
| Band | Score Range |
|---|---|
| Low recurrence band | 5–39 |
| Medium recurrence band | 40–69 |
| High recurrence band | 70–95 |
Technical note — current model
The current release uses RecurSignal v1. Mechanism saturation is not included because mechanism_class is not yet harmonized across the full dataset. It may be added in a future scoring model after harmonization.
8. What OFA Does Not Claim
- OFA does not determine definitive root cause.
- OFA does not predict future trial outcome.
- OFA does not estimate probability of failure.
- OFA does not provide clinical, regulatory, legal, or investment advice.
- OFA does not replace expert scientific review.
9. Data Integrity Checks
| Check | Current state |
|---|---|
| Unique NCT IDs in production | 11,525 |
| Classified records | 11,525 |
| PubMed coverage rows | 11,525 / 11,525 |
| OpenFDA coverage rows | 11,525 / 11,525 |
| RecurSignal scores | 11,525 / 11,525 |
| CrossRef positive DOI-link layer | Expanded |
| Global EMA core context coverage | 2,705 / 11,525 trials with EMA core context |
| LLM call at dashboard render time | None |
Global all-record count; filtered dashboard and AI Hub views may show smaller scoped counts.
10. Known Limitations
- Reported vs verified cause. MDIP classifies publicly reported discontinuation language, not independently verified root cause.
- ClinicalTrials.gov why-stopped sparsity. Many trials report short, generic, or absent stop-language; these records are intentionally preserved in unclear categories rather than forced into a definite cause.
- PubMed and OpenFDA match limitations. Coverage rows exist for all 11,525 records, but NONE and NO_MATCH results reflect linkage limits of the current public-data matching process, not proof of absence of underlying scientific or safety evidence.
- CrossRef positive-link-only. CrossRef is used to surface additional DOI-to-NCT links where they exist. The absence of a CrossRef link is not treated as evidence that no publication exists.
- Mechanism saturation not yet included. Mechanism saturation is deferred until
mechanism_classis harmonized across the full dataset. - No denominator of all trials. The dataset contains terminated and withdrawn oncology trials only, so OFA does not compute a true failure rate.
- Non-predictive. RecurSignal is a historical recurrence signal. It is not a prediction, probability, forecast, or risk score.
11. Who can use this
- Academic researchers
- Translational medicine teams
- Pharma R&D strategy teams
- Business development and portfolio teams
- Clinical operations and trial design teams
- Data science and evidence-generation teams
- Students, policy researchers, and innovation analysts
Users should treat OFA as a research intelligence layer for comparing reported discontinuation patterns and generating hypotheses — not as a source of definitive root-cause attribution or program-level outcome guidance.
12. Why OFA is not an AI wrapper
OFA is not a prompt-only AI wrapper. It is built around a structured public dataset, source-linked evidence tables, deterministic classification layers, and reproducible scoring logic. AI was used only in the original baseline classification workflow with audit checks. Newly added records and RecurSignal are deterministic. The dashboard does not call an LLM at render time.
OFA Research Brief Generator (Claude-assisted, downstream)
The OFA Research Brief Generator is downstream of OFA analytics. It uses Anthropic Claude, called server-side through the claude-research-hub Supabase Edge Function, to draft a human-reviewable core research brief from the OFA-filtered evidence pack the user selects.
- Input: OFA-filtered evidence pack (filters, counts, top MDIP™ patterns, top harmonized mechanisms, phase distribution, linked-signal availability, representative records, limitations).
- Output: pattern summary, knowledge gaps, hypotheses (each with an ofa_evidence_basis citing specific evidence-pack facts), research questions, validation plan, safety notes.
- Claude does not classify records, calculate RecurSignal, alter the database, browse the web, or independently verify claims.
- Every brief is an evidence-bound draft and requires expert human review. Not clinical, regulatory, investment, medical, or treatment advice.
ANTHROPIC_API_KEYis server-side only inside the Edge Function. There is noVITE_ANTHROPIC_API_KEYor frontend key exposure.
See AI Transparency for the full disclosure.
13. Future Improvements
- future RecurSignal model including mechanism saturation (built on harmonized mechanism)
- Open Targets biomarker layer for richer biomarker classification
- independent academic validation review
- expanded correction and review workflow
Oncology Failure Atlas · Pharma Innovation Research by Sebastian Azar · oncologyfailureatlas.com · MDIP™ and RecurSignal™ are proprietary frameworks. All rights reserved.