IMP logo
IMP Reference Guide  develop.27926d84dc,2024/04/18
The Integrative Modeling Platform
IMP::core::TruncatedHarmonic< DIRECTION > Class Template Reference

A function that is harmonic over an bounded interval. More...

#include <IMP/core/TruncatedHarmonic.h>

+ Inheritance diagram for IMP::core::TruncatedHarmonic< DIRECTION >:

Detailed Description

template<int DIRECTION>
class IMP::core::TruncatedHarmonic< DIRECTION >

A function that is harmonic over an bounded interval.

This is a harmonic function of the form $f(x) = 0.5 k (x-center)^2$ within a bounded interval around a center value, in the bounded interval where $|x-center|<threshold$, i.e. up to a threshold offset from the center. Beyond the threshold offset, the function asymptotically converges to the limit value.

Parameters
[in]DIRECTIONThis template parameter determines whether the function is non-zero only for input values that are greater than the center (UPPER), lower than the center (LOWER), or both (BOTH). In Python code, these choices can be specified using the types TruncatedHarmonicUpperBound, TruncatedHarmonicLowerBound, and TruncatedHarmonic, respectively.

For example, if the center equals to 5, the threshold to 2, and the direction is BOTH (see below), then the function is harmonic in the interval [3,7], and beyond that interval it converges to the limit value in either direction. If the direction is LOWER, then the function is harmonic in the interval [3,5], it converges to the limit value for values lower thans 3, and is 0 for values higher than 5. If it is UPPER, then the function is harmonic in the interval [5,7], it is 0 for values lower than 5, and it converges to the limit value for values higher than 7.

Note
The function form beyond the threshold offset from center is currently limit-b/(x-o) where x is the offset from the center and b,o are constants chosen to make the function smooth and continuous. This form may change without notice unless someone tells us it is important that it does not.
See Also
Harmonic
HarmonicLowerBound
HarmonicUpperBound

Definition at line 57 of file TruncatedHarmonic.h.

Public Member Functions

 TruncatedHarmonic (Float center, Float k, Float threshold, Float limit)
 
 TruncatedHarmonic (Float center, Float k, Float threshold)
 
virtual double evaluate (double feature) const override
 Calculate score with respect to the given feature. More...
 
virtual DerivativePair evaluate_with_derivative (double feature) const override
 Calculate score and derivative with respect to the given feature. 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::UnaryFunction
 UnaryFunction (std::string name="UnaryFunction%1%")
 
- 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::Object
 Object (std::string name)
 Construct an object with the given name. More...
 
virtual void do_destroy ()
 

Constructor & Destructor Documentation

template<int DIRECTION>
IMP::core::TruncatedHarmonic< DIRECTION >::TruncatedHarmonic ( Float  center,
Float  k,
Float  threshold,
Float  limit 
)
Parameters
[in]centerThe center point for the truncated harmonic.
[in]kThe spring constant for the truncated harmonic.
[in]thresholdHow far the harmonic term extends from the center.
[in]limitThe value to which the function converges above the threshold.
Note
I don't like having 4 floats on the initializer list, but don't really see an alternative. There are a few sanity checks, so the order is a bit hard to get wrong.

Definition at line 69 of file TruncatedHarmonic.h.

template<int DIRECTION>
IMP::core::TruncatedHarmonic< DIRECTION >::TruncatedHarmonic ( Float  center,
Float  k,
Float  threshold 
)

Same as other constructor, but automatically set limit to a reasonable default value.

Definition at line 72 of file TruncatedHarmonic.h.

Member Function Documentation

template<int DIRECTION>
virtual double IMP::core::TruncatedHarmonic< DIRECTION >::evaluate ( double  feature) const
overridevirtual

Calculate score with respect to the given feature.

Parameters
[in]featureValue of feature being tested.
Returns
Score

Reimplemented from IMP::UnaryFunction.

Definition at line 82 of file TruncatedHarmonic.h.

template<int DIRECTION>
virtual DerivativePair IMP::core::TruncatedHarmonic< DIRECTION >::evaluate_with_derivative ( double  feature) const
overridevirtual

Calculate score and derivative with respect to the given feature.

Parameters
[in]featureValue of feature being tested.
Returns
a DerivativePair containing the score and its partial derivative with respect to the given feature.

Reimplemented from IMP::UnaryFunction.

Definition at line 74 of file TruncatedHarmonic.h.

template<int DIRECTION>
virtual ::IMP::VersionInfo IMP::core::TruncatedHarmonic< DIRECTION >::get_version_info ( ) const
overridevirtual

Get information about the module and version of the object.

Reimplemented from IMP::Object.

Definition at line 88 of file TruncatedHarmonic.h.


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