pymol.cmd.png などのメソッドを使い画像を保存する方法

PyMOL で画像を作成する

Python で PyMOL コマンドを実行し、タンパク質の立体構造を画像として保存する方法を紹介する。PyMOL に実行させるコマンドは基本的に pymol.cmd のメソッドを利用する。

以下のスクリプトを make_image.py の名前で保存して、Python スクリプトとして実行する。

import time
import re
import pymol

pymol_argv = ['pymol', '-qc']


# PDB ファイルの位置
pdb_file = './2A0L.pdb'

# 出力画像の名前
out_png = './2A0L.png'


## PyMOL 起動
pymol.finish_launching()
pymol.cmd.load(pdb_file)
pymol.cmd.enable(pdb_file)


## 立体構造の調整
pymol.cmd.hide('lines', 'all')      # lines 表示
pymol.cmd.show('cartoon', 'all')    # cartoon 表示
pymol.cmd.util.cbc('all')           # チェーン毎に色を塗り分ける


## PNG 画像の生成
time.sleep(5)
pymol.cmd.png(out_png)
#pymol.cmd.do('png ' + out_png)


## PyMOL の終了
pymol.cmd.refresh()
pymol.cmd.quit()

PNG 画像を作成する際に pymol.cmd.png メソッドを利用するが、一部の環境ではこのコマンドが正しく実行できない。 代わりに pymol.cmd.do メソッドを利用すると画像を作成することができる。

PyMOL が完全に立ち上がらないと pymol.cmd.png あるいは pymol.cmd.do が正しく実行されない。そのため、画像を作成する直前に、time.sleep(5) を入れて、様々な処理が終えて 5 秒待ってから画像を作成するようにしている。