UCL / UCL/STIR

verbosity issue

Open
#589 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
160
Forks
113
Avg merge
12d 15h
Merged PRs (30d)
1

Description

I have a STIR parameter file for a reconstruction. At the bottom, outside of the objective function, I set the verbosity:

OSMAPOSLParameters :=
objective function type:= PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotionNew
PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotionNew Parameters:=
...
end PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotionNew Parameters:=
...
verbosity := 0
END :=

Yet the parameter file is interpreted by STIR as:

INFO: osmaposlparameters :=
...
verbosity := -1
objective function type := PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotionNew
poissonloglikelihoodwithlinearmodelformeanandgatedprojdatawithmotionnew parameters :=
...
input file := sinos.txt
zoom := 1

Notice how there is verbosity both inside and outside the objective function definition (despite being a global static variable), but neither is 0, which is my desired value. As such, I'm getting a lot of the computing thread 1/12 output.

Am I doing something silly?

Full recon parameter file attached here.
OSMAPOSLParameters :=
; example file for running OSEM with gated projection data and motion. This uses classes
; inside of the experimental folder. Motion resampling here uses the adjoint, which is
; more correct when doing MCIR.

objective function type:= PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotionNew
PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotionNew Parameters:=

input file := sinos.txt

; if disabled, defaults to maximum segment number in the file
maximum absolute segment number to process := 4
; see User's Guide to see when you need this
zero end planes of segment 0:= 1

projector pair type := NiftyPET
 projector pair using NiftyPET parameters :=
 verbosity := 0
 use_truncation := 1
end projector pair using NiftyPET parameters := 

Bin Normalisation type for gate 1 := Chained
Chained Bin Normalisation Parameters :=
	Bin Normalisation to apply first:= From ECAT8
	Bin Normalisation From ECAT8 :=
		normalisation_filename := ../../sirf/NORM.n.hdr
		use gaps:=0
	End Bin Normalisation From ECAT8 :=

	Bin Normalisation to apply second:= From Attenuation Image
	Bin Normalisation From Attenuation Image:=
		attenuation_image_filename := ../../sirf/MUH_comb.hv
	End Bin Normalisation From Attenuation Image :=
END Chained Bin Normalisation Parameters :=	


transformation type for gate 1 := transformation
Transformation Parameters :=
cache_transformed_coords := 1
Transformation Type := BSplines transformation
	BSplines Transformation Parameters :=
		deformation field multicomponent filename x-component := zero_motion_x.nii
		deformation field multicomponent filename y-component := zero_motion_y.nii
		deformation field multicomponent filename z-component := zero_motion_z.nii
	End BSplines Transformation Parameters :=
End Transformation Parameters :=

; if next is set to 1, sensitivity will be recomputed
; and also written to file (if "sensitivity filename" or "subset sensitivity filenames" is set)
; if it is zero, the sensitivity will be read from file
recompute sensitivity := 0
use subset sensitivities:=1 ; recommended
; ; optional filename to store/read the sensitivity image 
; ; (if "use subset sensitivity" is off)
; ;sensitivity filename:=
; ; optional filename to store/read the subsensitivities
; ; use %d where you want the subset-number (a la printf)
subset sensitivity filenames:= sens_GPU_%d.hv
;subset sensitivity filenames:= sens_%d.hv

; choose size of pixels
; x,y pixel size = bin_size/zoom
; zoom := 1
; number of x,y pixels (-1 takes default value to cover the FOV)
xy output image size (in pixels) := 320

end PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotionNew Parameters:=

; Number of subsets should be a divisor of num_views/4
number of subsets:= 1 ; GPU
;number of subsets:= 21
; Use for starting the numbering from something else than 1
;start at subiteration number:=1
; Use if you want to start from another subset than 0 (but why?)
;start at subset:= 0
number of subiterations:= 1
;save estimates at subiteration intervals:= 12

; initial estimate := some_image
; enable this when you read an initial estimate with negative data
enforce initial positivity condition:=0

output filename prefix := stir_mcir_recon_noNorm_noSubsetSensitivities_noMotion_NiftyPET

output file format type := ITK
ITK Output File Format Parameters:=
  default extension:=.nii
End ITK Output File Format Parameters:=
end := 

verbosity := 0

END :=

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the reported behavior with the attached STIR reconstruction parameter file, focusing on the two verbosity settings inside and outside the objective-function parameters. Trace how the parameter file is interpreted and determine which value controls the computing-thread output. Done means verbosity 0 is honored consistently and the reported output no longer appears.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-vision
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.