def run(self, force=False, **gmxargs): """Analyze trajectory and write energy files. :Arguments: - *force*: do analysis and overwrite existing files - *gmxargs*: additional keyword arguments for :func:`gromacs.g_energy` """ if not self.check_file_exists(self.parameters.filenames['Energy'], resolve='warning') or force: logger.info("Analyzing energy file...") gromacs.g_energy(s=self.simulation.tpr, f=self.simulation.edr, o=self.parameters.filenames['Energy'], input=self.terms + [0], **gmxargs)
def rerun_energy(s, o, prefix): e = prefix + '.edr' rc, output, junk = gromacs.mdrun(v=True, s=s, rerun=o, e=e, stdout=False, stderr=False) assert rc == 0, "mdrun failed" xvg = prefix + '.xvg' rc, output, junk = gromacs.g_energy(f=e, o=xvg, input=("Proper-Dih.", "Improper-Dih.", "CMAP-Dih.", "LJ-14", "Coulomb-14", "LJ-(SR)", "Coulomb-(SR)", "Coul.-recip.", "Potential"), stdout=False, stderr=False) assert rc == 0, "g_energy failed" return XVG(xvg).to_df()
def rerun_energy(s, o, prefix): e = prefix + '.edr' rc, output, junk = gromacs.mdrun(v=True, s=s, rerun=o, e=e, stdout=False, stderr=False) assert rc == 0, "mdrun failed" xvg = prefix + '.xvg' rc, output, junk = gromacs.g_energy( f=e, o=xvg, input=("Proper-Dih.", "Improper-Dih.", "CMAP-Dih.", "LJ-14", "Coulomb-14", "LJ-(SR)", "Coulomb-(SR)", "Coul.-recip.", "Potential"), stdout=False, stderr=False) assert rc == 0, "g_energy failed" return XVG(xvg).to_df()
def get_observables(edr, observables=None, **kwargs): """Run :program:`g_energy` to get thermodynamic averages. :Arguments: *edr* Gromacs energy file *observables* list of energy (thermodynamic) averages to be computed; the default (for ``None``) is :: ["Pressure", "Volume", "Density", "Temperature"] *kwargs* other keywords are passed to :class:`gromacs.tools.G_energy`; for instance, *b* sets the start time (in ps) and *o* sets the output file name :Returns: :class:`~numpy.core.records.recarray` with the observable name in the first column ("*Energy*") and subsequent columns containing the exact averages produced by :program:`g_energy`. """ if observables is None: observables = ["Pressure", "Volume", "Density", "Temperature"] logger.info("Analyzing observables %(observables)r in energy file %(edr)r...", vars()) kwargs['input'] = observables kwargs['f'] = edr kwargs['stdout'] = False # required for processing kwargs['stderr'] = False # suppress stderr fd, kwargs['o'] = tempfile.mkstemp(suffix=".xvg") try: rc, data, stderr = gromacs.g_energy(**kwargs) if rc != 0: logger.error("g_energy failed") raise GromacsError("g_energy failed --- see output below:\n\n" + stderr + data) finally: unlink_gmx(kwargs['o']) return parse_energy(data)