Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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)