使用Python从PDB文件中删除部分内容
我有一个pdb文件(input.pdb),我想从这个文件中删除一些特定的部分,然后把剩下的内容写回一个新文件(out.pdb)。比如说,我要从链H中删除第92个残基到第105个残基的内容,然后把去掉这些部分后的文件(也就是input.pdb去掉了被删除的部分)写入一个新文件(out.pdb)。
1 个回答
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())
就这样,没别的了。希望这样能帮到你。