diff --git a/.claude/commands/curate.md b/.claude/commands/curate.md index ac34147..f80a370 100644 --- a/.claude/commands/curate.md +++ b/.claude/commands/curate.md @@ -73,7 +73,8 @@ See AGENTS.md §4.4 for the `...`/`[...]` operators and the read-the-context gua - Walk through 2–6 intermediate biological entities (proteins, pathways, processes, phenotypes) toward the disease node (`label: Disease`, prefix `MESH`). - **One connected chain — no shortcut/bypass edge** (AGENTS.md §0). The path is a single chain drug→…→disease. **Do not** add an edge straight from the drug to the disease, and **do not** add an edge from the drug (or any node) to a node already reached through intermediate steps. End the chain at the disease with a mechanistic/causal predicate (`causes`, `contributes to`, …), **never** with a clinical-outcome predicate (`treats`, `prevents`, `ameliorates`, …). Those are reserved for the no-mechanism stub. If you worked out a mechanism, curate *only* that chain — never also append a `Drug —treats→ Disease` edge. (This is the `clinical_shortcut` / `short_circuit` HARD error; the semantic critic checks for it too.) - Each edge: - - `key`: pick from the canonical 67 in `src/drugmechdb/schema/biolink_predicates.yaml`. + - `key`: pick one marked `status: current` in `src/drugmechdb/schema/biolink_predicate_status.yaml` (47 of the 70 enum values; the other 23 are legacy-only and Layer 3 will reject them). + - `object_aspect_qualifier` / `object_direction_qualifier`: **required** where the predicate carries no polarity of its own — `affects` needs both, `regulates` needs a direction. This is where `decreases activity of` went: `key: affects` + `object_aspect_qualifier: activity` + `object_direction_qualifier: decreased`. See AGENTS.md §3.0. - `evidence`: ≥1 `EvidenceItem` with: - `reference: PMID:xxxxxxxx` - `snippet:` **verbatim** substring of the cached source (abstract, or full text if you escalated) — copy/paste from `references_cache/`, never typed from memory. diff --git a/AGENTS.md b/AGENTS.md index 36a2bd6..97d9132 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -111,21 +111,47 @@ The CURIE prefix of every node `id` **must** match the canonical ontology for th ## 3. Predicate vocabulary -Every edge `key` must be an **exact** member of the `BiolinkPredicate` enum in `src/drugmechdb/schema/biolink_predicates.yaml` (67 predicates as of May 2026). The list includes the high-frequency ones the agent will reach for first: +Every edge `key` must be an **exact** member of the `BiolinkPredicate` enum in `src/drugmechdb/schema/biolink_predicates.yaml`. That enum spans two eras — it still accepts the v1.3.0-era vocabulary the 4,846 legacy records are written in — so membership alone is not enough. **New curation must use only the predicates marked `status: current` in `src/drugmechdb/schema/biolink_predicate_status.yaml`** (47 of 70, pinned to Biolink 4.4.4). QC Layer 3 enforces this for any record carrying evidence. + +The high-frequency ones you will reach for: ``` -positively regulates negatively regulates decreases activity of increases activity of -positively correlated with negatively correlated with causes contributes to -participates in occurs in located in part of manifestation of in taxon -treats prevents has metabolite binds affects disrupts affects risk for -… +regulates affects causes contributes to treats prevents +positively correlated with negatively correlated with manifestation of +participates in occurs in located in part of in taxon +has metabolite directly physically interacts with disrupts ``` -Read the file; the descriptions distinguish near-synonyms (e.g. `regulates` vs `positively regulates`, `correlated with` vs `causes`). +### 3.0 Polarity lives in qualifiers, not in the predicate name + +Biolink's v2→v4 refactor removed `positively regulates`, `decreases activity of`, and the whole +`increases/decreases of` family. **Do not use them** — they are `status: legacy_only`. +Say the same thing with a canonical predicate plus qualifiers on the edge: + +```yaml + - key: affects # was: decreases activity of + object_aspect_qualifier: activity # activity | abundance | expression | synthesis | ... + object_direction_qualifier: decreased # increased | decreased | upregulated | downregulated + source: MESH:D000068877 + target: UniProt:A9UF07 + + - key: regulates # was: positively regulates + object_direction_qualifier: increased + source: UniProt:A9UF07 + target: GO:0008283 +``` + +`affects` requires **both** qualifiers; `regulates` requires `object_direction_qualifier`. Bare, they +assert almost nothing, so Layer 3 rejects them without direction. The permissible values are the +`ObjectAspectEnum` / `ObjectDirectionEnum` enums in `src/drugmechdb/schema/drugmechdb.yaml`, and +`biolink_predicate_status.yaml` gives the exact replacement for every removed predicate. + +Read the enum file; the descriptions distinguish near-synonyms (e.g. `regulates` vs `affects`, +`correlated with` vs `causes`). **You may emit predicates in casual surface forms** — `positively_regulates`, `biolink:positively_regulates`, `Positively Regulates` — and `scripts/canonicalize_predicates.py --write` will normalize them. But the **final** YAML must use the canonical form (lowercase, spaces, no prefix). Always canonicalize before validation. -**You may NOT invent new predicates.** If no canonical predicate fits, escalate per PRD §7 Open Q #3 (adding to the enum requires curator approval + Biolink Model citation). +**You may NOT invent new predicates.** If no canonical predicate fits, escalate per PRD §7 Open Q #3 (adding to the enum requires curator approval + Biolink Model citation). "Valid in Biolink" is not sufficient on its own — the predicate has to be in *our* enum and marked `current`. ### 3.1 Predicate domain/range @@ -134,15 +160,15 @@ Some predicates only make sense between certain node types. Apply each predicate | Predicate(s) | Subject (`source`) label | Object (`target`) label | |---|---|---| | `treats`, `prevents`, `ameliorates`, `exacerbates`, `contraindicated for` | `Drug`, `ChemicalSubstance` | `Disease`, `PhenotypicFeature` | -| `decreases activity of`, `increases activity of` | any | `Protein`, `GeneFamily`, `MacromolecularComplex`, `MolecularActivity`, `Pathway`, `BiologicalProcess` | -| `decreases abundance of`, `increases abundance of`, `increases degradation of`, `decreases synthesis of` | any | `Protein`, `GeneFamily`, `MacromolecularComplex`, `ChemicalSubstance`, `MolecularActivity` | -| `increases expression of`, `decreases expression of` | any | `Protein`, `GeneFamily`, `MacromolecularComplex`, `ChemicalSubstance` | +| `affects` + aspect `activity` | any | `Protein`, `GeneFamily`, `MacromolecularComplex`, `MolecularActivity`, `Pathway`, `BiologicalProcess` | +| `affects` + aspect `abundance`, `degradation`, `synthesis`, `stability`, `transport`, `uptake` | any | `Protein`, `GeneFamily`, `MacromolecularComplex`, `ChemicalSubstance`, `MolecularActivity` | +| `affects` + aspect `expression` | any | `Protein`, `GeneFamily`, `MacromolecularComplex`, `ChemicalSubstance` | | `has metabolite` | `Drug`, `ChemicalSubstance` | `ChemicalSubstance`, `Drug` | | `has phenotype` | any | `PhenotypicFeature` | | `in taxon` | any | `OrganismTaxon` | | `occurs in`, `located in`, `expressed in` | any | `CellularComponent`, `GrossAnatomicalStructure`, `Cell`, `OrganismTaxon`, `Pathway` | -The activity / abundance / expression / degradation / synthesis predicates (rows 2–4) never take a `Disease` or `PhenotypicFeature` object — reach the disease with a mechanistic/causal predicate (e.g. `causes`, `contributes to`) instead, per §0. +Since Biolink 4.4.4 the object constraint follows the **aspect**, not the predicate name, so the lexicon keys those rows `affects|` (the legacy `decreases activity of`-style keys are kept for the legacy corpus). An `affects` edge never takes a `Disease` or `PhenotypicFeature` object — reach the disease with a mechanistic/causal predicate (e.g. `causes`, `contributes to`) instead, per §0. The gate enforces these: an edge whose known endpoint types fall outside the allowed set is flagged as a SOFT `type_violation` and routed to the semantic critic (§5 step 8), so a mis-typed edge is surfaced and returned for correction rather than passing silently. Getting the types right here keeps the edge from bouncing. diff --git a/CLAUDE.md b/CLAUDE.md index 0ac2943..3be78ec 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -21,8 +21,11 @@ new ones) — keys: `directed`, `multigraph`, `graph` Edges may carry per-edge `evidence` (an `EvidenceItem` with a verbatim PubMed `snippet`). `_index.yaml` is a **generated** aggregate — don't hand-edit it. -Full structure, the 14 node types, the 67-predicate vocabulary, and the path-quality +Full structure, the 14 node types, the predicate vocabulary, and the path-quality conventions are in **`AGENTS.md`** and **`CurationGuide.md`**. Read those before curating. +The predicate enum spans two Biolink eras — new curation uses only the `status: current` +values in `src/drugmechdb/schema/biolink_predicate_status.yaml` (pinned to Biolink 4.4.4), +with polarity carried in edge qualifiers. See **AGENTS.md §3.0**. ## The QC gate (`scripts/qc.py`) @@ -35,7 +38,8 @@ and runs the matching layers: | `ai_curated` | any edge has `evidence:` | 1, 2, 3, 4 | 1. **schema** (LinkML `MechanisticPath`) · 2. **node ontology** (prefix↔label) · -3. **predicate enum** (67 Biolink predicates) · 4. **reference** (snippet verbatim in source). +3. **predicate enum** (era-aware: `ai_curated` records must use current-Biolink predicates) +· 4. **reference** (snippet verbatim in source). ```bash just qc # whole corpus, auto profile diff --git a/CurationGuide.md b/CurationGuide.md index 9654c48..826c6c3 100644 --- a/CurationGuide.md +++ b/CurationGuide.md @@ -218,6 +218,15 @@ to one of the predicates previously used, if a relationship found in the process any of these types listed below, a predicate may be selected from the [full set of biolink predicates](https://biolink.github.io/biolink-model/docs/predicates.html). +> **Biolink 4.4.4 note (2026-09).** The list below is the vocabulary *found in the legacy +> corpus* — it is v1.3.0-era, and 23 of these predicates no longer exist in Biolink. It stays +> here because `kb/paths/` is still written in it. **New curation must not use them.** Pick a +> predicate marked `status: current` in `src/drugmechdb/schema/biolink_predicate_status.yaml`, +> and carry polarity in the edge's `object_aspect_qualifier` / `object_direction_qualifier` +> rather than in the predicate name — `decreases activity of` is now +> `affects` + `activity` + `decreased`. See AGENTS.md §3.0 for the contract and +> `docs/biolink_version_decision.md` for why. + The predicates currently found within DrugMechDB are as follows: [affects risk for](https://biolink.github.io/biolink-model/docs/affects_risk_for.html) diff --git a/README.md b/README.md index 6fc901d..7f5dc5e 100644 --- a/README.md +++ b/README.md @@ -77,8 +77,9 @@ profile per file and runs the matching layers: | `ai_curated` | any edge has `evidence:` | 1, 2, 3, 4 | 1. **schema** (LinkML `MechanisticPath`) · 2. **node ontology** (CURIE prefix ↔ label, -plus an invisible/whitespace-character guard) · 3. **predicate enum** (67 Biolink -predicates) · 4. **reference** (every snippet is verbatim in its cited source). +plus an invisible/whitespace-character guard) · 3. **predicate enum** (Biolink predicates, +era-aware — newly curated records must use the pinned current release) · 4. **reference** +(every snippet is verbatim in its cited source). ```bash just qc # whole corpus diff --git a/docs/biolink_drift_monitor.md b/docs/biolink_drift_monitor.md index 763841c..90b9f0f 100644 --- a/docs/biolink_drift_monitor.md +++ b/docs/biolink_drift_monitor.md @@ -12,7 +12,8 @@ ## 1. Why this exists The corpus stores edges keyed by a fixed vocabulary of Biolink predicates -(`src/drugmechdb/schema/biolink_predicates.yaml`, 67 predicates), each also assigned a +(`src/drugmechdb/schema/biolink_predicates.yaml`; `biolink_predicate_status.yaml` records +which of them the pinned Biolink release still defines), each also assigned a direction-of-influence sign in `scripts/quality/predicate_polarity.yaml`. Biolink evolves independently — the v2→v4 **qualifier refactor** already folded many of our high-frequency predicates (`positively regulates`, `increases activity of`, …) into `regulates`/`affects` diff --git a/docs/biolink_version_decision.md b/docs/biolink_version_decision.md index 7864df9..e691a44 100644 --- a/docs/biolink_version_decision.md +++ b/docs/biolink_version_decision.md @@ -1,44 +1,68 @@ # Biolink-version strategy -> **Decision:** the corpus is **re-curated from scratch in the latest Biolink version** -> (forwardfill). There is **no legacy vocabulary to preserve or to translate** — the -> re-curated records are written directly in current Biolink, so storage *is* the current -> vocabulary. Recorded here as the single source of truth; the publish layer references this. +> **Decision:** DrugMechDB targets a **pinned current Biolink release** — **4.4.4** — and +> AI-curated records are written in it, qualifiers and all. The legacy corpus stays in its +> own vocabulary until forwardfill replaces it. Recorded here as the single source of truth; +> the publish layer references this. ## The choice The drift audit (`docs/biolink_ontology_drift_report.md`) framed three options: **(A)** pin the old version, **(B)** migrate stored records, **(C)** keep legacy in storage and translate at publish. -Its leaning was **C** (translate-at-publish), which minimizes churn *when the legacy corpus is kept*. -That premise no longer holds. Because the corpus is **forwardfilled** — every record re-curated from -scratch by the AI curator — the output is authored directly in the **latest Biolink version**. This -is effectively a clean rewrite, not a migration of existing records. So: +An earlier revision of this document recorded the strategy as *"re-curated from scratch in the latest +Biolink version, so storage **is** the current vocabulary"* and closed #19 and #54 as moot on that +basis. **That premise did not hold.** The curator was handed the legacy 67-predicate enum +(`AGENTS.md` §3, `.claude/commands/curate.md`) and QC Layer 3 enforced it, so forwardfilled records +came out in the *legacy* vocabulary: measured against Biolink 4.4.4, **323 of 558 edges (58%)** in +the 135 AI-curated records used predicates Biolink had already removed. Writing "latest Biolink" in +a policy document does not make the gate produce it. -- **No version pin to an old Biolink** (rejects A). -- **No record migration** of legacy vocabulary (B is moot — there is no legacy vocabulary in the - re-curated corpus to migrate). -- **No publish-time translation layer** (C is moot — storage already holds current Biolink; there is - nothing to translate at export). +The corrected strategy is **B, scoped to the AI-curated corpus**: -## Consequences (issues closed as moot) +- **Pin the Biolink release** (4.4.4) in `src/drugmechdb/schema/biolink_predicate_status.yaml`, + rather than tracking a moving `master`. +- **The enum spans both eras.** `biolink_predicates.yaml` still accepts the v1.3.0-era vocabulary, + because the 4,846 legacy records in `kb/paths/` are written in it and are not being rewritten. +- **The gate decides per profile.** Layer 3 permits any enum member for `legacy` records and only + `status: current` members for `ai_curated` ones. This is what actually holds new curation to + current Biolink — the contract text alone did not. +- **Records already curated were migrated**, not re-curated, by `scripts/migrate_predicates.py` + (a deterministic transform driven by the same status file the gate reads). -- **#19 (publish-time translation to current Biolink)** — moot. Storage is already current Biolink; - the export layer emits it directly, with no qualifier remap. -- **#54 (predicate→qualifier remap rules)** — moot. The ~20 deterministic remap rules were only - needed to translate *legacy* predicates at publish; the forwardfilled corpus never uses them. +## Consequences -*Transition caveat:* until forwardfill completes, the stored corpus is still legacy vocabulary. If a -publish of the **legacy** corpus is ever needed **before** forwardfill finishes, #19/#54 can be -reopened for that interim need. The target state (forwardfilled) needs neither. +- **#19 (publish-time translation to current Biolink)** — still moot *for AI-curated records* + (they are stored in current Biolink, so the exporter emits it directly), but **live again for the + legacy corpus**: publishing `kb/paths/` as current Biolink needs the translation, because those + records keep the legacy vocabulary until forwardfill reaches them. +- **#54 (predicate→qualifier remap rules)** — **not moot.** The rules are implemented as + `scripts/migrate_predicates.py` + the `replacement:` blocks in + `src/drugmechdb/schema/biolink_predicate_status.yaml`. They were used to migrate the AI-curated + corpus and are what a legacy publish would reuse. + +## What has no mechanical answer + +Three removed predicates have no faithful qualifier form and are never rewritten automatically — +they carry `needs_human_decision: true` in the status file: + +| Predicate | Why | +|---|---| +| `affects risk for` | Direction is unspecified; 4.4.4 splits it into `associated with increased likelihood of` / `associated with decreased likelihood of`. Needs a per-edge reading of the evidence. | +| `increases response to` / `decreases response to` | Biolink 4.4.4 has no `response` aspect in `GeneOrGeneProductOrChemicalEntityAspectEnum`. | + +These appear only in the legacy corpus (1–82 edges each), never in the AI-curated records. ## Going forward -Keeping the schema aligned with future Biolink releases is handled by the **Biolink-drift monitor** -(`docs/biolink_drift_monitor.md`, `scripts/check_biolink_drift.py`): it detects predicate drift and -opens a human-reviewed draft PR — it never auto-applies a schema change and never auto-assigns a -polarity sign. +Keeping the pin current is handled by the **Biolink-drift monitor** +(`docs/biolink_drift_monitor.md`, `scripts/check_biolink_drift.py`): it compares the committed enum +against a Biolink ref and reports the delta for a human-reviewed draft PR — it never auto-applies a +schema change and never auto-assigns a polarity sign. When a release moves the pin, update +`biolink_predicate_status.yaml` and re-run `scripts/migrate_predicates.py --check`. ### See also - `docs/biolink_ontology_drift_report.md` — the drift audit that framed the options. - `docs/biolink_drift_monitor.md` — how future Biolink releases are tracked. +- `src/drugmechdb/schema/biolink_predicate_status.yaml` — the pin, the per-predicate status, and the + replacement each removed predicate maps to. diff --git a/experiments/opus_vs_sonnet/opus/outputs/P01.yaml b/experiments/opus_vs_sonnet/opus/outputs/P01.yaml index 21c7341..a3fbec3 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P01.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P01.yaml @@ -24,7 +24,9 @@ nodes: name: Myocardial infarction label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D001241 target: UniProt:P23219 evidence: @@ -37,7 +39,8 @@ links: snippet: "the acetylation of platelet cyclooxygenase (COX)-1 at serine-529 is the direct mechanism of action of low-dose aspirin" supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P23219 target: CHEBI:50124 evidence: @@ -46,7 +49,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "COX-1 activity drives thromboxane A2 formation; inhibiting COX-1 reduces thromboxane A2." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: CHEBI:50124 target: GO:0070527 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P02.yaml b/experiments/opus_vs_sonnet/opus/outputs/P02.yaml index f0e0d1b..ffd3e33 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P02.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P02.yaml @@ -27,7 +27,9 @@ nodes: name: Hypercholesterolemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000069059 target: UniProt:P04035 evidence: @@ -43,7 +45,8 @@ links: snippet: "their ability to inhibit HMG-CoA reductase, the rate-limiting enzyme of de novo cholesterol synthesis" supports: SUPPORT evidence_source: IN_VITRO - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P04035 target: UniProt:P01130 evidence: @@ -52,7 +55,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "Inhibiting HMG-CoA reductase leads to upregulation of LDL receptors, i.e. the enzyme's activity negatively regulates LDL receptor expression." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: UniProt:P01130 target: MESH:D008078 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P03.yaml b/experiments/opus_vs_sonnet/opus/outputs/P03.yaml index cf11ae7..255e37c 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P03.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P03.yaml @@ -27,7 +27,9 @@ nodes: name: Hypertension label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D017706 target: UniProt:P12821 evidence: @@ -36,7 +38,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "Lisinopril is identified as an angiotensin-converting enzyme inhibitor, i.e. it decreases ACE activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P12821 target: MESH:D000804 evidence: @@ -45,7 +48,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "ACE converts angiotensin-I into angiotensin-II, increasing angiotensin II formation." - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D000804 target: UniProt:P30556 evidence: @@ -54,7 +59,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Angiotensin II acts on AT1 receptors (AT1R), activating the receptor." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P30556 target: GO:0042310 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P04.yaml b/experiments/opus_vs_sonnet/opus/outputs/P04.yaml index 3b51df8..1cd43fd 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P04.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P04.yaml @@ -21,7 +21,9 @@ nodes: name: Heart failure label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00264 target: UniProt:P08588 evidence: @@ -30,7 +32,8 @@ links: supports: SUPPORT evidence_source: MODEL_ORGANISM explanation: "Metoprolol is described as a β1-adrenergic receptor blocker, i.e. it decreases the activity of the β1-adrenergic receptor." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P08588 target: GO:0010659 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P05.yaml b/experiments/opus_vs_sonnet/opus/outputs/P05.yaml index e7ff0ed..b3fa4a2 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P05.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P05.yaml @@ -27,7 +27,9 @@ nodes: name: Stroke label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: UniProt:P33261 target: DB:DB00758 evidence: @@ -36,7 +38,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: CYP2C19 activates the clopidogrel prodrug to its active metabolite. - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00758 target: UniProt:Q9H244 evidence: @@ -54,7 +58,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: The P2Y12 receptor mediates platelet aggregation. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0070527 target: GO:0007596 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P06.yaml b/experiments/opus_vs_sonnet/opus/outputs/P06.yaml index 84a4497..e6c59c2 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P06.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P06.yaml @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Tamoxifen is metabolized by CYP enzymes to its active metabolite endoxifen." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: CHEBI:71176 target: UniProt:P03372 evidence: @@ -42,7 +44,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Endoxifen is a potent antiestrogen that blocks ERalpha transcriptional activity and targets it for degradation, after binding the receptor with high affinity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P03372 target: GO:0008283 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P07.yaml b/experiments/opus_vs_sonnet/opus/outputs/P07.yaml index 62ecbea..4c57d66 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P07.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P07.yaml @@ -18,7 +18,9 @@ nodes: name: Chronic Myeloid Leukemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00619 target: UniProt:P00519 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P08.yaml b/experiments/opus_vs_sonnet/opus/outputs/P08.yaml index b1cc231..5e1d045 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P08.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P08.yaml @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Cetuximab is an antibody directed against the extracellular ligand-binding domain of EGFR." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00002 target: UniProt:P00533 evidence: @@ -42,7 +44,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Cetuximab produces EGFR blockade affecting downstream signalling pathways in colon cancer cell lines." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P00533 target: GO:0000165 evidence: @@ -51,7 +54,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "EGFR activation drives the downstream RAS-MAPK signaling pathway in colorectal cancer cells." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0000165 target: GO:0008283 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P09.yaml b/experiments/opus_vs_sonnet/opus/outputs/P09.yaml index f9b02c3..cef2cba 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P09.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P09.yaml @@ -30,7 +30,9 @@ nodes: name: Acute lymphoblastic leukemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00563 target: UniProt:P00374 evidence: @@ -47,7 +49,8 @@ links: snippet: "MTX competitively inhibits dihydrofolate reductase (DHFR), an enzyme that participates in the tetrahydrofolate synthesis so as to inhibit purine synthesis." supports: SUPPORT evidence_source: OTHER - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0046654 target: GO:0006164 evidence: @@ -56,7 +59,8 @@ links: supports: SUPPORT explanation: "Tetrahydrofolate synthesis is required for purine synthesis; inhibiting DHFR (and thus tetrahydrofolate synthesis) inhibits purine synthesis." evidence_source: OTHER - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0006164 target: GO:0071897 evidence: @@ -65,7 +69,9 @@ links: supports: SUPPORT explanation: "Purine synthesis supplies nucleotides for DNA synthesis; MTX-mediated inhibition of purine synthesis contributes to inhibition of DNA synthesis." evidence_source: OTHER - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00563 target: UniProt:P04818 evidence: @@ -73,7 +79,8 @@ links: snippet: "its downstream metabolite methotrexate polyglutamates (MTX-PGs) inhibit the thymidylate synthase (TS)." supports: SUPPORT evidence_source: OTHER - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P04818 target: GO:0071897 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P10.yaml b/experiments/opus_vs_sonnet/opus/outputs/P10.yaml index b83d43b..a7a74f0 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P10.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P10.yaml @@ -24,7 +24,9 @@ nodes: name: HER2-positive Breast Cancer label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00072 target: UniProt:P04626 evidence: @@ -33,7 +35,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Trastuzumab, directed against the HER2 extracellular domain (PMID:24462377), down-regulates HER2 and reduces downstream phosphorylation." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P04626 target: GO:0043491 evidence: @@ -42,7 +45,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "High HER2 increases phosphorylation of downstream Akt, indicating HER2 positively regulates PI3K/Akt signaling." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00072 target: GO:0043491 evidence: @@ -51,7 +56,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Trastuzumab reduces Akt phosphorylation, decreasing PI3K/Akt signal transduction." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0043491 target: GO:0008283 evidence: @@ -60,7 +66,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "PI3K-AKT signaling promotes DNA synthesis and proliferation of breast cancer cells." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: DB:DB00072 target: GO:0008283 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P11.yaml b/experiments/opus_vs_sonnet/opus/outputs/P11.yaml index c5d3ada..6fca0b6 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P11.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P11.yaml @@ -24,7 +24,9 @@ nodes: name: Pulmonary Tuberculosis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB01045 target: UniProt:P9WGY9 evidence: @@ -33,7 +35,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Rifampin binds the RpoB beta subunit, inhibiting the RNA polymerase enzyme." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB01045 target: GO:0006351 evidence: @@ -50,7 +54,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "RpoB-containing RNA polymerase performs DNA-templated transcription in M. tuberculosis." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: DB:DB01045 target: NCBITaxon:1773 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P12.yaml b/experiments/opus_vs_sonnet/opus/outputs/P12.yaml index 108218f..7706339 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P12.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P12.yaml @@ -24,7 +24,9 @@ nodes: name: Pulmonary Tuberculosis label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D007538 target: UniProt:P9WIE5 evidence: @@ -33,7 +35,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "KatG activates the isoniazid prodrug into its reactive species." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D007538 target: UniProt:P9WGR1 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P14.yaml b/experiments/opus_vs_sonnet/opus/outputs/P14.yaml index 19d5f35..6a40320 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P14.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P14.yaml @@ -32,7 +32,9 @@ links: snippet: "Oseltamivir is a prodrug for the active carboxylate metabolite." supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:C111791 target: UniProt:P03468 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P15.yaml b/experiments/opus_vs_sonnet/opus/outputs/P15.yaml index 986192b..67f10eb 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P15.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P15.yaml @@ -46,7 +46,9 @@ links: snippet: "This selectivity is due to the initial activation of the drug by phosphorylation by a herpes virus-specified thymidine kinase." supports: SUPPORT evidence_source: IN_VITRO - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:C025643 target: UniProt:P04293 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P17.yaml b/experiments/opus_vs_sonnet/opus/outputs/P17.yaml index 5d06877..8f3e161 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P17.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P17.yaml @@ -21,7 +21,9 @@ nodes: name: Major Depressive Disorder label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00472 target: UniProt:P31645 evidence: @@ -30,7 +32,8 @@ links: supports: SUPPORT evidence_source: MODEL_ORGANISM explanation: "Fluoxetine inhibits (decreases the activity of) the serotonin transporter SERT." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P31645 target: MESH:D012701 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P18.yaml b/experiments/opus_vs_sonnet/opus/outputs/P18.yaml index bf7141f..c456859 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P18.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P18.yaml @@ -24,7 +24,9 @@ nodes: name: Bipolar Disorder label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB01356 target: UniProt:P49841 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "Review identifying direct GSK-3 beta inhibition as a mechanism of lithium in bipolar disorder." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P49841 target: UniProt:P35222 evidence: @@ -52,7 +55,8 @@ links: supports: SUPPORT evidence_source: MODEL_ORGANISM explanation: "GSK-3 beta inhibition by lithium stabilizes beta-catenin." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P35222 target: GO:0006915 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P19.yaml b/experiments/opus_vs_sonnet/opus/outputs/P19.yaml index f3fac1c..8e8e11c 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P19.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P19.yaml @@ -24,7 +24,9 @@ nodes: name: Epilepsy label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00996 target: UniProt:P54289 evidence: @@ -36,7 +38,8 @@ links: snippet: "Binding of these ligands to the alpha2delta subunit is considered to explain their usefulness in treating several clinical disorders, including epilepsy" supports: SUPPORT evidence_source: OTHER - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P54289 target: GO:0070509 evidence: @@ -44,7 +47,8 @@ links: snippet: "they exhibit a high affinity for the α2δ-1 and α2δ-2 subunits of voltage-activated calcium channels, wherein binding of gabapentinoids inhibits cellular calcium influx and attenuates neurotransmission" supports: SUPPORT evidence_source: OTHER - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0070509 target: GO:0007269 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P20.yaml b/experiments/opus_vs_sonnet/opus/outputs/P20.yaml index f08713e..7a5c670 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P20.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P20.yaml @@ -24,7 +24,9 @@ nodes: name: Alzheimer's Disease label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00843 target: UniProt:P22303 evidence: @@ -33,7 +35,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Donepezil is a reversible acetylcholinesterase inhibitor, decreasing the enzyme's activity." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P22303 target: MESH:D000109 evidence: @@ -42,7 +45,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Acetylcholinesterase hydrolyzes acetylcholine; its inhibition by donepezil therefore raises acetylcholine levels." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:D000109 target: GO:0007268 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P21.yaml b/experiments/opus_vs_sonnet/opus/outputs/P21.yaml index a55273b..4e2f4d5 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P21.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P21.yaml @@ -27,7 +27,9 @@ nodes: name: Rheumatoid Arthritis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008727 target: UniProt:P31939 evidence: @@ -36,7 +38,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Methotrexate (as polyglutamates) inhibits ATIC enzymatic activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P31939 target: CHEBI:16335 evidence: @@ -45,7 +48,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Inhibition of ATIC promotes release of adenosine; ATIC inhibition is the upstream driver of adenosine accumulation." - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: CHEBI:16335 target: UniProt:P29274 evidence: @@ -54,7 +59,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Adenosine activates A2A adenosine receptor signaling in rheumatoid synoviocytes." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: UniProt:P29274 target: UniProt:P08254 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P22.yaml b/experiments/opus_vs_sonnet/opus/outputs/P22.yaml index 9e1b2f9..b4d94c2 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P22.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P22.yaml @@ -21,7 +21,9 @@ nodes: name: Crohn's Disease label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00065 target: UniProt:P01375 evidence: @@ -35,7 +37,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Infliximab is named among these anti-TNF drugs that block TNF from interacting with its receptors, i.e. neutralize its activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P01375 target: GO:0006954 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P23.yaml b/experiments/opus_vs_sonnet/opus/outputs/P23.yaml index 35e4d05..066dc69 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P23.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P23.yaml @@ -21,7 +21,9 @@ nodes: name: Systemic Lupus Erythematosus label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB01611 target: UniProt:Q9NYK1 evidence: @@ -30,7 +32,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Hydroxychloroquine inhibits the proteolytic maturation of TLR7 and thereby reduces TLR7-driven activation." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:Q9NYK1 target: GO:0032606 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P24.yaml b/experiments/opus_vs_sonnet/opus/outputs/P24.yaml index 92d6c30..87350a7 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P24.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P24.yaml @@ -36,7 +36,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "MMF is hydrolyzed to release the active metabolite mycophenolic acid." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D015232 target: UniProt:P12268 evidence: @@ -52,7 +54,8 @@ links: snippet: "an inhibitor of inosine monophosphate dehydrogenase (IMPDH). This is the rate-limiting enzyme in de novo synthesis of guanosine nucleotides." supports: SUPPORT evidence_source: OTHER - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: MESH:D015232 target: GO:0046651 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P25.yaml b/experiments/opus_vs_sonnet/opus/outputs/P25.yaml index eeea7c7..39e9607 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P25.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P25.yaml @@ -21,7 +21,9 @@ nodes: name: Psoriasis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00051 target: UniProt:P01375 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P26.yaml b/experiments/opus_vs_sonnet/opus/outputs/P26.yaml index ccda886..359ac43 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P26.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P26.yaml @@ -24,7 +24,9 @@ nodes: name: Type 2 Diabetes Mellitus label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D008687 target: UniProt:Q13131 evidence: @@ -33,7 +35,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Metformin directly activates AMP-activated protein kinase in hepatocytes. - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: UniProt:Q15831 target: UniProt:Q13131 evidence: @@ -42,7 +46,8 @@ links: supports: SUPPORT evidence_source: MODEL_ORGANISM explanation: LKB1 is the upstream kinase that phosphorylates and activates AMPK in the liver, mediating the therapeutic effect of metformin. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:Q13131 target: GO:0006094 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P27.yaml b/experiments/opus_vs_sonnet/opus/outputs/P27.yaml index c87b27c..3eb0c55 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P27.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P27.yaml @@ -27,7 +27,9 @@ nodes: name: Type 1 Diabetes Mellitus label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D007328 target: UniProt:P06213 evidence: @@ -36,7 +38,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Insulin binds the insulin receptor and triggers its autophosphorylation/activation." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P06213 target: UniProt:P14672 evidence: @@ -54,7 +57,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "GLUT4 at the plasma membrane mediates insulin-stimulated glucose uptake/import." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0046323 target: HP:0003074 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P28.yaml b/experiments/opus_vs_sonnet/opus/outputs/P28.yaml index 05b87be..76559df 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P28.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P28.yaml @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "Levothyroxine (LT4) is converted to the active hormone triiodothyronine (T3)." - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D014284 target: UniProt:P10828 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P29.yaml b/experiments/opus_vs_sonnet/opus/outputs/P29.yaml index 676f867..73df87f 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P29.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P29.yaml @@ -24,7 +24,9 @@ nodes: name: Gout label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00437 target: UniProt:P47989 evidence: @@ -33,7 +35,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Allopurinol is metabolized by xanthine oxidoreductase to oxypurinol, which inhibits the enzyme's active center." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P47989 target: MESH:D014527 evidence: @@ -42,7 +45,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Xanthine oxidoreductase produces uric acid as the final step of purine metabolism." - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D014527 target: UniProt:Q96P20 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P30.yaml b/experiments/opus_vs_sonnet/opus/outputs/P30.yaml index 54f0044..992ae2f 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P30.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P30.yaml @@ -27,7 +27,9 @@ nodes: name: Type 2 Diabetes Mellitus label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB09038 target: UniProt:P31639 evidence: @@ -45,7 +47,8 @@ links: supports: SUPPORT evidence_source: COMPUTATIONAL explanation: "SGLT2 mediates renal glucose reabsorption; inhibiting SGLT2 reduces this process." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0035623 target: HP:0003076 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P31.yaml b/experiments/opus_vs_sonnet/opus/outputs/P31.yaml index 6849e15..2b81864 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P31.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P31.yaml @@ -27,7 +27,9 @@ nodes: name: Hemophilia A label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: DB:DB00067 target: UniProt:P30518 evidence: @@ -36,7 +38,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "DDAVP (desmopressin), a vasopressin analogue, acts as a specific agonist at the vasopressin V2 receptor." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P30518 target: GO:0061156 evidence: @@ -45,7 +48,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "V2 receptor activation drives cAMP-mediated von Willebrand factor secretion from endothelial cells." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0061156 target: UniProt:P04275 evidence: @@ -54,7 +58,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Secretion of von Willebrand factor from endothelial stores raises circulating plasma vWF levels." - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: UniProt:P04275 target: UniProt:P00451 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P32.yaml b/experiments/opus_vs_sonnet/opus/outputs/P32.yaml index ef5a121..5c6e806 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P32.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P32.yaml @@ -21,7 +21,8 @@ nodes: name: Ascorbic acid deficiency label: Disease links: - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:D001205 target: UniProt:P13674 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P33.yaml b/experiments/opus_vs_sonnet/opus/outputs/P33.yaml index cbb5d18..e01bb69 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P33.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P33.yaml @@ -27,7 +27,9 @@ nodes: name: Relapsing-remitting multiple sclerosis label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: DB:DB00068 target: UniProt:P17181 evidence: @@ -44,7 +46,8 @@ links: snippet: "IFNß exerts its activity through the interaction with IFNAR, through activation of the JAK/STAT pathway." supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: DB:DB00068 target: UniProt:Q8NEV9 evidence: @@ -52,7 +55,8 @@ links: snippet: "IFN-β induced IL-27 expression by DC, and neutralisation of IL-27 abrogated the suppressive effects of IFN-β on zymosan-induced IL-1 and IL-23 production and the generation of Th17 cells in vitro." supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:Q8NEV9 target: CL:0000899 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P34.yaml b/experiments/opus_vs_sonnet/opus/outputs/P34.yaml index bcbfa28..1a9d50c 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P34.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P34.yaml @@ -27,7 +27,9 @@ nodes: name: Primary cutaneous T-cell lymphoma label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00004 target: UniProt:P01589 evidence: @@ -36,7 +38,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Denileukin diftitox (the monovalent human IL-2 fusion toxin, Ontak) binds CD25 (IL-2R alpha) and blocks IL-2 binding to the receptor." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: DB:DB00004 target: GO:0006412 evidence: @@ -44,7 +47,8 @@ links: snippet: "The ADP-ribosyltransferase activity of diphtheria toxin is cleaved in the endosome and is translocated into the cytosol where it inhibits protein synthesis, leading to apoptosis." supports: SUPPORT evidence_source: OTHER - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0006412 target: GO:0006915 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P35.yaml b/experiments/opus_vs_sonnet/opus/outputs/P35.yaml index 90bafec..66c4d2b 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P35.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P35.yaml @@ -30,7 +30,9 @@ nodes: name: Chronic hepatitis C label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: DB:DB00008 target: UniProt:P48551 evidence: @@ -40,7 +42,9 @@ links: evidence_source: IN_VITRO explanation: Peginterferon alfa-2a is a pegylated interferon alpha-2 that binds and activates the type I interferon receptor (IFNAR). source_tier: FULL_TEXT - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: UniProt:P48551 target: UniProt:P29597 evidence: @@ -49,7 +53,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO source_tier: FULL_TEXT - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: UniProt:P29597 target: UniProt:P42224 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P36.yaml b/experiments/opus_vs_sonnet/opus/outputs/P36.yaml index f2a87e4..015d387 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P36.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P36.yaml @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Gramicidin is a channel-forming peptide that inserts into the membrane." - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D006096 target: GO:0098655 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P37.yaml b/experiments/opus_vs_sonnet/opus/outputs/P37.yaml index da6cd44..dc569b0 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P37.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P37.yaml @@ -24,7 +24,9 @@ nodes: name: Anxiety label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: DB:DB00186 target: UniProt:P14867 evidence: @@ -33,7 +35,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Lorazepam is a GABAA positive allosteric modulator, increasing GABAA receptor activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P14867 target: GO:1902476 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P38.yaml b/experiments/opus_vs_sonnet/opus/outputs/P38.yaml index 74048a4..bf0c94f 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P38.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P38.yaml @@ -30,7 +30,9 @@ nodes: name: Hypercholesterolemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D017035 target: UniProt:P04035 evidence: @@ -46,7 +48,8 @@ links: snippet: "Statins have been widely used for the treatment of hypercholesterolemia due to their ability to inhibit HMG-CoA reductase, the rate-limiting enzyme of de novo cholesterol synthesis, via the so-called mevalonate pathway." supports: SUPPORT evidence_source: IN_VITRO - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0006695 target: UniProt:Q12772 evidence: @@ -54,7 +57,8 @@ links: snippet: "The decrease of the hepatic intracellular cholesterol pool produced by these drugs upregulates the activity of the SREBP2 transcription factor, which subsequently stimulates the expression of the LDL receptor gene, an effect that is followed by an increase in the serum concentration of PCSK9." supports: SUPPORT evidence_source: OTHER - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:Q12772 target: UniProt:P01130 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P39.yaml b/experiments/opus_vs_sonnet/opus/outputs/P39.yaml index 9193735..af8b9b8 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P39.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P39.yaml @@ -24,7 +24,9 @@ nodes: name: Type 1 Diabetes Mellitus label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: DB:DB00046 target: UniProt:P06213 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Ligand binding to the insulin receptor alpha subunits triggers conformational changes that stimulate autophosphorylation and promote the receptor's kinase activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P06213 target: GO:0046323 evidence: @@ -52,7 +55,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Insulin receptor signaling increases glucose flux into cells via GLUT4 translocation." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0046323 target: HP:0003074 evidence: diff --git a/experiments/opus_vs_sonnet/opus/outputs/P40.yaml b/experiments/opus_vs_sonnet/opus/outputs/P40.yaml index 632d830..24fc557 100644 --- a/experiments/opus_vs_sonnet/opus/outputs/P40.yaml +++ b/experiments/opus_vs_sonnet/opus/outputs/P40.yaml @@ -27,7 +27,9 @@ nodes: name: Asthma label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00043 target: UniProt:P01854 evidence: @@ -36,7 +38,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "Omalizumab binds and sequesters free IgE, neutralizing its function." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: UniProt:P01854 target: UniProt:P12319 evidence: @@ -53,7 +57,8 @@ links: snippet: "can block IgE's binding to high-affinity IgE Fc receptors (FcepsilonRI) on mast cells and basophils" supports: SUPPORT evidence_source: OTHER - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P12319 target: GO:0043303 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P01.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P01.yaml index 22134f0..c8a9644 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P01.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P01.yaml @@ -24,7 +24,9 @@ nodes: name: Myocardial Infarction label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D001241 target: UniProt:P23219 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: States that aspirin inactivates COX-1, confirming decreases activity of relationship. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P23219 target: MESH:D013931 evidence: @@ -52,7 +55,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: States COX-1 is involved in platelet production of TXA2, supporting positive regulation. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:D013931 target: GO:0070527 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P02.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P02.yaml index bc57063..d8f4e35 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P02.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P02.yaml @@ -24,7 +24,9 @@ nodes: name: Hypercholesterolemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000069059 target: UniProt:P04035 evidence: @@ -47,7 +49,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: HMG-CoA reductase catalyzes the committed (rate-limiting) step in the cholesterol biosynthetic process. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0006695 target: UniProt:P01130 evidence: @@ -56,7 +59,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Reduced cholesterol biosynthesis (via HMGCR inhibition) leads to LDL receptor upregulation, demonstrating that the cholesterol biosynthetic process negatively regulates LDL receptor expression. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P01130 target: MESH:D006937 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P03.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P03.yaml index 69eb7f0..0277610 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P03.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P03.yaml @@ -24,7 +24,9 @@ nodes: name: Hypertension label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D017706 target: UniProt:P12821 evidence: @@ -37,7 +39,8 @@ links: snippet: Inhibition of the angiotensin-converting enzyme (ACE) protects against the progression of several cardiovascular diseases. Because of its dual role in regulating angiotensin II and bradykinin levels, the positive clinical effects of ACE inhibitors were thought to be the consequence of concomitant reductions in the production of angiotensin II supports: SUPPORT evidence_source: IN_VITRO - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P12821 target: MESH:D000804 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P04.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P04.yaml index ec52de6..4c2e6c5 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P04.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P04.yaml @@ -21,7 +21,9 @@ nodes: name: Heart Failure label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008790 target: UniProt:P08588 evidence: @@ -35,7 +37,8 @@ links: supports: SUPPORT evidence_source: MODEL_ORGANISM explanation: Metoprolol is a beta-1 adrenergic receptor blocker, decreasing receptor activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P08588 target: GO:0006915 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P05.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P05.yaml index b1df0a2..60b414f 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P05.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P05.yaml @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Establishes that clopidogrel is a prodrug that generates an active metabolite responsible for its antiplatelet effect. - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: CHEBI:174738 target: UniProt:Q9H244 evidence: @@ -46,7 +48,8 @@ links: snippet: Clopidogrel is an antithrombotic prodrug, whose active metabolite inhibits platelet function by irreversibly binding to the platelet receptor for adenosine diphosphate, P2Y(12). supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:Q9H244 target: GO:0070527 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P06.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P06.yaml index 1951b45..8afa120 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P06.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P06.yaml @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Tamoxifen is metabolised by CYP enzymes to form the active metabolite 4-hydroxytamoxifen. - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: CHEBI:44616 target: UniProt:P03372 evidence: @@ -47,7 +49,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Active tamoxifen metabolites including 4-hydroxytamoxifen have high affinity for the estrogen receptor and suppress its proliferative activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P03372 target: GO:0008283 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P07.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P07.yaml index ceb30c3..a866fb3 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P07.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P07.yaml @@ -24,7 +24,9 @@ nodes: name: Chronic Myeloid Leukemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068877 target: UniProt:P00519 evidence: @@ -36,7 +38,8 @@ links: snippet: STI571 was shown to be a competitive inhibitor at the ATP-binding site of the Bcr-Abl tyrosine kinase supports: SUPPORT evidence_source: IN_VITRO - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P00519 target: GO:0008283 evidence: @@ -48,7 +51,8 @@ links: snippet: Chronic myeloid leukaemia (CML) is a myeloproliferative neoplasm characterized by constitutive activity of the tyrosine kinase BCR-ABL1 supports: PARTIAL evidence_source: HUMAN_CLINICAL - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P00519 target: GO:0006915 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P08.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P08.yaml index e327040..edc2e16 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P08.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P08.yaml @@ -21,7 +21,7 @@ nodes: name: Colorectal Cancer label: Disease links: - - key: molecularly interacts with + - key: directly physically interacts with source: MESH:D000068818 target: UniProt:P00533 evidence: @@ -30,7 +30,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Cetuximab binds specifically to the extracellular domain of EGFR (UniProt:P00533). - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068818 target: UniProt:P00533 evidence: @@ -39,7 +41,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Cetuximab binding blocks EGFR phosphorylation and downstream kinase activation, thereby decreasing EGFR signaling activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P00533 target: GO:0008283 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P09.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P09.yaml index 3779c10..547efb1 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P09.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P09.yaml @@ -24,7 +24,9 @@ nodes: name: Acute Lymphoblastic Leukemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008727 target: UniProt:P00374 evidence: @@ -56,7 +58,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: dTMP biosynthesis is required for DNA synthesis; inhibiting dTMP synthesis directly inhibits DNA replication. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: MESH:D008727 target: GO:0071897 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P10.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P10.yaml index 9dd826d..5c557eb 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P10.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P10.yaml @@ -24,7 +24,9 @@ nodes: name: HER2-positive Breast Cancer label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068878 target: UniProt:P04626 evidence: @@ -33,7 +35,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Trastuzumab abrogates intracellular signaling downstream of HER2, effectively decreasing HER2-mediated signaling activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P04626 target: UniProt:P31749 evidence: @@ -42,7 +45,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: HER2 (ErbB2) activates the PI3K/AKT (protein kinase B) pathway, demonstrating HER2 positively regulates AKT1 signaling. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P31749 target: GO:0008283 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P11.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P11.yaml index e4a88fb..28a8b20 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P11.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P11.yaml @@ -21,7 +21,9 @@ nodes: name: Pulmonary Tuberculosis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D012293 target: UniProt:P9WKP4 evidence: @@ -49,7 +51,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: RpoB is the subunit through which RNA extension (transcription) occurs; rifampicin blocks this activity by steric occlusion. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: MESH:D012293 target: GO:0006351 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P12.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P12.yaml index 0100e18..b2565e4 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P12.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P12.yaml @@ -24,7 +24,9 @@ nodes: name: Pulmonary Tuberculosis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D007538 target: UniProt:P0A5Q9 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P13.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P13.yaml index f582b08..7d51ed3 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P13.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P13.yaml @@ -24,7 +24,7 @@ nodes: name: MRSA Infection label: Disease links: - - key: binds + - key: directly physically interacts with source: MESH:D014640 target: CHEBI:83419 evidence: @@ -33,7 +33,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Vancomycin binds the D-Ala-D-Ala terminus of the peptidoglycan precursor lipid II. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: CHEBI:83419 target: GO:0009252 evidence: @@ -42,7 +43,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Vancomycin binding to Lipid II interferes with peptidoglycan layer maturation (biosynthetic process). - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0009252 target: NCBITaxon:1280 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P14.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P14.yaml index 9bba259..a2b1aa7 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P14.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P14.yaml @@ -36,7 +36,9 @@ links: snippet: Oseltamivir, an inactive anti-influenza virus prodrug, is activated (hydrolysed) in vivo by carboxylesterase 1 (CES1) to its active metabolite oseltamivir carboxylate. supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: CHEBI:67200 target: UniProt:P03472 evidence: @@ -48,7 +50,8 @@ links: snippet: Anti influenza drugs such as Oseltamivir target a highly conserved active site of NA, which comprises of 8 functional residues (R118, D151, R152, R224, E276, R292, R371 and Y406) to restrict viral release from host cells, thus inhibiting its ability to cleave sialic acid residues on the cell membrane. supports: SUPPORT evidence_source: COMPUTATIONAL - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P03472 target: GO:0019076 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P15.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P15.yaml index 63bfd69..518e978 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P15.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P15.yaml @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Acyclovir is phosphorylated by viral thymidine kinase to the monophosphate, which is then converted by cellular kinases to the active triphosphate metabolite. - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: CHEBI:16624 target: UniProt:P04293 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P16.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P16.yaml index 4e3a12e..553a3f7 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P16.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P16.yaml @@ -24,7 +24,9 @@ nodes: name: Parkinson's Disease label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D007980 target: UniProt:P20711 evidence: @@ -49,7 +51,9 @@ links: supports: SUPPORT evidence_source: MODEL_ORGANISM explanation: Confirms levodopa is a dopamine precursor and its conversion to dopamine is central to its therapeutic effect. - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D004298 target: UniProt:P14416 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P17.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P17.yaml index 5ce54bc..7e9d4ba 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P17.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P17.yaml @@ -24,7 +24,9 @@ nodes: name: Major Depressive Disorder label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D005473 target: UniProt:P31645 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: SSRIs including fluoxetine inhibit presynaptic serotonin reuptake via SERT blockade. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P31645 target: MESH:D012701 evidence: @@ -47,7 +50,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: SERT normally removes serotonin from the synapse; its inhibition leads to increased extracellular serotonin. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:D012701 target: GO:0007210 evidence: @@ -56,7 +60,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Increased synaptic serotonin activates postsynaptic receptors, enhancing serotonin receptor signaling. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0007210 target: MESH:D003865 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P18.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P18.yaml index 3e7c47a..b279bd5 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P18.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P18.yaml @@ -21,7 +21,9 @@ nodes: name: Bipolar Disorder label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008094 target: UniProt:P49841 evidence: @@ -35,7 +37,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Lithium is hypothesized to exert its therapeutic effects through direct inhibition of GSK3. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P49841 target: GO:0006915 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P19.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P19.yaml index 6228eb8..9813d0a 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P19.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P19.yaml @@ -24,7 +24,9 @@ nodes: name: Epilepsy label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000077306 target: UniProt:P54289 evidence: @@ -37,7 +39,9 @@ links: snippet: binding to the alpha-2-delta protein subunit of voltage-gated calcium channels in the central nervous system, thereby blocking the excitatory influx of calcium supports: SUPPORT evidence_source: IN_VITRO - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: UniProt:P54289 target: UniProt:O00555 evidence: @@ -46,7 +50,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: The alpha-2-delta subunit modulated by gabapentin decreases activity of the P/Q-type voltage-gated calcium channel, reducing Ca2+ influx. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:O00555 target: GO:0007269 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P20.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P20.yaml index bc2407e..5bdd97b 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P20.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P20.yaml @@ -24,7 +24,9 @@ nodes: name: Alzheimer's Disease label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000077856 target: UniProt:P22303 evidence: @@ -33,7 +35,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Donepezil acts by blocking AChE, increasing extracellular acetylcholine concentrations. - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: UniProt:P22303 target: MESH:D000109 evidence: @@ -42,7 +46,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: AChE hydrolyzes acetylcholine, thereby reducing its availability at the synapse. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:D000109 target: GO:0007271 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P21.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P21.yaml index 3430c53..8428817 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P21.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P21.yaml @@ -27,7 +27,9 @@ nodes: name: Rheumatoid Arthritis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008727 target: UniProt:P00374 evidence: @@ -35,7 +37,9 @@ links: snippet: Methotrexate (MTX), a synthetic folate analog, is a tight-binding inhibitor of dihydrofolate reductase (DHFR), a key enzyme for the biosynthesis of purines, thymidylate, and several amino acids. supports: SUPPORT evidence_source: IN_VITRO - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008727 target: UniProt:P31939 evidence: @@ -47,7 +51,8 @@ links: snippet: intracellular MTX polyglutamates inhibit AICAR transformylase (ATIC) activity and thereby promote adenosine release supports: SUPPORT evidence_source: IN_VITRO - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P31939 target: MESH:D000241 evidence: @@ -61,7 +66,8 @@ links: supports: PARTIAL evidence_source: HUMAN_CLINICAL explanation: ATIC inhibition (blockade at AICA ribonucleotide transformylase step) leads to AICAR accumulation and adenosine release; this sentence describes the blockade and its clinical significance. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:D000241 target: UniProt:P29274 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P23.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P23.yaml index 006e6b9..ff2cbf6 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P23.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P23.yaml @@ -26,7 +26,9 @@ nodes: label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D006886 target: UniProt:Q9NYK1 evidence: @@ -40,7 +42,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D006886 target: UniProt:Q9NR96 evidence: @@ -54,7 +58,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:Q9NYK1 target: GO:0032606 evidence: @@ -68,7 +73,8 @@ links: evidence_source: HUMAN_CLINICAL explanation: CpG-A stimulates TLR9 and R848/ssRNA stimulate TLR7/8; the pDC IFNα production is shown to be downstream of TLR activation. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:Q9NR96 target: GO:0032606 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P24.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P24.yaml index c8f52e9..d378aa3 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P24.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P24.yaml @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: MMF is a prodrug that is completely hydrolyzed to the active metabolite mycophenolic acid (MPA) after oral administration. - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D009173 target: UniProt:P12268 evidence: @@ -46,7 +48,8 @@ links: snippet: Mycophenolic acid (MPA) is a highly selective, non-competitive and reversible inhibitor of the inosine monophosphate dehydrogenase (IMPDH), the rate-limiting enzyme in the de novo biosynthesis of guanosine nucleotides. supports: SUPPORT evidence_source: IN_VITRO - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P12268 target: GO:0046651 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P25.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P25.yaml index 858b5f4..613b3a5 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P25.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P25.yaml @@ -21,7 +21,7 @@ nodes: name: Psoriasis label: Disease links: - - key: molecularly interacts with + - key: directly physically interacts with source: MESH:D000068879 target: UniProt:P01375 evidence: @@ -29,7 +29,9 @@ links: snippet: Adalimumab, a fully human monoclonal antibody, binds to and neutralizes tumor necrosis factor. supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068879 target: UniProt:P01375 evidence: @@ -37,7 +39,8 @@ links: snippet: Adalimumab is a fully recombinant human immunoglobulin G1 monoclonal antibody that specifically binds with high affinity to human TNF-α and inhibits its binding to TNF receptors. supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P01375 target: GO:0007249 evidence: @@ -45,7 +48,8 @@ links: snippet: TNF-alpha and NF-kappaB expressions were significantly higher in psoriatic epidermis than in normal epidermis (p < 0.05). supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0007249 target: MESH:D011565 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P26.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P26.yaml index 24d0fad..5462a50 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P26.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P26.yaml @@ -24,7 +24,9 @@ nodes: name: Diabetes Mellitus, Type 2 label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008687 target: UniProt:P03886 evidence: @@ -52,7 +54,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Complex I inhibition by metformin raises AMP/ATP ratio and activates AMPK. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:Q13131 target: GO:0006094 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P29.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P29.yaml index 4675722..4f25d3a 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P29.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P29.yaml @@ -21,7 +21,9 @@ nodes: name: Gout label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000493 target: UniProt:P47989 evidence: @@ -30,7 +32,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Allopurinol directly inhibits xanthine oxidase, reducing urate production. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P47989 target: MESH:D014527 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P30.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P30.yaml index 0375c4b..fdcf75c 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P30.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P30.yaml @@ -24,7 +24,9 @@ nodes: name: Type 2 Diabetes Mellitus label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:C000591311 target: UniProt:P31639 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Confirms SGLT2 inhibition as the mechanism of action of empagliflozin. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P31639 target: GO:0070293 evidence: @@ -52,7 +55,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: SGLT2 is the primary transporter responsible for renal glucose reabsorption. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0070293 target: HP:0003074 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P31.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P31.yaml index 8a52ff3..92ee0ab 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P31.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P31.yaml @@ -30,7 +30,9 @@ nodes: name: Hemophilia A label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:C016671 target: UniProt:P30518 evidence: @@ -39,7 +41,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: DDAVP (the synthetic vasopressin analogue) activates the endothelial vasopressin V2 receptor (AVPR2), initiating cAMP-mediated signaling. - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: UniProt:P30518 target: GO:0019933 evidence: @@ -48,7 +52,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Activation of the V2 receptor increases cAMP-mediated signaling, which drives Weibel-Palade body exocytosis. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0019933 target: GO:0099132 evidence: @@ -57,7 +62,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: cAMP-mediated signaling downstream of V2 receptor activation leads to exocytosis from Weibel-Palade bodies. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0099132 target: UniProt:P04275 evidence: @@ -70,7 +76,8 @@ links: snippet: DDAVP elicits the release of von Willebrand Factor (VWF) from endothelial cells, thereby increasing the levels of circulating VWF and coagulation factor (F)VIII. supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P04275 target: UniProt:P00451 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P32.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P32.yaml index 38a5000..1d8bc65 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P32.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P32.yaml @@ -21,7 +21,9 @@ nodes: name: Ascorbic acid deficiency label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D001205 target: UniProt:P13674 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P34.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P34.yaml index 258c268..409c0c5 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P34.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P34.yaml @@ -27,7 +27,8 @@ nodes: name: Primary cutaneous T-cell lymphoma label: Disease links: - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:C078456 target: UniProt:P01589 evidence: @@ -39,7 +40,9 @@ links: snippet: DAB(389)IL-2 is internalized into IL-2 receptor-bearing cells by endocytosis. supports: SUPPORT evidence_source: IN_VITRO - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:C078456 target: UniProt:P13639 evidence: @@ -48,7 +51,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO source_tier: FULL_TEXT - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P13639 target: GO:0006412 evidence: @@ -56,7 +60,8 @@ links: snippet: ADP(R) of eEF2 resulted in a decrease in total protein synthesis consistent with a defect in translation elongation. supports: SUPPORT evidence_source: IN_VITRO - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0006412 target: GO:0006915 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P35.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P35.yaml index 92b4204..500da7d 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P35.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P35.yaml @@ -33,7 +33,9 @@ nodes: name: Chronic hepatitis C label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:C100416 target: UniProt:P23458 evidence: @@ -42,7 +44,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Peginterferon alfa-2a (an IFN-alpha) activates JAK1 through receptor engagement. - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:C100416 target: UniProt:P29597 evidence: @@ -51,7 +55,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Peginterferon alfa-2a (an IFN-alpha) activates TYK2 through receptor engagement. - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: UniProt:P23458 target: UniProt:P42224 evidence: @@ -60,7 +66,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Activated JAK1 phosphorylates STAT1 on conserved tyrosine residues. - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: UniProt:P29597 target: UniProt:P52630 evidence: @@ -69,7 +77,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Activated TYK2 phosphorylates STAT2 on conserved tyrosine residues. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P42224 target: GO:0035458 evidence: @@ -78,7 +87,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: STAT1 forms ISGF3 complex that drives interferon-stimulated gene transcription, representing the cellular response to interferon. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P52630 target: GO:0035458 evidence: @@ -87,7 +97,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: STAT2 forms ISGF3 complex that drives interferon-stimulated gene transcription, representing the cellular response to interferon. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0035458 target: GO:0009615 evidence: @@ -96,7 +107,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: IFN-alpha-induced ISG expression (cellular interferon response) leads to an antiviral response against HCV. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0009615 target: MESH:D019698 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P37.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P37.yaml index c1c5a76..62bd5e9 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P37.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P37.yaml @@ -24,7 +24,9 @@ nodes: name: Anxiety label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D008140 target: UniProt:P14867 evidence: @@ -33,7 +35,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Lorazepam is a benzodiazepine that binds allosterically to the GABA-A receptor and increases its activity (chloride current). - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: UniProt:P14867 target: GO:0005254 evidence: @@ -51,7 +55,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Chloride influx through the GABA-A channel causes membrane hyperpolarization of the postsynaptic neuron. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0060081 target: MESH:D001007 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P38.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P38.yaml index e0e424b..ed0aa01 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P38.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P38.yaml @@ -27,7 +27,9 @@ nodes: name: Hypercholesterolemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D017035 target: UniProt:P04035 evidence: @@ -47,7 +49,8 @@ links: snippet: Statins have been widely used for the treatment of hypercholesterolemia due to their ability to inhibit HMG-CoA reductase, the rate-limiting enzyme of de novo cholesterol synthesis, via the so-called mevalonate pathway. supports: SUPPORT evidence_source: IN_VITRO - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0006695 target: UniProt:P01130 evidence: @@ -56,7 +59,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Inhibition of cholesterol biosynthesis (via reduced mevalonate synthesis) is linked to upregulation of LDL receptor expression, consistent with the negative feedback relationship between intracellular cholesterol levels and LDLR expression. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:P01130 target: MESH:D008077 evidence: diff --git a/experiments/opus_vs_sonnet/sonnet/outputs/P40.yaml b/experiments/opus_vs_sonnet/sonnet/outputs/P40.yaml index 597a574..17d2dc3 100644 --- a/experiments/opus_vs_sonnet/sonnet/outputs/P40.yaml +++ b/experiments/opus_vs_sonnet/sonnet/outputs/P40.yaml @@ -27,7 +27,9 @@ nodes: name: Asthma label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000069444 target: UniProt:P01854 evidence: @@ -35,7 +37,8 @@ links: snippet: This non-anaphylactogenic anti-IgE monoclonal antibody (omalizumab) binds IgE at the same site as these antibodies bind FcepsilonRI and FcepsilonRII. Consequently, omalizumab inhibits IgE effector functions by blocking IgE binding to high-affinity receptors on IgE effector cells. supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P01854 target: UniProt:P12319 evidence: @@ -43,7 +46,8 @@ links: snippet: interaction with FcεRI on mast cells and basophils leads to immediate hypersensitivity reactions upon allergen challenge supports: SUPPORT evidence_source: IN_VITRO - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P12319 target: GO:0043303 evidence: diff --git a/experiments/pilot/outputs/B02362_MESH_D003882_1.yaml b/experiments/pilot/outputs/B02362_MESH_D003882_1.yaml index 8449169..e9dc400 100644 --- a/experiments/pilot/outputs/B02362_MESH_D003882_1.yaml +++ b/experiments/pilot/outputs/B02362_MESH_D003882_1.yaml @@ -18,7 +18,9 @@ nodes: name: Dermatomyositis label: Disease links: - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: MESH:D010129 target: MESH:D006025 evidence: diff --git a/experiments/pilot/outputs/B02362_MESH_D003882_1__r2.yaml b/experiments/pilot/outputs/B02362_MESH_D003882_1__r2.yaml index 843384c..9c09db3 100644 --- a/experiments/pilot/outputs/B02362_MESH_D003882_1__r2.yaml +++ b/experiments/pilot/outputs/B02362_MESH_D003882_1__r2.yaml @@ -21,7 +21,8 @@ nodes: name: Dermatomyositis label: Disease links: - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: MESH:D010129 target: GO:0009411 evidence: @@ -30,7 +31,8 @@ links: supports: SUPPORT evidence_source: MODEL_ORGANISM explanation: "para-aminobenzoic acid (aminobenzoic acid) is a UV absorber that, applied before UVB exposure, prevents the pathological skin changes caused by UVB, i.e. it blunts the skin's response to ultraviolet radiation." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0009411 target: GO:0006915 evidence: diff --git a/experiments/pilot/outputs/B02362_MESH_D003882_1__r3.yaml b/experiments/pilot/outputs/B02362_MESH_D003882_1__r3.yaml index 0339fe2..71a4c66 100644 --- a/experiments/pilot/outputs/B02362_MESH_D003882_1__r3.yaml +++ b/experiments/pilot/outputs/B02362_MESH_D003882_1__r3.yaml @@ -18,7 +18,9 @@ nodes: name: Dermatomyositis label: Disease links: - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: MESH:D010129 target: MESH:D006025 evidence: diff --git a/experiments/pilot/outputs/DB00002_MESH_D003110_1.yaml b/experiments/pilot/outputs/DB00002_MESH_D003110_1.yaml index 8d7967c..0c84ac1 100644 --- a/experiments/pilot/outputs/DB00002_MESH_D003110_1.yaml +++ b/experiments/pilot/outputs/DB00002_MESH_D003110_1.yaml @@ -21,7 +21,9 @@ nodes: name: Malignant tumor of colon label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068818 target: UniProt:P00533 evidence: @@ -30,7 +32,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Cetuximab binds the extracellular domain of EGFR and impairs EGFR-mediated signaling, i.e. decreases EGFR activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P00533 target: GO:0008283 evidence: diff --git a/experiments/pilot/outputs/DB00002_MESH_D003110_1__r2.yaml b/experiments/pilot/outputs/DB00002_MESH_D003110_1__r2.yaml index 19fa753..168fb95 100644 --- a/experiments/pilot/outputs/DB00002_MESH_D003110_1__r2.yaml +++ b/experiments/pilot/outputs/DB00002_MESH_D003110_1__r2.yaml @@ -21,7 +21,9 @@ nodes: name: Malignant tumor of colon label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068818 target: UniProt:P00533 evidence: @@ -34,7 +36,8 @@ links: snippet: "Cetuximab binding to the EGFR blocks phosphorylation and activation of receptor-associated kinases and their associated downstream signalling (MAPK, PI3K/Akt, Jak/Stat pathways)" supports: SUPPORT evidence_source: OTHER - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P00533 target: GO:0008283 evidence: diff --git a/experiments/pilot/outputs/DB00002_MESH_D003110_1__r3.yaml b/experiments/pilot/outputs/DB00002_MESH_D003110_1__r3.yaml index 219afef..6a67023 100644 --- a/experiments/pilot/outputs/DB00002_MESH_D003110_1__r3.yaml +++ b/experiments/pilot/outputs/DB00002_MESH_D003110_1__r3.yaml @@ -21,7 +21,9 @@ nodes: name: Malignant tumor of colon label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00002 target: UniProt:P00533 evidence: @@ -30,7 +32,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Cetuximab blocks ligand-dependent EGFR signaling, reducing EGFR activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P00533 target: GO:0008283 evidence: diff --git a/experiments/pilot/outputs/DB00005_MESH_D015535_1.yaml b/experiments/pilot/outputs/DB00005_MESH_D015535_1.yaml index 00e520d..95b084b 100644 --- a/experiments/pilot/outputs/DB00005_MESH_D015535_1.yaml +++ b/experiments/pilot/outputs/DB00005_MESH_D015535_1.yaml @@ -21,7 +21,9 @@ nodes: name: Psoriasis with arthropathy label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00005 target: UniProt:P01375 evidence: diff --git a/experiments/pilot/outputs/DB00009_MESH_D011655_1.yaml b/experiments/pilot/outputs/DB00009_MESH_D011655_1.yaml index d414ac9..4e8b44f 100644 --- a/experiments/pilot/outputs/DB00009_MESH_D011655_1.yaml +++ b/experiments/pilot/outputs/DB00009_MESH_D011655_1.yaml @@ -21,7 +21,9 @@ nodes: name: Pulmonary embolism label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: DB:DB00009 target: UniProt:P00747 evidence: @@ -30,7 +32,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Alteplase is recombinant human tissue-type plasminogen activator (t-PA), which activates the zymogen plasminogen." - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: UniProt:P00747 target: MESH:D005342 evidence: diff --git a/experiments/pilot/outputs/DB00009_MESH_D011655_1__r2.yaml b/experiments/pilot/outputs/DB00009_MESH_D011655_1__r2.yaml index fca8a95..b3e288c 100644 --- a/experiments/pilot/outputs/DB00009_MESH_D011655_1__r2.yaml +++ b/experiments/pilot/outputs/DB00009_MESH_D011655_1__r2.yaml @@ -24,7 +24,9 @@ nodes: name: Pulmonary embolism label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: DB:DB00009 target: UniProt:P00747 evidence: diff --git a/experiments/pilot/outputs/DB00009_MESH_D011655_1__r3.yaml b/experiments/pilot/outputs/DB00009_MESH_D011655_1__r3.yaml index 5cd8af7..10ad45f 100644 --- a/experiments/pilot/outputs/DB00009_MESH_D011655_1__r3.yaml +++ b/experiments/pilot/outputs/DB00009_MESH_D011655_1__r3.yaml @@ -21,7 +21,9 @@ nodes: name: Pulmonary embolism label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: DB:DB00009 target: UniProt:P00747 evidence: @@ -34,7 +36,9 @@ links: snippet: "The therapeutic action of tissue plasminogen activator (t-PA) is a two-step process: (1) binding to lysine-rich fibrin (Km event) and (2) converting local plasminogen into plasmin (Kcat event)." supports: SUPPORT evidence_source: IN_VITRO - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: UniProt:P00747 target: MESH:D005341 evidence: diff --git a/experiments/pilot/outputs/DB00010_MESH_D004393_1.yaml b/experiments/pilot/outputs/DB00010_MESH_D004393_1.yaml index 96169f0..fee2fe4 100644 --- a/experiments/pilot/outputs/DB00010_MESH_D004393_1.yaml +++ b/experiments/pilot/outputs/DB00010_MESH_D004393_1.yaml @@ -21,7 +21,9 @@ nodes: name: Pituitary dwarfism label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D017337 target: UniProt:Q02643 evidence: @@ -35,7 +37,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "Sermorelin (GHRH(1-29)NH2) is a full GHRH-receptor agonist, equipotent to full-length GHRH in stimulating GH release." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:Q02643 target: GO:0030252 evidence: @@ -49,7 +52,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Activation of the GHRH receptor drives the adenylyl-cyclase/cAMP pathway that stimulates GH secretion." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0030252 target: MESH:D004393 evidence: diff --git a/experiments/pilot/outputs/DB00013_MESH_D011655_1.yaml b/experiments/pilot/outputs/DB00013_MESH_D011655_1.yaml index b2d2aa2..a4b8d15 100644 --- a/experiments/pilot/outputs/DB00013_MESH_D011655_1.yaml +++ b/experiments/pilot/outputs/DB00013_MESH_D011655_1.yaml @@ -23,7 +23,9 @@ nodes: name: Pulmonary embolism label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D014568 target: UniProt:P00747 evidence: @@ -32,7 +34,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Urokinase (u-PA) is a plasminogen activator that activates plasminogen, converting it to active plasmin." - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: UniProt:P00747 target: MESH:D005341 evidence: diff --git a/experiments/pilot/outputs/DB00026_MESH_D056587_1.yaml b/experiments/pilot/outputs/DB00026_MESH_D056587_1.yaml index 8c300d1..da9f4fd 100644 --- a/experiments/pilot/outputs/DB00026_MESH_D056587_1.yaml +++ b/experiments/pilot/outputs/DB00026_MESH_D056587_1.yaml @@ -21,7 +21,9 @@ nodes: name: Cryopyrin-associated periodic syndrome label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00026 target: UniProt:P14778 evidence: @@ -30,7 +32,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Anakinra competitively inhibits binding of IL-1 to the type 1 IL-1 receptor, decreasing the receptor's signaling activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P14778 target: GO:0006954 evidence: diff --git a/experiments/pilot/outputs/DB00030_MESH_D003922_1.yaml b/experiments/pilot/outputs/DB00030_MESH_D003922_1.yaml index 5ad7ce5..7b7b63c 100644 --- a/experiments/pilot/outputs/DB00030_MESH_D003922_1.yaml +++ b/experiments/pilot/outputs/DB00030_MESH_D003922_1.yaml @@ -24,7 +24,9 @@ nodes: name: Diabetes Mellitus, Type 1 label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D007328 target: UniProt:P06213 evidence: @@ -37,7 +39,8 @@ links: snippet: "Insulin action involves a series of signaling cascades initiated by insulin binding to its receptor, eliciting receptor autophosphorylation and activation of the receptor tyrosine kinase, resulting in tyrosine phosphorylation of insulin receptor substrates (IRSs)." supports: SUPPORT evidence_source: OTHER - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P06213 target: GO:0046323 evidence: @@ -50,7 +53,8 @@ links: snippet: "is involved in several of the metabolic effects of the hormone, such as glucose transport, glycolysis and glycogen synthesis." supports: SUPPORT evidence_source: OTHER - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0046323 target: HP:0003074 evidence: diff --git a/experiments/pilot/outputs/DB00035_MESH_D006467_1.yaml b/experiments/pilot/outputs/DB00035_MESH_D006467_1.yaml index 79a14e4..e8e05b4 100644 --- a/experiments/pilot/outputs/DB00035_MESH_D006467_1.yaml +++ b/experiments/pilot/outputs/DB00035_MESH_D006467_1.yaml @@ -24,7 +24,9 @@ nodes: name: Hereditary factor VIII deficiency disease label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D003894 target: UniProt:P30518 evidence: @@ -38,7 +40,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "DDAVP acts via activation of the endothelial vasopressin V2 receptor." - - key: increases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: increased source: UniProt:P30518 target: UniProt:P04275 evidence: @@ -47,7 +51,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "V2 receptor activation drives exocytosis of Weibel-Palade bodies, releasing stored von Willebrand factor and raising its plasma level." - - key: increases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: increased source: UniProt:P04275 target: UniProt:P00451 evidence: diff --git a/experiments/pilot/outputs/DB00038_MESH_D013921_1.yaml b/experiments/pilot/outputs/DB00038_MESH_D013921_1.yaml index 9faf198..7e35b18 100644 --- a/experiments/pilot/outputs/DB00038_MESH_D013921_1.yaml +++ b/experiments/pilot/outputs/DB00038_MESH_D013921_1.yaml @@ -24,7 +24,9 @@ nodes: name: Thrombocytopenic disorder label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: DB:DB00038 target: UniProt:Q14626 evidence: @@ -37,7 +39,8 @@ links: snippet: "A pre-requisite for signal transduction is the initial binding of the cytokines to their unique α-receptors, IL-6R and IL-11R." supports: SUPPORT evidence_source: IN_VITRO - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:Q14626 target: GO:0030219 evidence: @@ -51,7 +54,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Activation of IL-11 receptor signalling (gp130/STAT3) in megakaryocytes directly promotes megakaryocytopoiesis/megakaryocyte differentiation." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0030219 target: GO:0030220 evidence: diff --git a/experiments/pilot/outputs/DB00152_MESH_D001361_1__r2.yaml b/experiments/pilot/outputs/DB00152_MESH_D001361_1__r2.yaml index f6a470f..e36f955 100644 --- a/experiments/pilot/outputs/DB00152_MESH_D001361_1__r2.yaml +++ b/experiments/pilot/outputs/DB00152_MESH_D001361_1__r2.yaml @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Thiamine is phosphorylated intracellularly and converted into its active metabolite, thiamine pyrophosphate." - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D013835 target: UniProt:P29401 evidence: diff --git a/experiments/pilot/outputs/DB00152_MESH_D001361_1__r3.yaml b/experiments/pilot/outputs/DB00152_MESH_D001361_1__r3.yaml index 5a5fc78..c2a49e7 100644 --- a/experiments/pilot/outputs/DB00152_MESH_D001361_1__r3.yaml +++ b/experiments/pilot/outputs/DB00152_MESH_D001361_1__r3.yaml @@ -30,7 +30,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Thiamine is the precursor metabolized to its active coenzyme form, thiamine pyrophosphate (TPP); repletion with thiamine raises TPP, the vitamin form whose depletion defines the thiamine-deficiency state." - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D013835 target: GO:0004802 evidence: diff --git a/experiments/pilot/outputs/DB00258_MESH_D006996_1.yaml b/experiments/pilot/outputs/DB00258_MESH_D006996_1.yaml index 3ea19d2..8f3cdcd 100644 --- a/experiments/pilot/outputs/DB00258_MESH_D006996_1.yaml +++ b/experiments/pilot/outputs/DB00258_MESH_D006996_1.yaml @@ -18,7 +18,9 @@ nodes: name: Hypocalcemia label: Disease links: - - key: increases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: increased source: MESH:C120662 target: MESH:D002118 evidence: diff --git a/experiments/pilot/outputs/DB00290_MESH_D002294_1.yaml b/experiments/pilot/outputs/DB00290_MESH_D002294_1.yaml index 76f4568..9db0368 100644 --- a/experiments/pilot/outputs/DB00290_MESH_D002294_1.yaml +++ b/experiments/pilot/outputs/DB00290_MESH_D002294_1.yaml @@ -24,7 +24,9 @@ nodes: name: Squamous cell carcinoma label: Disease links: - - key: increases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: increased source: MESH:D001761 target: MESH:D017382 evidence: diff --git a/experiments/pilot/outputs/DB00619_MESH_D015464_1.yaml b/experiments/pilot/outputs/DB00619_MESH_D015464_1.yaml index b7d9e9c..af6e358 100644 --- a/experiments/pilot/outputs/DB00619_MESH_D015464_1.yaml +++ b/experiments/pilot/outputs/DB00619_MESH_D015464_1.yaml @@ -21,7 +21,9 @@ nodes: name: Chronic myeloid leukemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068877 target: UniProt:A9UF07 evidence: @@ -30,7 +32,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Imatinib is a BCR-ABL1 tyrosine kinase inhibitor, i.e. it decreases the activity of the BCR-ABL fusion kinase." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:A9UF07 target: GO:0008283 evidence: diff --git a/experiments/pilot/outputs/DB00619_MESH_D015464_1__r2.yaml b/experiments/pilot/outputs/DB00619_MESH_D015464_1__r2.yaml index 2a1bcfb..e32322c 100644 --- a/experiments/pilot/outputs/DB00619_MESH_D015464_1__r2.yaml +++ b/experiments/pilot/outputs/DB00619_MESH_D015464_1__r2.yaml @@ -18,7 +18,9 @@ nodes: name: Chronic myeloid leukemia, BCR-ABL positive label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068877 target: UniProt:A9UF07 evidence: diff --git a/experiments/pilot/outputs/DB00619_MESH_D015464_1__r3.yaml b/experiments/pilot/outputs/DB00619_MESH_D015464_1__r3.yaml index ef15c6a..b2e560b 100644 --- a/experiments/pilot/outputs/DB00619_MESH_D015464_1__r3.yaml +++ b/experiments/pilot/outputs/DB00619_MESH_D015464_1__r3.yaml @@ -18,7 +18,9 @@ nodes: name: Leukemia, Myelogenous, Chronic, BCR-ABL Positive label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068877 target: UniProt:A9UF07 evidence: diff --git a/experiments/pilot/outputs/DB00843_MESH_D000544_1.yaml b/experiments/pilot/outputs/DB00843_MESH_D000544_1.yaml index 9918ce3..7cc7e8a 100644 --- a/experiments/pilot/outputs/DB00843_MESH_D000544_1.yaml +++ b/experiments/pilot/outputs/DB00843_MESH_D000544_1.yaml @@ -21,7 +21,9 @@ nodes: name: Alzheimer's disease label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:C076946 target: UniProt:P22303 evidence: @@ -34,7 +36,9 @@ links: snippet: "The most commonly used drug, donepezil, is a cholinesterase inhibitor." supports: SUPPORT evidence_source: IN_VITRO - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: UniProt:P22303 target: CHEBI:15355 evidence: diff --git a/experiments/pilot/outputs/DB00993_MESH_D001172_1.yaml b/experiments/pilot/outputs/DB00993_MESH_D001172_1.yaml index f089a46..20fe7ea 100644 --- a/experiments/pilot/outputs/DB00993_MESH_D001172_1.yaml +++ b/experiments/pilot/outputs/DB00993_MESH_D001172_1.yaml @@ -37,7 +37,8 @@ links: snippet: "The thioguanine derivative, azathioprine, is a prodrug of 6-mercaptopurine that is further metabolized by various enzymes present in the liver and gut." supports: SUPPORT evidence_source: OTHER - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: MESH:D008774 target: GO:0006164 evidence: @@ -55,7 +56,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "6-Mercaptopurine is a purine synthesis inhibitor." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0006164 target: GO:0042098 evidence: diff --git a/experiments/pilot/outputs/DB01076_MESH_D006937_1.yaml b/experiments/pilot/outputs/DB01076_MESH_D006937_1.yaml index 365a45e..627e557 100644 --- a/experiments/pilot/outputs/DB01076_MESH_D006937_1.yaml +++ b/experiments/pilot/outputs/DB01076_MESH_D006937_1.yaml @@ -27,7 +27,9 @@ nodes: name: Hypercholesterolemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000069059 target: UniProt:P04035 evidence: @@ -36,7 +38,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Atorvastatin's mechanism of action is inhibition of HMG-CoA reductase." - - key: increases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: increased source: UniProt:P04035 target: MESH:D002784 evidence: @@ -45,7 +49,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "HMG-CoA reductase is the rate-limiting enzyme of cholesterol biosynthesis, so its activity increases cellular cholesterol." - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: MESH:D002784 target: UniProt:P01130 evidence: @@ -54,7 +59,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Cellular cholesterol negatively feedback-regulates LDL receptor levels via SREBP-2; statin-lowered cholesterol therefore raises LDL receptor expression." - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: UniProt:P01130 target: MESH:D008078 evidence: diff --git a/experiments/pilot/outputs/DB01527_MESH_D000856_1.yaml b/experiments/pilot/outputs/DB01527_MESH_D000856_1.yaml index c428013..5f39892 100644 --- a/experiments/pilot/outputs/DB01527_MESH_D000856_1.yaml +++ b/experiments/pilot/outputs/DB01527_MESH_D000856_1.yaml @@ -17,7 +17,8 @@ nodes: name: Anorexia label: Disease links: - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: DB:DB01527 target: GO:0007631 evidence: diff --git a/experiments/pilot/outputs/DB09038_MESH_D003924_1.yaml b/experiments/pilot/outputs/DB09038_MESH_D003924_1.yaml index dbb9355..bc0a570 100644 --- a/experiments/pilot/outputs/DB09038_MESH_D003924_1.yaml +++ b/experiments/pilot/outputs/DB09038_MESH_D003924_1.yaml @@ -27,7 +27,9 @@ nodes: name: Diabetes Mellitus, Type 2 label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB09038 target: UniProt:P31639 evidence: @@ -35,7 +37,8 @@ links: snippet: "Empagliflozin is an orally available, potent and highly selective inhibitor of the sodium glucose cotransporter 2 (SGLT2)." supports: SUPPORT evidence_source: HUMAN_CLINICAL - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P31639 target: GO:0035623 evidence: diff --git a/scripts/build_site_data.py b/scripts/build_site_data.py new file mode 100644 index 0000000..99a4866 --- /dev/null +++ b/scripts/build_site_data.py @@ -0,0 +1,291 @@ +""" +Build the static-site JSON (index + per-record) that web-revamp-mockup/ consumes +in "live" mode, from the **agentically curated** path records. + +WHY THIS EXISTS +The site's data layer (web-revamp-mockup/dmdb-data.js) has one documented swap +point: flip SOURCE to "live" and the pages fetch the JSON files named in its +ENDPOINTS map. This script emits exactly those shapes. + +WHAT IT READS +Not kb/paths/ — those 4,846 records are the legacy corpus and carry no per-edge +evidence. The AI-curated records produced by the harness live in the run output +directories listed in RUNS below. The same (drug, disease) pair is often curated +by several runs (model comparison, pilot repeats), so a record's site id is +namespaced by run: "__". graph._id is kept as `record_id`. + +WHAT IT ADDS (join, not invention) + * `paper` — title/authors/journal/year/doi for each cited PMID, read from + reference's PMID_*.md frontmatter in any references_cache/. + * `source_type` — derived from the reference CURIE prefix (PMID -> pubmed, ...). + * `source_tier` — from the cache entry's content_type (abstract vs full text). + * `graph.summary` — the node chain along the record's longest path, joined with + arrows. Generated for display; flagged as such in `site`. + * `area` — a COARSE display-only bucket keyword-matched from the disease + name. Not an ontology assertion; it exists to drive the + browse facet and nothing else. + +Usage: + python scripts/build_site_data.py # write web-revamp-mockup/data/ + python scripts/build_site_data.py --out DIR # write elsewhere +""" + +from __future__ import annotations + +import argparse +import json +import re +from pathlib import Path + +import yaml + +HERE = Path(__file__).resolve().parent +REPO = HERE.parent +# Every reference cache in the repo: the shared one plus the per-run caches the +# model-eval runs wrote alongside their outputs. +CACHE_DIRS = [ + REPO / "references_cache", + REPO / "experiments" / "opus_vs_sonnet" / "opus" / "references_cache", + REPO / "experiments" / "opus_vs_sonnet" / "sonnet" / "references_cache", +] +DEFAULT_OUT = REPO / "web-revamp-mockup" / "data" + +# The agentic curation runs, in display order: (run key, label, glob). +RUNS = [ + ("pilot", "Pilot run", "experiments/pilot/outputs/*.yaml"), + ("opus", "Opus (model eval)", "experiments/opus_vs_sonnet/opus/outputs/*.yaml"), + ("sonnet", "Sonnet (model eval)", "experiments/opus_vs_sonnet/sonnet/outputs/*.yaml"), + ("phase3", "Phase-3 eval", "tests/phase3_eval_outputs/*.yaml"), +] + +# Coarse display buckets for the browse facet. First match wins, so the more +# specific patterns are listed first. +AREA_RULES = [ + ("Neoplasms", r"leukemia|leukaemia|lymphoma|neoplasm|carcinoma|tumor|tumour|myeloma|myelogenous|cancer"), + ("Immune", r"psoriasis|arthritis|arthropath|lupus|crohn|sclerosis|dermatomyositis|asthma|cryopyrin|periodic syndrome|colitis"), + ("Infectious disease", r"tuberculosis|influenza|herpes|hepatitis|conjunctivitis|staphylococc|infection|malaria|hiv"), + ("Cardiovascular", r"heart failure|hypertension|myocardial|stroke|thromb|embolism|angina|arrhythmia"), + ("Blood", r"hemophilia|haemophilia|factor viii|thrombocytopen|anemia|anaemia"), + ("Metabolic", r"cholesterol|diabetes|gout|avitaminosis|deficiency|hypocalcemia|obesity|anorexia|lipid"), + ("Endocrine", r"thyroid|dwarfism|acromegal|adrenal"), + ("Nervous system", r"alzheimer|parkinson|epilep|migraine|neuropath|pain"), + ("Mental health", r"depress|anxiety|bipolar|schizophren|psychos"), + ("Respiratory", r"pulmonary fibrosis|copd|bronch"), + ("Musculoskeletal", r"osteoarthritis|osteoporosis|myopath"), + ("Kidney", r"nephritis|nephropath|renal"), +] + +TIER = {"abstract": "ABSTRACT", "full_text": "FULL_TEXT", "fulltext": "FULL_TEXT"} + + +def area_for(disease: str) -> str: + d = (disease or "").lower() + for area, pattern in AREA_RULES: + if re.search(pattern, d): + return area + return "Other" + + +def source_type_for(reference: str) -> str: + ref = (reference or "").upper() + if ref.startswith("PMID"): + return "pubmed" + if ref.startswith("PMC"): + return "pmc" + if ref.startswith("DB") or ref.startswith("DRUGBANK"): + return "drugbank" + if ref.startswith("DOI") or ref.startswith("10."): + return "doi" + return "other" + + +def load_cache() -> dict[str, dict]: + """Map reference id -> paper credential block, from references_cache frontmatter.""" + papers: dict[str, dict] = {} + for md in sorted(m for d in CACHE_DIRS if d.is_dir() for m in d.glob("*.md")): + text = md.read_text(encoding="utf-8", errors="replace") + if not text.startswith("---"): + continue + end = text.find("\n---", 3) + if end == -1: + continue + try: + fm = yaml.safe_load(text[3:end]) or {} + except yaml.YAMLError: + continue + ref = fm.get("reference_id") + if not ref: + continue + papers[str(ref)] = { + "title": fm.get("title"), + "authors": fm.get("authors") or [], + "journal": fm.get("journal"), + "year": str(fm.get("year")) if fm.get("year") is not None else None, + "doi": fm.get("doi"), + "pmcid": fm.get("pmcid"), + "license": fm.get("license"), + "_tier": TIER.get(str(fm.get("content_type") or "").lower()), + } + return papers + + +def longest_chain(nodes: list[dict], links: list[dict]) -> list[str]: + """Node ids along a longest source->target chain (the record's 'spine').""" + incoming: dict[str, list[str]] = {n["id"]: [] for n in nodes} + for l in links: + if l.get("target") in incoming: + incoming[l["target"]].append(l.get("source")) + + best: dict[str, list[str]] = {} + visiting: set[str] = set() + + def chain(nid: str) -> list[str]: + if nid in best: + return best[nid] + if nid in visiting: # cycle guard + return [nid] + visiting.add(nid) + parents = [p for p in incoming.get(nid, []) if p in incoming] + longest: list[str] = [] + for p in parents: + c = chain(p) + if len(c) > len(longest): + longest = c + visiting.discard(nid) + best[nid] = longest + [nid] + return best[nid] + + return max((chain(n["id"]) for n in nodes), key=len, default=[]) + + +def build_record(path: Path, run: str, run_label: str, papers: dict[str, dict]) -> dict: + raw = yaml.safe_load(path.read_text(encoding="utf-8")) or {} + graph = dict(raw.get("graph") or {}) + nodes = raw.get("nodes") or [] + links = [dict(l) for l in (raw.get("links") or [])] + by_id = {n["id"]: n for n in nodes} + + # enrich each EvidenceItem with its joined paper credential + derived fields + for link in links: + items = link.get("evidence") + if not isinstance(items, list): + continue + enriched = [] + for item in items: + it = dict(item) + ref = it.get("reference") + it["source_type"] = source_type_for(ref) + paper = papers.get(str(ref)) + if paper: + p = {k: v for k, v in paper.items() if k != "_tier"} + it["paper"] = p + it.setdefault("source_tier", paper.get("_tier") or "ABSTRACT") + else: + it["paper"] = None + enriched.append(it) + link["evidence"] = enriched + + chain = longest_chain(nodes, links) + graph["summary"] = " → ".join(by_id[n]["name"] for n in chain if n in by_id) + + # references ship as bare URL strings in the record files; the site wants + # {url, type, label} rows. + refs = [] + for r in raw.get("references") or []: + if isinstance(r, dict): + refs.append(r) + continue + url = str(r) + host = re.sub(r"^https?://(www\.)?", "", url).split("/")[0] + kind = "drugbank" if "drugbank" in host else "wiki" if "wikipedia" in host else "other" + refs.append({"url": url, "type": kind, "label": f"{host} — record source"}) + + site_id = f"{run}__{path.stem}" + return { + "directed": raw.get("directed", True), + "multigraph": raw.get("multigraph", True), + "graph": graph, + "nodes": nodes, + "links": links, + "references": refs, + "site": { + "id": site_id, + "record_id": graph.get("_id"), + "run": run, + "run_label": run_label, + "source_file": str(path.relative_to(REPO)), + "summary_generated": True, + }, + } + + +def index_row(rec: dict) -> dict: + nodes, links = rec["nodes"], rec["links"] + types, seen = [], set() + for nid in longest_chain(nodes, links): + label = next((n["label"] for n in nodes if n["id"] == nid), None) + if label and label not in seen: + seen.add(label) + types.append(label) + for n in nodes: # types off the spine still matter to the facet + if n.get("label") and n["label"] not in seen: + seen.add(n["label"]) + types.append(n["label"]) + + target = next((n["name"] for n in nodes if n.get("label") == "Protein"), None) + if not target: + target = next((n["name"] for n in nodes[1:]), "") + + sourced = sum(1 for l in links if l.get("evidence")) + flagged = sum( + 1 for l in links + if any((it.get("supports") or "SUPPORT") != "SUPPORT" for it in (l.get("evidence") or [])) + ) + return { + "id": rec["site"]["id"], + "record_id": rec["site"]["record_id"], + "run": rec["site"]["run_label"], + "drug": rec["graph"].get("drug") or "", + "disease": rec["graph"].get("disease") or "", + "area": area_for(rec["graph"].get("disease")), + "target": target or "", + "types": types, + "steps": max(len(longest_chain(nodes, links)) - 1, 0), + "edges": len(links), + "sourced": sourced, + "flagged": flagged, + } + + +def main() -> int: + ap = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("--out", default=str(DEFAULT_OUT), help="output data directory") + args = ap.parse_args() + + out = Path(args.out) + records_dir = out / "records" + records_dir.mkdir(parents=True, exist_ok=True) + + papers = load_cache() + rows, written = [], 0 + for run, run_label, pattern in RUNS: + for path in sorted(REPO.glob(pattern)): + rec = build_record(path, run, run_label, papers) + (records_dir / f"{rec['site']['id']}.json").write_text( + json.dumps(rec, indent=2, ensure_ascii=False) + "\n", encoding="utf-8") + rows.append(index_row(rec)) + written += 1 + + rows.sort(key=lambda r: (r["drug"].lower(), r["disease"].lower(), r["id"])) + (out / "index.json").write_text( + json.dumps(rows, indent=2, ensure_ascii=False) + "\n", encoding="utf-8") + + runs = {r["run"] for r in rows} + print(f"Wrote {written} records + index.json to {out} " + f"({len(runs)} runs, {len({r['record_id'] for r in rows})} distinct path ids).") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/check_biolink_drift.py b/scripts/check_biolink_drift.py index 22c7bd3..eebdce4 100644 --- a/scripts/check_biolink_drift.py +++ b/scripts/check_biolink_drift.py @@ -249,8 +249,11 @@ def render_report(drift: dict, meta: dict, *, show_added: bool) -> str: A("") A("These edges' keys are no longer valid in the current Biolink model (most were") A("folded into `regulates`/`affects` + qualifiers in the v2->v4 refactor). Removing") - A("them from the enum would break existing records, so this needs a human decision") - A("(the locked policy is to translate at the publish/export layer, not migrate data).") + A("them from the enum would break the legacy corpus, so this needs a human decision.") + A("Per docs/biolink_version_decision.md the enum deliberately spans both eras: QC") + A("Layer 3 allows these for `legacy` records and rejects them for `ai_curated` ones,") + A("and src/drugmechdb/schema/biolink_predicate_status.yaml records the replacement") + A("each one maps to.") A("") for r in drift["removed"]: A(f" - {r['predicate']:<28} {r['meaning'] or '(no biolink mapping)'}") diff --git a/scripts/migrate_predicates.py b/scripts/migrate_predicates.py new file mode 100644 index 0000000..4f3dbea --- /dev/null +++ b/scripts/migrate_predicates.py @@ -0,0 +1,159 @@ +""" +Migrate a record's edge predicates from the legacy (v1.3.0-era) Biolink vocabulary +to the pinned current release, using the qualifier model. + +WHAT IT DOES +Biolink's v2->v4 refactor removed the `positively/negatively regulates` and +`increases/decreases of` predicate families, folding them into +`regulates` / `affects` carried with `object_aspect_qualifier` + +`object_direction_qualifier`. This script applies that mapping to a record: + + - key: decreases activity of - key: affects + source: MESH:D000068877 -> object_aspect_qualifier: activity + target: UniProt:A9UF07 object_direction_qualifier: decreased + source: MESH:D000068877 + target: UniProt:A9UF07 + +The mapping is NOT defined here — it lives in +`src/drugmechdb/schema/biolink_predicate_status.yaml`, the single source of truth +shared with QC Layer 3 (scripts/validate_predicates.py). Predicates marked +`needs_human_decision` are never rewritten; they are reported and left alone. + +WHY A LINE-BASED REWRITE +Round-tripping these files through a YAML dumper would reformat every line and bury +the change in noise. Every edge key in the corpus is written as `- key: ` on +its own line, so the transform is applied textually: the record's formatting, +comments, and quoting style survive untouched. + +Usage: + python scripts/migrate_predicates.py --check DIR_OR_FILE... # report only, exit 1 if stale + python scripts/migrate_predicates.py --write DIR_OR_FILE... # rewrite in place + python scripts/migrate_predicates.py --write --diff DIR... # rewrite + print each change +""" + +from __future__ import annotations + +import argparse +import re +import sys +from pathlib import Path + +import yaml + +REPO = Path(__file__).resolve().parent.parent +STATUS = REPO / "src" / "drugmechdb" / "schema" / "biolink_predicate_status.yaml" + +KEY_LINE = re.compile(r"^(?P\s*)- key:\s*(?P.+?)\s*$") + +# Qualifier keys are emitted in this order, directly under the rewritten key. +QUALIFIER_ORDER = ("object_aspect_qualifier", "object_direction_qualifier", "qualified_predicate") + + +def load_status() -> dict: + doc = yaml.safe_load(STATUS.read_text(encoding="utf-8")) + return doc["predicates"] + + +def rel(path: Path) -> str: + """Repo-relative when possible; the given path otherwise.""" + try: + return str(path.resolve().relative_to(REPO)) + except ValueError: + return str(path) + + +def iter_files(targets: list[str]) -> list[Path]: + files: list[Path] = [] + for t in targets: + p = Path(t) + if p.is_dir(): + files.extend(sorted(q for q in p.glob("*.yaml") if q.name != "_index.yaml")) + elif p.is_file(): + files.append(p) + else: + print(f"warning: {t} is not a file or directory", file=sys.stderr) + return files + + +def migrate_text(text: str, status: dict) -> tuple[str, list[tuple[str, str]], list[str]]: + """Return (new_text, [(old_key, new_key)...], [blocked_predicates...]).""" + out: list[str] = [] + changed: list[tuple[str, str]] = [] + blocked: list[str] = [] + + for line in text.splitlines(keepends=True): + m = KEY_LINE.match(line.rstrip("\n")) + if not m: + out.append(line) + continue + key = m.group("key").strip().strip("'\"") + entry = status.get(key) + if not entry or entry.get("status") == "current": + out.append(line) + continue + replacement = entry.get("replacement") + if not replacement: + blocked.append(key) # needs_human_decision — leave untouched + out.append(line) + continue + + newline = "\n" if line.endswith("\n") else "" + indent = m.group("indent") + child = indent + " " # align with `source:`/`target:` + out.append(f"{indent}- key: {replacement['key']}{newline}") + for q in QUALIFIER_ORDER: + if q in replacement: + out.append(f"{child}{q}: {replacement[q]}{newline}") + changed.append((key, replacement["key"])) + + return "".join(out), changed, blocked + + +def main() -> int: + ap = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("targets", nargs="+", help="Record files or directories to migrate.") + mode = ap.add_mutually_exclusive_group(required=True) + mode.add_argument("--check", action="store_true", + help="Report what would change; exit 1 if anything is stale.") + mode.add_argument("--write", action="store_true", help="Rewrite the files in place.") + ap.add_argument("--diff", action="store_true", help="Print each predicate rewrite.") + args = ap.parse_args() + + status = load_status() + files = iter_files(args.targets) + if not files: + print("no files matched", file=sys.stderr) + return 2 + + n_files = n_edges = 0 + all_blocked: dict[str, int] = {} + for path in files: + text = path.read_text(encoding="utf-8") + new_text, changed, blocked = migrate_text(text, status) + for b in blocked: + all_blocked[b] = all_blocked.get(b, 0) + 1 + if not changed: + continue + n_files += 1 + n_edges += len(changed) + if args.diff or args.check: + print(rel(path)) + for old, new in changed: + print(f" {old} -> {new}") + if args.write: + path.write_text(new_text, encoding="utf-8") + + verb = "would migrate" if args.check else "migrated" + print(f"\n{verb} {n_edges} edges across {n_files}/{len(files)} files.") + if all_blocked: + print("\nLEFT FOR A HUMAN (no mechanical replacement — see the `note` in " + f"{rel(STATUS)}):") + for k, n in sorted(all_blocked.items(), key=lambda kv: -kv[1]): + print(f" {n:4d} {k}") + + return 1 if (args.check and n_edges) else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/qc.py b/scripts/qc.py index 6d33030..3c66a24 100644 --- a/scripts/qc.py +++ b/scripts/qc.py @@ -88,7 +88,8 @@ def iter_files(targets: Iterable[str]) -> list[Path]: return files -def run_layer(layer: int, files: list[Path], json_out: bool, offline: bool = False) -> tuple[int, str]: +def run_layer(layer: int, files: list[Path], json_out: bool, offline: bool = False, + profile: str = "auto") -> tuple[int, str]: """Invoke a layer script against a set of files. Returns (exit_code, stdout_or_json).""" cmd = [python_bin(), str(LAYER_SCRIPTS[layer])] if json_out: @@ -97,6 +98,11 @@ def run_layer(layer: int, files: list[Path], json_out: bool, offline: bool = Fal # to the committed references_cache/ for deterministic CI / reproducible runs. if offline and layer == 4: cmd.append("--offline") + # Layer 3 applies a different predicate era per profile (legacy accepts the old + # vocabulary, ai_curated does not), so a forced --profile has to reach it too — + # otherwise it would re-detect and override the caller's choice. + if layer == 3 and profile != "auto": + cmd.extend(["--profile", profile]) cmd.extend(str(f) for f in files) proc = subprocess.run(cmd, capture_output=True, text=True) return proc.returncode, proc.stdout + proc.stderr @@ -182,7 +188,8 @@ def main() -> int: continue if not args.json: print(f"--- Layer {layer} ({LAYER_SCRIPTS[layer].name}) — {len(layer_files)} file(s) ---") - code, out = run_layer(layer, layer_files, json_out=args.json, offline=args.offline) + code, out = run_layer(layer, layer_files, json_out=args.json, offline=args.offline, + profile=args.profile) results.append({"layer": layer, "files": len(layer_files), "exit_code": code, "output": out}) if code != 0: overall_fail = True diff --git a/scripts/quality/predicate_polarity.yaml b/scripts/quality/predicate_polarity.yaml index 879dfe7..578a2b4 100644 --- a/scripts/quality/predicate_polarity.yaml +++ b/scripts/quality/predicate_polarity.yaml @@ -60,6 +60,14 @@ predicates: affects risk for: {sign: 0, role: clinical_outcome, confidence: review, note: "direction unspecified"} predisposes: {sign: +1, role: clinical_outcome, confidence: review} + # Biolink 4.4.4 condition-scoped forms — same semantics, same signs as the removed + # bare verbs they replace (`prevents` -> `preventative for condition`, etc.). + preventative for condition: {sign: -1, role: clinical_outcome, confidence: high} + ameliorates condition: {sign: -1, role: clinical_outcome, confidence: high} + exacerbates condition: {sign: +1, role: clinical_outcome, confidence: high} + predisposes to condition: {sign: +1, role: clinical_outcome, confidence: review} + contraindicated in: {sign: 0, role: clinical_outcome, confidence: review, note: "not a mechanistic step; flag if present"} + # ── Neutral scaffolding (skipped in polarity; presence is fine) ───────────── participates in: {sign: 0, role: contextual, confidence: high} occurs in: {sign: 0, role: contextual, confidence: high} @@ -95,6 +103,15 @@ predicates: phenotype of: {sign: +1, role: reverse, confidence: review} regulates: {sign: 0, role: regulatory, confidence: review, note: "direction unspecified; flag for tightening"} + # ── Biolink 4.4.4 canonical predicates (qualifier model) ──────────────────── + # These carry NO polarity in the predicate name — it lives in the edge's + # `object_direction_qualifier`. structural_quality.py resolves the sign from + # that qualifier (see DIRECTION_SIGN there); the sign: 0 below is the fallback + # for an edge that omits it, which QC Layer 3 rejects for ai_curated records. + affects: {sign: 0, role: regulatory, confidence: review, note: "polarity is in object_direction_qualifier"} + directly physically interacts with: {sign: 0, role: contextual, confidence: high, note: "binding; no direction"} + binds: {sign: 0, role: contextual, confidence: high, note: "binding; no direction"} + # ── Biochemical derivation / lineage ──────────────────────────────────────── has metabolite: {sign: +1, role: derivation, confidence: review} is metabolite of: {sign: +1, role: reverse, confidence: review} @@ -139,6 +156,11 @@ type_constraints: ameliorates: {subj_in: CHEM, obj_in: DISEASE_LIKE} exacerbates: {subj_in: CHEM, obj_in: DISEASE_LIKE} contraindicated for: {subj_in: CHEM, obj_in: DISEASE_LIKE} + preventative for condition: {subj_in: CHEM, obj_in: DISEASE_LIKE} + ameliorates condition: {subj_in: CHEM, obj_in: DISEASE_LIKE} + exacerbates condition: {subj_in: CHEM, obj_in: DISEASE_LIKE} + predisposes to condition: {subj_in: CHEM, obj_in: DISEASE_LIKE} + contraindicated in: {subj_in: CHEM, obj_in: DISEASE_LIKE} in taxon: {obj_in: [OrganismTaxon]} decreases activity of: {obj_in: ACTIVITY_BEARING} increases activity of: {obj_in: ACTIVITY_BEARING} @@ -153,3 +175,16 @@ type_constraints: occurs in: {obj_in: LOCATION} located in: {obj_in: LOCATION} expressed in: {obj_in: LOCATION} + + # ── Qualified forms (Biolink 4.4.4) ───────────────────────────────────────── + # After the qualifier refactor the aspect, not the predicate name, says what kind + # of thing the object must be. structural_quality.py looks up `|` + # first and falls back to the bare key, so these mirror the legacy rows above. + affects|activity: {obj_in: ACTIVITY_BEARING} + affects|abundance: {obj_in: MOLECULAR} + affects|degradation: {obj_in: MOLECULAR} + affects|synthesis: {obj_in: MOLECULAR} + affects|stability: {obj_in: MOLECULAR} + affects|transport: {obj_in: MOLECULAR} + affects|uptake: {obj_in: MOLECULAR} + affects|expression: {obj_in: GENE_PRODUCT} diff --git a/scripts/quality/structural_quality.py b/scripts/quality/structural_quality.py index 162c881..a841a43 100644 --- a/scripts/quality/structural_quality.py +++ b/scripts/quality/structural_quality.py @@ -100,6 +100,37 @@ def resolve(spec): return {"predicates": preds, "constraints": constraints} +# Biolink 4.4.4 moved polarity out of the predicate name and into the edge's +# `object_direction_qualifier`. `regulates`/`affects` are therefore sign-0 in the +# lexicon, and the real sign is read from the qualifier here. +DIRECTION_SIGN = {"increased": +1, "upregulated": +1, "decreased": -1, "downregulated": -1} + + +def qualified_key(edge: dict, preds: dict) -> str: + """The lexicon key for this edge, folding in its direction qualifier. + + An edge with a qualifier gets a synthetic `|` entry + registered in this record's copy of the lexicon, so every downstream lookup + (polarity, duplicate detection) sees the qualified sign without any of them + needing to know about qualifiers. + """ + key = edge.get("key") + direction = edge.get("object_direction_qualifier") + if not direction: + return key + qkey = f"{key}|{direction}" + if qkey not in preds: + sign = DIRECTION_SIGN.get(direction, 0) + base = preds.get(key) or {} + preds[qkey] = { + "sign": sign, + "role": base.get("role") or "regulatory", + "confidence": "high" if sign else "review", + "note": f"sign from object_direction_qualifier={direction!r}", + } + return qkey + + def orientation(entry: dict) -> str: """forward | reverse | neutral | opaque — derived from role + sign.""" role, sign = entry.get("role"), entry.get("sign", 0) @@ -177,7 +208,8 @@ def path_polarity(path_edges, preds): def analyze(path: Path, lex: dict) -> dict: - preds, constraints = lex["predicates"], lex["constraints"] + # local copy: qualified `|` entries are synthesized per record + preds, constraints = dict(lex["predicates"]), lex["constraints"] doc = yaml.safe_load(path.read_text()) graph = doc.get("graph", {}) or {} nodes = doc.get("nodes", []) or [] @@ -188,7 +220,8 @@ def analyze(path: Path, lex: dict) -> dict: indeg, outdeg = Counter(), Counter() edge_counts = Counter() for e in links: - s, t, k = e.get("source"), e.get("target"), e.get("key") + s, t = e.get("source"), e.get("target") + k = qualified_key(e, preds) adj[s].append((t, k)); outdeg[s] += 1; indeg[t] += 1 edge_counts[(s, t, k)] += 1 @@ -218,7 +251,13 @@ def flag(sev, code, msg): flags.append({"severity": sev, "code": code, "msg": ms # predicate domain/range for e in links: - k = e.get("key"); c = constraints.get(k) + # Qualified edges constrain the object by ASPECT (`affects|activity`), so try + # that first and fall back to the bare predicate for unqualified/legacy edges. + k = e.get("key") + aspect = e.get("object_aspect_qualifier") + c = constraints.get(f"{k}|{aspect}") if aspect else None + if c is None: + c = constraints.get(k) if not c: continue ls, lo = label.get(e.get("source")), label.get(e.get("target")) diff --git a/scripts/validate_predicates.py b/scripts/validate_predicates.py index a3d6b93..4b309ff 100644 --- a/scripts/validate_predicates.py +++ b/scripts/validate_predicates.py @@ -5,6 +5,20 @@ *exact* member of the BiolinkPredicate enum declared in src/drugmechdb/schema/biolink_predicates.yaml. +The enum is deliberately era-spanning: it still accepts the v1.3.0-era vocabulary the +4,846 legacy records are written in. Which era a given record MAY use is the second +check, and it is profile-dependent (mirroring qc.py's own legacy/ai_curated split): + + legacy any enum member, current or not — these records are frozen history. + ai_curated `status: current` members only. A record curated today must be written in + the pinned Biolink release, so the removed `positively regulates` / + `increases of` families are rejected with the qualifier form that + replaces them (see src/drugmechdb/schema/biolink_predicate_status.yaml). + +For ai_curated records the qualifiers themselves are checked too: values must be in the +schema's ObjectAspectEnum / ObjectDirectionEnum, and the canonical predicates that carry +polarity (`affects`, `regulates`) must actually carry it. + This script does NOT normalize surface forms. Whitespace, case, and CURIE drift produce failures. Run `scripts/canonicalize_predicates.py --write` first if needed; that is the data-rewrite path. Layer 3 is the final gate. @@ -30,6 +44,13 @@ REPO = Path(__file__).resolve().parent.parent PATHS_DIR = REPO / "kb" / "paths" SCHEMA = REPO / "src" / "drugmechdb" / "schema" / "biolink_predicates.yaml" +STATUS = REPO / "src" / "drugmechdb" / "schema" / "biolink_predicate_status.yaml" +MODEL = REPO / "src" / "drugmechdb" / "schema" / "drugmechdb.yaml" + +# Canonical predicates whose meaning lives in the qualifiers: bare, they assert almost +# nothing, so an ai_curated edge using one must say which way it goes. +NEEDS_DIRECTION = {"affects", "regulates"} +NEEDS_ASPECT = {"affects"} def load_enum() -> set[str]: @@ -38,6 +59,39 @@ def load_enum() -> set[str]: return set(doc["enums"]["BiolinkPredicate"]["permissible_values"].keys()) +def load_status() -> dict: + """predicate -> {status, replacement, ...} for the pinned Biolink release.""" + with STATUS.open() as fh: + return yaml.safe_load(fh)["predicates"] + + +def load_qualifier_values() -> tuple[set[str], set[str]]: + with MODEL.open() as fh: + enums = yaml.safe_load(fh)["enums"] + return (set(enums["ObjectAspectEnum"]["permissible_values"]), + set(enums["ObjectDirectionEnum"]["permissible_values"])) + + +def detect_profile(doc: dict) -> str: + """Same rule qc.py uses: any per-edge evidence -> ai_curated.""" + for link in doc.get("links") or []: + if isinstance(link, dict) and link.get("evidence"): + return "ai_curated" + return "legacy" + + +def _replacement_hint(entry: dict) -> str: + why = {"legacy_only": "removed in current Biolink", + "deprecated": "deprecated in current Biolink"}.get(entry.get("status"), + "not a current Biolink predicate") + r = entry.get("replacement") + if not r: + return (f"{why} and has no mechanical replacement " + f"({entry.get('note', 'needs a human decision')})") + bits = [f"key={r['key']!r}"] + [f"{k}={v!r}" for k, v in r.items() if k != "key"] + return f"{why} — use " + ", ".join(bits) + + def iter_files(targets: Iterable[str]) -> list[Path]: targets = list(targets) if not targets: @@ -54,20 +108,47 @@ def iter_files(targets: Iterable[str]) -> list[Path]: return files -def validate_file(path: Path, enum: set[str]) -> list[dict]: +def validate_file(path: Path, enum: set[str], status: dict, + aspects: set[str], directions: set[str], + profile: str = "auto") -> list[dict]: """Return a list of failure dicts for this file (empty if all keys valid).""" with path.open() as fh: doc = yaml.safe_load(fh) if not isinstance(doc, dict): return [{"file": str(path), "edge_index": None, "key": None, "reason": "not a YAML mapping"}] + + effective = detect_profile(doc) if profile == "auto" else profile failures = [] for i, link in enumerate(doc.get("links") or []): if not isinstance(link, dict): failures.append({"file": str(path), "edge_index": i, "key": None, "reason": "edge is not a mapping"}) continue key = link.get("key") + fail = lambda reason: failures.append( + {"file": str(path), "edge_index": i, "key": key, "profile": effective, "reason": reason}) + if key not in enum: - failures.append({"file": str(path), "edge_index": i, "key": key, "reason": "key not in BiolinkPredicate enum"}) + fail("key not in BiolinkPredicate enum") + continue + + aspect = link.get("object_aspect_qualifier") + direction = link.get("object_direction_qualifier") + if aspect is not None and aspect not in aspects: + fail(f"object_aspect_qualifier={aspect!r} not in ObjectAspectEnum") + if direction is not None and direction not in directions: + fail(f"object_direction_qualifier={direction!r} not in ObjectDirectionEnum") + + if effective != "ai_curated": + continue # legacy records are frozen in their own era + + entry = status.get(key) or {} + if entry.get("status") != "current": + fail(_replacement_hint(entry)) + continue + if key in NEEDS_DIRECTION and direction is None: + fail(f"{key!r} carries its polarity in object_direction_qualifier, which is missing") + if key in NEEDS_ASPECT and aspect is None: + fail(f"{key!r} requires object_aspect_qualifier (which aspect of the target is affected)") return failures @@ -75,18 +156,23 @@ def main() -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("targets", nargs="*", help="Path files or directories. Defaults to kb/paths/.") parser.add_argument("--json", action="store_true", help="Output machine-readable JSON.") + parser.add_argument("--profile", choices=("auto", "legacy", "ai_curated"), default="auto", + help="Validation profile. `auto` detects per file (default).") args = parser.parse_args() enum = load_enum() + status = load_status() + aspects, directions = load_qualifier_values() files = iter_files(args.targets) all_failures: list[dict] = [] for path in files: - all_failures.extend(validate_file(path, enum)) + all_failures.extend(validate_file(path, enum, status, aspects, directions, args.profile)) summary = { "files_checked": len(files), "enum_size": len(enum), + "current_predicates": sum(1 for v in status.values() if v.get("status") == "current"), "failure_count": len(all_failures), "failures": all_failures, } @@ -101,7 +187,9 @@ def main() -> int: if len(all_failures) > 50: print(f" …and {len(all_failures) - 50} more (re-run with --json for full list)") else: - print(f"Layer 3 PASS: {len(files)} files, every edge key is in BiolinkPredicate ({len(enum)} canonical predicates).") + n_current = summary["current_predicates"] + print(f"Layer 3 PASS: {len(files)} files — every edge key is in BiolinkPredicate " + f"({len(enum)} accepted; {n_current} current in the pinned Biolink release).") return 0 if not all_failures else 1 diff --git a/src/drugmechdb/schema/biolink_predicate_status.yaml b/src/drugmechdb/schema/biolink_predicate_status.yaml new file mode 100644 index 0000000..c004e24 --- /dev/null +++ b/src/drugmechdb/schema/biolink_predicate_status.yaml @@ -0,0 +1,235 @@ +# Biolink predicate status — which of our enum values are still current Biolink, +# and what each removed one becomes. +# +# WHY THIS FILE EXISTS +# `biolink_predicates.yaml` is the LinkML enum: the set of keys any record MAY use. +# It must keep accepting the legacy vocabulary, because the 4,846 legacy records in +# kb/paths/ are written in it. This file is the second axis — for each enum value, +# whether Biolink still defines it, and if not, the qualifier form that replaces it. +# +# WHO READS IT +# * scripts/validate_predicates.py — QC Layer 3. `ai_curated` records may only use +# `status: current` keys; `legacy` records may use anything in the enum. +# * scripts/migrate_predicates.py — applies `replacement` to rewrite a record. +# +# Verified against the pinned Biolink release below by scripts/check_biolink_drift.py. +# When Biolink releases again, the drift monitor reports the delta; a human updates +# this file — nothing here is auto-applied. + +biolink_version: 4.4.4 +biolink_source: https://raw.githubusercontent.com/biolink/biolink-model/v4.4.4/biolink-model.yaml +verified_on: '2026-09-03' + +predicates: + + # ── Removed in Biolink 4.4.4 — legacy records only ─────────────────────────── + # The v2->v4 qualifier refactor folded these into `regulates` / `affects` plus + # object_aspect_qualifier + object_direction_qualifier. + + ameliorates: + status: legacy_only + replacement: + key: ameliorates condition + + contraindicated for: + status: legacy_only + replacement: + key: contraindicated in + + decreases abundance of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased + + decreases activity of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased + + decreases expression of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: expression + object_direction_qualifier: decreased + + decreases synthesis of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: synthesis + object_direction_qualifier: decreased + + decreases uptake of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: uptake + object_direction_qualifier: decreased + + directly interacts with: + status: legacy_only + replacement: + key: directly physically interacts with + + exacerbates: + status: legacy_only + replacement: + key: exacerbates condition + + increases abundance of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: increased + + increases activity of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased + + increases degradation of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: degradation + object_direction_qualifier: increased + + increases expression of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: expression + object_direction_qualifier: increased + + increases stability of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: stability + object_direction_qualifier: increased + + increases transport of: + status: legacy_only + replacement: + key: affects + object_aspect_qualifier: transport + object_direction_qualifier: increased + + molecularly interacts with: + status: legacy_only + replacement: + key: directly physically interacts with + + negatively regulates: + status: legacy_only + replacement: + key: regulates + object_direction_qualifier: decreased + + positively regulates: + status: legacy_only + replacement: + key: regulates + object_direction_qualifier: increased + + predisposes: + status: legacy_only + replacement: + key: predisposes to condition + + prevents: + status: legacy_only + replacement: + key: preventative for condition + + # ── Deprecated upstream — present in Biolink 4.4.4 but flagged deprecated ──── + + binds: + status: deprecated + replacement: + key: directly physically interacts with + + # ── Removed, and NO mechanical replacement — needs a human, per edge ───────── + + affects risk for: + status: legacy_only + replacement: null + needs_human_decision: true + note: >- + Direction is unspecified in the legacy predicate; 4.4.4 splits it into `associated with increased likelihood of` / `associated with decreased likelihood of`. Requires a per-edge reading of the evidence. + + decreases response to: + status: legacy_only + replacement: null + needs_human_decision: true + note: >- + Biolink 4.4.4 has no `response` aspect in GeneOrGeneProductOrChemicalEntityAspectEnum; no faithful qualifier form. + + increases response to: + status: legacy_only + replacement: null + needs_human_decision: true + note: >- + Biolink 4.4.4 has no `response` aspect in GeneOrGeneProductOrChemicalEntityAspectEnum; no faithful qualifier form. + + # ── Still current in Biolink 4.4.4 — usable by new curation ────────────────── + + actively involved in: {status: current} + affected by: {status: current} + capable of: {status: current} + caused by: {status: current} + causes: {status: current} + chemically similar to: {status: current} + coexists with: {status: current} + contributes to: {status: current} + correlated with: {status: current} + derives from: {status: current} + derives into: {status: current} + disrupted by: {status: current} + disrupts: {status: current} + enables: {status: current} + expressed in: {status: current} + expresses: {status: current} + has active ingredient: {status: current} + has metabolite: {status: current} + has output: {status: current} + has part: {status: current} + has participant: {status: current} + has phenotype: {status: current} + in complex with: {status: current} + in taxon: {status: current} + interacts with: {status: current} + is metabolite of: {status: current} + located in: {status: current} + location of: {status: current} + manifestation of: {status: current} + negatively correlated with: {status: current} + occurs in: {status: current} + part of: {status: current} + participates in: {status: current} + phenotype of: {status: current} + physically interacts with: {status: current} + positively correlated with: {status: current} + precedes: {status: current} + produced by: {status: current} + produces: {status: current} + regulates: {status: current} + similar to: {status: current} + subclass of: {status: current} + superclass of: {status: current} + treats: {status: current} + affects: {status: current} + directly physically interacts with: {status: current} + preventative for condition: {status: current} + ameliorates condition: {status: current} + exacerbates condition: {status: current} + predisposes to condition: {status: current} + contraindicated in: {status: current} diff --git a/src/drugmechdb/schema/biolink_predicates.yaml b/src/drugmechdb/schema/biolink_predicates.yaml index 57d583d..41615f4 100644 --- a/src/drugmechdb/schema/biolink_predicates.yaml +++ b/src/drugmechdb/schema/biolink_predicates.yaml @@ -295,3 +295,53 @@ enums: decreases uptake of: # 1 use meaning: biolink:decreases_uptake_of description: Subject decreases uptake of the object. + + # ── Biolink 4.4.4 canonical predicates (added 2026-09) ───────────────── + # The qualifier refactor (v2->v4) removed the `increases/decreases + # of` and `positively/negatively regulates` families. Their replacements are + # these canonical predicates carried with `object_aspect_qualifier` / + # `object_direction_qualifier` on the edge. See + # src/drugmechdb/schema/biolink_predicate_status.yaml for the per-predicate + # status and the replacement each legacy key maps to. + + affects: # Biolink 4.4.4 canonical_predicate + meaning: biolink:affects + description: >- + Subject has an effect on the state or quality of the object. Carries + object_aspect_qualifier + object_direction_qualifier to express what + the legacy `increases/decreases of` predicates asserted. + + directly physically interacts with: # Biolink 4.4.4 canonical_predicate + meaning: biolink:directly_physically_interacts_with + description: >- + Subject and object make direct physical contact. Replaces the removed + `molecularly interacts with` / `directly interacts with`. + + binds: # Biolink 4.4.4 + meaning: biolink:binds + description: >- + Subject binds the object through non-covalent interaction. A narrower + form of `directly physically interacts with`. + + # Condition-scoped replacements for the removed clinical-outcome predicates. + # (`prevents` -> `preventative for condition`, and so on.) + + preventative for condition: + meaning: biolink:preventative_for_condition + description: Subject is preventative for the object condition. Replaces the removed `prevents`. + + ameliorates condition: + meaning: biolink:ameliorates_condition + description: Subject ameliorates the object condition. Replaces the removed `ameliorates`. + + exacerbates condition: + meaning: biolink:exacerbates_condition + description: Subject exacerbates the object condition. Replaces the removed `exacerbates`. + + predisposes to condition: + meaning: biolink:predisposes_to_condition + description: Subject predisposes to the object condition. Replaces the removed `predisposes`. + + contraindicated in: + meaning: biolink:contraindicated_in + description: Subject is contraindicated in the object condition. Replaces the removed `contraindicated for`. diff --git a/src/drugmechdb/schema/drugmechdb.yaml b/src/drugmechdb/schema/drugmechdb.yaml index 1e6a746..6f10e63 100644 --- a/src/drugmechdb/schema/drugmechdb.yaml +++ b/src/drugmechdb/schema/drugmechdb.yaml @@ -78,6 +78,37 @@ types: # ── Enumerations ────────────────────────────────────────────────────────────── enums: + ObjectAspectEnum: + description: >- + The aspect of the object that an edge affects. Mirrors the Biolink 4.4.4 + `GeneOrGeneProductOrChemicalEntityAspectEnum` values DrugMechDB uses; carried on + `object_aspect_qualifier`. Together with ObjectDirectionEnum this expresses what the + removed `increases/decreases of` predicates asserted before the v2->v4 + qualifier refactor. + permissible_values: + activity: + abundance: + expression: + synthesis: + degradation: + stability: + transport: + uptake: + localization: + secretion: + molecular_interaction: + activity_or_abundance: + + ObjectDirectionEnum: + description: >- + Direction of the effect on the object's aspect. Mirrors the Biolink 4.4.4 + `DirectionQualifierEnum`; carried on `object_direction_qualifier`. + permissible_values: + increased: + decreased: + upregulated: + downregulated: + EvidenceSupportEnum: description: The level of support an evidence item provides for an edge claim. permissible_values: @@ -308,6 +339,29 @@ slots: Biolink predicate describing the relationship from source to target. Must be a value from the BiolinkPredicate enum. + # Biolink 4.4.4 qualifiers. Optional and additive: legacy records carry none, and + # `key` alone remains a complete edge. New (ai_curated) records use them to express + # what the removed `increases/decreases of` and `positively/negatively + # regulates` predicates asserted — see biolink_predicate_status.yaml for the mapping. + + object_aspect_qualifier: + range: ObjectAspectEnum + description: >- + Which aspect of the target the edge affects (activity, abundance, expression, ...). + Set alongside object_direction_qualifier when `key` is `affects`. + + object_direction_qualifier: + range: ObjectDirectionEnum + description: >- + Direction of the effect on the target — increased or decreased. Set when `key` is + `affects` or `regulates`; carries the polarity the legacy predicate name used to. + + qualified_predicate: + range: uriorcurie + description: >- + The Biolink predicate the qualified statement resolves to (e.g. biolink:causes), + when the core `key` plus qualifiers needs an explicit causal reading. + evidence: range: EvidenceItem multivalued: true @@ -520,6 +574,9 @@ classes: - source - target - key + - object_aspect_qualifier + - object_direction_qualifier + - qualified_predicate - evidence slot_usage: source: diff --git a/tests/fixtures/sample_ai_curated.yaml b/tests/fixtures/sample_ai_curated.yaml index 69b7f03..914aa4e 100644 --- a/tests/fixtures/sample_ai_curated.yaml +++ b/tests/fixtures/sample_ai_curated.yaml @@ -21,7 +21,9 @@ nodes: name: Malignant tumor of colon label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068818 target: UniProt:P00533 evidence: diff --git a/tests/fixtures/sample_ai_curated_bad_snippet.yaml b/tests/fixtures/sample_ai_curated_bad_snippet.yaml index b04291c..3532f14 100644 --- a/tests/fixtures/sample_ai_curated_bad_snippet.yaml +++ b/tests/fixtures/sample_ai_curated_bad_snippet.yaml @@ -17,7 +17,9 @@ nodes: name: Epidermal growth factor receptor label: Protein links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068818 target: UniProt:P00533 evidence: diff --git a/tests/phase3_eval_outputs/P01.yaml b/tests/phase3_eval_outputs/P01.yaml index 8ec8bea..c8024e2 100644 --- a/tests/phase3_eval_outputs/P01.yaml +++ b/tests/phase3_eval_outputs/P01.yaml @@ -27,7 +27,9 @@ nodes: name: Myocardial Infarction label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D001241 target: UniProt:P23219 evidence: @@ -41,7 +43,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Quantitative proteomic confirmation that aspirin acetylates COX-1 at Ser529, the canonical mechanistic step." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P23219 target: GO:0001516 evidence: @@ -59,7 +62,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "TXA2 is the platelet-specific prostanoid generated from arachidonic acid via COX-1 — i.e. it is an output of the prostaglandin biosynthetic process in platelets." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:D013928 target: GO:0070527 evidence: diff --git a/tests/phase3_eval_outputs/P01_no_provider.yaml b/tests/phase3_eval_outputs/P01_no_provider.yaml index 9df099a..c10f549 100644 --- a/tests/phase3_eval_outputs/P01_no_provider.yaml +++ b/tests/phase3_eval_outputs/P01_no_provider.yaml @@ -30,7 +30,9 @@ nodes: name: Myocardial Infarction label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D001241 target: UniProt:P23219 evidence: @@ -39,7 +41,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "Aspirin covalently acetylates Ser529 of platelet COX-1, irreversibly inhibiting its catalytic activity." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D001241 target: UniProt:P35354 evidence: @@ -48,7 +52,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Aspirin (ASA) acetylates COX-2 at Serine 516, inhibiting its prostanoid-generating activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P23219 target: GO:0001516 evidence: @@ -57,7 +62,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "Catalytically intact COX-1 drives platelet prostanoid biosynthesis; its acetylation by aspirin suppresses thromboxane A2 (a prostaglandin-class product) generation." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P35354 target: GO:0001516 evidence: @@ -75,7 +81,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "TXA2 is the platelet-specific prostanoid output of COX-1-mediated arachidonic acid metabolism (the prostaglandin biosynthetic process)." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:D013928 target: GO:0070527 evidence: diff --git a/tests/phase3_eval_outputs/P02.yaml b/tests/phase3_eval_outputs/P02.yaml index f51c7fa..661480d 100644 --- a/tests/phase3_eval_outputs/P02.yaml +++ b/tests/phase3_eval_outputs/P02.yaml @@ -24,7 +24,9 @@ nodes: name: Hypercholesterolemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000069059 target: UniProt:P04035 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Pharmacology review confirming atorvastatin acts by competitive and selective inhibition of HMG-CoA reductase, blocking conversion of its HMG-CoA substrate." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P04035 target: GO:0006695 evidence: @@ -52,7 +55,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "HMG-CoA reductase is the rate-limiting enzyme of the mevalonate pathway (cholesterol biosynthesis); inhibiting it lowers cholesterol, confirming the enzyme positively regulates the biosynthetic process." - - key: increases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: increased source: GO:0006695 target: MESH:D002784 evidence: diff --git a/tests/phase3_eval_outputs/P03.yaml b/tests/phase3_eval_outputs/P03.yaml index 35436f3..b105935 100644 --- a/tests/phase3_eval_outputs/P03.yaml +++ b/tests/phase3_eval_outputs/P03.yaml @@ -21,7 +21,9 @@ nodes: name: Hypertension label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D017706 target: UniProt:P12821 evidence: diff --git a/tests/phase3_eval_outputs/P04.yaml b/tests/phase3_eval_outputs/P04.yaml index d797965..fc3ca86 100644 --- a/tests/phase3_eval_outputs/P04.yaml +++ b/tests/phase3_eval_outputs/P04.yaml @@ -21,7 +21,9 @@ nodes: name: Heart failure label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008790 target: UniProt:P08588 evidence: @@ -35,7 +37,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Confirms metoprolol's mechanism class as a β1-receptor blocker (antagonist), decreasing beta-1 adrenergic receptor activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P08588 target: GO:0003300 evidence: diff --git a/tests/phase3_eval_outputs/P05.yaml b/tests/phase3_eval_outputs/P05.yaml index ed2dc2f..37e5f9f 100644 --- a/tests/phase3_eval_outputs/P05.yaml +++ b/tests/phase3_eval_outputs/P05.yaml @@ -21,7 +21,9 @@ nodes: name: Stroke label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000077144 target: UniProt:Q9H244 evidence: @@ -35,7 +37,8 @@ links: supports: SUPPORT evidence_source: MODEL_ORGANISM explanation: "Clopidogrel's active metabolite forms disulfide bonds with platelet P2Y12 receptors, irreversibly inhibiting the receptor and thereby its downstream aggregation function." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:Q9H244 target: GO:0070527 evidence: diff --git a/tests/phase3_eval_outputs/P06.yaml b/tests/phase3_eval_outputs/P06.yaml index 5c22be1..847b83e 100644 --- a/tests/phase3_eval_outputs/P06.yaml +++ b/tests/phase3_eval_outputs/P06.yaml @@ -21,7 +21,9 @@ nodes: name: Breast Neoplasms label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D013629 target: UniProt:P03372 evidence: @@ -35,7 +37,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Tamoxifen is an endocrine therapy that acts by disrupting estrogen signaling through the estrogen receptor, i.e. decreasing receptor activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P03372 target: GO:0008283 evidence: diff --git a/tests/phase3_eval_outputs/P07.yaml b/tests/phase3_eval_outputs/P07.yaml index 6e9a8b2..01f5a86 100644 --- a/tests/phase3_eval_outputs/P07.yaml +++ b/tests/phase3_eval_outputs/P07.yaml @@ -21,7 +21,9 @@ nodes: name: Chronic Myeloid Leukemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068877 target: UniProt:P00519 evidence: @@ -35,7 +37,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Imatinib inhibits BCR-ABL1 kinase activity, abolishing its downstream tyrosine-phosphorylation activity in CML cells — direct support for the decreases-activity-of edge." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P00519 target: GO:0070661 evidence: diff --git a/tests/phase3_eval_outputs/P08.yaml b/tests/phase3_eval_outputs/P08.yaml index 214ad0a..7be7256 100644 --- a/tests/phase3_eval_outputs/P08.yaml +++ b/tests/phase3_eval_outputs/P08.yaml @@ -24,7 +24,9 @@ nodes: name: Colorectal Neoplasms label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068818 target: UniProt:P00533 evidence: @@ -33,7 +35,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Cetuximab is a monoclonal antibody that binds the EGFR extracellular domain, blocking ligand-induced receptor activation and thereby decreasing EGFR signaling activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P00533 target: GO:0000165 evidence: @@ -42,7 +45,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Activated EGFR drives phosphorylation of ERK1/2 (the terminal kinases of the MAPK cascade), demonstrating that EGFR positively regulates the MAPK cascade in colorectal cancer cells. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0000165 target: GO:0008283 evidence: diff --git a/tests/phase3_eval_outputs/P09.yaml b/tests/phase3_eval_outputs/P09.yaml index 1ea5d4e..4c9f505 100644 --- a/tests/phase3_eval_outputs/P09.yaml +++ b/tests/phase3_eval_outputs/P09.yaml @@ -27,7 +27,9 @@ nodes: name: Acute Lymphoblastic Leukemia label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008727 target: UniProt:P00374 evidence: @@ -41,7 +43,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: Confirms competitive inhibition of DHFR by MTX, reducing the enzyme's activity in tetrahydrofolate synthesis. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P00374 target: GO:0046654 evidence: @@ -55,7 +58,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: DHFR participates in tetrahydrofolate synthesis, confirming its positive regulatory role in that biosynthetic process. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0046654 target: GO:0071897 evidence: @@ -69,7 +73,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Decreasing folate-dependent enzyme activities (including the tetrahydrofolate biosynthetic pathway) impairs DNA synthesis, confirming folate metabolism positively regulates the DNA biosynthetic process. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0071897 target: GO:0008283 evidence: diff --git a/tests/phase3_eval_outputs/P10.yaml b/tests/phase3_eval_outputs/P10.yaml index 0828de7..6ce548d 100644 --- a/tests/phase3_eval_outputs/P10.yaml +++ b/tests/phase3_eval_outputs/P10.yaml @@ -21,7 +21,7 @@ nodes: name: Breast Neoplasms label: Disease links: - - key: molecularly interacts with + - key: directly physically interacts with source: MESH:D000068878 target: UniProt:P04626 evidence: @@ -30,7 +30,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Direct binding of trastuzumab to HER2 was demonstrated in CHO cells expressing human HER2, confirming that trastuzumab molecularly interacts with the ERBB2/HER2 receptor. - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068878 target: UniProt:P04626 evidence: @@ -44,7 +46,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Trastuzumab reduces PI3K activity downstream of ERBB2, supporting that it decreases ERBB2-mediated signaling activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P04626 target: GO:0008283 evidence: diff --git a/tests/phase3_eval_outputs/P11.yaml b/tests/phase3_eval_outputs/P11.yaml index 29cd5b5..02d5c89 100644 --- a/tests/phase3_eval_outputs/P11.yaml +++ b/tests/phase3_eval_outputs/P11.yaml @@ -24,7 +24,9 @@ nodes: name: Pulmonary tuberculosis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D012293 target: UniProt:P9WGY9 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: RIF acts on RpoB (RNA polymerase beta subunit); nearly all resistance mutations map to this subunit, confirming it is the direct target of rifampicin inhibition. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P9WGY9 target: GO:0006351 evidence: diff --git a/tests/phase3_eval_outputs/P12.yaml b/tests/phase3_eval_outputs/P12.yaml index 3086301..0a9a362 100644 --- a/tests/phase3_eval_outputs/P12.yaml +++ b/tests/phase3_eval_outputs/P12.yaml @@ -24,7 +24,9 @@ nodes: name: Pulmonary Tuberculosis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D007538 target: UniProt:P9WGR1 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: InhA is directly identified as the primary enzymatic target of isoniazid in M. tuberculosis. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P9WGR1 target: GO:0071768 evidence: diff --git a/tests/phase3_eval_outputs/P13.yaml b/tests/phase3_eval_outputs/P13.yaml index 67d0e2e..0948579 100644 --- a/tests/phase3_eval_outputs/P13.yaml +++ b/tests/phase3_eval_outputs/P13.yaml @@ -24,7 +24,7 @@ nodes: name: Methicillin-Resistant Staphylococcal Infections label: Disease links: - - key: molecularly interacts with + - key: directly physically interacts with source: MESH:D014640 target: CHEBI:16576 evidence: diff --git a/tests/phase3_eval_outputs/P14.yaml b/tests/phase3_eval_outputs/P14.yaml index cc733cc..263725f 100644 --- a/tests/phase3_eval_outputs/P14.yaml +++ b/tests/phase3_eval_outputs/P14.yaml @@ -41,7 +41,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Confirms oseltamivir is a prodrug and its active metabolite is oseltamivir carboxylate, supporting the has metabolite relationship. - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: CHEBI:64337 target: UniProt:P03472 evidence: @@ -55,7 +57,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: Establishes NA as the antiviral drug target; combined with the first evidence item, confirms oseltamivir carboxylate decreases NA activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P03472 target: GO:0019076 evidence: diff --git a/tests/phase3_eval_outputs/P15.yaml b/tests/phase3_eval_outputs/P15.yaml index c94a44c..711e864 100644 --- a/tests/phase3_eval_outputs/P15.yaml +++ b/tests/phase3_eval_outputs/P15.yaml @@ -45,7 +45,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Thymidine kinase that phosphorylates acyclovir is encoded by herpes simplex virus, establishing the protein's taxon assignment." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000212 target: UniProt:P04293 evidence: @@ -63,7 +65,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "The DNA polymerase catalytic subunit (Pol) targeted by acyclovir is encoded by herpes simplex virus." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P04293 target: GO:0039693 evidence: diff --git a/tests/phase3_eval_outputs/P16.yaml b/tests/phase3_eval_outputs/P16.yaml index c5d0c5e..56a8e12 100644 --- a/tests/phase3_eval_outputs/P16.yaml +++ b/tests/phase3_eval_outputs/P16.yaml @@ -24,7 +24,7 @@ nodes: name: Parkinson's disease label: Disease links: - - key: molecularly interacts with + - key: directly physically interacts with source: MESH:D007980 target: UniProt:P20711 evidence: @@ -47,7 +47,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: Review confirming that L-DOPA is converted into dopamine by the enzyme aromatic L-amino acid decarboxylase (AADC). - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: MESH:D004298 target: GO:0001963 evidence: diff --git a/tests/phase3_eval_outputs/P17.yaml b/tests/phase3_eval_outputs/P17.yaml index 9afdc2c..f11c62b 100644 --- a/tests/phase3_eval_outputs/P17.yaml +++ b/tests/phase3_eval_outputs/P17.yaml @@ -27,7 +27,9 @@ nodes: name: Major depressive disorder label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D005473 target: UniProt:P31645 evidence: @@ -41,7 +43,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Fluoxetine binds the central substrate site of SERT, competitively blocking its serotonin uptake activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P31645 target: GO:0051610 evidence: @@ -55,7 +58,9 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: SERT is responsible for serotonin reuptake from the synaptic cleft — confirming it positively regulates the serotonin uptake process. - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: GO:0051610 target: MESH:D012701 evidence: diff --git a/tests/phase3_eval_outputs/P18.yaml b/tests/phase3_eval_outputs/P18.yaml index ffbc90b..47125d2 100644 --- a/tests/phase3_eval_outputs/P18.yaml +++ b/tests/phase3_eval_outputs/P18.yaml @@ -21,7 +21,9 @@ nodes: name: Bipolar Disorder label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008094 target: UniProt:P49841 evidence: @@ -39,7 +41,8 @@ links: explanation: >- Medicinal chemistry paper developing GSK-3beta inhibitors for bipolar disorder, confirming lithium's known direct inhibitory action on GSK-3beta. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P49841 target: GO:0006915 evidence: diff --git a/tests/phase3_eval_outputs/P19.yaml b/tests/phase3_eval_outputs/P19.yaml index 82f0fd2..4cc9b92 100644 --- a/tests/phase3_eval_outputs/P19.yaml +++ b/tests/phase3_eval_outputs/P19.yaml @@ -24,7 +24,9 @@ nodes: name: Epilepsy label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000077306 target: UniProt:P54289 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: The α2δ-1 protein is both the high-affinity binding site and required mediator of gabapentin's mechanism, confirming gabapentin decreases its activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P54289 target: GO:0070588 evidence: @@ -52,7 +55,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: As a regulatory subunit of voltage-gated calcium channels, α2δ-1 positively regulates calcium ion flux across the neuronal membrane. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0070588 target: GO:0007269 evidence: diff --git a/tests/phase3_eval_outputs/P20.yaml b/tests/phase3_eval_outputs/P20.yaml index 34e9aef..e25d7d8 100644 --- a/tests/phase3_eval_outputs/P20.yaml +++ b/tests/phase3_eval_outputs/P20.yaml @@ -24,7 +24,9 @@ nodes: name: Alzheimer's disease label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: DB:DB00843 target: UniProt:P22303 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: "Clinical review confirming donepezil is an acetylcholinesterase inhibitor with established efficacy in Alzheimer disease." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P22303 target: GO:0006581 evidence: @@ -52,7 +55,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "AChE is the key enzyme that hydrolyzes acetylcholine, confirming its positive regulatory role in the acetylcholine catabolic process." - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: GO:0006581 target: MESH:D000109 evidence: diff --git a/tests/phase3_eval_outputs/P21.yaml b/tests/phase3_eval_outputs/P21.yaml index 994a58a..5f1eeab 100644 --- a/tests/phase3_eval_outputs/P21.yaml +++ b/tests/phase3_eval_outputs/P21.yaml @@ -24,7 +24,9 @@ nodes: name: Rheumatoid Arthritis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D008727 target: UniProt:P31939 evidence: @@ -33,7 +35,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Methotrexate polyglutamates (the active intracellular form of MTX) directly inhibit ATIC activity, the enzyme encoded by the ATIC gene (UniProt:P31939), thereby decreasing its catalytic function. - - key: decreases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: decreased source: UniProt:P31939 target: MESH:D000241 evidence: @@ -47,7 +51,8 @@ links: supports: SUPPORT evidence_source: HUMAN_CLINICAL explanation: Confirms that extracellular adenosine generation is the key downstream effector in MTX-treated RA patients; ATIC inhibition is the upstream step that releases this brake on adenosine abundance. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: MESH:D000241 target: GO:0006954 evidence: diff --git a/tests/phase3_eval_outputs/P22.yaml b/tests/phase3_eval_outputs/P22.yaml index d5d2621..437f584 100644 --- a/tests/phase3_eval_outputs/P22.yaml +++ b/tests/phase3_eval_outputs/P22.yaml @@ -24,7 +24,7 @@ nodes: name: Crohn's disease label: Disease links: - - key: molecularly interacts with + - key: directly physically interacts with source: MESH:D000069285 target: UniProt:P01375 evidence: @@ -33,7 +33,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "Infliximab's MoA is defined by its physical binding to both soluble and membrane-bound TNF-α, establishing a direct molecular interaction between the drug and its target protein." - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000069285 target: UniProt:P01375 evidence: @@ -42,7 +44,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Infliximab neutralizes TNF-α, preventing it from engaging its receptors. Neutralization is equivalent to decreasing TNF-α functional activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P01375 target: GO:0038061 evidence: @@ -51,7 +54,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "TNF-α directly activates NF-κB signaling (GO:0038061 NIK/NF-κB signaling), as shown by IκB-α degradation and NF-κB p65 nuclear translocation upon TNF-α stimulation." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0038061 target: GO:0006954 evidence: diff --git a/tests/phase3_eval_outputs/P23.yaml b/tests/phase3_eval_outputs/P23.yaml index 9c53ca5..ec4a910 100644 --- a/tests/phase3_eval_outputs/P23.yaml +++ b/tests/phase3_eval_outputs/P23.yaml @@ -21,7 +21,9 @@ nodes: name: Systemic Lupus Erythematosus label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D006886 target: UniProt:Q9NR96 evidence: @@ -40,7 +42,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Katz and Russell review confirm that antimalarials including hydroxychloroquine act by inhibiting endosomal/intracellular TLRs, particularly TLR9." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:Q9NR96 target: GO:0032606 evidence: diff --git a/tests/phase3_eval_outputs/P24.yaml b/tests/phase3_eval_outputs/P24.yaml index 61b28d6..5c1db60 100644 --- a/tests/phase3_eval_outputs/P24.yaml +++ b/tests/phase3_eval_outputs/P24.yaml @@ -36,7 +36,9 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: Confirms MMF is a prodrug of MPA, hydrolyzed by esterases to release the active metabolite MPA. - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: CHEBI:168618 target: UniProt:P12268 evidence: @@ -50,7 +52,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: In vitro demonstration of MPA dose-dependently inhibiting IMPDH activity, supporting decreases activity of edge. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P12268 target: GO:0006177 evidence: @@ -64,7 +67,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: Blocking IMPDH prevents guanosine nucleotide production, confirming IMPDH positively regulates GMP biosynthesis. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0006177 target: GO:0046651 evidence: diff --git a/tests/phase3_eval_outputs/P25.yaml b/tests/phase3_eval_outputs/P25.yaml index 36fae90..ffc1083 100644 --- a/tests/phase3_eval_outputs/P25.yaml +++ b/tests/phase3_eval_outputs/P25.yaml @@ -24,7 +24,9 @@ nodes: name: Psoriasis label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000068879 target: UniProt:P01375 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Expert review confirming adalimumab is a fully human anti-TNF-alpha monoclonal antibody that neutralizes TNF-alpha activity." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P01375 target: GO:0038061 evidence: @@ -52,7 +55,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: "TNF induces NF-κBp65 phosphorylation in keratinocytes, demonstrating that TNF-alpha positively regulates NIK/NF-kappaB signaling in psoriasis-relevant cells." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: GO:0038061 target: GO:0006954 evidence: diff --git a/tests/phase3_eval_outputs/P26.yaml b/tests/phase3_eval_outputs/P26.yaml index 7383631..f976b8c 100644 --- a/tests/phase3_eval_outputs/P26.yaml +++ b/tests/phase3_eval_outputs/P26.yaml @@ -24,7 +24,9 @@ nodes: name: Diabetes mellitus type 2 label: Disease links: - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D008687 target: UniProt:Q13131 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: Comprehensive review confirming that metformin raises cytosolic AMP, which activates AMPK (including the PRKAA1-containing heterotrimeric complex). - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: UniProt:Q13131 target: GO:0006094 evidence: diff --git a/tests/phase3_eval_outputs/P27.yaml b/tests/phase3_eval_outputs/P27.yaml index 6be9f83..8afff3f 100644 --- a/tests/phase3_eval_outputs/P27.yaml +++ b/tests/phase3_eval_outputs/P27.yaml @@ -24,7 +24,7 @@ nodes: name: Diabetes mellitus type 1 label: Disease links: - - key: molecularly interacts with + - key: directly physically interacts with source: MESH:D007328 target: UniProt:P06213 evidence: @@ -33,7 +33,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: Insulin binds directly to the insulin receptor (INSR/UniProt:P06213) on cell surfaces; this molecular interaction is the initiating event of the insulin signalling cascade that lowers blood glucose. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P06213 target: GO:0046323 evidence: diff --git a/tests/phase3_eval_outputs/P28.yaml b/tests/phase3_eval_outputs/P28.yaml index 63c2133..caf0d4d 100644 --- a/tests/phase3_eval_outputs/P28.yaml +++ b/tests/phase3_eval_outputs/P28.yaml @@ -38,7 +38,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: Deiodination of T4 to T3 is the key activation step; administered levothyroxine (T4) is therefore a prodrug whose active form is T3. - - key: increases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: increased source: MESH:D014284 target: UniProt:P10828 evidence: @@ -52,7 +54,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: T3 acts via its nuclear receptors TRα and TRβ (UniProt:P10828); local T3 availability drives receptor activity. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P10828 target: GO:0002154 evidence: @@ -66,7 +69,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: TRs including THRB are T3-activated transcription factors that drive thyroid hormone-responsive gene expression, i.e. they positively regulate the thyroid hormone mediated signaling pathway. - - key: negatively regulates + - key: regulates + object_direction_qualifier: decreased source: GO:0002154 target: MESH:D007037 evidence: diff --git a/tests/phase3_eval_outputs/P29.yaml b/tests/phase3_eval_outputs/P29.yaml index 79f78df..752f2e5 100644 --- a/tests/phase3_eval_outputs/P29.yaml +++ b/tests/phase3_eval_outputs/P29.yaml @@ -24,7 +24,9 @@ nodes: name: Gout label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:D000493 target: UniProt:P47989 evidence: @@ -38,7 +40,8 @@ links: supports: SUPPORT evidence_source: IN_VITRO explanation: In vitro study showing allopurinol (ALP) inhibits XDH/XOD activity and reduces uric acid (UA) levels in MSU-treated cells. - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P47989 target: GO:0002103 evidence: @@ -52,7 +55,9 @@ links: supports: SUPPORT evidence_source: OTHER explanation: XO/XDH is identified as the rate-limiting enzyme in uric acid production, confirming it positively regulates the uric acid biosynthetic process. - - key: increases abundance of + - key: affects + object_aspect_qualifier: abundance + object_direction_qualifier: increased source: GO:0002103 target: CHEBI:27226 evidence: diff --git a/tests/phase3_eval_outputs/P30.yaml b/tests/phase3_eval_outputs/P30.yaml index c115519..9748fa4 100644 --- a/tests/phase3_eval_outputs/P30.yaml +++ b/tests/phase3_eval_outputs/P30.yaml @@ -24,7 +24,9 @@ nodes: name: Diabetes Mellitus, Type 2 label: Disease links: - - key: decreases activity of + - key: affects + object_aspect_qualifier: activity + object_direction_qualifier: decreased source: MESH:C000591311 target: UniProt:P31639 evidence: @@ -33,7 +35,8 @@ links: supports: SUPPORT evidence_source: OTHER explanation: "Pharmacological review confirming empagliflozin selectively inhibits SGLT2 activity, constraining its renal glucose reabsorption function." - - key: positively regulates + - key: regulates + object_direction_qualifier: increased source: UniProt:P31639 target: GO:0035623 evidence: diff --git a/tests/test_canonicalize_predicates.py b/tests/test_canonicalize_predicates.py index 0b2ab67..085f547 100644 --- a/tests/test_canonicalize_predicates.py +++ b/tests/test_canonicalize_predicates.py @@ -90,9 +90,37 @@ def test_unmapped_drift_stays_out_of_enum(): # ─── loaders ───────────────────────────────────────────────────────────────── -def test_load_enum_is_the_67_predicate_vocabulary(): - assert len(ENUM) == 67 - assert "decreases activity of" in ENUM +def test_load_enum_covers_both_biolink_eras(): + """The enum spans eras: current Biolink plus the legacy vocabulary kb/paths uses. + + Its size is not asserted — it grows when we adopt a predicate from a new Biolink + release. The invariant is that every enum value has a status entry and vice versa, + since Layer 3 reads the two together. + """ + import yaml + status = yaml.safe_load( + (REPO / "src" / "drugmechdb" / "schema" / "biolink_predicate_status.yaml").read_text() + )["predicates"] + assert set(status) == ENUM + assert "decreases activity of" in ENUM # legacy-only, still accepted + assert "affects" in ENUM # current Biolink + + +def test_every_replacement_points_at_a_current_predicate(): + """A `replacement:` that isn't itself a current enum member would migrate a record + straight into a Layer 3 failure — the mapping has to be closed over the enum.""" + import yaml + status = yaml.safe_load( + (REPO / "src" / "drugmechdb" / "schema" / "biolink_predicate_status.yaml").read_text() + )["predicates"] + for pred, entry in status.items(): + replacement = entry.get("replacement") or {} + target = replacement.get("key") + if not target: + continue + assert target in ENUM, f"{pred!r} maps to {target!r}, which is not in the enum" + assert status[target]["status"] == "current", ( + f"{pred!r} maps to {target!r}, which is not a current predicate") def test_load_aliases_returns_a_mapping(): diff --git a/tests/test_qc_layers.py b/tests/test_qc_layers.py index 804c3a8..e40db2b 100644 --- a/tests/test_qc_layers.py +++ b/tests/test_qc_layers.py @@ -31,6 +31,14 @@ import yaml REPO = Path(__file__).resolve().parent.parent + + +def _enum_size() -> int: + """Size of the committed BiolinkPredicate enum — read, never hardcoded, because + the enum spans two Biolink eras and grows when we adopt a new release's predicate.""" + import yaml + schema = REPO / "src" / "drugmechdb" / "schema" / "biolink_predicates.yaml" + return len(yaml.safe_load(schema.read_text())["enums"]["BiolinkPredicate"]["permissible_values"]) SCRIPTS = REPO / "scripts" VENV_PY = REPO / ".venv-py310" / "bin" / "python" @@ -152,7 +160,7 @@ def test_layer3_valid_clean_record_passes(tmp_path): code, data, _ = _run("validate_predicates.py", str(f)) assert code == 0, data assert data["failure_count"] == 0 - assert data["enum_size"] == 67 + assert data["enum_size"] == _enum_size() # not a literal: the enum grows with Biolink def test_layer3_rejects_non_enum_predicate(tmp_path): diff --git a/tests/test_validation.py b/tests/test_validation.py index 3c6a785..3e19c78 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -20,6 +20,14 @@ import pytest REPO = Path(__file__).resolve().parent.parent + + +def _enum_size() -> int: + """Size of the committed BiolinkPredicate enum — read, never hardcoded, because + the enum spans two Biolink eras and grows when we adopt a new release's predicate.""" + import yaml + schema = REPO / "src" / "drugmechdb" / "schema" / "biolink_predicates.yaml" + return len(yaml.safe_load(schema.read_text())["enums"]["BiolinkPredicate"]["permissible_values"]) FIXTURES = REPO / "tests" / "fixtures" VENV_PY = REPO / ".venv-py310" / "bin" / "python" @@ -86,7 +94,7 @@ def test_layer3_legacy_corpus_passes_exit_criterion(): exit_code, data = _run("scripts/validate_predicates.py") assert exit_code == 0 assert data["failure_count"] == 0 - assert data["enum_size"] == 67 + assert data["enum_size"] == _enum_size() # not a literal: the enum grows with Biolink def test_layer3_ai_curated_fixture_passes(): diff --git a/web-revamp-mockup/browse.html b/web-revamp-mockup/browse.html index 990fb38..70b9940 100644 --- a/web-revamp-mockup/browse.html +++ b/web-revamp-mockup/browse.html @@ -7,7 +7,7 @@ -
MOCKUP · DrugMechDB website revamp · sample data, not final — navigation is search-driven (no giant sidebar)
+
LIVE · 135 AI-curated records from 4 agentic curation runs (built by scripts/build_site_data.py) · site design still a mockup