-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Gene Protein Reactions Rules are not consistent in the outputed model #13
Comments
This is a very good point. How would you handle reaction that were only included to maintain a particular metabolic requirement or to enable other high confidence reactions? Those would probably only have genes with confidences between -1 to 2. I could definitely see that as something that could be enabled with an option. For instance using: |
Hi again, and sorry for this long delay in my answer. https://www.biorxiv.org/content/10.1101/593277v1.abstract The solution we proposed there is to somehow store the context used to build the model. Then, when one wants to asses the effect of a knockout the idea is to recalculate reactions confidence but first setting the confidence of the knocked gene to -1 (in the case of corda). This will output the set of reactions that become inactive under given the knockout and under the context used to build the model. As you commented, another approach would be to strip genes from the GPR as a final step in the construction of the CS-model. However, I would prefer to have the genes' expression or confidences stored in the CS-model because that would make the model more "transparent". I think that the current version of cobrapy does not support storing genes' attributes. Nonetheless, the current libSBML FBC extension allows to link genes to species and thus the gene expression could be stored as a standard species attribute such initialConentration or initialAmount. I will bring this discussion into de cobrapy community. What do you think? Please, let me know your opinion about all these thins |
There is a way of flagging a gene as non-functional in cobrapy. We are in the process of extending the annotations on objects as well and I agree that genes should have its own set of annotations. The challenge would be to find a valid MIRIAM annotation for that, otherwise you can't write them to SBML. Also groups will come to cobrapy soon so you will be able to define sets of reactions or genes that belong to a particular condition. |
I guess the flag you mentioned should be the gene attribute "gene.functional". Regarding the possibility of storing gene annotations, I've been exchanging ideas in the fbc-sbml mailing list and some people point that in a near by future thesbml fbc extension will support the storage of user custom “KeyValuePair” annotation (see section 4.6 and 4.7 https://sourceforge.net/p/sbml/code/HEAD/tree/trunk/specifications/sbml-level-3/version-1/fbc/spec/harmony2018-proposal-fbc-v3.pdf?format=raw), This feature could be use to store molecular context such as gene expression. What do you think? |
Yes that would definitely work if FBC supports it. You are right about the functional flag. That is a bit weird behavior. I will open an issue. |
Hi again,
I am creating some context-specific models (CSM) and then doing some in-silico single gene deletion experiments to find context-specific vulnerabilities. When I create a CSM I follow these steps:
reactions_confidences = create_reactions_confidences(model, gene_confidences)
corda = CORDA(model, reactions_confidences)
corda.build()
cs_model = corda.cobra_model()
The problem I've found is that the reactions included in the CSM inherit the Gene-Reaction-Protein (GPR) of the original model and thus include genes with low confidences that should not be in the model. Then, when the single gene KO experiments are conducted, some genes that should be predicted as essential in the CSM, are not. I've found that this happens because the model include other genes that code for the same reactions. For instance, the GPR of the enolase (ENO) is (HGNC:3350 or HGNC:3354 or HGNC:3353) and my gene confidences are {"HGNC:3350": 3, "HGNC:3353": -1, "HGNC:3354": -1}, then ENO should be present in the model but I guess the GPR should only include genes with high confidence, and some genes with low confidences only if they are required to enable flux through ENO. In the above example the ENO GPR in the CSM should be (HGNC:3350). In this way removing HGNC:3350 will imply a zero flux through ENO. What do you think?
I have a python-based implementation of Fastcore (I will put it in github in a near future) and I have the same problem. Thus, I trying to find a way to update the GPR after creating the CSM, so if I find some elegant way to solve this issue, I will share the idea with you.
I would like to hear your opinion on this issue.
Best regards,
Miguel
The text was updated successfully, but these errors were encountered: