annotate auto_threshold.py @ 5:1ae14e703e5b draft default tip

planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
author imgteam
date Sat, 03 Jan 2026 14:42:51 +0000
parents 7d80eb2411fb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
5224cc463a97 "planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit b1b3c63ab021aa77875c3b04127f6836024812f9"
imgteam
parents: 2
diff changeset
1 """
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
2 Copyright 2017-2025 Biomedical Computer Vision Group, Heidelberg University.
3
5224cc463a97 "planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit b1b3c63ab021aa77875c3b04127f6836024812f9"
imgteam
parents: 2
diff changeset
3
5224cc463a97 "planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit b1b3c63ab021aa77875c3b04127f6836024812f9"
imgteam
parents: 2
diff changeset
4 Distributed under the MIT license.
5224cc463a97 "planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit b1b3c63ab021aa77875c3b04127f6836024812f9"
imgteam
parents: 2
diff changeset
5 See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5224cc463a97 "planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit b1b3c63ab021aa77875c3b04127f6836024812f9"
imgteam
parents: 2
diff changeset
6 """
5224cc463a97 "planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit b1b3c63ab021aa77875c3b04127f6836024812f9"
imgteam
parents: 2
diff changeset
7
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
8 import giatools
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
9 import numpy as np
3
5224cc463a97 "planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit b1b3c63ab021aa77875c3b04127f6836024812f9"
imgteam
parents: 2
diff changeset
10 import skimage.filters
0
6fc65082d1e6 planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit bd6ef77515c4c15901b67f73738afbdd5faadae5
imgteam
parents:
diff changeset
11 import skimage.util
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
12
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
13 # Fail early if an optional backend is not available
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
14 giatools.require_backend('omezarr')
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
15
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
16
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
17 class DefaultThresholdingMethod:
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
18
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
19 def __init__(self, thres, **kwargs):
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
20 self.thres = thres
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
21 self.kwargs = kwargs
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
22
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
23 def __call__(self, image, *args, offset=0, **kwargs):
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
24 thres = self.thres(image, *args, **(self.kwargs | kwargs))
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
25 return image > thres + offset
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
26
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
27 def __str__(self):
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
28 return self.thres.__name__
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
29
0
6fc65082d1e6 planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit bd6ef77515c4c15901b67f73738afbdd5faadae5
imgteam
parents:
diff changeset
30
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
31 class ManualThresholding:
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
32
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
33 def __call__(self, image, threshold1: float, threshold2: float | None, **kwargs):
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
34 if threshold2 is None:
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
35 return image > threshold1
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
36 else:
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
37 threshold1, threshold2 = sorted((threshold1, threshold2))
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
38 return skimage.filters.apply_hysteresis_threshold(image, threshold1, threshold2)
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
39
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
40 def __str__(self):
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
41 return 'Manual'
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
42
3
5224cc463a97 "planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit b1b3c63ab021aa77875c3b04127f6836024812f9"
imgteam
parents: 2
diff changeset
43
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
44 methods = {
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
45 'manual': ManualThresholding(),
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
46
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
47 'otsu': DefaultThresholdingMethod(skimage.filters.threshold_otsu),
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
48 'li': DefaultThresholdingMethod(skimage.filters.threshold_li),
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
49 'yen': DefaultThresholdingMethod(skimage.filters.threshold_yen),
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
50 'isodata': DefaultThresholdingMethod(skimage.filters.threshold_isodata),
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
51
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
52 'loc_gaussian': DefaultThresholdingMethod(skimage.filters.threshold_local, method='gaussian'),
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
53 'loc_median': DefaultThresholdingMethod(skimage.filters.threshold_local, method='median'),
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
54 'loc_mean': DefaultThresholdingMethod(skimage.filters.threshold_local, method='mean'),
0
6fc65082d1e6 planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit bd6ef77515c4c15901b67f73738afbdd5faadae5
imgteam
parents:
diff changeset
55 }
6fc65082d1e6 planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit bd6ef77515c4c15901b67f73738afbdd5faadae5
imgteam
parents:
diff changeset
56
3
5224cc463a97 "planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tools/2d_auto_threshold/ commit b1b3c63ab021aa77875c3b04127f6836024812f9"
imgteam
parents: 2
diff changeset
57
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
58 if __name__ == "__main__":
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
59 tool = giatools.ToolBaseplate()
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
60 tool.add_input_image('input')
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
61 tool.add_output_image('output')
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
62 tool.parse_args()
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
63
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
64 # Retrieve general parameters
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
65 method = tool.args.params.pop('method')
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
66 invert = tool.args.params.pop('invert')
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
67
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
68 # Perform thresholding
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
69 method_impl = methods[method]
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
70 print(
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
71 'Thresholding:',
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
72 str(method_impl),
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
73 'with',
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
74 ', '.join(
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
75 f'{key}={repr(value)}' for key, value in (tool.args.params | dict(invert=invert)).items()
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
76 ),
4
7d80eb2411fb planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 01343602708de3cc7fa4986af9000adc36dd0651
imgteam
parents: 3
diff changeset
77 )
5
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
78 for section in tool.run('ZYX', output_dtype_hint='binary'):
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
79 section_output = method_impl(
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
80 image=np.asarray(section['input'].data), # some implementations have issues with Dask arrays
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
81 **tool.args.params,
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
82 )
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
83 if invert:
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
84 section_output = np.logical_not(section_output)
1ae14e703e5b planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/2d_auto_threshold/ commit 71f7ecabba78de48147d4a5e6ea380b6b70b16e8
imgteam
parents: 4
diff changeset
85 section['output'] = section_output