计算化学公社

标题: 计算双氢键模型的个数出错 [打印本页]

作者
Author:
退休老干部    时间: 2021-10-11 11:15
标题: 计算双氢键模型的个数出错
本帖最后由 退休老干部 于 2021-10-11 11:16 编辑

我先用amber里的distance和angle计算每一帧轨迹的两个分子中特定重原子之间的距离和角度,然后选取满足小于3.5埃大于120度的帧,把满足条件的帧相加,得到总帧数。(两种分子各20个),我想问问下面这个脚本写得有问题吗?我算出来结果跟预期不符,在使用distance和angle之前不需要image轨迹吧?
--------------------------------------------------------------------------------------------------------------------------------------
cat > trajin.in << EOF
parm   com.prmtop
trajin md1.crd
trajin md2.crd
trajin md3.crd
trajin md4.crd
trajin md5.crd
trajin md6.crd
trajin md7.crd
trajin md8.crd
trajin md9.crd
trajin md10.crd
EOF




let "i=1"
while [ $i -le 20 ]
do

let "j=21"
while [ $j -le 40 ]
do


cat >> trajin.in << EOF
distance name1${j}_${i} :$j@O2  :${i}@N2 out d${j}_${i}.dat   
distance name2${j}_${i} :$j@O1  :${i}@N1 out d${j}_${i}.dat   
angle    name3${j}_${i} :$j@O2  :${i}@H13  :${i}@N2 out d${j}_${i}.dat   
angle    name4${j}_${i} :$j@O1  :${i}@H12  :${i}@N1 out d${j}_${i}.dat   
EOF

let "j++"

done

let "i++"
done

cpptraj < trajin.in >trajin.out


let "i=1"
while [ $i -le 20 ]
do

let "j=21"
while [ $j -le 40 ]
do

printf "%10s%10s%10s%10s%10s" "0" "0" "0" "180" "180" >>  d${j}_${i}.dat
cat d${j}_${i}.dat |awk  'NR>1{if($2<=3.5 && $3<=3.5 && $4>=120 && $5>=120 ) {print $0}}' >${j}_${i}.dat

printf "%10d%10d" ${j} ${i} >> result
cat ${j}_${i}.dat |awk 'END{printf "%10.2f\n", NR-1 }' >> result

let "j++"
done

let "i++"
done




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