我正在解析PDB文件,我有一个链式名称列表以及格式(链,[坐标])中的XYZ坐标。我有很多坐标,但只有3个不同的链条。我想将所有来自同一链的坐标压缩到一个列表中,以便获得链= [坐标],[坐标],[坐标]等等。我查看了biopython文档,但我很难理解如何获得我想要的坐标,所以我决定手动提取坐标。这是我到目前为止的代码:分隔(X,Y)的列表
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)
和一些输出:
[('A', [1.719, -25.217, 8.694]), ('A', [2.934, -21.997, 7.084]), ('A', [5.35, -19.779, 8.986])
我的理想输出将是:
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”,但我想我可以让他们一旦我得到了理解驼峰..
你想创建变量'A'。 ,或打印出“A =([1.719,-25.217,8.694]),([2.934,-21.997,7.084]),(5.35,-19.779,8.986))...” – inspectorG4dget
此外,请张贴PDB文件相关部分的代表性样本,以便我们知道您要解析的内容 – inspectorG4dget
有一个名为pdb_tools的密集型库,用Python编写。 – chupvl