我正在寻找 Gillespie 的直接方法在 Python 中的一个体面实现,就好像我自己编写算法一样,我几乎肯定我会低效地做到这一点。
有人喜欢吗?
我正在寻找 Gillespie 的直接方法在 Python 中的一个体面实现,就好像我自己编写算法一样,我几乎肯定我会低效地做到这一点。
有人喜欢吗?
我强烈推荐使用StochKit,它确实非常可靠和高效。它实现了 Gillespie 的直接方法以及最流行的优化变体。此外,它具有内置机制,可根据您的网络选择适当的模拟方案。
但是,它是用 C++ 编写的。如果你真的需要将它与 Python 集成,那应该不是问题。我在 MATLAB 脚本中广泛使用它(基本上,MATLAB 编写模拟的描述符,调用 StochKit,最后执行数据分析)。我相信你可以用 NumPy 或 SciPy 做几乎相同的事情。
(免责声明:我没有使用下面的任何包或代码。)
在 Python 中找到 Gillespie 方法的任何实现有点困难。最有成效的搜索词似乎是“tau jump”或“kinetic Monte Carlo”。这篇博文实现了 Gillespie 的算法,但不清楚它是否有效。其中一位评论者提到了 Python 中的一些其他 Gillespie/SSA 算法实现,它们解决了教科书上的问题;相关问题为本网站6.3至6.6 。
我发现 Python 中最有前途的实现是StochPy和 Python 语言绑定到COPASI。我还在SPPARKS、STOCKS和StochKit中发现了看起来很有前途的 C++ 代码;它们不是 Python,但如果它看起来对您特别有希望,也许您可以用 Python 围绕其中之一。
作为实验室的一部分,开发和维护 StochKit。我很高兴听到在以前的答案中强烈推荐它。但是,我想更新每个人。StochKit 已经有一个 python 包装器:GillesPy。
我还建议您查看 StochSS,这是一个功能齐全的建模和模拟 IDE,它使用 StochKit 并作为其模拟引擎之一。它还包括使用 python 包 PyURDME 进行空间模拟。模型构建和 3D 可视化工具(加上云计算集成)。
如果您问这个问题,您可能已经知道,Gillespie 的方法经常用于计算系统生物学。有许多提供实现的软件系统;您可能想浏览SBML 软件指南以找到其中的一些(特别是已知支持 SBML 的那些,我意识到这可能与您的需求无关)。然而,Geoff Oxberry 是正确的,与 C++ 和 Java 实现相比,Gillespie 算法的基于 Python 的实现似乎并不常见。除了 StochPy,我还知道以下基于 Python 的包(按字母顺序):
如果在您的应用程序中,您可以使用以 Python 以外的方式编码但可以用 Python 接口包装的软件,那么有
最后,如果您不需要在本地运行模拟而是可以使用 Web 服务,那么有以下选项:
这些列表仍然不完整,但希望它们会有所帮助。