请选择 进入手机版 | 继续访问电脑版
本论坛在1月18~21日期间仅限等级>=level 4的用户发帖

计算化学公社

 找回密码
 现在注册!
查看: 203|回复: 4

[VMD] 求助:博文http://sobereva.com/121操作遇到问题

[复制链接]

60

帖子

0

威望

249

eV
积分
309

Level 3 能力者

发表于 2020-11-27 17:32:41 | 显示全部楼层 |阅读模式
本帖最后由 liaorongbao 于 2020-11-27 18:37 编辑

http://sobereva.com/121是指导如何在.pdb文件中设好原子间键连方式然后用博文中的脚本读取后再让vmd软件原版显示出来由.pdb文件定义的键连方式图案的方法。我采用两个H2O分子作为练习的案例,两个水分子距离比较远,本来是没有氢键的。在练习中我假设需要用VMD软件显示第一个水分子的O与第二个水分子的H之间的氢键。
用gview制作2H2O.pdb文件如下:
REMARK   1 File created by GaussView 6.0.16
HETATM    1  O           0      -1.259  -1.631  -1.251                       O
HETATM    2  H           0      -0.299  -1.631  -1.251                       H
HETATM    3  H           0      -1.580  -0.726  -1.251                       H
HETATM    4  O           0      -3.541  -4.720  -0.665                       O
HETATM    5  H           0      -3.165  -5.154  -1.434                       H
HETATM    6  H           0      -2.870  -4.179  -0.242                       H
END
CONECT    1    2    3    6
CONECT    2    1
CONECT    3    1
CONECT    4    5    6
CONECT    5    4
CONECT    6    4    1
原子个数有6个,所以博文中的set natm 6应该是没问题的。
博文中set nskipline 后边跟着的数字比natm大1,但容易发现CONECT显示在第9行。
第一个问题:当前情况采用set nskipline 7还是set nskipline 8呢?

现在我已经在2H2O.pdb文件中设定第一个水分子的O原子与第二个水分子的H原子有单键(就当作代表氢键吧)。
博文中有个Tcl脚本,按2H2O.pdb体系设定脚本的原子数natm=6和跳过的行数nskipline=7(是不是应该写成8?),然后博文中.pdb文件的路径和名称改写成我的.pdb文件的路径和名称。
即为把原博文路径语句set rdpdbcon [open "D://CM//my program//Multiwfn//vtx.pdb" r]
改为我的2H2O.pdb文件的路径set rdpdbcon [open "E://Program Files (x86)//University of Illinois//VMD//2H2O.pdb" r]
这样改没问题吧?
第二个问题:目录符号是//而不是\,百度了一下编程语言中用//,是为了避免转义,是不是这样?


然后我就双击vmd.exe,把2H2O.pdb拖入 VMD main窗口,这个时候vmd.exe是不显示2H2O.pdb中设定的氢键的,因为Tcl脚本还没发力。
第三个问题:博文说:“下面这个Tcl脚本就是根据上述原理通过读取CONECT字段来设定VMD中原子间连接关系。拷贝到Tcl窗口下即可运行”。这句话也许对多数人不是问题但我却不知怎么操作
我的方法如下:
复制博文的脚本,按我的文件情况修改脚本。然后把修改好的脚本制作成connect.bat文件,把这个文件放到vmd.exe所在目录里。
在vmd.exe的黑色命令窗口执行source connect.bat,显示cannot read "self": no such variable
脚本语句[size=11.375px]scan [string range $line 6 84] "%d %d %d %d %d %d %d %d %d %d %d %d %d" self cn(1) cn(2) cn(3) cn(4) cn(5) cn(6) cn(7) cn(8) cn(9) cn(10) cn(11) cn(12)中有个self,是不是没有被赋值?也不知道怎么回事

如下是我的connect.bat文件
#Programmed by Sobereva, 2012-Jan-25
set natm 6
set nskipline 7
#itype=0 means reset connectivity by user-defined list, =1 means add self-defined connectivity list to the original one
set itype 1
set rdpdbcon [open "E://Program Files (x86)//University of Illinois//VMD//2H2O.pdb" r]
#set rdpdbcon [open "E:\Program Files (x86)\University of Illinois\VMD\2H2O.pdb" r]
#E:\Program Files (x86)\University of Illinois\VMD
#Skip other lines
for {set i 1} {$i<=$nskipline} {incr i} {
gets $rdpdbcon line
}

#Cycle each atom
set ird 1
for {set iatm 1} {$iatm<=$natm} {incr iatm} {

if {$ird==1} {
for {set i 1} {$i<=12} {incr i} {set cn($i) 0}
gets $rdpdbcon line
scan [string range $line 6 84] "%d %d %d %d %d %d %d %d %d %d %d %d %d" self cn(1) cn(2) cn(3) cn(4) cn(5) cn(6) cn(7) cn(8) cn(9) cn(10) cn(11) cn(12)

set tmplist {}
#Formation of connectivity list
for {set i 1} {$i<=12} {incr i} {
  if {$cn($i)==0} {break}
  lappend tmplist [expr $cn($i)-1]
}
}

if {$self==$iatm} {
#puts Atom\ serial:\ $iatm\ \ User-connectivity:\ $tmplist
set sel [atomselect top "serial $iatm"]
if {$itype==0} {
  $sel setbonds "{$tmplist}"
} else {
  set orglist [$sel getbonds]
  $sel setbonds "{[concat [lindex $orglist 0] $tmplist]}"
}
$sel delete
set ird 1
} else {
set ird 0
}

}
close $rdpdbcon













2万

帖子

25

威望

3万

eV
积分
62549

管理员

公社社长+计算化学玩家

发表于 2020-11-27 18:12:39 | 显示全部楼层
把问题搞得太复杂了
直接在VMD里用mouse - add/remove bonds,点击相应两个原子就能连上键,然后保存成mol文件,以后再载入mol时成键关系还是你想要的状态。仔细看
谈谈VMD可视化程序的连接关系的判断和设置问题
http://sobereva.com/534http://bbs.keinsci.com/thread-16396-1-1.html

评分

参与人数 1eV +3 收起 理由
liaorongbao + 3 谢谢

查看全部评分

北京科音自然科学研究中心http://www.keinsci.com  致力于计算化学的发展和传播,长期开办最高水准的各种量子化学、分子动力学与GROMACS、波函数分析与Multiwfn程序等主题的培训,是快速提升计算化学研究水平的最佳途径。欢迎加入“北京科音”公众号获取培训最新消息和计算化学资讯!培训相关信息见《北京科音办的培训班FAQ》
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群:思想家公社QQ群1号:18616395,2号:466017436。合计6000人。两个群讨论范畴相同,可加入任意其一但不可都加入。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

60

帖子

0

威望

249

eV
积分
309

Level 3 能力者

 楼主| 发表于 2020-11-27 18:34:32 | 显示全部楼层
sobereva 发表于 2020-11-27 18:12
把问题搞得太复杂了
直接在VMD里用mouse - add/remove bonds,点击相应两个原子就能连上键,然后保存成mol ...

博文http://sobereva.com/534中那个简单的处理个别个连线的方法我也读到了。实际上我面对的体系有几十个原子需要在VMD中人工连线。2H2O.pdb这个案例只是为了简化问题。我不想按http://sobereva.com/534费力地在VMD中手动连接几十个原子。现在就是想学学批量处理的http://sobereva.com/121。求社长再回复一下具体怎么操作

2万

帖子

25

威望

3万

eV
积分
62549

管理员

公社社长+计算化学玩家

发表于 2020-11-27 18:45:49 | 显示全部楼层
1 nskipline 8

2 tcl语言本来就那么规定的。用/或\\也可以

3 读取有问题,导致self没被赋值

评分

参与人数 1eV +4 收起 理由
liaorongbao + 4 谢谢

查看全部评分

北京科音自然科学研究中心http://www.keinsci.com  致力于计算化学的发展和传播,长期开办最高水准的各种量子化学、分子动力学与GROMACS、波函数分析与Multiwfn程序等主题的培训,是快速提升计算化学研究水平的最佳途径。欢迎加入“北京科音”公众号获取培训最新消息和计算化学资讯!培训相关信息见《北京科音办的培训班FAQ》
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群:思想家公社QQ群1号:18616395,2号:466017436。合计6000人。两个群讨论范畴相同,可加入任意其一但不可都加入。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

60

帖子

0

威望

249

eV
积分
309

Level 3 能力者

 楼主| 发表于 2020-11-27 18:53:14 | 显示全部楼层
sobereva 发表于 2020-11-27 18:12
把问题搞得太复杂了
直接在VMD里用mouse - add/remove bonds,点击相应两个原子就能连上键,然后保存成mol ...

把上边的7改成8似乎就出现了,谢谢社长关注!
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2021-1-20 17:24 , Processed in 0.155761 second(s), 25 queries .

快速回复 返回顶部 返回列表