当前位置: 首页>>代码示例>>Python>>正文


Python Molecule.write方法代码示例

本文整理汇总了Python中molecule.Molecule.write方法的典型用法代码示例。如果您正苦于以下问题:Python Molecule.write方法的具体用法?Python Molecule.write怎么用?Python Molecule.write使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在molecule.Molecule的用法示例。


在下文中一共展示了Molecule.write方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _exec

# 需要导入模块: from molecule import Molecule [as 别名]
# 或者: from molecule.Molecule import write [as 别名]
_exec("trjconv_d -s eq.tpr -f eq.trr -o eq.gro -ndec 9 -pbc mol -dump 1", stdin="0\n")

# Confirm that constraints are satisfied
OMM_eqgro = app.GromacsGroFile('eq.gro')
OMM_prmtop = app.AmberPrmtopFile('prmtop')
system = OMM_prmtop.createSystem(nonbondedMethod=app.NoCutoff)
integ = mm.VerletIntegrator(1.0*u.femtosecond)
plat = mm.Platform.getPlatformByName('Reference')
simul = app.Simulation(OMM_prmtop.topology, system, integ)
simul.context.setPositions(OMM_eqgro.positions)
simul.context.applyConstraints(1e-12)
state = simul.context.getState(getPositions=True)
pos = np.array(state.getPositions().value_in_unit(u.angstrom)).reshape(-1,3)
M = Molecule('eq.gro')
M.xyzs[0] = pos
M.write('constrained.gro')

# Gromacs calculation
GMX_Energy, GMX_Force, Ecomps_GMX = Calculate_GMX('constrained.gro', 'topol.top', 'shot.mdp')
GMX_Force = GMX_Force.reshape(-1,3)

# Print Gromacs energy components
printcool_dictionary(Ecomps_GMX, title="GROMACS energy components")

# Parse the .mdp file to inform ParmEd
defines, sysargs, mdp_opts = interpret_mdp('shot.mdp')

parm = parmed.amber.AmberParm('prmtop', 'inpcrd')
GmxGro = parmed.gromacs.GromacsGroFile.parse('constrained.gro')
parm.box = GmxGro.box
parm.positions = GmxGro.positions
开发者ID:kmckiern,项目名称:AMBER-FB15,代码行数:33,代码来源:gmx-amber-compare.py

示例2: _exec

# 需要导入模块: from molecule import Molecule [as 别名]
# 或者: from molecule.Molecule import write [as 别名]
_exec("trjconv_d -s eq.tpr -f eq.trr -o eq.gro -ndec 9 -pbc mol -dump 1", stdin="0\n")

# Confirm that constraints are satisfied
OMM_eqgro = app.GromacsGroFile("eq.gro")
OMM_prmtop = app.AmberPrmtopFile("prmtop")
system = OMM_prmtop.createSystem(nonbondedMethod=app.NoCutoff)
integ = mm.VerletIntegrator(1.0 * u.femtosecond)
plat = mm.Platform.getPlatformByName("Reference")
simul = app.Simulation(OMM_prmtop.topology, system, integ)
simul.context.setPositions(OMM_eqgro.positions)
simul.context.applyConstraints(1e-12)
state = simul.context.getState(getPositions=True)
pos = np.array(state.getPositions().value_in_unit(u.angstrom)).reshape(-1, 3)
M = Molecule("eq.gro")
M.xyzs[0] = pos
M.write("constrained.gro")

# Gromacs calculation
GMX_Energy, GMX_Force, Ecomps_GMX = Calculate_GMX("constrained.gro", "topol.top", "shot.mdp")
GMX_Force = GMX_Force.reshape(-1, 3)

# Print Gromacs energy components
printcool_dictionary(Ecomps_GMX, title="GROMACS energy components")

# Parse the .mdp file to inform ParmEd
defines, sysargs, mdp_opts = interpret_mdp("shot.mdp")

parm = parmed.amber.AmberParm("prmtop", "inpcrd")
GmxGro = parmed.gromacs.GromacsGroFile.parse("constrained.gro")
parm.box = GmxGro.box
parm.positions = GmxGro.positions
开发者ID:Archeries,项目名称:AMBER-FB15,代码行数:33,代码来源:gmx-amber-compare.py

示例3: TinkerReporter

# 需要导入模块: from molecule import Molecule [as 别名]
# 或者: from molecule.Molecule import write [as 别名]
class TinkerReporter(object):
    """TinkerReporter

    To use it, create a TinkerReporter, then add it to the Simulation's list of reporters.
    """

    def __init__(self, file, reportInterval, simulation, xyzfile, pbc=True, pmegrid=None, tinkerpath = ''):
        """Create a TinkerReporter.

        Parameters:
         - tinkerpath (string) The
         - file (string) The file to write to
         - reportInterval (int) The interval (in time steps) at which to write frames
        """
        print "Initializing Tinker Reporter"
        self._reportInterval = reportInterval
        self._openedFile = isinstance(file, str)
        if self._openedFile:
            self._out = open(file, 'w')
        else:
            self._out = file
        self._pbc = pbc
        self._pmegrid = pmegrid
        self._tinkerpath = tinkerpath
        self._simulation = simulation

        self.xyzfile = xyzfile
        self.pdbfile = os.path.splitext(xyzfile)[0] + '.pdb'
        self.keyfile = os.path.splitext(xyzfile)[0] + '.key'
        #self.prmfile = os.path.splitext(xyzfile)[0] + '.prm'
        self.dynfile = os.path.splitext(xyzfile)[0] + '.dyn'

        print "Loading Tinker xyz file"
        if not os.path.exists(self.xyzfile):
            raise IOError('You need a Tinker .xyz')
        if not os.path.exists(self.keyfile):
            raise IOError('You need a Tinker .key file with the same base name as the .xyz file')
        #if not os.path.exists(self.prmfile):
        #    raise IOError('You need a Tinker .prm file with the same base name as the .xyz file')
        if not os.path.exists(self.pdbfile):
            raise IOError('You need a .pdb file with the same base name as the .xyz file (the same one you used to start the simulation)')
        self.M = Molecule(self.xyzfile,ftype='tinker')
        self.comm = open(self.xyzfile).readlines()[0]
        print "Done"

    def describeNextReport(self, simulation):
        """Get information about the next report this object will generate.

        Parameters:
         - simulation (Simulation) The Simulation to generate a report for
        Returns: A five element tuple.  The first element is the number of steps until the
        next report.  The remaining elements specify whether that report will require
        positions, velocities, forces, and energies respectively.
        """
        steps = self._reportInterval - simulation.currentStep%self._reportInterval
        return (steps, True, True, True, True)

    def report(self, simulation, state):
        """Generate a report.

        Parameters:
         - simulation (Simulation) The Simulation to generate a report for
         - state (State) The current state of the simulation
        """

        RunDynamic = 0
        pos = state.getPositions() / angstrom
        if RunDynamic:
            # Write a dyn file.
            dynout = open(self.dynfile,'w')
            print >> dynout, ' Number of Atoms and Title :'
            print >> dynout, self.comm,
            print >> dynout, ' Periodic Box Dimensions :'
            print >> dynout, pvec([state.getPeriodicBoxVectors()[i][i] / angstrom for i in range(3)])
            print >> dynout, pvec([90,90,90])
            print >> dynout, ' Current Atomic Positions :'
            for i in range(len(pos)):
                print >> dynout, pvec(pos[i])
            print >> dynout, ' Current Atomic Velocities :'
            vel = state.getVelocities() / angstrom * picosecond
            for i in range(len(vel)):
                print >> dynout, pvec(vel[i])
            print >> dynout, ' Current Atomic Accelerations :'
            for i in range(len(vel)):
                print >> dynout, pvec([0,0,0])
            print >> dynout, ' Alternate Atomic Accelerations :'
            for i in range(len(vel)):
                print >> dynout, pvec([0,0,0])
            dynout.close()
            o = _exec('%s %s 1 1e-5 1 1' % (os.path.join(self._tinkerpath,'dynamic'), self.xyzfile), print_command = False)
            for line in o.split('\n'):
                if 'Total Energy' in line:
                    total = float(line.split()[2]) * 4.184
                elif 'Potential Energy' in line:
                    pot = float(line.split()[2]) * 4.184
                elif 'Kinetic Energy' in line:
                    kin = float(line.split()[2]) * 4.184
                elif 'Temperature' in line:
                    temp = float(line.split()[1])
                elif 'Pressure' in line:
#.........这里部分代码省略.........
开发者ID:Clyde-fare,项目名称:OpenMM-MD,代码行数:103,代码来源:tinker_reporter.py

示例4: QChem

# 需要导入模块: from molecule import Molecule [as 别名]
# 或者: from molecule.Molecule import write [as 别名]

#.........这里部分代码省略.........
        # and "scf_guess_mix 5" which allows us to find broken
        # symmetry states.
        self.coreguess = True
        # Error message if the calculation failed for a known reason
        self.errmsg = ''
        # qcdsav is "known-good qcdir for this object",
        # used to restore from failed calcs (e.g. SCF failure)
        self.qcdsav = self.qcdir+'sav'
        #--------
        # The clean option makes sure nothing on the disk influences this calculation.
        # This can be a bit confusing.  There are two modes of usage:
        # 1) Clean OFF.  Calculation uses whatever is in qcdir and backs it up to qcdsav on successful calcs.
        # 2) Clean ON.  qcdir is always cleared, and copied over from qcdsav (if exist) prior to calling Q-Chem.
        # This allows us to save the state of a good calculation without worrying about outside interference.
        # - Use case 1: AnalyzeReaction.py does not like to read SCF guesses from previous calculations so we use clean = True.
        # - Use case 2: Growing string does like to read SCF guesses so we use clean = False.
        # - Use case 3: IRC calculation requires Hessian from a previous calculation, so again we use clean = False.
        self.clean = clean
        # If readsave is set, then copy it to self.qcdsav and it will be used
        # to initialize this calculation.  Otherwise self.qcdsav will be removed.
        self.readsave = readsave
        if isinstance(self.readsave, str):
            if not os.path.isdir(self.readsave):
                raise RuntimeError('Tried to initialize Q-Chem reading from a save folder but does not exist')
	    if self.readsave == self.qcdsav: pass
            elif os.path.exists(self.qcdsav):
                shutil.rmtree(self.qcdsav)
                shutil.copytree(self.readsave, self.qcdsav)
        elif isinstance(self.readsave, int) and self.readsave: pass
        elif os.path.exists(self.qcdsav): shutil.rmtree(self.qcdsav)
        # Remove self.qcdir; it will be restored from self.qcdsav right before calling Q-Chem.
        if os.path.exists(self.qcdir): shutil.rmtree(self.qcdir)

    def write(self, *args, **kwargs):
        """ Write the Molecule object to a file. """
        self.M.write(*args, **kwargs)

    def write_qcin(self):
        """ Write Q-Chem input file. """
        rems = OrderedDict([('jobtype', self.jobtype)])
        rems['scf_convergence'] = 8
        # If not the first calculation, read SCF guess from the first calculation.
        if self.readguess and os.path.exists(self.qcdsav):
            rems['scf_guess'] = 'read'
            rems['scf_guess_mix'] = None
        elif self.coreguess:
            rems['scf_guess'] = 'core'
            rems['scf_guess_mix'] = 5
        # Add SCF convergence rem variables.
        rems.update(self.remscf)
        # Add job-related rem variables.
        rems.update(self.remextra)
        # If doing stability analysis, loosen SCF convergence tolerance by 1.
        # This is a bootleg solution to our workflow hanging indefinitely
        # when Q-Chem crashes.
        if 'stability_analysis' in rems.keys():
            rems['scf_convergence'] -= 2
        # Create copy of stored Molecule object, update
        # Q-Chem rem variables and write Q-Chem input file.
        M1 = deepcopy(self.M)
        M1.edit_qcrems(rems)
        M1.write(self.qcin, ftype="qcin")

    def DIE(self, errmsg):
        """ Does what it says. """
        raise RuntimeError("Error: Q-Chem calculation failed! (%s)" % errmsg)
开发者ID:leeping,项目名称:qchem-utils,代码行数:70,代码来源:qchem.py


注:本文中的molecule.Molecule.write方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。