0
我試圖通過一個.pdb文件,計算來自蛋白質複合物的A和B鏈上不同殘基的α碳原子之間的距離,然後將距離與字典一起存儲鏈標識符和殘基編號。例如,如果在鏈A上的殘基100上發現第一個α碳(「CA」),並且它與鏈上的殘基123上的鏈結合,那麼會希望我的字典看起來像d = {( A,100):[B,123,distance_between_atoms]}來自pdb文件的字典鍵
from Bio.PDB.PDBParser import PDBParser
parser=PDBParser()
struct = parser.get_structure("1trk", "1trk.pdb")
def getAlphaCarbons(chain):
vec = []
for residue in chain:
for atom in residue:
if atom.get_name() == "CA":
vec = vec + [atom.get_vector()]
return vec
def dist(a,b):
return (a-b).norm()
chainA = struct[0]['A']
chainB = struct[0]['B']
vecA = getAlphaCarbons(chainA)
vecB = getAlphaCarbons(chainB)
t={}
model=struct[0]
for model in struct:
for chain in model:
for residue in chain:
for a in vecA:
for b in vecB:
if dist(a,b)<=8:
t={(chain,residue):[(a, b, dist(a, b))]}
break
print t
它已經運行的年齡的節目,我不得不中止運行(已予某處??)
我提出的無限循環也試圖做到這一點:
t = {i:[((a, b, dist(a,b)) for a in vecA) for b in vecB if dist(a, b) <= 8] for i in chainA}
print t
但它打印有關的格式如下殘留信息:
<Residue PHE het= resseq=591 icode= >: []
它不打印的距離有關事情。
非常感謝,希望一切都清楚。
請在決定使用它們之前閱讀標籤說明。 * pdb *的含義與您的想法完全不同,並且描述通知人們確切地使用哪個標籤(如果需要的話)。這裏的標籤有特定的含義和用途,所以請謹慎選擇。謝謝。 –
謝謝,我下次會多加註意。 – Alexandra