Gaussian09のアウトプットファイルの整形スクリプト

このラボに入ってから最初のまとめ的な論文を書いている。実験系の1本目は先週投稿し、計算主体の2本目がだいたい終わりつつある。あとはSIまとめが主要な作業となる。

論文を書く際にGaussian09のアウトプットファイルを目視して処理するのが面倒だったので、AWKの練習がてら論文に必要な箇所だけ抜き出すスクリプトを書いた。ディレクトリ内の.log拡張子のファイルを全て読み込んでエネルギーや座標もろもろを抜き出してoutputファイルにまとめるだけの簡素なものである。
optオプションを使い構造最適化し、引き続きfreqオプションで振動を確かめるのを前提にしてるので、それ以外の計算結果だと変な挙動を示すかもしれない。例えばfreqオプションのみを使った結果だと、座標を表示しなかったりする。あと、if文のところとか、ファイルの切り取りなどが冗長なので気が向いたら直したい。

計算やってるラボだとこのような簡素なものは皆作れるだろうし、実際に現ボスもこれより優れたものを作って自動化している。だが、自分が実験化学系のラボにいた時にはわざわざスクリプト書いている人がいなかったように思える。皆手作業で処理していたかもしれない。SI作成が面倒な人の参考になったらいいなということで公開してみた。

#!/bin/sh
rm -f output
ls *.log > tempf

cat tempf | while read line
do

echo $line >> output
echo >> output
grep 'SCF Done' $line > temp
awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' temp > temprev
awk '{if (FNR == 1) print $3,$4,$5}' temprev >> output
grep Frequencies $line > temp
awk '{if (FNR == 1 && $1 == "Frequencies" && $3 > 0 && $4 > 0) print "0 imaginary frequency"}' temp >> output
awk '{if (FNR == 1 && $1 == "Frequencies" && $3 < 0 && $4 > 0) print "1 imaginary frequency"}' temp >> output
awk '/Zero-point correction/,/thermal Free Energies/ {print}' $line >> output
echo >> output
awk '/Redundant internal/,/Recover con/ {if (length($1)>20) print}' $line > temp
cat temp | sed 's/,0,/ /g'| sed 's/,/ /g' >> output
echo >>output

done

rm -f temprev
rm -f temp
rm -f tempf
                                                                                                                         

※ご利用は自己責任でお願いします