Source code for ocelot.task.idchg

import subprocess

from ocelot.routines.mopac import MopacInput, MopacOutput

"""
identify charged site with mopac routines

http://openmopac.net/Manual/charges.html
http://openmopac.net/Manual/Lewis_structures.html
"""


[docs]class IdChg:
[docs] def __init__(self, pmgmol, jobname, mopaccmd): self.pmgmol = pmgmol self.jobname = jobname self.sites = pmgmol.sites self.mopaccmd = mopaccmd self.inputname = self.jobname + '.mop' self.outputname = self.jobname + '.out'
[docs] def write_inp(self, wdir): min = MopacInput(self.sites, mopheader='CHARGES', comment_line='') min.write_mopinput(wdir + '/' + self.inputname)
[docs] @staticmethod def parse_out(outfn): with open(outfn, 'r') as f: fstring = f.read() mout = MopacOutput(fstring=fstring, caltype='CHARGES') data = mout.parse_charges() return data
[docs] def run(self, wdir): process = subprocess.Popen(self.mopaccmd, shell=True, cwd=wdir, stdout=subprocess.PIPE, stderr=subprocess.PIPE) process.wait() d = self.parse_out(wdir + '/' + self.outputname) return d