Exemplo n.º 1
0
 def set_relative_movers(self, max_translation, max_rotation):
     """
         Generate the relative models form the transforms. The transforms
         is a list with triplets [id1, id2, transform_file]
         @param max_translation Maximum translation distance allowed for
             the moves
         @param max_rotation Maximum rotation angle allowed for the moves
     """
     log.info("Setting relative movers")
     self.movers = []
     relative_movers = []
     relative_names = []
     for d in self.dock_transforms:
         rb_id = representation.get_rb_name(d[1])
         if rb_id not in relative_names:
             log.debug("Checking for %s", rb_id)
             rb_lig = representation.get_rigid_body(self.rbs, rb_id)
             rb_lig.set_coordinates_are_optimized(True)
             mv = em2d.RelativePositionMover(rb_lig, max_translation,
                                             max_rotation)
             relative_movers.append(mv)
             relative_names.append(rb_id)
             log.debug("added a RelativePositionMover for %s", rb_id)
         i = relative_names.index(rb_id)
         relative_movers[i].set_random_move_probability(
             self.non_relative_move_prob)
         rb_rec = representation.get_rigid_body(
             self.rbs, representation.get_rb_name(d[0]))
         rb_rec.set_coordinates_are_optimized(True)
         log.debug("Reference added for %s: %s. ref. frame %s ", rb_id,
                   rb_rec.get_name(), rb_rec)
         Tis = io.read_transforms(d[2])
         relative_movers[i].add_internal_transformations(rb_rec, Tis)
     # add regular movers for the rigid bodies that are neither moved
     # anchored nor moved relative to others
     regular_movers = []
     for is_anchored, rb in zip(self.anchored, self.rbs):
         if (not is_anchored):
             name = rb.get_name()
             if (not name in relative_names):
                 rb.set_coordinates_are_optimized(True)
                 log.debug("adding a RigidBodyMover for %s", name)
                 mv = core.RigidBodyMover(rb, max_translation, max_rotation)
                 regular_movers.append(mv)
     self.movers = regular_movers
     self.movers += relative_movers
Exemplo n.º 2
0
 def set_relative_movers(self, max_translation, max_rotation):
     """
         Generate the relative models form the transforms. The transforms
         is a list with triplets [id1, id2, transform_file]
         @param max_translation Maximum translation distance allowed for
             the moves
         @param max_rotation Maximum rotation angle allowed for the moves
     """
     log.info("Setting relative movers")
     self.movers = []
     relative_movers = []
     relative_names = []
     for d in self.dock_transforms:
         rb_id = representation.get_rb_name(d[1])
         if rb_id not in relative_names:
             log.debug("Checking for %s", rb_id)
             rb_lig = representation.get_rigid_body(self.rbs, rb_id)
             rb_lig.set_coordinates_are_optimized(True)
             mv = em2d.RelativePositionMover(rb_lig, max_translation,
                                             max_rotation)
             relative_movers.append(mv)
             relative_names.append(rb_id)
             log.debug("added a RelativePositionMover for %s", rb_id)
         i = relative_names.index(rb_id)
         relative_movers[i].set_random_move_probability(
             self.non_relative_move_prob)
         rb_rec = representation.get_rigid_body(self.rbs,
                                                representation.get_rb_name(d[0]))
         rb_rec.set_coordinates_are_optimized(True)
         log.debug("Reference added for %s: %s. ref. frame %s ",
                   rb_id, rb_rec.get_name(), rb_rec)
         Tis = io.read_transforms(d[2])
         relative_movers[i].add_internal_transformations(rb_rec, Tis)
     # add regular movers for the rigid bodies that are neither moved
     # anchored nor moved relative to others
     regular_movers = []
     for is_anchored, rb in zip(self.anchored, self.rbs):
         if(not is_anchored):
             name = rb.get_name()
             if(not name in relative_names):
                 rb.set_coordinates_are_optimized(True)
                 log.debug("adding a RigidBodyMover for %s", name)
                 mv = core.RigidBodyMover(rb, max_translation, max_rotation)
                 regular_movers.append(mv)
     self.movers = regular_movers
     self.movers += relative_movers
Exemplo n.º 3
0
 def set_not_optimized(self, name):
     """
         Set a part of the model as not optimized (it does not move during
         the model optimization)
         @param name of the component to optimized
     """
     if name not in self.names:
         raise ValueError("DominoModel: There is not component " "in the assembly with this name")
     rb_name = representation.get_rb_name(name)
     self.not_optimized_rbs.append(rb_name)
Exemplo n.º 4
0
 def set_not_optimized(self, name):
     """
         Set a part of the model as not optimized (it does not move during
         the model optimization)
         @param name of the component to optimized
     """
     if name not in self.names:
         raise ValueError("DominoModel: There is not component "
                          "in the assembly with this name")
     rb_name = representation.get_rb_name(name)
     self.not_optimized_rbs.append(rb_name)