@@ -215,70 +215,68 @@ def main():
215215 pool .join ()
216216
217217 output_measures_dict = {}
218- for measure_dict in all_measures_dict :
219- # Empty bundle should not make the script crash
220- if measure_dict is not None :
221- for measure_name in measure_dict .keys ():
222- # Create an empty list first
223- if measure_name not in output_measures_dict :
224- output_measures_dict [measure_name ] = []
225- output_measures_dict [measure_name ].append (
226- measure_dict [measure_name ])
227- # add group stats if user wants
228- if args .group_statistics :
229- # length and span are weighted by streamline count
230- group_total_length = np .sum (
231- np .multiply (output_measures_dict ['avg_length' ],
232- output_measures_dict ['streamlines_count' ]))
233- group_total_span = np .sum (
234- np .multiply (output_measures_dict ['span' ],
235- output_measures_dict ['streamlines_count' ]))
236- group_streamlines_count = \
237- np .sum (output_measures_dict ['streamlines_count' ])
238- group_avg_length = group_total_length / group_streamlines_count
239- group_avg_span = group_total_span / group_streamlines_count
240- group_avg_vol = np .average (output_measures_dict ['volume' ])
241- group_avg_diam = \
242- 2 * np .sqrt (group_avg_vol / (np .pi * group_avg_length ))
243- output_measures_dict ['group_stats' ] = {}
244- output_measures_dict ['group_stats' ]['total_streamlines_count' ] = \
245- float (group_streamlines_count )
246- output_measures_dict ['group_stats' ]['avg_streamline_length' ] = \
247- group_avg_length
248- # max and min length of all streamlines in all input bundles
249- output_measures_dict ['group_stats' ]['max_streamline_length' ] = \
250- float (np .max (output_measures_dict ['max_length' ]))
251- output_measures_dict ['group_stats' ]['min_streamline_length' ] = \
252- float (np .min (output_measures_dict ['min_length' ]))
253- output_measures_dict ['group_stats' ]['avg_streamline_span' ] = \
254- group_avg_span
255- # computed with other set averages and not weighted by streamline count
256- output_measures_dict ['group_stats' ]['avg_volume' ] = group_avg_vol
257- output_measures_dict ['group_stats' ]['avg_curl' ] = \
258- group_avg_length / group_avg_span
259- output_measures_dict ['group_stats' ]['avg_diameter' ] = group_avg_diam
260- output_measures_dict ['group_stats' ]['avg_elongation' ] = \
261- group_avg_length / group_avg_diam
262- output_measures_dict ['group_stats' ]['avg_surface_area' ] = \
263- np .average (output_measures_dict ['surface_area' ])
264- output_measures_dict ['group_stats' ]['avg_irreg' ] = \
265- np .average (output_measures_dict ['irregularity' ])
266- output_measures_dict ['group_stats' ]['avg_end_surface_area_head' ] = \
267- np .average (output_measures_dict ['end_surface_area_head' ])
268- output_measures_dict ['group_stats' ]['avg_end_surface_area_tail' ] = \
269- np .average (output_measures_dict ['end_surface_area_tail' ])
270- output_measures_dict ['group_stats' ]['avg_radius_head' ] = \
271- np .average (output_measures_dict ['radius_head' ])
272- output_measures_dict ['group_stats' ]['avg_radius_tail' ] = \
273- np .average (output_measures_dict ['radius_tail' ])
274- output_measures_dict ['group_stats' ]['avg_irregularity_head' ] = \
275- np .average (
276- output_measures_dict ['irregularity_of_end_surface_head' ])
277- output_measures_dict ['group_stats' ]['avg_irregularity_tail' ] = \
278- np .average (
279- output_measures_dict ['irregularity_of_end_surface_tail' ])
280- output_measures_dict ['group_stats' ]['avg_fractal_dimension' ] = \
281- np .average (output_measures_dict ['fractal_dimension' ])
218+ if len (args .in_bundles ) == 1 :
219+ output_measures_dict = all_measures_dict [0 ]
220+ else :
221+ for measure_dict in all_measures_dict :
222+ # Empty bundle should not make the script crash
223+ if measure_dict is not None :
224+ for measure_name in measure_dict .keys ():
225+ # Create an empty list first
226+ if measure_name not in output_measures_dict :
227+ output_measures_dict [measure_name ] = []
228+ output_measures_dict [measure_name ].append (
229+ measure_dict [measure_name ])
230+ # add group stats if user wants
231+ if args .group_statistics :
232+ # length and span are weighted by streamline count
233+ group_total_length = np .sum (
234+ np .multiply (output_measures_dict ['avg_length' ],
235+ output_measures_dict ['streamlines_count' ]))
236+ group_total_span = np .sum (
237+ np .multiply (output_measures_dict ['span' ],
238+ output_measures_dict ['streamlines_count' ]))
239+ group_streamlines_count = \
240+ np .sum (output_measures_dict ['streamlines_count' ])
241+ group_avg_length = group_total_length / group_streamlines_count
242+ group_avg_span = group_total_span / group_streamlines_count
243+ group_avg_vol = np .average (output_measures_dict ['volume' ])
244+ group_avg_diam = \
245+ 2 * np .sqrt (group_avg_vol / (np .pi * group_avg_length ))
246+ output_measures_dict ['group_stats' ] = {}
247+ output_measures_dict ['group_stats' ]['total_streamlines_count' ] = \
248+ float (group_streamlines_count )
249+ output_measures_dict ['group_stats' ]['avg_streamline_length' ] = \
250+ group_avg_length
251+ # max and min length of all streamlines in all input bundles
252+ output_measures_dict ['group_stats' ]['max_streamline_length' ] = \
253+ float (np .max (output_measures_dict ['max_length' ]))
254+ output_measures_dict ['group_stats' ]['min_streamline_length' ] = \
255+ float (np .min (output_measures_dict ['min_length' ]))
256+ output_measures_dict ['group_stats' ]['avg_streamline_span' ] = \
257+ group_avg_span
258+ # computed with other set averages and not weighted by
259+ # streamline count
260+ output_measures_dict ['group_stats' ]['avg_volume' ] = group_avg_vol
261+ output_measures_dict ['group_stats' ]['avg_curl' ] = \
262+ group_avg_length / group_avg_span
263+ output_measures_dict ['group_stats' ]['avg_diameter' ] = group_avg_diam
264+ output_measures_dict ['group_stats' ]['avg_elongation' ] = \
265+ group_avg_length / group_avg_diam
266+ output_measures_dict ['group_stats' ]['avg_irregularity_head' ] = \
267+ np .average (
268+ output_measures_dict ['irregularity_of_end_surface_head' ])
269+ output_measures_dict ['group_stats' ]['avg_irregularity_tail' ] = \
270+ np .average (
271+ output_measures_dict ['irregularity_of_end_surface_tail' ])
272+
273+ list_metrics = ['surface_area' , 'irregularity' ,
274+ 'end_surface_area_head' ,
275+ 'end_surface_area_tail' , 'radius_head' ,
276+ 'radius_tail' , 'fractal_dimension' ]
277+ for curr_metric in list_metrics :
278+ output_measures_dict ['group_stats' ]['avg_' + curr_metric ] = \
279+ np .average (output_measures_dict [curr_metric ])
282280
283281 if args .out_json :
284282 with open (args .out_json , 'w' ) as outfile :
0 commit comments