计算化学公社

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

[VMD] 钠电池电解液筛选溶剂化结构的VMD使用疑惑及脚本使用

[复制链接 Copy URL]

7

帖子

0

威望

31

eV
积分
38

Level 2 能力者

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 Old_Six 于 2025-2-21 16:43 编辑

各位大佬好,我目前的任务是筛选出电解液溶剂化结构当中的AGG,CIP,SSIP的比例。于是将得到的轨迹文件PDB和trj.xyz导入到VMD当中,之后想要使用TCL脚本对其进行分析溶剂化结构,但是遇到几个问题.

问题1:脚本使用后得到的TXT文件没有内容是空白,猜测是其中选择不同分子的作用位点的表达方式不对还是其他问题?如果是表达方式不对如何进行表达,以及脚本如何修改?

问题2:如何在VMD中选中所有的钠离子,所有的P in PF6-, 以及溶剂中的羰基氧?

我将使用到的PDB文件放在了下面,以及脚本如下


  1. set outfile [open Na_Log.txt w]
  2. set frames [molinfo top get numframes]
  3. set atomsNa [atomselect top "name Na"]   
  4. set ids [$atomsNa get resid]
  5. set length [llength $ids]
  6. $atomsNa delete


  7. for { set frame 1 } { $frame < $frames } { incr frame} {
  8.     for { set id 0 } { $id < $length } {incr id} {
  9.      
  10.         set atoms [atomselect top "
  11.             resid [lindex $ids $id] or
  12.             same fragment as {
  13.                 (resname EC EMC DMC and name O1 O2) or  
  14.                 (resname TFB and name O3 O4) or         
  15.                 (resname PF6 and name P)  
  16.                 and within 3.0 of resid [lindex $ids $id]  
  17.             }" frame $frame]
  18.         
  19.         puts $outfile [$atoms get resname]
  20.         puts $outfile [$atoms get resid]
  21.         $atoms delete
  22.         
  23.         $atoms delete
  24.         $filtered_atoms delete
  25.     }
  26. }
  27. close $outfile
复制代码


PDB.zip

215.91 KB, 下载次数 Times of downloads: 4

895

帖子

3

威望

1697

eV
积分
2652

Level 5 (御坂)

傻傻的木瓜

2#
发表于 Post on 2025-2-21 16:00:41 | 只看该作者 Only view this author
本帖最后由 Uus/pMeC6H4-/キ 于 2025-2-21 16:27 编辑

此示例单帧.pdb文件是从M$里导出的么,有两个明显问题:第三列原子名有很多重复且不存在形如O1 O2 O3 O4的,导致所有用name确定的选区全空;第四列残基名全是MOL,导致所有用resname确定的选区也全空。如果是GROMACS跑的轨迹,直接用VMD查看处理即可,别用M$。

编辑:set na_pos [lindex [$na get {x y z}] 0]和[vecdist $na_pos [lindex [$atoms_PF6_P get {x y z}] 0]]也莫名其妙,本来get {x y z}获得的三维坐标应该都用于距离计算,结果套一层lindex ... 0就只剩下x坐标。

编辑2:animate goto $frame更新的是屏幕上绘制的帧不是动态选区对应的帧,对于名叫$sel的选区应采用$sel frame $frame和$sel update更新。这个脚本不太靠谱,我有点怀疑来源。

评分 Rate

参与人数
Participants 1
eV +3 收起 理由
Reason
Old_Six + 3 谢谢

查看全部评分 View all ratings

√546=23.36664289109

7

帖子

0

威望

31

eV
积分
38

Level 2 能力者

3#
 楼主 Author| 发表于 Post on 2025-2-21 16:26:26 | 只看该作者 Only view this author
本帖最后由 Old_Six 于 2025-2-21 16:30 编辑
Uus/pMeC6H4-/キ 发表于 2025-2-21 16:00
此示例单帧.pdb文件是从M$里导出的么,有两个明显问题:第三列原子名有很多重复且不存在形如O1 O2 O3 O4的 ...

感谢大佬的回复!是的大佬,分子动力学是从M$中跑出来导出.pdb的,我也感觉导出的.pdb非常奇怪,想问问这种情况怎么办呀,对于代码的问题我修改了一下
  1. set outfile [open Na_Log.txt w]
  2. set frames [molinfo top get numframes]
  3. set atomsNa [atomselect top "name Na"]   
  4. set ids [$atomsNa get resid]
  5. set length [llength $ids]
  6. $atomsNa delete


  7. for { set frame 1 } { $frame < $frames } { incr frame} {
  8.     for { set id 0 } { $id < $length } {incr id} {
  9.      
  10.         set atoms [atomselect top "
  11.             resid [lindex $ids $id] or
  12.             same fragment as {
  13.                 (resname EC EMC DMC and name O1 O2) or  
  14.                 (resname TFB and name O3 O4) or         
  15.                 (resname PF6 and name P)  
  16.                 and within 3.0 of resid [lindex $ids $id]  
  17.             }" frame $frame]
  18.         
  19.         puts $outfile [$atoms get resname]
  20.         puts $outfile [$atoms get resid]
  21.         $atoms delete
  22.         
  23.         $atoms delete
  24.         $filtered_atoms delete
  25.     }
  26. }
  27. close $outfile
复制代码


895

帖子

3

威望

1697

eV
积分
2652

Level 5 (御坂)

傻傻的木瓜

4#
发表于 Post on 2025-2-21 17:15:23 | 只看该作者 Only view this author
本帖最后由 Uus/pMeC6H4-/キ 于 2025-2-21 17:20 编辑
Old_Six 发表于 2025-2-21 16:26
感谢大佬的回复!是的大佬,分子动力学是从M$中跑出来导出.pdb的,我也感觉导出的.pdb非常奇怪,想问问这 ...

我不用M$,没法就导出原子名和残基名信息正确的轨迹文件给VMD分析提供帮助,本来这种体系的分子动力学还有更好的软件选择。

选择语句应当放在帧的循环外边定义,每次循环更新即可,省得反复定义再删除。
  1. set outfile [open Na_PF6_Log.txt w]
  2. set frames [molinfo top get numframes]
  3. set atomsNa [atomselect top "name Na"]
  4. set ids [$atomsNa get resid]
  5. $atomsNa delete

  6. foreach na_resid $ids {
  7.   set sel [atomselect top "same fragment as (pbwithin 3.0 of resid $na_resid and ((resname EC EMC DMC and name O1 O2) or (resname TFB and name O3 O4) or (resname PF6 and name P)))"]
  8.   for { set frame 0 } { $frame < $frames } { incr frame } {
  9.     $sel frame $frame ; $sel update
  10.     set resids [$sel get resid]
  11.     puts $outfile "Frame $frame for Na $na_resid: $resids"
  12.   }
  13. }
  14. close $outfile
  15. $sel delete
复制代码
√546=23.36664289109

7

帖子

0

威望

31

eV
积分
38

Level 2 能力者

5#
 楼主 Author| 发表于 Post on 2025-2-21 17:45:07 | 只看该作者 Only view this author
Uus/pMeC6H4-/キ 发表于 2025-2-21 17:15
我不用M$,没法就导出原子名和残基名信息正确的轨迹文件给VMD分析提供帮助,本来这种体系的分子动力学还 ...

感谢大佬的帮助,那我再学着用Gromacs跑一次,谢谢!!

本版积分规则 Credits rule

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

GMT+8, 2025-8-18 03:30 , Processed in 0.189702 second(s), 24 queries , Gzip On.

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