Commit 4f94899b authored by Baumgartner, Michael's avatar Baumgartner, Michael
Browse files

add support for num_processes=0 in planning

parent 68352e5c
...@@ -73,6 +73,10 @@ def run_analyze_instances(analyzer: DatasetAnalyzer, ...@@ -73,6 +73,10 @@ def run_analyze_instances(analyzer: DatasetAnalyzer,
Dict: extract properties per case id [case_id, property_dict] Dict: extract properties per case id [case_id, property_dict]
""" """
props_per_case = OrderedDict() props_per_case = OrderedDict()
if analyzer.num_processes == 0:
props = [analyze_instances_per_case(*args) for args in zip(
repeat(analyzer), analyzer.case_ids, repeat(all_classes))]
else:
with Pool(analyzer.num_processes) as p: with Pool(analyzer.num_processes) as p:
props = p.starmap(analyze_instances_per_case, zip( props = p.starmap(analyze_instances_per_case, zip(
repeat(analyzer), analyzer.case_ids, repeat(all_classes))) repeat(analyzer), analyzer.case_ids, repeat(all_classes)))
......
...@@ -80,16 +80,22 @@ def run_collect_intensity_properties(analyzer: DatasetAnalyzer, ...@@ -80,16 +80,22 @@ def run_collect_intensity_properties(analyzer: DatasetAnalyzer,
Evaluated statistics: `median`; `mean`; `std`; `min`; `max`; `percentile_99_5`; `percentile_00_5` Evaluated statistics: `median`; `mean`; `std`; `min`; `max`; `percentile_99_5`; `percentile_00_5`
`local_props`: contains a dict (with case ids) where statistics where computed per case `local_props`: contains a dict (with case ids) where statistics where computed per case
""" """
with Pool(analyzer.num_processes) as p:
results = OrderedDict() results = OrderedDict()
for mod_id in range(num_modalities): for mod_id in range(num_modalities):
logger.info(f"Processing intensity values of modality {mod_id}") logger.info(f"Processing intensity values of modality {mod_id}")
results[mod_id] = OrderedDict() results[mod_id] = OrderedDict()
if analyzer.num_processes == 0:
voxels = [get_voxels_in_foreground(*args) for args in
zip(repeat(analyzer), analyzer.case_ids, repeat(mod_id))]
local_props = [compute_stats(v) for v in voxels]
else:
with Pool(analyzer.num_processes) as p:
voxels = p.starmap(get_voxels_in_foreground, voxels = p.starmap(get_voxels_in_foreground,
zip(repeat(analyzer), analyzer.case_ids, repeat(mod_id))) zip(repeat(analyzer), analyzer.case_ids, repeat(mod_id)))
local_props = p.map(compute_stats, voxels) local_props = p.map(compute_stats, voxels)
props_per_case = OrderedDict() props_per_case = OrderedDict()
for case_id, lp in zip(analyzer.case_ids, local_props): for case_id, lp in zip(analyzer.case_ids, local_props):
props_per_case[case_id] = lp props_per_case[case_id] = lp
......
...@@ -117,6 +117,11 @@ def run_analyze_segmentation( ...@@ -117,6 +117,11 @@ def run_analyze_segmentation(
Dict[Dict]: computed properties per case Dict[Dict]: computed properties per case
""" """
props_per_case = OrderedDict() props_per_case = OrderedDict()
if analyzer.num_processes == 0:
props = [analyze_fn(*args) for args in zip(
repeat(analyzer), analyzer.case_ids, repeat(all_classes))]
else:
with Pool(analyzer.num_processes) as p: with Pool(analyzer.num_processes) as p:
props = p.starmap(analyze_fn, zip( props = p.starmap(analyze_fn, zip(
repeat(analyzer), analyzer.case_ids, repeat(all_classes))) repeat(analyzer), analyzer.case_ids, repeat(all_classes)))
......
...@@ -232,7 +232,7 @@ def run_check(data_dir: Path, ...@@ -232,7 +232,7 @@ def run_check(data_dir: Path,
for case in cases_npz] for case in cases_npz]
if processes == 0: if processes == 0:
result = [check_case(case_npz, case_pkl, remove=remove) result = [check_case(case_npz, case_pkl, remove=remove, keys=keys)
for case_npz, case_pkl in zip(cases_npz, cases_pkl)] for case_npz, case_pkl in zip(cases_npz, cases_pkl)]
else: else:
with Pool(processes=processes) as p: with Pool(processes=processes) as p:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment