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
