在Biopython PDB模块中获取残留物编号和残留物名称

时间:2017-03-17 06:52:00

标签: python bioinformatics biopython

我目前正在使用pymol的迭代来获取所有残留数字,然后我使用它们来检索残留名称。我不认为这是最好的方法。我试图在biopython中寻找一种无用的方法。我将非常感谢您的意见和建议。

一个附带问题,有时甚至链[i] .resname会给我一个KeyError :('',' number','')某些残留物,这让我试了一下,除了块。任何替代品?

from Bio import *
from Bio.PDB.PDBParser import PDBParser
from Bio.PDB.Polypeptide import PPBuilder
structure = PDBParser().get_structure('5bmy', '5bmy.pdb')    
model = structure[0]
chain = model['A']

import __main__
__main__.pymol_argv = ['pymol','-qc']
import pymol
from pymol import cmd, stored
pymol.finish_launching()
cmd.load('5bmy.pdb')  # use the name of your pdb file
stored.residues = []
cmd.iterate('name ca', 'stored.residues.append(resi)')
numbers = [ int(x) for x in stored.residues ]
for i in numbers:
    print (chain[i].resname)

1 个答案:

答案 0 :(得分:0)

通过查看API(以及通过命令dir(chain)可用于链的内容),我可以看到有一个方法get_residues()。看一下所含的残基,我可以看到有一个函数get_resname()。使用这些,一个解决方案可能是:

from Bio import *
from Bio.PDB.PDBParser import PDBParser
from Bio.PDB.Polypeptide import PPBuilder
structure = PDBParser().get_structure('5bmy', '5bmy.pdb')    


model = structure[0]
chain = model['A']

for i in chain.get_residues():
    print(i.get_resnames())

这提供了一个不需要pymol的解决方案。