IMP logo

IMP::core::MoverBase Class Reference


Detailed Description

A class to help implement movers.

This class helps in implementing Movers by allowing changes to be easily rolled back. It maintains a list of particles and a list of attributes. All changes to the product of those two lists will be rolled back when reject_move() is called.

See NormalMover for a simple example using this class.

Inheritance diagram for IMP::core::MoverBase:

Inheritance graph
[legend]

Public Member Functions

virtual void accept_move ()
SingletonContainerget_container () const
virtual void propose_move (Float f)
virtual void reject_move ()

Methods to manipulate the set of controlled attributes

Each of the attributes whose FloatKey or IntKey is added to the list below is controlled by the MoverBase in each particle in the container.

unsigned int add_int_key (IntKey obj)
void add_int_keys (const IntKeys &obj)
void clear_int_keys ()
bool get_has_int_keys () const
 return true if there are any objects in the container
IntKey get_int_key (unsigned int i) const
unsigned int get_number_of_int_keys () const
IntKeyConstIterator int_keys_begin () const
IntKeyIterator int_keys_begin ()
IntKeyConstIterator int_keys_end () const
IntKeyIterator int_keys_end ()
void remove_int_key (IntKey d)
 Remove any occurences of d from the container.
void remove_int_keys (const IntKeys &d)
 Remove any occurences of each item in d.
template<class F >
void remove_int_keys_if (const F &f)
 Remove any occurrences for which f is true.
void reserve_int_keys (unsigned int sz)
void set_int_keys (const IntKeys &ps)
unsigned int add_float_key (FloatKey obj)
void add_float_keys (const FloatKeys &obj)
void clear_float_keys ()
FloatKeyConstIterator float_keys_begin () const
FloatKeyIterator float_keys_begin ()
FloatKeyConstIterator float_keys_end () const
FloatKeyIterator float_keys_end ()
FloatKey get_float_key (unsigned int i) const
bool get_has_float_keys () const
 return true if there are any objects in the container
unsigned int get_number_of_float_keys () const
void remove_float_key (FloatKey d)
 Remove any occurences of d from the container.
void remove_float_keys (const FloatKeys &d)
 Remove any occurences of each item in d.
template<class F >
void remove_float_keys_if (const F &f)
 Remove any occurrences for which f is true.
void reserve_float_keys (unsigned int sz)
void set_float_keys (const FloatKeys &ps)

Protected Member Functions

virtual void generate_move (Float f)=0
 implement this method to propose a move
Float get_float (unsigned int i, unsigned int j) const
 Get the value of a controlled attribute.
Int get_int (unsigned int i, unsigned int j) const
 Get an int attribute value.
 MoverBase (SingletonContainer *sc)
void propose_value (unsigned int i, unsigned int j, Int t)
 Propose a value.
void propose_value (unsigned int i, unsigned int j, Float t)
 Propose a value.

Friends

template<class T >
void IMP::internal::unref (T *)

Member Function Documentation

unsigned int IMP::core::MoverBase::add_float_key ( FloatKey  obj  )  [protected]

Returns:
index of object within the object

void IMP::core::MoverBase::add_float_keys ( const FloatKeys &  obj  )  [protected]

Add several objects to the container. They are not necessarily added at the end.

unsigned int IMP::core::MoverBase::add_int_key ( IntKey  obj  ) 

Returns:
index of object within the object

void IMP::core::MoverBase::add_int_keys ( const IntKeys &  obj  ) 

Add several objects to the container. They are not necessarily added at the end.

virtual void IMP::core::MoverBase::generate_move ( Float  f  )  [protected, pure virtual]

implement this method to propose a move

See NormalMover for a simple example.

Float IMP::core::MoverBase::get_float ( unsigned int  i,
unsigned int  j 
) const [protected]

Get the value of a controlled attribute.

Parameters:
[in] i The index of the particle.
[in] j The index of the attribute.

FloatKey IMP::core::MoverBase::get_float_key ( unsigned int  i  )  const [protected]

Get the object refered to by the index

Exceptions:
IndexException in Python if the index is out of range

Int IMP::core::MoverBase::get_int ( unsigned int  i,
unsigned int  j 
) const [protected]

Get an int attribute value.

Parameters:
[in] i The index of the particle.
[in] j The index of the attribute.

IntKey IMP::core::MoverBase::get_int_key ( unsigned int  i  )  const

Get the object refered to by the index

Exceptions:
IndexException in Python if the index is out of range

virtual void IMP::core::MoverBase::propose_move ( Float  f  )  [virtual]

This sets everything up and then calls the generate_move method.

Implements IMP::core::Mover.

void IMP::core::MoverBase::propose_value ( unsigned int  i,
unsigned int  j,
Int  t 
) [protected]

Propose a value.

Parameters:
[in] i The index of the particle.
[in] j The index of the key
[in] t The value to propose

void IMP::core::MoverBase::propose_value ( unsigned int  i,
unsigned int  j,
Float  t 
) [protected]

Propose a value.

Parameters:
[in] i The index of the particle.
[in] j The index of the key
[in] t The value to propose

void IMP::core::MoverBase::set_float_keys ( const FloatKeys &  ps  )  [protected]

Set the contents of the container to ps removing all its current contents.

void IMP::core::MoverBase::set_int_keys ( const IntKeys &  ps  ) 

Set the contents of the container to ps removing all its current contents.


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

Generated on Mon Mar 8 23:08:57 2010 for IMP by doxygen 1.5.8