IMP logo
IMP Reference Guide  2.5.0
The Integrative Modeling Platform
randomize_rigid_body.py
1 ## \example core/randomize_rigid_body.py
2 # This fragment shows how to either perturb or set the orientation of a rigid
3 # body randomly.
4 
5 import IMP.core
6 import IMP.algebra
7 import IMP
8 import sys
9 
10 IMP.setup_from_argv(sys.argv, "randomize rigid body")
11 
12 m = IMP.Model()
13 p = IMP.Particle(m)
16  IMP.algebra.get_unit_bounding_box_3d())
17 
18 # we don't yet have python code to generate a nearby rotation
20 transformation = IMP.algebra.Transformation3D(rotation, translation)
21 # Option 1:
22 # note, this overwrites the existing position
23 rbd.set_reference_frame(IMP.algebra.ReferenceFrame3D(transformation))
24 # Option 2:
25 # perturb the existing transformation
26 composed_tr = IMP.algebra.compose \
27  (rbd.get_reference_frame().get_transformation_to(),
28  transformation)
29 rbd.set_reference_frame(IMP.algebra.ReferenceFrame3D(composed_tr))
30 # Alternative to Option 2:
31 IMP.core.transform(rbd, transformation)
Simple 3D transformation class.
Strings setup_from_argv(const Strings &argv, std::string description, std::string positional_description, int num_positional)
Rotation3D get_random_rotation_3d(const Rotation3D &center, double distance)
Pick a rotation at random near the provided one.
Vector3D get_random_vector_in(const Cylinder3D &c)
Generate a random vector in a cylinder with uniform density.
A reference frame in 3D.
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:72
void transform(XYZ a, const algebra::Transformation3D &tr)
Apply a transformation to the particle.
Basic functionality that is expected to be used by a wide variety of IMP users.
General purpose algebraic and geometric methods that are expected to be used by a wide variety of IMP...
Class to handle individual model particles.
Definition: Particle.h:37
static RigidBody setup_particle(Model *m, ParticleIndex pi, ParticleIndexesAdaptor ps)
Definition: rigid_bodies.h:158