IMP Reference Guide  develop.8b7eb21230,2024/06/24 The Integrative Modeling Platform
IMP::core::GenericBoundingBox3DSingletonScore< UF > Class Template Reference

#include <IMP/core/BoundingBox3DSingletonScore.h>

Inheritance diagram for IMP::core::GenericBoundingBox3DSingletonScore< UF >:

## Detailed Description

### template<class UF> class IMP::core::GenericBoundingBox3DSingletonScore< UF >

A generic C++ template for scoring particles based on how far outside a box they are using unary function UF. The bounding box score is evaluated by applying a function f of class UF to a particle based on the distance of its center from the bounding box walls. The radius of the particle is ignored. If the particle is within the bounding box, the score is always 0. Logically, it is exepcted that f(0) = 0 and f(x) > 0 if x>0.

In Python, use the templated BoundingBox3DSingletonScore class as in the following example. In the example, 10 particles of radius 1.0 are generated in a 10 A x 10 A x 10 A bounding box. The particles are restrained in the bounding box by applying an upper-bounded harmonic potential. It is upper bounded because it is active only outside the bounding box.

1 k_bb = 10.0 # bounding box force coefficient in kcal/mol/A^2
2 bb_side = 10.0 # in A
3 radius = 1.0 # in A
4 number
5 m = IMP.Model()
7  IMP.algebra.Vector3D(bb_side, bb_side, bb_side))
8 particles = []
9 for i in range(0,10):
10  p = IMP.Particle(m)
14  d.set_coordinates_are_optimized(True)
15  particles.append(p)
18 bbr = IMP.container.SingletonsRestraint(bbss, particles)
BoundingBox3DSingletonScore
create_bounding_box_3d_singleton_score

Definition at line 64 of file BoundingBox3DSingletonScore.h.

## Public Member Functions

GenericBoundingBox3DSingletonScore (UF *f, const algebra::BoundingBoxD< 3 > &bb)

virtual ModelObjectsTemp do_get_inputs (Model *m, const ParticleIndexes &pis) const override
Overload this method to specify the inputs. More...

double evaluate_if_good_indexes (Model *m, const ParticleIndexes &p, DerivativeAccumulator *da, double max, unsigned int lower_bound, unsigned int upper_bound) const override

virtual double evaluate_index (Model *m, ParticleIndex p, DerivativeAccumulator *da) const override

double evaluate_indexes (Model *m, const ParticleIndexes &p, DerivativeAccumulator *da, unsigned int lower_bound, unsigned int upper_bound) const overridefinal
Compute the score and the derivative if needed over a set. More...

double evaluate_indexes_delta (Model *m, const ParticleIndexes &p, DerivativeAccumulator *da, const std::vector< unsigned > &indexes, std::vector< double > &score) const overridefinal
Compute the change in score and the derivative if needed over a set. More...

double evaluate_indexes_scores (Model *m, const ParticleIndexes &p, DerivativeAccumulator *da, unsigned int lower_bound, unsigned int upper_bound, std::vector< double > &score) const overridefinal
Compute the score and the derivative if needed over a set. More...

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...

Public Member Functions inherited from IMP::SingletonScore
SingletonScore (std::string name="SingletonScore %1%")

Restraints create_current_decomposition (Model *m, ParticleIndex vt) const

virtual double evaluate_if_good_index (Model *m, ParticleIndex vt, DerivativeAccumulator *da, double max) const
Compute the score and the derivative if needed, only if "good". More...

Public Member Functions inherited from IMP::ParticleInputs
ModelObjectsTemp get_inputs (Model *m, const ParticleIndexes &pis) const
Get the ModelObjects read when the given list of particles is used. 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)

Public Types inherited from IMP::SingletonScore
typedef ParticleArgument

typedef ParticleIndex IndexArgument

typedef SingletonModifier Modifier

typedef ParticlePassArgument

typedef ParticleIndex PassIndexArgument

Protected Member Functions inherited from IMP::SingletonScore
virtual Restraints do_create_current_decomposition (Model *m, ParticleIndex vt) const
Override this to return your own decomposition. More...

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

template<class UF >
 IMP::core::GenericBoundingBox3DSingletonScore< UF >::GenericBoundingBox3DSingletonScore ( UF * f, const algebra::BoundingBoxD< 3 > & bb )
Parameters
 f an unary function applied to particles that are outside the box. f is passed the distance of the particle center from the bounding box walls, ignoring the particle radius. Logically, it is exepcted to satisfy f(0) = 0 and f(x) > 0 if x>0. bb the bounding box to which f is applied

## Member Function Documentation

template<class UF >
 virtual ModelObjectsTemp IMP::core::GenericBoundingBox3DSingletonScore< UF >::do_get_inputs ( Model * m, const ParticleIndexes & pis ) const
overridevirtual

Overload this method to specify the inputs.

Implements IMP::ParticleInputs.

Definition at line 87 of file BoundingBox3DSingletonScore.h.

Here is the call graph for this function:

template<class UF >
 double IMP::core::GenericBoundingBox3DSingletonScore< UF >::evaluate_if_good_indexes ( Model * m, const ParticleIndexes & o, DerivativeAccumulator * da, double max, unsigned int lower_bound, unsigned int upper_bound ) const
overridevirtual

Compute the score and the derivative if needed over a set, only if "good". This functions similarly to evaluate_indexes(), but may terminate the computation early if the total score is higher than max.

Returns
the score if score<= max or some arbitrary value > max otherwise.
Note
An implementation for this is provided by the IMP_SINGLETON_SCORE_METHODS() macro.

Reimplemented from IMP::SingletonScore.

Definition at line 91 of file BoundingBox3DSingletonScore.h.

template<class UF >
 virtual double IMP::core::GenericBoundingBox3DSingletonScore< UF >::evaluate_index ( Model * m, ParticleIndex p, DerivativeAccumulator * da ) const
overridevirtual

return 0 if the p is within the bounding box or f(d) if it is outside the bounding box, where f is the unary function provided during construction and d is the distance of the center of p from the bounding box walls. Update derivatives as needed, weighted using da.

Implements IMP::SingletonScore.

template<class UF >
 double IMP::core::GenericBoundingBox3DSingletonScore< UF >::evaluate_indexes ( Model * m, const ParticleIndexes & o, DerivativeAccumulator * da, unsigned int lower_bound, unsigned int upper_bound ) const
finaloverridevirtual

Compute the score and the derivative if needed over a set.

Parameters
 m the model of o o objects of type Particle, specified by index da a derivative accumulator that weights computed derivatives. If nullptr, derivatives will not be computed. lower_bound index of first item in o to evaluate upper_bound index one past last item in o to evaluate
Note
An implementation for this is provided by the IMP_SINGLETON_SCORE_METHODS() macro.

Reimplemented from IMP::SingletonScore.

Definition at line 91 of file BoundingBox3DSingletonScore.h.

template<class UF >
 double IMP::core::GenericBoundingBox3DSingletonScore< UF >::evaluate_indexes_delta ( Model * m, const ParticleIndexes & o, DerivativeAccumulator * da, const std::vector< unsigned > & indexes, std::vector< double > & score ) const
finaloverridevirtual

Compute the change in score and the derivative if needed over a set.

The score for each o[indexes[x]] is updated in score[indexes[x]] and the total difference between the old and new score values (over the set) is returned.

Note
An implementation for this is provided by the IMP_SINGLETON_SCORE_METHODS() macro.

Reimplemented from IMP::SingletonScore.

Definition at line 91 of file BoundingBox3DSingletonScore.h.

template<class UF >
 double IMP::core::GenericBoundingBox3DSingletonScore< UF >::evaluate_indexes_scores ( Model * m, const ParticleIndexes & o, DerivativeAccumulator * da, unsigned int lower_bound, unsigned int upper_bound, std::vector< double > & score ) const
finaloverridevirtual

Compute the score and the derivative if needed over a set.

Like regular evaluate_indexes(), but the score for each o[x] is also returned as score[x].

Note
An implementation for this is provided by the IMP_SINGLETON_SCORE_METHODS() macro.

Reimplemented from IMP::SingletonScore.

Definition at line 91 of file BoundingBox3DSingletonScore.h.

template<class UF >
 virtual ::IMP::VersionInfo IMP::core::GenericBoundingBox3DSingletonScore< UF >::get_version_info ( ) const
overridevirtual

Get information about the module and version of the object.

Reimplemented from IMP::Object.

Definition at line 92 of file BoundingBox3DSingletonScore.h.

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