【问题标题】:Getting residue number and residue name in Biopython PDB module在 Biopython PDB 模块中获取残基编号和残基名称
【发布时间】:2017-03-17 06:52:00
【问题描述】:

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

一个附带问题,有时甚至 chain[i].resname 给我一个带有一定残基的 KeyError: (' ', 'number', ' '),这让我使用了 try 和 except 块。有什么选择吗?

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)

【问题讨论】:

  • 只是一个建议,您可能还想在 biostars 上发布这个,他们有一个更活跃的社区来处理这类事情。

标签: python bioinformatics biopython


【解决方案1】:

通过查看 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 的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多