Skip to content

similar reactions with different stoichiometry #347

Closed

Description

@johan-gson

Description of the issue:

Some reaction pairs are very similar, but with different stoichiometry, which is suspicious:
We should figure out which is right.
The third column is if they have the same GPR.
example (same GPR):
'2 ATP[c] + 2 H2O[c] + sulfate[c] => 2 ADP[c] + 2 H+[c] + 2 Pi[c] + sulfate[s]' 'ATP[c] + H2O[c] + sulfate[c] => ADP[c] + H+[c] + Pi[c] + sulfate[s]'

{'MAR01702'}    {'MAR02283'}    true   
{'MAR01857'}    {'MAR02290'}    true   
{'MAR01861'}    {'MAR02298'}    true   
{'MAR01913'}    {'MAR02304'}    true   
{'MAR07633'}    {'MAR01442'}    true   
{'MAR07634'}    {'MAR00052'}    true   
{'MAR07635'}    {'MAR00065'}    true   
{'MAR07636'}    {'MAR00334'}    true   
{'MAR07637'}    {'MAR01555'}    true   
{'MAR07667'}    {'MAR00094'}    true   
{'MAR07681'}    {'MAR00058'}    true   
{'MAR07736'}    {'MAR00087'}    true   
{'MAR07737'}    {'MAR01396'}    true   
{'MAR07738'}    {'MAR01314'}    true   
{'MAR08922'}    {'MAR01518'}    true   
{'MAR08930'}    {'MAR01636'}    true   
{'MAR09603'}    {'MAR09873'}    true   
{'MAR09604'}    {'MAR09886'}    true   
{'MAR09613'}    {'MAR09886'}    false  
{'MAR00116'}    {'MAR02300'}    false  

Expected feature/value/output:

How the reaction/metabolite/gene/simulation result should look (cite literature if needed). PLEASE DELETE THIS LINE.

Current feature/value/output:

How the reaction/metabolite/gene/simulation actually looks in the main branch. PLEASE DELETE THIS LINE.

Reproducing these results:

Please attach any Matlab code used . PLEASE DELETE THIS LINE.

I hereby confirm that I have:

  • Tested my code on my own computer for running the model
  • Done this analysis in the main branch of the repository
  • Checked that a similar issue does not exist already

Note: replace [ ] with [X] to check the box. PLEASE DELETE THIS LINE

Activity

  1. Devlin-Moyer commented on Jun 17, 2024

    @Devlin-Moyer
    Collaborator

    MAR04910, MAR04411, and MAR04912 were addressed in #568/#600. MAR06057 was not mentioned, but MAR04411 was removed in #600, and MAR04411 was the only potential duplicate of MAR06057 listed here.
    MAR05295 was removed in #581
    MAR06406 and MAR01483 were removed in #706
    I haven't investigated any of the others beyond determining that no other issues or pull requests or anything mention them

  2. johan-gson commented on Jun 17, 2024

    @johan-gson
    CollaboratorAuthor

    Nice work cleaning this up, these issues have been around for some time!

  3. edkerk commented on Mar 23, 2026

    @edkerk
    Member

    Here are the remaining problematic reactions.

    Most of the issues are transport reactions, where HMRdatabase suggested a 2 ATP cost, while Recon3D had 1 ATP. Recon3D is probably correct. @Devlin-Moyer or @JHL-452b, what do you think?

    Reaction ID Name Equation EC Number Gene Database
    MAR01702 25(R)DHCA-CoA[r] + 2 ATP[r] + 2 H2O[r] => 25(R)DHCA-CoA[x] + 2 ADP[r] + 2 H+[r] + 2 Pi[r] HMRdatabase
    MAR02283 Postulated Transport Reaction 25(R)DHCA-CoA[r] + ATP[r] + H2O[r] => 25(R)DHCA-CoA[x] + ADP[r] + H+[r] + Pi[r] Recon3D
    MAR01857 2 ATP[x] + 2 H2O[x] + taurocholate[x] => 2 ADP[x] + 2 H+[x] + 2 Pi[x] + taurocholate[e] HMRdatabase
    MAR02290 Vesicular Transport ATP[x] + H2O[x] + taurocholate[x] => ADP[x] + H+[x] + Pi[x] + taurocholate[e] Recon3D
    MAR01861 2 ATP[x] + 2 H2O[x] + taurochenodeoxycholate[x] => 2 ADP[x] + 2 H+[x] + 2 Pi[x] + taurochenodeoxycholate[e] HMRdatabase
    MAR02298 Vesicular Transport ATP[x] + H2O[x] + taurochenodeoxycholate[x] => ADP[x] + H+[x] + Pi[x] + taurochenodeoxycholate[e] Recon3D
    MAR01913 2 ATP[c] + 2 H2O[c] + sulfate[c] => 2 ADP[c] + 2 H+[c] + 2 Pi[c] + sulfate[e] HMRdatabase
    MAR02304 Active Transport ATP[c] + H2O[c] + sulfate[c] => ADP[c] + H+[c] + Pi[c] + sulfate[e] 4.1.3.6 Recon3D
    MAR07633 2 ATP[c] + 2 H2O[c] + 3 histamine[c] => 2 ADP[c] + 2 H+[c] + 3 histamine[e] + 2 Pi[c] ENSG00000036565 or ENSG00000165646 HMRdatabase
    MAR01442 Histamine Secretion via Secretory Vesicle (ATP Driven) ATP[c] + H2O[c] + histamine[c] => ADP[c] + H+[c] + histamine[e] + Pi[c] 2.7.1.1 ENSG00000036565 or ENSG00000165646 Recon3D
    MAR07634 3 5-hydroxy-L-tryptophan[c] + 2 ATP[c] + 2 H2O[c] => 3 5-hydroxy-L-tryptophan[e] + 2 ADP[c] + 2 H+[c] + 2 Pi[c] ENSG00000036565 or ENSG00000165646 HMRdatabase
    MAR00052 5-Hydroxy-L-Tryptophan Secretion via Secretory Vesicle (ATP Driven) 5-hydroxy-L-tryptophan[c] + ATP[c] + H2O[c] => 5-hydroxy-L-tryptophan[e] + ADP[c] + H+[c] + Pi[c] 1.13.11.52 ENSG00000036565 or ENSG00000165646 Recon3D
    MAR07635 3 adrenaline[c] + 2 ATP[c] + 2 H2O[c] => 2 ADP[c] + 3 adrenaline[e] + 2 H+[c] + 2 Pi[c] ENSG00000036565 or ENSG00000165646 HMRdatabase
    MAR00065 Adrenaline Secretion via Secretory Vesicle (ATP Driven) adrenaline[c] + ATP[c] + H2O[c] => ADP[c] + adrenaline[e] + H+[c] + Pi[c] ENSG00000036565 or ENSG00000165646 Recon3D
    MAR07636 2 ATP[c] + 3 dopamine[c] + 2 H2O[c] => 2 ADP[c] + 3 dopamine[e] + 2 H+[c] + 2 Pi[c] ENSG00000036565 or ENSG00000165646 HMRdatabase
    MAR00334 Secretion of Dopamine via Secretory Vesicle (ATP Driven) ATP[c] + dopamine[c] + H2O[c] => ADP[c] + dopamine[e] + H+[c] + Pi[c] 2.1.1.6 ENSG00000036565 or ENSG00000165646 Recon3D
    MAR07637 2 ATP[c] + 2 H2O[c] + 3 noradrenaline[c] => 2 ADP[c] + 2 H+[c] + 3 noradrenaline[e] + 2 Pi[c] ENSG00000036565 or ENSG00000165646 HMRdatabase
    MAR01555 Secretion of Noradrenaline via Secretory Vesicle (ATP Driven) ATP[c] + H2O[c] + noradrenaline[c] => ADP[c] + H+[c] + noradrenaline[e] + Pi[c] 2.7.7.18 ENSG00000036565 or ENSG00000165646 Recon3D
    MAR07667 ATP[c] + biotin[e] + H2O[c] + 2 Na+[e] => ADP[c] + biotin[c] + H+[c] + 2 Na+[c] + Pi[c] ENSG00000138074 HMRdatabase
    MAR00094 Biotin Transport via Sodium Symport ATP[c] + biotin[e] + H2O[c] + Na+[e] => ADP[c] + biotin[c] + H+[c] + Na+[c] + Pi[c] ENSG00000138074 Recon3D
    MAR07681 3 acetylcholine[c] + 2 ATP[c] + 2 H2O[c] => 3 acetylcholine[e] + 2 ADP[c] + 2 H+[c] + 2 Pi[c] ENSG00000187714 HMRdatabase
    MAR00058 Acetylcholine Secretion via Secretory Vesicle (ATP Driven) acetylcholine[c] + ATP[c] + H2O[c] => acetylcholine[e] + ADP[c] + H+[c] + Pi[c] ENSG00000187714 Recon3D
    MAR07736 ATP[c] + 3 beta-alanine[c] + H2O[c] => ADP[c] + 3 beta-alanine[e] + H+[c] + Pi[c] ENSG00000101438 HMRdatabase
    MAR00087 B-Alanine Secretion via Secretory Vesicle (ATP Driven) ATP[c] + beta-alanine[c] + H2O[c] => ADP[c] + beta-alanine[e] + H+[c] + Pi[c] 2.3.1.65 ENSG00000101438 Recon3D
    MAR07737 ATP[c] + 3 glycine[c] + H2O[c] => ADP[c] + 3 glycine[e] + H+[c] + Pi[c] ENSG00000101438 HMRdatabase
    MAR01396 Secretion of Glycine via Secretory Vesicle (ATP Driven) ATP[c] + glycine[c] + H2O[c] => ADP[c] + glycine[e] + H+[c] + Pi[c] ENSG00000101438 Recon3D
    MAR07738 3 4-aminobutyrate[c] + ATP[c] + H2O[c] => 3 4-aminobutyrate[e] + ADP[c] + H+[c] + Pi[c] ENSG00000101438 HMRdatabase
    MAR01314 GABA Secretion via Secretory Vesicle (ATP Driven) 4-aminobutyrate[c] + ATP[c] + H2O[c] => 4-aminobutyrate[e] + ADP[c] + H+[c] + Pi[c] ENSG00000101438 Recon3D
    MAR08922 2 ATP[c] + 2 H2O[c] + 3 L-metanephrine[c] => 2 ADP[c] + 2 H+[c] + 3 L-metanephrine[e] + 2 Pi[c] HMRdatabase
    MAR01518 Metanephrine Secretion via Secretory Vesicle (ATP Driven) ATP[c] + H2O[c] + L-metanephrine[c] => ADP[c] + H+[c] + L-metanephrine[e] + Pi[c] 1.1.1.37 Recon3D
    MAR08930 ATP[c] + H2O[c] + 2 Na+[e] + pantothenate[e] => ADP[c] + H+[c] + 2 Na+[c] + pantothenate[c] + Pi[c] ENSG00000138074 HMRdatabase
    MAR01636 Pantothenate Sodium Symporter Ii ATP[c] + H2O[c] + Na+[e] + pantothenate[e] => ADP[c] + H+[c] + Na+[c] + pantothenate[c] + Pi[c] ENSG00000138074 Recon3D
    MAR09603 betaine[e] + 2 chloride[e] + 3 Na+[e] => betaine[c] + 2 chloride[c] + 3 Na+[c] ENSG00000111181 HMRdatabase
    MAR09873 Betaine Transport by Bgt betaine[e] + chloride[e] + Na+[e] <=> betaine[c] + chloride[c] + Na+[c] ENSG00000111181 Recon3D
    MAR09604 4-aminobutyrate[e] + 2 chloride[e] + 3 Na+[e] => 4-aminobutyrate[c] + 2 chloride[c] + 3 Na+[c] ENSG00000111181 HMRdatabase
    MAR09886 GABA Transport by Bgt 4-aminobutyrate[e] + chloride[e] + Na+[e] <=> 4-aminobutyrate[c] + chloride[c] + Na+[c] ENSG00000111181 Recon3D
    MAR09613 4-aminobutyrate[e] + chloride[e] + 2 Na+[e] => 4-aminobutyrate[c] + chloride[c] + 2 Na+[c] ENSG00000010379 or ENSG00000132164 or ENSG00000157103 HMRdatabase
    MAR09886 GABA Transport by Bgt 4-aminobutyrate[e] + chloride[e] + Na+[e] <=> 4-aminobutyrate[c] + chloride[c] + Na+[c] ENSG00000111181 Recon3D
    MAR00116 C-4 Sterol Methyl Oxidase (4, 4-Dimethylzymosterol) 3 H+[r] + 3 NADPH[r] + 3 O2[r] + 14-demethyllanosterol[r] => 4 H2O[r] + 3 NADP+[r] + 4alpha-carboxy-4beta-methyl-5alpha-cholesta-8,24-dien-3beta-ol[r] 4.2.1.17 ENSG00000052802 Recon3D
    MAR02300 Methylsterol Monooxygenase H+[r] + NADPH[r] + 2 O2[r] + 14-demethyllanosterol[r] => 2 H2O[r] + NADP+[r] + 4alpha-carboxy-4beta-methyl-5alpha-cholesta-8,24-dien-3beta-ol[r] 1.14.13.72 Recon3D
  4. Devlin-Moyer commented on Mar 23, 2026

    @Devlin-Moyer
    Collaborator

    my first thought is that I've generally found it difficult to find solid evidence for particular stoichiometric coefficients for transport reactions, especially ATP-dependent ones, since they seem to be unknown for a large number of transporters. It would probably take a decent amount of time to try and determine which member of each pair is more accurate, but I also think that assuming all of the Recon3D versions are more accurate would probably be fine, i.e. that removing one member of each of these pairs is unlikely to significantly impact predicted fluxes

  5. edkerk commented on Mar 24, 2026

    @edkerk
    Member

    It probably needs a little closer look, especially for the gene-associated ones. Apparently ABC transporters do routinely use 2 ATP per transported metabolite, so the question is by what mechanisms these transport reactions work.

    For instance, quite a few reactions are annotated with ENSG00000036565, which is actually not powered by ATP hydrolysis but rather the proton gradient (UniProt). So in those cases both reactions are incorrect.

  6. edkerk commented on Jul 11, 2026

    @edkerk
    Member

    Went through the remaining pairs. They are not one problem: they split into five mechanistically distinct groups, so a blanket "keep Recon3D, drop HMR" would have left real errors in and, for the ABC group, dropped the more-correct member. Resolved as follows.

    Group Transporter What was done Reactions
    Vesicular secretion SLC18A1/A2/A3, SLC32A1 (VMAT/VAChT/VGAT) These are H+ antiporters, but the gradient is across the secretory-vesicle membrane, which the model does not have, so the ATP is a proxy for the V-ATPase loading cost. Standardised to 1 ATP per molecule and removed the inconsistent HMR 2-ATP-per-3-molecule duplicates; added a rxnNotes note explaining the proxy kept MAR01442, 00052, 00065, 00334, 01555, 00058, 00087, 01396, 01314, 01518; removed the 10 HMR duplicates
    Na+-multivitamin SLC5A6 (SMVT) Removed the spurious ATP, modelled as Na+ symport at 2 Na+ : 1 substrate (PMID:25809983) kept MAR00094 (biotin), MAR01636 (pantothenate); removed MAR07667, MAR08930
    Na+/Cl- symport SLC6A12 (BGT1) Set coupling to 3 Na+ : 1 Cl- : 1 substrate kept MAR09873 (betaine), MAR09886 (GABA); removed MAR09603, MAR09604. MAR09613 (GAT, 2 Na+ : 1 Cl-) is a separate transporter, left unchanged
    Bile acid / bile-acid-CoA ABC transporters ABC transporters use 2 ATP, so kept the HMR 2-ATP form and removed the Recon3D 1-ATP duplicate (the reverse of the initial lean) kept MAR01702, MAR01857, MAR01861; removed MAR02283, MAR02290, MAR02298
    Sterol 4-methyl oxidation MSMO1 3 sequential monooxygenations, so kept MAR00116 (3 NADPH/3 O2) and removed MAR02300 (1 NADPH/2 O2) kept MAR00116; removed MAR02300

    All modified reactions remain mass and charge balanced, and no genes are orphaned. One item is left open: the sulfate pair (MAR01913/MAR02304) is not obviously an ABC transporter (its Recon3D EC 4.1.3.6 is clearly wrong), so its mechanism needs a closer look before deciding the ATP cost.

  7. added
    wipA pull request for this issue is open
    on Sep 24, 2026
  8. added
    fixed in developMerged into develop, will be in the next release
    and removed
    wipA pull request for this issue is open
    on Sep 26, 2026
  9. edkerk commented on Sep 27, 2026

    @edkerk
    Member

    #1105 revises three of the decisions taken in #1041 and completes its bookkeeping.

    1. Vesicular secretion goes back to the HMR stoichiometries. #1041 kept the Recon3D form with 1 ATP per secreted molecule. That overestimates the cost: the vesicular transporters exchange 2 H+ per amine or acetylcholine (VMAT/VAChT, SLC18 family, PMID:12827358), and the V-ATPase pumps about 10 H+ per 3 ATP (PMID:32165585, structure of the brain V-ATPase), so about 0.6 ATP per amine and about 0.3 ATP per GABA or glycine, which VGAT (SLC32A1, PMID:12750892) loads with fewer protons. The HMR forms (2 ATP per 3 amines or acetylcholine, 1 ATP per 3 GABA, glycine or beta-alanine) are the closest whole-number forms, and they are also what the BiGG ids on these reactions (e.g. HISTAVESSEC, GABAVESSEC) describe.

    Change Model entities
    Restored (2 ATP : 3 molecules): histamine, 5-hydroxy-L-tryptophan, adrenaline, dopamine, noradrenaline, acetylcholine, L-metanephrine MAR07633, MAR07634, MAR07635, MAR07636, MAR07637, MAR07681, MAR08922
    Restored (1 ATP : 3 molecules): beta-alanine, glycine, GABA MAR07736, MAR07737, MAR07738
    Deprecated, recorded in the rxnRetired of the restored reaction MAR01442, MAR00052, MAR00065, MAR00334, MAR01555, MAR00058, MAR01518, MAR00087, MAR01396, MAR01314

    GPRs are unchanged (SLC18A1/SLC18A2, SLC18A3, SLC32A1; none for metanephrine). 5-hydroxy-L-tryptophan is not a known VMAT substrate and vesicular secretion of metanephrine has no support: #1106 removes the VMAT GPR from MAR07634 and deprecates MAR08922. Still open: the restored rows do not yet carry the references and the V-ATPase note that were on the removed Recon3D rows.

    2. BGT1 couples 3 Na+ and 2 Cl-. MAR09873 (betaine) and MAR09886 (GABA) go from 3 Na+ : 1 Cl- to 3 Na+ : 2 Cl- per substrate. Human BGT-1 (SLC6A12) cloned from kidney: PMID:7589472. UniProt P48065 lists 3:1 for GABA while citing this same paper, and 3 Na+ : 2 Cl- for betaine (RHEA:71175, by similarity). The removed MAR09603/MAR09604 had the better-supported 3:2 form.

    3. Bile-salt exports from the peroxisome removed. MAR01857 (taurocholate) and MAR01861 (taurochenodeoxycholate) moved the bile salt straight from the peroxisome to the extracellular space with 2 ATP and no gene. They are deprecated. The canalicular export by ABCB11 (BSEP) uses 1 ATP per bile salt (UniProt O95342, RHEA:50052, RHEA:50064), which is what the existing cytosol-to-extracellular reactions MAR01870 and MAR01872 already describe. MAR01702 (25(R)DHCA-CoA, ER to peroxisome, 2 ATP) is kept unchanged.

    4. Retired-id pointers. The kept reactions now list the ids that #1041 deprecated into them: MAR09609 <- MAR07667, MAR09607 <- MAR08930, MAR09873 <- MAR09603, MAR09886 <- MAR09604, MAR01702 <- MAR02283, MAR00116 <- MAR02300.

    The sulfate pair (MAR01913/MAR02304) remains open, as noted before.

    Implemented in #1105.

  10. added
    wipA pull request for this issue is open
    and removed
    wipA pull request for this issue is open
    on Sep 27, 2026
  11. added this to the 2.1.0 milestone on Sep 28, 2026
  12. edkerk commented on Oct 5, 2026

    @edkerk
    Member

    Fixed in Human 2.1.0.

  13. removed
    fixed in developMerged into develop, will be in the next release
    on Oct 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions