def report(self, sim, state): """Generate a report. Parameters ---------- sim : :class:`app.Simulation` The Simulation to generate a report for state : :class:`mm.State` The current state of the simulation """ global VELUNIT crds = state.getPositions().value_in_unit(u.angstrom) if self.rst7 is None: self.uses_pbc = sim.topology.getUnitCellDimensions() is not None self.atom = len(crds) # First time written self.rst7 = Rst7( natom=self.atom, title='Restart file written by ParmEd with OpenMM') self.rst7.time = state.getTime().value_in_unit(u.picosecond) flatcrd = [0.0 for i in xrange(self.atom * 3)] for i in xrange(self.atom): i3 = i * 3 flatcrd[i3], flatcrd[i3 + 1], flatcrd[i3 + 2] = crds[i] self.rst7.coordinates = flatcrd if self.write_velocities: vels = state.getVelocities().value_in_unit(VELUNIT) flatvel = [0.0 for i in xrange(self.atom * 3)] for i in xrange(self.atom): i3 = i * 3 flatvel[i3], flatvel[i3 + 1], flatvel[i3 + 2] = vels[i] self.rst7.vels = flatvel if self.uses_pbc: boxvecs = state.getPeriodicBoxVectors() lengths, angles = box_vectors_to_lengths_and_angles(*boxvecs) lengths = lengths.value_in_unit(u.angstrom) angles = angles.value_in_unit(u.degree) self.rst7.box = [ lengths[0], lengths[1], lengths[2], angles[0], angles[1], angles[2] ] if self.write_multiple: fname = self.fname + '.%d' % sim.currentStep else: fname = self.fname self.rst7.write(fname, self.netcdf)
def get_U_invU(asu_rst7_file_name): rst7 = Rst7.open(asu_rst7_file_name) UCbox = rst7.box U, invU = raf.CompXfrm(UCbox) return U, invU, UCbox
#! /usr/bin/env python import sander from chemistry.amber.readparm import AmberParm, Rst7 import numpy as np pdb = '3stl' parm = AmberParm('4amber_%s.prmtop' % pdb) #topo rst = Rst7.open('4amber_%s.rst7' % pdb) #box sander.setup(parm, rst.coordinates, rst.box, sander.pme_input()) ene, frc = sander.energy_forces() print ene.tot print max(frc) import code code.interact(local=dict(globals(), **locals())) sander.cleanup()
#! /usr/bin/env python import sander from chemistry.amber.readparm import AmberParm, Rst7 import numpy as np pdb ='3stl' parm = AmberParm('4amber_%s.prmtop' %pdb) #topo rst = Rst7.open('4amber_%s.rst7' %pdb) #box sander.setup(parm, rst.coordinates, rst.box, sander.pme_input()) ene, frc = sander.energy_forces() print ene.tot print max(frc) import code; code.interact(local=dict(globals(), **locals())) sander.cleanup()
#! /usr/bin/env python import sander from chemistry.amber.readparm import AmberParm, Rst7 from chemistry.structure import Structure, read_PDB, write_PDB import numpy as np parm = AmberParm('4amber_1cby.prmtop') pdb = read_PDB('new.pdb') rst = Rst7.open('4amber_1cby.rst7') xyz = pdb.pdbxyz[0] sander.setup(parm,xyz, rst.box, sander.pme_input()) sander.set_positions(xyz) ene, frc = sander.energy_forces() #~ import code; code.interact(local=dict(globals(), **locals())) sander.cleanup()