|
本帖最后由 fhh2626 于 2020-6-3 22:34 编辑
MUltidimensional Least Energy pathway (MULE)的原理其实就是Dijkstra算法,属于贪心算法的一种,具体数学内容就不多扯了。和其他软件相比,MULE有几个优点:
• 得到的一定是理论严谨的最低自由能路径,而其他方法,比如LFEP和String会陷入局部极小值
• 可以处理周期性反应坐标(比如二面角)
• 可以处理任意维度,现在网上能找到的大多数代码都只能处理二维路径
• 可以施加约束,从而实现A*算法,或者寻找第2/3/N条最低自由能路径,亦或者寻找经过某个点的最低自由能路径
MULE的windows主程序/源代码/示例文件都在压缩包里面提供,linux和mac用户需要自己编译mule.cpp文件
使用MULE需要写一个config文件,然后执行
./mule.exe config
软件就会自动生成一个.traj和一个.energy文件,分别对应路径和沿路径的能量/自由能变化
/example1文件夹中给出了config文件的写法
[mule]
directory = nanma_ref.pmf
initial = -156, 160
end = 78, -58
pbc = 1, 1
软件会读取执行目录的nanma_ref.pmf文件,因为这个文件是NAMD生成的,软件会自己读取里面记录的上下界和格点精度等信息,如果给出的文件是普通格式的话需要人为在config文件中提供这些信息。剩下的三行分别表示路径从(-156, 160)开始,到(78, -58)为止,反应坐标的两个维度都是周期性的,如果非周期性的反应坐标则将pbc设为0。找出来的路径如图中左上所示。
在/example2文件夹中给出了找这个文件中第2低的反应路径的例子,config文件内容如下:
[mule]
directory = nanma_ref.pmf
initial = -156, 160
end = 78, -58
lowerboundary = -180, -180
upperboundary = 178, 178
width = 2, 2
pbc = 1, 1
writeExploredPoints = 1
target = 136, -32, -0.1, -0.1
这个例子中我提供了一个普通dat格式的文件,所以需要手动设置上下界和格点精度(lowerboundary, upperboundary and width),writeExploredPoints选项设为1会让程序输出探索过的所有点,一般来说设计A*算法时有些用,这里没用,不去管它。值得解释的是最后一行,这一行施加了一个Manhattan约束,具体数学公式不多说了。这里代表采用(0.1, 0.1)的力常数将探索过程推离(136, -32),其中(136, -32)是example1中得到的过渡态。这个约束会使得算法找到一条较为远离上一步中过渡态的路径,如右上子图所示
如果我们看这个自由能图,第一反应的话一定是找到从中间走的这个路径,example3给出了寻找这条路径的方法
[mule]
directory = nanma_ref.pmf
initial = -156, 160
end = 78, -58
lowerboundary = -180, -180
upperboundary = 178, 178
width = 2, 2
pbc = 1, 1
writeExploredPoints = 1
target = 0, 100, 0.1, 0.1
其他参数都一样,最后一行代表采用(0.1, 0.1)的力常数将探索过程拉向(0, 100)这个点(接近于这条路径的过渡态),得到的路径为左下图
右下的图对比了三条路径的自由能变化,可以看见第一条路径明显最有利
Reference: Fu H., Chen H, Wang X, et al. Finding an Optimal Pathway on a Multidimensional Free-Energy Landscape. J. Chem. Inf. Model. 2020. doi:10.1021/acs.jcim.0c00279
MULE.zip
(1.68 MB, 下载次数 Times of downloads: 177)
|
-
评分 Rate
-
查看全部评分 View all ratings
|