Rigid bodies
Keywords: manual

Next: Symmetry restraints Up: Spatial restraints Previous: Excluded pairs Contents Index

##
Rigid bodies

You can mark groups of atoms as belonging to a rigid body. They will be moved together during optimization, such that their relative orientations do not change. These are created by making a `rigid_body` object and adding it to the restraints.rigid_bodies list.

`rigid_body(*atom_ids)`
Creates a new rigid body which contains all of the specified atoms. You can also tune the scale_factor member of the resulting object, which is used to scale the system state vector (used by conjugate_gradients() and quasi_newton() optimizations) to rigid body orientation Euler angles (in radians). (Note that no scaling is done for the position of the rigid body; thus the units of this factor are effectively radians/Å.) This can improve optimization convergence in some cases. By default the scaling factor is 1.0; values larger than 1 increase the rotational sampling, while values less than 1 will decrease it.

Example: examples/python/rigid_body.py

      from modeller import *

      env = environ()
      env.io.atom_files_directory = '../commands'
      mdl = model(env, file='1fas')

      # Keep residues 1-10 rigid:
      r = rigid_body(mdl.residue_range('1:', '10:'))
      mdl.restraints.rigid_bodies.append(r)

      # Randomize the coordinates of the whole model; the rigid body remains rigid
      sel = selection(mdl)
      sel.randomize_xyz(deviation=4.0)
      mdl.write(file='1fas.ini')