changeset 5:e8c9e104e109 draft default tip

planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/spot_detection_2d/ commit f1b9207ec23c0af1681c929281bcbf1d0638368e
author imgteam
date Wed, 25 Sep 2024 08:19:30 +0000
parents 14f9986800fa
children
files creators.xml spot_detection_2d.py spot_detection_2d.xml test-data/input1.tif test-data/input2.tif test-data/output1.tsv test-data/output2.tsv test-data/spots_detected.tsv test-data/test_img1.tif
diffstat 9 files changed, 1073 insertions(+), 551 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/creators.xml	Wed Sep 25 08:19:30 2024 +0000
@@ -0,0 +1,28 @@
+<macros>
+
+    <xml name="creators/bmcv">
+        <organization name="Biomedical Computer Vision Group, Heidelberg Universtiy" alternateName="BMCV" url="http://www.bioquant.uni-heidelberg.de/research/groups/biomedical_computer_vision.html" />
+        <yield />
+    </xml>
+
+    <xml name="creators/rmassei">
+        <person givenName="Riccardo" familyName="Massei"/>
+        <yield/>
+    </xml>
+
+    <xml name="creators/alliecreason">
+        <person givenName="Allison" familyName="Creason"/>
+        <yield/>
+    </xml>
+
+    <xml name="creators/bugraoezdemir">
+        <person givenName="Bugra" familyName="Oezdemir"/>
+        <yield/>
+    </xml>
+
+    <xml name="creators/thawn">
+        <person givenName="Till" familyName="Korten"/>
+        <yield/>
+    </xml>
+    
+</macros>
--- a/spot_detection_2d.py	Mon Nov 13 22:12:30 2023 +0000
+++ b/spot_detection_2d.py	Wed Sep 25 08:19:30 2024 +0000
@@ -1,88 +1,128 @@
 """
 Copyright 2021-2022 Biomedical Computer Vision Group, Heidelberg University.
-Author: Qi Gao (qi.gao@bioquant.uni-heidelberg.de)
+Authors:
+- Qi Gao (qi.gao@bioquant.uni-heidelberg.de)
+- Leonid Kostrykin (leonid.kostrykin@bioquant.uni-heidelberg.de)
 
 Distributed under the MIT license.
 See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
-
 """
 
 import argparse
 
-import imageio
+import giatools.io
 import numpy as np
 import pandas as pd
-from skimage.feature import peak_local_max
-from skimage.filters import gaussian, laplace
+import scipy.ndimage as ndi
+from numpy.typing import NDArray
+from skimage.feature import blob_dog, blob_doh, blob_log
+
+blob_filters = {
+    'dog': blob_dog,
+    'doh': blob_doh,
+    'log': blob_log,
+}
 
 
-def getbr(xy, img, nb, firstn):
-    ndata = xy.shape[0]
-    br = np.empty((ndata, 1))
-    for j in range(ndata):
-        br[j] = np.NaN
-        if not np.isnan(xy[j, 0]):
-            timg = img[xy[j, 1] - nb - 1:xy[j, 1] + nb, xy[j, 0] - nb - 1:xy[j, 0] + nb]
-            br[j] = np.mean(np.sort(timg, axis=None)[-firstn:])
-    return br
+def mean_intensity(img: NDArray, y: int, x: int, radius: int) -> float:
+    assert img.ndim == 2
+    assert radius >= 0
+    if radius == 0:
+        return float(img[y, x])
+    else:
+        mask = np.ones(img.shape, bool)
+        mask[y, x] = False
+        mask = (ndi.distance_transform_edt(mask) <= radius)
+        return img[mask].mean()
 
 
-def spot_detection(fn_in, fn_out, frame_1st=1, frame_end=0,
-                   typ_filter='Gauss', ssig=1, th=10,
-                   typ_br='smoothed', bd=10):
-    ims_ori = imageio.mimread(fn_in, format='TIFF')
-    ims_smd = np.zeros((len(ims_ori), ims_ori[0].shape[0], ims_ori[0].shape[1]), dtype='float64')
-    if frame_end == 0 or frame_end > len(ims_ori):
-        frame_end = len(ims_ori)
+def spot_detection(
+    fn_in: str,
+    fn_out: str,
+    frame_1st: int,
+    frame_end: int,
+    filter_type: str,
+    min_scale: float,
+    max_scale: float,
+    abs_threshold: float,
+    rel_threshold: float,
+    boundary: int,
+) -> None:
 
-    for i in range(frame_1st - 1, frame_end):
-        ims_smd[i, :, :] = gaussian(ims_ori[i].astype('float64'), sigma=ssig)
-    ims_smd_max = np.max(ims_smd)
+    # Load the single-channel 2-D input image (or stack thereof)
+    stack = giatools.io.imread(fn_in)
 
-    txyb_all = np.array([]).reshape(0, 4)
-    for i in range(frame_1st - 1, frame_end):
-        tmp = np.copy(ims_smd[i, :, :])
-        if typ_filter == 'LoG':
-            tmp = laplace(tmp)
+    # Normalize input image so that it is a stack of images (possibly a stack of a single image)
+    assert stack.ndim in (2, 3)
+    if stack.ndim == 2:
+        stack = stack.reshape(1, *stack.shape)
+
+    # Slice the stack
+    assert frame_1st >= 1
+    assert frame_end >= 0
+    stack = stack[frame_1st - 1:]
+    if frame_end > 0:
+        stack = stack[:-frame_end]
 
-        tmp[tmp < th * ims_smd_max / 100] = 0
-        coords = peak_local_max(tmp, min_distance=1)
-        idx_to_del = np.where((coords[:, 0] <= bd) | (coords[:, 0] >= tmp.shape[0] - bd) |
-                              (coords[:, 1] <= bd) | (coords[:, 1] >= tmp.shape[1] - bd))
-        coords = np.delete(coords, idx_to_del[0], axis=0)
-        xys = coords[:, ::-1]
+    # Select the blob detection filter
+    assert filter_type.lower() in blob_filters.keys()
+    blob_filter = blob_filters[filter_type.lower()]
+
+    # Perform blob detection on each image of the stack
+    detections = list()
+    for img_idx, img in enumerate(stack):
+        blobs = blob_filter(img, threshold=abs_threshold, threshold_rel=rel_threshold, min_sigma=min_scale, max_sigma=max_scale)
+        for blob in blobs:
+            y, x, scale = blob
+
+            # Skip the detection if it is too close to the boundary of the image
+            if y < boundary or x < boundary or y >= img.shape[0] - boundary or x >= img.shape[1] - boundary:
+                continue
 
-        if typ_br == 'smoothed':
-            intens = getbr(xys, ims_smd[i, :, :], 0, 1)
-        elif typ_br == 'robust':
-            intens = getbr(xys, ims_ori[i], 1, 4)
-        else:
-            intens = getbr(xys, ims_ori[i], 0, 1)
+            # Add the detection to the list of detections
+            radius = scale * np.sqrt(2) * 2
+            intensity = mean_intensity(img, round(y), round(x), round(radius))
+            detections.append(
+                {
+                    'frame': img_idx + 1,
+                    'pos_x': round(x),
+                    'pos_y': round(y),
+                    'scale': scale,
+                    'radius': radius,
+                    'intensity': intensity,
+                }
+            )
 
-        txyb = np.concatenate(((i + 1) * np.ones((xys.shape[0], 1)), xys, intens), axis=1)
-        txyb_all = np.concatenate((txyb_all, txyb), axis=0)
-
-    df = pd.DataFrame()
-    df['FRAME'] = txyb_all[:, 0].astype(int)
-    df['POS_X'] = txyb_all[:, 1].astype(int)
-    df['POS_Y'] = txyb_all[:, 2].astype(int)
-    df['INTENSITY'] = txyb_all[:, 3]
+    # Build and save dataframe
+    df = pd.DataFrame.from_dict(detections)
     df.to_csv(fn_out, index=False, float_format='%.2f', sep="\t")
 
 
 if __name__ == "__main__":
+
     parser = argparse.ArgumentParser(description="Spot detection")
-    parser.add_argument("fn_in", help="Name of input image sequence (stack)")
-    parser.add_argument("fn_out", help="Name of output file to save the coordinates and intensities of detected spots")
-    parser.add_argument("frame_1st", type=int, help="Index for the starting frame to detect spots (1 for first frame of the stack)")
-    parser.add_argument("frame_end", type=int, help="Index for the last frame to detect spots (0 for the last frame of the stack)")
-    parser.add_argument("filter", help="Detection filter")
-    parser.add_argument("ssig", type=float, help="Sigma of the Gaussian for noise suppression")
-    parser.add_argument("thres", type=float, help="Percentage of the global maximal for thresholding candidate spots")
-    parser.add_argument("typ_intens", help="smoothed or robust (for measuring the intensities of spots)")
-    parser.add_argument("bndy", type=int, help="Number of pixels (Spots close to image boundaries will be ignored)")
+
+    parser.add_argument("fn_in", help="Name of input image or image stack.")
+    parser.add_argument("fn_out", help="Name of output file to write the detections into.")
+    parser.add_argument("frame_1st", type=int, help="Index for the starting frame to detect spots (1 for first frame of the stack).")
+    parser.add_argument("frame_end", type=int, help="Index for the last frame to detect spots (0 for the last frame of the stack).")
+    parser.add_argument("filter_type", help="Detection filter")
+    parser.add_argument("min_scale", type=float, help="The minimum scale to consider for multi-scale detection.")
+    parser.add_argument("max_scale", type=float, help="The maximum scale to consider for multi-scale detection.")
+    parser.add_argument("abs_threshold", type=float, help=(
+        "Filter responses below this threshold will be ignored. Only filter responses above this thresholding will be considered as blobs. "
+        "This threshold is ignored if the relative threshold (below) corresponds to a higher response.")
+    )
+    parser.add_argument("rel_threshold", type=float, help=(
+        "Same as the absolute threshold (above), but as a fraction of the overall maximal filter response of an image. "
+        "This threshold is ignored if it corresponds to a response below the absolute threshold.")
+    )
+    parser.add_argument("boundary", type=int, help="Width of image boundaries (in pixel) where spots will be ignored.")
+
     args = parser.parse_args()
     spot_detection(args.fn_in, args.fn_out,
                    frame_1st=args.frame_1st, frame_end=args.frame_end,
-                   typ_filter=args.filter, ssig=args.ssig, th=args.thres,
-                   typ_br=args.typ_intens, bd=args.bndy)
+                   filter_type=args.filter_type,
+                   min_scale=args.min_scale, max_scale=args.max_scale,
+                   abs_threshold=args.abs_threshold, rel_threshold=args.rel_threshold,
+                   boundary=args.boundary)
--- a/spot_detection_2d.xml	Mon Nov 13 22:12:30 2023 +0000
+++ b/spot_detection_2d.xml	Wed Sep 25 08:19:30 2024 +0000
@@ -1,5 +1,13 @@
-<tool id="ip_spot_detection_2d" name="Perform 2D spot detection" version="0.0.3-2" profile="20.05">
+<tool id="ip_spot_detection_2d" name="Perform 2-D spot detection" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="20.05">
     <description></description>
+    <macros>
+        <import>creators.xml</import>
+        <token name="@TOOL_VERSION@">0.1</token>
+        <token name="@VERSION_SUFFIX@">0</token>
+    </macros>
+    <creator>
+        <expand macro="creators/bmcv" />
+    </creator>
     <edam_operations>
         <edam_operation>operation_3443</edam_operation>
     </edam_operations>
@@ -7,10 +15,11 @@
         <xref type="bio.tools">galaxy_image_analysis</xref>
     </xrefs>
     <requirements>
-        <requirement type="package" version="2.9.0">imageio</requirement>
-        <requirement type="package" version="1.20.2">numpy</requirement>
+        <requirement type="package" version="0.2.0">giatools</requirement>
+        <requirement type="package" version="1.26.4">numpy</requirement>
         <requirement type="package" version="1.2.4">pandas</requirement>
-        <requirement type="package" version="0.18.1">scikit-image</requirement>
+        <requirement type="package" version="0.21">scikit-image</requirement>
+        <requirement type="package" version="2024.6.18">tifffile</requirement>
     </requirements>
     <command detect_errors="aggressive">
     <![CDATA[
@@ -19,49 +28,75 @@
          '$fn_out'
          '$frame_1st'
          '$frame_end'
-         '$filter'
-         '$ssig'
-         '$thres'
-         '$typ_intens'
-         '$bndy'
+         '$filter_type'
+         '$min_scale'
+         '$max_scale'
+         '$abs_threshold'
+         '$rel_threshold'
+         '$boundary'
     ]]>
     </command>
     <inputs>
-        <param name="fn_in" type="data" format="tiff" label="Image sequence (stack)" />
+        <param name="fn_in" type="data" format="tiff" label="Intensity image or a stack of images" />
         <param name="frame_1st" type="integer" value="1" label="Starting time point (1 for the first frame of the stack)" />
         <param name="frame_end" type="integer" value="0" label="Ending time point (0 for the last frame of the stack)" />
-        <param name="filter" type="select" label="Choose a detection filter">
-            <option value="Gauss" selected="True">Gaussian</option>
-            <option value="LoG">Laplacian-of-Gaussian, LoG (more accurate when spots have similar sizes)</option>
+        <param name="filter_type" type="select" label="Detection filter">
+            <option value="LoG" selected="True">Laplacian of Gaussian</option>
+            <option value="DoG">Difference of Gaussians</option>
+            <option value="DoH">Determinant of Hessian</option>
         </param>
-        <param name="ssig" type="float" value="1.0" min="0.5" max="10" label="Sigma of the Gaussian (for noise suppression)" />
-        <param name="thres" type="float" value="10.0" min="0" max="100" label="Percentage of the global maximal as the threshold for candidate spots" />
-        <param name="typ_intens" type="select" label="How to measure the intensities">
-            <option value="smoothed" selected="True">Smoothed</option>
-            <option value="robust">Robust</option>
-        </param>
-        <param name="bndy" type="integer" value="10" min="0" max="50" label="Width (in pixel) of image boundaries where spots will be ignored" />
+        <param name="min_scale" type="float" value="1.0" min="1.0" label="Minimum scale" />
+        <param name="max_scale" type="float" value="2.0" min="1.0" label="Maximum scale" />
+        <param name="abs_threshold" type="float" value=".25" min="0" label="Minimum filter response (absolute)" help="Filter responses below this threshold will be ignored. Only filter responses above this thresholding will be considered as blobs. This threshold is ignored if the relative threshold (below) corresponds to a higher response." />
+        <param name="rel_threshold" type="float" value="0" min="0" max="1" label="Minimum filter response (relative)" help="Same as the absolute threshold (above), but as a fraction of the overall maximum filter response of an image. This threshold is ignored if it corresponds to a response below the absolute threshold." />
+        <param name="boundary" type="integer" value="10" min="0" label="Image boundary" help="Width of image boundaries (in pixel) where spots will be ignored." />
     </inputs>
     <outputs>
         <data format="tabular" name="fn_out" />
     </outputs>
     <tests>
+        <!-- Multi-frame input -->
         <test>
-            <param name="fn_in" value="test_img1.tif"/>
+            <param name="fn_in" value="input1.tif"/>
             <param name="frame_1st" value="1"/>
             <param name="frame_end" value="0"/>
-            <param name="filter" value="Gauss"/>
-            <param name="ssig" value="1"/>
-            <param name="thres" value="10"/>
-            <param name="typ_intens" value="smoothed"/>
-            <param name="bndy" value="10"/>
-            <output name="fn_out" value="spots_detected.tsv" ftype="tabular" />
+            <param name="filter_type" value="LoG"/>
+            <param name="min_scale" value="1"/>
+            <param name="max_scale" value="2"/>
+            <param name="abs_threshold" value="0"/>
+            <param name="rel_threshold" value="0.1"/>
+            <param name="boundary" value="10"/>
+            <output name="fn_out" value="output1.tsv" ftype="tabular" />
+        </test>
+        <!-- Single-frame input -->
+        <test>
+            <param name="fn_in" value="input2.tif"/>
+            <param name="frame_1st" value="1"/>
+            <param name="frame_end" value="0"/>
+            <param name="filter_type" value="LoG"/>
+            <param name="min_scale" value="1"/>
+            <param name="max_scale" value="2"/>
+            <param name="abs_threshold" value="0.04"/>
+            <param name="rel_threshold" value="0"/>
+            <param name="boundary" value="10"/>
+            <output name="fn_out" value="output2.tsv" ftype="tabular" />
         </test>
     </tests>
     <help>
-    **What it does**
+
+        **Perform spot detection and measure the image intensities.**
+
+        This tool detects spots (blobs) and measures the image intensities in a single-channel 2-D image (or a stack of such images).
+
+        The tool produces a TSV file containing all detections, with the following columns:
 
-    This tool detects spots and measures the intensities in a 2D image (sequence).
+        - ``frame``: The frame of the image stack
+        - ``pos_x``: The horizontal coordinate of the detection
+        - ``pos_y``: The vertical coordinate of the detection
+        - ``scale``: The scale at which the detection was found
+        - ``radius``: The radius of the detected spot
+        - ``intensity``: The mean intensity of the spot
+
     </help>
     <citations>
         <citation type="doi">10.1097/j.pain.0000000000002642</citation>
Binary file test-data/input1.tif has changed
Binary file test-data/input2.tif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output1.tsv	Wed Sep 25 08:19:30 2024 +0000
@@ -0,0 +1,842 @@
+frame	pos_x	pos_y	scale	radius	intensity
+1	159	172	1.44	4.09	27906.43
+1	54	122	1.22	3.46	29360.38
+1	69	115	1.33	3.77	20894.57
+1	87	140	1.00	2.83	21561.59
+1	136	168	1.11	3.14	21860.79
+1	63	99	1.00	2.83	12672.24
+1	72	154	1.00	2.83	30284.17
+1	27	86	1.00	2.83	13341.76
+1	116	170	1.00	2.83	23941.62
+1	189	175	1.33	3.77	13750.10
+1	153	172	1.00	2.83	22797.66
+1	199	175	1.11	3.14	15502.10
+1	36	80	2.00	5.66	20915.44
+1	53	102	1.00	2.83	19177.07
+1	112	168	1.00	2.83	23776.00
+1	55	103	1.33	3.77	18107.43
+1	68	126	1.11	3.14	30432.07
+1	256	185	2.00	5.66	20966.09
+1	59	129	2.00	5.66	20757.60
+1	64	140	1.00	2.83	33087.97
+1	79	124	1.44	4.09	14448.31
+1	20	32	2.00	5.66	17742.65
+1	125	172	1.00	2.83	9583.69
+1	100	157	1.00	2.83	18380.62
+1	78	134	2.00	5.66	19145.59
+1	75	145	1.89	5.34	25723.49
+1	24	54	1.00	2.83	12915.79
+1	75	137	1.00	2.83	30160.41
+1	276	178	1.00	2.83	18951.03
+1	67	147	2.00	5.66	41562.49
+1	50	98	1.56	4.40	17461.08
+1	110	167	1.00	2.83	19002.28
+1	28	62	2.00	5.66	13138.30
+1	56	137	1.67	4.71	15212.44
+1	21	46	1.00	2.83	7621.38
+1	56	130	1.00	2.83	17625.03
+1	95	153	1.44	4.09	17551.90
+1	58	126	1.56	4.40	28724.78
+1	58	106	1.00	2.83	16589.59
+1	68	130	1.00	2.83	27909.45
+1	61	109	1.33	3.77	13064.31
+1	60	144	2.00	5.66	30528.99
+1	93	172	1.00	2.83	9379.83
+1	281	175	2.00	5.66	10718.76
+1	66	154	1.00	2.83	36866.59
+1	70	138	1.00	2.83	25350.45
+1	102	161	1.11	3.14	14508.31
+1	73	138	1.00	2.83	28934.21
+1	41	127	1.11	3.14	11074.14
+1	73	128	1.00	2.83	17470.62
+1	248	184	1.78	5.03	13194.38
+1	67	151	1.00	2.83	48337.86
+1	235	182	1.11	3.14	11060.69
+1	58	99	1.00	2.83	11734.45
+1	196	175	1.11	3.14	15272.45
+1	328	143	2.00	5.66	14041.33
+1	178	173	1.00	2.83	8690.69
+1	50	144	1.78	5.03	11072.10
+1	73	118	1.00	2.83	13777.79
+1	311	160	2.00	5.66	9783.41
+1	19	23	1.56	4.40	17069.22
+1	259	186	1.00	2.83	24486.07
+1	46	84	1.00	2.83	10166.72
+1	64	158	1.00	2.83	14172.28
+1	55	146	1.00	2.83	19391.66
+1	214	178	1.00	2.83	8996.48
+1	269	179	2.00	5.66	17463.88
+1	318	155	1.22	3.46	11827.45
+1	34	90	1.00	2.83	11129.38
+1	45	96	1.00	2.83	14346.03
+1	261	178	1.00	2.83	17947.93
+1	33	141	1.00	2.83	7288.24
+1	149	169	1.00	2.83	10410.86
+1	141	168	1.00	2.83	10329.86
+1	112	172	1.00	2.83	17837.86
+1	325	148	1.00	2.83	16720.28
+1	333	142	1.00	2.83	13613.38
+1	108	172	1.00	2.83	13053.41
+1	17	24	1.00	2.83	16528.17
+1	47	151	1.22	3.46	8967.34
+1	23	25	1.44	4.09	17208.12
+1	87	130	1.00	2.83	8139.24
+1	64	150	1.00	2.83	36538.34
+1	17	30	1.00	2.83	19660.69
+1	171	176	1.00	2.83	11652.69
+1	271	175	1.33	3.77	15835.69
+1	66	156	1.00	2.83	27881.00
+1	146	174	1.00	2.83	9184.45
+1	251	182	1.00	2.83	15565.93
+1	45	128	1.00	2.83	6041.28
+1	38	83	1.00	2.83	24316.24
+1	69	121	1.11	3.14	19150.90
+1	30	136	1.00	2.83	5841.83
+1	51	114	1.67	4.71	5608.44
+1	37	87	1.00	2.83	11063.76
+1	53	137	1.11	3.14	15352.00
+1	65	111	1.00	2.83	10562.52
+1	45	91	1.00	2.83	6160.41
+1	164	175	1.78	5.03	15567.52
+1	32	138	1.00	2.83	8170.34
+1	70	148	1.00	2.83	48634.00
+1	231	183	1.22	3.46	9699.97
+1	323	152	1.00	2.83	9268.90
+1	70	145	1.00	2.83	42528.59
+1	30	88	1.00	2.83	13678.66
+1	57	140	1.00	2.83	24875.76
+1	168	176	1.00	2.83	14728.24
+1	228	182	1.44	4.09	6844.78
+1	107	170	1.00	2.83	11676.48
+1	28	47	1.89	5.34	5555.27
+1	338	136	1.00	2.83	9288.21
+1	307	162	1.00	2.83	12198.79
+1	265	177	2.00	5.66	16124.70
+1	335	137	2.00	5.66	7449.70
+1	121	166	1.00	2.83	9614.10
+1	68	133	1.00	2.83	17773.83
+1	207	180	1.00	2.83	5037.31
+1	261	184	1.00	2.83	20553.28
+1	325	144	1.00	2.83	16420.31
+1	255	180	1.00	2.83	17766.34
+1	241	183	2.00	5.66	7933.49
+1	161	169	1.00	2.83	17190.79
+1	42	82	1.67	4.71	14055.05
+1	181	177	1.00	2.83	7821.86
+1	169	172	1.00	2.83	8669.62
+1	26	94	1.22	3.46	6227.86
+1	301	164	1.00	2.83	6435.41
+1	64	144	1.00	2.83	39628.86
+1	340	134	1.00	2.83	6909.38
+1	273	175	1.00	2.83	16026.03
+1	25	19	1.67	4.71	7893.28
+1	62	114	1.00	2.83	6925.00
+1	223	181	1.33	3.77	5492.76
+1	126	167	1.00	2.83	10517.38
+1	88	157	1.89	5.34	11451.14
+1	149	174	1.00	2.83	10210.10
+1	218	179	1.00	2.83	6981.45
+1	82	154	1.33	3.77	8435.90
+1	31	78	1.00	2.83	10996.76
+1	320	152	1.00	2.83	11125.41
+1	310	164	1.00	2.83	9496.14
+1	343	132	1.00	2.83	4700.21
+1	28	22	1.00	2.83	5431.21
+1	184	178	1.00	2.83	6362.62
+1	51	150	1.00	2.83	5129.93
+1	220	180	1.67	4.71	4663.58
+1	175	176	1.56	4.40	9049.24
+1	20	42	1.00	2.83	5714.10
+1	41	80	1.00	2.83	18368.76
+1	93	144	1.11	3.14	11190.00
+1	120	171	1.00	2.83	10224.07
+1	31	65	1.11	3.14	12773.83
+1	38	124	1.00	2.83	8553.55
+1	58	163	1.11	3.14	2950.34
+1	35	72	1.22	3.46	9462.45
+1	30	57	1.00	2.83	10239.07
+1	129	169	1.00	2.83	6480.31
+1	93	164	1.00	2.83	5034.97
+1	93	159	1.11	3.14	12017.62
+1	47	124	1.11	3.14	6167.14
+1	67	163	1.00	2.83	3188.31
+1	59	152	1.11	3.14	7480.59
+2	159	172	1.56	4.40	28871.98
+2	69	115	1.33	3.77	21869.82
+2	137	168	1.22	3.46	21858.10
+2	54	122	1.33	3.77	22923.98
+2	57	125	1.56	4.40	30103.73
+2	86	140	1.00	2.83	20773.00
+2	116	170	1.00	2.83	24153.79
+2	153	171	1.00	2.83	22266.97
+2	55	104	1.00	2.83	22050.72
+2	36	81	1.22	3.46	27792.76
+2	72	154	1.00	2.83	31568.34
+2	67	125	1.44	4.09	26737.35
+2	28	88	1.00	2.83	15570.14
+2	110	167	1.00	2.83	18122.10
+2	281	174	1.00	2.83	21181.48
+2	199	175	1.22	3.46	14645.86
+2	54	136	1.78	5.03	14095.38
+2	189	175	1.33	3.77	12666.80
+2	68	132	1.00	2.83	22253.21
+2	95	152	1.22	3.46	19853.00
+2	76	136	1.89	5.34	24248.44
+2	64	140	1.00	2.83	34685.41
+2	21	46	1.00	2.83	7693.76
+2	57	147	1.44	4.09	23124.73
+2	100	157	1.00	2.83	15503.14
+2	67	147	2.00	5.66	43509.58
+2	60	145	1.67	4.71	31271.83
+2	126	172	1.00	2.83	7382.69
+2	63	99	1.00	2.83	8513.24
+2	62	110	1.00	2.83	17610.66
+2	255	186	1.11	3.14	26547.66
+2	58	128	1.00	2.83	33454.55
+2	59	107	1.11	3.14	16805.00
+2	67	151	2.00	5.66	39871.20
+2	74	145	2.00	5.66	26890.35
+2	63	130	1.00	2.83	21293.24
+2	28	62	2.00	5.66	12127.69
+2	64	151	1.00	2.83	31540.66
+2	256	183	2.00	5.66	21967.20
+2	141	168	1.00	2.83	11780.10
+2	24	54	1.11	3.14	12743.86
+2	46	84	1.00	2.83	14555.79
+2	214	178	1.00	2.83	9145.86
+2	55	139	1.00	2.83	19865.00
+2	50	98	2.00	5.66	11817.79
+2	146	174	1.00	2.83	9835.69
+2	269	179	2.00	5.66	18210.60
+2	94	173	1.22	3.46	10683.66
+2	20	32	2.00	5.66	17515.18
+2	51	114	1.00	2.83	11590.59
+2	72	128	1.00	2.83	19196.31
+2	276	178	1.00	2.83	17735.90
+2	164	176	1.00	2.83	15937.48
+2	67	155	1.33	3.77	30435.22
+2	33	141	1.00	2.83	7462.03
+2	53	102	1.00	2.83	17304.59
+2	75	132	1.00	2.83	22312.83
+2	311	161	2.00	5.66	9778.64
+2	57	130	1.00	2.83	24890.66
+2	102	162	1.00	2.83	9004.41
+2	23	26	1.00	2.83	20563.38
+2	236	182	1.00	2.83	11190.34
+2	58	101	1.00	2.83	13780.38
+2	39	83	1.00	2.83	25183.28
+2	78	124	1.11	3.14	13418.69
+2	248	185	1.44	4.09	13727.06
+2	50	145	1.67	4.71	10082.05
+2	45	96	1.22	3.46	13525.00
+2	328	143	2.00	5.66	14475.15
+2	18	23	1.56	4.40	15194.06
+2	261	178	1.00	2.83	17625.07
+2	328	146	2.00	5.66	14187.20
+2	63	158	1.11	3.14	10641.00
+2	112	170	1.00	2.83	22700.45
+2	178	172	1.00	2.83	6691.79
+2	219	180	1.00	2.83	8548.00
+2	48	144	1.00	2.83	9898.03
+2	70	138	1.00	2.83	20170.24
+2	323	146	1.00	2.83	11043.97
+2	48	134	1.00	2.83	7349.21
+2	76	147	1.00	2.83	26364.76
+2	180	177	1.00	2.83	9884.17
+2	17	29	1.00	2.83	15902.83
+2	318	155	1.44	4.09	8885.51
+2	33	91	1.00	2.83	9189.41
+2	150	169	1.00	2.83	12330.76
+2	88	130	1.00	2.83	6576.10
+2	24	20	1.00	2.83	13023.48
+2	113	168	1.00	2.83	21828.28
+2	51	147	1.00	2.83	13669.72
+2	169	176	1.33	3.77	11637.06
+2	42	83	2.00	5.66	16047.98
+2	37	88	1.00	2.83	9459.28
+2	107	170	1.00	2.83	12308.31
+2	265	176	1.33	3.77	16522.49
+2	72	118	1.00	2.83	17549.48
+2	37	76	1.00	2.83	18172.24
+2	322	151	1.11	3.14	11102.41
+2	231	183	1.33	3.77	8233.12
+2	50	152	1.00	2.83	6109.48
+2	273	175	1.00	2.83	12947.79
+2	259	187	1.11	3.14	17358.41
+2	251	182	1.00	2.83	16015.14
+2	343	132	1.00	2.83	5328.52
+2	37	86	1.00	2.83	12172.86
+2	28	46	1.00	2.83	8252.97
+2	305	162	1.00	2.83	9188.79
+2	338	136	1.00	2.83	8042.66
+2	41	80	1.00	2.83	20383.93
+2	149	174	1.00	2.83	12520.52
+2	79	149	1.00	2.83	8866.24
+2	47	153	1.00	2.83	6565.48
+2	228	182	1.00	2.83	8266.03
+2	262	182	1.00	2.83	19295.34
+2	99	160	1.00	2.83	13775.66
+2	61	141	1.00	2.83	31171.52
+2	333	141	1.44	4.09	12796.35
+2	127	166	1.11	3.14	9913.69
+2	45	128	1.00	2.83	7224.62
+2	183	178	1.00	2.83	6755.34
+2	335	138	2.00	5.66	7879.82
+2	32	66	1.00	2.83	10252.55
+2	109	172	1.00	2.83	14282.21
+2	162	169	1.00	2.83	12679.83
+2	25	48	1.00	2.83	5931.69
+2	27	94	1.00	2.83	5885.93
+2	41	127	2.00	5.66	6078.23
+2	36	74	1.33	3.77	11587.71
+2	94	158	1.22	3.46	13850.45
+2	177	176	2.00	5.66	7080.71
+2	165	173	1.00	2.83	16448.07
+2	44	91	1.11	3.14	5133.14
+2	300	165	1.33	3.77	4402.37
+2	130	168	1.00	2.83	6830.66
+2	82	124	1.00	2.83	7717.34
+2	29	52	1.00	2.83	6564.86
+2	240	183	2.00	5.66	7257.85
+2	281	177	1.00	2.83	14739.93
+2	207	180	1.00	2.83	4310.52
+2	93	147	1.22	3.46	12952.69
+2	81	134	1.00	2.83	15140.17
+2	311	164	1.00	2.83	10413.38
+2	120	171	1.00	2.83	10906.10
+2	30	137	1.44	4.09	4339.16
+2	260	184	1.00	2.83	23290.97
+2	36	118	1.00	2.83	4280.79
+2	40	124	1.00	2.83	8120.34
+2	154	175	1.00	2.83	12859.07
+2	224	182	1.00	2.83	6390.90
+2	47	100	1.00	2.83	11916.21
+2	32	78	1.00	2.83	13495.38
+2	86	134	1.11	3.14	10447.76
+2	71	151	1.00	2.83	37025.79
+2	83	155	1.78	5.03	9902.33
+2	340	135	1.00	2.83	6647.10
+2	27	22	1.00	2.83	8287.97
+2	83	158	1.00	2.83	10927.76
+2	19	40	1.00	2.83	6123.17
+2	24	14	1.00	2.83	3043.10
+2	87	157	2.00	5.66	11002.20
+2	21	43	1.00	2.83	6961.48
+2	266	182	1.00	2.83	15830.41
+2	244	182	1.00	2.83	10079.45
+2	200	180	1.00	2.83	3310.97
+2	30	80	1.00	2.83	7753.17
+2	47	124	1.00	2.83	6840.07
+2	68	163	1.33	3.77	3686.12
+2	124	167	1.00	2.83	11066.93
+2	210	180	1.00	2.83	5272.83
+2	144	170	1.00	2.83	6921.79
+2	46	149	1.00	2.83	5087.21
+2	160	176	1.00	2.83	11960.62
+2	241	186	1.00	2.83	6628.90
+2	121	166	1.00	2.83	8842.38
+2	89	166	1.00	2.83	5897.03
+3	159	171	1.44	4.09	28224.33
+3	56	123	2.00	5.66	17741.96
+3	94	150	1.00	2.83	20423.34
+3	86	140	1.00	2.83	23798.07
+3	137	168	1.33	3.77	15816.47
+3	54	103	1.22	3.46	23206.86
+3	117	170	1.00	2.83	22919.31
+3	57	147	1.44	4.09	27464.57
+3	61	108	1.00	2.83	20137.52
+3	21	46	1.00	2.83	8650.59
+3	58	125	1.11	3.14	33569.86
+3	73	120	1.00	2.83	16500.62
+3	38	82	1.00	2.83	30753.07
+3	68	125	1.11	3.14	26870.52
+3	280	174	1.00	2.83	19256.55
+3	199	175	1.00	2.83	13539.41
+3	67	151	2.00	5.66	39723.92
+3	75	145	1.67	4.71	24887.31
+3	77	135	2.00	5.66	22346.72
+3	257	182	1.33	3.77	28438.55
+3	110	167	1.00	2.83	16631.00
+3	66	141	1.11	3.14	35525.93
+3	24	54	1.00	2.83	12886.62
+3	36	80	1.00	2.83	27998.14
+3	69	116	1.78	5.03	16658.25
+3	58	106	1.00	2.83	17017.41
+3	163	176	1.00	2.83	14561.72
+3	55	135	1.11	3.14	13793.10
+3	153	171	1.11	3.14	23014.62
+3	61	98	1.00	2.83	9588.41
+3	276	178	1.11	3.14	20327.93
+3	60	130	1.33	3.77	23745.02
+3	66	147	1.33	3.77	46781.53
+3	61	146	1.00	2.83	39603.76
+3	328	142	1.22	3.46	21653.90
+3	99	156	1.00	2.83	15589.17
+3	62	156	1.00	2.83	12673.14
+3	189	175	1.67	4.71	8459.68
+3	27	63	2.00	5.66	11557.43
+3	126	172	1.00	2.83	7756.38
+3	34	90	1.00	2.83	12319.93
+3	45	84	1.00	2.83	16452.83
+3	49	134	1.00	2.83	10883.66
+3	18	24	1.22	3.46	20439.48
+3	37	76	1.00	2.83	20910.34
+3	21	32	2.00	5.66	17137.16
+3	69	131	1.33	3.77	24516.63
+3	248	185	1.44	4.09	14514.80
+3	94	172	1.00	2.83	10027.97
+3	61	142	1.00	2.83	37004.97
+3	83	154	1.00	2.83	13718.55
+3	270	179	2.00	5.66	18128.76
+3	57	99	1.22	3.46	15601.10
+3	64	130	1.00	2.83	23041.86
+3	25	20	1.00	2.83	15195.34
+3	71	154	2.00	5.66	27945.08
+3	310	161	2.00	5.66	10084.60
+3	50	98	1.78	5.03	13786.68
+3	34	142	1.00	2.83	8293.93
+3	19	34	1.00	2.83	23094.14
+3	18	32	1.00	2.83	23720.17
+3	254	186	1.00	2.83	23441.48
+3	23	26	1.00	2.83	19101.28
+3	233	183	1.00	2.83	11593.93
+3	88	144	1.00	2.83	18261.59
+3	29	88	1.44	4.09	11435.35
+3	49	144	1.56	4.40	11416.76
+3	214	178	1.00	2.83	9065.83
+3	42	86	1.00	2.83	11837.97
+3	265	177	1.56	4.40	20759.84
+3	67	154	1.00	2.83	39978.07
+3	318	154	1.33	3.77	9323.84
+3	170	176	1.11	3.14	13875.28
+3	147	174	1.00	2.83	11282.79
+3	141	168	1.00	2.83	13197.93
+3	29	46	1.00	2.83	7440.07
+3	72	128	1.00	2.83	22614.48
+3	93	169	1.00	2.83	8539.59
+3	107	170	1.00	2.83	12792.83
+3	57	141	1.00	2.83	16482.41
+3	37	88	1.00	2.83	11806.62
+3	334	140	1.00	2.83	14870.86
+3	261	178	1.00	2.83	20074.34
+3	149	168	1.00	2.83	9209.55
+3	262	184	1.00	2.83	16633.93
+3	78	123	1.44	4.09	11052.51
+3	102	162	1.00	2.83	11048.76
+3	108	172	1.00	2.83	11777.14
+3	33	140	1.00	2.83	8462.21
+3	77	125	1.00	2.83	13132.76
+3	46	96	1.56	4.40	11979.57
+3	47	152	1.33	3.77	6613.61
+3	50	114	1.00	2.83	8628.17
+3	259	187	1.00	2.83	17202.90
+3	63	138	1.00	2.83	23292.24
+3	325	144	1.00	2.83	17692.97
+3	44	92	1.00	2.83	6596.62
+3	236	182	1.00	2.83	12523.07
+3	38	86	1.00	2.83	15052.48
+3	121	171	1.00	2.83	10089.59
+3	337	136	1.00	2.83	9264.48
+3	42	128	1.00	2.83	9867.28
+3	100	160	2.00	5.66	10584.07
+3	26	48	1.00	2.83	7103.00
+3	46	128	1.00	2.83	6246.38
+3	239	183	2.00	5.66	7694.42
+3	126	167	2.00	5.66	8428.45
+3	42	131	2.00	5.66	7674.46
+3	70	139	1.11	3.14	23471.52
+3	175	176	1.00	2.83	10830.76
+3	209	180	1.11	3.14	6236.79
+3	150	174	1.00	2.83	13992.48
+3	70	148	1.00	2.83	46916.90
+3	75	131	1.00	2.83	22997.83
+3	30	138	1.00	2.83	5048.72
+3	177	174	2.00	5.66	6949.47
+3	182	177	1.00	2.83	7089.93
+3	50	146	1.00	2.83	15843.10
+3	80	149	1.11	3.14	8468.48
+3	28	56	1.00	2.83	10858.79
+3	54	144	1.00	2.83	16601.31
+3	327	148	1.33	3.77	14213.94
+3	47	100	1.00	2.83	12052.07
+3	86	130	1.00	2.83	6965.79
+3	41	80	1.00	2.83	20215.93
+3	219	180	1.22	3.46	7401.48
+3	62	134	1.00	2.83	13539.48
+3	301	165	1.44	4.09	5798.22
+3	224	181	1.44	4.09	5581.10
+3	29	50	1.00	2.83	5986.59
+3	322	151	1.33	3.77	8691.41
+3	97	152	1.00	2.83	9814.24
+3	90	168	1.00	2.83	6996.07
+3	16	28	1.00	2.83	11527.83
+3	69	122	1.00	2.83	17030.93
+3	28	85	1.00	2.83	7521.52
+3	64	122	1.00	2.83	8394.72
+3	92	155	1.00	2.83	13070.66
+3	52	153	1.00	2.83	3696.00
+3	241	185	1.00	2.83	10168.34
+3	95	158	1.00	2.83	13755.00
+3	169	172	1.00	2.83	10061.17
+3	68	164	1.00	2.83	3990.10
+3	31	79	1.33	3.77	9202.12
+3	287	173	1.00	2.83	4265.03
+3	270	175	1.00	2.83	15685.86
+3	129	168	1.00	2.83	9140.38
+3	79	140	1.00	2.83	10138.17
+3	342	134	2.00	5.66	3263.28
+3	333	136	1.00	2.83	8771.66
+3	46	123	1.00	2.83	5527.52
+3	330	146	1.00	2.83	15002.83
+3	20	42	1.00	2.83	5665.59
+3	254	180	1.00	2.83	14516.55
+3	33	67	1.00	2.83	6117.10
+3	63	136	1.00	2.83	16992.03
+3	244	183	1.22	3.46	11482.76
+3	248	181	1.00	2.83	9676.59
+3	273	175	1.00	2.83	13397.03
+3	30	60	1.00	2.83	14415.14
+3	88	133	1.00	2.83	8095.41
+3	34	116	1.67	4.71	2869.68
+3	165	173	1.00	2.83	14944.66
+3	26	44	1.00	2.83	4749.86
+3	25	14	1.00	2.83	2978.90
+3	58	163	1.00	2.83	2765.93
+3	38	121	1.11	3.14	4779.00
+3	199	180	1.00	2.83	2045.72
+3	26	93	1.00	2.83	5904.55
+3	88	136	1.00	2.83	10331.93
+3	39	125	1.00	2.83	5272.03
+4	159	172	1.44	4.09	27906.43
+4	54	122	1.22	3.46	29360.38
+4	69	115	1.33	3.77	20894.57
+4	87	140	1.00	2.83	21561.59
+4	136	168	1.11	3.14	21860.79
+4	63	99	1.00	2.83	12672.24
+4	72	154	1.00	2.83	30284.17
+4	27	86	1.00	2.83	13341.76
+4	116	170	1.00	2.83	23941.62
+4	189	175	1.33	3.77	13750.10
+4	153	172	1.00	2.83	22797.66
+4	199	175	1.11	3.14	15502.10
+4	36	80	2.00	5.66	20915.44
+4	53	102	1.00	2.83	19177.07
+4	112	168	1.00	2.83	23776.00
+4	55	103	1.33	3.77	18107.43
+4	68	126	1.11	3.14	30432.07
+4	256	185	2.00	5.66	20966.09
+4	59	129	2.00	5.66	20757.60
+4	64	140	1.00	2.83	33087.97
+4	79	124	1.44	4.09	14448.31
+4	20	32	2.00	5.66	17742.65
+4	125	172	1.00	2.83	9583.69
+4	100	157	1.00	2.83	18380.62
+4	78	134	2.00	5.66	19145.59
+4	75	145	1.89	5.34	25723.49
+4	24	54	1.00	2.83	12915.79
+4	75	137	1.00	2.83	30160.41
+4	276	178	1.00	2.83	18951.03
+4	67	147	2.00	5.66	41562.49
+4	50	98	1.56	4.40	17461.08
+4	110	167	1.00	2.83	19002.28
+4	28	62	2.00	5.66	13138.30
+4	56	137	1.67	4.71	15212.44
+4	21	46	1.00	2.83	7621.38
+4	56	130	1.00	2.83	17625.03
+4	95	153	1.44	4.09	17551.90
+4	58	126	1.56	4.40	28724.78
+4	58	106	1.00	2.83	16589.59
+4	68	130	1.00	2.83	27909.45
+4	61	109	1.33	3.77	13064.31
+4	60	144	2.00	5.66	30528.99
+4	93	172	1.00	2.83	9379.83
+4	281	175	2.00	5.66	10718.76
+4	66	154	1.00	2.83	36866.59
+4	70	138	1.00	2.83	25350.45
+4	102	161	1.11	3.14	14508.31
+4	73	138	1.00	2.83	28934.21
+4	41	127	1.11	3.14	11074.14
+4	73	128	1.00	2.83	17470.62
+4	248	184	1.78	5.03	13194.38
+4	67	151	1.00	2.83	48337.86
+4	235	182	1.11	3.14	11060.69
+4	58	99	1.00	2.83	11734.45
+4	196	175	1.11	3.14	15272.45
+4	328	143	2.00	5.66	14041.33
+4	178	173	1.00	2.83	8690.69
+4	50	144	1.78	5.03	11072.10
+4	73	118	1.00	2.83	13777.79
+4	311	160	2.00	5.66	9783.41
+4	19	23	1.56	4.40	17069.22
+4	259	186	1.00	2.83	24486.07
+4	46	84	1.00	2.83	10166.72
+4	64	158	1.00	2.83	14172.28
+4	55	146	1.00	2.83	19391.66
+4	214	178	1.00	2.83	8996.48
+4	269	179	2.00	5.66	17463.88
+4	318	155	1.22	3.46	11827.45
+4	34	90	1.00	2.83	11129.38
+4	45	96	1.00	2.83	14346.03
+4	261	178	1.00	2.83	17947.93
+4	33	141	1.00	2.83	7288.24
+4	149	169	1.00	2.83	10410.86
+4	141	168	1.00	2.83	10329.86
+4	112	172	1.00	2.83	17837.86
+4	325	148	1.00	2.83	16720.28
+4	333	142	1.00	2.83	13613.38
+4	108	172	1.00	2.83	13053.41
+4	17	24	1.00	2.83	16528.17
+4	47	151	1.22	3.46	8967.34
+4	23	25	1.44	4.09	17208.12
+4	87	130	1.00	2.83	8139.24
+4	64	150	1.00	2.83	36538.34
+4	17	30	1.00	2.83	19660.69
+4	171	176	1.00	2.83	11652.69
+4	271	175	1.33	3.77	15835.69
+4	66	156	1.00	2.83	27881.00
+4	146	174	1.00	2.83	9184.45
+4	251	182	1.00	2.83	15565.93
+4	45	128	1.00	2.83	6041.28
+4	38	83	1.00	2.83	24316.24
+4	69	121	1.11	3.14	19150.90
+4	30	136	1.00	2.83	5841.83
+4	51	114	1.67	4.71	5608.44
+4	37	87	1.00	2.83	11063.76
+4	53	137	1.11	3.14	15352.00
+4	65	111	1.00	2.83	10562.52
+4	45	91	1.00	2.83	6160.41
+4	164	175	1.78	5.03	15567.52
+4	32	138	1.00	2.83	8170.34
+4	70	148	1.00	2.83	48634.00
+4	231	183	1.22	3.46	9699.97
+4	323	152	1.00	2.83	9268.90
+4	70	145	1.00	2.83	42528.59
+4	30	88	1.00	2.83	13678.66
+4	57	140	1.00	2.83	24875.76
+4	168	176	1.00	2.83	14728.24
+4	228	182	1.44	4.09	6844.78
+4	107	170	1.00	2.83	11676.48
+4	28	47	1.89	5.34	5555.27
+4	338	136	1.00	2.83	9288.21
+4	307	162	1.00	2.83	12198.79
+4	265	177	2.00	5.66	16124.70
+4	335	137	2.00	5.66	7449.70
+4	121	166	1.00	2.83	9614.10
+4	68	133	1.00	2.83	17773.83
+4	207	180	1.00	2.83	5037.31
+4	261	184	1.00	2.83	20553.28
+4	325	144	1.00	2.83	16420.31
+4	255	180	1.00	2.83	17766.34
+4	241	183	2.00	5.66	7933.49
+4	161	169	1.00	2.83	17190.79
+4	42	82	1.67	4.71	14055.05
+4	181	177	1.00	2.83	7821.86
+4	169	172	1.00	2.83	8669.62
+4	26	94	1.22	3.46	6227.86
+4	301	164	1.00	2.83	6435.41
+4	64	144	1.00	2.83	39628.86
+4	340	134	1.00	2.83	6909.38
+4	273	175	1.00	2.83	16026.03
+4	25	19	1.67	4.71	7893.28
+4	62	114	1.00	2.83	6925.00
+4	223	181	1.33	3.77	5492.76
+4	126	167	1.00	2.83	10517.38
+4	88	157	1.89	5.34	11451.14
+4	149	174	1.00	2.83	10210.10
+4	218	179	1.00	2.83	6981.45
+4	82	154	1.33	3.77	8435.90
+4	31	78	1.00	2.83	10996.76
+4	320	152	1.00	2.83	11125.41
+4	310	164	1.00	2.83	9496.14
+4	343	132	1.00	2.83	4700.21
+4	28	22	1.00	2.83	5431.21
+4	184	178	1.00	2.83	6362.62
+4	51	150	1.00	2.83	5129.93
+4	220	180	1.67	4.71	4663.58
+4	175	176	1.56	4.40	9049.24
+4	20	42	1.00	2.83	5714.10
+4	41	80	1.00	2.83	18368.76
+4	93	144	1.11	3.14	11190.00
+4	120	171	1.00	2.83	10224.07
+4	31	65	1.11	3.14	12773.83
+4	38	124	1.00	2.83	8553.55
+4	58	163	1.11	3.14	2950.34
+4	35	72	1.22	3.46	9462.45
+4	30	57	1.00	2.83	10239.07
+4	129	169	1.00	2.83	6480.31
+4	93	164	1.00	2.83	5034.97
+4	93	159	1.11	3.14	12017.62
+4	47	124	1.11	3.14	6167.14
+4	67	163	1.00	2.83	3188.31
+4	59	152	1.11	3.14	7480.59
+5	159	171	1.44	4.09	28224.33
+5	56	123	2.00	5.66	17741.96
+5	94	150	1.00	2.83	20423.34
+5	86	140	1.00	2.83	23798.07
+5	137	168	1.33	3.77	15816.47
+5	54	103	1.22	3.46	23206.86
+5	117	170	1.00	2.83	22919.31
+5	57	147	1.44	4.09	27464.57
+5	61	108	1.00	2.83	20137.52
+5	21	46	1.00	2.83	8650.59
+5	58	125	1.11	3.14	33569.86
+5	73	120	1.00	2.83	16500.62
+5	38	82	1.00	2.83	30753.07
+5	68	125	1.11	3.14	26870.52
+5	280	174	1.00	2.83	19256.55
+5	199	175	1.00	2.83	13539.41
+5	67	151	2.00	5.66	39723.92
+5	75	145	1.67	4.71	24887.31
+5	77	135	2.00	5.66	22346.72
+5	257	182	1.33	3.77	28438.55
+5	110	167	1.00	2.83	16631.00
+5	66	141	1.11	3.14	35525.93
+5	24	54	1.00	2.83	12886.62
+5	36	80	1.00	2.83	27998.14
+5	69	116	1.78	5.03	16658.25
+5	58	106	1.00	2.83	17017.41
+5	163	176	1.00	2.83	14561.72
+5	55	135	1.11	3.14	13793.10
+5	153	171	1.11	3.14	23014.62
+5	61	98	1.00	2.83	9588.41
+5	276	178	1.11	3.14	20327.93
+5	60	130	1.33	3.77	23745.02
+5	66	147	1.33	3.77	46781.53
+5	61	146	1.00	2.83	39603.76
+5	328	142	1.22	3.46	21653.90
+5	99	156	1.00	2.83	15589.17
+5	62	156	1.00	2.83	12673.14
+5	189	175	1.67	4.71	8459.68
+5	27	63	2.00	5.66	11557.43
+5	126	172	1.00	2.83	7756.38
+5	34	90	1.00	2.83	12319.93
+5	45	84	1.00	2.83	16452.83
+5	49	134	1.00	2.83	10883.66
+5	18	24	1.22	3.46	20439.48
+5	37	76	1.00	2.83	20910.34
+5	21	32	2.00	5.66	17137.16
+5	69	131	1.33	3.77	24516.63
+5	248	185	1.44	4.09	14514.80
+5	94	172	1.00	2.83	10027.97
+5	61	142	1.00	2.83	37004.97
+5	83	154	1.00	2.83	13718.55
+5	270	179	2.00	5.66	18128.76
+5	57	99	1.22	3.46	15601.10
+5	64	130	1.00	2.83	23041.86
+5	25	20	1.00	2.83	15195.34
+5	71	154	2.00	5.66	27945.08
+5	310	161	2.00	5.66	10084.60
+5	50	98	1.78	5.03	13786.68
+5	34	142	1.00	2.83	8293.93
+5	19	34	1.00	2.83	23094.14
+5	18	32	1.00	2.83	23720.17
+5	254	186	1.00	2.83	23441.48
+5	23	26	1.00	2.83	19101.28
+5	233	183	1.00	2.83	11593.93
+5	88	144	1.00	2.83	18261.59
+5	29	88	1.44	4.09	11435.35
+5	49	144	1.56	4.40	11416.76
+5	214	178	1.00	2.83	9065.83
+5	42	86	1.00	2.83	11837.97
+5	265	177	1.56	4.40	20759.84
+5	67	154	1.00	2.83	39978.07
+5	318	154	1.33	3.77	9323.84
+5	170	176	1.11	3.14	13875.28
+5	147	174	1.00	2.83	11282.79
+5	141	168	1.00	2.83	13197.93
+5	29	46	1.00	2.83	7440.07
+5	72	128	1.00	2.83	22614.48
+5	93	169	1.00	2.83	8539.59
+5	107	170	1.00	2.83	12792.83
+5	57	141	1.00	2.83	16482.41
+5	37	88	1.00	2.83	11806.62
+5	334	140	1.00	2.83	14870.86
+5	261	178	1.00	2.83	20074.34
+5	149	168	1.00	2.83	9209.55
+5	262	184	1.00	2.83	16633.93
+5	78	123	1.44	4.09	11052.51
+5	102	162	1.00	2.83	11048.76
+5	108	172	1.00	2.83	11777.14
+5	33	140	1.00	2.83	8462.21
+5	77	125	1.00	2.83	13132.76
+5	46	96	1.56	4.40	11979.57
+5	47	152	1.33	3.77	6613.61
+5	50	114	1.00	2.83	8628.17
+5	259	187	1.00	2.83	17202.90
+5	63	138	1.00	2.83	23292.24
+5	325	144	1.00	2.83	17692.97
+5	44	92	1.00	2.83	6596.62
+5	236	182	1.00	2.83	12523.07
+5	38	86	1.00	2.83	15052.48
+5	121	171	1.00	2.83	10089.59
+5	337	136	1.00	2.83	9264.48
+5	42	128	1.00	2.83	9867.28
+5	100	160	2.00	5.66	10584.07
+5	26	48	1.00	2.83	7103.00
+5	46	128	1.00	2.83	6246.38
+5	239	183	2.00	5.66	7694.42
+5	126	167	2.00	5.66	8428.45
+5	42	131	2.00	5.66	7674.46
+5	70	139	1.11	3.14	23471.52
+5	175	176	1.00	2.83	10830.76
+5	209	180	1.11	3.14	6236.79
+5	150	174	1.00	2.83	13992.48
+5	70	148	1.00	2.83	46916.90
+5	75	131	1.00	2.83	22997.83
+5	30	138	1.00	2.83	5048.72
+5	177	174	2.00	5.66	6949.47
+5	182	177	1.00	2.83	7089.93
+5	50	146	1.00	2.83	15843.10
+5	80	149	1.11	3.14	8468.48
+5	28	56	1.00	2.83	10858.79
+5	54	144	1.00	2.83	16601.31
+5	327	148	1.33	3.77	14213.94
+5	47	100	1.00	2.83	12052.07
+5	86	130	1.00	2.83	6965.79
+5	41	80	1.00	2.83	20215.93
+5	219	180	1.22	3.46	7401.48
+5	62	134	1.00	2.83	13539.48
+5	301	165	1.44	4.09	5798.22
+5	224	181	1.44	4.09	5581.10
+5	29	50	1.00	2.83	5986.59
+5	322	151	1.33	3.77	8691.41
+5	97	152	1.00	2.83	9814.24
+5	90	168	1.00	2.83	6996.07
+5	16	28	1.00	2.83	11527.83
+5	69	122	1.00	2.83	17030.93
+5	28	85	1.00	2.83	7521.52
+5	64	122	1.00	2.83	8394.72
+5	92	155	1.00	2.83	13070.66
+5	52	153	1.00	2.83	3696.00
+5	241	185	1.00	2.83	10168.34
+5	95	158	1.00	2.83	13755.00
+5	169	172	1.00	2.83	10061.17
+5	68	164	1.00	2.83	3990.10
+5	31	79	1.33	3.77	9202.12
+5	287	173	1.00	2.83	4265.03
+5	270	175	1.00	2.83	15685.86
+5	129	168	1.00	2.83	9140.38
+5	79	140	1.00	2.83	10138.17
+5	342	134	2.00	5.66	3263.28
+5	333	136	1.00	2.83	8771.66
+5	46	123	1.00	2.83	5527.52
+5	330	146	1.00	2.83	15002.83
+5	20	42	1.00	2.83	5665.59
+5	254	180	1.00	2.83	14516.55
+5	33	67	1.00	2.83	6117.10
+5	63	136	1.00	2.83	16992.03
+5	244	183	1.22	3.46	11482.76
+5	248	181	1.00	2.83	9676.59
+5	273	175	1.00	2.83	13397.03
+5	30	60	1.00	2.83	14415.14
+5	88	133	1.00	2.83	8095.41
+5	34	116	1.67	4.71	2869.68
+5	165	173	1.00	2.83	14944.66
+5	26	44	1.00	2.83	4749.86
+5	25	14	1.00	2.83	2978.90
+5	58	163	1.00	2.83	2765.93
+5	38	121	1.11	3.14	4779.00
+5	199	180	1.00	2.83	2045.72
+5	26	93	1.00	2.83	5904.55
+5	88	136	1.00	2.83	10331.93
+5	39	125	1.00	2.83	5272.03
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output2.tsv	Wed Sep 25 08:19:30 2024 +0000
@@ -0,0 +1,39 @@
+frame	pos_x	pos_y	scale	radius	intensity
+1	85	32	1.33	3.77	18807.73
+1	190	25	1.78	5.03	24581.44
+1	137	26	1.44	4.09	19037.59
+1	63	42	1.44	4.09	22390.80
+1	107	44	1.33	3.77	23429.96
+1	61	27	1.56	4.40	18052.18
+1	158	39	1.44	4.09	18377.02
+1	190	14	1.33	3.77	18548.86
+1	182	33	1.78	5.03	26467.79
+1	39	39	1.44	4.09	14782.43
+1	169	26	1.33	3.77	14203.41
+1	61	54	1.33	3.77	23248.06
+1	95	52	1.33	3.77	21480.71
+1	23	60	1.89	5.34	25203.43
+1	84	24	1.56	4.40	16630.57
+1	121	47	1.67	4.71	15459.11
+1	66	49	1.11	3.14	23858.07
+1	115	36	2.00	5.66	16389.10
+1	55	51	1.33	3.77	23548.90
+1	130	72	1.67	4.71	15769.02
+1	117	23	1.33	3.77	16763.14
+1	45	52	1.56	4.40	22877.61
+1	36	71	1.56	4.40	20780.96
+1	78	17	1.33	3.77	16844.51
+1	101	38	1.56	4.40	21376.59
+1	147	31	1.78	5.03	16597.14
+1	163	55	2.00	5.66	18301.54
+1	164	23	1.33	3.77	17073.82
+1	150	24	1.56	4.40	15440.02
+1	151	67	1.78	5.03	18419.96
+1	26	53	2.00	5.66	20586.01
+1	79	62	1.33	3.77	15232.88
+1	69	17	1.11	3.14	15601.83
+1	83	52	1.33	3.77	18315.00
+1	16	54	2.00	5.66	22140.66
+1	166	61	1.78	5.03	18488.78
+1	163	43	1.44	4.09	16925.49
+1	130	53	1.78	5.03	15101.96
--- a/test-data/spots_detected.tsv	Mon Nov 13 22:12:30 2023 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,462 +0,0 @@
-FRAME	POS_X	POS_Y	INTENSITY
-1	126	202	55939.36
-1	218	227	41590.82
-1	132	201	41849.38
-1	120	199	45491.74
-1	113	177	27103.64
-1	95	135	33206.37
-1	130	209	36872.91
-1	128	170	30994.56
-1	315	240	38767.19
-1	123	195	32988.47
-1	117	181	40031.76
-1	118	184	36812.77
-1	127	181	29651.66
-1	134	192	28531.76
-1	137	189	35093.95
-1	195	223	30206.57
-1	78	87	30367.18
-1	146	195	26779.82
-1	175	225	28515.74
-1	213	227	30812.06
-1	114	158	31229.97
-1	171	223	26982.37
-1	87	117	27143.89
-1	129	194	29475.93
-1	115	192	28510.64
-1	248	230	22615.54
-1	154	208	26394.30
-1	109	153	26268.78
-1	328	234	26387.65
-1	138	179	20215.40
-1	159	212	24400.22
-1	335	233	21698.80
-1	387	198	24933.29
-1	121	154	18710.45
-1	308	239	22328.27
-1	258	230	18680.93
-1	340	229	15937.72
-1	78	78	18151.49
-1	81	80	24704.83
-1	117	161	24293.65
-1	120	164	24242.78
-1	160	215	23759.44
-1	86	141	10949.28
-1	222	230	22277.61
-1	370	215	18379.39
-1	109	199	18850.01
-1	83	109	15871.12
-1	117	155	15703.14
-1	100	182	17281.91
-1	168	227	17431.67
-1	392	197	15897.67
-1	184	227	11346.34
-1	294	237	10236.84
-1	377	210	15642.67
-1	152	226	9851.10
-1	93	145	12584.04
-1	147	212	14735.83
-1	80	101	11021.47
-1	394	193	14063.18
-1	105	139	12039.57
-1	301	237	11466.69
-1	273	233	8421.28
-1	111	170	14406.46
-1	237	228	9466.36
-1	106	206	14522.55
-1	83	75	11115.23
-1	290	238	12636.07
-1	205	229	12808.78
-1	381	207	11531.86
-1	92	196	9024.83
-1	185	222	11196.17
-1	180	221	8339.93
-1	146	185	7207.70
-1	142	209	11730.52
-1	88	101	10415.08
-1	235	231	11264.22
-1	85	103	5911.48
-1	104	183	8101.94
-1	85	148	7290.63
-1	145	189	9776.95
-1	361	219	7009.70
-1	282	236	8853.80
-1	121	169	7733.35
-1	107	180	8135.17
-1	266	235	7470.55
-1	79	96	6920.43
-1	152	219	5623.45
-1	149	220	5889.31
-2	126	202	59098.11
-2	126	205	53383.42
-2	218	227	46745.07
-2	120	199	43055.88
-2	116	180	45577.81
-2	127	181	42874.19
-2	130	209	41387.22
-2	123	195	33569.00
-2	113	177	31339.11
-2	128	170	35552.32
-2	135	191	30546.65
-2	95	136	34169.11
-2	315	238	31430.32
-2	314	240	30015.35
-2	116	201	26928.89
-2	196	223	29118.84
-2	175	225	29053.82
-2	213	227	34704.93
-2	115	159	29750.71
-2	146	195	27597.86
-2	328	234	28969.08
-2	113	191	25325.73
-2	79	87	27998.19
-2	340	229	19788.22
-2	154	207	25348.79
-2	81	81	25643.11
-2	172	224	25762.85
-2	87	117	24830.46
-2	169	222	19415.52
-2	325	232	23879.48
-2	248	230	23270.45
-2	110	153	24396.90
-2	387	198	23947.67
-2	87	143	16954.62
-2	118	162	26061.81
-2	78	79	23543.41
-2	258	230	16996.33
-2	121	165	22822.04
-2	387	201	25260.27
-2	335	233	19553.33
-2	223	230	22795.66
-2	159	212	20956.68
-2	370	216	19989.36
-2	320	233	13806.24
-2	308	239	17964.97
-2	105	139	18000.56
-2	109	200	17896.86
-2	83	109	16421.63
-2	105	151	17984.13
-2	137	179	12811.40
-2	110	169	14111.65
-2	228	231	18325.92
-2	392	196	14572.82
-2	153	228	14935.83
-2	122	154	11708.73
-2	83	75	13067.82
-2	153	213	16283.67
-2	295	237	9677.50
-2	377	210	13457.71
-2	273	233	9148.80
-2	205	229	13083.06
-2	381	206	10603.41
-2	80	101	9485.05
-2	152	202	15278.04
-2	185	226	11093.24
-2	161	216	15543.22
-2	146	212	14364.79
-2	235	231	12509.71
-2	290	238	13411.96
-2	93	145	9119.49
-2	142	210	13054.23
-2	239	232	13043.98
-2	92	196	10749.96
-2	185	221	9922.40
-2	299	238	13577.34
-2	278	235	11194.38
-2	100	182	11485.41
-2	145	189	11315.24
-2	237	228	11272.61
-2	107	189	8051.49
-2	87	101	8814.45
-2	146	186	7585.02
-2	106	207	8720.64
-2	109	207	7676.81
-2	402	188	7813.91
-2	88	108	7921.85
-2	360	220	7726.74
-2	86	148	7184.91
-2	106	180	8401.49
-2	95	173	4093.76
-2	266	235	5678.52
-2	122	172	5731.76
-2	127	218	4787.41
-3	126	206	56658.14
-3	126	202	54234.74
-3	218	226	35022.37
-3	119	200	40576.02
-3	133	201	44149.96
-3	115	178	43820.79
-3	124	196	41934.96
-3	117	180	43996.85
-3	130	209	42016.60
-3	136	190	39500.63
-3	316	237	31963.21
-3	97	137	36182.78
-3	127	181	31990.16
-3	119	184	34251.83
-3	114	158	29844.61
-3	146	196	37064.84
-3	128	186	34532.76
-3	176	225	30746.00
-3	196	223	29807.10
-3	213	226	25523.49
-3	128	171	28664.10
-3	152	204	24687.37
-3	329	234	28277.06
-3	78	87	26725.30
-3	81	87	30473.18
-3	172	225	26643.89
-3	120	163	26474.56
-3	387	197	21111.91
-3	86	117	20367.28
-3	335	233	20895.73
-3	324	232	23086.43
-3	339	229	15275.48
-3	129	194	24033.17
-3	123	185	24073.76
-3	77	79	19152.47
-3	169	222	17195.61
-3	132	175	25123.86
-3	81	81	24895.65
-3	109	153	21172.27
-3	117	161	24299.24
-3	307	240	19257.85
-3	370	215	18554.16
-3	222	230	22017.20
-3	104	139	20194.29
-3	248	230	23396.01
-3	257	230	17273.50
-3	116	154	15659.69
-3	114	190	21449.57
-3	158	211	18454.95
-3	83	109	17776.43
-3	84	75	15659.83
-3	158	215	19800.41
-3	109	199	15805.24
-3	101	140	20715.26
-3	143	210	20769.18
-3	88	144	20132.54
-3	93	145	12670.17
-3	228	231	19053.86
-3	393	195	13463.33
-3	80	101	13305.58
-3	105	151	15913.95
-3	137	179	15719.37
-3	167	226	17465.42
-3	293	238	15459.81
-3	377	209	10830.81
-3	185	222	13711.26
-3	108	189	16955.73
-3	185	226	12648.79
-3	153	227	14010.45
-3	101	186	14180.61
-3	298	238	16257.78
-3	121	189	14906.88
-3	151	210	12848.29
-3	274	233	11026.17
-3	93	197	14149.59
-3	234	231	13284.28
-3	236	228	8838.32
-3	106	207	10942.68
-3	381	206	8704.24
-3	238	231	13112.03
-3	109	169	9573.93
-3	88	101	9934.59
-3	104	183	7882.07
-3	85	103	8202.08
-3	361	219	7171.66
-3	278	235	10260.85
-3	268	235	8025.01
-3	146	188	9096.57
-3	283	236	9090.54
-3	399	190	6873.99
-3	145	185	6134.20
-3	105	179	6141.86
-3	97	176	6082.70
-3	110	207	4505.63
-3	127	219	5028.42
-3	94	171	6146.80
-4	126	202	55939.36
-4	218	227	41590.82
-4	132	201	41849.38
-4	120	199	45491.74
-4	113	177	27103.64
-4	95	135	33206.37
-4	130	209	36872.91
-4	128	170	30994.56
-4	315	240	38767.19
-4	123	195	32988.47
-4	117	181	40031.76
-4	118	184	36812.77
-4	127	181	29651.66
-4	134	192	28531.76
-4	137	189	35093.95
-4	195	223	30206.57
-4	78	87	30367.18
-4	146	195	26779.82
-4	175	225	28515.74
-4	213	227	30812.06
-4	114	158	31229.97
-4	171	223	26982.37
-4	87	117	27143.89
-4	129	194	29475.93
-4	115	192	28510.64
-4	248	230	22615.54
-4	154	208	26394.30
-4	109	153	26268.78
-4	328	234	26387.65
-4	138	179	20215.40
-4	159	212	24400.22
-4	335	233	21698.80
-4	387	198	24933.29
-4	121	154	18710.45
-4	308	239	22328.27
-4	258	230	18680.93
-4	340	229	15937.72
-4	78	78	18151.49
-4	81	80	24704.83
-4	117	161	24293.65
-4	120	164	24242.78
-4	160	215	23759.44
-4	86	141	10949.28
-4	222	230	22277.61
-4	370	215	18379.39
-4	109	199	18850.01
-4	83	109	15871.12
-4	117	155	15703.14
-4	100	182	17281.91
-4	168	227	17431.67
-4	392	197	15897.67
-4	184	227	11346.34
-4	294	237	10236.84
-4	377	210	15642.67
-4	152	226	9851.10
-4	93	145	12584.04
-4	147	212	14735.83
-4	80	101	11021.47
-4	394	193	14063.18
-4	105	139	12039.57
-4	301	237	11466.69
-4	273	233	8421.28
-4	111	170	14406.46
-4	237	228	9466.36
-4	106	206	14522.55
-4	83	75	11115.23
-4	290	238	12636.07
-4	205	229	12808.78
-4	381	207	11531.86
-4	92	196	9024.83
-4	185	222	11196.17
-4	180	221	8339.93
-4	146	185	7207.70
-4	142	209	11730.52
-4	88	101	10415.08
-4	235	231	11264.22
-4	85	103	5911.48
-4	104	183	8101.94
-4	85	148	7290.63
-4	145	189	9776.95
-4	361	219	7009.70
-4	282	236	8853.80
-4	121	169	7733.35
-4	107	180	8135.17
-4	266	235	7470.55
-4	79	96	6920.43
-4	152	219	5623.45
-4	149	220	5889.31
-5	126	206	56658.14
-5	126	202	54234.74
-5	218	226	35022.37
-5	119	200	40576.02
-5	133	201	44149.96
-5	115	178	43820.79
-5	124	196	41934.96
-5	117	180	43996.85
-5	130	209	42016.60
-5	136	190	39500.63
-5	316	237	31963.21
-5	97	137	36182.78
-5	127	181	31990.16
-5	119	184	34251.83
-5	114	158	29844.61
-5	146	196	37064.84
-5	128	186	34532.76
-5	176	225	30746.00
-5	196	223	29807.10
-5	213	226	25523.49
-5	128	171	28664.10
-5	152	204	24687.37
-5	329	234	28277.06
-5	78	87	26725.30
-5	81	87	30473.18
-5	172	225	26643.89
-5	120	163	26474.56
-5	387	197	21111.91
-5	86	117	20367.28
-5	335	233	20895.73
-5	324	232	23086.43
-5	339	229	15275.48
-5	129	194	24033.17
-5	123	185	24073.76
-5	77	79	19152.47
-5	169	222	17195.61
-5	132	175	25123.86
-5	81	81	24895.65
-5	109	153	21172.27
-5	117	161	24299.24
-5	307	240	19257.85
-5	370	215	18554.16
-5	222	230	22017.20
-5	104	139	20194.29
-5	248	230	23396.01
-5	257	230	17273.50
-5	116	154	15659.69
-5	114	190	21449.57
-5	158	211	18454.95
-5	83	109	17776.43
-5	84	75	15659.83
-5	158	215	19800.41
-5	109	199	15805.24
-5	101	140	20715.26
-5	143	210	20769.18
-5	88	144	20132.54
-5	93	145	12670.17
-5	228	231	19053.86
-5	393	195	13463.33
-5	80	101	13305.58
-5	105	151	15913.95
-5	137	179	15719.37
-5	167	226	17465.42
-5	293	238	15459.81
-5	377	209	10830.81
-5	185	222	13711.26
-5	108	189	16955.73
-5	185	226	12648.79
-5	153	227	14010.45
-5	101	186	14180.61
-5	298	238	16257.78
-5	121	189	14906.88
-5	151	210	12848.29
-5	274	233	11026.17
-5	93	197	14149.59
-5	234	231	13284.28
-5	236	228	8838.32
-5	106	207	10942.68
-5	381	206	8704.24
-5	238	231	13112.03
-5	109	169	9573.93
-5	88	101	9934.59
-5	104	183	7882.07
-5	85	103	8202.08
-5	361	219	7171.66
-5	278	235	10260.85
-5	268	235	8025.01
-5	146	188	9096.57
-5	283	236	9090.54
-5	399	190	6873.99
-5	145	185	6134.20
-5	105	179	6141.86
-5	97	176	6082.70
-5	110	207	4505.63
-5	127	219	5028.42
-5	94	171	6146.80
Binary file test-data/test_img1.tif has changed