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
※ご利用は自己責任でお願いします