Skip to content

Commit b1e17b2

Browse files
cope with non-TOF multfactors for TOF data
This currently doesn't work for all examples though (some problems in `partitioner`
1 parent 086bcda commit b1e17b2

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

SIRF_data_preparation/create_initial_images.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ def scale_initial_image(acquired_data, additive_term, mult_factors, template_ima
5151
5252
WARNING: assumes that obj_fun has been set_up already
5353
"""
54-
data_sum = (acquired_data.sum() - (additive_term * mult_factors).sum())
54+
sensitivity_factors = STIR.AcquisitionSensitivityModel(mult_factors)
55+
sensitivity_factors.set_up(acquired_data)
56+
background = sensitivity_factors.forward(additive_term)
57+
data_sum = acquired_data.sum() - background.sum()
5558
if data_sum <= 0 or math.isinf(data_sum) or math.isnan(data_sum):
5659
raise ValueError("Something wrong with input data. Sum of (prompts-background) is negative:"
5760
f" sum prompts: {acquired_data.sum()}, sum corrected: {data_sum}")

main_OSEM.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,16 @@ def __init__(self, data: Dataset, num_subsets: int = 7, update_objective_interva
6363

6464
acquisition_model_subset = STIR.AcquisitionModelUsingParallelproj()
6565
acquisition_model_subset.set_additive_term(additive_term_subset)
66-
acquisition_model_subset.set_up(prompts_subset, self.x)
66+
if prompts_subset.dimensions()[0] > 1 and multiplicative_factors_subset.dimensions()[0] == 1:
67+
# non-TOF multiplicative factors for TOF data
68+
acquisition_model_subset.set_up(multiplicative_factors_subset, self.x)
69+
subset_sensitivity = acquisition_model_subset.backward(multiplicative_factors_subset)
70+
acquisition_model_subset.set_up(prompts_subset, self.x)
71+
else:
72+
assert prompts_subset.dimensions()[0] == multiplicative_factors_subset.dimensions()[0]
73+
acquisition_model_subset.set_up(prompts_subset, self.x)
74+
subset_sensitivity = acquisition_model_subset.backward(multiplicative_factors_subset)
6775

68-
subset_sensitivity = acquisition_model_subset.backward(multiplicative_factors_subset)
6976
# add a small number to avoid NaN in division
7077
subset_sensitivity += subset_sensitivity.max() * 1e-6
7178

0 commit comments

Comments
 (0)