计算化学公社

标题: 使用VMD中的topo模块构建 .data, .psf, .top文件 [打印本页]

作者
Author:
ruanyang    时间: 2016-12-21 10:16
标题: 使用VMD中的topo模块构建 .data, .psf, .top文件
本帖子的目的是使用 topo 来生成lammps,NAMD,Gromacs中比较难搞的  原子之间的bond,angle,dihedral等信息!

注意:生成的 top 文件不准确,有很多地方需要修改,请各位注意!(可用于lammps输出.trr文件,使用gromacs中的分析程序进行数据分析时使用,因为在使用gromacs中内嵌的分析程序时一般需要提供.tpr文件,用于生成.tpr文件所用)

我这里以水分子为例进行说明,阅读本帖之前请自行了解.tcl文件或者是参考  Sob老师发的帖子http://bbs.keinsci.com/forum.php ... 7&highlight=tcl

1 输入文件:water.pdb
2 脚本文件:water.tcl

打开VMD(版本1.9.2),切换到 Extensions/TK Console部分,保证water.tcl, water.pdb 文件在 当前的操作目录下,比如在桌面位置

>> source water.tcl
几秒之后,会生成.psf, .data, .top文件
对于生成的文件,需要自己检查!(一定要养成 check 的好习惯)

!! source之后 VMD一开始会卡住,请不要关闭VMD,等几分钟即可,可能是程序写的不够简洁所致(个人能力有限

我们来查看一下 water.tcl 文件

#  load .pdb file
     mol load pdb water.pdb
       
# set charge of water       
     set a [atomselect top "name OW"]
             $a set charge -0.8476
         $a delete

     set b [atomselect top "name HW1 or name HW2"]
         $b set charge 0.4238
     $b delete                 
         
# require topotools
     package require topotools         
         
         topo clearbonds
         
# selecte atom in water molecules
     set sel [atomselect top "name OW HW1 HW2"]
     set ids [$sel get index]

# foreach atoms in $sel

     foreach {id1 id2 id3} $ids {
            topo addbond $id1 $id2;        # add bond in OW-HW1
            topo addbond $id1 $id3;        # add bond in OW-HW2
                topo addangle $id2 $id1 $id3;  # add angle in HW1-OW-HW2
         }

         mol reanalyze $sel
     topo   retypebonds   $sel
         topo   retypeangles  $sel
         
         
         set name water
         animate write pdb $name\.pdb
         animate write psf $name\.psf
         topo writegmxtop $name\.top
         topo writelammpsdata $name\.data full


第一步是:加载构型文件
第二步是:赋予相应原子的信息,比如 mass,charge, name , atom name, resname等
第三步是:加载 topo模块
第四步是:设定 bond,angle等信息(可省),使用下面命令代替
                  topo guessbonds
                  topo guessangles
                  topo guessdihedrals
                  topo guessimpropers
第四步输出文件

建议自行查看 topo的help文件信息


作者
Author:
jackie    时间: 2017-2-11 18:56
本帖最后由 jackie 于 2017-2-11 18:57 编辑

thank u for sharing。感觉这个对lammps使用的data文件的生成有非常大的帮助。我也是从你的分享中了解并学习了Tcl脚本语言,并且想在你的脚本基础上进行一些修改。只是这里对你写的“
     set sel [atomselect top "name OW HW1 HW2"]
     set ids [$sel get index]

这一部分没搞明白,想请教一下这两个设置变量的命令中的两组参数[atomselect top "name OW HW1 HW2"]和[$sel get index]应怎样去理解?这里的top get index是命令还是变量 我没有查到?

作者
Author:
sobereva    时间: 2017-2-12 02:23
jackie 发表于 2017-2-11 18:56
thank u for sharing。感觉这个对lammps使用的data文件的生成有非常大的帮助。我也是从你的分享中了解并学 ...

你看了VMD手册就明白了。这都是VMD内部定义的
作者
Author:
jackie    时间: 2017-2-12 12:58
本帖最后由 jackie 于 2017-2-12 13:01 编辑

老师,1l2y.tcl是我基于上面写好的water.tcl脚本又加了一些dihedral和improper等信息最终想生成lammps所用的data文件。但是在运行source 1l2y.tcl时还是有问题,且在vmd窗口显示的构型也不对。老师请您帮我看一下,构型文件已上传,修改的1l2y.tcl脚本内容如下(无法上传):

#  load .pdb file
     mol load pdb 1l2y.pdb                 

# set charge all atoms as 0 for my work
        set allatoms [atomselect top all]
         $allatoms set charge 0.0  
         $allatoms delete
         
# require topotools
         package require topotools                  
         topo clearbonds
         topo clearangles
         topo cleardihedrals
         topo clearimpropers
         
# select atom in 1l2y molecule
     set sel [atomselect top all]
     set ids [$sel get index]
   
# foreach atoms in $sel

     foreach {id1 id2 id3 id4} $ids {
            topo addbond $id1 $id2;        
#            topo addbond $id2 $id3;        
#            topo addbond $id3 $id4;        
            topo addangle $id1 $id2 $id3;  
#            topo addangle $id2 $id3 $id4;  
            topo adddihedral $id1 $id2 $id3 $id4;   
            topo addimproper $id1 $id2 $id3 $id4;   #problem not sure 这块添加的键长、键角、二面角和improper角信息不知对不对
         }

         mol    reanalyze     $sel      ## Re-analyze structure after changes
         topo   retypebonds   $sel      ## resets all bond types.
         topo   retypeangles  $sel      ## resets all angle types.
         topo   retypedihedrals  $sel      ## resets all dihedral types.
         topo   retypeimpropers  $sel      ## resets all improper types.

#set all definitions

                  topo guessbonds
                  topo guessangles
                  topo guessdihedrals
                  topo guessimpropers         
         
         set name 1l2y                   ## set filename as 1l2y
         animate write pdb $name\.pdb
         topo writelammpsdata $name\.data full  ## write lammps data file
         
         
         
作者
Author:
ruanyang    时间: 2017-2-12 17:20
本帖最后由 ruanyang 于 2017-2-12 17:23 编辑
jackie 发表于 2017-2-12 12:58
老师,1l2y.tcl是我基于上面写好的water.tcl脚本又加了一些dihedral和improper等信息最终想生成lammps所用 ...

你试试这个脚本看看 (, 下载次数 Times of downloads: 88)

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

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

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





我的建议:如果是使用lammps做蛋白方面的研究的话,可以使用lammps/tools中的脚本将 amber,charmm形式的文件直接转换成lammps需要的.data文件不需要使用VMD

作者
Author:
jackie    时间: 2017-2-13 19:08
没想到没有那么复杂:)谢谢你。那如你所说可以使用lammps里的amber2lmp和ch2lmp工具可以转换,您可不可以用amber给我举个例子,都使用什么格式的输入文件,执行的命令是什么?因为最近也是才开始学习lammps,希望能加快一点学习的进度,向您请教一下,谢谢你
作者
Author:
阳光下的尘    时间: 2019-3-17 15:41
谢谢分享!请问这个water.pdb文件是通过什么生成的?
作者
Author:
李佳佳    时间: 2020-1-10 10:22
您好,很感谢您的分享,我是照着您的方法来弄的,编写了一个tcl脚本,在vmd中运行也得到了data文件,但为什么有的键会缺失呢?因为在原pdb文件中有756个键,但运行tcl脚本后生成的data文件里只有660个键。
作者
Author:
tjuptz    时间: 2020-2-3 15:51
李佳佳 发表于 2020-1-10 10:22
您好,很感谢您的分享,我是照着您的方法来弄的,编写了一个tcl脚本,在vmd中运行也得到了data文件,但为什 ...

vmd读pdb是根据距离规则判断成键的,应该是有的距离超过了判断阈值
作者
Author:
李佳佳    时间: 2020-2-3 20:56
tjuptz 发表于 2020-2-3 15:51
vmd读pdb是根据距离规则判断成键的,应该是有的距离超过了判断阈值

好的,非常感谢
作者
Author:
vimalakirti_lee    时间: 2020-12-8 10:26
请问topotool可以输出data文件中的coeffs参数(如bond coeffts)吗?想通过topotool拿到成键关系(如1类成键是哪两种原子成键的),但是发现用retypebond之后成键类型的编号改变了,有没有不改变成键类型编号就能获得每种成键类型包括哪些成键原子类型的方式呢?
作者
Author:
爱模拟的bao    时间: 2021-3-2 19:29
我输出的数据都是缺少键角类型啥的?
作者
Author:
爱模拟的bao    时间: 2021-3-2 19:51
vimalakirti_lee 发表于 2020-12-8 10:26
请问topotool可以输出data文件中的coeffs参数(如bond coeffts)吗?想通过topotool拿到成键关系(如1类成 ...

在吗?想问下你做那个tcl脚本定义了键角啥的吗?
作者
Author:
Lacrimosa    时间: 2021-3-3 11:30
爱模拟的bao 发表于 2021-3-2 19:51
在吗?想问下你做那个tcl脚本定义了键角啥的吗?

你可以试试topo guessangles,不行的话就使用topo addangle自己去定义键角,示例在1楼和4楼给出了。
作者
Author:
Lacrimosa    时间: 2021-3-3 11:58
vimalakirti_lee 发表于 2020-12-8 10:26
请问topotool可以输出data文件中的coeffs参数(如bond coeffts)吗?想通过topotool拿到成键关系(如1类成 ...

coeffs参数需要自己添加进去,
bondtype的编号是可以自己设定的addbond $id1 $id2 -bondtype 1
其他的参数如下:
addangle <id1> <id2> <id3> [<type>]
add(dihedral|improper) <id1> <id2> <id3> <id4> [<type>]
作者
Author:
vimalakirti_lee    时间: 2021-3-10 11:47
Lacrimosa 发表于 2021-3-3 11:58
coeffs参数需要自己添加进去,
bondtype的编号是可以自己设定的addbond $id1 $id2 -bondtype 1
其他的 ...

谢谢Lacrimosa,我试试~
作者
Author:
vimalakirti_lee    时间: 2021-3-10 11:48
爱模拟的bao 发表于 2021-3-2 19:51
在吗?想问下你做那个tcl脚本定义了键角啥的吗?

看14楼哈~
作者
Author:
shengcan    时间: 2021-3-17 11:31
老师们,用此方法生成data文件的时候,是不是都得删除原来的键以及二面角等拓扑信息,重新赋予?那这样我原来的结构不就没了么。(我是聚合物交联模型,交联度得满足一定比例)
作者
Author:
Lacrimosa    时间: 2021-3-17 12:09
shengcan 发表于 2021-3-17 11:31
老师们,用此方法生成data文件的时候,是不是都得删除原来的键以及二面角等拓扑信息,重新赋予?那这样我原 ...

聚合物可能直接用guessbonds比较好
作者
Author:
luyao    时间: 2021-9-16 15:52
jackie 发表于 2017-2-13 19:08
没想到没有那么复杂:)谢谢你。那如你所说可以使用lammps里的amber2lmp和ch2lmp工具可以转换,您可不可以 ...

您好老师,能向您请教一下amber文件怎么转化为lammps能识别的格式吗?是将amber2lmp编译后就可以把prmtop文件转化成lammps可识别的形式了吗?
作者
Author:
wn2022    时间: 2022-6-8 17:01
为啥我重复water.pdb 这个案例不成功呢?一直报如图片错误。请老师看看什么原因呢?
作者
Author:
sigusigu    时间: 2022-12-1 16:18
wn2022 发表于 2022-6-8 17:01
**** 作者被禁止或删除 内容自动屏蔽 ****

要么是你没有用管理员权限运行VMD,要么是你没有把pdb文件放到默认路径文件夹里
作者
Author:
neocc    时间: 2023-1-10 17:22
请问大佬,如果是高分子长链用gmx solvate命令让其溶剂化,然后用vmd的topo功能可否生成整体的data文件呢?
还有水的模型可以换成tip3p或tip4p吗




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