我正在尝试使用pymol从pdb文件中绘制蛋白质结构。
然而,当我尝试运行下面的脚本时,会打开一个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 :(得分: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()函数始终添加framenumber。