STIR 6.5.0
stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT > Class Template Reference

a base class for LogLikelihood of independent Poisson variables where the mean values are linear combinations of the frames. More...

#include "stir_experimental/recon_buildblock/PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData.h"

Inheritance diagram for stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >:

Static Public Attributes

static const char *const registered_name
 Name which will be used when parsing a GeneralisedObjectiveFunction object.

Protected Member Functions

bool actual_subsets_are_approximately_balanced (std::string &warning_message) const
 Implementation of function that checks subset balancing.
virtual void set_defaults ()
 Sets defaults for parsing.
virtual void initialise_keymap ()
 sets parsing keys
virtual bool post_processing ()
 This will be called at the end of the parsing.
virtual Succeeded set_up_before_sensitivity (shared_ptr< const TargetT > const &target_sptr)=0
 set-up specifics for the derived class
void compute_sensitivities ()
 compute subset and total sensitivity
virtual void actual_compute_subset_gradient_without_penalty (TargetT &gradient, const TargetT &current_estimate, const int subset_num, const bool add_sensitivity)=0
 computes the subset gradient of the objective function without the penalty (optional: add subset sensitivity)
virtual double actual_compute_objective_function_without_penalty (const TargetT &current_estimate, const int subset_num)=0
 Implementation of function that computes the objective function for the current subset.
virtual Succeeded actual_add_multiplication_with_approximate_sub_Hessian_without_penalty (TargetT &output, const TargetT &input, const int subset_num) const
 Implementation of the function that multiplies the approximate sub-Hessian with a vector.
virtual Succeeded actual_accumulate_sub_Hessian_times_input_without_penalty (TargetT &output, const TargetT &current_image_estimate, const TargetT &input, const int subset_num) const
 Implementation of the function computes the sub-Hessian and multiplies by a vector.
virtual void set_key_values ()
 This will be called before parsing or parameter_info is called.

Protected Attributes

std::string _input_filename
 Filename with input dynamic projection data.
shared_ptr< DynamicProjData > _dyn_proj_data_sptr
 points to the object for the total input dynamic projection data
int _max_segment_num_to_process
 the maximum absolute ring difference number to use in the reconstruction
int _output_image_size_xy
 the output image size in x and y direction
int _output_image_size_z
 the output image size in z direction
double _zoom
 the zoom factor
double _Xoffset
 offset in the x-direction
double _Yoffset
 offset in the y-direction
double _Zoffset
 offset in the z-direction
TimeFrameDefinitions _frame_defs
std::string _additive_dyn_proj_data_filename
 name of file in which additive projection data are stored
shared_ptr< DynamicProjData > _additive_dyn_proj_data_sptr
 points to the additive projection data
shared_ptr< BinNormalisation > _normalisation_sptr
shared_ptr< ProjectorByBinPair > _projector_pair_ptr
 Stores the projectors that are used for the computations.
bool _zero_seg0_end_planes
 signals whether to zero the data in the end planes of the projection data
int num_subsets
bool already_set_up
shared_ptr< GeneralisedPrior< TargetT > > prior_sptr
KeyParser parser

Additional Inherited Members

Public Member Functions inherited from stir::RegisteredParsingObject< PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >, GeneralisedObjectiveFunction< TargetT >, PoissonLogLikelihoodWithLinearModelForMean< TargetT > >
std::string get_registered_name () const override
 Returns Derived::registered_name.
std::string parameter_info () override
 Returns a string with all parameters and their values, in a form suitable for parsing again.
Public Member Functions inherited from stir::PoissonLogLikelihoodWithLinearModelForMean< TargetT >
void compute_sub_gradient_without_penalty (TargetT &gradient, const TargetT &current_estimate, const int subset_num) override
 Compute the subset gradient of the (unregularised) objective function.
virtual void compute_sub_gradient_without_penalty_plus_sensitivity (TargetT &gradient, const TargetT &current_estimate, const int subset_num)
 This should compute the subset gradient of the (unregularised) objective function plus the subset sensitivity.
Succeeded set_up (shared_ptr< TargetT > const &target_sptr) override
 set-up sensitivity etc if possible
const TargetT & get_sensitivity () const
 Get a const reference to the total sensitivity.
const TargetT & get_subset_sensitivity (const int subset_num) const
 Get a const reference to the sensitivity for a subset.
virtual void add_subset_sensitivity (TargetT &sensitivity, const int subset_num) const =0
 Add subset sensitivity to existing data.
bool get_use_subset_sensitivities () const
 find out if subset_sensitivities are used
bool get_recompute_sensitivity () const
 find current value of recompute_sensitivity
std::string get_sensitivity_filename () const
 get filename to read (or write) the total sensitivity
std::string get_subsensitivity_filenames () const
 get filename pattern to read (or write) the subset sensitivities
std::string get_subsensitivity_filename (const int subset_num) const
 Return the filename for a particular subset.
void set_recompute_sensitivity (const bool)
void set_subset_sensitivity_sptr (const shared_ptr< TargetT > &, const int subset_num)
void set_use_subset_sensitivities (const bool)
 See get_use_subset_sensitivities().
void set_sensitivity_filename (const std::string &)
 set filename to read (or write) the total sensitivity
void set_subsensitivity_filenames (const std::string &)
 set filename pattern to read (or write) the subset sensitivities
void fill_nonidentifiable_target_parameters (TargetT &target, const float value) const override
Public Member Functions inherited from stir::GeneralisedObjectiveFunction< TargetT >
virtual TargetT * construct_target_ptr () const =0
 Creates a suitable target as determined by the parameters.
virtual void compute_sub_gradient (TargetT &gradient, const TargetT &current_estimate, const int subset_num)
 Compute the subset-gradient of the objective function at current_estimate.
virtual void compute_gradient (TargetT &gradient, const TargetT &current_estimate)
 Compute the gradient of the objective function at the current_estimate.
virtual void compute_gradient_without_penalty (TargetT &gradient, const TargetT &current_estimate)
 Compute the gradient of the unregularised objective function at the current_estimate.
virtual double compute_objective_function_without_penalty (const TargetT &current_estimate, const int subset_num)
 Compute the value of the unregularised sub-objective function at the current_estimate.
virtual double compute_objective_function_without_penalty (const TargetT &current_estimate)
 Compute the value of the unregularised objective function at the current_estimate.
double compute_penalty (const TargetT &current_estimate, const int subset_num)
 Compute the value of the sub-penalty at the current_estimate.
double compute_penalty (const TargetT &current_estimate)
 Compute the value of the penalty at the current_estimate.
double compute_objective_function (const TargetT &current_estimate, const int subset_num)
 Compute the value of the sub-objective function at the current_estimate.
double compute_objective_function (const TargetT &current_estimate)
 Compute the value of the objective function at the current_estimate.
double compute_value (const TargetT &current_estimate)
 Alias for compute_objective_function(const TargetT&).
Succeeded add_multiplication_with_approximate_sub_Hessian_without_penalty (TargetT &output, const TargetT &input, const int subset_num) const
 Functions that multiply the approximate (sub)Hessian with a \'vector\'.
Succeeded add_multiplication_with_approximate_sub_Hessian (TargetT &output, const TargetT &input, const int subset_num) const
Succeeded add_multiplication_with_approximate_Hessian_without_penalty (TargetT &output, const TargetT &input) const
Succeeded add_multiplication_with_approximate_Hessian (TargetT &output, const TargetT &input) const
Succeeded accumulate_Hessian_times_input (TargetT &output, const TargetT &current_image_estimate, const TargetT &input) const
 Functions that multiply the True (sub)Hessian with a \'vector\'.
Succeeded accumulate_Hessian_times_input_without_penalty (TargetT &output, const TargetT &current_image_estimate, const TargetT &input) const
Succeeded accumulate_sub_Hessian_times_input (TargetT &output, const TargetT &current_image_estimate, const TargetT &input, const int subset_num) const
Succeeded accumulate_sub_Hessian_times_input_without_penalty (TargetT &output, const TargetT &current_image_estimate, const TargetT &input, const int subset_num) const
std::string get_objective_function_values_report (const TargetT &current_estimate)
 Construct a string with info on the value of objective function with and without penalty.
int get_num_subsets () const
 Return the number of subsets in-use.
virtual std::unique_ptr< ExamInfo > get_exam_info_uptr_for_target () const
virtual int set_num_subsets (const int num_subsets)=0
 Attempts to change the number of subsets.
bool subsets_are_approximately_balanced () const
 Checks of the current subset scheme is approximately balanced.
bool subsets_are_approximately_balanced (std::string &warning_message) const
 Checks of the current subset scheme is approximately balanced and constructs a warning message.
bool prior_is_zero () const
 check if the prior is set (or the penalisation factor is 0)
GeneralisedPrior< TargetT > *const get_prior_ptr () const
 Read-only access to the prior.
shared_ptr< GeneralisedPrior< TargetT > > get_prior_sptr ()
void set_prior_sptr (const shared_ptr< GeneralisedPrior< TargetT > > &)
 Change the prior.
virtual void set_input_data (const shared_ptr< ExamData > &)=0
 set_input_data
virtual const ExamData & get_input_data () const =0
 get input data
virtual void set_additive_proj_data_sptr (const shared_ptr< ExamData > &)=0
 set_additive_proj_data_sptr
virtual void set_normalisation_sptr (const shared_ptr< BinNormalisation > &)=0
 set_normalisation_sptr
Public Member Functions inherited from stir::ParsingObject
 ParsingObject (const ParsingObject &)
ParsingObject & operator= (const ParsingObject &)
bool parse (std::istream &f)
bool parse (const char *const filename)
void ask_parameters ()
Static Public Member Functions inherited from stir::RegisteredParsingObject< PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >, GeneralisedObjectiveFunction< TargetT >, PoissonLogLikelihoodWithLinearModelForMean< TargetT > >
static GeneralisedObjectiveFunction< TargetT > * read_from_stream (std::istream *)
 Construct a new object (of type Derived) by parsing the istream.
Static Public Member Functions inherited from stir::RegisteredObject< GeneralisedObjectiveFunction< TargetT > >
static GeneralisedObjectiveFunction< TargetT > * read_registered_object (std::istream *in, const std::string &registered_name)
 Construct a new object (of a type derived from Root, its actual type determined by the registered_name parameter) by parsing the istream.
static GeneralisedObjectiveFunction< TargetT > * ask_type_and_parameters ()
 ask the user for the type, and then calls read_registered_object(0, type)
static void list_registered_names (std::ostream &stream)
 List all possible registered names to the stream.
Protected Types inherited from stir::RegisteredObject< GeneralisedObjectiveFunction< TargetT > >
typedef GeneralisedObjectiveFunction< TargetT > *(*) RootFactory(std::istream *)
 The type of a root factory is a function, taking an istream* as argument, and returning a Root*.
typedef FactoryRegistry< std::string, RootFactory, interfile_less > RegistryType
 The type of the registry.
Static Protected Member Functions inherited from stir::RegisteredObject< GeneralisedObjectiveFunction< TargetT > >
static RegistryType & registry ()
 Static function returning the registry.

Detailed Description

template<typename TargetT>
class stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >

a base class for LogLikelihood of independent Poisson variables where the mean values are linear combinations of the frames.

Parameters for parsing

Member Function Documentation

◆ actual_subsets_are_approximately_balanced()

template<typename TargetT>
bool stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::actual_subsets_are_approximately_balanced ( std::string & warning_message) const
protectedvirtual

Implementation of function that checks subset balancing.

See also
subsets_are_approximately_balanced(std::string&)
Developer\'s note

The reason we have this function is that overloading subsets_are_approximately_balanced(std::string&) in a derived class would hide subsets_are_approximately_balanced().

Implements stir::GeneralisedObjectiveFunction< TargetT >.

References initialise_keymap(), post_processing(), and set_defaults().

◆ set_defaults()

◆ initialise_keymap()

◆ post_processing()

Member Data Documentation

◆ _input_filename

template<typename TargetT>
std::string stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_input_filename
protected

Filename with input dynamic projection data.

Referenced by initialise_keymap(), post_processing(), and set_defaults().

◆ _dyn_proj_data_sptr

template<typename TargetT>
shared_ptr<DynamicProjData> stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_dyn_proj_data_sptr
protected

points to the object for the total input dynamic projection data

Referenced by post_processing(), and set_defaults().

◆ _max_segment_num_to_process

template<typename TargetT>
int stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_max_segment_num_to_process
protected

the maximum absolute ring difference number to use in the reconstruction

convention: if -1, use get_max_segment_num()

Referenced by initialise_keymap(), and set_defaults().

◆ _output_image_size_xy

template<typename TargetT>
int stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_output_image_size_xy
protected

the output image size in x and y direction

convention: if -1, use a size such that the whole FOV is covered

Referenced by initialise_keymap(), post_processing(), and set_defaults().

◆ _output_image_size_z

template<typename TargetT>
int stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_output_image_size_z
protected

the output image size in z direction

convention: if -1, use default as provided by VoxelsOnCartesianGrid constructor

Referenced by initialise_keymap(), post_processing(), and set_defaults().

◆ _zoom

template<typename TargetT>
double stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_zoom
protected

the zoom factor

Referenced by initialise_keymap(), post_processing(), and set_defaults().

◆ _Xoffset

template<typename TargetT>
double stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_Xoffset
protected

offset in the x-direction

Referenced by set_defaults().

◆ _Yoffset

template<typename TargetT>
double stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_Yoffset
protected

offset in the y-direction

Referenced by set_defaults().

◆ _Zoffset

template<typename TargetT>
double stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_Zoffset
protected

offset in the z-direction

Referenced by initialise_keymap(), and set_defaults().

◆ _additive_dyn_proj_data_filename

template<typename TargetT>
std::string stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_additive_dyn_proj_data_filename
protected

name of file in which additive projection data are stored

Referenced by initialise_keymap(), post_processing(), and set_defaults().

◆ _additive_dyn_proj_data_sptr

template<typename TargetT>
shared_ptr<DynamicProjData> stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_additive_dyn_proj_data_sptr
protected

points to the additive projection data

the projection data in this file is bin-wise added to forward projection results

Referenced by post_processing(), and set_defaults().

◆ _normalisation_sptr

template<typename TargetT>
shared_ptr<BinNormalisation> stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_normalisation_sptr
protected

the normalisation or/and attenuation data

Referenced by initialise_keymap(), and set_defaults().

◆ _projector_pair_ptr

template<typename TargetT>
shared_ptr<ProjectorByBinPair> stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_projector_pair_ptr
protected

Stores the projectors that are used for the computations.

Referenced by initialise_keymap(), and set_defaults().

◆ _zero_seg0_end_planes

template<typename TargetT>
bool stir::PoissonLogLikelihoodWithLinearModelForMeanAndDynamicProjData< TargetT >::_zero_seg0_end_planes
protected

signals whether to zero the data in the end planes of the projection data

Referenced by initialise_keymap(), and set_defaults().


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