コード例 #1
0
    def test_rmsfit_with_autoimage_compared_to_cpptraj(self):
        # assert to cpptraj: need to set mass
        traj = self.traj.copy()

        txt = '''
        parm {0}
        trajin {1}
        autoimage
        rms first {2} mass
        trajout tmp.nc
        '''.format(traj.top.filename, traj.filename, self.mask)

        with tempfolder():
            state = pt.datafiles.load_cpptraj_output(txt, dtype='state')
            state.run()
            # need to load to memory (not iterload)
            saved_traj = pt.load('tmp.nc', traj.top)

        fa1 = traj[:]
        fa1.autoimage()
        pt.superpose(fa1, ref=0, mask=self.mask, mass=True)

        aa_eq(fa1.xyz, saved_traj.xyz)

        fa_saved_nowat = saved_traj['!:WAT']
        fa1_nowat = fa1['!:WAT']
        aa_eq(fa_saved_nowat.xyz, fa1_nowat.xyz)
コード例 #2
0
    def test_rmsfit_with_autoimage_compared_to_cpptraj(self):
        # assert to cpptraj: need to set mass
        traj = self.traj.copy()

        txt = '''
        parm {0}
        trajin {1}
        autoimage
        rms first {2} mass
        trajout tmp.nc
        '''.format(traj.top.filename, traj.filename, self.mask)

        with tempfolder():
            state = pt.datafiles.load_cpptraj_output(txt, dtype='state')
            state.run()
            # need to load to memory (not iterload)
            saved_traj = pt.load('tmp.nc', traj.top)

        fa1 = traj[:]
        fa1.autoimage()
        pt.superpose(fa1, ref=0, mask=self.mask, mass=True)

        aa_eq(fa1.xyz, saved_traj.xyz)

        fa_saved_nowat = saved_traj['!:WAT']
        fa1_nowat = fa1['!:WAT']
        aa_eq(fa_saved_nowat.xyz, fa1_nowat.xyz)
コード例 #3
0
def to_ParmEd(pytraj_top):
    # TODO: exten to gromacs, charmm too
    # need to change extension
    """convert to ParmEd object"""
    from pytraj.utils.context import tempfolder
    from pytraj.Topology import ParmFile
    import parmed as chem

    # I am not a fan of saving/loading again but this might be best choice
    with tempfolder():
        fname = "tmp_pytrajtop.prmtop"
        ParmFile().writeparm(pytraj_top, fname, format="")
        return chem.load_file(fname)
コード例 #4
0
ファイル: amber_wrapper.py プロジェクト: lambdalisue/pytraj
def prmtop_from_tleap(filename, leapin=None, verbose=False):
    '''make prmtop file from pdb

    Parameters
    ----------
    filename : str, pdb filename
    leapin : str, optional, default None
        leap input
        if None, use::

            source leaprc.ff14SB
            set default PBradii mbondi3
            x = loadpdb {pdbfile}
            saveamberparm x {pdbfile}.prmtop {pdbfile}.rst7
            quit
    verbose : bool, default False
        if False, suppress tleap output
    '''
    import os
    import subprocess
    import pytraj as pt

    if leapin is None:
        leapin = leap_template

    amberhome = os.environ.get('AMBERHOME')
    if amberhome is None:
        raise RuntimeError('must set AMBERHOME')

    tleap = amberhome + '/bin/tleap'

    filename = os.path.abspath(filename)

    with tempfolder():
        leapin = leapin.format(pdbfile=filename)

        with open("tmp_leap.in", 'w') as f:
            f.write(leapin)

        with open(os.devnull, 'wb') as devnull:
            if not verbose:
                subprocess.check_call(
                    [tleap, ' -f tmp_leap.in'],
                    stdout=devnull,
                    stderr=subprocess.STDOUT)
            else:
                x = subprocess.check_call([tleap, ' -f tmp_leap.in'])
        if verbose:
            print(x)
        return pt.load_topology("tmp.top")
コード例 #5
0
ファイル: tools.py プロジェクト: hainm/pytraj
def read_gaussian_output(filename=None, top=None):
    """return a `pytraj.trajectory.Trajectory` object

    Parameters
    ----------
    fname : str, filename
    top : {str, Topology}, optional, default None
        pytraj.Topology or a filename or None
        if None, use `antechamber` to generate mol2 file, need set $AMBERHOME env

    Requires
    --------
    cclib (``pip install cclib``)

    >>> import pytraj as pt
    >>> pt.tools.read_gaussian_output("gau.out", "mytest.pdb") # doctest: +SKIP
    """
    import cclib
    from pytraj.trajectory.trajectory import Trajectory
    from pytraj.utils.context import tempfolder
    from pytraj.utils.get_common_objects import get_topology

    _top = get_topology(None, top)
    gau = cclib.parser.Gaussian(filename)
    go = gau.parse()

    if _top is None:  # pragma: no cover
        try:
            amberhome = os.environ['AMBERHOME']
        except KeyError:
            raise KeyError("must set AMBERHOME")

        fpath = os.path.abspath(filename)

        with tempfolder():
            at = amberhome + "/bin/antechamber"
            out = "-i %s -fi gout -o tmp.mol2 -fo mol2 -at amber" % fpath
            cm = " ".join((at, out))
            os.system(cm)

            return Trajectory(xyz=go.atomcoords, top="tmp.mol2")
    else:
        return Trajectory(xyz=go.atomcoords, top=_top)
コード例 #6
0
ファイル: tools.py プロジェクト: josejames00/pytraj
def read_gaussian_output(filename=None, top=None):
    """return a `pytraj.trajectory.Trajectory` object

    Parameters
    ----------
    fname : str, filename
    top : {str, Topology}, optional, default None
        pytraj.Topology or a filename or None
        if None, use `antechamber` to generate mol2 file, need set $AMBERHOME env

    Requires
    --------
    cclib (``pip install cclib``)

    >>> import pytraj as pt
    >>> pt.tools.read_gaussian_output("gau.out", "mytest.pdb") # doctest: +SKIP
    """
    import cclib
    from pytraj.trajectory import Trajectory
    from pytraj.utils.context import tempfolder
    from pytraj.get_common_objects import get_topology

    _top = get_topology(None, top)
    gau = cclib.parser.Gaussian(filename)
    go = gau.parse()

    if _top is None:  # pragma: no cover
        try:
            amberhome = os.environ['AMBERHOME']
        except KeyError:
            raise KeyError("must set AMBERHOME")

        fpath = os.path.abspath(filename)

        with tempfolder():
            at = amberhome + "/bin/antechamber"
            out = "-i %s -fi gout -o tmp.mol2 -fo mol2 -at amber" % fpath
            cm = " ".join((at, out))
            os.system(cm)

            return Trajectory(xyz=go.atomcoords, top="tmp.mol2")
    else:
        return Trajectory(xyz=go.atomcoords, top=_top)
コード例 #7
0
ファイル: amber_wrapper.py プロジェクト: lambdalisue/pytraj
def minimize(traj, engine='sander', input=None, top=None):
    """
    >>> from pytraj.amber_wrap import minimize
    >>> minimize(traj)

    >>> minimize(traj, engine='pmemd')
    """

    from pytraj import Trajectory

    if not isinstance(traj, Trajectory):
        raise ValueError("support only mutable Trajectory")

    _top = get_topology(traj, top)

    if input is not None:
        min_in = input
    else:
        min_in = MIN_IN

    if engine in ['sander', 'pmemd']:
        _engine = "$AMBERHOME/bin/" + engine
    else:
        _engine = engine

    with tempfolder():
        with open("min.in", 'w') as fh:
            fh.write(min_in)

        pt.write_parm("tmp.prmtop", _top)

        for frame in traj:
            pt.write_traj("tmp_frame.rst7", frame, top=_top, overwrite=True)
            os.system(
                "%s -O -p tmp.prmtop -c tmp_frame.rst7.1 -r min.r -i min.in" %
                (_engine))
            f0 = pt.load("min.r", traj.top)[0]
            # update coords
            frame.xyz[:] = f0.xyz
コード例 #8
0
def load_ParmEd(parmed_obj, as_traj=False, **kwd):
    """return pytraj's Topology or Trajectory objects

    Parameters
    ---------
    parmed_obj : ParmEd's Structure object
    as_traj: bool, default False
        if True, return pytraj.trajectory.Trajectory
        if False, return Topology

    >>> import parmed as pmd
    >>> import pytraj as pt
    >>> p = pmd.download_PDB("1l2y")
    >>> top = pt.load_ParmEd(p)
    """
    import parmed as pmd
    from parmed.amber import AmberParm

    if isinstance(parmed_obj, string_types):
        # reserve **kwd for `structure=True`
        parmed_obj = pmd.load_file(parmed_obj, **kwd)
    # faster
    with tempfolder():
        if isinstance(parmed_obj, AmberParm):
            fname = 'tmp.parm7'
        else:
            fname = 'tmppdb.psf'
        parmed_obj.save(fname)
        top = _load_Topology(fname)
    if as_traj:
        from pytraj import Trajectory
        coords = parmed_obj.coordinates
        coords = coords.reshape(1, *coords.shape)
        return Trajectory(xyz=coords, top=top)
    else:
        return top