我正在解析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