Mercurial > repos > imgteam > superdsm
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) |