计算化学公社

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

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

[复制链接 Copy URL]

294

帖子

0

威望

3528

eV
积分
3822

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
复制代码


1096

帖子

6

威望

6271

eV
积分
7487

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

威望

3528

eV
积分
3822

Level 5 (御坂)

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

294

帖子

0

威望

3528

eV
积分
3822

Level 5 (御坂)

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

1096

帖子

6

威望

6271

eV
积分
7487

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

威望

3528

eV
积分
3822

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
复制代码

5万

帖子

99

威望

5万

eV
积分
112496

管理员

公社社长

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群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口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!

294

帖子

0

威望

3528

eV
积分
3822

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, 2024-11-27 06:37 , Processed in 0.162084 second(s), 22 queries , Gzip On.

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