1

我是 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 文档并没有找到它。

你有什么建议吗?谢谢

4

2 回答 2

3

如果没有看到整个 SBML 文件,就很难构建一组 ODE 来解决。在我的 Python 课程 ( 1 ) 中,我使用了 libSBML(作为 pypi/anaconda 包提供)用 Python 解决 SBML 文件。这里是一个将 SBML 转换为 ODE 的文件的链接,然后用 scipy 解决:

https://www.dropbox.com/s/2bfpiausejp0gd0/convert_reactions.py?dl=0

我希望这会有所帮助

于 2017-01-30T21:04:38.397 回答
0

sbml 片段有点不寻常。反应物和产物都是 P,因此反应是 P -> P。这意味着 P 的变化率为零,即

dp/dt = 0

在这种情况下,利率法是什么并不重要。

于 2019-07-18T08:13:28.623 回答