Mercurial > repos > imgteam > spot_detection_2d
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>
--- /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