2015-04-16 61 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