def __init__(self, m, objects, kt, gamma=0.01, maximum_time_step=1.0, sf=None): """Setup MD @param m The IMP Model @param objects What to sample. Use flat list of particles or (deprecated) 'MD Sample Objects' from PMI1 @param kt Temperature @param gamma Viscosity parameter @param maximum_time_step MD max time step """ self.m = m # check if using PMI1 objects dictionary, or just list of particles try: for obj in objects: to_sample = obj.get_particles_to_sample( )['Floppy_Bodies_SimplifiedModel'][0] except: to_sample = objects self.ltstate = IMP.atom.LangevinThermostatOptimizerState( self.m, to_sample, kt / 0.0019872041, gamma) self.md = IMP.atom.MolecularDynamics(self.m) self.md.set_maximum_time_step(maximum_time_step) if sf: self.md.set_scoring_function(sf) else: self.md.set_scoring_function(get_restraint_set(self.m)) self.md.add_optimizer_state(self.ltstate) self.simulated_annealing = False self.nframe = -1
def __init__(self,m,objects,kt,gamma=0.01,maximum_time_step=1.0): """Setup MD @param m The IMP Model @param objects What to sample. Use flat list of particles or (deprecated) 'MD Sample Objects' from PMI1 @param kt Temperature @param gamma Viscosity parameter @param maximum_time_step MD max time step """ self.m=m # check if using PMI1 objects dictionary, or just list of particles try: for obj in objects: to_sample=obj.get_particles_to_sample()['Floppy_Bodies_SimplifiedModel'][0] except: to_sample = objects self.ltstate=IMP.atom.LangevinThermostatOptimizerState(self.m,to_sample, kt/0.0019872041, gamma) self.md = IMP.atom.MolecularDynamics(self.m) self.md.set_maximum_time_step(maximum_time_step) self.md.set_scoring_function(get_restraint_set(self.m)) self.md.add_optimizer_state(self.ltstate) self.simulated_annealing = False self.nframe = -1
def __init__(self, m, objects, temp, filterbyname=None, dof=None): """Setup Monte Carlo sampling @param m The IMP Model @param objects Sample Objects. Alternatively pass the degrees of freedom object @param temp The initial MC temperature @param filterbyname Not implemented @param dof DegreesOfFreedom object (replaces "objects") """ # check that the objects containts get_particles_to_sample methods # and the particle type is supported # list of particles to sample self.losp self.losp = ["Rigid_Bodies", "Floppy_Bodies", "Nuisances", "X_coord", "Weights"] self.simulated_annealing = False self.selfadaptive = False # that is -1 because mc has not yet run self.nframe = -1 self.temp = temp self.mvs = [] self.mvslabels = [] self.label = "None" self.m = m if dof is not None: self.mvs = dof.get_all_movers() else: for ob in objects: try: ob.get_particles_to_sample() except: print("MonteCarlo: object ", ob, " doesn't have get_particles_to_sample() method") pts = ob.get_particles_to_sample() for k in pts.keys(): if "Rigid_Bodies" in k: mvs = self.get_rigid_body_movers(pts[k][0], pts[k][1], pts[k][2]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "SR_Bodies" in k: print(len(pts[k])) mvs = self.get_super_rigid_body_movers(pts[k][0], pts[k][1], pts[k][2]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Floppy_Bodies" in k: mvs = self.get_floppy_body_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "X_coord" in k: mvs = self.get_X_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Nuisances" in k: if not self.isd_available: raise ValueError("isd module needed to use nuisances") mvs = self.get_nuisance_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Weights" in k: if not self.isd_available: raise ValueError("isd module needed to use weights") mvs = self.get_weight_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs # SerialMover self.smv = IMP.core.SerialMover(self.mvs) self.mc = IMP.core.MonteCarlo(self.m) self.mc.set_scoring_function(get_restraint_set(self.m)) self.mc.set_return_best(False) self.mc.set_kt(self.temp) self.mc.add_mover(self.smv)
def __init__(self, m, objects): self.m = m self.nframe = -1 self.cg = IMP.core.ConjugateGradients(self.m) self.cg.set_scoring_function(get_restraint_set(self.m))
def __init__(self, m, objects=None, temp=1.0, filterbyname=None): """Setup Monte Carlo sampling @param m The IMP Model @param objects What to sample. Use flat list of particles or (deprecated) 'MC Sample Objects' from PMI1 @param temp The MC temperature @param filterbyname Not used """ self.losp = [ "Rigid_Bodies", "Floppy_Bodies", "Nuisances", "X_coord", "Weights" "Surfaces" ] self.simulated_annealing = False self.selfadaptive = False # that is -1 because mc has not yet run self.nframe = -1 self.temp = temp self.mvs = [] self.mvslabels = [] self.label = "None" self.m = m self.movers_data = {} # check if using PMI1 or just passed a list of movers gather_objects = False try: objects[0].get_particles_to_sample() gather_objects = True except: self.mvs = objects print(gather_objects) if gather_objects: for ob in objects: pts = ob.get_particles_to_sample() for k in pts.keys(): if "Rigid_Bodies" in k: mvs = self.get_rigid_body_movers( pts[k][0], pts[k][1], pts[k][2]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "SR_Bodies" in k: print(len(pts[k])) mvs = self.get_super_rigid_body_movers( pts[k][0], pts[k][1], pts[k][2]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Floppy_Bodies" in k: mvs = self.get_floppy_body_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "X_coord" in k: mvs = self.get_X_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Nuisances" in k: if not self.isd_available: raise ValueError( "isd module needed to use nuisances") mvs = self.get_nuisance_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Weights" in k: if not self.isd_available: raise ValueError( "isd module needed to use weights") mvs = self.get_weight_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Surfaces" in k: mvs = self.get_surface_movers(pts[k][0], pts[k][1], pts[k][2], pts[k][3]) for mv in mvs: mv.set_name(k) self.mvs += mvs # SerialMover self.smv = IMP.core.SerialMover(self.mvs) self.mc = IMP.core.MonteCarlo(self.m) self.mc.set_scoring_function(get_restraint_set(self.m)) self.mc.set_return_best(False) self.mc.set_kt(self.temp) self.mc.add_mover(self.smv)
def __init__(self, m, objects=None, temp=1.0, filterbyname=None): """Setup Monte Carlo sampling @param m The IMP Model @param objects What to sample. Use flat list of particles or (deprecated) 'MC Sample Objects' from PMI1 @param temp The MC temperature @param filterbyname Not used """ self.losp = [ "Rigid_Bodies", "Floppy_Bodies", "Nuisances", "X_coord", "Weights"] self.simulated_annealing = False self.selfadaptive = False # that is -1 because mc has not yet run self.nframe = -1 self.temp = temp self.mvs = [] self.mvslabels = [] self.label = "None" self.m = m # check if using PMI1 or just passed a list of movers gather_objects = False try: objects[0].get_particles_to_sample() gather_objects = True except: self.mvs = objects if gather_objects: for ob in objects: pts = ob.get_particles_to_sample() for k in pts.keys(): if "Rigid_Bodies" in k: mvs = self.get_rigid_body_movers( pts[k][0], pts[k][1], pts[k][2]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "SR_Bodies" in k: print(len(pts[k])) mvs = self.get_super_rigid_body_movers( pts[k][0], pts[k][1], pts[k][2]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Floppy_Bodies" in k: mvs = self.get_floppy_body_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "X_coord" in k: mvs = self.get_X_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Nuisances" in k: if not self.isd_available: raise ValueError("isd module needed to use nuisances") mvs = self.get_nuisance_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Weights" in k: if not self.isd_available: raise ValueError("isd module needed to use weights") mvs = self.get_weight_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs # SerialMover self.smv = IMP.core.SerialMover(self.mvs) self.mc = IMP.core.MonteCarlo(self.m) self.mc.set_scoring_function(get_restraint_set(self.m)) self.mc.set_return_best(False) self.mc.set_kt(self.temp) self.mc.add_mover(self.smv)
def __init__(self, m, objects, temp, filterbyname=None, dof=None): """Setup Monte Carlo sampling @param m The IMP Model @param objects Sample Objects. Alternatively pass the degrees of freedom object @param temp The initial MC temperature @param filterbyname Not implemented @param dof DegreesOfFreedom object (replaces "objects") """ # check that the objects containts get_particles_to_sample methods # and the particle type is supported # list of particles to sample self.losp self.losp = [ "Rigid_Bodies", "Floppy_Bodies", "Nuisances", "X_coord", "Weights" ] self.simulated_annealing = False self.selfadaptive = False # that is -1 because mc has not yet run self.nframe = -1 self.temp = temp self.mvs = [] self.mvslabels = [] self.label = "None" self.m = m if dof is not None: self.mvs = dof.get_all_movers() else: for ob in objects: try: ob.get_particles_to_sample() except: print("MonteCarlo: object ", ob, " doesn't have get_particles_to_sample() method") pts = ob.get_particles_to_sample() for k in pts.keys(): if "Rigid_Bodies" in k: mvs = self.get_rigid_body_movers( pts[k][0], pts[k][1], pts[k][2]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "SR_Bodies" in k: print(len(pts[k])) mvs = self.get_super_rigid_body_movers( pts[k][0], pts[k][1], pts[k][2]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Floppy_Bodies" in k: mvs = self.get_floppy_body_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "X_coord" in k: mvs = self.get_X_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Nuisances" in k: if not self.isd_available: raise ValueError( "isd module needed to use nuisances") mvs = self.get_nuisance_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs if "Weights" in k: if not self.isd_available: raise ValueError( "isd module needed to use weights") mvs = self.get_weight_movers(pts[k][0], pts[k][1]) for mv in mvs: mv.set_name(k) self.mvs += mvs # SerialMover self.smv = IMP.core.SerialMover(self.mvs) self.mc = IMP.core.MonteCarlo(self.m) self.mc.set_scoring_function(get_restraint_set(self.m)) self.mc.set_return_best(False) self.mc.set_kt(self.temp) self.mc.add_mover(self.smv)