用python 寫了一個求空間倆點之間的距離的腳本
import math L1=['104','32','249','177'] L2=['191','538','317','795'] L3=['735','346','542','429'] L4=['434','277','659','132'] L5=['866','569','46','763'] def Search_data(store_pdb,List_data): f_pdb=open(store_pdb,'r') lines=f_pdb.readlines() f_pdb.close() space_coordinate_1=[] space_coordinate_2=[] for line in lines: line_data=line.split() if List_data[0] in line_data[4:] and 'P' in line_data[2:]: space_coordinate_1.append(line_data[-5:-2]) continue elif List_data[1] in line_data[4:] and 'P' in line_data[2:]: space_coordinate_1.append(line_data[-5:-2]) continue elif List_data[2] in line_data[4:] and 'P' in line_data[2:]: space_coordinate_2.append(line_data[-5:-2]) continue elif List_data[3] in line_data[4:] and 'P' in line_data[2:]: space_coordinate_2.append(line_data[-5:-2]) continue space_coordinate=(space_coordinate_1,space_coordinate_2) return space_coordinate def Get_distance(store_pdb,List_data): one_tuple_data=Search_data(store_pdb,List_data) point_list_one=one_tuple_data[0] point_list_two=one_tuple_data[1] x1=(float(point_list_one[0][0])+float(point_list_one[1][0]))/2 y1=(float(point_list_one[0][1])+float(point_list_one[1][1]))/2 z1=(float(point_list_one[0][2])+float(point_list_one[1][2]))/2 x2=(float(point_list_two[0][0])+float(point_list_two[1][0]))/2 y2=(float(point_list_two[0][1])+float(point_list_two[1][1]))/2 z2=(float(point_list_two[0][2])+float(point_list_two[1][2]))/2 d=math.sqrt((x1-x2)2+(y1-y2)2+(z1-z2)**2)-20 return d def distance_files(store_pdb): L=[L1,L2,L3,L4,L5] for i in range(0,len(L)): distance_file=open('distance files %d'%(i+1),'a+') d=Get_distance(store_pdb,L[i]) distance_file.write(str(d)+'\n') distance_file.close() if name=="main":distance_files('1.pdb')
</pre>
其中列表L為源文件中要找的第幾行的數據,每一行中都有空間的一個點的坐標,srore_pdb為存放數據的pdb文件,list_data為上面的列表
本文由用戶 ydn7 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!