@@ -168,7 +168,7 @@ def set_module_color(
168168
169169
170170def create_mesh (header , modules_only = False , show_det_eff = False , random_color = False , fov = None ,
171- num_modules = 0 , skip_modules = 0 ):
171+ modules_indices = None ):
172172 """
173173 Create 3D model of PET scanner defined in PETSIRD list mode file.
174174 """
@@ -182,8 +182,8 @@ def create_mesh(header, modules_only=False, show_det_eff=False, random_color=Fal
182182 rep_module .object .detecting_elements
183183 ) # Get all the detecting elements modules
184184 for mod_i in range (len (rep_module .transforms )):
185- if ( module_count % ( skip_modules + 1 )) > 0 :
186- module_count += 1
185+ module_count += 1
186+ if modules_indices is not None and ( module_count - 1 ) not in modules_indices :
187187 continue
188188
189189 vertices = [] # If showing modules only
@@ -222,10 +222,6 @@ def create_mesh(header, modules_only=False, show_det_eff=False, random_color=Fal
222222
223223 shapes .append (module_mesh )
224224
225- module_count += 1
226- if num_modules > 0 and module_count + skip_modules + 1 > (num_modules * (skip_modules + 1 )):
227- break
228-
229225 if fov is not None :
230226 shapes .append (
231227 trimesh .creation .cylinder (radius = fov [0 ], height = fov [1 ])
@@ -308,6 +304,8 @@ def parserCreator():
308304
309305if __name__ == "__main__" :
310306 args = parserCreator ()
307+ if args .skip_modules < 0 :
308+ sys .exit ('skip_modules should be >= 0' )
311309
312310 file = None
313311 if args .input is None :
@@ -318,9 +316,10 @@ def parserCreator():
318316
319317 with petsird .BinaryPETSIRDReader (file ) as reader :
320318 header = reader .read_header ()
321-
319+ module_indices = range ( 0 , args . num_modules * ( args . skip_modules + 1 ), args . skip_modules + 1 ) if args . num_modules > 0 else None
322320 mesh = create_mesh (header , args .modules_only , args .show_det_eff , args .random_color , args .fov ,
323- args .num_modules , args .skip_modules )
321+ module_indices
322+ )
324323 mesh .export (output_fname )
325324
326325 # Forced to do this
0 commit comments