2015-04-16 31 views
0

我从PDB文件中读取并提取原子信息,并做了Superimposer()以将突变与野生型进行比对。我如何将原子的对齐值写回PDB文件?我试图使用PDBIO()库,但它不工作,因为它不接受列表作为输入。任何人有一个想法如何做到这一点?如何在PDB.BIO中为蛋白质原子做Superimposer后写回PDB文件python

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

正如我在例子中看到的PDBIOpackage documentationBiopython文档:

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

好像PDBIO模块需要Structure类的一个对象来工作,这在原则上是我的理解Superimposer作品用。当你说它不接受一个列表,你的意思是你有一个结构列表?在这种情况下,你可以简单地通过循环throught结构为做到这一点:

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

如果你有什么是原子的名单,我想你可以创建一个Structure对象,然后把它传递给PDBIO

然而,很难说更不知道更多关于你的问题。你可以把你的问题放在你遇到问题的代码行上。

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

+0

嗨cnluzon,我更新了我的问题。我有一个对齐的原子列表,我不知道如何创建一个Structure对象,正如您告诉将它传递给PDBIO一样。如果我想创建一个Structure对象,我需要从一个PDB文件中调用get_structure API,但是我没有任何PDB文件可以调用(除了原来的那个)。感谢您的回答。 – zuhakasa

+0

我已经用一些额外的信息扩展了我的答案。我希望这有一些帮助。 – cnluzon