Skip to content

Commit

Permalink
makes superdsm output tsv instead of csv
Browse files Browse the repository at this point in the history
  • Loading branch information
kostrykin committed Nov 15, 2023
1 parent e76d708 commit ab275fd
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 3 deletions.
20 changes: 19 additions & 1 deletion tools/superdsm/run-superdsm.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import pathlib
import shutil
import tempfile
import io
import csv


hyperparameters = [
Expand Down Expand Up @@ -44,6 +46,16 @@ def create_config(args):
cfg[key] = value
return cfg

def flatten_dict(d, sep='/'):
result = {}
for key, val in d.items():
if isinstance(val, dict):
for sub_key, sub_val in flatten_dict(val, sep=sep).items():
result[f'{key}{sep}{sub_key}'] = sub_val
else:
result[key] = val
return result


if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Segmentation of cell nuclei in 2-D fluorescence microscopy images')
Expand Down Expand Up @@ -87,8 +99,14 @@ def create_config(args):

if args.do_cfg:
print(f'Writing config to: {args.do_cfg}')
#cfg_buf = io.StringIO()
#cfg.dump_json(cfg_buf)
#cfg_json = json.loads(cfg_buf.get_value())
with open(args.do_cfg, 'w') as fp:
cfg.dump_json(fp)
tsv_out = csv.writer(fp, delimiter='\t')
tsv_out.writerow(['Hyperparameter', 'Value'])
for key, value in flatten_dict(cfg.entries).items():
tsv_out.writerow([key, value])

if args.do_overlay:
print(f'Writing overlay to: {args.do_overlay}')
Expand Down
5 changes: 3 additions & 2 deletions tools/superdsm/superdsm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
--do-masks 'masks.png'
#end if
#if $do_cfg_enabled == 'true':
--do-cfg 'cfg.json'
--do-cfg 'cfg.tsv'
#end if
#if $do_overlay.do_overlay_enabled == 'true':
--do-overlay 'overlay.png'
Expand Down Expand Up @@ -131,7 +131,7 @@
<data format="png" name="masks" from_work_dir="masks.png" label="${tool.name} on ${on_string}: masks">
<filter>outputs['do_masks_enabled'] == 'true'</filter>
</data>
<data format="json" name="cfg" from_work_dir="cfg.json" label="${tool.name} on ${on_string}: cfg">
<data format="tsv" name="cfg" from_work_dir="cfg.tsv" label="${tool.name} on ${on_string}: cfg">
<filter>outputs['do_cfg_enabled'] == 'true'</filter>
</data>
<data format="png" name="overlay" from_work_dir="overlay.png" label="${tool.name} on ${on_string}: overlay">
Expand All @@ -145,6 +145,7 @@
<param name="do_overlay_enabled" value="true" />
<param name="do_cfg_enabled" value="true" />
<output name="overlay" value="overlay.png" ftype="png" compare="sim_size" />
<output name="cfg" value="cfg.tsv" ftype="tsv" compare="sim_size" />
</test>
<test expect_num_outputs="1">
<param name="dataset" value="BBBC033_C2_z28.png" />
Expand Down
78 changes: 78 additions & 0 deletions tools/superdsm/test-data/cfg.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
Hyperparameter Value
c2f_region_analysis_min_norm_energy_improvement 0.1
c2f_region_analysis_max_atom_norm_energy 0.05
c2f_region_analysis_max_cluster_marker_irregularity 0.2
dsm_AF_alpha 0.0005
global_energy_minimization_AF_beta 0.66
postprocess_mask_max_distance 1
postprocess_mask_stdamp 2.0
postprocess_max_norm_energy 0.2
postprocess_min_contrast 1.35
postprocess_min_object_radius 0.0
AF_scale
preprocess/AF_sigma2 1.0
preprocess/sigma2 65.05382386916237
preprocess/enabled True
preprocess/sigma1 1.4142135623730951
preprocess/offset_clip 3
preprocess/lower_clip_mean False
dsm/AF_alpha 0.0005
dsm/alpha 2.116
dsm/AF_smooth_amount 0.2
dsm/smooth_amount 13
dsm/AF_smooth_subsample 0.4
dsm/smooth_subsample 26
dsm/AF_background_margin 0.4
dsm/background_margin 26
dsm/enabled True
dsm/cachesize 1
dsm/cachetest
dsm/sparsity_tol 0
dsm/init elliptical
dsm/epsilon 1.0
dsm/scale 1000
dsm/gaussian_shape_multiplier 2
dsm/smooth_mat_dtype float32
dsm/smooth_mat_max_allocations inf
dsm/cp_timeout 300
c2f-region-analysis/AF_min_atom_radius 0.33
c2f-region-analysis/min_atom_radius 30
c2f-region-analysis/enabled True
c2f-region-analysis/seed_connectivity 8
c2f-region-analysis/max_atom_norm_energy 0.05
c2f-region-analysis/min_norm_energy_improvement 0.1
c2f-region-analysis/max_cluster_marker_irregularity 0.2
global-energy-minimization/AF_beta 0.66
global-energy-minimization/beta 2793.1200000000003
global-energy-minimization/AF_max_seed_distance inf
global-energy-minimization/max_seed_distance inf
global-energy-minimization/enabled True
global-energy-minimization/strict True
global-energy-minimization/max_iter 5
global-energy-minimization/gamma 0.8
global-energy-minimization/max_work_amount 1000000
postprocess/AF_min_object_radius 0.0
postprocess/min_object_radius 0.0
postprocess/AF_max_object_radius inf
postprocess/max_object_radius inf
postprocess/AF_min_glare_radius inf
postprocess/min_glare_radius inf
postprocess/enabled True
postprocess/max_norm_energy 0.2
postprocess/discard_image_boundary False
postprocess/min_boundary_obj_radius 0
postprocess/max_eccentricity 0.99
postprocess/max_boundary_eccentricity inf
postprocess/exterior_scale 5
postprocess/exterior_offset 5
postprocess/min_contrast 1.35
postprocess/contrast_epsilon 0.0001
postprocess/mask_stdamp 2
postprocess/mask_max_distance 1
postprocess/mask_smoothness 3
postprocess/fill_holes True
postprocess/glare_detection_smoothness 3
postprocess/glare_detection_num_layers 5
postprocess/glare_detection_min_layer 0.5
postprocess/min_boundary_glare_radius inf
histological False

0 comments on commit ab275fd

Please sign in to comment.