我是sbml的新手,我真的很困惑。
我想用Runge Kutta解决一个ODE。 ODE存储在SBML文件中。
该文件的一部分如下所示
<listOfReactions>
<reaction id="growth_P" reversible="false" fast="false">
<listOfReactants>
<speciesReference species="P" constant="false"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="P" constant="false"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<times/>
<ci> Rp </ci>
<ci> P </ci>
</apply>
</math>
<listOfLocalParameters>
<localParameter id="Rp" value="1" units="per_second"/>
</listOfLocalParameters>
</kineticLaw>
</reaction>
....
</listOfReactions>
这应该描述反应dP / dt = Rp * P
这就是我的问题。我不知道如何将sbml公式转换为程序可以处理的公式(python / C++,无论如何)
所以最好的选择是像
Product = evaluate_sbml_formula(formula,value_of_reactant)
我阅读了sbml文档,但没有找到。
有什么建议吗?
谢谢
最佳答案
如果没有看到整个SBML文件,就很难构造一组要解决的ODE。在我的python类(class)(1)中,我使用libSBML(可作为pypi / anaconda软件包提供)来使用python解决SBML文件。这是指向将SBML转换为ODE并随后通过scipy解决的文件的链接:
https://www.dropbox.com/s/2bfpiausejp0gd0/convert_reactions.py?dl=0
我希望有帮助