用给定的残基数列表替换 pdb 中的残基数

Replace residue numbers in pdb with given residue numbers list

我已将残基编号列表重新编号为 new_residues=[18,19,20,21,22,34,35,36,37.... 130,131,132] 我想更改我的 pdb此列表中的残基编号。你有什么想法重新编号吗?

...

w=PDBIO()
            structure=p.get_structure(" ", pdbfile)
            for model in structure:
                    for chain in model:
                            chain_ID=model[chainID]
                            for residue in chain_ID:
                            #for i in range(len(residue.id)):
                                            #resID=new_resnums[i]
                                    residue.id=(" ",new_resnums[residue.id[1]], " ")
            w.set_structure(structure)
            w.save(pdbfile + "-new.pdb")

在您的示例中,您将覆盖有关残基的所有信息,以及有关特定位置氨基酸的信息。

让我们将文件中的所有 id 递增 200,遍历 models 和 structures,然后将 get_residues()enumerate 结合使用以获得所有残基和索引。

residue.id存储在一个list中,只改变了id。这个 list 然后被转换回 tuple 并写在原来的 id 的位置。

from Bio import PDB

pdb_io = PDB.PDBIO()
pdb_parser = PDB.PDBParser()
pdbfile = '1ubq.pdb'
structure = pdb_parser.get_structure(" ", pdbfile)

new_resnums = [i + 200 for i in range(135)]

for model in structure:
    for chain in model:
        for i, residue in enumerate(chain.get_residues()):
            res_id = list(residue.id)
            res_id[1] = new_resnums[i]
            residue.id = tuple(res_id)

pdb_io.set_structure(structure)
pdb_io.save(pdbfile + "-new.pdb")