简短回答
structure[0]['A'][('H_CYS', 2003, ' ')]
会给你想要的残留物
<Residue CYS het=H_CYS resseq=2003 icode= >
BioPython 的 PDB 索引
BioPython 的 PDB 残留索引使用tuple
内部。它由异源标记、序列标识符和插入代码组成。对于您的残基 1000,它将是 (' ', 100, ' '),对于您的异质残基,它将是('H_CYS', 2003, ' ')
.
如果您仅提供一个整数作为索引,它将被转换为(' ', your_int, ' ')
.
代码可以在函数中找到_translate_id https://github.com/biopython/biopython/blob/master/Bio/PDB/Chain.py
通用解决方案
如果您事先不知道异质标志,您可以使用自己的函数
def get_residue_by_number(residues, number):
for residue in residues:
if residue.id[1] == number:
return residue
get_residue_by_number(structure[0]['A'].get_residues(), 2003)
<Residue CYS het=H_CYS resseq=2003 icode= >
get_residue_by_number(structure[0]['A'].get_residues(), 100)
<Residue ASP het= resseq=100 icode= >