Open robbietuk opened 2 months ago
Upon further review of apply_normfactors3D
, the utility does in fact use the BinNormalisationPETFromComponents
class. However, there is currently no setter for the crystal_efficiencies
, geometric_factors
and block_factors
as the utility uses a streaming method to get the data
https://github.com/UCL/STIR/blob/c51067d72efe914d8a344fac913ffc9db0fdba39/src/utilities/apply_normfactors3D.cxx#L91-L97
Yes, the intention was to let all this work via BinNormalisationPETFromComponents
. The current file IO is rather ugly and inconvenient, but we'll need to have it for backwards compatibility for a while. In principle, ML_estimate...
could directly return a BinNormalisationPETFromComponents
object. That needs some careful thought however.
Yes, the intention was to let all this work via
BinNormalisationPETFromComponents
.
Do you mean for BinNormalisationPETFromComponents
to have functionality to perform ML_estimate...
and compute the efficiencies
etc?
In principle,
ML_estimate...
could directly return aBinNormalisationPETFromComponents
object. That needs some careful thought however.
It could be as simple as a method on the ML_estimate...
class having a method that constructs a BinNormalisationPETFromComponents
. I think I am confused as to why architecture is such that the find_ML_normfactors3D
and apply_normfactors3D
utilities are split.
Yes, the intention was to let all this work via
BinNormalisationPETFromComponents
.Do you mean for
BinNormalisationPETFromComponents
to have functionality to performML_estimate...
and compute theefficiencies
etc?
no, I don't think that's a good idea.
In principle,
ML_estimate...
could directly return aBinNormalisationPETFromComponents
object. That needs some careful thought however.It could be as simple as a method on the
ML_estimate...
class having a method that constructs aBinNormalisationPETFromComponents
.
yes
I think I am confused as to why architecture is such that the
find_ML_normfactors3D
andapply_normfactors3D
utilities are split.
well, Reconstruction
is a different hierarchy than DiscretisedDensity
:-). Why would we put "estimation" and "usage" in one class?
These are executable files for computing normalization and a brief description of how they are implmented:
find_ML_normfactors3D
: callsML_estimate_component_based_normalisation
and the single function there. Additionally, the documentation inML_estimate_component_based_normalisation.h
is lacking.find_ML_normfactors
: implements much of the functionality in the main function.apply_normfactors3D
: implements things in the main function, at least is very short.apply_normfactors
: does the same asapply_normfactors3D
(code duplication?)Most of the following pertains to
find_ML_normfactors3D
andfind_ML_normfactors
. The above functionality saves the computed data to be saved to disk, rather than returning/utilizing a shared_ptr.The core functionality of these executables should be split into various components.
To implement this:
ML_estimate_component_based_normalisation
function with a class/function..