SysBioChalmers / Human-GEM

The generic genome-scale metabolic model of Homo sapiens
https://sysbiochalmers.github.io/Human-GEM-guide/
Creative Commons Attribution 4.0 International
98 stars 41 forks source link

Clarification regarding fitting tasks to HumanGEM #825

Closed nnursimulu closed 4 months ago

nnursimulu commented 4 months ago

Dear Team,

I wanted to clarify what fitting a metabolic task to the Human-GEM actually entails. Say you have input metabolites A and B and output metabolites C and D specified for a task. When we fit the human model to this task and perform FBA, does this mean that given all exchange reactions for all metabolites except for A, B, C and D being blocked, we are looking for a flux distribution that enables production of C and D, given that A and B are blocked?

I would much appreciate any clarification you could give me.

JonathanRob commented 4 months ago

Hi @nnursimulu

Just to clarify, "fitting" and "checking" metabolic tasks (e.g., using fitTasks and checkTasks, respectively) are slightly different processes, where the latter is a subset of the former. Checking a task simply evaluates if the task is possible given the model structure, whereas fitting a task will (if the task is impossible) try to use reactions from another model to enable the task.

When running a metabolic task check, it is important that the GEM is in its "closed form"; i.e., it contains boundary metabolites. For example:

Exchange rxn in open form: glucose[extracellular] <=> Exchange rxn in closed form: glucose[extracellular] <=> glucose[boundary]

This effectively blocks all exchange reactions because they can never carry flux under FBA constraints, since no other reactions consume or produce the boundary metabolites.

When a metabolic task is formulated with input metabolites A and B and output metabolites C and D, the checkTasks algorithm will modify the constraints of the linear optimization problem (by changing bounds of the b vector in the eqn S·v = b) such that exchange reactions for A and B can carry flux into the system, and exchange reactions for C and D can carry flux out of the system. The input metabolite bounds (IN LB and IN UB) specified in the metabolic task file dictate the minimum and maximum allowed exchange (input) flux of the input metabolites (A and B). Likewise, the output metabolite bounds (OUT LB and OUT UB) dictate the flux bounds of the output metabolites (C and D).

In this regard, if you want to test whether the model can consume metabolites A and B, their input lower bounds (IN LB) should be set above zero (e.g., 1), forcing the flux distribution to include some way to consume/balance the input of those metabolites. However, without specifying any output metabolites, this will be impossible because it has no way to balance/consume the input metabolites. Therefore, the task will also often include known product/downstream metabolites C and D, with output upper bounds (OUT UB) above zero (e.g., 1000) to allow any amount of production/output of metabolites C and D in the flux distribution. If we want to require a specific stoichiometric output of the product metabolites C and D, we could set the output bounds to a more specific value (e.g., OUT LB and OUT UB = 1).

So in short, the metabolic task check is evaluating whether a flux distribution exists such that all metabolites are blocked except the input/consumption of A and B, and the output/production of C and D.

nnursimulu commented 4 months ago

Thank you very much for your clarification. Is changing the bound for b a similar procedure to changing the upper and lower bounds of the corresponding exchange reactions (in open form) while having all other exchange reactions in open form blocked? I am asking because, while doing the latter, I was unable to get my version of the HumanGEM (which is the same as the one in the repository at the moment) to carry any flux for a task that is deemed essential ("Thiamin phosphorylation to TPP").

Additionally, I wanted to doublecheck if, prior to running ftINIT, we have to do any preprocessing to the HumanGEM model to get its exchange reactions to be in closed form?

JonathanRob commented 4 months ago

Is changing the bound for b a similar procedure to changing the upper and lower bounds of the corresponding exchange reactions (in open form) while having all other exchange reactions in open form blocked?

Yes, it should be identical. However, the task you mentioned includes additional fields in the task file; namely "EQU".

The EQU field can be used to temporarily include reactions in the model while the task evaluation is being performed. For the Thiamine phosphorylation task, it includes the following reaction in the EQU field:

ATP[c] + H2O[c] <=> ADP[c] + Pi[c] + H+[c]

Although the forward reaction likely already exists in the model, it is likely going to use the reverse of this reaction to enable phosphorylation of thiamine without requiring additional input metabolites to supply the necessary resources. Without this reaction, the task would fail (as you have observed). These temporary reactions are sometimes added if we are primarily interested in testing a very specific metabolic function/pathway, without involving all the other machinery necessary to supply other required resources/energy.

JonathanRob commented 4 months ago

Regarding the prep for ftINIT (guide), I believe there is no pre-processing/setting of bounds required - they should all be open. You just need to run the prepHumanModelForftINIT function.

nnursimulu commented 4 months ago

Thank you very much. This is extremely helpful. I realized I had the wrong lower bound for the equation which was why the model was unable to carry any flux.

I had one last question with respect to the non-essential tasks. Some of these seem to involve metabolites that are not present in HumanGEM. For instance, one of these tasks is "Henicosanoic acid de novo synthesis (minimal substrates, physiological excretion)". However, henicosanoic acid[c] does not appear to be a metabolite in the model. Can you please clarify the role of such tasks?

JonathanRob commented 4 months ago

Hmm, that is interesting. I recall there being some metabolites in the metabolicTasks_CellfieConsensus.txt list that may not be present in Human-GEM because it was developed separately by another team, but I would not expect the metabolicTasks_Essential.txt list to include metabolites not present in Human-GEM.

After some searching the repo (+1 for git-based model development!), I found that this metabolite was renamed/corrected to "heneicosanoic acid" because the original "henicosanoic acid" was a typo. This was discussed in #491 and corrected in #518. However, it was not updated in the task file.

I have opened a new issue #828 to correct this inconsistency. Thanks for identifying this, @nnursimulu :)

nnursimulu commented 4 months ago

Thank you for clarifying, and I am happy to help! :)