Source code for custodian.nwchem.jobs

"""
This module implements basic kinds of jobs for Nwchem runs.
"""

import shutil
import subprocess

from monty.io import zopen
from monty.shutil import gzip_dir

from custodian.custodian import Job

__author__ = "Shyue Ping Ong"
__version__ = "0.1"
__maintainer__ = "Shyue Ping Ong"
__email__ = "ongsp@ucsd.edu"
__status__ = "Beta"
__date__ = "5/20/13"


[docs]class NwchemJob(Job): """ A basic Nwchem job. """ def __init__( self, nwchem_cmd, input_file="mol.nw", output_file="mol.nwout", gzipped=False, backup=True, settings_override=None, ): """ Initializes a basic NwChem job. Args: nwchem_cmd ([str]): Command to run Nwchem as a list of args. For example, ["nwchem"]. input_file (str): Input file to run. Defaults to "mol.nw". output_file (str): Name of file to direct standard out to. Defaults to "mol.nwout". backup (bool): Whether to backup the initial input files. If True, the input files will be copied with a ".orig" appended. Defaults to True. gzipped (bool): Deprecated. Please use the Custodian class's gzipped_output option instead. settings_override ([dict]): An ansible style list of dict to override changes. #TODO: Not implemented yet. """ self.nwchem_cmd = nwchem_cmd self.input_file = input_file self.output_file = output_file self.backup = backup self.gzipped = gzipped self.settings_override = settings_override
[docs] def setup(self): """ Performs backup if necessary. """ if self.backup: shutil.copy(self.input_file, f"{self.input_file}.orig")
[docs] def run(self): """ Performs actual nwchem run. """ with zopen(self.output_file, "w") as fout: return subprocess.Popen(self.nwchem_cmd + [self.input_file], stdout=fout) # pylint: disable=R1732
[docs] def postprocess(self): """ Renaming or gzipping as needed. """ if self.gzipped: gzip_dir(".")