关于python中GROMACS轨迹文件中原子距离的计算

2024-04-26 00:08:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在GROMACS中有一个100ns的轨迹文件(10ns时间范围,即t=10.0,t=20.0…t=100.0)。对于每个特定的时间帧,我如何通过编写一个python程序来计算一个原子相对于另一个原子的原子距离(比如N和all OW之间的距离),即当t=10.0时dst b/w N和all OW,当t=20.0…直到t=100.0(即,我需要在t=10.0时计算距离b/w N和all OW,以及在t=10.0时计算距离b/w N和all OW)t=20.0等…)并将其放入单个文件中。。。你知道吗

这是我的轨迹文件

Generated by trjconv : ABC t=  10.00000
    1ABC      N    1   0.134   0.731   0.816
   28SOL     OW  115   1.586   0.579   1.240
   29SOL     OW  118   0.135   0.791   1.373
   30SOL     OW  121   0.279   0.419   0.486
   31SOL     OW  124   0.185   1.369   1.168
   32SOL     OW  127   0.270   1.932   0.692
   33SOL     OW  130   1.811   1.427   0.103
   34SOL     OW  133   0.506   1.752   1.413
   35SOL     OW  136   0.067   0.943   0.328
   36SOL     OW  139   0.607   0.127   1.843
Generated by trjconv : ABC t=  20.00000
    1ABC      N    1   0.174   0.862   0.867
   28SOL     OW  115   1.835   0.664   1.072
   29SOL     OW  118   0.162   0.991   1.333
   30SOL     OW  121   1.962   0.302   0.351
   31SOL     OW  124   1.991   1.557   0.807
   32SOL     OW  127   0.371   1.974   0.575
   33SOL     OW  130   0.027   1.951   0.214
   35SOL     OW  136   0.017   0.962   0.259
   36SOL     OW  139   0.359   0.315   1.701
   .
   .
   .
Generated by trjconv : ABC t= 100.00000
    1ABC      N    1   0.436   0.482   0.720
   28SOL     OW  115   1.617   0.655   0.781
   29SOL     OW  118   0.444   1.118   0.961
   30SOL     OW  121   0.563   0.038   1.949
   31SOL     OW  124   0.101   0.983   0.321
   32SOL     OW  127   1.243   0.134   0.914
   33SOL     OW  130   0.765   1.254   0.416
   34SOL     OW  133   2.072   1.977   1.276
   35SOL     OW  136   1.030   0.726   0.400
   36SOL     OW  139   1.905   0.134   1.699

我想把N和所有输出之间的距离计算为:

For ABC t= 10.00000
28SOL 0.47672738541
29SOL 0.442346018406
30SOL 0.353905354579
31SOL 0.416744526059
32SOL 0.4526643348
33SOL 0.28253495359

For ABC t= 20.00000
28SOL 0.4657273839
29SOL 0.5323460153
30SOL 0.16905354587
31SOL 0.65474452654
32SOL 0.5246643547
33SOL 0.98253495546
.
.
.
.
For ABC t= 100.00000
28SOL 0.1357273845
29SOL 0.2353460160
30SOL 0.15605354068
31SOL 0.56474452705
32SOL 0.5016644010
33SOL 0.240534950236

我如何为这个…编写python程序。。。?你知道吗

谢谢

更新:以下是现有脚本:

import math 
myfile=open('abc.txt', 'r') 
text=myfile.read() 
temp=text.split() 
num=len(temp) 
i=16 
while(i<num): 
    dist=math.sqrt((float(temp[i])-float(temp[10]))**2+(float(te‌​mp[i+1])-float(temp[‌​11]))**2+(float(temp‌​[i+2])-float(temp[12‌​]))**2) 
    print temp[i-3],dist 
    i=i+6 
myfile.close() 

Tags: 文件距离forby轨迹时间allfloat

热门问题