Implement a constraint on the Model.
The solution model can be restricted two ways, either by penalizing "bad" conformations (a restraint) or by forcing some set of attributes to a function of other attributes (a constraint). For example, rigid bodies consisting of a number of particles could be implemented either way.
In IMP, constraints are implemented as a type of ScoreState. Before evaluation, the constraint updates the attributes of some of the particles to ensure that the constraint is satisfied. Since this update creates implicit relationships between the particles, after the derivatives are computed, the constraint can move them around to make sure the derivatives of the optimizer parameters are correct.
In general, constraints are associated with Decorator objects and created invisibly when needed.
Inheritance diagram for IMP::Constraint:Public Member Functions | |
| Constraint (Model *m, std::string name="Constraint %1%") | |
Public Member Functions inherited from IMP::ScoreState | |
| ScoreState (Model *m, std::string name="ScoreState %1%") | |
| void | after_evaluate (DerivativeAccumulator *accpt) |
| void | before_evaluate () |
| virtual ContainersTemp | get_input_containers () const =0 |
| virtual ContainersTemp | get_output_containers () const =0 |
| virtual ParticlesTemp | get_input_particles () const =0 |
| virtual ParticlesTemp | get_output_particles () const =0 |
Public Member Functions inherited from IMP::ModelObject | |
| ModelObject (Model *m, std::string name) | |
| ModelObjectsTemp | get_inputs () const |
| Model * | get_model () const |
| ModelObjectsTemp | get_outputs () const |
Public Member Functions inherited from IMP::base::Object | |
| std::size_t | __hash__ () const |
| virtual std::string | get_type_name () const =0 |
| Return a string identifying the type of the object. | |
| virtual IMP::base::VersionInfo | get_version_info () const =0 |
| Get information about the module and version of the object. | |
| void | set_check_level (CheckLevel l) |
| void | set_log_level (LogLevel l) |
| Set the logging level used in this object. | |
| 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) |
Additional Inherited Members | |
Protected Member Functions inherited from IMP::ScoreState | |
| virtual void | do_after_evaluate (DerivativeAccumulator *accpt)=0 |
| virtual void | do_before_evaluate ()=0 |
Protected Member Functions inherited from IMP::ModelObject | |
| virtual ModelObjectsTemp | do_get_inputs () const =0 |
| virtual ModelObjectsTemp | do_get_outputs () const =0 |
| virtual void | do_update_dependencies (const DependencyGraph &, const DependencyGraphVertexIndex &) |
| void | update_dependencies (const DependencyGraph &dg, const DependencyGraphVertexIndex &index) |
Protected Member Functions inherited from IMP::base::Object | |
| Object (std::string name) | |