Gillespie 直接方法的 Python 实现

计算科学 算法 Python 蒙特卡洛
2021-12-13 12:44:16

我正在寻找 Gillespie 的直接方法在 Python 中的一个体面实现,就好像我自己编写算法一样,我几乎肯定我会低效地做到这一点。

有人喜欢吗?

4个回答

我强烈推荐使用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我还在SPPARKSSTOCKSStochKit中发现了看起来很有前途的 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 接口包装的软件那么有

  • Cain — 核心是 C++,但它包含一个基于 Python 的接口
  • COPASI 语言绑定
  • Geoff Oxberry 在本页回复中提到的其他几个选项

最后,如果您不需要在本地运行模拟而是可以使用 Web 服务,那么有以下选项:

  • 基础
  • (模拟服务目前离线,但会回归)SBW
  • ByoDyn 的在线服务(见上面的链接)

这些列表仍然不完整,但希望它们会有所帮助。