Store CCC and derivative values and recompute then every X steps.
Public Member Functions | |
CoarseCCatIntervals (const int &ncd) | |
float | evaluate (DensityMap &em_map, SampledDensityMap &model_map, std::vector< float > &dvx, std::vector< float > &dvy, std::vector< float > &dvz, float scalefac, bool lderiv, unsigned long eval_interval) |
Evaluate the cross-correlation value only every X calls to the function. | |
Protected Member Functions | |
void | allocate_derivatives_array (int ncd) |
Protected Attributes | |
int | calls_counter_ |
Number of times the evaluation has been called. | |
bool | dv_memory_allocated_ |
float | stored_cc_ |
Stored correlation value. | |
float * | stored_dvx_ |
Stored derivative terms. | |
float * | stored_dvy_ |
float * | stored_dvz_ |
float IMP::em::CoarseCCatIntervals::evaluate | ( | DensityMap & | em_map, | |
SampledDensityMap & | model_map, | |||
std::vector< float > & | dvx, | |||
std::vector< float > & | dvy, | |||
std::vector< float > & | dvz, | |||
float | scalefac, | |||
bool | lderiv, | |||
unsigned long | eval_interval | |||
) |
Evaluate the cross-correlation value only every X calls to the function.
Evaluates the value of the cross correlation term but only at given intervals to save computation time. Otherwise, the same value is returned
This function has an special behavior, as it does not return the true cross correlation coefficient ccc, but the value:
scalefac*(1-ccc)
The reason why is to use this term as part of an scoring function that is better the lower the term. If you want the cross correlation coefficient, use cross_correlation_coefficient() instead.
[in] | em_map | exp EM map |
[in] | model_map | an empty map that will contain the sampled particles in the access_p |
[in] | dvx | to contain the x partial derivatives |
[in] | dvy | to contain the y partial derivatives |
[in] | dvz | to contain the z partial derivatives |
[in] | scalefac | scale factor to apply to the value of the cross correlation term |
[in] | lderiv | if true, the derivatives of the term are computed |
[in] | eval_interval | the number of times the function is going to return the same value before computing the values again |
int IMP::em::CoarseCCatIntervals::calls_counter_ [protected] |
Number of times the evaluation has been called.
The evaluation is only performed the first time and when calls_counter reaches eval_interval. Otherwise the stored_cc_ value is returned