IMP logo
IMP Reference Guide  develop.95736ecade,2024/03/01
The Integrative Modeling Platform
IMP::core::RigidBodyTunneler Class Reference

Modify the transformation of a rigid body. More...

#include <IMP/core/RigidBodyTunneler.h>

+ Inheritance diagram for IMP::core::RigidBodyTunneler:

Detailed Description

Modify the transformation of a rigid body.

Provided a number of entry points, this mover will propose random translations of the rigid body from the closest entry point to a randomly chosen other one. Moves that do not end up in the target exit area will be dropped. This way of moving thus satisfies detailed balance. Entry points are relative to the center of the provided reference rigid body.

The procedure is as follows. Suppose we are at x. pick closest entry point to x: k do pick random other entry point if one is still available: l compute new position y by applying to x the transform that maps k to l while (closest entry point to y is not l) if (closest entry point to y is l) propose y as move else do nothing

See Also
RigidBodyMover
MonteCarlo

Definition at line 46 of file RigidBodyTunneler.h.

Public Member Functions

 RigidBodyTunneler (Model *m, ParticleIndexes pis, ParticleIndex ref, double k, double move_probability=1.)
 
void add_entry_point (Floats fl)
 add entry point More...
 
unsigned get_number_of_calls () const
 
unsigned get_number_of_impossible_moves () const
 
unsigned get_number_of_proposed_moves () const
 
unsigned get_number_of_rejected_moves () const
 
virtual std::string get_type_name () const override
 
virtual ::IMP::VersionInfo get_version_info () const override
 Get information about the module and version of the object. More...
 
void reset_stats ()
 Statistics. More...
 
- Public Member Functions inherited from IMP::core::MonteCarloMover
 MonteCarloMover (Model *m, std::string name)
 
void accept ()
 Accept/commit any changes made to the Particles. More...
 
MonteCarloMoverResult propose ()
 Propose a modification. More...
 
void reject ()
 Roll back any changes made to the Particles. More...
 
unsigned int get_number_of_proposed () const
 
unsigned int get_number_of_accepted () const
 
void reset_statistics ()
 
- Public Member Functions inherited from IMP::ModelObject
 ModelObject (Model *m, std::string name)
 
bool get_has_dependencies () const
 Return whether this object has dependencies computed. More...
 
bool get_has_required_score_states () const
 Return whether score states are computed. More...
 
ModelObjectsTemp get_inputs () const
 
ModelObjectsTemps get_interactions () const
 Get the interacting sets induced by this ModelObject. More...
 
Modelget_model () const
 
ModelObjectsTemp get_outputs () const
 
const ScoreStatesTempget_required_score_states () const
 Get the score states that are ancestors of this in the dependency graph. More...
 
void set_has_dependencies (bool tf)
 Either invalidate the dependencies or ensure they are correct. More...
 
void set_has_required_score_states (bool tf)
 Compute the required score states. More...
 
- Public Member Functions inherited from IMP::Object
virtual void clear_caches ()
 
CheckLevel get_check_level () const
 
LogLevel get_log_level () const
 
void set_check_level (CheckLevel l)
 
void set_log_level (LogLevel l)
 Set the logging level used in this object. More...
 
void set_was_used (bool tf) const
 
void show (std::ostream &out=std::cout) const
 
const std::string & get_name () const
 
void set_name (std::string name)
 

Static Public Member Functions

static Floats get_reduced_coordinates (Model *m, ParticleIndex target, ParticleIndex ref)
 returns center of mass and quaternion of rotation wrt ref More...
 
static Floats get_reduced_coordinates (Model *m, ParticleIndex pi)
 returns center of mass and quaternion of rotation of pi More...
 
static void set_reduced_coordinates (Model *m, ParticleIndex target, ParticleIndex ref, Floats coords)
 sets rigid body coordinates in the reference frame of ref More...
 

Protected Member Functions

virtual ModelObjectsTemp do_get_inputs () const override
 
virtual MonteCarloMoverResult do_propose () override
 Implement propose_move() More...
 
virtual void do_reject () override
 Implement reset_proposed_move() More...
 
- Protected Member Functions inherited from IMP::core::MonteCarloMover
virtual void do_accept ()
 Implement accept_proposed_move(); default implementation is empty. More...
 
virtual ModelObjectsTemp do_get_outputs () const override
 
- Protected Member Functions inherited from IMP::ModelObject
virtual ModelObjectsTemps do_get_interactions () const
 
virtual void handle_set_has_required_score_states (bool)
 
- Protected Member Functions inherited from IMP::Object
 Object (std::string name)
 Construct an object with the given name. More...
 
virtual void do_destroy ()
 

Constructor & Destructor Documentation

IMP::core::RigidBodyTunneler::RigidBodyTunneler ( Model m,
ParticleIndexes  pis,
ParticleIndex  ref,
double  k,
double  move_probability = 1. 
)

Constructor

Parameters
mthe model
pisthe rigid bodies to move, in order
refthe RigidBody reference
kthe weight when calculating distances The squared distance between two coordinates is \(d^2_\text{eucl}(COM1,COM2) + k*d^2_\text{quat}(Q1,Q2)\) If you want to weight rotation differences at the same level as translational ones, pick \(k \simeq d_\text{max}/\pi\) where \(d_\text{max}\) is the largest translational difference to be expected.
move_probabilitythe prior probability to actually move somewhere else

Member Function Documentation

void IMP::core::RigidBodyTunneler::add_entry_point ( Floats  fl)

add entry point

each entry point is a list of coordinates that matches the number of rigid bodies in pis (see constructor) If there are N rigid bodies in pis, then an entry point is

  • 3N floats, representing the x,y,z coordinates of the centroid of each of the N rigid bodies
  • 4N floats, corresponding to the N rotational quaternions of the rbs Coordinates are all relative to the reference, i.e. for which the centroid is at the origin and the rotation is identity. TODO: If an entry point should be indifferent of one rigid body, one centroid or one quaternion, the corresponding floats should be set to zero.
virtual ModelObjectsTemp IMP::core::RigidBodyTunneler::do_get_inputs ( ) const
overrideprotectedvirtual

Get any Particle, Container or other ModelObjects read by this during evaluation. If you read everything in a container, you can just return that container.

Implements IMP::ModelObject.

virtual MonteCarloMoverResult IMP::core::RigidBodyTunneler::do_propose ( )
overrideprotectedvirtual

Implement propose_move()

Implements IMP::core::MonteCarloMover.

virtual void IMP::core::RigidBodyTunneler::do_reject ( )
overrideprotectedvirtual

Implement reset_proposed_move()

Implements IMP::core::MonteCarloMover.

static Floats IMP::core::RigidBodyTunneler::get_reduced_coordinates ( Model m,
ParticleIndex  target,
ParticleIndex  ref 
)
static

returns center of mass and quaternion of rotation wrt ref

static Floats IMP::core::RigidBodyTunneler::get_reduced_coordinates ( Model m,
ParticleIndex  pi 
)
static

returns center of mass and quaternion of rotation of pi

virtual ::IMP::VersionInfo IMP::core::RigidBodyTunneler::get_version_info ( ) const
overridevirtual

Get information about the module and version of the object.

Reimplemented from IMP::Object.

Definition at line 106 of file RigidBodyTunneler.h.

void IMP::core::RigidBodyTunneler::reset_stats ( )

Statistics.

static void IMP::core::RigidBodyTunneler::set_reduced_coordinates ( Model m,
ParticleIndex  target,
ParticleIndex  ref,
Floats  coords 
)
static

sets rigid body coordinates in the reference frame of ref


The documentation for this class was generated from the following file: