comparison run-superdsm.py @ 4:dc5f72f6b1e9 draft

planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/superdsm/ commit b0b09d6788778541d1c0b89ca96101fc57d60e22
author imgteam
date Mon, 12 Feb 2024 14:58:45 +0000
parents 7fd8dba15bd3
children 79ec3263686a
comparison
equal deleted inserted replaced
3:7fd8dba15bd3 4:dc5f72f6b1e9
15 import tempfile 15 import tempfile
16 16
17 17
18 hyperparameters = [ 18 hyperparameters = [
19 ('AF_scale', float), 19 ('AF_scale', float),
20 ('c2f_region_analysis/min_atom_radius', float), 20 ('c2f-region-analysis/min_atom_radius', float),
21 ('c2f_region_analysis_min_norm_energy_improvement', float), 21 ('c2f-region-analysis/min_norm_energy_improvement', float),
22 ('c2f_region_analysis_max_atom_norm_energy', float), 22 ('c2f-region-analysis/max_atom_norm_energy', float),
23 ('c2f_region_analysis_max_cluster_marker_irregularity', float), 23 ('c2f-region-analysis/max_cluster_marker_irregularity', float),
24 ('dsm_alpha', float), 24 ('dsm/alpha', float),
25 ('dsm_AF_alpha', float), 25 ('dsm/AF_alpha', float),
26 ('global_energy_minimization_betai', float), 26 ('global-energy-minimization/pruning', str),
27 ('global_energy_minimization_AF_beta', float), 27 ('global-energy-minimization/beta', float),
28 ('postprocess_mask_max_distance', int), 28 ('global-energy-minimization/AF_beta', float),
29 ('postprocess_mask_stdamp', float), 29 ('postprocess/mask_max_distance', int),
30 ('postprocess_max_norm_energy', float), 30 ('postprocess/mask_stdamp', float),
31 ('postprocess_min_contrast', float), 31 ('postprocess/max_norm_energy', float),
32 ('postprocess_min_object_radius', float), 32 ('postprocess/min_contrast', float),
33 ('postprocess/min_object_radius', float),
33 ] 34 ]
34 35
35 36
36 def get_param_name(key): 37 def get_param_name(key):
37 return key.replace('/', '_') 38 return key.replace('/', '_').replace('-', '_')
38 39
39 40
40 def create_config(args): 41 def create_config(args):
41 cfg = superdsm.config.Config() 42 cfg = superdsm.config.Config()
42 for key, _ in hyperparameters: 43 for key, _ in hyperparameters:
94 95
95 pipeline = superdsm.pipeline.create_default_pipeline() 96 pipeline = superdsm.pipeline.create_default_pipeline()
96 cfg = create_config(args) 97 cfg = create_config(args)
97 img = superdsm.io.imread(img_filepath) 98 img = superdsm.io.imread(img_filepath)
98 99
99 if args.do_cfg: 100 # Create configuration if it is required:
100 print(f'Writing config to: {args.do_cfg}') 101 if args.do_cfg or args.do_overlay or args.do_masks:
101 cfg, _ = superdsm.automation.create_config(pipeline, cfg, img) 102 cfg, _ = superdsm.automation.create_config(pipeline, cfg, img)
102 with open(args.do_cfg, 'w') as fp:
103 tsv_out = csv.writer(fp, delimiter='\t')
104 tsv_out.writerow(['Hyperparameter', 'Value'])
105 for key, value in flatten_dict(cfg.entries).items():
106 tsv_out.writerow([key, value])
107 103
104 # Perform segmentation if it is required:
108 if args.do_overlay or args.do_masks: 105 if args.do_overlay or args.do_masks:
109 print('Performing segmentation') 106 print('Performing segmentation')
110 data, cfg, _ = pipeline.process_image(img, cfg) 107 data, cfg, _ = pipeline.process_image(img, cfg)
111 108
109 # Write configuration used for segmentation, or the automatically created one, otherwise:
110 if args.do_cfg:
111 print(f'Writing config to: {args.do_cfg}')
112 with open(args.do_cfg, 'w') as fp:
113 tsv_out = csv.writer(fp, delimiter='\t')
114 tsv_out.writerow(['Hyperparameter', 'Value'])
115 rows = sorted(flatten_dict(cfg.entries).items(), key=lambda item: item[0])
116 for key, value in rows:
117 tsv_out.writerow([key, value])
118
119 # Write the overlay image:
112 if args.do_overlay: 120 if args.do_overlay:
113 print(f'Writing overlay to: {args.do_overlay}') 121 print(f'Writing overlay to: {args.do_overlay}')
114 overlay = superdsm.render.render_result_over_image(data, border_width=args.do_overlay_border, normalize_img=False) 122 overlay = superdsm.render.render_result_over_image(data, border_width=args.do_overlay_border, normalize_img=False)
115 superdsm.io.imwrite(args.do_overlay, overlay) 123 superdsm.io.imwrite(args.do_overlay, overlay)
116 124
125 # Write the label map:
117 if args.do_masks: 126 if args.do_masks:
118 print(f'Writing masks to: {args.do_masks}') 127 print(f'Writing masks to: {args.do_masks}')
119 masks = superdsm.render.rasterize_labels(data) 128 masks = superdsm.render.rasterize_labels(data)
120 superdsm.io.imwrite(args.do_masks, masks) 129 superdsm.io.imwrite(args.do_masks, masks)