计算化学公社

标题: VMD实现动态选择蛋白附近的磷脂分子计算序参量的tcl代码实现问题 [打印本页]

作者
Author:
柠檬好酸    时间: 2020-9-22 11:28
标题: VMD实现动态选择蛋白附近的磷脂分子计算序参量的tcl代码实现问题
  1. proc orderparam-c3 { result { seltext all } } {
  2.   upvar $result arr
  3.   #获得要计算的帧数
  4.   set n [molinfo top get numframes]
  5.   
  6.   #以POPC为例。计算18个C原子
  7.   for { set i 2 } { $i <= 20 } { incr i } {
  8.     puts $i
  9.     set sum 0.0
  10.     set nh 0
  11.         #每个C原子的所有帧循环
  12.     for { set frame 0 } { $frame < $n } { incr frame } {
  13.           #选择距离蛋白5A 以内的磷脂
  14.           set dynamic_lipid [atomselect top "($seltext) and lipid and same resid as within 5 of protein"]
  15.       $dynamic_lipid frame $frame
  16.           $dynamic_lipid update
  17.           
  18.           set cp [atomselect top "($dynamic_lipid) and name C3$i"]
  19.           
  20.           if { [$cp num] == 0 } {
  21.       puts "skipping $i"
  22.       continue
  23.       }
  24.           #选择与C相连的HX、HY
  25.       set hx [atomselect top "($dynamic_lipid) and name H${i}X"]
  26.       set hy [atomselect top "($dynamic_lipid) and name H${i}Y"]
  27.       #set hz [atomselect top "($dynamic_lipid) and name H${i}Z"]
  28.       
  29.           $cp frame $frame
  30.       $hx frame $frame
  31.       $hy frame $frame
  32.           $cp update
  33.           $hx update
  34.           $hy update
  35.           
  36.           #有num个磷脂分子被选中
  37.           set nres [$cp num]
  38.           
  39.           #获得C原子坐标
  40.       set cpx [$cp get x]
  41.       set cpy [$cp get y]
  42.       set cpz [$cp get z]
  43.           #C-H坐标差
  44.       set hxx [vecsub $cpx [$hx get x]]
  45.       set hxy [vecsub $cpy [$hx get y]]
  46.       set hxz [vecsub $cpz [$hx get z]]
  47.           #计算与Z轴的夹角余弦平方
  48.       foreach dx $hxx dy $hxy dz $hxz {
  49.         set norm2 [expr {$dx*$dx + $dy*$dy + $dz*$dz}]
  50.         set sum [expr {$sum + $dz*$dz/$norm2}]
  51.       }
  52.       incr nh $nres
  53.       #如果C上有HY
  54.       if { [$hy num] != 0 } {
  55.         set hyx [vecsub $cpx [$hy get x]]
  56.         set hyy [vecsub $cpy [$hy get y]]
  57.         set hyz [vecsub $cpz [$hy get z]]
  58.         foreach dx $hyx dy $hyy dz $hyz {
  59.           set norm2 [expr {$dx*$dx + $dy*$dy + $dz*$dz}]
  60.           set sum [expr {$sum + $dz*$dz/$norm2}]
  61.         }
  62.         incr nh $nres
  63.       }
  64.     }
  65.         #序参量计算
  66.     set arr($i) [expr {-1.5*$sum/$nh + 0.5}]
  67.   }
  68. }
复制代码
想请教下Sob老师,动态选择5A以内磷脂分子这部分代码有没有问题,代码改编自https://www.ks.uiuc.edu/Research ... 5364/orderparam.tcl以及为什么mailing list 里的代码 并没有每一帧都使用 $sel update

作者
Author:
sobereva    时间: 2020-9-22 18:18
有没有问题,把选择语句直接在representation里设置成选区,显示一下就知道了

update是使用动态选区比如x<5这样才需要,这会把选择的粒子的数目、序号更新为当前帧。如果是静态选区,update是多余的。
作者
Author:
柠檬好酸    时间: 2020-9-23 08:38
sobereva 发表于 2020-9-22 18:18
有没有问题,把选择语句直接在representation里设置成选区,显示一下就知道了

update是使用动态选区比如 ...

感谢sob老师,原来update是这样的,学习了
作者
Author:
消瘦二哥    时间: 2021-12-24 10:33
本帖最后由 消瘦二哥 于 2021-12-24 10:36 编辑

[size=1.4em]使用Multiwfn做aNCI分析图形化考察动态过程中的蛋白-配体间的相互作用一文中,

”现在选择File - Save coordinate,selected atoms填resname MOL or protein same resid as within 3.5 of resname MOL,保存的文件类型选xyz,然后点Save按钮,将这个局部区域保存为cluster.xyz”

请问Sob老师,为什么保存之后,仅仅应用到了第一帧的原子ID,后面的帧数没有自动应用到每一帧(备注:已经在vmd中选择了update到每一帧)。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3