两点距离用python编程的步骤_用python 写了一个求空间俩点之间的距离的脚本

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

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')

其中列表L为源文件中要找的第几行的数据,每一行中都有空间的一个点的坐标,srore_pdb为存放数据的pdb文件,list_data为上面的列表

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值