如何更改 pdb 文件的链名称?

How do I change the chain name of a pdb file?

我想重命名 PDB 文件“6gch”的链 - https://www.rcsb.org/structure/6GCH

我已经查看了 Biopython 手册,但似乎找不到任何内容。 任何输入都会有很大帮助!

您确实可以只更改链元素的 id 属性。之后就可以使用PDBIO来保存修改后的结构了。

但是请注意,此过程对 PDB 进行了大量修改。 PDBIO 不存储 REMARKs、SHEETs 和 SSBONDs 等条目。如果你知道你需要那些,你必须小心。 此过程还将 HETATM 移动到相应链的末尾,而原始 PDB 将它们放在文件的末尾。

由于 6GCH 有 3 个链,我使用字典 renames 来配置旧链名称到新链名称的映射。如果链名不包含在该字典中,则不会进行重命名。

from Bio.PDB import PDBList, PDBIO, PDBParser

pdbl = PDBList()

io = PDBIO()
parser = PDBParser()
pdbl.retrieve_pdb_file('6gch', pdir='.', file_format="pdb")

# pdb6gch.ent is the filename when retrieved by PDBList
structure = parser.get_structure('6gch', 'pdb6gch.ent')

renames = {
    "E": "A",
    "F": "B",
    "G": "C"
}

for model in structure:
    for chain in model:
        old_name = chain.get_id()
        new_name = renames.get(old_name)
        if new_name:
            print(f"renaming chain {old_name} to {new_name}")
            chain.id = new_name
        else:
            print(f"keeping chain name {old_name}")

io.set_structure(structure)
io.save('6gch_renamed.pdb')