Repository 'imagej2_bunwarpj_align'
hg clone https://toolshed.g2.bx.psu.edu/repos/imgteam/imagej2_bunwarpj_align

Changeset 3:711adedc5bb8 (2024-09-25)
Previous changeset 2:0a0d2dfd17e0 (2023-11-05)
Commit message:
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/image_processing/imagej2 commit 8f49f3c66b5a1de99ec15e65c2519a56792f1d56
modified:
imagej2_adjust_threshold_binary_jython_script.py
imagej2_analyze_particles_binary_jython_script.py
imagej2_analyze_skeleton_jython_script.py
imagej2_binary_to_edm_jython_script.py
imagej2_bunwarpj_align.xml
imagej2_enhance_contrast_jython_script.py
imagej2_find_edges_jython_script.py
imagej2_find_maxima_jython_script.py
imagej2_macros.xml
imagej2_make_binary_jython_script.py
imagej2_math_jython_script.py
imagej2_noise_jython_script.py
imagej2_shadows_jython_script.py
imagej2_sharpen_jython_script.py
imagej2_skeletonize3d_jython_script.py
imagej2_smooth_jython_script.py
imagej2_watershed_binary_jython_script.py
test-data/add_specified_noise.gif
test-data/analyze_particles_outlines.gif
test-data/blobs_threshold_default.gif
test-data/blobs_threshold_huang_dark.gif
test-data/elastic_trans_registered_source1.png
test-data/raw_trans_registered_source1.png
test-data/registered_source1.png
test-data/registered_source2.png
test-data/registered_target1.png
test-data/registered_target2.png
test-data/remove_outliers.gif
test-data/shortest_branch_all_yes.tabular
test-data/shortest_branch_basic.tabular
added:
imagej2_crop_jython_script.py
imagej2_filter_jython_script.py
test-data/analyze_particles_bareoutlines.gif
test-data/analyze_particles_overlaymasks.gif
test-data/analyze_particles_rois.tabular
test-data/blobs_crop_top50.gif
test-data/blobs_crop_width50.gif
test-data/blobs_threshold_0-8.gif
test-data/blobs_threshold_8-255.gif
test-data/blobs_threshold_percentile.gif
test-data/composed_raw_elastic_transformation_full.txt
test-data/composed_raw_transformation_full.txt
test-data/confocal-series-both-channels.tiff
test-data/confocal-series-both-channels_cropped_singleZ.tiff
test-data/confocal-series-first-channel.tif
test-data/confocal-series-first-channel_cropped.tiff
test-data/confocal-series-first-channel_cropped_singleZ.tiff
test-data/confocal-series-first-channel_default_threshold_watershed.tiff
test-data/confocal-series-first-channel_gaussian_blur.tiff
test-data/confocal-series-first-channel_threshold_default.tiff
test-data/confocal-series-first-channel_threshold_default_overlay_mask.tiff
test-data/confocal_analyze_particles.tabular
test-data/confocal_analyze_particles_rois.tabular
test-data/gaussian_blur.gif
test-data/median.gif
test-data/raw_transformation_full.txt
test-data/regenerate_outputs.sh
test-data/registered_source1_forced1cpu.png
test-data/registered_source2_forced1cpu.png
test-data/registered_target1_forced1cpu.png
test-data/registered_target2_forced1cpu.png
test-data/source_elastic_transformation_forced1cpu_out_full.txt
test-data/source_elastic_transformation_out_full.txt
test-data/target_elastic_transformation_forced1cpu_out_full.txt
test-data/target_elastic_transformation_out_full.txt
test-data/top_hat.gif
test-data/top_hat2.gif
test-data/unsharp_mask.gif
test-data/warping_index1_full.txt
test-data/warping_index_raw_full.txt
removed:
test-data/analyze_particles_masks.gif
test-data/blobs_threshold_ijiso.gif
test-data/dot_blot.jpg
test-data/dot_blot.png
test-data/dot_blot.tiff
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_adjust_threshold_binary_jython_script.py
--- a/imagej2_adjust_threshold_binary_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_adjust_threshold_binary_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -1,18 +1,15 @@
 import sys
 
-from ij import IJ
+from ij import IJ, Prefs
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-10]
-input_file = sys.argv[-9]
-threshold_min = float(sys.argv[-8])
-threshold_max = float(sys.argv[-7])
-method = sys.argv[-6]
-display = sys.argv[-5]
-black_background = sys.argv[-4] == "yes"
-# TODO: this is not being used.
-stack_histogram = sys.argv[-3] == "yes"
+input_file = sys.argv[-8]
+threshold_min = float(sys.argv[-7])
+threshold_max = float(sys.argv[-6])
+method = sys.argv[-5]
+display = sys.argv[-4]
+black_background = sys.argv[-3] == "yes"
 output_filename = sys.argv[-2]
 output_datatype = sys.argv[-1]
 
@@ -21,22 +18,34 @@
 
 # Create a copy of the image.
 input_image_plus_copy = input_image_plus.duplicate()
-image_processor_copy = input_image_plus_copy.getProcessor()
+
+bit_depth = input_image_plus_copy.getBitDepth()
+
+if black_background:
+    Prefs.blackBackground = True
+else:
+    Prefs.blackBackground = False
 
-# Convert image to binary if necessary.
-if not image_processor_copy.isBinary():
-    # Convert the image to binary grayscale.
-    IJ.run(
-        input_image_plus_copy,
-        "Make Binary",
-        "iterations=1 count=1 edm=Overwrite do=Nothing",
-    )
-# Set the options.
-if black_background:
-    method_str = "%s dark" % method
-else:
-    method_str = method
-IJ.setAutoThreshold(input_image_plus_copy, method_str)
+if method != "Manual":
+    # Set the options.
+    if black_background:
+        method_str = "%s dark" % method
+        suffix = "black"
+    else:
+        method_str = method
+        suffix = ""
+    threshold_min = 1
+    # Set threshold_max based on image bit-depth
+    # For 8-bit images, use 255; for 16-bit images, use 65535
+    if bit_depth == 8:
+        threshold_max = 255  # Default for 8-bit images
+    elif bit_depth == 16:
+        threshold_max = 65535  # Default for 16-bit images
+    else:
+        threshold_max = float('inf')  # General fallback if bit depth is unknown
+
+    IJ.setAutoThreshold(input_image_plus_copy, method_str)
+    IJ.run(input_image_plus_copy, "Convert to Mask", "calculate %s" % suffix)
 if display == "red":
     display_mode = "Red"
 elif display == "bw":
@@ -44,7 +53,5 @@
 elif display == "over_under":
     display_mode = "Over/Under"
 IJ.setThreshold(input_image_plus_copy, threshold_min, threshold_max, display_mode)
-# Run the command.
-IJ.run(input_image_plus_copy, "threshold", "")
 # Save the ImagePlus object as a new image.
 IJ.saveAs(input_image_plus_copy, output_datatype, output_filename)
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_analyze_particles_binary_jython_script.py
--- a/imagej2_analyze_particles_binary_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_analyze_particles_binary_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -1,27 +1,32 @@
 import sys
 
-from ij import IJ
+from ij import IJ, Prefs
 from ij.plugin.filter import Analyzer
 
 OPTIONS = ["edm=Overwrite", "iterations=1", "count=1"]
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-14]
-input_file = sys.argv[-13]
-black_background = sys.argv[-12] == "yes"
-size = sys.argv[-11]
-circularity_min = float(sys.argv[-10])
-circularity_max = float(sys.argv[-9])
-show = sys.argv[-8]
-display_results = sys.argv[-7] == "yes"
-all_results = sys.argv[-6] == "yes"
+roi_coordinate_file = sys.argv[-13]
+input_file = sys.argv[-12]
+black_background = sys.argv[-11] == "yes"
+size = sys.argv[-10]
+circularity_min = float(sys.argv[-9])
+circularity_max = float(sys.argv[-8])
+show = sys.argv[-7]
+display_results = sys.argv[-6] == "yes"
 exclude_edges = sys.argv[-5] == "yes"
 include_holes = sys.argv[-4] == "yes"
 output_filename = sys.argv[-3]
 output_datatype = sys.argv[-2]
 results_path = sys.argv[-1]
 
+
+if black_background:
+    Prefs.blackBackground = True
+else:
+    Prefs.blackBackground = False
+
 # Open the input image file.
 input_image_plus = IJ.openImage(input_file)
 
@@ -42,9 +47,32 @@
     IJ.run(input_image_plus_copy, "Make Binary", "")
 
 # Set the options.
-options = ["size=%s" % size]
+options = ["size=%s" % size, "stack"]
 circularity_str = "%.3f-%.3f" % (circularity_min, circularity_max)
 options.append("circularity=%s" % circularity_str)
+if exclude_edges:
+    options.append("exclude")
+if include_holes:
+    options.append("include")
+
+# If you need the coordinates of ROIs we compute it twice
+if len(roi_coordinate_file) > 0:
+    options2 = list(options)
+    options2.append("show=Overlay")
+    IJ.run(input_image_plus_copy, "Analyze Particles...", " ".join(options2))
+    ov = input_image_plus_copy.getOverlay()
+    with open(roi_coordinate_file, 'w') as fo:
+        fo.write("shape\tpoints\tlabel\tt\tz\n")
+        for i, roi in enumerate(ov):
+            if roi.getName() is None:
+                roi.name = "ROI_%d" % i
+            poly = roi.getPolygon()
+            x_values = poly.xpoints
+            y_values = poly.ypoints
+            points_coo = ",".join(["(%d,%d)" % (x, y) for x, y in zip(x_values, y_values)])
+            fo.write("Polygon\t%s\t%s\t%d\t%d\n" % (points_coo, roi.getName(), roi.getTPosition(), roi.getZPosition()))
+    analyzer.resetCounter()
+
 if show.find("_") >= 0:
     show_str = "[%s]" % show.replace("_", " ")
 else:
@@ -52,12 +80,6 @@
 options.append("show=%s" % show_str)
 if display_results:
     options.append("display")
-    if not all_results:
-        options.append("summarize")
-if exclude_edges:
-    options.append("exclude")
-if include_holes:
-    options.append("include")
 # Always run "in_situ".
 options.append("in_situ")
 
@@ -68,6 +90,6 @@
 if len(output_filename) > 0:
     # Save the ImagePlus object as a new image.
     IJ.saveAs(input_image_plus_copy, output_datatype, output_filename)
-if display_results and len(results_path) > 0:
+if len(results_path) > 0:
     results_table = analyzer.getResultsTable()
     results_table.saveAs(results_path)
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_analyze_skeleton_jython_script.py
--- a/imagej2_analyze_skeleton_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_analyze_skeleton_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -121,7 +121,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-8]
 input = sys.argv[-7]
 black_background = sys.argv[-6] == "yes"
 prune_cycle_method = sys.argv[-5]
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_binary_to_edm_jython_script.py
--- a/imagej2_binary_to_edm_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_binary_to_edm_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -4,7 +4,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-8]
 input_file = sys.argv[-7]
 iterations = int(sys.argv[-6])
 count = int(sys.argv[-5])
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_bunwarpj_align.xml
--- a/imagej2_bunwarpj_align.xml Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_bunwarpj_align.xml Wed Sep 25 15:56:56 2024 +0000
[
@@ -1,4 +1,4 @@
-<tool id="imagej2_bunwarpj_align" name="Align two images" version="@WRAPPER_VERSION@.1">
+<tool id="imagej2_bunwarpj_align" name="Align two images" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="23.0">
     <description>with ImageJ2</description>
     <macros>
         <import>imagej2_macros.xml</import>
@@ -20,10 +20,10 @@
 #set source_out_suffix = '.' + str($source_out_datatype)
 #set target_out_suffix = '.' + str($target_out_datatype)
 #set source_image_sans_ext = $os.path.splitext($os.path.basename($source_image.file_name))[0]
-#set source_image_with_ext = '.'.join([$source_image_sans_ext, $source_image.ext])
+#set source_image_with_ext = './' + '.'.join([$source_image_sans_ext, $source_image.ext])
 ln -s '$source_image.file_name' '$source_image_with_ext';
 #set target_image_sans_ext = $os.path.splitext($os.path.basename($target_image.file_name))[0]
-#set target_image_with_ext = '.'.join([$target_image_sans_ext, $target_image.ext])
+#set target_image_with_ext = './' + '.'.join([$target_image_sans_ext, $target_image.ext])
 ln -s '$target_image.file_name' '$target_image_with_ext';
 
 #set save_transformation = str($advanced_options_cond.advanced_options) == 'save_transformation'
@@ -33,11 +33,11 @@
 
 #if str($align_with_mask_cond.align_with_mask) == 'yes':
     #set source_mask_sans_ext = $os.path.splitext($os.path.basename($align_with_mask_cond.source_mask.file_name))[0]
-    #set source_mask_with_ext = '.'.join([$source_mask_sans_ext, $source_mask.ext])
+    #set source_mask_with_ext =  './' + '.'.join([$source_mask_sans_ext, $source_mask.ext])
     #set source_mask = $source_mask_with_ext
     ln -s '$align_with_mask_cond.source_mask.file_name' '$source_mask_with_ext';
     #set target_mask_sans_ext = $os.path.splitext($os.path.basename($align_with_mask_cond.target_mask.file_name))[0]
-    #set target_mask_with_ext = '.'.join([$target_mask_sans_ext, $target_mask.ext])
+    #set target_mask_with_ext =  './' + '.'.join([$target_mask_sans_ext, $target_mask.ext])
     #set target_mask = $target_mask_with_ext
     ln -s '$align_with_mask_cond.target_mask.file_name' '$target_mask_with_ext';
 #else:
@@ -65,7 +65,8 @@
 touch '$tmp_source_out_transf_name';
 
 ## Align the two images using bUnwarpJ.
-bunwarpj -align
+## The option -XX:ActiveProcessorCount="1" was set in version 20231211 to ensure reproducibility
+bunwarpj -XX:ActiveProcessorCount="1" -align
 '$target_image_with_ext'
 '$target_mask'
 '$source_image_with_ext'
@@ -97,14 +98,10 @@
 #if $save_transformation:
     '-save_transformation'
 #end if
-&>'$error_log';
 #if $save_transformation:
-    mv '$tmp_source_out_transf_name' '$source_trans_out';
-    mv '$tmp_target_out_transf_name' '$target_trans_out';
+    && mv '$tmp_source_out_transf_name' '$source_trans_out'
+    && mv '$tmp_target_out_transf_name' '$target_trans_out';
 #end if
-if [[ $? -ne 0 ]]; then
-    cat '$error_log' >&2;
-fi
 ]]></command>
     <inputs>
         <expand macro="param_target_image"/>
@@ -207,32 +204,32 @@
         </data>
     </outputs>
     <tests>
-        <test>
+        <test expect_num_outputs="2">
             <!-- Align two images without landmarks or mask and not saving transformation matrices -->
             <expand macro="test_target_source_images"/>
             <param name="max_subsamp_fact" value="1"/>
-            <output name="source_out" file="registered_source1.png" compare="sim_size"/>
-            <output name="target_out" file="registered_target1.png" compare="sim_size"/>
+            <output name="source_out" file="registered_source1_forced1cpu.png" compare="image_diff"/>
+            <output name="target_out" file="registered_target1_forced1cpu.png" compare="image_diff"/>
         </test>
-        <test>
+        <test expect_num_outputs="4">
             <!-- Align two images without landmarks or mask, but saving transformation matrices -->
             <expand macro="test_target_source_images"/>
             <param name="max_subsamp_fact" value="1"/>
             <param name="advanced_options" value="save_transformation"/>
-            <output name="source_out" file="registered_source1.png" compare="sim_size"/>
-            <output name="target_out" file="registered_target1.png" compare="sim_size"/>
+            <output name="source_out" file="registered_source1_forced1cpu.png" compare="image_diff"/>
+            <output name="target_out" file="registered_target1_forced1cpu.png" compare="image_diff"/>
             <output name="source_trans_out" file="source_elastic_transformation_out.txt" compare="contains"/>
             <output name="target_trans_out" file="target_elastic_transformation_out.txt" compare="contains"/>
         </test>
-        <test>
+        <test expect_num_outputs="2">
             <!-- Align two images without landmarks but with mask, not saving transformation matrices -->
             <expand macro="test_target_source_images"/>
             <param name="align_with_mask" value="yes"/>
             <param name="target_mask" value="mask_white.png"/>
             <param name="source_mask" value="mask_ramp.gif"/>
             <param name="max_subsamp_fact" value="1"/>
-            <output name="source_out" file="registered_source2.png" compare="sim_size"/>
-            <output name="target_out" file="registered_target2.png" compare="sim_size"/>
+            <output name="source_out" file="registered_source2_forced1cpu.png" compare="image_diff"/>
+            <output name="target_out" file="registered_target2_forced1cpu.png" compare="image_diff"/>
         </test>
     </tests>
     <help>
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_crop_jython_script.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagej2_crop_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -0,0 +1,55 @@
+import sys
+
+from ij import IJ
+from ij.plugin import Duplicator
+
+# Fiji Jython interpreter implements Python 2.5 which does not
+# provide support for argparse.
+input_file = sys.argv[-13]
+xleft = int(sys.argv[-12])
+width = int(sys.argv[-11])
+ytop = int(sys.argv[-10])
+height = int(sys.argv[-9])
+first_channel = int(sys.argv[-8])
+last_channel = int(sys.argv[-7])
+first_slice = int(sys.argv[-6])
+last_slice = int(sys.argv[-5])
+first_frame = int(sys.argv[-4])
+last_frame = int(sys.argv[-3])
+output_filename = sys.argv[-2]
+output_datatype = sys.argv[-1]
+
+# Open the input image file.
+input_image_plus = IJ.openImage(input_file)
+
+# Get image dimensions (width, height, nChannels, nSlices, nFrames)
+image_dims = input_image_plus.getDimensions()
+
+# Create a copy of the image.
+input_image_plus_copy = input_image_plus.duplicate()
+
+# Determine if crop in XY is needed:
+if xleft != 0 or width != 0 or ytop != 0 or height != 0:
+    # Need to define a ROI
+    if width == 0:
+        width = image_dims[0] - xleft
+    if height == 0:
+        height = image_dims[1] - ytop
+    input_image_plus_copy.setRoi(xleft, ytop, width, height)
+
+# Replace 0's with default:
+if last_channel == 0:
+    last_channel = image_dims[2]
+if last_slice == 0:
+    last_slice = image_dims[3]
+if last_frame == 0:
+    last_frame = image_dims[4]
+print("Original dimensions:")
+print(image_dims)
+# This will also crop in XY is a ROI has been set
+input_image_plus_copy = Duplicator().run(input_image_plus_copy, first_channel, last_channel, first_slice, last_slice, first_frame, last_frame)
+print("Final dimensions:")
+print(input_image_plus_copy.getDimensions())
+
+# Save the ImagePlus object as a new image.
+IJ.saveAs(input_image_plus_copy, output_datatype, output_filename)
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_enhance_contrast_jython_script.py
--- a/imagej2_enhance_contrast_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_enhance_contrast_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -4,7 +4,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-7]
 input = sys.argv[-6]
 equalize_histogram = sys.argv[-5] == "yes"
 saturated_pixels = sys.argv[-4]
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_filter_jython_script.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagej2_filter_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -0,0 +1,39 @@
+import sys
+
+from ij import IJ
+
+# Fiji Jython interpreter implements Python 2.5 which does not
+# provide support for argparse.
+input_file = sys.argv[-8]
+image_datatype = sys.argv[-7]
+filter = sys.argv[-6]
+radius = sys.argv[-5]
+mask = sys.argv[-4]
+light_background = sys.argv[-3]
+dont_substract = sys.argv[-2]
+tmp_output_path = sys.argv[-1]
+
+# Open the input image file.
+image_plus = IJ.openImage(input_file)
+# Create an ImagePlus object for the image.
+image_plus_copy = image_plus.duplicate()
+
+# Perform the analysis on the ImagePlus object.
+try:
+    if filter == "gaussian_blur":
+        IJ.run(image_plus_copy, "Gaussian Blur...", "sigma=%s stack" % radius)
+    elif filter in ["median", "mean", "minimum", "maximum", "variance"]:
+        IJ.run(image_plus_copy, "%s..." % filter.title(), "radius=%s stack" % radius)
+    elif filter == "unsharp_mask":
+        IJ.run(image_plus_copy, "Unsharp Mask...", "radius=%s mask=%s stack" % (radius, mask))
+    elif filter == "top_hat":
+        print("radius=%s %s %s" % (radius, light_background, dont_substract.replace('dont', "don't")))
+        IJ.run(image_plus_copy, "Top Hat...", "radius=%s %s %s stack" % (radius, light_background, dont_substract.replace('dont', "don't")))
+except Exception as e:
+    # This is due to some operations like gaussian_blur which block the script
+    print(e)
+    exit(1)
+# Save the ImagePlus object as a new image.
+IJ.saveAs(image_plus_copy, image_datatype, tmp_output_path)
+# This is due to some operations like gaussian_blur which block the script
+exit(0)
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_find_edges_jython_script.py
--- a/imagej2_find_edges_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_find_edges_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -4,7 +4,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-4]
 input = sys.argv[-3]
 tmp_output_path = sys.argv[-2]
 output_datatype = sys.argv[-1]
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_find_maxima_jython_script.py
--- a/imagej2_find_maxima_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_find_maxima_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -6,7 +6,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-10]
 input_file = sys.argv[-9]
 scale_when_converting = sys.argv[-8] == "yes"
 weighted_rgb_conversions = sys.argv[-7] == "yes"
@@ -35,7 +34,7 @@
     if weighted_rgb_conversions:
         options.append("weighted")
 # Perform conversion - must happen even if no options are set.
-IJ.run(input_image_plus_copy, "Conversions...", "%s" % " ".join(options))
+IJ.run(input_image_plus_copy, "Conversions...", " %s" % " ".join(options))
 if output_type in ["List", "Count"]:
     # W're  generating a tabular file for the output.
     # Set the Find Maxima options.
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_macros.xml
--- a/imagej2_macros.xml Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_macros.xml Wed Sep 25 15:56:56 2024 +0000
b
@@ -1,19 +1,12 @@
 <macros>
-    <token name="@WRAPPER_VERSION@">3.0</token>
+    <token name="@TOOL_VERSION@">20240614</token>
+    <token name="@VERSION_SUFFIX@">0</token>
     <xml name="fiji_requirements">
         <requirements>
-            <requirement type="package" version="20170530">fiji</requirement>
-            <requirement type="package" version="3.4">grep</requirement>
+            <requirement type="package" version="@TOOL_VERSION@">fiji</requirement>
+            <requirement type="package" version="3.11">grep</requirement>
         </requirements>
     </xml>
-    <xml name="stdio">
-        <stdio>
-            <exit_code range="1:"/>
-            <exit_code range=":-1"/>
-            <regex match="Error:"/>
-            <regex match="Exception:"/>
-        </stdio>
-    </xml>
     <xml name="image_type">
         <param name="image_type" type="select" label="Image type">
             <option value="8-bit_white" selected="true">8-bit white</option>
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_make_binary_jython_script.py
--- a/imagej2_make_binary_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_make_binary_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -4,7 +4,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-8]
 input = sys.argv[-7]
 iterations = int(sys.argv[-6])
 count = int(sys.argv[-5])
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_math_jython_script.py
--- a/imagej2_math_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_math_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -3,8 +3,7 @@
 from ij import IJ
 
 # Fiji Jython interpreter implements Python 2.5 which does not
-# provide support for argparse.
-error_log = sys.argv[-8]
+# provide support for argparse.\
 input_file = sys.argv[-7]
 operation = sys.argv[-6]
 expression = sys.argv[-5]
@@ -19,7 +18,6 @@
 tmp_output_path = sys.argv[-2]
 output_datatype = sys.argv[-1]
 
-print("\nerror_log: %s\n" % str(error_log))
 print("\ninput_file: %s\n" % str(input_file))
 print("\noperation: %s\n" % str(operation))
 print("\nexpression: %s\n" % str(expression))
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_noise_jython_script.py
--- a/imagej2_noise_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_noise_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -1,85 +1,56 @@
 import sys
 
-from ij import IJ
+from ij import IJ, ImagePlus
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-19]
-input_file = sys.argv[-18]
-image_datatype = sys.argv[-17]
-noise = sys.argv[-16]
-standard_deviation = sys.argv[-15]
-radius = sys.argv[-14]
-threshold = sys.argv[-13]
-which_outliers = sys.argv[-12]
-randomj = sys.argv[-11]
-trials = sys.argv[-10]
-probability = sys.argv[-9]
-# Note the spelling - so things don't get confused due to Python lambda function.
-lammbda = sys.argv[-8]
-order = sys.argv[-7]
-mean = sys.argv[-6]
-sigma = sys.argv[-5]
-min = sys.argv[-4]
-max = sys.argv[-3]
-insertion = sys.argv[-2]
+input_file = sys.argv[-8]
+image_datatype = sys.argv[-7]
+noise = sys.argv[-6]
+standard_deviation = sys.argv[-5]
+radius = sys.argv[-4]
+threshold = sys.argv[-3]
+which_outliers = sys.argv[-2]
 tmp_output_path = sys.argv[-1]
 
 # Open the input image file.
 image_plus = IJ.openImage(input_file)
-bit_depth = image_plus.getBitDepth()
 image_type = image_plus.getType()
+is32BITS_GREY = image_type == ImagePlus.GRAY32
 # Create an ImagePlus object for the image.
 image_plus_copy = image_plus.duplicate()
-# Make a copy of the image.
-image_processor_copy = image_plus_copy.getProcessor()
 
 # Perform the analysis on the ImagePlus object.
-if noise == "add_noise":
-    IJ.run(image_plus_copy, "Add Noise", "")
-elif noise == "add_specified_noise":
-    IJ.run(image_plus_copy, "Add Specified Noise", "standard=&standard_deviation")
-elif noise == "salt_and_pepper":
-    IJ.run(image_plus_copy, "Salt and Pepper", "")
-elif noise == "despeckle":
-    IJ.run(image_plus_copy, "Despeckle", "")
-elif noise == "remove_outliers":
-    IJ.run(
-        image_plus_copy,
-        "Remove Outliers",
-        "radius=&radius threshold=&threshold which=&which_outliers",
-    )
-elif noise == "remove_nans":
-    IJ.run(image_plus_copy, "Remove NaNs", "")
-elif noise == "rof_denoise":
-    IJ.run(image_plus_copy, "ROF Denoise", "")
-elif noise == "randomj":
-    if randomj == "randomj_binomial":
+try:
+    if noise == "add_noise":
+        IJ.run(image_plus_copy, "Add Noise", "")
+    elif noise == "add_specified_noise":
+        IJ.run(image_plus_copy, "Add Specified Noise...", "standard=%s" % standard_deviation)
+    elif noise == "salt_and_pepper":
+        IJ.run(image_plus_copy, "Salt and Pepper", "")
+    elif noise == "despeckle":
+        IJ.run(image_plus_copy, "Despeckle", "")
+    elif noise == "remove_outliers":
         IJ.run(
             image_plus_copy,
-            "RandomJ Binomial",
-            "trials=&trials probability=&probability insertion=&insertion",
-        )
-    elif randomj == "randomj_exponential":
-        IJ.run(
-            image_plus_copy,
-            "RandomJ Exponential",
-            "lambda=&lammbda insertion=&insertion",
+            "Remove Outliers...",
+            "radius=%s threshold=%s which=%s" % (radius, threshold, which_outliers)
         )
-    elif randomj == "randomj_gamma":
-        IJ.run(image_plus_copy, "RandomJ Gamma", "order=&order insertion=&insertion")
-    elif randomj == "randomj_gaussian":
-        IJ.run(
-            image_plus_copy,
-            "RandomJ Gaussian",
-            "mean=&mean sigma=&sigma insertion=&insertion",
-        )
-    elif randomj == "randomj_poisson":
-        IJ.run(image_plus_copy, "RandomJ Poisson", "mean=&mean insertion=&insertion")
-    elif randomj == "randomj_uniform":
-        IJ.run(
-            image_plus_copy, "RandomJ Uniform", "min=&min max=&max insertion=&insertion"
-        )
-
+    elif noise == "remove_nans":
+        if is32BITS_GREY:
+            IJ.run(image_plus_copy, "Remove NaNs...", "")
+        else:
+            raise Exception("Remove NaNs can only be applied to 32bits grey images.")
+    elif noise == "rof_denoise":
+        if is32BITS_GREY:
+            IJ.run(image_plus_copy, "ROF Denoise", "")
+        else:
+            raise Exception("ROF Denoise can only be applied to 32bits grey images.")
+except Exception as e:
+    # This is due to some operations like remove_outliers and despeckle which block the script
+    print(e)
+    exit(1)
 # Save the ImagePlus object as a new image.
 IJ.saveAs(image_plus_copy, image_datatype, tmp_output_path)
+# This is due to some operations like remove_outliers and despeckle which block the script
+exit(0)
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_shadows_jython_script.py
--- a/imagej2_shadows_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_shadows_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -4,7 +4,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-5]
 input_file = sys.argv[-4]
 direction = sys.argv[-3]
 tmp_output_path = sys.argv[-2]
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_sharpen_jython_script.py
--- a/imagej2_sharpen_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_sharpen_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -4,7 +4,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-4]
 input_file = sys.argv[-3]
 tmp_output_path = sys.argv[-2]
 output_datatype = sys.argv[-1]
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_skeletonize3d_jython_script.py
--- a/imagej2_skeletonize3d_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_skeletonize3d_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -4,7 +4,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-5]
 input_file = sys.argv[-4]
 black_background = sys.argv[-3] == "yes"
 tmp_output_path = sys.argv[-2]
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_smooth_jython_script.py
--- a/imagej2_smooth_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_smooth_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -4,7 +4,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-4]
 input = sys.argv[-3]
 tmp_output_path = sys.argv[-2]
 output_datatype = sys.argv[-1]
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 imagej2_watershed_binary_jython_script.py
--- a/imagej2_watershed_binary_jython_script.py Sun Nov 05 10:51:33 2023 +0000
+++ b/imagej2_watershed_binary_jython_script.py Wed Sep 25 15:56:56 2024 +0000
[
@@ -4,7 +4,6 @@
 
 # Fiji Jython interpreter implements Python 2.5 which does not
 # provide support for argparse.
-error_log = sys.argv[-5]
 input = sys.argv[-4]
 black_background = sys.argv[-3] == "yes"
 tmp_output_path = sys.argv[-2]
@@ -30,7 +29,7 @@
     IJ.run(input_image_plus_copy, "Make Binary", "")
 
 # Run the command.
-IJ.run(input_image_plus_copy, "Watershed", "")
+IJ.run(input_image_plus_copy, "Watershed", "stack")
 
 # Save the ImagePlus object as a new image.
 IJ.saveAs(input_image_plus_copy, output_datatype, tmp_output_path)
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/add_specified_noise.gif
b
Binary file test-data/add_specified_noise.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/analyze_particles_bareoutlines.gif
b
Binary file test-data/analyze_particles_bareoutlines.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/analyze_particles_masks.gif
b
Binary file test-data/analyze_particles_masks.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/analyze_particles_outlines.gif
b
Binary file test-data/analyze_particles_outlines.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/analyze_particles_overlaymasks.gif
b
Binary file test-data/analyze_particles_overlaymasks.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/analyze_particles_rois.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/analyze_particles_rois.tabular Wed Sep 25 15:56:56 2024 +0000
b
b'@@ -0,0 +1,64 @@\n+shape\tpoints\tlabel\tt\tz\n+Polygon\t(20,1),(19,1),(19,2),(18,2),(18,3),(17,3),(17,4),(16,4),(16,8),(15,8),(15,11),(14,11),(14,14),(13,14),(13,15),(12,15),(12,16),(11,16),(11,17),(8,17),(8,16),(7,16),(7,15),(6,15),(6,7),(7,7),(7,5),(8,5),(8,4),(9,4),(9,3),(10,3),(10,1),(11,1),(11,0),(20,0)\tROI_0\t0\t0\n+Polygon\t(42,2),(41,2),(41,4),(40,4),(40,5),(38,5),(38,6),(32,6),(32,5),(31,5),(31,3),(30,3),(30,0),(42,0)\tROI_1\t0\t0\n+Polygon\t(68,2),(69,2),(69,3),(68,3),(68,6),(69,6),(69,9),(68,9),(68,12),(67,12),(67,14),(66,14),(66,15),(64,15),(64,16),(59,16),(59,15),(57,15),(57,14),(56,14),(56,13),(55,13),(55,11),(54,11),(54,2),(55,2),(55,0),(68,0)\tROI_2\t0\t0\n+Polygon\t(93,3),(94,3),(94,6),(93,6),(93,9),(92,9),(92,10),(91,10),(91,11),(90,11),(90,12),(89,12),(89,13),(84,13),(84,12),(83,12),(83,10),(82,10),(82,8),(81,8),(81,1),(82,1),(82,0),(93,0)\tROI_3\t0\t0\n+Polygon\t(144,15),(142,15),(142,16),(139,16),(139,17),(138,17),(138,16),(136,16),(136,15),(135,15),(135,13),(134,13),(134,8),(133,8),(133,7),(134,7),(134,3),(135,3),(135,1),(136,1),(136,0),(144,0)\tROI_4\t0\t0\n+Polygon\t(114,5),(115,5),(115,6),(116,6),(116,7),(117,7),(117,8),(116,8),(116,11),(115,11),(115,13),(114,13),(114,14),(112,14),(112,15),(109,15),(109,14),(108,14),(108,13),(107,13),(107,11),(106,11),(106,8),(107,8),(107,6),(108,6),(108,5),(109,5),(109,4),(114,4)\tROI_5\t0\t0\n+Polygon\t(28,11),(29,11),(29,13),(30,13),(30,16),(29,16),(29,18),(28,18),(28,20),(23,20),(23,19),(22,19),(22,17),(21,17),(21,12),(22,12),(22,11),(24,11),(24,10),(28,10)\tROI_6\t0\t0\n+Polygon\t(80,14),(79,14),(79,15),(78,15),(78,16),(76,16),(76,15),(75,15),(75,11),(76,11),(76,10),(80,10)\tROI_7\t0\t0\n+Polygon\t(126,13),(127,13),(127,15),(128,15),(128,19),(127,19),(127,20),(126,20),(126,21),(125,21),(125,22),(121,22),(121,21),(120,21),(120,20),(119,20),(119,14),(120,14),(120,12),(121,12),(121,10),(126,10)\tROI_8\t0\t0\n+Polygon\t(1,15),(2,15),(2,17),(1,17),(1,19),(0,19),(0,12),(1,12)\tROI_9\t0\t0\n+Polygon\t(101,13),(103,13),(103,14),(104,14),(104,16),(105,16),(105,21),(104,21),(104,23),(103,23),(103,24),(102,24),(102,25),(101,25),(101,26),(100,26),(100,27),(97,27),(97,26),(95,26),(95,25),(94,25),(94,24),(93,24),(93,23),(92,23),(92,21),(91,21),(91,18),(92,18),(92,15),(93,15),(93,14),(94,14),(94,13),(95,13),(95,12),(101,12)\tROI_10\t0\t0\n+Polygon\t(47,17),(48,17),(48,18),(49,18),(49,21),(48,21),(48,22),(49,22),(49,27),(48,27),(48,28),(47,28),(47,29),(46,29),(46,30),(45,30),(45,31),(43,31),(43,32),(37,32),(37,31),(35,31),(35,30),(34,30),(34,28),(33,28),(33,26),(34,26),(34,23),(35,23),(35,21),(36,21),(36,19),(37,19),(37,18),(38,18),(38,17),(39,17),(39,16),(40,16),(40,15),(47,15)\tROI_11\t0\t0\n+Polygon\t(6,23),(7,23),(7,28),(6,28),(6,29),(3,29),(3,28),(2,28),(2,24),(3,24),(3,23),(4,23),(4,22),(6,22)\tROI_12\t0\t0\n+Polygon\t(134,23),(135,23),(135,24),(136,24),(136,28),(135,28),(135,31),(134,31),(134,32),(129,32),(129,30),(128,30),(128,29),(127,29),(127,24),(128,24),(128,23),(130,23),(130,22),(134,22)\tROI_13\t0\t0\n+Polygon\t(81,25),(82,25),(82,27),(83,27),(83,28),(84,28),(84,35),(83,35),(83,37),(82,37),(82,38),(80,38),(80,39),(78,39),(78,38),(75,38),(75,37),(74,37),(74,36),(73,36),(73,34),(72,34),(72,28),(73,28),(73,26),(74,26),(74,25),(76,25),(76,24),(81,24)\tROI_14\t0\t0\n+Polygon\t(114,25),(115,25),(115,32),(114,32),(114,34),(113,34),(113,36),(112,36),(112,40),(111,40),(111,41),(110,41),(110,42),(109,42),(109,43),(107,43),(107,42),(105,42),(105,41),(104,41),(104,36),(105,36),(105,34),(106,34),(106,33),(107,33),(107,31),(108,31),(108,28),(109,28),(109,26),(110,26),(110,25),(112,25),(112,24),(114,24)\tROI_15\t0\t0\n+Polygon\t(18,26),(20,26),(20,27),(21,27),(21,28),(22,28),(22,29),(23,29),(23,34),(22,34),(22,37),(21,37),(21,38),(20,38),(20,39),(19,39),(19,40),(15,40),(15,41),(14,41),(14,40),(12,40),(12,39),(11,39),(11,38),(10,38),(10,30),(11,30),(11,28),(12,28),(12,27),(13,27),(13,26),(14,26),(14,25),(18,25)\tROI_16\t0\t0\n+Polygon\t(59,35),(61,35),(61,45),(60,45),(60,47),(59,47),(59,48),(58,48),(58,49),(53,49),(53,48),(51,48),(51,46),(50,46),(50,41),(51,41),(51,39)'..b'6,111),(96,110),(95,110),(95,109),(94,109),(94,100),(95,100),(95,97),(96,97),(96,96),(97,96),(97,95),(105,95)\tROI_45\t0\t0\n+Polygon\t(134,99),(135,99),(135,100),(136,100),(136,101),(137,101),(137,108),(136,108),(136,109),(135,109),(135,110),(133,110),(133,111),(128,111),(128,110),(127,110),(127,109),(126,109),(126,108),(125,108),(125,103),(126,103),(126,102),(127,102),(127,101),(128,101),(128,100),(130,100),(130,99),(132,99),(132,98),(134,98)\tROI_46\t0\t0\n+Polygon\t(77,106),(79,106),(79,107),(80,107),(80,108),(81,108),(81,115),(80,115),(80,117),(79,117),(79,118),(78,118),(78,119),(75,119),(75,120),(73,120),(73,119),(69,119),(69,118),(68,118),(68,116),(67,116),(67,114),(66,114),(66,109),(67,109),(67,107),(68,107),(68,106),(70,106),(70,105),(77,105)\tROI_47\t0\t0\n+Polygon\t(144,118),(142,118),(142,117),(141,117),(141,112),(142,112),(142,110),(143,110),(143,109),(144,109)\tROI_48\t0\t0\n+Polygon\t(119,113),(120,113),(120,115),(119,115),(119,118),(118,118),(118,119),(117,119),(117,120),(114,120),(114,119),(113,119),(113,113),(114,113),(114,112),(115,112),(115,111),(119,111)\tROI_49\t0\t0\n+Polygon\t(15,114),(16,114),(16,115),(17,115),(17,117),(18,117),(18,119),(19,119),(19,123),(21,123),(21,129),(20,129),(20,130),(19,130),(19,131),(17,131),(17,132),(15,132),(15,131),(13,131),(13,129),(12,129),(12,126),(11,126),(11,125),(10,125),(10,114),(11,114),(11,113),(15,113)\tROI_50\t0\t0\n+Polygon\t(58,114),(60,114),(60,115),(61,115),(61,116),(62,116),(62,117),(64,117),(64,119),(65,119),(65,121),(66,121),(66,126),(65,126),(65,127),(64,127),(64,128),(63,128),(63,129),(62,129),(62,130),(58,130),(58,129),(56,129),(56,128),(55,128),(55,127),(54,127),(54,126),(53,126),(53,125),(52,125),(52,123),(51,123),(51,121),(50,121),(50,117),(51,117),(51,115),(53,115),(53,114),(55,114),(55,113),(58,113)\tROI_51\t0\t0\n+Polygon\t(37,116),(38,116),(38,117),(39,117),(39,118),(40,118),(40,119),(41,119),(41,123),(42,123),(42,126),(41,126),(41,129),(40,129),(40,131),(38,131),(38,132),(34,132),(34,131),(32,131),(32,129),(31,129),(31,128),(30,128),(30,126),(29,126),(29,118),(30,118),(30,117),(31,117),(31,116),(33,116),(33,115),(37,115)\tROI_52\t0\t0\n+Polygon\t(2,122),(3,122),(3,123),(4,123),(4,124),(5,124),(5,127),(6,127),(6,131),(5,131),(5,133),(4,133),(4,134),(2,134),(2,135),(0,135),(0,121),(2,121)\tROI_53\t0\t0\n+Polygon\t(136,123),(137,123),(137,125),(138,125),(138,126),(139,126),(139,133),(138,133),(138,135),(136,135),(136,136),(129,136),(129,135),(127,135),(127,134),(126,134),(126,133),(125,133),(125,132),(124,132),(124,127),(125,127),(125,125),(126,125),(126,124),(127,124),(127,123),(129,123),(129,122),(136,122)\tROI_54\t0\t0\n+Polygon\t(99,124),(108,124),(108,125),(110,125),(110,126),(111,126),(111,127),(113,127),(113,133),(112,133),(112,135),(111,135),(111,136),(110,136),(110,137),(107,137),(107,138),(99,138),(99,137),(94,137),(94,136),(93,136),(93,134),(92,134),(92,132),(91,132),(91,126),(92,126),(92,125),(93,125),(93,124),(94,124),(94,123),(99,123)\tROI_55\t0\t0\n+Polygon\t(80,128),(81,128),(81,129),(82,129),(82,131),(83,131),(83,133),(82,133),(82,136),(81,136),(81,138),(80,138),(80,139),(77,139),(77,138),(75,138),(75,136),(74,136),(74,134),(73,134),(73,133),(74,133),(74,131),(73,131),(73,130),(74,130),(74,128),(75,128),(75,127),(80,127)\tROI_56\t0\t0\n+Polygon\t(27,132),(29,132),(29,133),(30,133),(30,139),(29,139),(29,141),(28,141),(28,142),(24,142),(24,141),(23,141),(23,139),(22,139),(22,135),(23,135),(23,133),(24,133),(24,132),(25,132),(25,131),(27,131)\tROI_57\t0\t0\n+Polygon\t(44,138),(43,138),(43,137),(44,137)\tROI_58\t0\t0\n+Polygon\t(75,142),(78,142),(78,144),(66,144),(66,143),(67,143),(67,142),(69,142),(69,141),(75,141)\tROI_59\t0\t0\n+Polygon\t(104,142),(105,142),(105,143),(106,143),(106,144),(96,144),(96,142),(98,142),(98,141),(104,141)\tROI_60\t0\t0\n+Polygon\t(133,142),(135,142),(135,143),(136,143),(136,144),(128,144),(128,143),(129,143),(129,142),(131,142),(131,141),(133,141)\tROI_61\t0\t0\n+Polygon\t(43,143),(44,143),(44,142),(45,142),(45,143),(47,143),(47,144),(37,144),(37,143),(39,143),(39,142),(43,142)\tROI_62\t0\t0\n'
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/blobs_crop_top50.gif
b
Binary file test-data/blobs_crop_top50.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/blobs_crop_width50.gif
b
Binary file test-data/blobs_crop_width50.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/blobs_threshold_0-8.gif
b
Binary file test-data/blobs_threshold_0-8.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/blobs_threshold_8-255.gif
b
Binary file test-data/blobs_threshold_8-255.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/blobs_threshold_default.gif
b
Binary file test-data/blobs_threshold_default.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/blobs_threshold_huang_dark.gif
b
Binary file test-data/blobs_threshold_huang_dark.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/blobs_threshold_ijiso.gif
b
Binary file test-data/blobs_threshold_ijiso.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/blobs_threshold_percentile.gif
b
Binary file test-data/blobs_threshold_percentile.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/composed_raw_elastic_transformation_full.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/composed_raw_elastic_transformation_full.txt Wed Sep 25 15:56:56 2024 +0000
b
b'@@ -0,0 +1,294 @@\n+Width=144\n+Height=144\n+\n+X Trans -----------------------------------\n+   -8.356784649818302    -7.197224454983437    -6.007291128456463     -4.78857035976083    -3.542648755368276     -2.27111292175059   -0.9755494653795207   0.34245500727314293    1.6813138897356357    3.0394405755361955     4.415248458203067     5.807150931264452      7.21356138824859     6.722616523231703     7.982832965851492     9.241901922762699    10.500157904929564    11.755439850906992    13.007881998138114    14.257818796273467    15.503597042436024      16.7441831444607    17.979203521782882    19.209729191621175    20.434924351265607    21.653927817871562    22.868018271403987    24.077212618583225     25.28220858222662    26.482822213238034     27.68108269563495    28.876976885081163    30.071735843481154    31.267312088467172    32.461884574486334      33.6540253250871     34.84451070010306    36.032159052340404     37.21731193936262     38.40098887470948     39.58514301848773      40.7697991777691     41.95621659878733     43.14336916337468    44.332762755666245     45.52368427263207     46.71616063628192      47.9102587132078     49.10447011578231     50.29945996745416     51.49280946178481     52.68452392595436     53.87243480117253      55.0558589967881     56.23259866253449     57.40168688627666    58.560586048253406     59.70814582308569    60.842020356312204     61.96028478681958     63.06129999594824     64.14282865164152     65.20294849643733     66.23977708520655       67.251514074432      68.2364787499741     69.19379132689076     70.12368273237351     71.02688237947935     71.90443109666018     72.75759402782955     73.58797464576547     74.39754123580246     75.18880500856693     75.96371546546276      76.7252296396663     77.47583769656181     78.21957975177521     78.95905016293707     79.69712587468834      80.4370485162662     81.18210364892593     81.93429837927215     82.69597230924478      83.4691472921311     84.25544962565074     85.05614376573314     85.87215879473054     86.70392313153135     87.55146827026859     88.41445157658053     89.29218897542948     90.18369572122522     91.08773317913175    102.68235537543303     103.7042131782845    104.71196201385267    105.70449758967617    106.68071561329351    107.63951179224333    108.57978183406415    109.50042144629455    110.40032633647319     111.2783922121385    112.13351478082917    112.96458975008372    113.77051282744074    114.55017972043879    115.30267699164074    116.02873972512184    116.72995672023089    117.40792272643284     118.0642324931926    118.70048076997512    119.31826230624539    119.91917185146836    120.50480415510899    121.07675396663221    121.63661603550297    122.18598511118623    122.72645594314696     123.2596232808501    123.78708187376054    124.31042647134338    124.83125182306345    125.35115267838574    125.87172378677525    126.39455989769684    126.92125576061551    127.45340612499622    127.99260574030393    128.54044935600356     129.0985317215601    129.66844758643848    130.25179170010364    130.85015881202057     131.4651436716542     132.0983410284695    132.75134563193137    133.42575223150482    134.12315557665482    134.84515041684625     135.5933315015441    136.36929118355562 \n+   -8.374127336215409    -7.203348638731092   -6.0013206733761475   -4.7696961635913855   -3.5101287650461663   -2.2242721334099076   -0.9137799243519846   -0.5333284543446105    0.7142201362261558    1.9682741321748811     3.226898907276631     4.490136297753633    5.7547173142655375      7.02110257013391     8.287464876867245     9.554439102493117    10.819507996584367     12.08146847941271    13.340004085970438    14.594002156841423    15.845047001475221    17.090850593827977    18.331057062691976     19.56565481083514     20.79582989838611     22.02100274835715    23.240238683228082    24.456286411511062    25.668091576968095    26.876624360066277    28.083988655203306     29.28904913535645    30.496027139017805    31.70274927'..b'4268085129334     148.6469194029473    148.75112793673117    148.85494266869821    148.95804026817186    149.06009758700367    149.16079147704525    149.25979879014827    149.35679637816423    149.45146109294487    149.54346978634177     149.6324993102064    149.71822651639053    149.80032825674573    149.87848138312359     149.9523627473757     150.0216492013537     150.0860175969092    150.14514478589376    150.19870762015907    150.24638295155668    150.28784763193826    150.32277851315536    150.35085244705957     150.3717462855025    150.38513688033586     150.3907010834112     150.3881157465801    150.37705772169414    150.35720386060504     150.3282310151643    150.28981603722363    150.24163577863453    150.18336709124873    150.11468682691773    150.03527183749316    149.94479897482674    149.84294213626143 \n+    145.4017522591916    145.68728041991523    145.98694201220394    146.29952872192806    146.62382901867576    146.95863137203523    147.30272425159467     147.6548961269422    148.01393546766607    148.37863074335445    148.74777042359548    149.12014297797742    149.49453687608838     149.8697405875166    150.24454258185023    150.61773132867748    150.98809529758645    151.35442295816546     151.7155027800026     152.0701232326861    152.41707278580407    152.75513990894476    153.08311307169637    153.39978074364703    153.70393139438494    153.99435349349835    154.26983551057532    154.52916591520406    154.77113317697285     154.9945257654698     155.1981321502831    155.38074080100097    155.54114018721157    155.67811877850303     155.7904650444636    155.87696745468145    155.93642087390077    155.96838472497006    155.97390397514764    155.95419417089084    155.91047085865708    155.84394958490358     155.7558458960878    155.64737533866708    155.51975345909875    155.37419580384014    155.21191791934865    155.03413535208156    154.84206364849632    154.63691835505023    154.41991501820058     154.1922691844048    153.95519640012026    153.70991221180424     153.4576321659141    153.19957180890725      152.936946687241    152.67097234737275    152.40286433575972     152.1338381988594    151.86510948312906     151.5978937350261    151.33340650100786    151.07286332753165    150.81747976105487    150.56847134803485    150.32705363492894    150.09444216819452    149.87185249428887    149.66050015966943    149.46160071079348    149.27636969411842    149.10598788905725    148.95084272664363    148.81052683715328    148.68459856794385    148.57261626637296    148.47413827979818    148.38872295557715    148.31592864106744    148.25531368362664    148.20643643061246     148.1688552293824    148.14212842729404    148.12581437170508    148.11947140997316    148.12265788945575    148.13493215751055    148.15585256149515     148.1849774487671     148.2218651666841    148.26607406260374    148.31716248388352    148.37468877788112     148.4382112919542    148.50728837346028      148.581478369757    148.66033962820197    148.74343049615283    148.83030932096707     148.9205344500024     149.0136642306164    149.10925701016671     149.2068711360109    149.30606495550654     149.4063968160113    149.50742506488274     149.6087080494785     149.7098135053973    149.81038919811107    149.91012475333372      150.008709995401     150.1058347486486    150.20118883741236    150.29446208602795    150.38534431883116    150.47352536015774    150.55869503434337     150.6405431657239    150.71875957863497     150.7930340974124    150.86305654639193     150.9285167499093    150.98910453230025     151.0445097179005    151.09442213104586    151.13853159607203    151.17652793731477    151.20810097910982    151.23294054579296    151.25073646169986    151.26117855116632    151.26395663852813      151.258760548121    151.24528010428062     151.2232051313428    151.19222545364326    151.15203089551784    151.10231128130212    151.04275643533197     150.9730561819431    150.89290034547125    150.80197875025215     150.6999782464026 \n'
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/composed_raw_transformation_full.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/composed_raw_transformation_full.txt Wed Sep 25 15:56:56 2024 +0000
b
b'@@ -0,0 +1,294 @@\n+Width=144\n+Height=144\n+\n+X Trans -----------------------------------\n+   -8.356784649818302    -7.197224454983437    -6.007291128456463     -4.78857035976083    -3.542648755368276     -2.27111292175059   -0.9755494653795207   0.34245500727314293    1.6813138897356357    3.0394405755361955     4.415248458203067     5.807150931264452      7.21356138824859     6.722616523231703     7.982832965851492     9.241901922762699    10.500157904929564    11.755439850906992    13.007881998138114    14.257818796273467    15.503597042436024      16.7441831444607    17.979203521782882    19.209729191621175    20.434924351265607    21.653927817871562    22.868018271403987    24.077212618583225     25.28220858222662    26.482822213238034     27.68108269563495    28.876976885081163    30.071735843481154    31.267312088467172    32.461884574486334      33.6540253250871     34.84451070010306    36.032159052340404     37.21731193936262     38.40098887470948     39.58514301848773      40.7697991777691     41.95621659878733     43.14336916337468    44.332762755666245     45.52368427263207     46.71616063628192      47.9102587132078     49.10447011578231     50.29945996745416     51.49280946178481     52.68452392595436     53.87243480117253      55.0558589967881     56.23259866253449     57.40168688627666    58.560586048253406     59.70814582308569    60.842020356312204     61.96028478681958     63.06129999594824     64.14282865164152     65.20294849643733     66.23977708520655       67.251514074432      68.2364787499741     69.19379132689076     70.12368273237351     71.02688237947935     71.90443109666018     72.75759402782955     73.58797464576547     74.39754123580246     75.18880500856693     75.96371546546276      76.7252296396663     77.47583769656181     78.21957975177521     78.95905016293707     79.69712587468834      80.4370485162662     81.18210364892593     81.93429837927215     82.69597230924478      83.4691472921311     84.25544962565074     85.05614376573314     85.87215879473054     86.70392313153135     87.55146827026859     88.41445157658053     89.29218897542948     90.18369572122522     91.08773317913175    102.68235537543303     103.7042131782845    104.71196201385267    105.70449758967617    106.68071561329351    107.63951179224333    108.57978183406415    109.50042144629455    110.40032633647319     111.2783922121385    112.13351478082917    112.96458975008372    113.77051282744074    114.55017972043879    115.30267699164074    116.02873972512184    116.72995672023089    117.40792272643284     118.0642324931926    118.70048076997512    119.31826230624539    119.91917185146836    120.50480415510899    121.07675396663221    121.63661603550297    122.18598511118623    122.72645594314696     123.2596232808501    123.78708187376054    124.31042647134338    124.83125182306345    125.35115267838574    125.87172378677525    126.39455989769684    126.92125576061551    127.45340612499622    127.99260574030393    128.54044935600356     129.0985317215601    129.66844758643848    130.25179170010364    130.85015881202057     131.4651436716542     132.0983410284695    132.75134563193137    133.42575223150482    134.12315557665482    134.84515041684625     135.5933315015441    136.36929118355562 \n+   -8.374127336215409    -7.203348638731092   -6.0013206733761475   -4.7696961635913855   -3.5101287650461663   -2.2242721334099076   -0.9137799243519846   -0.5333284543446105    0.7142201362261558    1.9682741321748811     3.226898907276631     4.490136297753633    5.7547173142655375      7.02110257013391     8.287464876867245     9.554439102493117    10.819507996584367     12.08146847941271    13.340004085970438    14.594002156841423    15.845047001475221    17.090850593827977    18.331057062691976     19.56565481083514     20.79582989838611     22.02100274835715    23.240238683228082    24.456286411511062    25.668091576968095    26.876624360066277    28.083988655203306     29.28904913535645    30.496027139017805    31.70274927'..b'4268085129334     148.6469194029473    148.75112793673117    148.85494266869821    148.95804026817186    149.06009758700367    149.16079147704525    149.25979879014827    149.35679637816423    149.45146109294487    149.54346978634177     149.6324993102064    149.71822651639053    149.80032825674573    149.87848138312359     149.9523627473757     150.0216492013537     150.0860175969092    150.14514478589376    150.19870762015907    150.24638295155668    150.28784763193826    150.32277851315536    150.35085244705957     150.3717462855025    150.38513688033586     150.3907010834112     150.3881157465801    150.37705772169414    150.35720386060504     150.3282310151643    150.28981603722363    150.24163577863453    150.18336709124873    150.11468682691773    150.03527183749316    149.94479897482674    149.84294213626143 \n+    145.4017522591916    145.68728041991523    145.98694201220394    146.29952872192806    146.62382901867576    146.95863137203523    147.30272425159467     147.6548961269422    148.01393546766607    148.37863074335445    148.74777042359548    149.12014297797742    149.49453687608838     149.8697405875166    150.24454258185023    150.61773132867748    150.98809529758645    151.35442295816546     151.7155027800026     152.0701232326861    152.41707278580407    152.75513990894476    153.08311307169637    153.39978074364703    153.70393139438494    153.99435349349835    154.26983551057532    154.52916591520406    154.77113317697285     154.9945257654698     155.1981321502831    155.38074080100097    155.54114018721157    155.67811877850303     155.7904650444636    155.87696745468145    155.93642087390077    155.96838472497006    155.97390397514764    155.95419417089084    155.91047085865708    155.84394958490358     155.7558458960878    155.64737533866708    155.51975345909875    155.37419580384014    155.21191791934865    155.03413535208156    154.84206364849632    154.63691835505023    154.41991501820058     154.1922691844048    153.95519640012026    153.70991221180424     153.4576321659141    153.19957180890725      152.936946687241    152.67097234737275    152.40286433575972     152.1338381988594    151.86510948312906     151.5978937350261    151.33340650100786    151.07286332753165    150.81747976105487    150.56847134803485    150.32705363492894    150.09444216819452    149.87185249428887    149.66050015966943    149.46160071079348    149.27636969411842    149.10598788905725    148.95084272664363    148.81052683715328    148.68459856794385    148.57261626637296    148.47413827979818    148.38872295557715    148.31592864106744    148.25531368362664    148.20643643061246     148.1688552293824    148.14212842729404    148.12581437170508    148.11947140997316    148.12265788945575    148.13493215751055    148.15585256149515     148.1849774487671     148.2218651666841    148.26607406260374    148.31716248388352    148.37468877788112     148.4382112919542    148.50728837346028      148.581478369757    148.66033962820197    148.74343049615283    148.83030932096707     148.9205344500024     149.0136642306164    149.10925701016671     149.2068711360109    149.30606495550654     149.4063968160113    149.50742506488274     149.6087080494785     149.7098135053973    149.81038919811107    149.91012475333372      150.008709995401     150.1058347486486    150.20118883741236    150.29446208602795    150.38534431883116    150.47352536015774    150.55869503434337     150.6405431657239    150.71875957863497     150.7930340974124    150.86305654639193     150.9285167499093    150.98910453230025     151.0445097179005    151.09442213104586    151.13853159607203    151.17652793731477    151.20810097910982    151.23294054579296    151.25073646169986    151.26117855116632    151.26395663852813      151.258760548121    151.24528010428062     151.2232051313428    151.19222545364326    151.15203089551784    151.10231128130212    151.04275643533197     150.9730561819431    150.89290034547125    150.80197875025215     150.6999782464026 \n'
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal-series-both-channels.tiff
b
Binary file test-data/confocal-series-both-channels.tiff has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal-series-both-channels_cropped_singleZ.tiff
b
Binary file test-data/confocal-series-both-channels_cropped_singleZ.tiff has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal-series-first-channel.tif
b
Binary file test-data/confocal-series-first-channel.tif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal-series-first-channel_cropped.tiff
b
Binary file test-data/confocal-series-first-channel_cropped.tiff has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal-series-first-channel_cropped_singleZ.tiff
b
Binary file test-data/confocal-series-first-channel_cropped_singleZ.tiff has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal-series-first-channel_default_threshold_watershed.tiff
b
Binary file test-data/confocal-series-first-channel_default_threshold_watershed.tiff has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal-series-first-channel_gaussian_blur.tiff
b
Binary file test-data/confocal-series-first-channel_gaussian_blur.tiff has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal-series-first-channel_threshold_default.tiff
b
Binary file test-data/confocal-series-first-channel_threshold_default.tiff has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal-series-first-channel_threshold_default_overlay_mask.tiff
b
Binary file test-data/confocal-series-first-channel_threshold_default_overlay_mask.tiff has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal_analyze_particles.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/confocal_analyze_particles.tabular Wed Sep 25 15:56:56 2024 +0000
b
@@ -0,0 +1,96 @@
+  Area Mean Min Max
+1 1.898 255 255 255
+2 0.380 255 255 255
+3 4.745 255 255 255
+4 0.759 255 255 255
+5 10.058 255 255 255
+6 0.190 255 255 255
+7 2.657 255 255 255
+8 0.190 255 255 255
+9 1.898 255 255 255
+10 16.321 255 255 255
+11 0.569 255 255 255
+12 3.037 255 255 255
+13 0.190 255 255 255
+14 19.927 255 255 255
+15 0.190 255 255 255
+16 0.569 255 255 255
+17 0.380 255 255 255
+18 1.898 255 255 255
+19 19.168 255 255 255
+20 0.380 255 255 255
+21 0.569 255 255 255
+22 0.380 255 255 255
+23 2.088 255 255 255
+24 25.241 255 255 255
+25 0.380 255 255 255
+26 0.190 255 255 255
+27 0.190 255 255 255
+28 0.569 255 255 255
+29 2.467 255 255 255
+30 30.365 255 255 255
+31 0.190 255 255 255
+32 0.190 255 255 255
+33 0.949 255 255 255
+34 0.190 255 255 255
+35 0.190 255 255 255
+36 1.139 255 255 255
+37 41.183 255 255 255
+38 0.190 255 255 255
+39 0.569 255 255 255
+40 1.139 255 255 255
+41 43.650 255 255 255
+42 0.190 255 255 255
+43 0.190 255 255 255
+44 2.657 255 255 255
+45 50.862 255 255 255
+46 0.190 255 255 255
+47 0.380 255 255 255
+48 0.190 255 255 255
+49 0.380 255 255 255
+50 63.767 255 255 255
+51 0.380 255 255 255
+52 69.081 255 255 255
+53 0.190 255 255 255
+54 0.380 255 255 255
+55 70.219 255 255 255
+56 0.190 255 255 255
+57 71.548 255 255 255
+58 0.190 255 255 255
+59 73.066 255 255 255
+60 0.380 255 255 255
+61 0.190 255 255 255
+62 75.344 255 255 255
+63 0.380 255 255 255
+64 71.927 255 255 255
+65 0.380 255 255 255
+66 0.190 255 255 255
+67 66.424 255 255 255
+68 2.847 255 255 255
+69 0.759 255 255 255
+70 0.190 255 255 255
+71 0.380 255 255 255
+72 59.971 255 255 255
+73 0.949 255 255 255
+74 0.759 255 255 255
+75 0.380 255 255 255
+76 0.190 255 255 255
+77 56.935 255 255 255
+78 0.190 255 255 255
+79 0.380 255 255 255
+80 0.380 255 255 255
+81 0.380 255 255 255
+82 55.037 255 255 255
+83 0.190 255 255 255
+84 43.650 255 255 255
+85 3.416 255 255 255
+86 0.380 255 255 255
+87 31.124 255 255 255
+88 1.518 255 255 255
+89 0.569 255 255 255
+90 0.380 255 255 255
+91 27.708 255 255 255
+92 0.190 255 255 255
+93 27.518 255 255 255
+94 0.190 255 255 255
+95 30.175 255 255 255
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/confocal_analyze_particles_rois.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/confocal_analyze_particles_rois.tabular Wed Sep 25 15:56:56 2024 +0000
b
b'@@ -0,0 +1,96 @@\n+shape\tpoints\tlabel\tt\tz\n+Polygon\t(21,22),(22,22),(22,24),(23,24),(23,27),(22,27),(22,25),(21,25),(21,24),(20,24),(20,22),(19,22),(19,21),(21,21)\tROI_0\t0\t1\n+Polygon\t(28,24),(27,24),(27,22),(28,22)\tROI_1\t0\t1\n+Polygon\t(26,25),(27,25),(27,26),(28,26),(28,27),(32,27),(32,28),(30,28),(30,31),(28,31),(28,30),(27,30),(27,29),(25,29),(25,27),(26,27),(26,26),(25,26),(25,25),(24,25),(24,23),(26,23)\tROI_2\t0\t1\n+Polygon\t(16,28),(15,28),(15,29),(14,29),(14,27),(15,27),(15,26),(16,26)\tROI_3\t0\t1\n+Polygon\t(24,32),(27,32),(27,33),(29,33),(29,34),(28,34),(28,35),(27,35),(27,36),(25,36),(25,34),(19,34),(19,35),(20,35),(20,37),(18,37),(18,36),(17,36),(17,34),(16,34),(16,33),(17,33),(17,32),(18,32),(18,31),(17,31),(17,30),(19,30),(19,29),(24,29)\tROI_4\t0\t1\n+Polygon\t(17,17),(16,17),(16,16),(17,16)\tROI_5\t0\t2\n+Polygon\t(21,22),(22,22),(22,21),(23,21),(23,22),(22,22),(22,24),(23,24),(23,23),(26,23),(26,25),(24,25),(24,24),(23,24),(23,26),(22,26),(22,25),(21,25),(21,24),(20,24),(20,21),(21,21)\tROI_6\t0\t2\n+Polygon\t(40,23),(39,23),(39,22),(40,22)\tROI_7\t0\t2\n+Polygon\t(16,29),(13,29),(13,27),(14,27),(14,25),(16,25)\tROI_8\t0\t2\n+Polygon\t(28,27),(30,27),(30,31),(29,31),(29,35),(27,35),(27,37),(28,37),(28,39),(27,39),(27,38),(25,38),(25,34),(19,34),(19,35),(20,35),(20,36),(21,36),(21,37),(18,37),(18,36),(17,36),(17,34),(16,34),(16,32),(17,32),(17,29),(24,29),(24,32),(28,32),(28,30),(26,30),(26,29),(25,29),(25,27),(26,27),(26,26),(28,26)\tROI_9\t0\t2\n+Polygon\t(16,16),(17,16),(17,17),(15,17),(15,15),(16,15)\tROI_10\t0\t3\n+Polygon\t(24,22),(25,22),(25,23),(26,23),(26,25),(21,25),(21,24),(20,24),(20,22),(21,22),(21,21),(24,21)\tROI_11\t0\t3\n+Polygon\t(40,23),(39,23),(39,22),(40,22)\tROI_12\t0\t3\n+Polygon\t(16,27),(17,27),(17,29),(22,29),(22,30),(23,30),(23,31),(24,31),(24,32),(28,32),(28,30),(25,30),(25,27),(26,27),(26,26),(28,26),(28,28),(30,28),(30,30),(29,30),(29,35),(28,35),(28,37),(29,37),(29,39),(26,39),(26,38),(24,38),(24,37),(25,37),(25,34),(19,34),(19,35),(20,35),(20,36),(21,36),(21,37),(18,37),(18,36),(17,36),(17,35),(16,35),(16,29),(13,29),(13,27),(14,27),(14,26),(12,26),(12,25),(16,25)\tROI_13\t0\t3\n+Polygon\t(12,32),(11,32),(11,31),(12,31)\tROI_14\t0\t3\n+Polygon\t(16,16),(17,16),(17,17),(15,17),(15,15),(16,15)\tROI_15\t0\t4\n+Polygon\t(15,20),(14,20),(14,18),(15,18)\tROI_16\t0\t4\n+Polygon\t(24,22),(25,22),(25,23),(26,23),(26,25),(24,25),(24,24),(23,24),(23,22),(21,22),(21,21),(24,21)\tROI_17\t0\t4\n+Polygon\t(13,25),(16,25),(16,26),(17,26),(17,28),(18,28),(18,29),(19,29),(19,30),(22,30),(22,31),(24,31),(24,32),(25,32),(25,33),(27,33),(27,32),(28,32),(28,31),(27,31),(27,30),(25,30),(25,27),(26,27),(26,26),(27,26),(27,27),(28,27),(28,29),(29,29),(29,36),(28,36),(28,39),(26,39),(26,38),(24,38),(24,36),(25,36),(25,34),(20,34),(20,36),(21,36),(21,37),(18,37),(18,36),(17,36),(17,35),(16,35),(16,29),(13,29),(13,26),(12,26),(12,24),(13,24)\tROI_18\t0\t4\n+Polygon\t(13,32),(11,32),(11,31),(13,31)\tROI_19\t0\t4\n+Polygon\t(16,16),(17,16),(17,17),(15,17),(15,15),(16,15)\tROI_20\t0\t5\n+Polygon\t(15,20),(14,20),(14,18),(15,18)\tROI_21\t0\t5\n+Polygon\t(24,22),(25,22),(25,23),(26,23),(26,25),(24,25),(24,24),(23,24),(23,23),(22,23),(22,22),(21,22),(21,21),(24,21)\tROI_22\t0\t5\n+Polygon\t(14,25),(16,25),(16,26),(17,26),(17,27),(18,27),(18,28),(19,28),(19,29),(22,29),(22,30),(23,30),(23,31),(25,31),(25,29),(24,29),(24,27),(26,27),(26,26),(27,26),(27,27),(28,27),(28,29),(29,29),(29,36),(28,36),(28,39),(26,39),(26,40),(24,40),(24,39),(23,39),(23,38),(24,38),(24,34),(23,34),(23,35),(21,35),(21,38),(20,38),(20,37),(17,37),(17,35),(16,35),(16,34),(15,34),(15,33),(16,33),(16,32),(15,32),(15,30),(13,30),(13,27),(12,27),(12,24),(14,24)\tROI_23\t0\t5\n+Polygon\t(13,32),(11,32),(11,31),(13,31)\tROI_24\t0\t5\n+Polygon\t(32,37),(31,37),(31,36),(32,36)\tROI_25\t0\t5\n+Polygon\t(13,38),(12,38),(12,37),(13,37)\tROI_26\t0\t5\n+Polygon\t(15,20),(14,20),(14,19),(13,19),(13,18),(15,18)\tROI_27\t0\t6\n+Polygon\t(24,22),(26,22),(26,25),(24,25),(24,24),(23,24),(23,23),(21,23),(21,21),(24,21)\tROI_28\t0\t6\n+Polygon\t(13,24),(14,24),(14,25),(16,25),(16,26),(17,26),(17'..b'2),(23,22),(23,23),(25,23),(25,25),(28,25),(28,30),(31,30),(31,31),(32,31),(32,33),(33,33),(33,36),(34,36),(34,37),(33,37),(33,38),(32,38),(32,39),(28,39),(28,38),(27,38),(27,37),(26,37),(26,38),(25,38),(25,40),(24,40),(24,41),(23,41),(23,40),(20,40),(20,38),(19,38),(19,36),(17,36),(17,37),(18,37),(18,38),(17,38),(17,40),(18,40),(18,41),(17,41),(17,40),(13,40),(13,39),(14,39),(14,38),(13,38),(13,35),(12,35),(12,34),(11,34),(11,30),(12,30),(12,28),(13,28),(13,27),(12,27),(12,26),(11,26),(11,24),(13,24),(13,21),(16,21),(16,22),(17,22),(17,23),(18,23),(18,22),(19,22),(19,21),(20,21),(20,20),(21,20)\tROI_76\t0\t19\n+Polygon\t(10,27),(9,27),(9,26),(10,26)\tROI_77\t0\t19\n+Polygon\t(37,34),(36,34),(36,32),(37,32)\tROI_78\t0\t19\n+Polygon\t(31,41),(29,41),(29,40),(31,40)\tROI_79\t0\t19\n+Polygon\t(21,21),(20,21),(20,19),(21,19)\tROI_80\t0\t20\n+Polygon\t(16,22),(17,22),(17,23),(20,23),(20,24),(22,24),(22,23),(21,23),(21,22),(23,22),(23,23),(25,23),(25,27),(26,27),(26,25),(28,25),(28,29),(30,29),(30,30),(31,30),(31,31),(32,31),(32,33),(33,33),(33,38),(32,38),(32,39),(29,39),(29,38),(27,38),(27,37),(26,37),(26,38),(25,38),(25,39),(24,39),(24,40),(22,40),(22,39),(20,39),(20,38),(17,38),(17,40),(18,40),(18,41),(16,41),(16,40),(13,40),(13,39),(14,39),(14,37),(13,37),(13,35),(12,35),(12,34),(11,34),(11,31),(12,31),(12,26),(11,26),(11,24),(13,24),(13,22),(14,22),(14,21),(16,21)\tROI_81\t0\t20\n+Polygon\t(21,21),(20,21),(20,20),(21,20)\tROI_82\t0\t21\n+Polygon\t(17,24),(16,24),(16,25),(18,25),(18,24),(21,24),(21,25),(22,25),(22,24),(23,24),(23,23),(25,23),(25,27),(26,27),(26,25),(28,25),(28,29),(31,29),(31,31),(32,31),(32,33),(30,33),(30,32),(29,32),(29,33),(27,33),(27,34),(25,34),(25,36),(26,36),(26,38),(23,38),(23,39),(20,39),(20,38),(16,38),(16,39),(15,39),(15,38),(14,38),(14,37),(13,37),(13,35),(12,35),(12,34),(11,34),(11,31),(12,31),(12,26),(11,26),(11,25),(12,25),(12,24),(14,24),(14,22),(17,22)\tROI_83\t0\t21\n+Polygon\t(33,37),(32,37),(32,38),(29,38),(29,37),(28,37),(28,34),(33,34)\tROI_84\t0\t21\n+Polygon\t(18,41),(16,41),(16,40),(18,40)\tROI_85\t0\t21\n+Polygon\t(25,25),(24,25),(24,26),(25,26),(25,28),(26,28),(26,26),(27,26),(27,29),(24,29),(24,30),(25,30),(25,31),(26,31),(26,32),(27,32),(27,33),(26,33),(26,34),(23,34),(23,35),(22,35),(22,37),(23,37),(23,38),(22,38),(22,39),(18,39),(18,38),(17,38),(17,37),(13,37),(13,35),(12,35),(12,33),(11,33),(11,31),(12,31),(12,30),(13,30),(13,29),(12,29),(12,28),(13,28),(13,26),(12,26),(12,25),(14,25),(14,26),(15,26),(15,25),(19,25),(19,24),(21,24),(21,25),(23,25),(23,24),(24,24),(24,23),(25,23)\tROI_86\t0\t22\n+Polygon\t(30,30),(31,30),(31,32),(28,32),(28,29),(30,29)\tROI_87\t0\t22\n+Polygon\t(30,36),(31,36),(31,37),(29,37),(29,35),(30,35)\tROI_88\t0\t22\n+Polygon\t(19,41),(17,41),(17,40),(19,40)\tROI_89\t0\t22\n+Polygon\t(25,28),(24,28),(24,31),(25,31),(25,32),(26,32),(26,33),(25,33),(25,34),(23,34),(23,35),(22,35),(22,37),(23,37),(23,38),(22,38),(22,39),(17,39),(17,37),(15,37),(15,38),(14,38),(14,37),(13,37),(13,36),(12,36),(12,34),(11,34),(11,32),(12,32),(12,30),(13,30),(13,27),(15,27),(15,28),(16,28),(16,27),(17,27),(17,26),(19,26),(19,25),(23,25),(23,24),(24,24),(24,23),(25,23)\tROI_90\t0\t23\n+Polygon\t(29,30),(28,30),(28,29),(29,29)\tROI_91\t0\t23\n+Polygon\t(25,28),(24,28),(24,31),(25,31),(25,33),(24,33),(24,34),(23,34),(23,35),(22,35),(22,36),(23,36),(23,38),(22,38),(22,39),(20,39),(20,40),(18,40),(18,39),(17,39),(17,38),(14,38),(14,37),(12,37),(12,34),(11,34),(11,32),(12,32),(12,29),(13,29),(13,28),(14,28),(14,27),(20,27),(20,26),(19,26),(19,25),(25,25)\tROI_92\t0\t24\n+Polygon\t(11,39),(10,39),(10,38),(11,38)\tROI_93\t0\t24\n+Polygon\t(25,28),(24,28),(24,32),(25,32),(25,33),(24,33),(24,34),(23,34),(23,36),(24,36),(24,37),(22,37),(22,39),(20,39),(20,40),(18,40),(18,41),(17,41),(17,42),(16,42),(16,40),(17,40),(17,39),(14,39),(14,38),(12,38),(12,42),(11,42),(11,40),(10,40),(10,38),(12,38),(12,37),(11,37),(11,35),(12,35),(12,34),(11,34),(11,33),(12,33),(12,31),(13,31),(13,30),(12,30),(12,29),(13,29),(13,27),(16,27),(16,28),(17,28),(17,27),(20,27),(20,25),(25,25)\tROI_94\t0\t25\n'
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/dot_blot.jpg
b
Binary file test-data/dot_blot.jpg has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/dot_blot.png
b
Binary file test-data/dot_blot.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/dot_blot.tiff
b
Binary file test-data/dot_blot.tiff has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/elastic_trans_registered_source1.png
b
Binary file test-data/elastic_trans_registered_source1.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/gaussian_blur.gif
b
Binary file test-data/gaussian_blur.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/median.gif
b
Binary file test-data/median.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/raw_trans_registered_source1.png
b
Binary file test-data/raw_trans_registered_source1.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/raw_transformation_full.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/raw_transformation_full.txt Wed Sep 25 15:56:56 2024 +0000
b
b'@@ -0,0 +1,294 @@\n+Width=144\n+Height=144\n+\n+X Trans -----------------------------------\n+    4.176715938136983     5.028059425766952     5.848163112344083     6.625286081420434     7.346949869450837     7.999993504600507     8.570638908853306     9.044622789513964     9.413506255387968     9.681218421492703     9.854312101993061     9.940614113498254     9.949133680349874     9.889960336823316     9.774150445497835     9.613603978540679     9.420928827203937     9.209297594621251      8.99229520815497     8.783758029488393     8.597605040212112     8.447661785513965     8.347477892926463     8.310139148227263     8.348075306899938     8.472865046334638     8.695039719264653      9.02388784955587     9.467262612735961    10.031394859423866    10.720714562420634    11.537683888429232    12.482635931423559    13.548553680644847    14.713909933407903    15.955437681044362    17.250615997032845     18.57910317041673    19.924588848162042    21.273131961240793     22.61287165006273    23.933978509626925    25.228599373795102     26.49079330268239      27.7164571781934     28.90324005022652    30.050446065539795     31.15892642005994     32.23096128077027     33.27013301056534     34.28119229030748    35.269918863348025     36.24297862912084     37.20777868670669    38.172321680760554     39.14506043617836    40.134753390327724     41.15032074914446     42.20070061327572     43.29470355140843     44.44086325080732     45.64727996412613    46.921452516062644     48.27009365995084     49.69892261951472     51.21242468486518     52.81308002996115      54.5006890705208     56.27295866194047     58.12547164246331     60.05155284704986    62.042126167374654      64.0853963435782     66.16300087019144     68.25096023630147     70.32434810515224     72.35799991286407     74.32708587789452     76.20772360258024     77.97761366869307     79.61667819048832     81.10767966466686     82.43679584207585     83.59412588149885     84.57410381192264     85.37579734320398      86.0030732794589     86.46461509691974     86.77378348443933     86.94831659732299     87.00987319114694     86.98342840026854     86.89653840770765     86.77849631690853     86.65940540750502     86.56678652831073     86.51894680093264     86.52962234401939      86.6091568313555     86.76444343256262     86.99795950541491     87.30767458029689      87.6887773859162      88.1343150744824     88.63573469192004     89.18339795340363     89.76705660855026     90.37627810648544     91.00098259921862     91.63313750582321     92.26649727091988     92.89592945322954     93.51736271382487     94.12771798912087     94.72482575123138     95.30733544608778     95.87462173881887     96.42669102951422      96.9640907767786     97.48782343666693     97.99926625358638     98.50009769694455     98.99223099750193     99.47775497987517     99.95888219552717    100.43790422009906    100.91715387889398    101.39897409567641     101.8856930154123    102.37960502529904    102.88295728576551    103.39794138037603    103.92668969786209    104.47127616862906    105.03372099039578    105.61599899198129     106.2200512999695    106.84779998979062    107.50116542083198     108.1820859751434    108.89253994223978    109.63456932007529    110.41030533674008    111.22199287092927 \n+    4.419557770482417      5.27081665328943     6.089884477973564     6.864617423433236      7.58211191931238     8.228765517486593     8.790349543698422     9.252193879414877     9.606403124097358       9.8574446972737    10.012252733626926    10.079097632567096    10.067484069087474     9.988036761486226     9.852374541479348      9.67297328108479      9.46301824968602     9.236246507632229     9.006779993191172     8.788950030940104     8.597114084633965     8.445465698532526     8.347838719688951     8.317507070534788     8.366981545976168     8.507805340755091     8.750350268395447     9.103615908671069     9.575034210805253    10.170282377665819    10.893107153686593    11.745163926271625    12.725511960542491     13.8214660'..b'7992200723283    137.56614934000743     137.6547920526498     137.7457099777814    137.83880347311558    137.93396490724638    138.03107866170456    138.13002145620862     138.2306627135688    138.33286495861378    138.43648424547092    138.54137060755113    138.64736852467817    138.75431740194736     138.8620520551169    138.97040319761135    139.07919792456093    139.18826018970407    139.29741127145186     139.4064702249358     139.5152543174491    139.62357944532855    139.73126053101353    139.83811189975918    139.94394763625732    140.04858192224066    140.15182935699426    140.25350526358187    140.35342598449185    140.45140917132812     140.5472563727466    140.63973674588829    140.72607849633303     140.8034530709757    140.86911184204715    140.92038668238638    140.95469057503053    140.96951446175183 \n+   136.47128086107668     136.7647212366112    137.09257955898585    137.45244030061366    137.84178817314864    138.25801861080936    138.69844448570618    139.16030362004625    139.64076716336413    140.13694888129027    140.64591537702537    141.16469723830411    141.69030107199748    142.21972235649292     142.7499590095462    143.27802553739224     143.8009676005144    144.31587680358044    144.81990549256307    145.31028132185114    145.78432133896519    146.23944532498265     146.6731881254606    147.08321070988862     147.4673097077118    147.82342518575646     148.1497532260637    148.44517260159793    148.70888980473805     148.9402693649705    149.13881819510797    149.30416655832204    149.43604583881495    149.53426341914945    149.59867502302262     149.6291549350847    149.62557137943307    149.58856731644082    149.52026608135293    149.42281660859848    149.29821829294679    149.14833393227818     148.9749036871724    148.77955958387102    148.56384015461515     148.3292048735639    148.07704810673272    147.80871235013433    147.52550058127326    147.22868759518644    146.91953023733674    146.59927648193474    146.26917333585519    145.93047357545453    145.58444134654107     145.2323566768063    144.87551896549692    144.51524952733178    144.15289327697025     143.7898196470608    143.42742283736894     143.0671124065675    142.71023528935442      142.358125394621     142.0121564744563    141.67373855933508    141.34431343702633     141.0253498984435    140.71833886434322    140.42478849526893      140.146219373479    139.88415982966046    139.64009894032506    139.41455311339675    139.20705111229447     139.0170612930036     138.8440366566717     138.6874177431907    138.54663513701868    138.42111162799583    138.31026406516824     138.2135049374692    138.13024371148586    138.05988795339218    138.00184425941066    137.95551901682046    137.92031901551144     137.8956519283472     137.8809266770911    137.87555369934367    137.87894513078197    137.89051491595822    137.90967885997148    137.93585463244526    137.96846173440005    138.00692143778676    138.05065670662592     138.0990921078634    138.15166213829139    138.20800012268245    138.26793582882118    138.33130309952594     138.3979301697609    138.46763896738594    138.54024451618767    138.61555443918937    138.69336855891274    138.77347859003171    138.85567906141773    138.93985170020116     139.0259197913776     139.1137989718017    139.20339721001417     139.2946151183563     139.3873462992249    139.48147772015398    139.57689011239864    139.67345838774514    139.77105206837518    139.86953572477677    139.96876941691374     140.0686091341469    140.16890722973517     140.2695128461409    140.37027232780892    140.47102961859267    140.57162664155132    140.67190365944197     140.7716996148759    140.87085244979193    140.96919940462283    141.06657729828675     141.1628227909147    141.25777263203346     141.3512638977444    141.44313422127163    141.53322120902277    141.62069316426732    141.70292577621072    141.77706154607338    141.84032292956982    141.89001272391792    141.92351448531556     141.9382892449537 \n'
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/regenerate_outputs.sh
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/regenerate_outputs.sh Wed Sep 25 15:56:56 2024 +0000
b
b"@@ -0,0 +1,204 @@\n+source $(dirname $(dirname $(which conda)))/etc/profile.d/conda.sh\n+conda_env=mulled-v1-9e9e3735532d83dd44ff0f622055395263f964e81ca8113d4dfa7e133e3156bf\n+conda activate $conda_env\n+# Adjust threshold\n+# Test 1\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_adjust_threshold_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 0.0 255.0 'Default' 'red' 'no' 'tools/image_processing/imagej2/test-data/blobs_threshold_default.gif' 'gif'\n+# Test 2\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_adjust_threshold_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 0.0 255.0 'Percentile' 'over_under' 'no' 'tools/image_processing/imagej2/test-data/blobs_threshold_percentile.gif' 'gif'\n+# Test 3\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_adjust_threshold_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 0.0 255.0 'Huang' 'bw' 'yes' 'tools/image_processing/imagej2/test-data/blobs_threshold_huang_dark.gif' 'gif'\n+# Test 4\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_adjust_threshold_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 8.0 255.0 'Manual' 'bw' 'no' 'tools/image_processing/imagej2/test-data/blobs_threshold_8-255.gif' 'gif'\n+# Test 5\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_adjust_threshold_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 0.0 8.0 'Manual' 'bw' 'no' 'tools/image_processing/imagej2/test-data/blobs_threshold_0-8.gif' 'gif'\n+# Test 6\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_adjust_threshold_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/confocal-series-first-channel.tif' 0.0 255.0 'Default' 'bw' 'yes' 'tools/image_processing/imagej2/test-data/confocal-series-first-channel_threshold_default.tiff' 'tiff'\n+\n+\n+# Analyze particles\n+# Test 1\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_analyze_particles_binary_jython_script.py' '' 'tools/image_processing/imagej2/test-data/blobs.gif' 'no' '0-Infinity' 0.0 1.0 'Nothing' 'yes' 'no' 'no' '' '' 'tools/image_processing/imagej2/test-data/analyze_particles_nothing.tabular'\n+# Test 2\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_analyze_particles_binary_jython_script.py' '' 'tools/image_processing/imagej2/test-data/blobs.gif' 'no' '0-Infinity' 0.0 1.0 'Outlines' 'no' 'no' 'no' 'tools/image_processing/imagej2/test-data/analyze_particles_outlines.gif' 'gif' ''\n+# Test 3\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_analyze_particles_binary_jython_script.py' '' 'tools/image_processing/imagej2/test-data/blobs.gif' 'no' '0-Infinity' 0.0 1.0 'Bare_Outlines' 'no' 'yes' 'yes' 'tools/image_processing/imagej2/test-data/analyze_particles_bareoutlines.gif' 'gif' ''\n+# Test 4\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_analyze_particles_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/analyze_particles_rois.tabular' 'tools/image_processing/imagej2/test-data/blobs.gif' 'no' '0-Infinity' 0.0 1.0 'Overlay_Masks' 'yes' 'no' 'no' 'tools/image_processing/imagej2/test-data/analyze_particles_overlaymasks.gif' 'gif' 'tools/image_processing/imagej2/test-data/analyze_particles_nothing.tabular'\n+# Test 5\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_analyze_particles_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/confocal_analyze_particles_rois.tabular' 'tools/image_processing/imagej2/test-data/confocal-series-first-channel_threshold_default.tiff' 'yes' '0-Infinity' 0.0 1.0 'Overlay_Masks' 'yes' 'no' 'no' 'tools/image_processing/imagej2/test-data/confocal-series-first-channel_threshold_default_"..b"imagej2/imagej2_math_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif'  'Min' 'None' 'None' 255.0 'tools/image_processing/imagej2/test-data/blobs_min.gif' 'gif'\n+# Test 3\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_math_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif'  'Log' 'None' 'None' 'None' 'tools/image_processing/imagej2/test-data/blobs_log.gif' 'gif'\n+# Test 4\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_math_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 'Square' 'None' 'None' 'None' 'tools/image_processing/imagej2/test-data/blobs_square.gif' 'gif'\n+# Test 5\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_math_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 'Macro' 'v=v+50*sin(d/17)' 'None' 'None' 'tools/image_processing/imagej2/test-data/blobs_macro.gif' 'gif'\n+\n+# Noise\n+# Test 1\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_noise_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 'gif' 'add_specified_noise' 5.0 'None' 'None' 'None' 'tools/image_processing/imagej2/test-data/add_specified_noise.gif'\n+# Test 2\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_noise_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 'gif' 'despeckle' 'None' 'None' 'None' 'None' 'tools/image_processing/imagej2/test-data/despeckle.gif'\n+# Test 3\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_noise_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif'  'gif' 'remove_outliers' 'None' '10.0' '1' 'Bright' 'tools/image_processing/imagej2/test-data/remove_outliers.gif'\n+# Test 4 fails\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_noise_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif'  'gif' 'remove_nans' 'None' 'None' 'None' 'None' 'tools/image_processing/imagej2/test-data/remove_nans.gif'\n+\n+# Shadows\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_shadows_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 'Northwest' 'tools/image_processing/imagej2/test-data/blobs_northwest.gif' 'gif'\n+\n+# Sharpen\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_sharpen_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 'tools/image_processing/imagej2/test-data/blobs_sharpen.gif' 'gif'\n+\n+# Skeletonized 3D\n+# Test 1\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_skeletonize3d_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 'no' 'tools/image_processing/imagej2/test-data/skeletonized_blobs.gif' 'gif'\n+# Test 2\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_skeletonize3d_jython_script.py' 'tools/image_processing/imagej2/test-data/clown.jpg' 'no' 'tools/image_processing/imagej2/test-data/skeletonized_clown.jpg' 'jpg'\n+\n+# Smooth\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_smooth_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 'tools/image_processing/imagej2/test-data/blobs_smooth.gif' 'gif'\n+\n+# Watershed\n+# Test 1\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_watershed_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/blobs.gif' 'no' 'tools/image_processing/imagej2/test-data/blobs_watershed_binary.gif' 'gif'\n+# Test 2\n+ImageJ --ij2 --headless --debug --jython 'tools/image_processing/imagej2/imagej2_watershed_binary_jython_script.py' 'tools/image_processing/imagej2/test-data/confocal-series-first-channel_threshold_default.tiff' 'yes' 'tools/image_processing/imagej2/test-data/confocal-series-first-channel_default_threshold_watershed.tiff' 'tiff'\n"
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/registered_source1.png
b
Binary file test-data/registered_source1.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/registered_source1_forced1cpu.png
b
Binary file test-data/registered_source1_forced1cpu.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/registered_source2.png
b
Binary file test-data/registered_source2.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/registered_source2_forced1cpu.png
b
Binary file test-data/registered_source2_forced1cpu.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/registered_target1.png
b
Binary file test-data/registered_target1.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/registered_target1_forced1cpu.png
b
Binary file test-data/registered_target1_forced1cpu.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/registered_target2.png
b
Binary file test-data/registered_target2.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/registered_target2_forced1cpu.png
b
Binary file test-data/registered_target2_forced1cpu.png has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/remove_outliers.gif
b
Binary file test-data/remove_outliers.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/shortest_branch_all_yes.tabular
--- a/test-data/shortest_branch_all_yes.tabular Sun Nov 05 10:51:33 2023 +0000
+++ b/test-data/shortest_branch_all_yes.tabular Wed Sep 25 15:56:56 2024 +0000
b
@@ -2,7 +2,7 @@
 1 0 2 0 1 2.414 0 0 2.414 2.414 1 59 0
 1 0 2 0 0 1.000 0 0 1.000 1.000 4 91 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 5 43 0
-143 75 40 144 918 9.176 61 9 96.113 277.930 161 0 0
+143 75 40 144 918 9.873 61 9 96.113 277.930 161 0 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 5 80 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 6 53 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 6 67 0
@@ -18,7 +18,7 @@
 1 0 2 0 3 4.414 0 0 4.414 4.414 38 91 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 39 88 0
 1 0 2 0 3 5.657 0 0 5.657 5.657 49 111 0
-5 2 4 2 97 23.182 2 0 58.385 100.770 92 174 0
+5 2 4 2 97 23.382 2 0 58.385 100.770 92 174 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 65 31 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 66 175 0
 1 0 2 0 4 5.828 0 0 5.828 5.828 88 42 0
@@ -27,15 +27,15 @@
 0 0 1 0 0 0.000 0 0 0.000 0.000 95 44 0
 1 0 2 0 0 1.000 0 0 1.000 1.000 105 14 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 104 20 0
-262 117 105 266 957 5.803 65 37 34.142 352.779 279 50 0
-96 43 31 104 373 6.437 25 11 34.142 212.675 192 110 0
+262 117 105 266 957 6.493 65 37 34.142 352.779 279 50 0
+96 43 31 104 373 7.278 25 11 36.971 212.675 192 110 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 121 35 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 132 54 0
 1 0 2 0 0 1.000 0 0 1.000 1.000 135 53 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 138 116 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 138 124 0
-22 11 10 24 151 9.834 10 1 20.728 116.633 207 123 0
-5 2 4 2 44 12.285 2 0 26.799 52.184 176 174 0
+22 11 10 24 151 10.374 10 1 20.728 116.633 207 123 0
+5 2 4 2 44 12.568 2 0 26.799 52.184 176 174 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 156 54 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 162 61 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 163 56 0
@@ -150,7 +150,7 @@
 0 0 1 0 0 0.000 0 0 0.000 0.000 287 108 0
 1 0 2 0 1 2.414 0 0 2.414 2.414 289 122 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 287 134 0
-13 6 8 10 55 5.956 6 0 20.899 68.184 309 78 0
+13 6 8 10 55 6.590 6 0 20.899 68.184 309 78 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 288 69 0
 0 0 1 0 0 0.000 0 0 0.000 0.000 288 75 0
 1 0 2 0 0 1.000 0 0 1.000 1.000 288 92 0
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/shortest_branch_basic.tabular
--- a/test-data/shortest_branch_basic.tabular Sun Nov 05 10:51:33 2023 +0000
+++ b/test-data/shortest_branch_basic.tabular Wed Sep 25 15:56:56 2024 +0000
b
@@ -2,7 +2,7 @@
 1 0 2 0 1 2.414 0 0 2.414
 1 0 2 0 0 1.000 0 0 1.000
 0 0 1 0 0 0.000 0 0 0.000
-143 75 40 144 918 9.176 61 9 96.113
+143 75 40 144 918 9.873 61 9 96.113
 0 0 1 0 0 0.000 0 0 0.000
 0 0 1 0 0 0.000 0 0 0.000
 0 0 1 0 0 0.000 0 0 0.000
@@ -18,7 +18,7 @@
 1 0 2 0 3 4.414 0 0 4.414
 0 0 1 0 0 0.000 0 0 0.000
 1 0 2 0 3 5.657 0 0 5.657
-5 2 4 2 97 23.182 2 0 58.385
+5 2 4 2 97 23.382 2 0 58.385
 0 0 1 0 0 0.000 0 0 0.000
 0 0 1 0 0 0.000 0 0 0.000
 1 0 2 0 4 5.828 0 0 5.828
@@ -27,15 +27,15 @@
 0 0 1 0 0 0.000 0 0 0.000
 1 0 2 0 0 1.000 0 0 1.000
 0 0 1 0 0 0.000 0 0 0.000
-262 117 105 266 957 5.803 65 37 34.142
-96 43 31 104 373 6.437 25 11 34.142
+262 117 105 266 957 6.493 65 37 34.142
+96 43 31 104 373 7.278 25 11 36.971
 0 0 1 0 0 0.000 0 0 0.000
 0 0 1 0 0 0.000 0 0 0.000
 1 0 2 0 0 1.000 0 0 1.000
 0 0 1 0 0 0.000 0 0 0.000
 0 0 1 0 0 0.000 0 0 0.000
-22 11 10 24 151 9.834 10 1 20.728
-5 2 4 2 44 12.285 2 0 26.799
+22 11 10 24 151 10.374 10 1 20.728
+5 2 4 2 44 12.568 2 0 26.799
 0 0 1 0 0 0.000 0 0 0.000
 0 0 1 0 0 0.000 0 0 0.000
 0 0 1 0 0 0.000 0 0 0.000
@@ -150,7 +150,7 @@
 0 0 1 0 0 0.000 0 0 0.000
 1 0 2 0 1 2.414 0 0 2.414
 0 0 1 0 0 0.000 0 0 0.000
-13 6 8 10 55 5.956 6 0 20.899
+13 6 8 10 55 6.590 6 0 20.899
 0 0 1 0 0 0.000 0 0 0.000
 0 0 1 0 0 0.000 0 0 0.000
 1 0 2 0 0 1.000 0 0 1.000
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/source_elastic_transformation_forced1cpu_out_full.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/source_elastic_transformation_forced1cpu_out_full.txt Wed Sep 25 15:56:56 2024 +0000
b
@@ -0,0 +1,19 @@
+Intervals=4
+
+X Coeffs -----------------------------------
+    -54.0016323325568    -24.55313914003933     9.998378808715369     46.75364792905647     82.81339463633314    119.65671403007485    158.76270120981096 
+   -50.83339149878828   -18.681337906130345     37.17883919175264    12.345198999048506     24.77206071041781     97.97412790389771    155.78421869117355 
+  -27.929816443724082    49.276999890632126      36.1275114393808     14.75760213419734     9.594845999044615    154.04607396012295    222.05804605430535 
+   -9.439167783998862     37.12324241599431     48.73717535550337     63.59070238727008     6.551668091613555     119.5935291038009    158.64847980599265 
+   -8.415920987887967    19.182085970213276     89.61484235977517     88.26966501794124    32.788077608672424     132.5037156161929    160.37829930526004 
+   -31.71446728510298    11.403380281357434      87.1527845269043      41.0061258664103    18.375036656301404     151.3216275398897    162.14248931362886 
+   -36.33357650876076    -2.997067006070702    24.224980747085667     52.94713777251041     90.78409317136875    128.45213257281344     164.4624484013269 
+
+Y Coeffs -----------------------------------
+   -35.58508171011618    -35.52735570756093   -35.159196828706726    -29.70750167634807   -28.923802662244935   -34.504255822335935   -35.243494145461135 
+   -1.242192601470532     29.46509876064867    -2.312247460503201    10.484826852565131    18.756383154741464    45.881731350540406    -0.621787824102949 
+   30.981455595654854    36.951471554766314    3.9820133989773163     7.976064243908333    -7.830691435689818    41.541448554600954    31.732801175989525 
+   58.283948016581554   -22.165321992984115    22.635703622205753     8.955455276732383     16.06491478568108    30.317438854555434     60.33829204610447 
+    95.46258300786052     43.02756729709696    14.126605325220126     44.78649034596007   -16.764126369901938     35.95147733367494     96.44151384896905 
+   130.87735480918948    195.59287946182124    -3.550292865530671   -7.0509958709770295    110.60475571422396    134.61412452223453    130.93519990666056 
+    170.4874708714955    161.78056879140948     149.6874025532559    142.17277360792374    150.66515020927875    162.24110899673795    167.44089341269517 
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/source_elastic_transformation_out_full.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/source_elastic_transformation_out_full.txt Wed Sep 25 15:56:56 2024 +0000
b
@@ -0,0 +1,19 @@
+Intervals=4
+
+X Coeffs -----------------------------------
+   -37.57669097094904   -3.2271717112514677    30.729561477029474     64.92853072664484    101.26040164233771    134.24138071120504    170.62530571165195 
+   -36.40440156764347    -5.950917668399802     43.12656676959308    129.82569373508457     79.23025904056314    101.33109010989303    167.76122399799928 
+   -31.99153804062628   -28.228263165717934    108.82281688201007    135.71408978799562    119.88724905944063    115.66219769238425    162.57204585958897 
+   -28.76756806285075   -31.072774597932003    149.06671190151698      82.6873796775864     85.83238257129669    102.22408316121394    159.69418492654307 
+   -31.16195930727015     39.81052685166829    111.01894213555936    50.843519487267514      71.5843384687527    104.97466705130167    163.76405482898355 
+   -34.99727113400996     51.46458209552406    45.814658605380856    127.80078869884827     61.64396676556593     133.5425482462486    169.78763924597007 
+  -36.096062903195644   -1.3094687517365522    33.017918855761025      67.2410292328903    101.71479169324449    136.77836848505723     172.7709218565622 
+
+Y Coeffs -----------------------------------
+  -20.613508471150247    -17.30904642115659   -13.074039899257977    -12.82208593159747   -21.466781544318113   -31.576707217758816     -35.7204434322585 
+   15.694660075623595    29.090244174855332     99.26325690063715     65.87761638249009     60.80790866211655     7.118793613938786   -2.7030258778256626 
+     48.4395231974389    20.580542086433006    123.69933199668453     35.70058582463237     48.91160104418716    49.319772349263886     28.24944770390918 
+      79.139639872897    28.260304680883564    39.217991856988554     96.98206627187832    122.99790587109494      81.5469103601955     58.57040400869205 
+   112.30429273541326    -31.84451342578042    150.53549831852334     93.43230937892993    105.20787588035367     55.33493688123222     89.69326973226897 
+   140.48429880851842    54.844800662935505    136.50939139083195    102.42949280502454     96.70614159439262    152.55152439131024      123.051471570386 
+   174.17481704462756    171.41787868079226    167.26939245818923     162.8915210072307    159.44642695832863     158.1150765995069     160.0784362187891 
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/target_elastic_transformation_forced1cpu_out_full.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/target_elastic_transformation_forced1cpu_out_full.txt Wed Sep 25 15:56:56 2024 +0000
b
@@ -0,0 +1,19 @@
+Intervals=4
+
+X Coeffs -----------------------------------
+   -53.01255704273572   -13.904078412237368     42.28779020312449      49.2241689610889     43.17391161793351     57.12681204296706     93.96096797426937 
+  -25.399961768058898     78.11666674988406     47.11538040963914     53.34193146612398     48.19823124809444    51.578486863081025     62.97102702637055 
+    74.83364233868025     44.94785732629138     52.59528959805901    54.543817794946555     55.63349375544408     54.50269211372439     47.62502458222461 
+   33.696803979050756    58.895615990105675    52.374827040837616     52.52362439850934     51.96459926850969     52.12346709150518     53.22425479912784 
+   54.024299911223764     50.97110502497963    53.313115679853226    54.079338788140554    53.975969688179475     55.36463923686487     50.69775408987581 
+    61.68987727495051    53.368672489805554     53.49515507648402      51.6321049622464    53.937756626103216     47.83395036978562     64.92582731507672 
+    44.35275725127058     53.31850095476804     55.39104510610701     55.66877435102513     55.41166434382368    57.831591051064564    153.61852412379244 
+
+Y Coeffs -----------------------------------
+    18.93646011405667    18.932358073393257   -45.807304697888824    12.943663336359961    -6.327036285964463   -27.325046787074903    -28.68009130761568 
+    69.72517425473397    18.951944929866418    -54.51191955826718    12.603632065405728     33.43481269330889      140.609614099701    10.728187982256344 
+    132.0711970793583    186.36333833664528    184.49603949633777     187.1901604174391    158.07455291450418    198.26170431915625     69.02399552934537 
+   152.52702215817044    151.40906569438428    144.41347160527243    148.75680143207387    154.16175661350192    147.09841734177542     144.8860096284916 
+   161.22035237120292     158.6171876686065    166.13338308434305     159.7364739623931    160.15750889578624    161.60800126111627    174.81126607209526 
+   162.71033090716813    159.95948678510726    149.08911488413267    159.40987351626924    154.10612131309117    156.49431897610225    143.43506000431748 
+   143.12909756515404     143.0695229580525     166.0176933508692    144.57111777572015    160.84062396633618    157.42735871635645    133.65686564157454 
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/target_elastic_transformation_out_full.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/target_elastic_transformation_out_full.txt Wed Sep 25 15:56:56 2024 +0000
b
@@ -0,0 +1,19 @@
+Intervals=4
+
+X Coeffs -----------------------------------
+   -2.334540491984048    19.197617253297445    14.143262861788983    39.463628125651084     53.54110718736474     77.63432486663321    122.01213769363304 
+   18.940100807668394     9.376702061674932     11.32031302209601     9.081414015093257    -19.34191364999764    24.182277174612462    27.994218490639234 
+    39.45486659902765      9.40454198383603    22.230846242507905 -0.002478065318311816     73.57478566130307     58.77280036887933     48.90850943566863 
+    17.00000657714807    -23.31776136556256    12.541111571022608    7.2459754632090405    59.934726035072856    30.713987461586505     72.32572780611264 
+    33.22276292665229   -13.918601953887327   -34.657944692759926    163.25596555413682     65.69636617127611   -2.7667070647362673    105.81487278594533 
+    85.11817751007291    120.33953953049102     81.34418995521429      -66.726377368089    18.860324896215854     34.34945385032887     70.51661433028738 
+   36.883847445857576     76.35165890505894     6.516561676315538   -20.970133083731874    125.46655281183332    -2.448523111647684    114.79339566399392 
+
+Y Coeffs -----------------------------------
+-0.031617394190528676    21.091295827183185     40.99488267737779    133.42310018352737     39.66065981177224    18.453503965110798     18.87752372262639 
+    49.43431409316814    119.43278503821342     91.66849730571954     79.91925555046383    106.43225673511903     154.1232341123354     68.50164250154936 
+    99.83206171058087     92.97764797169073    103.64352162659048    102.51390748210636      92.4692722023774   -4.7866682215833904     63.31241523442766 
+   62.479566052595004      -197.59219058435     99.97143069942541     77.04940775782963   -2.4521487960395176    113.09283045524303     65.44319987491002 
+   132.61392700107905     55.19320373443639     259.1024942673179     139.4197212963076     90.08817257816702    111.80227388699566     73.97266542006085 
+   126.91904730761814     73.28185948235975     63.29420821019147     75.30231636943734     88.05821426021525     90.02142533584905     52.91310136372895 
+    145.9979890111186    108.90056891458975      82.0931937585503     59.42554351667557    132.94210808860396     90.87889944704429    135.03299490189625 
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/top_hat.gif
b
Binary file test-data/top_hat.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/top_hat2.gif
b
Binary file test-data/top_hat2.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/unsharp_mask.gif
b
Binary file test-data/unsharp_mask.gif has changed
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/warping_index1_full.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/warping_index1_full.txt Wed Sep 25 15:56:56 2024 +0000
b
@@ -0,0 +1,1 @@
+33.63863677975145
b
diff -r 0a0d2dfd17e0 -r 711adedc5bb8 test-data/warping_index_raw_full.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/warping_index_raw_full.txt Wed Sep 25 15:56:56 2024 +0000
b
@@ -0,0 +1,1 @@
+66.40622051430596