作为解析PDB文件的一部分,我为希望作为浮点形式存在的特定原子提取了一组坐标(x,y,z)。但是,我还需要知道我提取了多少套坐标。
下面是我通过坐标提取得到的代码,我认为这将产生我提取了多少组三个坐标的计数。
使用len(coordinates)时,很遗憾,我得出的每组坐标都包含3个元组(x,y和z坐标)。
深入了解如何正确计算套数会有所帮助。我对Python还是很陌生,仍处于不确定我是否正确提出要求的阶段!
from sys import argv
with open(argv[1]) as pbd:
print()
for line in pbd:
if line[:4] == 'ATOM':
atom_type = line[13:16]
if atom_type == "CA" or "N" or "C":
x = float(line[31:38])
y = float(line[39:46])
z = float(line[47:54])
coordinates = (x, y, z)
# printing (coordinates) gives
# (36.886, 53.177, 21.887)
# (38.323, 52.817, 21.996)
# (38.493, 51.553, 22.83)
# (37.73, 51.314, 23.77)
print(len(coordinates))
# printing len(coordinates)) gives
# 3
# 3
# 3
# 3
谢谢您的见解!
答案 0 :(得分:0)
如果您要计算文件中特定原子的数量,请尝试此
from sys import argv
with open(argv[1]) as pbd:
print()
atomCount = 0
for line in pbd:
if line[:4] == 'ATOM':
atom_type = line[13:16]
if atom_type == "CA" or "N" or "C":
atomCount += 1
print(atomCount)
它的作用基本上是,遍历整个pbd文件并检查每个原子的类型(似乎在数据的第四列中)。每次遇到所需的原子类型时,都会将计数器变量增加1。
答案 1 :(得分:0)
您的坐标变量是一个元组,元组是有序的且不可更改。使用列表更好。
coordinates=[]
for ....:
coordinates.append([x,y,z])
len(coordinates) # should be 4 I guess.