Repository navigation
Conversation
…st (#1153) A reaction in the "Pool reactions" or "Artificial reactions" subsystem stands for many species at once, so an elemental balance is not defined for it. Both subsystems join the boundary and biomass exclusions that balanceTest.py already applies, which drops 44 rows from the report (42 mass, 12 charge, overlapping) and leaves 178. R and X stay elements of their own rather than being ignored, so a reaction using them is still expected to balance in them.
#1153) Human-GEM writes a protein-bound residue in two ways. The glycosylation, glycosaminoglycan and GPI networks use X for the whole protein, residue included, and spell out only the attached group: [protein]-L-serine is XH and Xyl-L-Ser-[protein] is C5H9O4X. The protein- and peptide-residue metabolites instead spell out the full residue plus the flanking carbonyl and amide NH, with R2 for the two chain continuations. Subtracting the free amino acid minus H2O from each of the fourteen [protein]/peptide/histone residue metabolites leaves CHNOR2 in eleven cases; the two aspartates differ only by the protonation state of the free acid, and peptidylglycine covers two residues. MAM00196 [protein] carried X while serving as the empty residue slot of ten R2-convention reactions, so each of them lost an X and gained an R2. Under the family convention an unoccupied slot is one peptide bond with two chain continuations, CHNOR2. Its only X-convention partner, MAM02339 L-arginyl-protein, moves with it to C7H14N5O2R2, the formula MAM00197 [protein]-L-arginine already carries for the same residue. This balances MAR06974, MAR06978, MAR07165, MAR07616, MAR07621, MAR07625, MAR08029 and MAR09735, four of which have GPRs, and takes the mass-imbalanced count from 27 to 19. Nothing becomes unbalanced: MAM02339 appears in MAR09541 alone, which stays balanced. MAR07197 and MAR07282 remain unbalanced. They convert [protein] into the X-convention [protein]-L-serine and [protein]-L-asparagine, whose XH formulas are required by fourteen balanced reactions of the glycosylation network, so their imbalance is restated rather than resolved. MAR13078 PROTEIN_BS is a biomass pseudo-reaction over fractional amino acid coefficients and cannot balance. Only metFormula changes. The stoichiometry, bounds, GPRs and metabolite charges are identical and growth stays at 138.5326986442, so gene essentiality cannot move.
…arry (#1153) A one-electron carrier pair must differ by one charge unit, as ferricytochrome C (+3) and ferrocytochrome C (+2) already do in this model. The three carrier pairs written as the X placeholder instead have both members at zero, so every reaction that reoxidises them is short by exactly the protons it consumes. Charging the reduced member keeps the oxidized form at its current value and matches the direction of the cytochrome C pair: MAM02827 reduced adrenal ferredoxin 0 -> -1 MAM02828 reduced ferredoxin 0 -> -1 (c and m) MAM01825 ferrocytochrome B5 0 -> -1 MAM00137, the ADP-D-ribosylated acceptor of MAR09487, spells out the two phosphates of the transferred ADP-ribosyl but carries charge zero. The same group takes MAM00197 [protein]-L-arginine from +1 to -1 in MAM00215, so it is worth -2 here as well. MAM01266 activated methyl group is the methyl that SAM donates in MAR04842, which turns the sulfonium SAM (+1) into neutral SAH. A methyl leaving a sulfonium is a methyl cation, so 0 -> +1. This balances MAR01932, MAR01934, MAR01935, MAR01942, MAR01950, MAR02126, MAR02128, MAR03992, MAR04842, MAR07741 and MAR09487, and takes the charge-imbalanced count from 160 to 149. Nothing becomes unbalanced. Only metCharge changes. Stoichiometry, bounds, GPRs, formulas and the reaction and metabolite sets are identical to develop and growth stays at 138.5326986442, so gene essentiality cannot move.
…lder (#1153) MAM02357 lepidimoide is a defined disaccharide carrying the placeholder formula X, which is why the "metabolites missing formula" check passes it: X counts as a formula. Its stored InChI ends in /q;+1/p-1 over C12H18O10.Na, that is, the sodium salt of an anion that has lost one proton, and RDKit reads the stored SMILES as C12H17NaO10 at charge 0 in the committed qc_structure_consistency.csv. Both give the same entity for the model to carry: C12H17O10 at -1. It appears only in MAR01852 and MAR01859, on both sides of each, so no balance changes. Its two structure-consistency rows stay for now: metSmiles and metInChI both still carry the sodium counter-ion, and they should be dropped together, with RDKit on hand to verify the result, as part of the metSmiles batch rather than by hand here.
…1153) An elemental balance is not defined for a reaction whose coefficients average over a class of species. Protein assembly and protein degradation consist of such reactions throughout, alongside the pool and artificial subsystems. The fifteen filed under an ordinary subsystem are excluded by identifier, each with what it lumps, and the list is audited on every run so an entry the model no longer needs is reported.
…1153) MAR09487 transfers an ADP-ribosyl group from NAD+ onto the acceptor and releases nicotinamide, and its stoichiometry puts that group on MAM00137. The two names stated the opposite, so the equation read as a chain losing a unit while gaining one in mass.
The table fields now include gene_reaction_rule (written with gene symbols), metabolites, references and name of reactions, and a gene row deletes a gene that no reaction uses. #1153
AKR7A2 and AKR7A3 reduce the dialdehyde to the monoalcohols and the dialcohol with NADPH. The reactions wrote the two electrons as protons, which left each of them short by two charges. Generated by `code/modelCuration/applyCurationTable.py --table data/modelCuration/aflatoxinDialdehydeReductions.tsv`. #1153
… its formation The diol is a dihydrodiol (C24H16O2), so its epoxide is C24H16O3, not C24H14O3, and the monooxygenase consumes the proton instead of releasing it. Generated by `code/modelCuration/applyCurationTable.py --table data/modelCuration/dibenzoPyreneDiolEpoxide.tsv`. #1153
The reaction is 2 L-arginine + 3 NADPH + 4 O2 + H+ => 2 L-citrulline + 2 NO + 3 NADP+ + 4 H2O (RHEA:19897). Generated by `code/modelCuration/applyCurationTable.py --table data/modelCuration/nitricOxideSynthaseStoichiometry.tsv`. #1153
…ide synthase curation #1153
…ent of MAR01506 MAR06639 cites three LRAT papers that had no row, and the Mondal 2000 row named MAR01506, which was merged into MAR06639 and deprecated. #1149
The alkyl ether lipids put the whole chain in R, while the six alkenyl ether lipids wrote the two carbons of the vinyl ether out next to R, so the plasmanylethanolamine desaturase (MAR07601) came out short by C2H4. The alkenyl formulas now follow the alkyl convention, and the reactions among them stay balanced. The SMILES keep the drawn vinyl ether, the only place where the double bond is recorded. Generated by `code/modelCuration/applyCurationTable.py --table data/modelCuration/alkenylEtherLipidFormulas.tsv`. #1153
…the balance test Three reactions take a metabolite from one convention of the placeholder elements to another, so their two sides do not count the same atoms. They are listed by identifier with their reasons and audited on every run, like the lumped reactions. #1153
HSD3B1 isomerises androst-5-ene-3,17-dione to androst-4-ene-3,17-dione without a cofactor (RHEA:43936). The two reactions added H+ and NAD+ => NADH, which left them short by two charges. Generated by `code/modelCuration/applyCurationTable.py --table data/modelCuration/steroidDeltaIsomerase.tsv`. #1153
A peroxidase oxidises two phenolic donors to two radicals with one H2O2 (RHEA:56136). The eight reactions wrote one donor with H+, which left them short by one charge. Generated by `code/modelCuration/applyCurationTable.py --table data/modelCuration/catecholEstrogenPeroxidase.tsv`. #1153
The acyl-CoA oxidases pass their electrons to O2 (RHEA:38959), which this model writes as FAD => FADH2 and the reoxidation of FADH2 by MAR20114. The reaction released two protons instead. Generated by `code/modelCuration/applyCurationTable.py --table data/modelCuration/acylCoAOxidase4CisDecenoylCoA.tsv`. #1153
The reaction releases two propanoyl-CoA and one acetyl-CoA, which takes three cycles with one FAD and one NAD+ reduced in each. It counted two FAD and five protons. Generated by `code/modelCuration/applyCurationTable.py --table data/modelCuration/pristanoylCoALumpedOxidation.tsv`. #1153
…tenediol HSD3B1 interconverts 5alpha-dihydrotestosterone and 5alpha-androstane-3beta,17beta-diol (RHEA:42184, RHEA:16297). MAR02022, MAR02024 and MAR03400 wrote androstenediol, the Delta5 diol, which no other reaction uses, and were short by two charges. The new metabolite MAM20097 (ChEBI:18329) replaces MAM01336, which is deprecated, and the proton moves to the side where the reduction consumes it. The reactions follow data/modelCuration/androstanediolHsd3b.tsv (applyCurationTable.py); the metabolites were changed by hand. #1153
…at makes stearoyl-CoA MAR02313 came from Recon3D (BiGG r1253), where the activation of stearidonic acid in the endoplasmic reticulum is written with stearoyl-CoA as the product and eight protons as hydrogens. MAR02982 is the same ligase with the correct product, (6Z,9Z,12Z,15Z)-octadecatetraenoyl-CoA, and carries all genes of MAR02313 (and ACSBG1), the same EC number and the same bounds. MAR02982 now also holds the reference PMID:8584017 and the source Recon3D of the removed reaction. The cross-references of r1253 describe the saturated product and stay in the deprecated list. The reference and the source follow data/modelCuration/stearidonicAcidLigaseDuplicate.tsv (applyCurationTable.py); the removal was made by hand. #1153
Leo 1989 (CYP2C8 and retinol), Martras 2004 (ADH on ring-oxidized retinoids) and the Hecht 1998 review (keto acid and hydroxy acid of NNK), read in full. #1153
…AR04704 MAR04702 turns homogentisate into gentisate aldehyde with NADPH and O2 and has no gene or EC number; KEGG lists the reaction (R02518) as incomplete. Homogentisate is degraded by homogentisate 1,2-dioxygenase (MAR06774). MAR04703 and MAR04704 (AOX1) oxidise gentisate aldehyde, which MAR04702 alone produces, so they carry no flux without it. The three reactions go to the deprecated reactions list with their cross-references, and the gentisate aldehyde metabolite MAM01952c, which no reaction uses any more, to the deprecated metabolites list. 2,5-Dihydroxybenzoate stays in the model through MAR11900. #1153
The fields lower_bound and upper_bound are changed as floats like the charge of a metabolite. #1153
…4773 The three reactions are written as the reduction of a porphyrin to the porphyrinogen with six protons, which does not balance. Porphyrinogens oxidise to the porphyrins with O2, non-enzymatically and, for uroporphyrinogen, through CYP1A2; the reactions now read porphyrinogen + 3 O2 => porphyrin + 3 H2O2 and run in that direction only. MAR04768 keeps no enzyme from the source model and gets CYP1A2, for which the evidence is limited to uroporphyrinogen and mostly to mouse. The coproporphyrinogen reactions have no gene. The change follows data/modelCuration/porphyrinogenOxidation.tsv (applyCurationTable.py); the review that supports it is in the literature registry. #1153
MAR07070 (4-hydroxy-1-(3-pyridinyl)-1-butanone to 3-succinoylpyridine) and MAR07076 (1-(3-pyridinyl)-1,4-butanediol to 4-hydroxy-4-(3-pyridyl)butanoate) are written with NADPH and O2 and do not balance. The in vivo conversions are reported without an enzyme or cofactor, and human lung microsomes form the keto acid without NADPH, so the reactions become the net oxidations with O2: keto alcohol + O2 => keto acid + H2O, and diol + O2 => hydroxy acid + H2O + H+. Both stay without a gene. The change follows data/modelCuration/nnkOxidationsWithoutCofactor.tsv (applyCurationTable.py). #1153
Model quality report❌ 1 regression(s) vs
Regression(s):
Improved:
✅ unchanged · ✨ improved vs Reaction directions: the alarm and the warning catch only directions that thermodynamics makes very unlikely. A reaction without an alarm or warning is not thereby shown to have the right reversibility. Full workflow run · this comment is edited as results come in |
…decenoyl-CoA oxidase MAR03321 MAR02818 and MAR03321 are the same reaction in the peroxisome with the same genes (ACOX1, ACOX3) and bounds. MAR03321 is the acyl-CoA oxidase (EC 1.3.3.6) with the specific subsystem; MAR02818 carried the name and EC number of a long-chain acyl-CoA dehydrogenase (1.3.8.8). MAR03321 now also holds the two references and the source Recon3D of MAR02818, and its Recon3D and BiGG identifiers; the other cross-references of MAR02818 stay in the deprecated list. The reference and identifier changes follow data/modelCuration/acylCoAOxidaseDuplicate.tsv (applyCurationTable.py); the removal was made by hand. #1153
…e than the quinone MAM00413 had the formula of the quinone (C18H22O3), so its peroxidase reactions MAR02088 and MAR02089 balanced only by releasing H2O2 from two water molecules, and the conversion to the quinone MAR02091 lacked a proton. The formula is now that of the 2,3-semiquinone (C18H23O3). MAR02088 and MAR02089 read 2 semiquinone + 2 H2O => 2 4-hydroxyestradiol + H2O2, as MAR02099 and MAR02100 do for the 2,3 isomer, and MAR02091 releases a proton as MAR02102 does. The change follows data/modelCuration/estradiolSemiquinone34.tsv (applyCurationTable.py). #1153
…metabolites of the chromophore The dialdehyde and the two monoalcohols are written as the 7-phenolate (charge -1) and the dialcohol was neutral, so the two monoalcohol reductions MAR07026 and MAR07028 needed two protons, one of them only to protonate the phenolate. The dialcohol is now the phenolate (C17H17O8, charge -1) and both reductions take one proton, as the dialdehyde reductions do. The SMILES and InChI of all four metabolites are the phenolate, so that they agree with the formula and charge in the structure test. The change follows data/modelCuration/aflatoxinDialcoholProtonation.tsv and aflatoxinPhenolateStructures.tsv (applyCurationTable.py). #1153
… the NNK diol forms 3-Succinoylpyridine was the neutral acid while 4-hydroxy-4-(3-pyridyl)butanoate, formed in parallel, is the carboxylate. It is now the carboxylate (C9H8NO3, charge -1) with its SMILES and InChI. MAR07070 releases a proton as MAR07076 does, and MAR07072 no longer takes one. MAR07070 and MAR07076 also cite the study of human lung microsomes (PMID:7585636). The change follows data/modelCuration/succinoylpyridineProtonation.tsv and nnkOxidationsWithoutCofactor.tsv (applyCurationTable.py). #1153
MAR01185 and MAR01227 convert one hydroxy-dodecenoate to (2E)-dodecenoyl-CoA, with a single substrate and product, so an elemental balance is defined for them, but the exclusion of the Pool reactions subsystem hid their charge imbalance. They are listed in ORDINARY_IN_LUMPED_SUBSYSTEMS and counted again. #1153
…eview as the paper states it The row of 10.5281/zenodo.3583004 returns to its text on develop, and the row of 10.3390/biom16081188 states that the review gives no stoichiometry with O2 or H2O2, that oxidation also gives non-porphyrin products, and that other enzymes or processes account for a large part of the microsomal oxidation. #1153
… 1-alkyl analogue MAM00222 was written as the neutral phosphoric acid (charge 0) while the 1-alkyl-sn-glycerol 3-phosphate and the 2-acyl-1-(1-alkenyl)-sn-glycerol 3-phosphate are dianions (charge -2). It is now C3H4O6PR with charge -2, and MAR07607 releases a proton instead of taking one. The change follows data/modelCuration/alkenylGlycerolPhosphateProtonation.tsv (applyCurationTable.py). #1153
…crosomes PMID:7585636 reports the formation of the keto acid from NNK in human lung microsomes without NADPH. It does not show the conversion of the keto alcohol to the keto acid or of the diol to the hydroxy acid, so it is not a reference of these two reactions. The change follows data/modelCuration/nnkOxidationsWithoutCofactor.tsv (applyCurationTable.py). #1153
…eats as the paper does #1153
MAR04769 took uroporphyrin I to uroporphyrinogen III with six protons, which does not balance and joins two isomers; uroporphyrinogen I does not isomerise to the III isomer. It is now uroporphyrinogen I + 3 O2 => uroporphyrin I + 3 H2O2 in one direction, like the other porphyrinogen oxidations, and has no gene. KEGG R04971 has the same oxidation of uroporphyrinogen I to uroporphyrin I with an unspecified acceptor. The change follows data/modelCuration/porphyrinogenOxidation.tsv (applyCurationTable.py). #1153
MAR02023 (Recon3D r0145) is the sum of 2 MAR04190 (L-arginine to N-omega-hydroxyarginine) and MAR03993 (N-omega-hydroxyarginine to citrulline and nitric oxide): 2 L-arginine + H+ + 3 NADPH + 4 O2 => 2 citrulline + 2 NO + 3 NADP+ + 4 H2O. Both steps carry the same genes (NOS1, NOS2, NOS3) and EC number 1.14.13.39, so the lump only adds a bypass of the intermediate. The identifiers r0145 and MNXR163339 describe the lumped equation and stay in the deprecated list. #1153
The study has no DOI in PubMed or Crossref, so the row is keyed by its PMID. #1153
|
Gene essentiality was run on this pull request via GH Actions. Gene essentiality: effect of this changeChecked 51 gene(s) directly affected plus 1828 more that share a metabolite with one of them. A gene counts as changed below only if the flip agrees in direction across at least 3 of the 5 cell-line models; fewer than that is grouped as likely noise from ftINIT's run-to-run variability instead.
Full detail: gene-essential_summary.md. ✅ unchanged · ✨ correct vs Hart 2015 · ❌ wrong vs Hart 2015 · ℹ️ not comparable to Hart 2015 The unscoped, every-gene matrix behind the table above is committed to gene-essential.csv.
|
Closes #1153.
The balance test no longer counts the lumped pool, artificial and protein assembly reactions, and a reaction's imbalance is removed where the formula, charge or stoichiometry of its metabolites was wrong. The unbalanced reactions go from 194 (65 mass, 145 charge) to 87 (no mass imbalance, 87 charge), with 53 lumped reactions and 3 convention bridges excluded.
MAM00196(c, r)[protein]XCHNOR2R2inside, like the other protein-residue metabolites; the reactions that use it balanceMAM02339C6H13N4OXC7H14N5O2R2MAR07621MAM02827,MAM02828(c, m)MAM01825MAM00136,MAM00137MAM00137charge 0MAM00137charge -2MAR09487balancesMAM01266MAM02357(c, e)X, charge 0C12H17O10, charge -1MAR07025,MAR07027MAR07026,MAR07028MAM01156,MAM01294,MAM00229,MAM01318MAM03385(c, r)C24H14O3C24H16O3MAR04088,MAR04090MAM00222,MAM00223,MAM00224,MAM00512,MAM00627,MAM02629RR, as in the alkyl ether lipids: each formula loses C2H4;MAM00222is also the dianion (C3H4O6PR, charge -2) like the alkyl phosphate, andMAR07607releases the protonMAR07601MAR02023MAR04190andMAR03993(same genes, same EC number), with arginine + 2 NADPH + 2 O2MAR01970,MAR01971MAR02061,MAR02062,MAR02063,MAR02076,MAR02077,MAR02078,MAR02099,MAR02100MAR02099andMAR02100are written in the reverse direction: 2 radical + 2 H2O => 2 donor + H2O2)MAM00413(c, l),MAR02088,MAR02089,MAR02091MAR03321MAR20114re-oxidisesMAR01600MAR02022,MAR02024,MAR03400,MAM20097(c, r, m)MAM01336, the Delta5 diol, used by no other reaction)MAM01336is deprecated; H+ on the side where the reduction consumes it; the gene rule is unchangedMAR02313,MAR02818MAR02313: Recon3D copy ofMAR02982(stearidonic acid ligase) with stearoyl-CoA as product and 8 H+ as hydrogens;MAR02818: 4-cis-decenoyl-CoA oxidase with the name and EC number of a dehydrogenaseMAR02313wrong;MAR02818equal toMAR03321once the FAD change above is madeMAR02982has all genes ofMAR02313and takes its reference and source;MAR03321has all genes ofMAR02818and takes its references, source and Recon3D and BiGG identifiersMAR02818(same equation, genes and bounds asMAR03321); strong forMAR02313(wrong product, same enzyme, genes and EC asMAR02982)MAR04702,MAR04703,MAR04704,MAM01952MAR06774; the transport and exchange of 2,5-dihydroxybenzoate stayMAR04768,MAR04769,MAR04770,MAR04773MAR04769joined the isomers I and IIIMAR04769is the oxidation of uroporphyrinogen I to uroporphyrin I;MAR04768gets CYP1A2MAR07070,MAR07076,MAM00917MAR07072no longer takes a protonMAR07197,MAR07282([protein]with the residue written out to[protein]-L-serineand[protein]-L-asparaginewith the residue insideX) andMAR10061(fatty acyl-CoA pool to fatty alcohol, whoseRdiffers by the carbonyl carbon) are listed as convention bridges inbalanceTest.py, each with its reason, and excluded from the balance test.metSmilesof the six alkenyl ether lipids keep the drawn vinyl ether, the only place where the double bond is recorded.code/test/balanceTest.pyexcludes the lumped reactions of thePool reactions,Artificial reactions,Protein assemblyandProtein degradationsubsystems and ten listed lumped reactions, audits that list on every run, and tests two ordinary reactions (MAR01185,MAR01227) that are filed underPool reactions.data/testResults/README.mddescribes the exclusion.code/modelCuration/applyCurationTable.pyalso changes gene rules, equations, references and reaction bounds, and deletes genes that no reaction uses.data/modelCuration/holds the per-entity tables of the reaction changes, applied withapplyCurationTable.py.literature/registry.tsv: 10 rows added (2 for the aflatoxin B1 aldehyde reductase papers, 3 for the papers thatMAR06639cites, 3 for the papers on the retinol and NNK reactions, 1 for the review of porphyrinogen oxidation, 1 for the NNK study of human lung microsomes, keyed by its PMID because it has no DOI), and the Mondal 2000 row namesMAR06639in place of the deprecatedMAR01506.