用Python模拟分子动力学

9 投票
7 回答
7813 浏览
提问于 2025-04-15 19:56

我正在寻找一个可以用来模拟分子动力学的Python库,特别是在非平衡的情况下。我需要一个能够处理相当多分子的设置,主要是从动理论的角度来进行模拟,并且能够处理固体表面的存在。关于这些表面,我希望能够创建任意形状,并监测由于分子作用而产生的压力和其他变量。或者,如果我有能够处理这些的分子,我也可以自己添加表面部分。

有没有人知道有哪些合适的库吗?

7 个回答

2

以下程序可以用来运行分子动力学(MD)模拟:

以下Python包对于准备和分析MD轨迹非常有用:

2

Lampps和gromacs是两个非常知名的分子动力学代码。这些代码都有一些基于Python的包装工具,但我不太确定这些包装工具能提供多少功能。可能它们无法让你完全控制模拟过程。

可以在网上搜索“GromacsWrapper”或者“lammps”和“pizza.py”。

Digital material和ASE是另外两个分子动力学代码,它们提供了很多功能,但我上次查看时发现它们都比较专业。可能不支持你想要的力势。

可以搜索“digital material”和“cornell”,或者搜索“ase”和“dtu”。

给MJV的备注:普通的分子动力学代码每次只处理一个时间步,并且在每个时间步中移动所有粒子。大部分时间都花在计算每个原子的总力上。这需要遍历一对对相邻原子的列表。我认为最好的办法是用C++或Fortran来进行力的计算和一些基本操作,然后再用Python来包装这些功能。(不过用numpy矩阵看看能做到什么也是挺有趣的)

4

你有没有考虑过SimPy?SimPy是一个比较通用的离散事件模拟工具包,可能能满足你的需求。

更棒的是,分子建模工具包 (MMTK)似乎更专业一些……

我都没有用过这两个工具,但听起来很有趣。Python作为一种编程语言,在模拟软件中似乎有很好的应用前景。人们可以编写自己模型的具体细节,同时依赖这个框架来处理一些常见的逻辑,比如调度、可视化和监控等等。现在的问题是,这些工具在处理与生物模型相当的代理数量时表现如何(顺便问一下,这个“大小”指的是什么呢?)

撰写回答