我有一个代码读取输入文件,这是一个xyz文件,取出我需要的每个原子并计算原子之间的距离,这个代码:
lines = ['SOL','DP','DT', 'DG', 'DA', 'DC', '4', '5', '6', 'NA', 'OW' ]
for record in fo_lines:
line = record.split()
if ((line[3] == lines[0]) and line[2]==lines[10]):
sol.append(line)
elif ((line[3] == lines[1] and line[5]==lines[6]) or (line[3] == lines[2] and line[5]==lines[7]) or (line[3] == lines[3] and line[5]==lines[8]) or !!(line[3] == lines[4] and line[5]==lines[7])\
or (line[3] == lines[5] and line[5]==lines[6]) or (line[3] == lines[5] and line[5]==lines[8])):
cutP.append(line)
elif (line[2]==lines[9]):
na.append(line)
for i in range(len(cutP)):
for j in range(len(sol)):
d = math.sqrt((float(cutP[i][6])-float(sol[j][6]))**2+(float(cutP[i][7])-float(sol[j][7]))**2+(float(cutP[i][8])-float(sol[j][8]))**2)
if ( d > 6.00 ):
del sol[j]`
但它告诉我当我操作两点之间的距离时,即当我计算d时,循环中存在“索引错误”。
这是输入文件的一部分:
ATOM 1 O5' DG X 1 40.619 27.909 62.158 0.00 0.00
ATOM 2 H5T DG X 1 41.345 28.183 62.722 0.00 0.00
ATOM 3 C5' DG X 1 39.409 28.588 62.460 0.00 0.00
ATOM 4 H5'1 DG X 1 39.618 29.399 63.190 0.00 0.00
ATOM 5 H5'2 DG X 1 38.782 27.991 63.156 0.00 0.00
正如您所看到的,缩进似乎是正确的,因为x,y和z对应于列表中每个原子的第6,7和8项。任何人都可以帮我解决这个问题吗?提前谢谢。