Skip to content

fix: couple non-ETF flavoenzymes directly to ubiquinone#1028

Open
edkerk wants to merge 7 commits into
developfrom
fix/etf-ubiquinone-coupling
Open

fix: couple non-ETF flavoenzymes directly to ubiquinone#1028
edkerk wants to merge 7 commits into
developfrom
fix/etf-ubiquinone-coupling

Conversation

@edkerk

@edkerk edkerk commented Jul 11, 2026

Copy link
Copy Markdown
Member

Main improvements in this PR:

As proposed in #1015:

  • Restore MAR00483 (sn-glycerol-3-phosphate:ubiquinone oxidoreductase, GPD2) and remove the FAD-linked MAR00449 and its Recon3D duplicate MAR01169
  • Remove the now-orphaned transport MAR08111 (dihydroxyacetone phosphate, mitochondria to cytosol) and the metabolite MAM01690m (mitochondrial DHAP). The FAD-linked MAR00449 was the only producer of mitochondrial DHAP. Mitochondrial glycerol-3-phosphate (MAM02914m) is kept, because it is still produced and consumed by mitochondrial glycerolipid and cardiolipin synthesis (PGS1, mitochondrial GPAT) independently of the glycerophosphate shuttle
  • Restore MAR03838 (L-proline:ubiquinone oxidoreductase, PRODH/PRODH2) and remove the FAD-linked MAR08611
  • Reduce the gene rule of MAR06911 (ETF:ubiquinone oxidoreductase, EC 1.5.5.1) to the ETF system only, ENSG00000105379 and ENSG00000140374 and ENSG00000171503 (ETFB and ETFA and ETFDH), removing the six direct-CoQ dehydrogenases (CHDH, DHODH, GPD2, PRODH, PRODH2, SQOR) that reduce ubiquinone without ETF

I hereby confirm that I have:

  • Tested my code on my own computer for running the model
  • Selected develop as a target branch
  • Any removed reactions and metabolites have been moved to the corresponding deprecated identifier lists

…hway (#1015)

MAR06911 (EC 1.5.5.1) represents the ETF:ubiquinone oxidoreductase (ETFDH)
step that reoxidises the matrix FADH2 pool. Its gene rule had accumulated
into an 'or' of nine genes, six of which encode flavoenzymes that reduce
ubiquinone directly and do not use ETF: GPD2, PRODH, PRODH2, CHDH, DHODH
and SQOR (Banerjee et al. 2022, FEBS J, PMID:34428349). This caused two
artefacts, most visible in enzyme-constrained (GECKO) models:
- all FADH2-to-ubiquinone flux was constrained by the single ETFDH kcat,
  so e.g. the glycerol-3-phosphate shuttle was constrained twice;
- beta-oxidation electrons could reach the ETC without ETFDH (via the GPD2
  branch of the 'or' rule), which is biologically incorrect.

Changes:
- Restore MAR00483 (sn-glycerol-3-phosphate:ubiquinone oxidoreductase,
  GPD2, EC 1.1.5.3); remove FAD-linked MAR00449 and its Recon3D duplicate
  MAR01169.
- Restore MAR03838 (L-proline:ubiquinone oxidoreductase, PRODH/PRODH2);
  remove FAD-linked MAR08611 (PRODH electron transfer to ubiquinone:
  Tanner 2018, PMID:28990412).
- Set the MAR06911 gene rule to the ETF system only,
  "ENSG00000105379 and ENSG00000140374 and ENSG00000171503"
  (ETFB and ETFA and ETFDH), matching the and-joined convention used for
  the other obligate ETC complexes.

DHODH already reduces ubiquinone through its own reaction (MAR20167) and
needs no further change. CHDH (MAR08441) and SQOR (MAR20186) still deposit
electrons in the matrix FADH2 pool and should be given direct ubiquinone
reactions in a follow-up. Removed reactions are recorded in
deprecatedReactions.tsv.
@edkerk
edkerk force-pushed the fix/etf-ubiquinone-coupling branch from f843cfa to 2210b03 Compare July 15, 2026 19:13
@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown

Model quality report

⚠️ 6 pre-existing finding(s), no regressions vs develop. Non-blocking.

Each check name links to its explanation in the testResults README.

Model checks

Duplicate keys (model unloadable) and no growth block the merge; every other row is a non-blocking report.

Check Result Δ vs develop
Duplicate !!omap keys 0 0
Growth (biomass producible) 125 0
Reactions with no metabolites 0 0
Model / annotation-table inconsistencies 0 0
Removed reactions or metabolites not deprecated 0 0
Metabolites missing formula 0 0
Metabolites missing charge 0 0
Reaction bound / GPR issues 0 0
Exact-duplicate reaction groups 0 0
Unused metabolites 0 0
Unused genes 0 0
Malformed cross-references 0 0
Cross-refs inconsistent across compartments 3 0 ⚠️

MACAW and mass/charge balance

Check Result Δ vs develop
Reactions flagged by MACAW dead-end test 2510 0 ⚠️
Reactions flagged as MACAW duplicates 377 0 ⚠️
Mass-imbalanced reactions 87 0 ⚠️
Charge-imbalanced reactions 234 0 ⚠️
Structure vs formula/charge inconsistencies 397 0 ⚠️

Model file and metabolic tasks

Check Result
YAML round-trip (cobrapy) pass
YAML round-trip (RAVEN) pass
YAML lint pass
Essential metabolic tasks 57 passed
Verification metabolic tasks 21 passed

MEMOTE

Total score: 63.2% (core subset)   0

Section Score Δ vs base
consistency 42.4% 0
annotation_met 73.0% 0
annotation_rxn 72.7% 0
annotation_gene 46.7% 0
annotation_sbo 81.7% 0
Per-test scores
Section Test Score
Consistency Stoichiometric Consistency 100.0%
Consistency Mass Balance 0.8%
Consistency Charge Balance 2.1%
Consistency Metabolite Connectivity 0.0%
Consistency Unbounded Flux In Default Medium 100.0%
Annotation - Metabolites Presence of Metabolite Annotation 0.0%
Annotation - Metabolites Metabolite Annotations Per Database 62.3%
Annotation - Metabolites Metabolite Annotation Conformity Per Database 45.8%
Annotation - Metabolites Uniform Metabolite Identifier Namespace 0.0%
Annotation - Reactions Presence of Reaction Annotation 0.0%
Annotation - Reactions Reaction Annotations Per Database 75.9%
Annotation - Reactions Reaction Annotation Conformity Per Database 33.3%
Annotation - Reactions Uniform Reaction Identifier Namespace 0.0%
Annotation - Genes Presence of Gene Annotation 0.0%
Annotation - Genes Gene Annotations Per Database 80.0%
Annotation - Genes Gene Annotation Conformity Per Database 80.0%
Annotation - SBO Terms Metabolite General SBO Presence 0.0%
Annotation - SBO Terms Metabolite SBO:0000247 Presence 0.1%
Annotation - SBO Terms Reaction General SBO Presence 0.0%
Annotation - SBO Terms Metabolic Reaction SBO:0000176 Presence 0.0%
Annotation - SBO Terms Transport Reaction SBO:0000185 Presence 0.7%
Annotation - SBO Terms Exchange Reaction SBO:0000627 Presence 0.0%
Annotation - SBO Terms Demand Reaction SBO:0000628 Presence 100.0%
Annotation - SBO Terms Sink Reactions SBO:0000632 Presence 100.0%
Annotation - SBO Terms Gene General SBO Presence 0.0%
Annotation - SBO Terms Gene SBO:0000243 Presence 0.0%
Annotation - SBO Terms Biomass Reactions SBO:0000629 Presence 0.0%

Full suite: 64.2%   0 · from the last /run memote.

The score above is the fast core subset. Comment /run memote to run the full suite on this pull request; the score updates here when it finishes.

Gene essentiality (Hart 2015)

Not run automatically (it takes hours). Comment /run gene-essentiality to run it on this pull request; the result posts as its own comment.

❌ = a count rose vs the target branch (regression) · ⚠️ = a pre-existing non-zero finding (non-blocking) · ⏳ = still running. Counts link to the CSV listing the exact entries.

Full workflow run · this comment is edited as results come in

@SysBioChalmers SysBioChalmers deleted a comment from github-actions Bot Jul 15, 2026
edkerk and others added 6 commits July 15, 2026 19:27
…-coupling

# Conflicts:
#	data/testResults/README.md
#	data/testResults/model_qc_summary.md
Removing the FAD-linked MAR00449 left MAM01690m (mitochondrial DHAP)
without a producer, since the restored ubiquinone-linked GPD2 (MAR00483)
releases cytosolic DHAP. The metabolite and its only remaining reaction,
the export transport MAR08111, are a MACAW dead-end and are removed and
moved to the deprecated identifier lists.

Drop the stale MAR00483 and MAR03838 rows from deprecatedReactions.tsv,
as those identifiers are active reactions again after this PR.
@edkerk

edkerk commented Jul 19, 2026

Copy link
Copy Markdown
Member Author

Gene essentiality was run on this pull request, mirroring the gene-essentiality GitHub Action (run locally on the merge commit, Gurobi). Summary, with the Δ vs the develop baseline shown inline in the buildReport style (new − develop; unchanged cells bare):

Gene essentiality vs Hart 2015 fitness genes

cellLine TP TN FP FN accuracy sensitivity specificity F1 MCC
DLD1 124 (-1) 2170 (-2) 126 (+2) 225 (+1) 0.8673 (-0.0011) 0.3553 (-0.0029) 0.9451 (-0.0009) 0.414 (-0.0041) 0.3475 (-0.005)
GBM 110 (-1) 2123 (-22) 160 (+22) 252 (+1) 0.8442 (-0.0087) 0.3039 (-0.0027) 0.9299 (-0.0097) 0.3481 (-0.0152) 0.2654 (-0.0243)
HCT116 141 2195 (+6) 124 (-6) 246 0.8633 (+0.0023) 0.3643 0.9465 (+0.0026) 0.4325 (+0.0039) 0.3662 (+0.0067)
HELA 108 (-6) 2243 (+10) 154 (-10) 203 (+6) 0.8682 (+0.0015) 0.3473 (-0.0193) 0.9358 (+0.0042) 0.377 (-0.0101) 0.3052 (-0.008)
RPE1 87 (+1) 2154 (-29) 191 (+29) 213 (-1) 0.8473 (-0.0105) 0.29 (+0.0033) 0.9186 (-0.0123) 0.301 (-0.0129) 0.2156 (-0.0211)
all 59 2351 (-4) 163 (+4) 69 0.9122 (-0.0015) 0.4609 0.9352 (-0.0016) 0.3371 (-0.0039) 0.3066 (-0.0037)

Changes vs develop are small and mixed (HCT116 improves; HELA/RPE1 shift both ways) and partly reflect run-to-run non-determinism in the ftINIT model extraction, so the ±1-2 count wiggles and sub-0.01 metric shifts are within noise. The pooled all row barely moves (MCC -0.0037): this PR does not materially change agreement with Hart 2015.

The full per-gene essentiality matrix is committed to data/testResults/gene-essential.csv.

Note: in the case of multiple test runs, this post is edited.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant