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
Esempio n. 2
0
    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
Esempio n. 3
0
    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)
Esempio n. 4
0
 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):
     self.m = m
     self.nframe = -1
     self.cg = IMP.core.ConjugateGradients(self.m)
     self.cg.set_scoring_function(get_restraint_set(self.m))
Esempio n. 7
0
    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)
Esempio n. 8
0
    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)