MOPAC で分子のアニメーションを作成して JSmol で観察する
こちらのメインブログが最近淋しいことになっていたので、サブブログで少しだけ触れた話題をもう少し深めて書いておこうと思い立った*1。
久々に JavaScript と化学の話題。今回は真面目にコンピュータ化学を駆使して量子化学計算を行い、振動アニメーションを作成するところから SNS で JSmol によるインタラクティブな 3D モデルをシェアする(というかシェアできる状態にする)ところまで持っていく。
使うもの
- Winmostar:ユーザ登録して無償版を入手。最近のバージョンの MOPAC は有償化されているが、無償だったころの古い MOPAC6 が付属しているのでこれを使う*2。
- Jmol:JSmol もあるが、ローカル環境でスクリプトを動かすにはこちらのほうが個人的には好み。以前もこのブログで登場したことがある。
Winmostar の支援による MOPAC での量子化学計算
簡単なフェノール分子を作る。画面上で原子を選択し、置換したい基をメニューから選んで隣のボタン [Rep] をクリックすると置換基が付くので、これを利用して組み立て。
「計算1」メニューから MOPAC キーワードを設定する。このあたりは専門外なのだが、とりあえずハミルトニアンは AM1 のままにしておいたが、メソッドは FORCE に切り替えてみた(そうすると一応結果がそれっぽくなったので…)。
これで「MOP6W70 実行」。一旦保存するかどうか確認されるので、phenol.dat として保存。その後実行中の画面が出てきて勝手に計算が始まる。
計算終了でログが現れる。その画面は(もちろんいろいろ情報があるのでゆっくり見てもよいが)とりあえず閉じて大丈夫。さっさとアニメーションを観よう。
「計算1」メニューから「インポート → Force(out)」を選択。これで、いま FORCE メソッドで計算した結果 phenol.out が開かれる。
おなじみ IR スペクトル。適当な波数ピークを選択して [Anim.] ボタンをクリックすると、その波数に対応する振動モードのアニメーションが表示される。今回はハミルトニアンに対する固有値が35個あったようで、35個のモードがあって図は26番目(画面キャプチャで GIF にしたので滑らかでないがご了承を)。
このように、MOPAC の出力ファイル phenol.out には、各振動モードの波数と原子の位置情報が記録されていることが分かる。ちなみに、MOPAC のメソッドを今回は FORCE にしたが、たとえば EF にしておくと分子軌道の計算(HOMO, LUMO など)の計算ができて phenol.mgf に記録される。
MOPAC の out ファイルを Jmol で読み込む
先ほどは Winmostar の機能で振動アニメーションを表示したが、今度は Jmol で表示してみよう。Jmol コンソールから以下を実行する:
$ load phenol.out $ frame 26 $ vibration on
こうすると Jmol の上でアニメーションが始まる。
静止画でもわかりやすいように矢印を付けてみる:
$ vector on $ vector scale 5
これで Jmol でも自在に分子を操れるようになった気分にはなった。いよいよシェアである。
JSmol で分子モデルを表示してシェアするためのページ
「特定の URL に続けて分子ファイルへのリンクを付けると JSmol で表示される」というページを、海外の方が用意して下さっている。使い方は簡単で、http://chemapps.stolaf.edu/jmol/jmol.php?source=
という文字列に続いてファイルの直ダウンロードリンクを付ける。試しに Protein Data Bank の DNA の分子モデル (1bna.pdb) をダウンロードするリンク http://www.rcsb.org/pdb/files/1BNA.pdb
を、先ほどの文字列にくっつけてみると、確かに 1bna.pdb が JSmol で表示される。
PDB ファイルは静止モデルで、これだけでも十分自由に分子を回したり表示方法を変更したりできるので便利である。しかし、アニメーションが可能なモデルの場合についてはユーザ任せにするのは少々不親切である。そこで編み出されたのが、Jmol script を JSmol に直接渡して実行させる方法。先ほどの Jmol 込んソースに入力した命令を、phenol-vib.xyz というファイルに“xyz 形式”で書き込む*3:
1 jmolscript: load http://dl.dropboxusercontent.com/s/0r3jg5oaty0kmxd/phenol.out; frame 26; vibration on; h 0.0 0.0 0.0
Dropbox に先ほどの phenol.out ファイルを置いておき、これを読ませる。Dropbox のファイルを読ませるときは直ダウンロードリンクの書き方に注意:
https
でなくhttp
を使うwww.dropbox.com
はdl.dropboxusercontent.com
に置換?dl=0
が末尾についていたら削除
この制約さえ守れば、上記の親切なサイトは正しくアップロードされたファイルを読み取ってくれる。作成したものがこちら。念のため GIF で載せておいたのが冒頭のアニメーション。リンク先も最近のブラウザであれば、JavaScript 対応が進んでいるのでスムーズに表示できるのではなかろうか?