An integrated visual environment for metabolic modeling with common methods such as FBA, FVA and Elementary Flux Modes, and advanced features such as thermodynamic methods, extended Minimal Cut Sets, OptKnock, RobustKnock, OptCouple and more!
Up to now, life seems bleak. Something is out of place, right? Ok, you go to parties and other events. But afterwards, everything feels like before. This nasty feeling that there is a hole in your soul. No problem, you say, that can be fixed! So you travel around the globe. But again, after everything that you've experienced, your soul feels empty. Whatever you do, something is missing.
But now, this something has arrived, finally, your life is complete, at last!
Introducing...
Yes, it has arrived! OptMDFpathway in its basic form is now included inside CNApy 🎇🎆
Wow! So how does this major achievement work internally?
Programmatically, I wrote a new "class interface" for StrainDesign, currently, you can find it as "sd_class_interface.py" in CNApy but it will likely be released as a separate package in the future. This interface allows one to use StrainDesign in an object-oriented and strictly typed (as far as possible with Python) manner.
Then, I implemented OptMDFpathway using this class interface and with indicator constraints (contrary to prior Big-M-based implementations). It can be found as "sd_ci_optmdfpathway.py", which, again, will be likely part of the future new package. In fact, this is an OptMDFpathway implementation for models with irreversible reactions. Therefore, if the CNApy model contains reversible reactions, they are split first internally but without any effect on the user's model after the calculation.
Even more wow! And how do I use it in CNApy?
You can find all options for starting OptMDFpathway and loading its relevant information in the marked new "Analysis" tab menu entries:
Before you can start OptMDFpathway for a CNApy project, you need the following data:
Gibbs free energies (dG'°) in kJ/mol: At least one reaction needs this, otherwise, OptMDFpathway cannot work. You can add the dG'° either A) manually by adding an annotation with the key 'dG0' and the dG'° as value, B) loading a JSON with the relevant data as given in the appendix of this message or C) loading an XLSX with the data as given in the test suite later. You an also set an optional dG'° uncertainty with the key 'dG0_uncertainty', which can also be included in the JSON and XLSX files.
Concentration ranges in M: Every metabolite of the project needs a minimal (Cmin) and maximal (Cmax) concentration, otherwise, OptMDFpathway cannot work. You can add the concentration ranges either A) manually by adding annotations with the key 'Cmin' and 'Cmax' and the associated concentration as value, B) loading a JSON with the relevant data as given in the appendix of this message or C) loading an XLSX with the data as given in the test suite later. Using options B and C, you can easily set a concentration for all metabolites by defining a 'DEFAULT' concentration range.
Note that whenever you load a dG'° or concentration ranges file, these values will completely replace all values beforehand. E.g., if a dG'° was set for a reaction beforehand but it is not set in the file, the reaction will not have a dG'° afterwards.
Furthermore, while XLSX files need a title in their first line, the text content of these captions is actually irrelevant.
Then, you can start the calculation which can be performed with all StrainDesign-supported solvers, just keep in mind that with GLPK, the indicator constraints will be transformed into Big-M constraints as indicators are not supported by GLPK.
I'm so hyped now! How can I test it?
Attached, you may find (as zipped version of them)...
Welcome to a new world 🌍🌎🌏
Up to now, life seems bleak. Something is out of place, right? Ok, you go to parties and other events. But afterwards, everything feels like before. This nasty feeling that there is a hole in your soul. No problem, you say, that can be fixed! So you travel around the globe. But again, after everything that you've experienced, your soul feels empty. Whatever you do, something is missing.
But now, this something has arrived, finally, your life is complete, at last!
Introducing...
Yes, it has arrived! OptMDFpathway in its basic form is now included inside CNApy 🎇🎆
Wow! So how does this major achievement work internally?
Programmatically, I wrote a new "class interface" for StrainDesign, currently, you can find it as "sd_class_interface.py" in CNApy but it will likely be released as a separate package in the future. This interface allows one to use StrainDesign in an object-oriented and strictly typed (as far as possible with Python) manner.
Then, I implemented OptMDFpathway using this class interface and with indicator constraints (contrary to prior Big-M-based implementations). It can be found as "sd_ci_optmdfpathway.py", which, again, will be likely part of the future new package. In fact, this is an OptMDFpathway implementation for models with irreversible reactions. Therefore, if the CNApy model contains reversible reactions, they are split first internally but without any effect on the user's model after the calculation.
Even more wow! And how do I use it in CNApy?
You can find all options for starting OptMDFpathway and loading its relevant information in the marked new "Analysis" tab menu entries:
Before you can start OptMDFpathway for a CNApy project, you need the following data:
Gibbs free energies (dG'°) in kJ/mol: At least one reaction needs this, otherwise, OptMDFpathway cannot work. You can add the dG'° either A) manually by adding an annotation with the key 'dG0' and the dG'° as value, B) loading a JSON with the relevant data as given in the appendix of this message or C) loading an XLSX with the data as given in the test suite later. You an also set an optional dG'° uncertainty with the key 'dG0_uncertainty', which can also be included in the JSON and XLSX files.
Concentration ranges in M: Every metabolite of the project needs a minimal (Cmin) and maximal (Cmax) concentration, otherwise, OptMDFpathway cannot work. You can add the concentration ranges either A) manually by adding annotations with the key 'Cmin' and 'Cmax' and the associated concentration as value, B) loading a JSON with the relevant data as given in the appendix of this message or C) loading an XLSX with the data as given in the test suite later. Using options B and C, you can easily set a concentration for all metabolites by defining a 'DEFAULT' concentration range.
Note that whenever you load a dG'° or concentration ranges file, these values will completely replace all values beforehand. E.g., if a dG'° was set for a reaction beforehand but it is not set in the file, the reaction will not have a dG'° afterwards.
Furthermore, while XLSX files need a title in their first line, the text content of these captions is actually irrelevant.
Then, you can start the calculation which can be performed with all StrainDesign-supported solvers, just keep in mind that with GLPK, the indicator constraints will be transformed into Big-M constraints as indicators are not supported by GLPK.
I'm so hyped now! How can I test it?
Attached, you may find (as zipped version of them)...
I want to exploit the hype generated by this pull request! Will there be a VisualOptMDF coin? Can I buy the Visual OptMDFpathway logo as NFT?
No.