我有一个pdb文件(input.pdb),我想从文件中删除一些特定的部分,并在没有这部分的情况下将其写回(out.pdb), 例如,read(input.pdb)从链H残留92中删除直到链H残留105然后将文件的其余部分(input.pdb没有删除部分)写入新文件(out.pdb)
答案 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())
这就是它,这就是全部。希望。