计算化学公社

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

[VMD] 请问如何用脚本实现两个分子对齐align?

[复制链接 Copy URL]

93

帖子

0

威望

1788

eV
积分
1881

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
各位好!我想用Tcl脚本实现一批分子的对齐,再计算其RMSD。我选择了第一个分子作为参考(index=0),后续分子依次和这第一个分子对齐再做RMSD。RMSD功能已实现,但对齐未能实现,请各位指教。以下为部分代码。

set j 1
while {$j <=$num_mol} {
# select ref and compare molecule
set mol_comare [atomselect 1 "backbone"]
set mol_ref [atomselect 0 "backbone"]
# compute the transformation
set trans_mat [measure fit $mol_compare $mol_ref]
# do the alignment
$mol_com move $trans_mat
set mol_rmsd_all [measure rmsd $mol_ref $mol_com]
puts $myfile "$j    $mol_rmsd_all "
incr j 1
    }
  close $myfile



313

帖子

2

威望

3900

eV
积分
4253

Level 6 (一方通行)

2#
发表于 Post on 2021-4-12 12:05:49 | 只看该作者 Only view this author
本帖最后由 lyj714 于 2021-4-12 12:11 编辑

有很多程序都可以实现,不一定要用tcl,因为如果分子大,叠合过程可能慢。比如crest有个-rmsd的选项就可以直接算rmsd(一般的rmsd都是指的先叠合再计算)。
但是你的描述也可能是指的是不同分子之间计算rmsd,如果你指的是这种,那就得考虑更多,比如选着相同数目的原子进行叠合等等。

93

帖子

0

威望

1788

eV
积分
1881

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2021-4-12 21:29:06 | 只看该作者 Only view this author
感谢回复!事实上,vmd的GUI界面也是可以完成对齐和RMSD操作的,但由于种种原因,我目前的应用场景需要用Tcl脚本+vmd实现。

313

帖子

2

威望

3900

eV
积分
4253

Level 6 (一方通行)

4#
发表于 Post on 2021-4-12 21:47:06 | 只看该作者 Only view this author
本帖最后由 lyj714 于 2021-4-12 21:55 编辑
wei 发表于 2021-4-12 21:29
感谢回复!事实上,vmd的GUI界面也是可以完成对齐和RMSD操作的,但由于种种原因,我目前的应用场景需要用Tc ...

https://www.ks.uiuc.edu/Research/vmd/vmd-1.9.3/ug/node203.html
粗略看了下你写的那个,不是做了叠合了吗。参考分子不变,比较分子每次更新帧数即可。

224

帖子

5

威望

4581

eV
积分
4905

Level 6 (一方通行)

5#
发表于 Post on 2021-4-12 22:04:36 | 只看该作者 Only view this author
本帖最后由 ene 于 2021-4-13 01:09 编辑
  1. #----------------------------------------------------
  2. #                     PARAMETERS
  3. #----------------------------------------------------
  4. set align_frame     0
  5. set align_reference "protein"
  6. set align_selection "protein"
  7. #----------------------------------------------------
  8. set nf [molinfo top get numframes]
  9. set f0 [atomselect top "$align_reference" frame $align_frame]
  10. set f  [atomselect top "$align_reference"]
  11. set sel [atomselect top "$align_selection"]
  12. for { set i 0 } { $i < $nf } { incr i } {
  13.     $f frame $i
  14.     $sel frame $i
  15.     set mv [measure fit $f $f0]
  16.     $sel move $mv
  17. }
  18. puts "All Done!"
复制代码


我需要一些假日,但我不希望每天都是假日。因为我没有承担痛苦,因为那不是真正的自由。

93

帖子

0

威望

1788

eV
积分
1881

Level 5 (御坂)

6#
 楼主 Author| 发表于 Post on 2021-4-13 22:43:55 | 只看该作者 Only view this author
本帖最后由 wei 于 2021-4-13 22:54 编辑

谢谢各位!我测试一下。

本版积分规则 Credits rule

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

GMT+8, 2026-2-23 01:15 , Processed in 0.172517 second(s), 20 queries , Gzip On.

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