IMP Reference Guide
develop.49f026e7cd,2024/12/04
The Integrative Modeling Platform
|
Restraint between two Gaussian Mixture Models, "model" and "density". More...
#include <IMP/isd/GaussianEMRestraint.h>
Restraint between two Gaussian Mixture Models, "model" and "density".
This restrains two sets of GMMs with a density overlap function. The function is correlation of the two GMMs \(f_M\) and \(f_D\):
\[ \frac{2\int{f_M(x)f_D(x)dx}}{\int{f_M^2(x)+f_D^2(x)dx}} \]
Where the integral is the "overlap function" given by:
\[ ov(f_M,f_D) = \sum_{i=1}^{N_M} \sum_{j=1}^{N_D} \frac{1}{(2 \pi)^{3/2}|\Sigma_{Mi}+\Sigma_{Dj}|^{1/2}}\exp\left [-\frac{1}{2}(\boldsymbol\mu_{Mi} - \boldsymbol\mu_{Dj})^\top (\Sigma_{Mi}+\Sigma_{Dj})^{-1} (\boldsymbol\mu_{Mi} - \boldsymbol \mu_{Dj})\right ] \]
Definition at line 43 of file isd/GaussianEMRestraint.h.
Public Member Functions | |
GaussianEMRestraint (Model *mdl, ParticleIndexes model_ps, ParticleIndexes density_ps, ParticleIndex global_sigma, Float model_cutoff_dist, Float density_cutoff_dist, Float slope, bool update_model=true, bool backbone_slope=false, bool local=false, std::string name="GaussianEMRestraint%1%") | |
Setup the GaussianEMRestraint. More... | |
void | compute_initial_scores () |
Pre-calculate the density-density and model-model scores. More... | |
virtual IMP::ModelObjectsTemp | do_get_inputs () const override |
double | get_cross_correlation_coefficient () const |
Get cross correlation between the model and the map. More... | |
RestraintInfo * | get_dynamic_info () const override |
double | get_probability () const |
Returns exp(score) More... | |
Float | get_slope () |
Get restraint slope. More... | |
RestraintInfo * | get_static_info () const override |
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 | set_density_filename (std::string density_fn) |
Set the filename corresponding to the density GMM particles. More... | |
void | set_slope (Float s) |
Set restraint slope. More... | |
void | show (std::ostream &out) const |
virtual double | unprotected_evaluate (IMP::DerivativeAccumulator *accum) const override |
Return the unweighted score for the restraint. More... | |
Public Member Functions inherited from IMP::Restraint | |
Restraint (Model *m, std::string name) | |
Create a restraint and register it with the model. More... | |
Restraint () | |
Default constructor. More... | |
Restraint * | create_current_decomposition () const |
Decompose this restraint into constituent terms for the current conf. More... | |
Restraint * | create_decomposition () const |
Decompose this restraint into constituent terms. More... | |
virtual ScoringFunction * | create_scoring_function (double weight=1.0, double max=NO_MAX) const |
Create a scoring function with only this restraint. More... | |
bool | get_is_aggregate () const |
Return whether this restraint wraps a number of other restraints. More... | |
double | get_last_last_score () const |
Get the unweighted score from the last-but-one time it was evaluated. More... | |
virtual double | get_last_score () const |
double | get_score () const |
bool | get_was_good () const |
double | evaluate (bool calc_derivs) const |
double | evaluate_moved (bool calc_derivs, const ParticleIndexes &moved_pis, const ParticleIndexes &reset_pis) const |
double | evaluate_moved_if_below (bool calc_derivatives, const ParticleIndexes &moved_pis, const ParticleIndexes &reset_pis, double max) const |
double | evaluate_moved_if_good (bool calc_derivatives, const ParticleIndexes &moved_pis, const ParticleIndexes &reset_pis) const |
double | evaluate_if_good (bool calc_derivatives) const |
double | evaluate_if_below (bool calc_derivatives, double max) const |
virtual double | unprotected_evaluate_moved (DerivativeAccumulator *da, const ParticleIndexes &moved_pis, const ParticleIndexes &reset_pis) const |
Return the unweighted score, taking moving particles into account. More... | |
virtual double | unprotected_evaluate_if_good (DerivativeAccumulator *da, double max) const |
virtual double | unprotected_evaluate_if_below (DerivativeAccumulator *da, double max) const |
The function calling this will treat any score >= max as bad. More... | |
virtual double | unprotected_evaluate_moved_if_below (DerivativeAccumulator *da, const ParticleIndexes &moved_pis, const ParticleIndexes &reset_pis, double max) const |
virtual double | unprotected_evaluate_moved_if_good (DerivativeAccumulator *da, const ParticleIndexes &moved_pis, const ParticleIndexes &reset_pis, double max) const |
void | set_weight (Float weight) |
Float | get_weight () const |
double | get_maximum_score () const |
void | set_maximum_score (double s) |
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... | |
Model * | get_model () const |
ModelObjectsTemp | get_outputs () const |
const ScoreStatesTemp & | get_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) |
Additional Inherited Members | |
Protected Member Functions inherited from IMP::Restraint | |
virtual void | do_add_score_and_derivatives (ScoreAccumulator sa) const |
virtual void | do_add_score_and_derivatives_moved (ScoreAccumulator sa, const ParticleIndexes &moved_pis, const ParticleIndexes &reset_pis) const |
virtual Restraints | do_create_current_decomposition () const |
virtual Restraints | do_create_decomposition () const |
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 () |
Protected Attributes inherited from IMP::Restraint | |
bool | is_aggregate_ |
IMP::isd::GaussianEMRestraint::GaussianEMRestraint | ( | Model * | mdl, |
ParticleIndexes | model_ps, | ||
ParticleIndexes | density_ps, | ||
ParticleIndex | global_sigma, | ||
Float | model_cutoff_dist, | ||
Float | density_cutoff_dist, | ||
Float | slope, | ||
bool | update_model = true , |
||
bool | backbone_slope = false , |
||
bool | local = false , |
||
std::string | name = "GaussianEMRestraint%1%" |
||
) |
Setup the GaussianEMRestraint.
[in] | mdl | the Model object to operate on |
[in] | model_ps | particles for the model GMM |
[in] | density_ps | particles for the density GMM |
[in] | global_sigma | Particle to modulate the uncertainty (currently unused) |
[in] | model_cutoff_dist | Cutoff for the model-model interactions |
[in] | density_cutoff_dist | Cutoff for model-density interactions |
[in] | slope | Gentle term to move all particles to the density |
[in] | update_model | (DEPRECATED) update model each cycle |
[in] | backbone_slope | Limit the slope only to backbone particles |
[in] | local | Only consider density particles that are within the specified cutoff of the model particles (experimental) |
[in] | name | Name of this restraint |
void IMP::isd::GaussianEMRestraint::compute_initial_scores | ( | ) |
Pre-calculate the density-density and model-model scores.
This is automatically called by the constructor. You only need to call it manually if you change Gaussian variances.
|
overridevirtual |
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.
double IMP::isd::GaussianEMRestraint::get_cross_correlation_coefficient | ( | ) | const |
Get cross correlation between the model and the map.
This CCC is that calculated from the last scoring function evaluation; calling this function before the score is calculated results in undefined behavior.
Definition at line 84 of file isd/GaussianEMRestraint.h.
|
overridevirtual |
Reimplemented from IMP::Restraint.
double IMP::isd::GaussianEMRestraint::get_probability | ( | ) | const |
Returns exp(score)
Definition at line 75 of file isd/GaussianEMRestraint.h.
Float IMP::isd::GaussianEMRestraint::get_slope | ( | ) |
Get restraint slope.
Definition at line 107 of file isd/GaussianEMRestraint.h.
|
overridevirtual |
Reimplemented from IMP::Restraint.
|
overridevirtual |
Get information about the module and version of the object.
Reimplemented from IMP::Object.
Definition at line 119 of file isd/GaussianEMRestraint.h.
void IMP::isd::GaussianEMRestraint::set_density_filename | ( | std::string | density_fn | ) |
Set the filename corresponding to the density GMM particles.
If the density GMM particles were read from a file, this method can be used to tell the restraint so that it can track this information back to the original EM density file, which is useful for deposition.
Definition at line 93 of file isd/GaussianEMRestraint.h.
void IMP::isd::GaussianEMRestraint::set_slope | ( | Float | s | ) |
Set restraint slope.
Definition at line 104 of file isd/GaussianEMRestraint.h.
|
overridevirtual |
Return the unweighted score for the restraint.
Reimplemented from IMP::Restraint.