Skip to content

Commit

Permalink
Exposed listmode reconstruction in SWIG and fixed an issue with cache…
Browse files Browse the repository at this point in the history
… file naming.
  • Loading branch information
Markus Jehl committed Oct 2, 2023
1 parent 2a27252 commit 5bdd300
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,7 @@ PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin<Tar
return Succeeded::yes; // Stop here!!!
}

this->num_cache_files = 0;
if(this->cache_lm_file)
{
info("Listmode reconstruction: Creating cache...", 2);
Expand Down
2 changes: 2 additions & 0 deletions src/swig/stir.i
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@
#include "stir/HUToMuImageProcessor.h"

#include "stir/recon_buildblock/PoissonLogLikelihoodWithLinearModelForMeanAndProjData.h"
#include "stir/recon_buildblock/PoissonLogLikelihoodWithLinearModelForMeanAndListModeData.h"
#include "stir/recon_buildblock/PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin.h"
#include "stir/OSMAPOSL/OSMAPOSLReconstruction.h"
#include "stir/OSSPS/OSSPSReconstruction.h"
#include "stir/recon_buildblock/ForwardProjectorByBinUsingProjMatrixByBin.h"
Expand Down
15 changes: 14 additions & 1 deletion src/swig/stir_objectivefunctions.i
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,16 @@

%shared_ptr(stir::GeneralisedObjectiveFunction<TargetT >);
%shared_ptr(stir::PoissonLogLikelihoodWithLinearModelForMean<TargetT >);
%shared_ptr(stir::PoissonLogLikelihoodWithLinearModelForMeanAndListModeData<TargetT >);
%shared_ptr(stir::RegisteredParsingObject<stir::PoissonLogLikelihoodWithLinearModelForMeanAndProjData<TargetT >,
stir::GeneralisedObjectiveFunction<TargetT >,
stir::PoissonLogLikelihoodWithLinearModelForMean<TargetT > >);
%shared_ptr(stir::RegisteredParsingObject<stir::PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin<TargetT >,
stir::GeneralisedObjectiveFunction<TargetT >,
stir::PoissonLogLikelihoodWithLinearModelForMeanAndListModeData<TargetT > >);

%shared_ptr(stir::PoissonLogLikelihoodWithLinearModelForMeanAndProjData<TargetT >);
%shared_ptr(stir::PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin<TargetT >);

%shared_ptr(stir::SqrtHessianRowSum<TargetT >);

Expand All @@ -48,6 +53,8 @@
%include "stir/recon_buildblock/GeneralisedObjectiveFunction.h"
%include "stir/recon_buildblock/PoissonLogLikelihoodWithLinearModelForMean.h"
%include "stir/recon_buildblock/PoissonLogLikelihoodWithLinearModelForMeanAndProjData.h"
%include "stir/recon_buildblock/PoissonLogLikelihoodWithLinearModelForMeanAndListModeData.h"
%include "stir/recon_buildblock/PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin.h"
%include "stir/recon_buildblock/SqrtHessianRowSum.h"


Expand All @@ -57,6 +64,7 @@
%template (GeneralisedObjectiveFunction3DFloat) stir::GeneralisedObjectiveFunction<TargetT >;
//%template () stir::GeneralisedObjectiveFunction<TargetT >;
%template (PoissonLogLikelihoodWithLinearModelForMean3DFloat) stir::PoissonLogLikelihoodWithLinearModelForMean<TargetT >;
%template (PoissonLogLikelihoodWithLinearModelForMeanAndListModeData3DFloat) stir::PoissonLogLikelihoodWithLinearModelForMeanAndListModeData<TargetT >;

// TODO do we really need this name?
// Without it we don't see the parsing functions in python...
Expand All @@ -65,14 +73,19 @@
stir::GeneralisedObjectiveFunction<TargetT >,
stir::PoissonLogLikelihoodWithLinearModelForMean<TargetT > >;

%template(RPPoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin3DFloat) stir::RegisteredParsingObject<stir::PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin<TargetT >,
stir::GeneralisedObjectiveFunction<TargetT >,
stir::PoissonLogLikelihoodWithLinearModelForMeanAndListModeData<TargetT > >;

%template (PoissonLogLikelihoodWithLinearModelForMeanAndProjData3DFloat) stir::PoissonLogLikelihoodWithLinearModelForMeanAndProjData<TargetT >;
%template (PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin3DFloat) stir::PoissonLogLikelihoodWithLinearModelForMeanAndListModeDataWithProjMatrixByBin<TargetT >;

%inline %{
template <class T>
stir::PoissonLogLikelihoodWithLinearModelForMeanAndProjData<T> *
ToPoissonLogLikelihoodWithLinearModelForMeanAndProjData(stir::GeneralisedObjectiveFunction<T> *b) {
return dynamic_cast<stir::PoissonLogLikelihoodWithLinearModelForMeanAndProjData<T>*>(b);
}
}
%}

%template(ToPoissonLogLikelihoodWithLinearModelForMeanAndProjData3DFloat) ToPoissonLogLikelihoodWithLinearModelForMeanAndProjData<TargetT >;
Expand Down

0 comments on commit 5bdd300

Please sign in to comment.