(アカデミックメールの効用 フリープログラム MOPAC7 実行スクリプト)
大学を退職すると,大学で使用していたメール (末尾がac.jp) が使用できなくなる.そのため,学術関係者に無償使用が許可されているプログラムが利用できなくなった.この種のソフトは期限付きのため,期限が切れたら更新手続きを行なわなければならない.その際,大学メールにライセンスが送られてくるので,打つ手がない.
私の場合は,分子を計算するソフトのひとつであるMOPAC2012が利用できなくなった(購入すると5000ドル近い).MOPACというソフトはJ. J. P. Stewartによってパラメータの継続的改良が進められている半経験的分子軌道計算法である.非経験的分子軌道計算や密度汎関数法のような高度なソフトウエアを使用する前に手っ取り早く計算するために使用してきた.
退職したのだから仕方ないので,パブリックドメインソフト(PDS)として公開されているMOPAC7に戻らざるを得なくなった.MOPAC7はPM3までの計算が可能であり,パラメータ改良版のPM6, PM7が利用できないだけである.溶媒効果を加味した計算などは可能である.
実行形式のMOPAC7 (mopac7.exe) は,古いFORTRAN言語で書かれコンパイルされているため,FORTRANの入出力の規則を守らないと使えない.最低,入力ファイルとしてFOR005の名称のファイルを準備しなければならない.例えばcaffeineを計算するには,mopac計算のために作成したcaffeine.datをFOR005という名前のファイルに換えて,ターミナル上でコマンドで実行する必要がある.出力されるファイルはFOR006であるので,計算が終了したら識別できるようにファイル名 をcaffeine.outに変更する必要がある.
caffeine.dat → FOR005にファイル名変更 → 実行 → FOR006(結果出力) → Caffeine.outにファイル名変更
実行の際に準備しなければならないファイルは実行結果(FOR006)だけではない.種々の処理にすべて対応した場合,下記のファイルが作成される.
入出力ファイルのほかに,サマリー,ログ,電子密度等の出力ファイルも同様にファイル名の変更処理が必要である.
いちいちファイル名を変更するのが面倒なので,一連の処理をしてくれるスクリプトを作ってみた.
入力データを適当なテキストエディターで作った場合,データファイルの改行コードは,Macの場合はCR, WINDOWSの場合はCRLFである.UNIXのLF形式になるように指定する必要がある.
Macの場合,tr '\r' '\n' < $file > $MOPACPATH/FOR005と書いているが,これはCRをLFに変える処理である.
Windowsの場合は,tr -d '\r' < $file > $MOPACPATH/FOR005でCR, LFのCRを除いている.
-------------------------------------------------------------------------------------------------------------
#!/bin/sh
#
# bash script for MOPAC 7
#---------- set path ----------
MOPACPATH=/Applications/Chemistry/mopac7
EXENAME=mopac7.exe
#---------------------------------
for file in $*
do
# delete CR in CRLF(DOS)
# tr -d '\r' < $file > $MOPACPATH/FOR005
# replace CR to LF(Mac)
tr '\r' '\n' < $file > $MOPACPATH/FOR005
# use next statement in UNIX (LF)
# cp $file $MOPACPATH/FOR005
echo "--------------------"
echo " Job : $file"
echo "--------------------"
fname=${file%.*}
$MOPACPATH/$EXENAME
rm $MOPACPATH/FOR005
mv $MOPACPATH/FOR006 $fname.out
mv $MOPACPATH/FOR009 $fname.res
mv $MOPACPATH/FOR010 $fname.den
mv $MOPACPATH/FOR011 $fname.log
mv $MOPACPATH/FOR012 $fname.arc
if [ -e $MOPACPATH/FOR013 ]
then mv FOR013 $fname.gpt
fi
if [ -e $MOPACPATH/FOR016 ]
then mv FOR016 $fname.syb
fi
done
--------------------------------------------------------------------------------------------------------------
ターミナルで実行
--------------------------------------------------------------------------------------------------------------
cd /Applications/Chemistry/mopac7
./gomopac7 cubane.mop
複数の化合物を計算するばあいはファイル名を続ける(for file in $*に対応)
./gomopac7 cubane.mop norbornana.mop
--------------------------------------------------------------------------------------------------------------
オートメーターで実行
--------------------------------------------------------------------------------------------------------------
Macの場合,ターミナルで実行できるが,オートメーターを利用すると便利である.
ユーティリティの中の「シェルスクリプトを実行」を選び,計算を実行する作業フォルダ(ここでは/Applications/Chemistry/mopac7)を選択し,実行するスクリプト名,入力ファイルを書くだけでよい.オートメーターのファイルとして保存しておけば,入力ファイルを変えるだけでいろいろな計算が可能である.