Skip to content

Biomedicine: Mechanism Discovery

Case study → biomedicine

Mechanism discovery: from “relevant papers” to testable causal chains.

The question is not whether two concepts co-occur in text. The question is whether there is a mechanistic chain you can inspect, challenge, and experimentally validate.

The question

How do we uncover mechanistic chains (not just correlations) around targets like CA IX in tumor microenvironments?

Why probabilistic search fails (even when it is “honest”)

Retrieval returns relevance

“Here are papers about CA IX” does not equal “here is a chain that explains the outcome.”

Text summaries blur mechanisms

Models can produce cautious language (“evidence is mixed”) without specifying what would falsify which link.

No trace = no lab plan

Without a structured path and citations per edge, you can’t design targeted experiments.

What changes with causal traversal

We encode entities, interactions, and provenance into a causal graph and run directed pathfinding.

The output is a candidate mechanism with evidence per edge — or an abstention with missing data requirements.

flowchart TB
%% Styles (brModel Standard)
classDef i fill:#D3D3D3,stroke-width:0px,color:#000;
classDef p fill:#B3D9FF,stroke-width:0px,color:#000;
classDef r fill:#FFFFB3,stroke-width:0px,color:#000;
classDef o fill:#C1F0C1,stroke-width:0px,color:#000;
classDef s fill:#FFB3B3,stroke-width:0px,color:#000;

I_Q(["🎯 Causal question<br>(what mechanism explains Y?)"]):::i
P_G("🧠 Build causal graph + provenance"):::p
P_Trv("🕸️ Directed pathfinding"):::p
G_Path{"Path found?"}:::s
R_Path(["🧬 Candidate mechanism chain<br>(edge-level evidence)"]):::r
R_Trace(["🧾 Trace package<br>(edges, citations, versions)"]):::r
O_Lab(["✅ Test plan<br>(what would falsify which link)"]):::o
S_Abs(["🛑 Abstain + missing evidence list"]):::i

I_Q --> P_G --> P_Trv --> G_Path
G_Path -->|"yes"| R_Path --> R_Trace --> O_Lab
G_Path -->|"no"| S_Abs --> R_Trace

%% Clickable nodes
click P_Trv "/methodology/causalgraphrag/" "CausalGraphRAG"
click P_G "/methodology/property-and-knowledge-graphs/" "Graphs"

🧬 The key shift is directed traversal: we build 🧠 causal memory, run 🕸️ pathfinding, and explicitly decide whether a mechanistic chain exists. Either way, the system outputs a 🧾 trace package — so the result is falsifiable, not rhetorical.

Diagram: evidence and provenance per edge

flowchart TB
%% Styles (brModel Standard)
classDef i fill:#D3D3D3,stroke-width:0px,color:#000;
classDef p fill:#B3D9FF,stroke-width:0px,color:#000;
classDef r fill:#FFFFB3,stroke-width:0px,color:#000;
classDef o fill:#C1F0C1,stroke-width:0px,color:#000;
classDef s fill:#FFB3B3,stroke-width:0px,color:#000;

I_S(["📄 Source<br>(paper / dataset)"]):::i
P_Ingest("🧼 Ingest + fingerprint"):::p
R_Src(["📎 Source record<br>(versioned)"]):::r

P_Extract("🧾 Extract claim"):::p
R_C(["🧾 Claim object<br>(who said what, when)"]):::r
G_Q{"Quality sufficient?"}:::s
S_Down(["🛑 Downweight / flag<br>(low quality)"]):::i

P_Map("📐 Map measurements + units"):::p
G_Meas{"Measurement aligned?"}:::s
S_Ask(["🛑 Missing measurement details"]):::i

P_E("🔗 Edge assertion"):::p
R_Edge(["🔗 Edge object<br>(X → Y, direction)"]):::r

P_Ev("📎 Attach evidence per edge"):::p
R_Ev(["📎 Evidence bundle<br>(citations, snippets, stats)"]):::r
G_Conf{"Confounders controlled?"}:::s

P_Path("🧭 Assemble path candidate"):::p
R_T(["🧾 Trace object<br>(edges + evidence + assumptions)"]):::r
O_Out(["✅ Reviewable hypothesis" ]):::o

I_S --> P_Ingest --> R_Src --> P_Extract --> R_C --> G_Q
G_Q -->|"no"| S_Down --> P_Map
G_Q -->|"yes"| P_Map

P_Map --> G_Meas
G_Meas -->|"no"| S_Ask --> R_T
G_Meas -->|"yes"| P_E --> R_Edge --> P_Ev --> R_Ev --> G_Conf

G_Conf -->|"no"| S_Down --> P_Path
G_Conf -->|"yes"| P_Path --> R_T --> O_Out

📎 Each edge in the chain is backed by explicit evidence, not just a summary. The trace ties claimsedgespaths into an artifact you can challenge and iterate. Product: an edge-level evidence bundle plus a trace object that makes the hypothesis reviewable and falsifiable.

Diagram: falsification loop (how uncertainty becomes a lab plan)

flowchart TB
%% Styles (brModel Standard)
classDef i fill:#D3D3D3,stroke-width:0px,color:#000;
classDef p fill:#B3D9FF,stroke-width:0px,color:#000;
classDef r fill:#FFFFB3,stroke-width:0px,color:#000;
classDef o fill:#C1F0C1,stroke-width:0px,color:#000;
classDef s fill:#FFB3B3,stroke-width:0px,color:#000;

R_Path(["🧬 Candidate mechanism"]):::r
P_Weak("🔎 Identify weakest link"):::p
G_Fals{"Falsifiable?"}:::s
R_Exp(["🧪 Minimal experiment<br>(most informative intervention)"]):::r
O_Upd(["✅ Update graph + confidence"]):::o
S_Miss(["🛑 Not falsifiable yet<br>request missing measurements"]):::i

R_Path --> P_Weak --> G_Fals
G_Fals -->|"yes"| R_Exp --> O_Upd --> R_Path
G_Fals -->|"no"| S_Miss --> R_Path

🧪 This loop turns “more reading” into targeted falsification: find the weakest link, decide if it’s falsifiable, run the smallest experiment that would flip your conclusion, then update the causal memory.

Outputs

Traceable paths

Causal chains with supporting sources and versioned evidence.

Hypotheses

Candidates ranked by mechanistic plausibility, not by rhetorical fluency.

Falsification plan

Clear missing evidence and which link would change the conclusion.

Iterability

A model that improves as new studies arrive without losing auditability.

Experiment prioritization

Targeted follow-ups: which intervention would most reduce uncertainty in the mechanism chain.

Evidence gaps map

A structured view of missing links, contradictory studies, and where new data would unlock a valid path.

Next steps