Jump to content

Mod:Hunt Research Group:simple freq script

From ChemWiki
  • Save the following as freq.py in your home/bin directory.
  • Run by typing python freq.py [freq_file_name].log in the directory with your frequency log file.
  • The output prints to the console with commas in between each value.
  • filename, E, G, H, S, ZPE, low frequencies
#!/usr/bin/env python
import sys

#######################################################

f = open(str(sys.argv[1]), 'r')

enstring = 'SCF Done'
gstring = 'Sum of electronic and thermal Free Energies='
hstring = 'Sum of electronic and thermal Enthalpies='
zpestring = 'Zero-point correction='
freqstring = 'Low frequencies ---'
freqlist = []


for line in f:

        if enstring in line:
                enval = line[(len(enstring)+16):(len(enstring)+31)]

        if gstring in line:
                gval = line[(len(gstring)+9):(len(gstring)+21)]

        if hstring in line:
                hval = line[(len(hstring)+12):(len(hstring)+24)]

        if zpestring in line:
                zpeval = line[(len(zpestring)+27):(len(zpestring)+36)]

newval=float(hval)-float(gval)
newval=str(round(newval,10))

f.close()
f = open(str(sys.argv[1]), 'r')

for line in f:
        pos = line.find(freqstring)
        if pos != -1:
                freqval = line[(len(freqstring)+1):]
                freqs = freqval.split()
                freqlist = freqlist + freqs;

print sys.argv[1] + ',' + (enval) + ',' + (gval)+ ','  + (hval) + ','  +  (newval) + ',' + (zpeval) + ',' + ','.join(freqlist)