STIR
6.2.0
|
tests for RelativeDifferencePrior More...
Public Member Functions | |
virtual void | run_specific_tests (const std::string &test_name, RelativeDifferencePrior< float > &rdp, const shared_ptr< target_type > &target_sptr) |
void | run_tests () override |
Function (to be overloaded) which does the actual tests. More... | |
Public Member Functions inherited from stir::GeneralisedPriorTests | |
GeneralisedPriorTests (char const *density_filename=nullptr) | |
Constructor that can take some input data to run the test with. More... | |
void | construct_input_data (shared_ptr< target_type > &density_sptr, shared_ptr< target_type > &kappa_sptr) |
void | configure_prior_tests (bool gradient, bool Hessian_convexity, bool Hessian_numerical) |
Set methods that control which tests are run. | |
Public Member Functions inherited from stir::ObjectiveFunctionTests< GeneralisedPrior< DiscretisedDensity< 3, float > >, DiscretisedDensity< 3, float > > | |
virtual Succeeded | test_gradient (const std::string &test_name, GeneralisedPrior< DiscretisedDensity< 3, float > > &objective_function, DiscretisedDensity< 3, float > &target, const float eps, const bool full_gradient=true) |
Test the gradient of the objective function by comparing to the numerical gradient via perturbation. More... | |
virtual Succeeded | test_Hessian (const std::string &test_name, GeneralisedPrior< DiscretisedDensity< 3, float > > &objective_function, const DiscretisedDensity< 3, float > &target, const float eps) |
Test the accumulate_Hessian_times_input of the objective function by comparing to the numerical result via perturbation. More... | |
virtual Succeeded | test_Hessian_concavity (const std::string &test_name, GeneralisedPrior< DiscretisedDensity< 3, float > > &objective_function, const DiscretisedDensity< 3, float > &target, const float mult_factor=1.F) |
Test the Hessian of the objective function by testing the (mult_factor * x^T Hx > 0) condition. More... | |
Public Member Functions inherited from stir::RunTests | |
RunTests (const double tolerance=1E-4) | |
Default constructor. | |
virtual | ~RunTests () |
Destructor, outputs a diagnostic message. | |
bool | is_everything_ok () const |
Returns if all checks were fine upto now. | |
int | main_return_value () const |
Handy return value for a main() function. More... | |
void | set_tolerance (const double tolerance) |
Set value used in floating point comparisons (see check_* functions) | |
double | get_tolerance () const |
Get value used in floating point comparisons (see check_* functions) | |
bool | check (const bool, const std::string &str="") |
Tests if true, str can be used to tell what you are testing. More... | |
template<class T1 , class T2 > | |
bool | check_if_less (T1 a, T2 b, const std::string &str="") |
check if a<b | |
bool | check_if_equal (const std::string &a, const std::string &b, const std::string &str="") |
bool | check_if_equal (const double a, const double b, const std::string &str="") |
bool | check_if_equal (const short a, const short b, const std::string &str="") |
bool | check_if_equal (const unsigned short a, const unsigned short b, const std::string &str="") |
bool | check_if_equal (const int a, const int b, const std::string &str="") |
bool | check_if_equal (const unsigned int a, const unsigned int b, const std::string &str="") |
bool | check_if_equal (const long a, const long b, const std::string &str="") |
bool | check_if_equal (const unsigned long a, const unsigned long b, const std::string &str="") |
bool | check_if_equal (const Bin &a, const Bin &b, const std::string &str="") |
template<class T > | |
bool | check_if_equal (const DetectionPosition< T > &a, const DetectionPosition< T > &b, const std::string &str="") |
template<class T > | |
bool | check_if_equal (const std::complex< T > a, const std::complex< T > b, const std::string &str="") |
check equality by calling check_if_equal on real and imaginary parts | |
template<class T > | |
bool | check_if_equal (const VectorWithOffset< T > &t1, const VectorWithOffset< T > &t2, const std::string &str="") |
check equality by comparing ranges and calling check_if_equal on all elements | |
template<class T > | |
bool | check_if_equal (const std::vector< T > &t1, const std::vector< T > &t2, const std::string &str="") |
check equality by comparing size and calling check_if_equal on all elements | |
bool | check_if_equal (const ProjDataInMemory &t1, const ProjDataInMemory &t2, const std::string &str="") |
template<int n> | |
bool | check_if_equal (const IndexRange< n > &t1, const IndexRange< n > &t2, const std::string &str="") |
template<int num_dimensions, class coordT > | |
bool | check_if_equal (const BasicCoordinate< num_dimensions, coordT > &a, const BasicCoordinate< num_dimensions, coordT > &b, const std::string &str="") |
check equality by comparing norm(a-b) with tolerance | |
bool | check_if_zero (const double a, const std::string &str="") |
bool | check_if_zero (const short a, const std::string &str="") |
bool | check_if_zero (const unsigned short a, const std::string &str="") |
bool | check_if_zero (const int a, const std::string &str="") |
bool | check_if_zero (const unsigned int a, const std::string &str="") |
bool | check_if_zero (const long a, const std::string &str="") |
bool | check_if_zero (const unsigned long a, const std::string &str="") |
template<class T > | |
bool | check_if_zero (const VectorWithOffset< T > &t, const std::string &str="") |
use check_if_zero on all elements | |
template<int num_dimensions, class coordT > | |
bool | check_if_zero (const BasicCoordinate< num_dimensions, coordT > &a, const std::string &str="") |
compare norm with tolerance | |
Additional Inherited Members | |
Public Types inherited from stir::GeneralisedPriorTests | |
typedef DiscretisedDensity< 3, float > | target_type |
Public Types inherited from stir::ObjectiveFunctionTests< GeneralisedPrior< DiscretisedDensity< 3, float > >, DiscretisedDensity< 3, float > > | |
typedef GeneralisedPrior< DiscretisedDensity< 3, float > > | objective_function_type |
typedef DiscretisedDensity< 3, float > | target_type |
Protected Member Functions inherited from stir::GeneralisedPriorTests | |
virtual void | run_tests_for_objective_function (const std::string &test_name, GeneralisedPrior< target_type > &objective_function, const shared_ptr< target_type > &target_sptr) |
run the test More... | |
virtual void | test_Hessian_convexity (const std::string &test_name, GeneralisedPrior< GeneralisedPriorTests::target_type > &objective_function, const shared_ptr< GeneralisedPriorTests::target_type > &target_sptr) |
Test various configurations of the Hessian of the prior via accumulate_Hessian_times_input() for convexity. More... | |
virtual void | test_Hessian_against_numerical (const std::string &test_name, GeneralisedPrior< GeneralisedPriorTests::target_type > &objective_function, const shared_ptr< GeneralisedPriorTests::target_type > &target_sptr) |
Tests the compute_Hessian method implemented into convex priors. More... | |
virtual bool | test_Hessian_convexity_configuration (const std::string &test_name, GeneralisedPrior< GeneralisedPriorTests::target_type > &objective_function, const shared_ptr< GeneralisedPriorTests::target_type > &target_sptr, float beta, float input_multiplication, float input_addition, float current_image_multiplication, float current_image_addition) |
Hessian test for a particular configuration of the Hessian concave condition. More... | |
Protected Member Functions inherited from stir::ObjectiveFunctionTests< GeneralisedPrior< DiscretisedDensity< 3, float > >, DiscretisedDensity< 3, float > > | |
virtual shared_ptr< const DiscretisedDensity< 3, float > > | construct_increment (const DiscretisedDensity< 3, float > &target, const float eps) const |
Construct small increment for target. More... | |
Protected Member Functions inherited from stir::RunTests | |
template<class T > | |
bool | check_if_equal_generic (const T &a, const T &b, const std::string &str) |
function that is called by some check_if_equal implementations. It just uses operator!= | |
template<class T > | |
bool | check_if_zero_generic (T a, const std::string &str) |
function that is called by some check_if_zero implementations. It just uses operator!= | |
Protected Attributes inherited from stir::GeneralisedPriorTests | |
char const * | density_filename |
shared_ptr< GeneralisedPrior< target_type > > | objective_function_sptr |
bool | do_test_gradient = false |
Variables to control which tests are run, see the set methods. | |
bool | do_test_Hessian_convexity = false |
bool | do_test_Hessian_against_numerical = false |
Protected Attributes inherited from stir::RunTests | |
double | tolerance |
tolerance for comparisons with real values | |
bool | everything_ok |
variable storing current status | |
tests for RelativeDifferencePrior
|
overridevirtual |
Function (to be overloaded) which does the actual tests.
This function is expected to do a series of calls to check(), check_if_equal() etc.
Implements stir::RunTests.
References stir::RunTests::check(), stir::RunTests::check_if_less(), stir::RelativeDifferencePrior< elemT >::compute_gradient(), stir::RelativeDifferencePrior< elemT >::compute_value(), stir::GeneralisedPriorTests::configure_prior_tests(), stir::RelativeDifferencePrior< elemT >::get_epsilon(), stir::RelativeDifferencePrior< elemT >::get_gamma(), stir::RelativeDifferencePrior< elemT >::get_kappa_sptr(), stir::RelativeDifferencePrior< elemT >::get_weights(), stir::norm(), stir::GeneralisedPriorTests::run_tests_for_objective_function(), stir::RelativeDifferencePrior< elemT >::set_epsilon(), stir::RelativeDifferencePrior< elemT >::set_gamma(), stir::RelativeDifferencePrior< elemT >::set_kappa_sptr(), stir::GeneralisedPrior< DiscretisedDensity< 3, elemT > >::set_penalisation_factor(), stir::RelativeDifferencePrior< elemT >::set_up(), stir::RelativeDifferencePrior< elemT >::set_weights(), and stir::Succeeded::succeeded().