2014-03-13 4 views
2

Я пытаюсь нарисовать структуру белка из файла pdb с помощью pymol.Pymol не выводит изображение

Однако, когда я пытаюсь запустить скрипт ниже, открывается окно 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' сбрасывается в рабочий каталог, но это тоже черное.

ответ

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

все еще дает пустую картинку. –