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

How to write back to a PDB file after doing Superimposer for atoms of a protein in PDB.BIO python

我从 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 文件。

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

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

似乎 PDBIO 模块需要 class Structure 的对象才能工作,这在原则上是我理解的 Superimposer 工作的对象。当你说它不接受列表时,你的意思是你有一个结构列表吗?在那种情况下,您可以简单地通过遍历结构来完成,如:

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

如果你有一个原子列表,我想你可以用它创建一个 Structure 对象,然后将它传递给 PDBIO.

但是,如果不了解您的问题,就很难说得更多。你可以把你的问题放在你遇到问题的代码行上。

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