Skip to content

Commit ba335ec

Browse files
committed
Update simset conversion files to read out multiple energy bin sinograms
1 parent 92094a7 commit ba335ec

1 file changed

Lines changed: 51 additions & 17 deletions

File tree

src/SimSET/scripts/conv_SimSET_projdata_to_STIR.sh

Lines changed: 51 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,26 @@ fi
6161

6262
# find min and max scatter bins in the SimSET file
6363
min_scatter_bin_num=`${PRINTHEADER} ${simset_file} |grep "Binning: min number of scatters" |awk '{ print $6 }'`
64+
65+
echo "Min scatter bin number: $min_scatter_bin_num"
66+
6467
max_scatter_bin_num=`${PRINTHEADER} ${simset_file} |grep "Binning: max number of scatters" |awk '{ print $6 }'`
6568

69+
echo "Max scatter bin number: $max_scatter_bin_num"
70+
71+
en1_bin_num=`${PRINTHEADER} ${simset_file} |grep "Binning: number of Eenergy(1) bins" |awk '{ print $6 }'`
72+
73+
echo "Energy(1) bin number: $en1_bin_num"
74+
75+
en2_bin_num=`${PRINTHEADER} ${simset_file} |grep "Binning: number of Energy(2) bins" |awk '{ print $6 }'`
76+
77+
echo "Energy(2) bin number: $en2_bin_num"
78+
79+
80+
echo "DEBUG: All energy-related lines:"
81+
${PRINTHEADER} ${simset_file} | grep -i "energy"
82+
83+
6684
# find scatter_parameter (maybe called scatter_randoms_parameter in the future)
6785
scatter_parameter=`${PRINTHEADER} ${simset_file} |grep "Binning: scatter.*parameter" |awk '{ print $4 }'`
6886

@@ -83,23 +101,34 @@ all_scatter_bin_nums=`count $min_scatter_bin_num $max_scatter_bin_num`
83101

84102
echo Executing ${conv_cmdline}
85103

104+
for en1 in `count 0 $(($en1_bin_num - 1))` ;
105+
do for en2 in `count 0 $(($en2_bin_num - 1))` ; do
106+
en_bin_num=$(( ${en2_bin_num} * $en1 + $en2 ))
107+
en_dataset=$(( ${en_bin_num} * ${num_scatter_bins}))
108+
en_name=__${en1}_${en2}
109+
echo "extracting energy bin $en_bin_num, dataset ${en_dataset}, corresponding to $en1, $en2"
110+
86111
case $scatter_parameter in
87112

88113
0)
89-
eval ${conv_cmdline} 0 total
114+
eval ${conv_cmdline} 0 total${en_name}
90115
;;
91116

92117
1|6)
93118
if [ $min_scatter_bin_num == 0 ]; then
94-
eval ${conv_cmdline} 0 noscatter
119+
dataset=$(( ${en_dataset} + 0))
120+
eval ${conv_cmdline} ${dataset} noscatter${en_name}
95121
if [ $max_scatter_bin_num -ge 1 ]; then
96-
eval ${conv_cmdline} 1 scatter
122+
dataset=$(( ${en_dataset} + 1))
123+
eval ${conv_cmdline} ${dataset} scatter${en_name}
97124
if [ $scatter_parameter == 6 ]; then
98-
eval ${conv_cmdline} 2 randoms
125+
dataset=$(( ${en_dataset} + 2))
126+
eval ${conv_cmdline} ${dataset} randoms${en_name}
99127
fi
100128
else
101129
if [ $scatter_parameter == 6 ]; then
102-
eval ${conv_cmdline} 1 randoms
130+
dataset=$(( ${en_dataset} + 1))
131+
eval ${conv_cmdline} ${dataset} randoms${en_name}
103132
fi
104133
fi
105134
fi
@@ -113,8 +142,9 @@ case $scatter_parameter in
113142
do
114143
scatter_bin_num=$(( ${num_scatter_bins} * $i + $j ))
115144
echo extracting scatter bin $scatter_bin_num
116-
echo ${conv_cmdline} ${scatter_bin_num} blue${i}_pink${j};
117-
eval ${conv_cmdline} ${scatter_bin_num} blue${i}_pink${j};
145+
dataset=$(( ${en_dataset} + ${scatter_bin_num} ))
146+
echo ${conv_cmdline} ${dataset} blue${i}_pink${j}${en_name};
147+
eval ${conv_cmdline} ${dataset} blue${i}_pink${j}${en_name};
118148
done
119149
done
120150

@@ -131,7 +161,7 @@ case $scatter_parameter in
131161
do for j in $all_scatter_bin_nums
132162
do
133163
k=$(( $i + $j ))
134-
current=blue${i}_pink${j}.hs
164+
current=blue${i}_pink${j}${en_name}.hs
135165
if [ $k -eq 0 ]; then all_trues="$all_trues $current"; fi
136166
if [ $k -eq 1 ]; then all_singles="$all_singles $current"; fi
137167
if [ $k -eq 2 ]; then if [ $i -eq 1 ]; then all_singles12="$all_singles12 $current";fi; fi;
@@ -142,15 +172,15 @@ case $scatter_parameter in
142172
done
143173

144174
# TODO we currently pipe all output to /dev/null because there's a lot of stuff because blocksizes do not work
145-
stir_math -s --add trues $all_trues >& /dev/null
146-
stir_math -s --add singles $all_singles >& /dev/null
175+
stir_math -s --add trues${en_name} $all_trues >& /dev/null
176+
stir_math -s --add singles${en_name} $all_singles >& /dev/null
147177
if [ ! -z "$all_singles12" ]; then
148-
stir_math -s --add doubles11 $all_singles12 >& /dev/null
178+
stir_math -s --add doubles11${en_name} $all_singles12 >& /dev/null
149179
fi
150180
if [ ! -z "$all_doubles1" ]; then
151-
stir_math -s --add doubles20 $all_doubles1 $all_doubles2 >& /dev/null
181+
stir_math -s --add doubles20${en_name} $all_doubles1 $all_doubles2 >& /dev/null
152182
fi
153-
stir_math -s --add multiples $all_multiples >& /dev/null
183+
stir_math -s --add multiples${en_name} $all_multiples >& /dev/null
154184

155185
rm -f blue*s
156186

@@ -169,12 +199,13 @@ case $scatter_parameter in
169199
do
170200
echo extracting scatter bin $scatter_bin_num
171201
idx=$((scatter_bin_num - min_scatter_bin_num))
172-
echo ${conv_cmdline} ${idx} scatter${scatter_bin_num};
173-
eval ${conv_cmdline} ${idx} scatter${scatter_bin_num};
202+
dataset=$(( ${en_dataset} + ${idx} ))
203+
echo ${conv_cmdline} ${dataset} scatter${scatter_bin_num}${en_name};
204+
eval ${conv_cmdline} ${dataset} scatter${scatter_bin_num}${en_name};
174205
done
175206
if [ $scatter_parameter == 10 -o $scatter_parameter == 9 ]; then
176-
echo ${conv_cmdline} $((max_scatter_bin_num - min_scatter_bin_num + 1)) randoms
177-
eval ${conv_cmdline} $((max_scatter_bin_num - min_scatter_bin_num + 1)) randoms
207+
dataset=$(( ${en_dataset} + max_scatter_bin_num - min_scatter_bin_num + 1 ))
208+
echo ${conv_cmdline} ${dataset} randoms${en_name}
178209
fi
179210
;;
180211

@@ -184,3 +215,6 @@ case $scatter_parameter in
184215
;;
185216

186217
esac
218+
219+
done
220+
done

0 commit comments

Comments
 (0)