IMP Reference Guide
develop.63b38c487d,2024/12/21
The Integrative Modeling Platform
|
Apply a function to the distance between two particles with a set of specific binding sites. More...
#include <IMP/npctransport/SitesPairScore.h>
Apply a function to the distance between two particles with a set of specific binding sites.
The sites are expressed in the local reference frame of the two rigid bodies. Care must be taken to pass the bodies in the appropriate order. See construction documentation for more details.
Definition at line 45 of file SitesPairScore.h.
Public Member Functions | |
SitesPairScore (double range, double k, double sigma0_deg, double sigma1_deg, double range_nonspec_attraction, double k_nonspec_attraction, double k_nonspec_repulsion, const algebra::Sphere3Ds &sites0, const algebra::Sphere3Ds &sites1) | |
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 ParticleIndexPairs &p, DerivativeAccumulator *da, double max, unsigned int lower_bound, unsigned int upper_bound) const override |
virtual double | evaluate_index (Model *m, const ParticleIndexPair &p, DerivativeAccumulator *da) const override |
virtual double | evaluate_indexes (Model *m, const ParticleIndexPairs &p, DerivativeAccumulator *da, unsigned int lower_bound, unsigned int upper_bound) const overridefinal |
double | evaluate_site_contributions (Model *m, const ParticleIndexPair &pip, DerivativeAccumulator *da, boost::tuple< unsigned int, std::vector< unsigned int >, std::vector< unsigned int >, bool >(*contacts_accumulator)) const |
double | evaluate_site_contributions_with_internal_tables (algebra::Sphere3D const *spheres_table, double const **quaternions_tables, algebra::Sphere3D *sphere_derivatives_table, double **torques_tables, const ParticleIndexPair &pip, DerivativeAccumulator *da, boost::tuple< unsigned int, std::vector< unsigned int >, std::vector< unsigned int >, bool >(*contacts_accumulator)=nullptr) const |
SitesPairScoreParameters | get_parameters () const |
double | get_sites_k () const |
return the k for site-site attraction More... | |
double | get_sites_range () const |
return the range for site-site attraction 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... | |
void | set_sites (const algebra::Sphere3Ds &sites0, const algebra::Sphere3Ds &sites1) |
void | set_sites0 (const algebra::Sphere3Ds &sites0) |
void | set_sites1 (const algebra::Sphere3Ds &sites1) |
Public Member Functions inherited from IMP::npctransport::LinearInteractionPairScore | |
LinearInteractionPairScore (double k_rep, double range_attr, double k_attr, std::string name="LinearIDPairScore%1%") | |
double | evaluate_if_good_index (Model *m, const ParticleIndexPairs &p, DerivativeAccumulator *da, double max, unsigned int lower_bound, unsigned int upper_bound) const |
EvaluationCache const & | get_evaluation_cache () const |
double | get_k_attraction () const |
returns the k for sphere-sphere attraction in kcal/mol/A units More... | |
double | get_k_repulsion () const |
returns the k for sphere-sphere repulsion in kcal/mol/A units More... | |
double | get_range_attraction () const |
returns the range for sphere-sphere attraction in A More... | |
void | set_k_attraction (double k_attr) |
set k for sphere-sphere attraction in kcal/mol/A units More... | |
void | set_k_repulsion (double k_rep) |
set k for sphere-sphere repulsion in kcal/mol/A units More... | |
Public Member Functions inherited from IMP::PairScore | |
PairScore (std::string name="PairScore %1%") | |
Restraints | create_current_decomposition (Model *m, const ParticleIndexPair &vt) const |
virtual double | evaluate_if_good_index (Model *m, const ParticleIndexPair &vt, DerivativeAccumulator *da, double max) const |
Compute the score and the derivative if needed, only if "good". More... | |
virtual double | evaluate_indexes_delta (Model *m, const ParticleIndexPairs &o, DerivativeAccumulator *da, const std::vector< unsigned > &indexes, std::vector< double > &score) const |
Compute the change in score and the derivative if needed over a set. More... | |
virtual double | evaluate_indexes_scores (Model *m, const ParticleIndexPairs &o, DerivativeAccumulator *da, unsigned int lower_bound, unsigned int upper_bound, std::vector< double > &score) const |
Compute the score and the derivative if needed over a set. 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) |
Additional Inherited Members | |
Public Types inherited from IMP::PairScore | |
typedef ParticlePair | Argument |
typedef ParticleIndexPair | IndexArgument |
typedef PairModifier | Modifier |
typedef const ParticlePair & | PassArgument |
typedef const ParticleIndexPair & | PassIndexArgument |
Protected Member Functions inherited from IMP::npctransport::LinearInteractionPairScore | |
double | evaluate_index (algebra::Sphere3D const &s0, algebra::Sphere3D const &s1, algebra::Sphere3D &ds0, algebra::Sphere3D &ds1, DerivativeAccumulator *da) const |
Protected Member Functions inherited from IMP::PairScore | |
virtual Restraints | do_create_current_decomposition (Model *m, const ParticleIndexPair &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 () |
IMP::npctransport::SitesPairScore::SitesPairScore | ( | double | range, |
double | k, | ||
double | sigma0_deg, | ||
double | sigma1_deg, | ||
double | range_nonspec_attraction, | ||
double | k_nonspec_attraction, | ||
double | k_nonspec_repulsion, | ||
const algebra::Sphere3Ds & | sites0, | ||
const algebra::Sphere3Ds & | sites1 | ||
) |
For positive sigmas, this is an orientation dependent score between two spherical particles that contain a fixed set of interaction sites, sites0 and sites1 (for first and second particle, resp.).
The interaction is composed of a non-specific interaction term between the bead spheres, and the sum of interactions between specific interactions sites of each bead.
If {0} and {1} are positive, the attractive force between pairs of sites at an optimal orientation (sites facing each other) depends on their distance x. The attraction force magnitude is k*x when x<=0.5*range and k*(range-x) when x is between 0.5*range and range. When site0 is rotated by < {0}, this force decays further by a factor (cos{}-cos{}0)/(1.0-cos{}). The force decays similarly when site1 is rotated by < {1}. The maximal potential energy difference due to such pair of interacting sites is: max{U}_{site_site} = 0.25 * k * range^2 [kcal/mol]
If sigma0_deg or sigma1_deg are non-positive, the attractive force between pairs of sites within the attraction range is a constant k, and the maximal interaction energy is instead: max{U}_{site-site} = k * range [kCal/mol]
In addition to site-site interaction, there is a constant attractive force k_nonspec_attraction between the sphere surfaces up to a range range_nonspec_attraction, with maximal energy contribution: max{U}_{non-specific} = 0.5 * k_nonspec_attraction * range_nonspec_attraction [kcal/mol]
Note that for a specific pair of particles, each particle might have a different reference frame (rigid body translation and rotation), which is applied to the sites list upon score evaluation.
range | Maximal range of site specific attraction in any direction of specific sites placed on particles |
k | Maximal site specific attraction coefficient (in kcal/mol/A^2 when sigma0_deg and sigma1_deg are positive, or kcal/mol/A otherwise, i.e., for orientation-independent interactions) |
sigma0_deg,sigma1_deg | Maximal rotational range of sites 0 and 1, respectively, on the particle surface, specified in degrees. If either is 0, the pair score between site centers is used with a constant k. |
range_nonspec_attraction | Range for non-specific attraction term between particles that contain the sites |
k_nonspec_attraction | Non-specific attraction coefficient between particles (constant force in kCal/mol/A within specified range) |
k_nonspec_repulsion | Repulsion coefficient between particles (constant force applied when particle spheres overlap in kCal/mol/A) |
sites0 | List of sites on the first particle, in its local reference frame |
sites1 | List of sites on the second particle, in its local reference frame |
|
overridevirtual |
Overload this method to specify the inputs.
Reimplemented from IMP::npctransport::LinearInteractionPairScore.
|
overridevirtual |
evaluated indexes for the range from lower_bound to upper_bound in p, if score>max then return max value of double
Reimplemented from IMP::PairScore.
Definition at line 144 of file SitesPairScore.h.
|
overridevirtual |
evaluate the score for the pair of model particle indexes in p, updating score derivatives to da
Implements IMP::PairScore.
Definition at line 316 of file SitesPairScore.h.
|
finaloverridevirtual |
evaluate all index pairs between pips[lower_bound] and pis[upper_bound] and update their coordinate derivatives scaled by da, if da is not null
Reimplemented from IMP::npctransport::LinearInteractionPairScore.
double IMP::npctransport::SitesPairScore::evaluate_site_contributions | ( | Model * | m, |
const ParticleIndexPair & | pip, | ||
DerivativeAccumulator * | da, | ||
boost::tuple< unsigned int, std::vector< unsigned int >, std::vector< unsigned int >, bool > * | contacts_accumulator | ||
) | const |
EvaluatE all site-site interactions for evaluate_index() for the pair pip in model m. If da is not nullptr, it accumulated appropriate derivatives. If contacts_accumulator is not null, then the number of individual contacts and occupied sites is asscumulated there.
m | the model |
pip | the pair of particle indexes in m |
da | optional accumulator for force and torque derivatives |
contacts_accumulator | A pointer to a tuple of output values [num-contacts, sites0-bound, sites1-bound, is_nonspec]. num-contacts is the total number of site-site contacts between pip. sites0-bound and sites1-bound are vectors of contact counts for each site of pip[0] and pip[1], resp. is_nonspec is true if the spheres have non-zero non-specific interactions Ignored if Null |
Definition at line 532 of file SitesPairScore.h.
double IMP::npctransport::SitesPairScore::evaluate_site_contributions_with_internal_tables | ( | algebra::Sphere3D const * | spheres_table, |
double const ** | quaternions_tables, | ||
algebra::Sphere3D * | sphere_derivatives_table, | ||
double ** | torques_tables, | ||
const ParticleIndexPair & | pip, | ||
DerivativeAccumulator * | da, | ||
boost::tuple< unsigned int, std::vector< unsigned int >, std::vector< unsigned int >, bool > * | contacts_accumulator = nullptr |
||
) | const |
EvaluatE all site-site interactions for evaluate_index() for the pair pip in model m. If da is not nullptr, it accumulated appropriate derivatives. If contacts_accumulator is not null, then the number of individual contacts and occupied sites is asscumulated there.
sphere_table | An array storing of sphere coordinates by particle index |
quaternions_tables | An array of quaternions by particle index |
sphere_table | An array storing of sphere coordinate derivatives by particle index |
torque_tables | An array of torques by particle index |
pip | the pair of particle indexes in m |
da | optional accumulator for force and torque derivatives |
contacts_accumulator | A pointer to a tuple of output values [num-contacts, sites0-bound, sites1-bound, is_nonspec]. num-contacts is the total number of site-site contacts between pip. sites0-bound and sites1-bound are vectors of contact counts for each site of pip[0] and pip[1], resp, with one entry per site. is_nonspec is true if the molecules have non-zero nonspecific interactions Ignored if Null |
Definition at line 395 of file SitesPairScore.h.
double IMP::npctransport::SitesPairScore::get_sites_k | ( | ) | const |
return the k for site-site attraction
Definition at line 244 of file SitesPairScore.h.
double IMP::npctransport::SitesPairScore::get_sites_range | ( | ) | const |
return the range for site-site attraction
Definition at line 241 of file SitesPairScore.h.
|
overridevirtual |
Get information about the module and version of the object.
Reimplemented from IMP::npctransport::LinearInteractionPairScore.
Definition at line 249 of file SitesPairScore.h.