我正在解析PDB文件,我有一个链名称列表以及格式为(chain,[coordinate])的XYZ坐标。我有很多坐标,但只有3条不同的链。我想把同一个链中的所有坐标压缩成一个列表,这样我就得到了chain=[coordinate]、[coordinate]、[coordinate]等等。我看了biopython的文档,但是我很难确切地理解如何获得我想要的坐标,所以我决定手动提取坐标。这是我目前掌握的代码:
pdb_file = open('1adq.pdb')
import numpy as np
chainids = []
chainpos= []
for line in pdb_file:
if line.startswith("ATOM"):
# get x, y, z coordinates for Cas
chainid =str((line[20:22].strip()))
atomid = str((line[16:20].strip()))
pdbresn= int(line[23:26].strip())
x = float(line[30:38].strip())
y = float(line[38:46].strip())
z = float(line[46:54].strip())
if line[12:16].strip() == "CA":
chainpos.append((chainid,[x, y, z]))
chainids.append(chainid)
allchainids = np.unique(chainids)
print(chainpos)
以及一些输出:
^{pr2}$我的理想输出是:
A = ([1.719, -25.217, 8.694]), ([2.934, -21.997, 7.084]),(5.35, -19.779,8.986])...
谢谢!在
Here is a section of PDB file:
ATOM 1 N PRO A 238 1.285 -26.367 7.882 0.00 25.30 N
ATOM 2 CA PRO A 238 1.719 -25.217 8.694 0.00 25.30 C
ATOM 3 C PRO A 238 2.599 -24.279 7.885 0.00 25.30 C
ATOM 4 O PRO A 238 3.573 -24.716 7.275 0.00 25.30 O
ATOM 5 CB PRO A 238 2.469 -25.791 9.881 0.00 25.30 C
A是第4列中的链名称。我不知道链名称是什么,但是由于我是逐行解析的,所以我将链名称与前面提到的格式中的坐标相结合。现在,我想把前面有“A”的所有坐标都拉出来,然后把它们放到一个名为“A”的列表中。我不能硬编码在“A”中,因为它并不总是“A”。我也有“L”和“H”,但我想一旦我克服了理解的困难,我就可以得到它们。。在
你想要这样的东西吗
对于您的示例数据,它给出了:
^{pr2}$既然这是一本字典,显然你可以:
只得到你感兴趣的链的xyz坐标。在
您可以使用列表理解:
只需列出元组列表
相关问题 更多 >
编程相关推荐