Pymol未输出图像
我正在尝试使用pymol从一个pdb文件中绘制蛋白质结构。
但是,当我运行下面的脚本时,pymol窗口打开了,但里面一片漆黑。而且奇怪的是,pdb文件被输出到了命令行。
这是我的代码:
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'也被放到了工作目录里,但它也是黑乎乎的。
1 个回答
0
这个问题在其他的PDB文件中也会出现吗?如果是的话,你可以试试用cmd.mpng()这个函数作为解决办法。如果cmd.png()这个函数不管用的话,你也可以在其他情况下使用这个cmd.mpng(),比如在命令行模式下使用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()这个函数总是会加上帧编号。