Pymol не выводит изображение

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


person Charon    schedule 13.03.2014    source источник


Ответы (1)


Это также происходит с любым другим файлом 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() всегда добавляет номер кадра.

person ssalentin    schedule 26.09.2014
comment
это все еще дает пустую картину. - person hamster on wheels; 19.06.2017