PyMOL で動画作成

PyMOL でアニメーションを実行しするとき、mset でフレームの数を指定して、mplay で再生する。実際に何を再生するのかは、movie.roll などのコマンドを使って回転させたりすることができる。次に、これらのアニメーションを行なった際に生成される各フレープを静止画像として書き出すには mpng コマンドを利用する。

Python から PyMOL を呼び出して動画を作成するには、上述のようにアニメーションの各フレームを静止画像として書き出してから、それらの静止画像を繋げて動画にする方法をとることができる。次の Python スクリプトでは、3kds のタンパク質を回転させて 30 枚の静止画像を作成している。作成された静止画像は、frame_0001.png、frame_0002.png、・・・、frame_0030.png のように命名される。

import pymol

# launch PyMOL
pymol.finish_launching()

# raytrace frames before saving images
pymol.cmd.do('set ray_trace_frames, 1')

# download protein 2a0l from PDB
pymol.cmd.do('fetch 3kds')
pymol.cmd.do('load 3kds.cif')

# modify 3D structure
pymol.cmd.do('hide lines, all')
pymol.cmd.do('show cartoon, all')
pymol.cmd.do('zoom center, 80')
pymol.cmd.do('util.cbc all')

# create PNG images
pymol.cmd.do('mset 1 x30')
pymol.cmd.do('mplay')
pymol.cmd.do('movie.roll 1, 30')
pymol.cmd.do('mpng frame_')

# quit PyMOL
pymol.cmd.refresh()
pymol.cmd.quit()

30 枚の静止画像を作成できたら、次に、imagemagick プログラムに含まれている convert コマンドを利用して GIF 動画を作成する。imagemagick がコンピュータにインストールされていない場合は、apt-get あるいは brew などでインストールしておく必要がある。

convert -loop 0 ./frame_*.png 3kds_movie.gif
PyMOLで作成したGIF動画