计算化学公社

 找回密码 Forget password
 注册 Register
Views: 18625|回复 Reply: 27
打印 Print 上一主题 Last thread 下一主题 Next thread

[程序/脚本开发] 使用MULE在势能面/自由能面上寻找最低反应路径

[复制链接 Copy URL]

1149

帖子

6

威望

6627

eV
积分
7896

Level 6 (一方通行)

本帖最后由 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: 303)







1.jpg (428.77 KB, 下载次数 Times of downloads: 184)

1.jpg

评分 Rate

参与人数
Participants 10
威望 +1 eV +33 收起 理由
Reason
ysss + 2 谢谢分享
iota + 4 牛!
hebrewsnabla + 3 好物!
snljty2 + 5 高级!
wzkchem5 + 5
丁越 + 5 好物!
壹零壹室掃地僧 + 2 赞!
sobereva + 1
ene + 5
minishotgun + 2 赞!

查看全部评分 View all ratings

553

帖子

0

威望

3324

eV
积分
3877

Level 5 (御坂)

2#
发表于 Post on 2021-2-15 20:10:07 | 只看该作者 Only view this author
我说这项目为什么看着如此眼熟,原来三作是我本科室友……

218

帖子

3

威望

4633

eV
积分
4911

Level 6 (一方通行)

3#
发表于 Post on 2023-2-10 17:45:34 | 只看该作者 Only view this author
三维势能面可以用这个程序找到极小值点并搜索到连接两个点之间的路径吗?
Monte Carlo

1149

帖子

6

威望

6627

eV
积分
7896

Level 6 (一方通行)

4#
 楼主 Author| 发表于 Post on 2023-2-13 11:38:39 | 只看该作者 Only view this author
youyno 发表于 2023-2-10 17:45
三维势能面可以用这个程序找到极小值点并搜索到连接两个点之间的路径吗?

可以

86

帖子

0

威望

984

eV
积分
1070

Level 4 (黑子)

5#
发表于 Post on 2023-2-15 11:31:34 | 只看该作者 Only view this author
请问如何在寻找路径前确定极小点位置?
man

218

帖子

3

威望

4633

eV
积分
4911

Level 6 (一方通行)

6#
发表于 Post on 2023-2-15 19:54:01 | 只看该作者 Only view this author
本帖最后由 youyno 于 2023-2-15 19:59 编辑
elpa 发表于 2023-2-15 11:31
请问如何在寻找路径前确定极小点位置?

同问,pmf文件是不是就是坐标和自由能信息?
Monte Carlo

218

帖子

3

威望

4633

eV
积分
4911

Level 6 (一方通行)

7#
发表于 Post on 2023-2-15 20:08:59 | 只看该作者 Only view this author
将plumed生成的自由能文件编辑成pmf文件,试了下还是不行,报This is not an NAMD PMF file!

config

143 Bytes, 下载次数 Times of downloads: 7

nanma_ref.pmf

5.17 MB, 下载次数 Times of downloads: 12

Monte Carlo

1149

帖子

6

威望

6627

eV
积分
7896

Level 6 (一方通行)

8#
 楼主 Author| 发表于 Post on 2023-2-16 10:37:36 | 只看该作者 Only view this author
youyno 发表于 2023-2-15 20:08
将plumed生成的自由能文件编辑成pmf文件,试了下还是不行,报This is not an NAMD PMF file!

看example2。如果是NAMD文件程序会自动读取边界等信息,如果不是的话需要在config文件里面手动提供

86

帖子

0

威望

984

eV
积分
1070

Level 4 (黑子)

9#
发表于 Post on 2023-2-16 15:52:11 | 只看该作者 Only view this author
youyno 发表于 2023-2-15 20:08
将plumed生成的自由能文件编辑成pmf文件,试了下还是不行,报This is not an NAMD PMF file!

我也是plumed生成的fes.dat自由能文件,问题是如何转换成pmf文件?
man

218

帖子

3

威望

4633

eV
积分
4911

Level 6 (一方通行)

10#
发表于 Post on 2023-2-16 16:46:23 | 只看该作者 Only view this author
elpa 发表于 2023-2-16 15:52
我也是plumed生成的fes.dat自由能文件,问题是如何转换成pmf文件?

把最后几列不需要的删掉后再改个后缀就行,关键是怎么确定极小值点
Monte Carlo

86

帖子

0

威望

984

eV
积分
1070

Level 4 (黑子)

11#
发表于 Post on 2023-2-16 19:53:35 | 只看该作者 Only view this author
youyno 发表于 2023-2-16 16:46
把最后几列不需要的删掉后再改个后缀就行,关键是怎么确定极小值点

我用这个http://www.metadynamics.cz/metadynminer/index.html#par3.1 找的极小值,函数fesminima() 可以。
man

86

帖子

0

威望

984

eV
积分
1070

Level 4 (黑子)

12#
发表于 Post on 2023-2-16 19:58:19 | 只看该作者 Only view this author
youyno 发表于 2023-2-16 16:46
把最后几列不需要的删掉后再改个后缀就行,关键是怎么确定极小值点

最后几列具体是哪几列?应该一共5列,最后两列是微分。是不是只留前三列?能不能给我一个参考示例,fes.dat转pmf。
man

3

帖子

0

威望

21

eV
积分
24

Level 1 能力者

13#
发表于 Post on 2024-1-22 20:50:18 | 只看该作者 Only view this author
您好,我的自由能并不是填满整个空间,mule在寻找图中箭头起点到终点的路径时,会把没有数据得空白部分认为是0,得到经过空白部分的路径,但实际上这里是没有数据的,这该如何解决呢?

202401222047504485..png (142.37 KB, 下载次数 Times of downloads: 143)

202401222047504485..png

1149

帖子

6

威望

6627

eV
积分
7896

Level 6 (一方通行)

14#
 楼主 Author| 发表于 Post on 2024-1-26 09:36:47 | 只看该作者 Only view this author
mz121 发表于 2024-1-22 20:50
您好,我的自由能并不是填满整个空间,mule在寻找图中箭头起点到终点的路径时,会把没有数据得空白部分认为 ...

你写个脚本,让自由能面填满整个空间,没有值的地方都填个很大的数就可以(Colvars和Plumed输出的自由能面应该都是有值的,你这个怎么弄出来的)。

1149

帖子

6

威望

6627

eV
积分
7896

Level 6 (一方通行)

15#
 楼主 Author| 发表于 Post on 2024-1-26 09:38:48 | 只看该作者 Only view this author
youyno 发表于 2023-2-16 16:46
把最后几列不需要的删掉后再改个后缀就行,关键是怎么确定极小值点

可以写个简单的贪心算法程序找,另外即使不选极小值点,MULE找出来的路径肯定也会经过附近的极小值点,直接从输出文件中找就行

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-13 05:37 , Processed in 0.380622 second(s), 32 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list