Open GuilleDufortFing opened 1 month ago
Sorry to see this.
From the release of Human1 to Human-GEM 1.19, the model has changed a lot. Although we have tried to correct the Stoichiometric Consistency in #814 and #813 , it seems to be still failed from the the results you provided. The report shows we got 4410 Unconserved Metabolites
in Human-GEM. It's terrible. We need some time to test what's wrong with Human-GEM. Will get back soon.
Even though it shows a ton of unconserved metabolites and a very low stoichiometric consistency, it could be as simple as one reaction being unbalanced. I would recommend taking a look at which reactions have changed since the drop in consistency score, and trying find any that may have become mass-unbalanced.
Yeah. I will take a look at mass-unbalanced reactions. But I remember that Human-GEM is consistency after #814 and #813 . Perhaps there have been some issues with recent PRs. Anyway, it doesn't look like it will be too hard to resolve.
Hi. By checking the unbalanced reactions one by one, I found Human-GEM could be consistent after turn MAR12372 into balance.
ID |
Reaction | Cause of imbalance |
---|---|---|
MAR12372 |
2 CoA + FAD + 2 H2O + 2 NAD+ + 3'-S-hydroxy-pravastatin-CoA --> 2 acetyl-CoA + 2 FADH2 + 2 H+ + 2 NADH + 3'-S-hydroxy-pravastatin-tetranor-CoA | {'charge': -2, 'C': 27, 'H': 35, 'N': 9, 'O': 13, 'P': 2} |
This reaction could be balanced after remove FAD in reactants and FADH2 in products. Although this reaction was already detected in #813 , it was not successfully modified in Human-GEM due to my negligence. It will be curated in a new PR in soon. Here is the report index.zip
Indeed, I did not generate the memote report directly because it would take a long time to run during this check. The check_stoichiometric_consistency
function in memote can be used directly to get the results faster.
import memote.support.consistency
model = read_sbml_model('Human-GEM.xml')
memote.support.consistency.check_stoichiometric_consistency(model)
If we add this code to the check tasks after every PR merge, Human-GEM will not have this problem in the future.
But the current problem with this code is that the Human-GEM.xml cannot be read by cobrapy. It reported the error as below after using validate_sbml_model
function as cobrapy recommend to check model's problem.
(None,
{'SBML_FATAL': [],
'SBML_ERROR': ['E0 (Error): Operating system (core, L1); File unreadable; File unreadable.\n'],
'SBML_SCHEMA_ERROR': [],
'SBML_WARNING': [],
'COBRA_FATAL': [],
'COBRA_ERROR': ['No SBML model detected in file.'],
'COBRA_WARNING': [],
'COBRA_CHECK': []})
What did I done is to add prefix of 'M' for mets id and 'R' for rxns id in xml format of Human-GEM so that it could be read by cobrapy. I don't know whether this is reasonable, but if it is, we need to modify the code of the model output XML format.
There is a lot more history regarding the renaming of metabolites and reactions, see https://github.com/SysBioChalmers/RAVEN/issues/353
There is a way to run memote directly on the yml here, thus avoiding the xml issue above.
The following are the results of running the latest version of MEMOTE (0.17.0) on the latest version of the Human-GEM.xml (v1.19.0 commit "chore: new version"):
index.html.zip
Citing the paper An atlas of human metabolism: "The quality of Human1 was evaluated using Memote, a communitymaintained framework for assessing GEMs with a standardized set of tests and metrics (22). In terms of consistency, Human1 exhibited excellent performance with 100% stoichiometric consistency, 99.4% mass-balanced reactions, and 98.2% charge-balanced reactions (fig. S3)."
I was wondering if you could give me some insight into why this discrepancy between the text and my results might be happening.
Thank you very much, Guillermo