Pilot 1 — E. coli genome-wide coherence

IN_PROGRESS PIPELINE

Pilot 1 — E. coli MG1655 genome-wide coherence

First working pilot for Genome-wide validation. It scores
the whole E. coli MG1655 annotation set against GO has_part dependencies and turns each
unsatisfied dependency into a concrete curation lead — no curated module required, run
end-to-end from public data.

Bottom line

What the leads look like

The first-pass triage separates 10 of the 17 violations; that triage is the point, because
each class routes to a different curator action:

Class Examples Likely meaning Action
Whole-pathway overreach denitrification pathway → missing nitrous-oxide reductase activity E. coli K-12 has partial nitrate/nitrite metabolism, not complete denitrification to N2 review the pathway annotation and narrow it to the supported step
Likely annotation-granularity gap DnaB-DnaC / DnaA-DiaA / DnaB-DnaG complexes → missing sub-complex terms; tRNA CCA addition → missing its two MF activities the activity or complex is present; only the finer GO term is unannotated review the exact part term and add it if direct evidence supports it
Probable over-annotation heterochromatin formation, establishment of integrated proviral latency, virion attachment to host cell, receptor-mediated virion attachment to host cell on E. coli prophage-gene or electronic propagation of eukaryote/virus-centric terms candidate REMOVE / MARK_AS_OVER_ANNOTATED; feeds the over-annotation work
Unresolved molybdopterin cofactor biosynthesis → MPT-synthase sulfurtransferase; plus cytokinesis, RNA-binding transcription regulator activity, translational initiation, deubiquitination, glycolipid transfer, and side-of-membrane dependencies could be missing annotation, a missing or too-specific GO axiom, or a dependency that is not yet safe at bacterial genome scale triage with term definitions and sequence evidence before making a curation call

That a single genome-scale check simultaneously surfaces a whole-pathway over-reach, a batch
of likely missing complex/MF annotations, a set of implausible eukaryote/viral terms, and
test cases where the GO axiom itself needs more care — from nothing but GO axioms + a GAF —
is the pilot's proof of concept.

Run it

uv run python coherence_pilot.py

Downloads (cached under cache/, git-ignored) go.obo (~37 MB) and ecocyc.gaf.gz (~1 MB),
then writes RESULTS.md and violations.tsv next to the script. Re-running is offline once
cached.

Method (brief)

  1. Dependencies: parse asserted relationship: has_part axioms from go.obo → pairs
    (C, F) meaning "C has part F".
  2. Present set: collect non-NOT GO ids from the GAF, close upward over is_a+part_of
    (the GO true-path rule) — so a class counts as present if it or any descendant is annotated.
  3. Coherence: a pair is activated when C is present; unsatisfied when F is not.
    coherence = 1 − |unsatisfied| / |activated|.

Honest limitations