2014-03-13 77 views
2

我想從pdb文件中使用pymol繪製蛋白質結構。Pymol不輸出圖像

但是,當我嘗試運行下面的腳本時,會打開一個pymol窗口,但它只是黑色。另外,奇怪的是,pdb文件被輸出到shell。

這裏是我的代碼:

bioservices_pdb_obj = PDB() 
pdb_file = bioservices_pdb_obj.getFile(results[str(Brick.part_attrib(self,'uniprot_id'))][detail-1],'pdb') 
pdb_name = str(Brick.part_attrib(self,'uniprot_id')) 
pymol.finish_launching()     
pymol.cmd.load(pdb_file, pdb_name) 
pymol.cmd.disable("all") 
pymol.cmd.enable(pdb_name) 
pymol.cmd.png("my_pdb.png") 
pymol.cmd.quit() 

有誰知道這是怎麼回事?

.png文件'my_pdb'被轉儲到工作目錄中,但也只是黑色。

回答

0

這是否也發生在任何其他PDB文件?如果是,您可以嘗試使用cmd.mpng()函數的解決方法。如果cmd.png()函數不起作用,您也可以在其他上下文中使用此函數,例如在命令行模式下使用PyMOL時。

import pymol 
from pymol import cmd 
import os 
pymol.finish_launching()     
cmd.set('ray_trace_frames', 1) # Frames are raytraced before saving an image. 

def pnghack(filepath, width=1024, height=768): 
"""Workaround if cmd.png() doesn't work""" 
    cmd.viewport(width, height) # Set resolution 
    cmd.mpng(filepath, 1, 1) # Use batch png mode with 1 frame only 
    cmd.mplay() # cmd.mpng needs the animation to 'run' 

cmd.load(pdb_file, pdb_name) 
cmd.disable("all") 
cmd.enable(pdb_name) 
pnghack("my_pdb.png") 
cmd.quit() 

注意,所產生的PNG文件被命名爲「my_pdb0001.png」作爲cmd.mpng()函數總是添加幀序號。

+0

它仍然給一張空白的圖片。 –