计算化学公社

标题: NAMD-xtb QM/MM interface [打印本页]

作者
Author:
fhh2626    时间: 2017-12-14 21:27
标题: NAMD-xtb QM/MM interface
本帖最后由 fhh2626 于 2017-12-14 21:29 编辑

最近无聊写了个NAMD和Grimme的xtb程序做QMMM的interface,在我自己的09年买的双核机器上达到了0.1ns/day的速度(100+QM原子),感觉xtb程序效率极高,即便QM区域很大也有可能能达到2-3天1ns的速度,有兴趣的可以测试下

NAMD-QM/MM:
NAMD做QMMM极其简单,复制一个PDB文件出来,把QM区域原子的beta列改成1,如果QM-MM之间有键相连(不推荐)的话,把连接的原子的occupancy列设成1
然后根据NAMD官网教程在config文件里面设置好其他参数(如QM程序的路径等)即可

脚本的使用方法见里面的注释
可以简单的修改write_xtbinput和read_xtboutput两个函数来连接其他QM软件

(, 下载次数 Times of downloads: 339)





作者
Author:
agent99    时间: 2017-12-15 02:27
很不错!只是“如果QM-MM之间有键相连(不推荐)”,那么对酶催化这样的体系基本没法做了,而QM/MM最重要的用途之一便是这个。当然,这是NAMD本身的问题,看来QM/MM还是CHARMm和Amber比较专业
作者
Author:
smutao    时间: 2017-12-15 09:10
这都不算啥
有空的话可以想想怎么给xTB的MD加上PBC功能  只能通过外部的interface和构建超胞来实现
不然这md功能和cp2k的相比 太鸡肋了

作者
Author:
fhh2626    时间: 2017-12-15 13:51
agent99 发表于 2017-12-15 02:27
很不错!只是“如果QM-MM之间有键相连(不推荐)”,那么对酶催化这样的体系基本没法做了,而QM/MM最重要的 ...

NAMD是支持的,只不过我没有仔细测试过。。。
作者
Author:
fhh2626    时间: 2017-12-15 14:01
smutao 发表于 2017-12-15 09:10
这都不算啥
有空的话可以想想怎么给xTB的MD加上PBC功能  只能通过外部的interface和构建超胞来实现
不然 ...

常规的QMMM很少有QM部分支持周期性的

跑半经验BOMD的话这个的确很重要,我到现在也没有找到一个满意的支持半经验BOMD的code,mopac不开mozyme太慢,cp2k支持的半经验方法太过时了,DFTB+参数太有限
作者
Author:
k64_cc    时间: 2017-12-15 14:25
fhh2626 发表于 2017-12-15 14:01
常规的QMMM很少有QM部分支持周期性的

跑半经验BOMD的话这个的确很重要,我到现在也没有找到一个满意的 ...

PBC本身也会带来误差,而且MM部分也不是决速步骤…
把盒子设得贼大,然后QM部分noPBC就很好了。
作者
Author:
小范范1989    时间: 2017-12-15 14:41
咨询一下楼主,这个NAMD是一个动力学软件是吧,连接量化软件做QM/MM计算。
这样之后,能求QM部分的频率等等吗?
谢谢指点
作者
Author:
fhh2626    时间: 2017-12-15 14:47
小范范1989 发表于 2017-12-15 14:41
咨询一下楼主,这个NAMD是一个动力学软件是吧,连接量化软件做QM/MM计算。
这样之后,能求QM部分的频率等 ...

不行,一般说的QM/MM都指的是QM/MM(MD),跑动力学模拟的

你有多大的体系想做频率计算?xtb的速度优化1000个原子左右的体系完全没问题啊,犯不着再用QM/MM了(再大的体系局部优化算法也不太合理了吧)
如果是蛋白质体系的话可以用xtb里面自带的GBSA隐性溶剂
作者
Author:
小范范1989    时间: 2017-12-15 15:09
fhh2626 发表于 2017-12-15 14:47
不行,一般说的QM/MM都指的是QM/MM(MD),跑动力学模拟的

你有多大的体系想做频率计算?xtb的速度优化1 ...

偶,这样子,谢谢老师指点。
我就是咨询一下,没接触过老师提的这个NAMD软件。
我想用QM/MM来做分子薄膜。就是QM计算一个或者几个有机分子。然后周围分子的影响用MM来考虑。
谢谢老师。
作者
Author:
fhh2626    时间: 2017-12-15 15:22
小范范1989 发表于 2017-12-15 15:09
偶,这样子,谢谢老师指点。
我就是咨询一下,没接触过老师提的这个NAMD软件。
我想用QM/MM来做分子薄 ...

做QM/MM的意义就是想得到体系的运动轨迹或者沿着某个反应坐标(如原子之间的距离等)的自由能变化
作者
Author:
abdoman    时间: 2017-12-15 18:55
不错!
作者
Author:
smutao    时间: 2017-12-15 23:00
fhh2626 发表于 2017-12-15 14:01
常规的QMMM很少有QM部分支持周期性的

跑半经验BOMD的话这个的确很重要,我到现在也没有找到一个满意的 ...

有兴趣的话可以一块搞一下
作者
Author:
fhh2626    时间: 2017-12-16 23:18
smutao 发表于 2017-12-15 23:00
有兴趣的话可以一块搞一下

我发邮件问grimme了,他说他们正在弄
作者
Author:
smutao    时间: 2017-12-17 05:36
fhh2626 发表于 2017-12-16 23:18
我发邮件问grimme了,他说他们正在弄

谢谢
作者
Author:
harrypotty18    时间: 2018-3-13 19:04
请教下楼主,能够分享下xtb的程序么?
作者
Author:
sobereva    时间: 2018-3-13 23:03
harrypotty18 发表于 2018-3-13 19:04
请教下楼主,能够分享下xtb的程序么?

直接写信找Grimme要
作者
Author:
霜晨月    时间: 2018-5-5 01:09
本帖最后由 霜晨月 于 2018-5-5 01:26 编辑

楼主你好,试用了您的脚本,但总是失败,原因是NAMD运行时总是提示
Traceback (most recent call last):
  File "/FD332/data/test-xtb/test-xtb/namd_xtb_interface.py", line 201, in <module>
    run_qmmm(sys.argv[1], useless)
  File "/FD332/data/test-xtb/test-xtb/namd_xtb_interface.py", line 188, in run_qmmm
    convert_input(directory, xtbxyz, xtbpcfile)
  File "/FD332/data/test-xtb/test-xtb/namd_xtb_interface.py", line 113, in convert_input
    element, coor, pcharge = read_namdinput(namdinput)
  File "/FD332/data/test-xtb/test-xtb/namd_xtb_interface.py", line 71, in read_namdinput
    element[line_count - 2] = atom_data[3]
IndexError: list index out of range
------------- Processor 0 Exiting: Called CmiAbort ------------
Reason: FATAL ERROR: Error running command for QM forces calculation.

Charm++ fatal error:
FATAL ERROR: Error running command for QM forces calculation.

请问是不是python脚本的其他部分还需要自行修改啊?谢谢


我的NAMD输入文件的QM部分是这样写的:
qmForces        on
qmParamPDB     "qm.pdb"
qmColumn        "beta"
qmBondColumn    "occ"  # 我的PDB里面,QM与MM区域之间没有连键
qmBaseDir  "/dev/shm/xtb_1"
qmSoftware      "custom"
qmExecPath     "/home/soft/namd2.12/namd_xtb_interface.py"
QMOutStride     1
QMPositionOutStride     1

namd_xtb_interface.py里面:
# the complete directory of xtb program
XTBDIR = r'/home/soft/xtb/xtb'
# the charge of each independent QM part
QMCHARGE = [0]

运行命令是namd2 +p6 qm.conf > qm.log



作者
Author:
fhh2626    时间: 2018-5-5 09:08
本帖最后由 fhh2626 于 2018-5-5 09:11 编辑
霜晨月 发表于 2018-5-5 01:09
楼主你好,试用了您的脚本,但总是失败,原因是NAMD运行时总是提示
Traceback (most recent call last):
...

Python本身应该不需要改啥了,你可以把跑模拟所需要的文件发给我,我在这里运行一下看看是什么问题
对了,看这个错误像是你用了老版本的namd,老版本的namd QM/MM interface有个bug,你用nightly版本的试试

作者
Author:
霜晨月    时间: 2018-5-5 09:44
fhh2626 发表于 2018-5-5 09:08
Python本身应该不需要改啥了,你可以把跑模拟所需要的文件发给我,我在这里运行一下看看是什么问题
对了 ...

您好,刚刚发到您的Gmail邮箱了,谢谢

作者
Author:
霜晨月    时间: 2018-5-5 09:52
本帖最后由 霜晨月 于 2018-5-5 09:54 编辑
fhh2626 发表于 2018-5-5 09:08
Python本身应该不需要改啥了,你可以把跑模拟所需要的文件发给我,我在这里运行一下看看是什么问题
对了 ...

这个用的就是2018-05-04 nightly版本
作者
Author:
fhh2626    时间: 2018-5-5 10:52
霜晨月 发表于 2018-5-5 09:52
这个用的就是2018-05-04 nightly版本

你qm.pdb文件缺失了标记元素类型的那一列,那一列对于常规动力学来说没什么用,但是QM/MM会用到,我把改过的文件发给你了(我只把qm部分的那一列补充上,应该正常了)

PS:我这里xtb最新版不知为何,无法读取pcharge文件,建议用老版本
作者
Author:
霜晨月    时间: 2018-5-5 13:55
本帖最后由 霜晨月 于 2018-5-5 14:19 编辑
fhh2626 发表于 2018-5-5 10:52
你qm.pdb文件缺失了标记元素类型的那一列,那一列对于常规动力学来说没什么用,但是QM/MM会用到,我把改 ...

谢谢您。用您改过的PDB文件之后,没有原来的问题了。但GFN2-XTB确实存在问题,提示找不到charge文件,所以改用老版XTB了。(老XTB居然code expired,还得改系统时间。但放到超算上总不能改系统时间吧?。。。。)

现在的新问题是:运行一开始,要么出现内存分配问题
------------- Processor 0 Exiting: Called CmiAbort ------------
Reason: FATAL ERROR: Memory allocation failed on processor 0.
Charm++ fatal error:
FATAL ERROR: Memory allocation failed on processor 0.
Aborted (core dumped)


要么就是
Segmentation fault (core dumped)
LOG文件内容:
TCL: Running for 50000 steps
Info: List of ranks running QM simulations: 0.
QMENERGY:       0         1.0000    -49050.3871    -48968.3852

Info: Writing QM charge output at step 0
Info: Writing QM position output at step 0
PRESSURE: 0 1053.28 -37.7348 26.0203 -37.7283 1250.77 154.509 25.9997 154.537 1642.65
GPRESSURE: 0 1071.8 -39.6311 32.9195 -14.7416 1267.41 231.204 108.713 89.5823 1672.21
ETITLE:      TS           BOND          ANGLE          DIHED          IMPRP               ELECT            VDW       BOUNDARY           MISC        KINETIC               TOTAL           TEMP      POTENTIAL         TOTAL3        TEMPAVG            PRESSURE      GPRESSURE         VOLUME       PRESSAVG      GPRESSAVG

QMETITLE:      TS           QMID         ENERGY  PMECORRENERGY

ENERGY:       0       841.0952      2360.0901       917.4689       215.8561        -105882.1412      8709.1101         0.0000    -48968.3852     20209.7332        -121597.1727       307.2600   -141806.9060   -121520.6904       307.2600           1315.5673      1337.1416    347830.6652      1315.5673      1337.1416

OPENING EXTENDED SYSTEM TRAJECTORY FILE
QMENERGY:       1         1.0000    -49055.1470    -48973.4483

Info: Writing QM charge output at step 1
Info: Writing QM position output at step 1
后面就没了。看上去应该是第1步算完QM之后,算MM的时候出了问题。(但第0步是正常的)


作者
Author:
pyscf    时间: 2018-7-19 19:21
问题:你的electronic embedding是怎么考虑的?xtb支持外加点电荷吗?(没有考虑的话你这个只是 mechanical embedding)
作者
Author:
fhh2626    时间: 2018-7-21 11:57
pyscf 发表于 2018-7-19 19:21
问题:你的electronic embedding是怎么考虑的?xtb支持外加点电荷吗?(没有考虑的话你这个只是 mechanical ...

支持啊
作者
Author:
pyscf    时间: 2018-7-24 04:32
我在xtb的手册里没找到 可以告诉我怎么整吗?谢谢
作者
Author:
jackieiii    时间: 2019-8-19 11:24
想问一下楼主,用NAMD做完QM/MM优化后,可以在Gaussian里面跑QM/MM计算吗?
作者
Author:
fhh2626    时间: 2019-8-19 11:54
jackieiii 发表于 2019-8-19 11:24
想问一下楼主,用NAMD做完QM/MM优化后,可以在Gaussian里面跑QM/MM计算吗?

不明白你的意思,只要你想,随时可以用NAMD做QM/MM模拟,也随时可以用Gaussian做QM/MM优化
作者
Author:
大石头    时间: 2020-1-23 01:15
楼主你好,我刚做QM-MM遇到一些问题解决不了,想请教一下。。请问可以给个联系方式吗
作者
Author:
大石头    时间: 2020-1-28 06:48
楼主您好,我在运行NAMD计算QM/MM的时候总是提示错误
TCL: Minimizing for 200 steps
Info: List of ranks running QM simulations: 0.
ERROR: Could not find QM output file!
FATAL ERROR: (unknown error): No such file or directory
请问这个大概是什么原因?
作者
Author:
tjuptz    时间: 2020-8-16 22:52
本帖最后由 tjuptz 于 2020-8-16 22:56 编辑

请问老师,这个接口  1、注释说明支持qmElecEmbed,但config不用写这个对吧?
2、支持qmChargeMode从xtb计算结果往回更新QM区电荷吗?
就是想问是否NAMD里QM/MM的config相关策略选项都支持
作者
Author:
fhh2626    时间: 2020-8-16 23:01
tjuptz 发表于 2020-8-16 22:52
请问老师,这个接口  1、注释说明支持qmElecEmbed,但config不用写这个对吧?
2、支持qmChargeMode从xtb计 ...

qmElecEmbed应该要设成on
会的,应该是都支持
作者
Author:
tjuptz    时间: 2020-8-18 08:58
fhh2626 发表于 2020-8-16 23:01
qmElecEmbed应该要设成on
会的,应该是都支持

谢谢老师,我学一下namd,感觉入门比gromacs复杂一点
作者
Author:
tjuptz    时间: 2020-11-22 14:37
本帖最后由 tjuptz 于 2020-11-22 21:05 编辑

老师您好,我在Linux下运行,报错如下
  1. Info: List of ranks running QM simulations: 0.
  2. abnormal termination of xtb
  3. Traceback (most recent call last):
  4.   File "/job/qmmmtest/namd_xtb.py", line 201, in <module>
  5.     run_qmmm(sys.argv[1], useless)
  6.   File "/job/qmmmtest/namd_xtb.py", line 191, in run_qmmm
  7.     convert_output(xtbcharges, xtbgrad, namdoutput)
  8.   File "/job/qmmmtest/namd_xtb.py", line 169, in convert_output
  9.     energy, info = read_xtboutput(xtboutput_charge, xtboutput_grad)
  10.   File "/job/qmmmtest/namd_xtb.py", line 123, in read_xtboutput
  11.     with open(charge_file, 'r') as charge:
  12. FileNotFoundError: [Errno 2] No such file or directory: '/job/qmmmtest/0/charges'
  13. FATAL ERROR: Error running command for QM forces calculation.
  14. FATAL ERROR: Error running command for QM forces calculation.
  15. [Partition 0][Node 0] End of program
复制代码
请问这是没有xtb运行没有产生chrages文件吗?
另外,我在Windows10下也安了xtb6.3.3和namd,python3.7,不过好像不行。





作者
Author:
fhh2626    时间: 2020-11-22 22:06
tjuptz 发表于 2020-11-22 14:37
老师您好,我在Linux下运行,报错如下请问这是没有xtb运行没有产生chrages文件吗?
另外,我在Windows10下 ...

像是charges文件的路径没设对,你对应找找
作者
Author:
tjuptz    时间: 2020-11-22 23:38
fhh2626 发表于 2020-11-22 22:06
像是charges文件的路径没设对,你对应找找

我是在config文件里qmbasedir   /job/qmmmtest[这里设的工作目录,也没有其他位置设定
作者
Author:
fhh2626    时间: 2020-11-23 00:03
tjuptz 发表于 2020-11-22 23:38
我是在config文件里qmbasedir   /job/qmmmtest[这里设的工作目录,也没有其他位置设定

你试试这里的最新版本
https://github.com/fhh2626/NAMD-xtb-QMMM-interface
作者
Author:
tjuptz    时间: 2020-11-23 21:24
fhh2626 发表于 2020-11-23 00:03
你试试这里的最新版本
https://github.com/fhh2626/NAMD-xtb-QMMM-interface

最新版可以了,谢谢老师。应该是xtb调用命令的问题
作者
Author:
Chris——szk    时间: 2021-8-12 12:26
老师您好,我想问一下为什么会一直出现如下报错呢,经过检验文件脚本路径上的设置应该没有问题
Info: CREATING 763 COMPUTE OBJECTS
Info: Startup phase 13 took 0.0010412 s, 67.0078 MB of memory in use
Info: Startup phase 14 took 4.4e-05 s, 67.0078 MB of memory in use
Info: Startup phase 15 took 6.36e-05 s, 71.6992 MB of memory in use
Info: Finished startup at 0.501107 s, 71.6992 MB of memory in use

TCL: Minimizing for 100 steps
Info: List of ranks running QM simulations: 0.
sh: 1: /home/szk/namd_xtb.py: not found
FATAL ERROR: Error running command for QM forces calculation.
FATAL ERROR: Error running command for QM forces calculation.
[Partition 0][Node 0] End of program

作者
Author:
tjuptz    时间: 2021-12-4 22:16
本帖最后由 tjuptz 于 2021-12-4 22:37 编辑

fu老师,我最近学习用namd做模拟,它的configuration文件中可以写protocol,我想利用psfgen在模拟中间删减原子并修改连接关系,好像psfgen自己并不带修改连接关系的command,请问能不用VMD直接在psfgen里实现类似VMD的topotools插件中修改拓扑的功能嘛?如果实在还是调用VMD方便的话,如何在conf文件中调用VMD脚本呢?不用bash shell是否可行?

作者
Author:
fhh2626    时间: 2021-12-7 10:05
tjuptz 发表于 2021-12-4 22:16
fu老师,我最近学习用namd做模拟,它的configuration文件中可以写protocol,我想利用psfgen在模拟中间删减 ...

不太懂你的意思,做好PSF再开始模拟有什么阻碍吗
作者
Author:
tjuptz    时间: 2021-12-7 10:23
fhh2626 发表于 2021-12-7 10:05
不太懂你的意思,做好PSF再开始模拟有什么阻碍吗

老师,我的意思是想比如模拟2ns,中间停下来修改psf里的连接关系,之后再跑2ns,如此循环。这样可以实现交联类似反应的过程。我目前学习了下好像psfgen没有直接修改键连关系的命令。需要自己写脚本定义这样的命令吗
作者
Author:
fhh2626    时间: 2021-12-7 15:56
tjuptz 发表于 2021-12-7 10:23
老师,我的意思是想比如模拟2ns,中间停下来修改psf里的连接关系,之后再跑2ns,如此循环。这样可以实现 ...

psfgen应该是不能这样做,断裂一个键不仅仅和这个键有关,相连的各种键的参数甚至原子的非键参数都要变,只有用QM/MM做比较合理
作者
Author:
tjuptz    时间: 2021-12-7 22:31
fhh2626 发表于 2021-12-7 15:56
psfgen应该是不能这样做,断裂一个键不仅仅和这个键有关,相连的各种键的参数甚至原子的非键参数都要变, ...

好的,谢谢老师。另外请问下namd里面哪种热浴方式可以像gromacs 一样分组控温啊,我看手册没找到
作者
Author:
fhh2626    时间: 2021-12-9 13:22
tjuptz 发表于 2021-12-7 22:31
好的,谢谢老师。另外请问下namd里面哪种热浴方式可以像gromacs 一样分组控温啊,我看手册没找到

应该是不行的
作者
Author:
tjuptz    时间: 2021-12-9 14:15
fhh2626 发表于 2021-12-9 13:22
应该是不行的

谢谢您,这个还蛮重要的,期待后续加入该功能。
作者
Author:
CasDonkin    时间: 2024-4-16 10:15
付老师您好,我最近在使用您的NAMD/xtb interface在QM(GFN2-xtb)/MM(Charmm36m)级别下计算酶催化过程,根据前人报道,其中一步由一个亲核进攻和一个质子转移协同发生,请问colvars是否能正确地在QM/MM中处理2个CV,描绘二维反应自由能面吗?在使用NAMD作为QM/MM的interface时,1维的PMF比较常见,在此请教付老师,提前向您表示感谢
作者
Author:
fhh2626    时间: 2024-4-16 14:24
CasDonkin 发表于 2024-4-16 10:15
付老师您好,我最近在使用您的NAMD/xtb interface在QM(GFN2-xtb)/MM(Charmm36m)级别下计算酶催化过程,根据 ...

可以的。Colvars是描述几何/集合变量的方法,和使用QM还是MM本身不直接相关
作者
Author:
CasDonkin    时间: 2024-7-25 18:17
付老师您好,我最近打算尝试使用您的Interface在QM(GFN2-xtb)/MM(Charmm36m)级别下计算活性位点含过渡金属的酶催化过程,类似于下文:https://doi.org/10.1021/acs.jpcb.1c10200

我在阅读了您的脚本后,发现您的脚本中并未通过设置--uhf 选项加入单电子数的设置。根据我的理解,我是否可以在脚本中run_qmmm()函数部分的subprocess.call([XTBDIR, xtbxyz, '--grad', '--chrg', str(QMCHARGE[qmpart]), '--gfn', str(GFNVER)], stdout = outputRedirect, stderr = outputRedirect) 中加入'---uhf ' 选项即可运行计算,而无需其他改动?(如对六重态Mn2+设置为uhf = 5,对于单重态和三重态的Ni2+分别设置uhf为0或2)

提前向您表示感谢

作者
Author:
fhh2626    时间: 2024-7-28 18:06
CasDonkin 发表于 2024-7-25 18:17
付老师您好,我最近打算尝试使用您的Interface在QM(GFN2-xtb)/MM(Charmm36m)级别下计算活性位点含过渡金属 ...

可以的
作者
Author:
po390    时间: 2024-9-21 17:15
付老师,您好,您的namd-xtb脚本非常好用帮我解决了不少问题,非常感谢!
不过使用中我遇到一个问题,发现无论xtb都是单核在跑(虽然对我的单核的速度也够用了),namd如何可以多核去调用xtb?
NAMD2.14和3.0都试过,都是单核去调用xtb,无法多核调用(设置多核环境变量都无效果).
其实,之前在用namd提供的mopac interface同样存在类似的问题.
这个是否是NAMD本身的限制?
作者
Author:
fhh2626    时间: 2024-9-21 21:12
po390 发表于 2024-9-21 17:15
付老师,您好,您的namd-xtb脚本非常好用帮我解决了不少问题,非常感谢!
不过使用中我遇到一个问题,发现无论x ...

你是不是看错了,默认xtb使用所有的核心跑的(top可以看到xtb线程占用超过100%的CPU),要设置
export OMP_NUM_THREADS=<ncores>,1
环境变量才能更改核心数。
作者
Author:
po390    时间: 2024-9-22 10:52
fhh2626 发表于 2024-9-21 21:12
你是不是看错了,默认xtb使用所有的核心跑的(top可以看到xtb线程占用超过100%的CPU),要设置
export OMP ...

谢谢老师的提醒!
之前已经设置过,但还是无法多核运行xtb,
不过老师的话提醒了我,我发现是我个人使用习惯的问题,我在运行namd时加上+setcpuaffinity 导致运行时xtb无法多核,去掉之后就可以了,
不过为啥+setcpuaffinity的影响会这里?




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3