计算化学公社

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

[VMD] 统计某种离子一定范围内的水分子个数

[复制链接 Copy URL]

294

帖子

0

威望

3533

eV
积分
3827

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
大家好,我想请教一个VMD脚本的问题!我想利用此脚本得到LI离子3.5埃距离内的水分子的个数!我写了一个脚本,但是不能输出个数,只能输出被选择的原子的serial,我的目的是输出每一帧中被选中的水分子个数!同时我不确定我的脚本是不是按照帧数更新的,特地在这请教各位,谢谢!
  1. set numFrame [molinfo top get numframes]
  2. molinfo top set frame 0
  3. set out [open ry.txt w]
  4. for {set i 0} {$i < $numFrame} {incr i} {
  5. set hnumber [atomselect top "same resid as (resname SOL and within 3.5 of resname LI)"]
  6. set a [$hnumber get serial]
  7. puts $out $a
  8. $hnumber frame $i
  9. $a frame $i
  10. }   
  11. close $out
复制代码


1149

帖子

6

威望

6631

eV
积分
7900

Level 6 (一方通行)

2#
发表于 Post on 2015-5-19 10:20:34 | 只看该作者 Only view this author
set hnumber [atomselect top "noh and (same resid as (resname SOL and within 3.5 of resname LI))"]
set a [$hnumber num]

这样就行了

294

帖子

0

威望

3533

eV
积分
3827

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2015-5-19 10:42:22 | 只看该作者 Only view this author
谢谢您的回复,你在atomselect top 中的 noh 指的是只选中水中的氧原子是吧!

294

帖子

0

威望

3533

eV
积分
3827

Level 5 (御坂)

4#
 楼主 Author| 发表于 Post on 2015-5-19 10:56:30 | 只看该作者 Only view this author
很感激你的帮助,虽然解决了个数的问题,我一共是5002,但是这个脚本没有循环起来!只得到第一帧的数据

1149

帖子

6

威望

6631

eV
积分
7900

Level 6 (一方通行)

5#
发表于 Post on 2015-5-19 11:46:20 | 只看该作者 Only view this author
ruanyang 发表于 2015-5-19 10:56
很感激你的帮助,虽然解决了个数的问题,我一共是5002,但是这个脚本没有循环起来!只得到第一帧的数据

set hnumber [atomselect top "noh and (same resid as (resname SOL and within 3.5 of resname LI)) frame $i"]
这样试试

如果不行的话加上hnumnber $update

294

帖子

0

威望

3533

eV
积分
3827

Level 5 (御坂)

6#
 楼主 Author| 发表于 Post on 2015-5-19 14:18:05 | 只看该作者 Only view this author
您好,我将脚本进行了修改,现在能输出5002个数据了,但是输出的数据都是第0帧的数44,我不清楚那个地方还需要修改
  1. set numFrame [molinfo top get numframes]
  2. set out [open ry.txt w ]
  3. for {set i 0} {$i < $numFrame} {incr i} {
  4. set hnumber [atomselect top "(noh same resid as (resname SOL and within 3.5 of resname LI))"]
  5. $hnumber update
  6. set a [$hnumber num]
  7. puts $out $a
  8. }   
  9. close $out
复制代码

6万

帖子

99

威望

5万

eV
积分
120119

管理员

公社社长

7#
发表于 Post on 2015-5-19 16:44:58 | 只看该作者 Only view this author
ruanyang 发表于 2015-5-19 14:18
您好,我将脚本进行了修改,现在能输出5002个数据了,但是输出的数据都是第0帧的数44,我不清楚那个地方还 ...


应该写set hnumber [atomselect top "(noh same resid as (resname SOL and within 3.5 of resname LI))" frame $i]
此时就不需要$hnumber update了

或者,每次循环用
$hnumber frame $i
$hnumber update
这样set hnumber [atomselect...只需要最初做一次即可,不用每个循环重做一遍
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办极高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入北京科音微信公众号获取北京科音培训的最新消息,并避免错过网上有价值的计算化学文章!
欢迎加入人气极高、专业性特别强的理论与计算化学综合交流群思想家公社QQ群(群号见此链接),合计达一万多人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大、极为流行的量子化学波函数分析程序)
Google Scholar:https://scholar.google.com/citations?user=tiKE0qkAAAAJ
ResearchGate:https://www.researchgate.net/profile/Tian_Lu

294

帖子

0

威望

3533

eV
积分
3827

Level 5 (御坂)

8#
 楼主 Author| 发表于 Post on 2015-5-19 18:17:40 | 只看该作者 Only view this author
谢谢Sob老师和 fhh2626的解答,问题完美解决,附上正确的脚本!
  1. set numFrame [molinfo top get numframes]
  2. set out [open ry.txt w ]
  3. for {set i 0} {$i < $numFrame} {incr i} {
  4. set hnumber [atomselect top "(noh same resid as (resname SOL and within 3.5 of resname LI))"]
  5. $hnumber frame $i
  6. $hnumber update
  7. set a [$hnumber num]
  8. puts $out $a
  9. }   
  10. close $out
复制代码

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
米咚咚丶 + 1

查看全部评分 View all ratings

本版积分规则 Credits rule

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

GMT+8, 2025-8-14 21:44 , Processed in 0.162957 second(s), 21 queries , Gzip On.

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