使用python从pdb文件中删除部件

时间:2014-03-17 11:08:39

标签: python bioinformatics biopython

我有一个pdb文件(input.pdb),我想从文件中删除一些特定的部分,并在没有这部分的情况下将其写回(out.pdb), 例如,read(input.pdb)从链H残留92中删除直到链H残留105然后将文件的其余部分(input.pdb没有删除部分)写入新文件(out.pdb)

1 个答案:

答案 0 :(得分:2)

以下是使用biopython的Bio.PDB包进行操作的示例。我们以结构1y26.pdb为例,因此我们必须首先加载它:

import Bio.PDB as bpdb

s = bpdb.PDBParser().get_structure('temp', '1y26.pdb')

start_res=20
end_res=30
chain_id = 'X'

这是有趣的部分。您创建了一个Bio.PDB.Select的子类,它告诉pdb输出类要保存哪些残差。对于结构中的每个残差,它将调用以下类的accept_residue方法,如果返回true则保存残差,如果返回false则跳过它。链ID也是如此。

class ResSelect(bpdb.Select):
    def accept_residue(self, res):
        if res.id[1] >= start_res and res.id[1] <= end_res and res.parent.id == chain_id:
            return False
        else:
            return True

最后,我们创建了实际保存的类,并将其传递给上面定义的选择类。

io = bpdb.PDBIO()
io.set_structure(s)
io.save('1y26_cropped.pdb', ResSelect())

这就是它,这就是全部。希望。