Acetaminophen’s diary

化学に関すること,TeXに関すること,ゆきだるまに関すること。

MOPAC で分子のアニメーションを作成して JSmol で観察する

こちらのメインブログが最近淋しいことになっていたので、サブブログで少しだけ触れた話題をもう少し深めて書いておこうと思い立った*1

久々に JavaScript と化学の話題。今回は真面目にコンピュータ化学を駆使して量子化学計算を行い、振動アニメーションを作成するところから SNS で JSmol によるインタラクティブな 3D モデルをシェアする(というかシェアできる状態にする)ところまで持っていく。

f:id:acetaminophen:20151201012411g:plain

 

使うもの

 

Winmostar の支援による MOPAC での量子化学計算

簡単なフェノール分子を作る。画面上で原子を選択し、置換したい基をメニューから選んで隣のボタン [Rep] をクリックすると置換基が付くので、これを利用して組み立て。

f:id:acetaminophen:20151201003415p:plain

「計算1」メニューから MOPAC キーワードを設定する。このあたりは専門外なのだが、とりあえずハミルトニアンは AM1 のままにしておいたが、メソッドは FORCE に切り替えてみた(そうすると一応結果がそれっぽくなったので…)。

f:id:acetaminophen:20151201003841p:plain

これで「MOP6W70 実行」。一旦保存するかどうか確認されるので、phenol.dat として保存。その後実行中の画面が出てきて勝手に計算が始まる。

f:id:acetaminophen:20151201004005p:plain

計算終了でログが現れる。その画面は(もちろんいろいろ情報があるのでゆっくり見てもよいが)とりあえず閉じて大丈夫。さっさとアニメーションを観よう。

f:id:acetaminophen:20151201004312p:plain

「計算1」メニューから「インポート → Force(out)」を選択。これで、いま FORCE メソッドで計算した結果 phenol.out が開かれる。

f:id:acetaminophen:20151201004349p:plain

おなじみ IR スペクトル。適当な波数ピークを選択して [Anim.] ボタンをクリックすると、その波数に対応する振動モードのアニメーションが表示される。今回はハミルトニアンに対する固有値が35個あったようで、35個のモードがあって図は26番目(画面キャプチャで GIF にしたので滑らかでないがご了承を)。

f:id:acetaminophen:20151201004610g:plain

このように、MOPAC の出力ファイル phenol.out には、各振動モードの波数と原子の位置情報が記録されていることが分かる。ちなみに、MOPAC のメソッドを今回は FORCE にしたが、たとえば EF にしておくと分子軌道の計算(HOMO, LUMO など)の計算ができて phenol.mgf に記録される。

 

MOPAC の out ファイルを Jmol で読み込む

先ほどは Winmostar の機能で振動アニメーションを表示したが、今度は Jmol で表示してみよう。Jmol コンソールから以下を実行する:

$ load phenol.out
$ frame 26
$ vibration on

こうすると Jmol の上でアニメーションが始まる。

f:id:acetaminophen:20151201010039g:plain

静止画でもわかりやすいように矢印を付けてみる:

$ vector on
$ vector scale 5

f:id:acetaminophen:20151201010104p:plain

これで 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 で表示される。

f:id:acetaminophen:20151201011120p:plain

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 のファイルを読ませるときは直ダウンロードリンクの書き方に注意:

  1. https でなく http を使う
  2. www.dropbox.comdl.dropboxusercontent.com に置換
  3. ?dl=0 が末尾についていたら削除

この制約さえ守れば、上記の親切なサイトは正しくアップロードされたファイルを読み取ってくれる。作成したものがこちら。念のため GIF で載せておいたのが冒頭のアニメーション。リンク先も最近のブラウザであれば、JavaScript 対応が進んでいるのでスムーズに表示できるのではなかろうか?

*1:といっても数日前に書いてはいたのだが、なんだかすぐに公開すると面白くないかなと思って寝かせていたもの。

*2:教育目的で申請すれば最新の MOPAC2012 も無償で入手可能であるが、今回は敢えて入手する必要なし。

*3:詳しいことには触れないが、化学の世界で xyz というファイルはどうやら分子の3次元構造を表すフォーマットとして定着しているようである。ここで示すスクリプトの本質は2行目だけで、1行目が総原子数・3行目は座標を表しているようで、これは xyz ファイルである以上「定型文」とみなしたほうがよいようだ。