如何在PDB.BIO python中对蛋白质原子进行Superimposer后写回PDB文件

时间:2015-04-16 08:08:41

标签: python bioinformatics biopython

我从PDB文件中读取并提取原子信息,然后执行Superimposer()将突变与野生型对齐。如何将原子的对齐值写回PDB文件?我尝试使用PDBIO()库但它不起作用,因为它不接受列表作为输入。任何人都知道如何做到这一点?

mutantAtoms = []
mutantStructure = PDBParser().get_structure("name",pdbFile)
mutantChain = mutStructure[0]["B"]

# Extract information of atoms
for residues in mutantChain:
  mutantAtoms.append(residues)

# Do alignment 
si =Superimposer()
si.set_atoms(wildtypeAtoms, mutantAtoms)
si.apply(mutantAtoms)

现在mutantAtoms是野生型原子的对齐原子。我需要将此信息写入PDB文件。我的问题是如何从对齐原子列表转换为结构,并使用PDBIO()或其他一些方法写入PDB文件。

1 个答案:

答案 0 :(得分:1)

正如我在PDBIO文档中的Biopython package documentation中的示例中看到的那样:

p = PDBParser()
s = p.get_structure("1fat", "1fat.pdb")
io = PDBIO()
io.set_structure(s)
io.save("out.pdb")

似乎PDBIO模块需要类Structure的对象才能工作,原则上我理解Superimposer的工作原理。如果你说它不接受列表你的意思是你有一个结构列表?在这种情况下,您可以通过迭代结构来完成它,如下所示:

for s in my_results_list:
    io.set_structure(s)
    io.save("out.pdb") 

如果您拥有的是原子列表,我猜您可以使用该对象创建一个Structure对象,然后将其传递给PDBIO

但是,如果不了解更多有关您的问题的话,很难说清楚。您可以在问题上提出您遇到问题的代码行。

修改:现在我已经更好地理解了您想要做的事情。所以我在一个有趣的Biopython Structural Bioinformatics FAQ中看到了一些关于Structure类的信息,这显然有些复杂。乍一看,我没有看到从头开始创建Structure个对象的非常简单的方法,但你可以做的是修改你从PDBIO取代原子列表得到的结果。 Superimposer然后使用相同的修改结构编写.pdb文件。因此,您可以尝试将mutantAtoms列表放入已有的mutantStructure对象中。