changeset 0:8b5e4ea144a5 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/ipfp_normalisation commit 1facbf5b9d74f0f7cd1f9346acb405a2e327c639
author iuc
date Tue, 04 Feb 2025 09:11:16 +0000
parents
children
files ipfp_normalisation.py ipfp_normalisation.xml test-data/bad-input/input.tsv test-data/medium-input/input.tsv test-data/medium-input/output.tsv test-data/nan-input/input.tsv test-data/nan-input/output.tsv test-data/skip-headers/input.tsv test-data/skip-headers/output.tsv test-data/small-input/input.tsv test-data/small-input/output.tsv
diffstat 11 files changed, 596 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipfp_normalisation.py	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+"""
+IPFP Normalisation
+"""
+import argparse
+import sys
+
+import numpy as np
+
+
+def throw_error(msg, exit_code=1):
+    sys.stderr.write(msg)
+    sys.exit(exit_code)
+
+
+def ipfp(data, precision=1e-5, maxIterations=50):
+    """
+    Return the normalized version of the input data (matrix) as an ndarray
+    :param data:				np.ndArray
+    :param precision:			float		combined allowed deviation (residual error) of col and row means from TARGET (=1)
+    :param maxIterations:		int			maximum amount of iterations (1x row and 1x col per iteration)
+    :return normalizedData:		np.ndArray	normalized data
+    """
+    try:
+        assert isinstance(data, np.ndarray) and data.dtype in ['float64', 'int64']
+        assert precision > 0
+        assert isinstance(maxIterations, int) and maxIterations > 0
+    except AssertionError:
+        throw_error("Invalid input parameters. Please check that the input data consists of floats or integers, precision > 0 and maxIterations is a positive integer.")
+    # replace zeros with nan
+    if (data < 0).any():
+        throw_error("Negative values detected, only use positive values.")
+
+    zeros = (data == 0)
+    if zeros.any():
+        print("Zero values detected; replacing with NA.")
+        data = data.astype(float)
+        data[zeros] = np.nan
+
+    # initialize variables
+    Nrows, Ncols = data.shape
+    convergenceTrail = np.asarray([np.nan] * (2 * maxIterations))
+    convergence = np.inf
+    normalized_data = data
+    TARGET = 1
+
+    i = 0  # number of current iteration
+    # without reshaping the ndarrays, they have shape (x,) (no second value) and the procedure fails.
+    # main loop; iterates until convergence is reached (i.e., L1-norm below variable <h>) or the maximum number of
+    # iteration cycles is surpassed.
+    while convergence > precision and i < maxIterations:
+        # fit the rows
+        Ri = TARGET * np.asarray(1 / np.nanmean(normalized_data, 1)).reshape(Nrows,)
+        normalized_data = (normalized_data.T * Ri).T
+
+        # calculate deviation from column marginals; row deviation is zero at even indices. (index start = 0)
+        convergenceTrail[2 * i] = Nrows * 0.5 * np.nansum(np.abs(np.nanmean(normalized_data, 0) - TARGET))
+
+        # fit the columns
+        Si = TARGET * np.asarray(1 / np.nanmean(normalized_data, 0)).reshape(Ncols,)
+        normalized_data *= Si
+        # calculate deviation from row marginals; column deviation is zero at odd indices. (index start = 0)
+        convergenceTrail[2 * i + 1] = Ncols * 0.5 * np.nansum(np.abs(np.nanmean(normalized_data, 1) - TARGET))
+
+        convergence = convergenceTrail[2 * i + 1]
+        i += 1
+
+    if i == maxIterations:
+        throw_error(f"Max number of IPFP iterations ({maxIterations}) reached. Attained precision: {convergence}.")
+
+    return normalized_data
+
+
+def main():
+    parser = argparse.ArgumentParser(description="IPFP Normalisation")
+    parser.add_argument('-i', '--input', help="Input file", required=True, metavar="FILE")
+    parser.add_argument('-p', '--precision', help="Precision", default=1e-5, type=float)
+    parser.add_argument('-m', '--maxIterations', help="Max iterations", default=50, type=int)
+    parser.add_argument('-s', '--skipHeaders', help="Skip headers, skips the first n lines", default=0, type=int)
+
+    args = parser.parse_args()
+
+    try:
+        data = np.genfromtxt(args.input, skip_header=args.skipHeaders, filling_values=np.nan, delimiter='\t')
+        normalized_data = ipfp(data, args.precision, args.maxIterations)
+        np.savetxt("output.tsv", normalized_data, delimiter='\t')
+
+    except Exception as e:
+        throw_error(str(e))
+
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipfp_normalisation.xml	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,92 @@
+<tool id="ipfp_norm" name="IPFP Normalisation" version="0.1.0+galaxy0" profile="21.05">
+    <requirements>
+        <requirement type="package" version="2.2.2">numpy</requirement>
+    </requirements>
+    <command detect_errors="exit_code"><![CDATA[
+    python '${__tool_directory__}/ipfp_normalisation.py'
+    --input '$input'
+
+    #if $precision:
+        --precision $precision
+    #end if
+
+    #if $maxIterations:
+        --maxIterations $maxIterations
+    #end if
+
+    #if $skipHeaders:
+        --skipHeaders $skipHeaders
+    #end if
+
+    ]]></command>
+    <inputs>
+        <param argument="--input" type="data" format="tsv" label="input" help="Input file"/>
+        <param argument="--precision" type="float" value="1e-05" optional="true" label="precision" help="Precision"/>
+        <param argument="--maxIterations" type="integer" value="50" optional="true" label="maxIterations" help="Max iterations"/>
+        <param argument="--skipHeaders" type="integer" value="0" optional="true" label="skipHeaders" help="Skips the first n lines to skip headers"/>
+    </inputs>
+    <outputs>
+        <data name="output" from_work_dir="output.tsv" format="tsv" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="input" value="small-input/input.tsv"/>
+            <output name="output" file="small-input/output.tsv" />
+        </test>
+        <test>
+            <param name="input" value="medium-input/input.tsv"/>
+            <param name="precision" value="1e-08"/>
+            <param name="maxIterations" value="100"/>
+            <output name="output" file="medium-input/output.tsv" />
+        </test>
+        <!-- Skip headers -->
+        <test>
+            <param name="input" value="skip-headers/input.tsv"/>
+            <param name="skipHeaders" value="1"/>
+            <output name="output" file="skip-headers/output.tsv" />
+        </test>
+        <!-- Unrealistic precision for the amount of iterations -->
+        <test expect_failure="true">
+            <param name="input" value="small-input/input.tsv"/>
+            <param name="precision" value="1e-20"/>
+            <param name="maxIterations" value="20"/>
+        </test>
+        <!-- Invalid precision -->
+        <test expect_failure="true">
+            <param name="input" value="small-input/input.tsv"/>
+            <param name="precision" value="-0.1"/>
+        </test>
+        <!-- Invalid maxIterations -->
+        <test expect_failure="true">
+            <param name="input" value="small-input/input.tsv"/>
+            <param name="maxIterations" value="-1"/>
+        </test>
+        <!-- Negative number in input -->
+        <test expect_failure="true">
+            <param name="input" value="bad-input/input.tsv"/>
+        </test>
+    </tests>
+    <help><![CDATA[
+    This tool normalises a matrix using the Iterative Proportional Fitting Procedure (IPFP).
+
+    The tool takes a matrix consisting of only positive floating point numbers/integers as input and returns the normalized matrix.
+
+    The tool requires a tsv file as input.
+
+    Example input:
+    input.tsv:
+    ```
+    col1        col2        col3
+    1.321       3.1023      0.9324
+    0.0239      1.1045      0.8301
+    0.1234      0.4312      1.2345
+    ...         ...         ...
+    ```
+    precision: 1e-05
+    maxIterations: 50
+    skipHeaders: 1 (skips the first line, which are the headers)
+    ]]></help>
+    <citations>
+        <citation type="doi">10.1016/j.jmb.2021.166966</citation>
+    </citations>
+</tool>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/bad-input/input.tsv	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,30 @@
+4.231400670701204181e-01	6.972447935264126651e-01	1.168054985456667971e-02
+9.560556187078717016e-01	2.704180857650853032e-01	8.541409196649117908e-01
+4.276850068211504041e-01	1.551188174921825924e-01	7.564537460025996252e-01
+2.056109152934415540e-01	3.914207894942801635e-01	1.753352755596826462e-01
+3.000182557735093791e-01	8.889017433960088033e-01	6.655057545851970069e-01
+9.206693992696912687e-02	9.063987221561853325e-01	7.834031964516821045e-01
+9.020067834652161221e-01	4.038305132455564106e-01	8.041233683026974832e-01
+2.609992689923649190e-01	2.290773132661515499e-01	6.407978862117292840e-01
+4.302979163567077769e-01	5.189164739152933858e-01	7.282046345415423838e-01
+3.727612357259043607e-01	5.382837810102580889e-01	6.259649541607605894e-01
+4.096371524566553290e-01	1.638901913879453609e-01	1.678342163833023148e-01
+2.186558515622157861e-01	5.622065063130399221e-01	2.998133176366933883e-01
+4.992189737025926055e-01	1.039042287249525298e-01	9.419866770406133405e-01
+9.458437407968390831e-01	1.128206041554240535e-01	5.962479756357473848e-01
+4.683732310273942545e-01	7.463684803475290064e-01	6.812850751802099758e-01
+1.433214923169910948e-01	3.374908339553078784e-01	6.092897069787208686e-01
+1.685995744922146322e-01	6.905776573689135223e-01	6.877749185223458461e-01
+2.993897822998040636e-01	-5.909985106906043839e-01	5.678634836964767674e-01
+1.508555881146554922e-01	5.982598790549433776e-01	6.545109450209030122e-02
+1.724739676503597163e-01	5.409229376781971022e-01	2.472459999727213420e-01
+6.565667028105197645e-01	9.583626457707581370e-01	3.649899950922246283e-01
+7.426180877158538030e-01	5.220924947800742455e-01	8.818388121134798086e-01
+6.653679005411207159e-01	2.235211047762991621e-01	4.914949879570088553e-01
+5.351554433048275605e-01	7.170776681718373791e-01	5.641381280847517221e-01
+7.644886789172464781e-01	3.440158136066440164e-01	8.953187419474518682e-01
+4.427103390772796354e-01	6.924506590460971500e-01	8.952268703526516935e-01
+6.967418840845805983e-01	1.774238958422759138e-01	5.270121234373810193e-01
+6.721491722408921010e-01	6.784908515221647063e-01	3.976999198521171675e-01
+1.994366196124827129e-01	1.813519271551978784e-01	1.178064990376457288e-01
+1.413991789112177822e-01	6.509831022834017267e-01	3.659049634212959701e-01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/medium-input/input.tsv	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,100 @@
+3.343700618917367917e-01	8.113348791340055932e-01	9.345150879039353375e-01	4.631524747223738636e-01	4.559074706322996384e-01	5.651309695259111310e-01	1.006509013324173862e-01	6.183280400096939911e-01
+2.840224951840697454e-02	6.495163751599265511e-01	2.667911093729345984e-01	1.688766549977808173e-01	8.959321557823139992e-01	1.369415168581555875e-02	1.150731843933257004e-01	7.449517065988375819e-02
+1.893110610011201622e-01	2.268458093985152857e-01	9.566378385053464495e-01	3.125787615331199198e-01	6.045202254943559117e-01	1.587658534060683024e-01	1.718142272565961193e-01	4.335154061518481372e-01
+3.188862074647927924e-01	1.014872792129646317e-01	4.043746563899469626e-01	3.150486559430504263e-01	6.622220388770286847e-01	3.940896971263271320e-01	4.633477685497432441e-01	2.695439339616032548e-01
+7.071370251495914250e-01	4.301354284155756158e-01	6.750619086514173528e-01	2.747811493103958780e-01	8.709149101035507101e-01	5.585368933615653120e-02	2.743252346986793100e-01	3.016594156033429730e-01
+5.005837049781598491e-01	5.462954387309216786e-01	7.516783977439851494e-01	1.324633007036241095e-01	9.289819345707504006e-01	3.534313775097246424e-01	4.602889474419541438e-01	4.545629242818731708e-01
+1.258110679610995319e-01	4.581942839037613791e-01	7.523472800363929514e-01	2.111935437062333332e-01	1.540382489436882274e-01	7.921860058410963301e-01	5.555452665314806193e-01	6.384517949079855370e-01
+1.755416631894793911e-01	3.261290994365343421e-01	3.835518676513118841e-01	2.773921029581160047e-01	8.927452496068867260e-01	9.057542523101028697e-01	1.671517094152319416e-01	2.504196322891775184e-01
+3.962374164084294659e-01	2.445993819732316110e-01	5.475670530497998012e-01	9.246741164639236121e-01	9.972954793601848111e-01	8.335268548699987790e-01	9.685095036587307860e-01	6.718465150569260524e-01
+9.803885183924415658e-01	8.375791121671780637e-01	2.479780960360304931e-01	5.293980936286754035e-01	9.705117414234214479e-01	3.260472750923861796e-01	1.897340336454566012e-01	5.948983198551088813e-01
+8.611426833603827991e-01	4.379383356182871001e-01	2.597861793819314924e-01	5.879481045673178308e-01	1.365743328739197349e-01	3.544916568652690669e-01	3.680720503912880970e-01	6.238179402621197855e-01
+3.035836470702233392e-01	3.072076526608145119e-01	3.687127308364197553e-01	4.694412497640514381e-01	1.368097889036723469e-01	7.203408251872872592e-01	2.821815470815602911e-01	2.826033285708382525e-01
+8.449200063853256060e-01	4.193997225953487451e-01	3.282715064460068888e-01	2.098517960240458002e-01	6.657496802997959762e-01	9.494080889796319145e-02	2.287291528467416679e-01	6.601137326597610322e-01
+1.905387569387113622e-01	6.670296503291905932e-02	2.388918644151492021e-01	1.722177512219514872e-01	8.523123629106557075e-01	2.509518521512010825e-01	6.993084523949782971e-01	8.075273702241070328e-01
+8.166600964763814918e-02	7.348046023988898945e-01	4.856107230166277766e-01	2.973264687640833071e-01	9.188574859155721475e-01	4.589336431832591323e-01	4.011048326712484124e-01	3.721427122445182256e-01
+8.733966037960161355e-01	3.421158356725385596e-01	4.493426809554413870e-01	2.480858684274711567e-02	3.182582970882958939e-01	3.329015209730606939e-01	4.832704478805278647e-01	2.305614450103365964e-02
+8.132899400262617595e-01	5.880133461469539968e-01	9.111175502507884438e-02	9.393792124415456524e-02	5.065823424739440695e-01	9.914194162053181492e-01	7.592323431654509625e-01	7.455658927026683758e-01
+4.048991402823904906e-01	1.566571254659517853e-01	7.356797120688123304e-01	5.390764411230588582e-01	6.597270676940375500e-01	2.747329651770501480e-01	2.590279732737785778e-01	2.656366122090436654e-02
+3.558225087757248550e-01	1.813119094716471036e-01	3.457520162614969861e-01	8.594787589862356025e-01	1.664835460341245188e-01	9.989625154804612217e-01	8.718685882999562820e-01	1.989111814524682220e-01
+8.199298565465782396e-01	4.664569464295716950e-01	4.879541483588426543e-01	6.426990693171609204e-01	2.972826351721451488e-01	8.411025461192255248e-01	5.442935982362554492e-01	4.384784622938131537e-02
+5.159107825318401952e-01	6.813746872191452919e-01	5.194630166653074754e-01	1.428279330890819265e-01	5.375868132316083958e-01	7.295976712263987363e-01	3.237862760735589207e-01	7.183222099565220731e-01
+5.889685247803699841e-01	2.898307278704522760e-01	4.361028428255788736e-01	6.527009654548986406e-01	4.032068727861040092e-01	3.549094238570170701e-01	1.310447687011675466e-01	6.115868038655447592e-02
+7.825431109915610417e-01	3.728689731571950272e-01	5.848107366071286783e-02	1.035860272060310505e-01	4.362523694860986900e-02	2.673296719270799038e-01	4.911938765049509437e-01	5.437084837374693835e-01
+5.226447607474907775e-01	2.687116912799814017e-02	5.352796373201504920e-01	7.744943504245273003e-01	8.730042057400766442e-01	8.459350849356210844e-01	8.020002448867173950e-01	1.188718625100246840e-01
+4.035095685026268697e-01	9.819898166988316746e-02	2.967922809547259844e-01	1.148468560400244254e-01	1.330597858411565193e-01	7.528444255016767395e-01	9.657072440116940548e-01	3.675192883906898134e-01
+1.806920952290325122e-01	7.785019865243507642e-01	9.386220567436667217e-01	5.220504429072574393e-01	6.709786977369869287e-02	3.964642959643401854e-01	5.205520642340891735e-01	9.685413864492746772e-01
+3.399065223759256682e-01	3.437303339733954743e-02	8.994839627245174718e-01	3.156992358240954255e-01	4.268464744908029296e-02	7.119949730688973633e-01	2.384576852434607819e-01	9.244344398412818187e-03
+6.788520471854354588e-01	7.808127190135548679e-01	2.783293428013579041e-01	8.235003024884131051e-01	3.824337268392179467e-01	5.927819823573886593e-01	5.004667276717065239e-01	8.298568292390072765e-01
+8.422112378109881670e-01	8.695066550233059299e-01	7.074877348993513504e-02	1.059868787196414086e-01	1.497989989390239307e-01	7.015884809567798364e-01	4.575195676645470444e-01	5.934803057963589090e-01
+1.537136679525833438e-01	6.501927967270718645e-01	1.492177482701765312e-01	4.947259047886304328e-01	6.936800533304157135e-01	2.482514946938367828e-01	6.937125454965641369e-01	3.352649440362825972e-01
+5.373673219722147065e-01	7.891490185240700450e-01	7.238521048640199629e-01	7.326419945673913192e-01	2.956982783892733169e-01	4.327383213479187862e-01	4.018784945529469965e-01	7.015032893977802830e-01
+4.679621942812955959e-01	7.491655496992738472e-01	5.569497665945647435e-01	1.900072169681435996e-01	7.356478485857745886e-01	9.467908010276945285e-01	2.023474319208105054e-01	2.665176933562499739e-01
+5.356447856011801179e-01	5.710012319212479648e-01	1.799976911156506709e-01	4.380203289191375582e-02	3.295003040852314546e-01	4.837541971015867359e-01	2.341050800935899900e-01	7.396784343999183164e-01
+5.827110918754628832e-01	1.736749817473492996e-01	3.054709389407929132e-01	1.835652645233376568e-02	8.704201036411571835e-01	4.175560301905589800e-02	6.650064379026126016e-01	1.795918674079746147e-01
+2.594864689487766940e-01	9.222852845425731916e-01	3.357651858017784985e-02	6.496195400519704233e-01	8.850295688962700469e-01	9.816645315041638842e-02	2.283267233224043347e-01	7.725328508167667030e-01
+3.631969708413583797e-01	1.203753118846605519e-01	4.659299754092621759e-01	2.686090962397542636e-01	9.170671155915003370e-01	9.521544755782708203e-01	4.105130028262661268e-01	2.100693808107871874e-01
+3.765068506865640874e-01	6.578033862473796622e-01	5.638351658816802559e-01	2.577249886021155678e-01	4.333070882222536113e-01	1.289401227599932254e-01	7.477045920837001036e-01	9.306975781898388922e-01
+7.245503073257920645e-01	3.280704449880321727e-01	3.530660458116080536e-01	9.632857453633750788e-01	5.621218732069143131e-01	4.320626739444636266e-01	2.393869628004844374e-01	7.777654803893190305e-01
+8.205580736436102196e-01	8.280728371035290802e-01	2.416460580715062978e-01	9.721662109912142524e-01	7.468432960590853931e-01	5.993699220274119055e-01	2.166179652941893075e-01	2.118195556775627209e-01
+1.081946311205800315e-01	1.523340817862857133e-01	3.965633874447038743e-01	3.643184864276983737e-01	1.159100203286704822e-01	2.795964187358638275e-01	7.944464559003686643e-01	5.788027972947912270e-01
+6.918123974154877232e-02	1.540574237501024513e-01	5.927073097338616536e-01	8.588364337630600698e-01	8.545629132423170349e-01	8.370029056147649804e-01	4.974846069991096797e-01	6.251588749929648525e-01
+8.596899553090384671e-01	3.517796738412009017e-01	4.634748768130864116e-01	3.425417931854302100e-02	1.753585115701767894e-01	3.459583450155346851e-01	4.524017525712915599e-01	8.168329598776165046e-01
+5.675404147580123126e-01	3.578507547233330532e-01	3.453119703417656394e-01	3.868539679556138866e-01	5.907962068867620431e-01	5.570981539201516064e-01	2.684888955200868121e-01	3.055081458793256211e-01
+6.273079207811931290e-01	7.455362153433187089e-01	3.225949570219678320e-01	7.496401556505953856e-01	5.797345622542582344e-02	1.869619443192446218e-01	8.670381741084869365e-01	6.162673088832482104e-01
+2.252955304399140157e-01	8.714024941638224275e-01	2.171658140979927376e-01	5.058501401283596044e-01	7.378746114230507747e-01	7.078209559430976849e-01	5.077695726710762525e-01	9.193587477354547843e-03
+8.568094144614888386e-01	8.118968525107435052e-01	1.308447592639162549e-01	8.845675519684709220e-01	4.954486276537227729e-01	8.722366741787690447e-01	3.126649433104699005e-01	4.697360467166179498e-01
+1.388920516255846005e-01	6.032226969251661686e-01	1.249548338044639273e-01	6.326119925789441822e-02	3.723391915117046924e-02	4.198089005877970736e-01	2.285475216062271553e-02	1.878941409754375513e-01
+8.668719718352734249e-01	9.806370007592529747e-01	9.309600758842394574e-01	6.622345581032370587e-01	3.278911868430415266e-01	9.406420910851509554e-01	5.790257894885448842e-01	9.247897093588234307e-01
+8.963867621709575850e-01	4.790974916218815327e-02	5.197350966730011068e-01	2.037016905222369667e-01	4.543886240878092231e-02	1.930367854850625342e-01	3.904015340924071875e-01	5.704714980118791301e-01
+3.066378816184957001e-01	2.276057609268508086e-01	3.231186714047534769e-01	7.914358431125686488e-01	1.355318446667497234e-01	4.615611593357429321e-01	2.740794993023010218e-02	5.385124785923323110e-02
+5.970680065773563694e-01	6.316830211531856420e-01	4.022645253693536427e-01	5.851117365699605166e-01	1.347865677944466434e-01	6.518139920600092285e-01	5.649587773025165349e-01	3.187419870498963137e-01
+8.091514106657232697e-01	7.575225481285063900e-02	9.768468539100139125e-01	2.985589427794386186e-01	4.460594719404271657e-01	1.228463412477095451e-01	6.818657559402918622e-03	5.368024872812240389e-01
+3.097931586313455998e-01	6.817021263805789211e-01	9.625014267651074151e-01	9.884878718804741560e-01	8.948471988362060037e-01	2.653794694511933949e-01	6.963886551781832690e-01	7.980051953442369728e-01
+9.415043537886742531e-01	8.619590627601068089e-01	9.342630443748880520e-01	1.166428410962369044e-01	3.542625229276974430e-01	5.933024456078821451e-01	2.500199350353559113e-01	5.720950447406908390e-01
+3.830906063810730622e-01	5.629101409465986361e-01	6.422996015475783693e-01	1.276323813366417870e-01	6.249758168328923835e-01	3.056915146436931519e-01	7.163517387611433307e-01	4.497413385614057457e-02
+7.297186706956751978e-01	2.471477794676819606e-01	9.388230788170849328e-01	5.439964795261390540e-01	5.990584325614759509e-01	1.122423290763125969e-01	7.486336159659670031e-01	5.375670768847451431e-02
+4.647004382772540465e-01	1.095951841570711460e-01	9.661483476519492353e-01	4.268983188844409637e-01	4.134714440125495383e-01	3.068519833128061647e-01	3.144720586706017951e-01	5.988578656766426755e-01
+9.398219957138475023e-01	4.033900160525323297e-01	3.369477834893840340e-01	5.739351970501328504e-01	7.154546328567248370e-01	3.383412216272521089e-01	9.570315096091472906e-01	5.720115953220444860e-01
+3.597383081074405631e-01	7.660553711525477372e-01	9.197233720456166051e-01	6.750566605718799629e-02	3.507747523439762594e-01	1.762390531238322566e-02	7.683168988842016267e-01	8.228214975150752730e-01
+2.224144187897209024e-01	3.548750189909440911e-01	2.300183199341157003e-01	2.885867163099908872e-03	9.611095105343623324e-01	3.123452938067122764e-01	7.196284357711810742e-01	3.311856892671842800e-01
+4.528048817625627276e-01	1.517716403690900773e-01	8.820447473796754201e-01	1.951228345313962276e-01	2.242509583985818900e-02	5.110997134567054623e-01	1.171289486513515943e-02	6.782934156640968437e-01
+2.156065017847959009e-01	7.770006187042755030e-01	1.151521874959221536e-01	5.617456245280237903e-01	5.047612040922517807e-01	4.596999596003454869e-01	5.138289139167510067e-01	5.117629047046541313e-01
+6.683757409917436831e-01	9.584452521223332244e-01	4.867130383504744140e-01	9.099219738650716760e-01	9.174161297284891825e-01	1.009548933629051959e-01	8.393407714566546440e-01	9.515791627604377467e-01
+2.168658030514275525e-01	4.321830320212273202e-01	4.432207430863531750e-01	6.685916279350051505e-01	6.380086816397045890e-01	2.349641718093720133e-01	8.183648208860557771e-01	6.420532104810378060e-01
+5.171468983530425056e-02	8.856242755911952758e-01	4.640666485539701736e-02	1.638728089756968931e-02	8.975560213674053101e-01	8.286983819998984258e-01	4.543368282644204559e-01	4.209446265905550932e-01
+9.860830943861002007e-01	4.498514736963545868e-01	6.268528415357321748e-01	3.815439095096303523e-01	5.610571465484988085e-01	5.333973150637292271e-01	5.479320940013617802e-01	1.644537132531528334e-01
+1.526870263769408709e-02	4.495735899055530727e-01	2.695276129017465383e-02	1.014070960461996851e-01	1.680619827802691812e-01	3.226891356089123253e-01	7.771357418462939703e-01	1.849008378933650887e-01
+3.073922311791081885e-01	4.192661009586443610e-01	8.890400767499406776e-01	8.450855924454491186e-01	4.489671284064240542e-01	8.698647368460433738e-01	9.118677472199049339e-01	2.601027102325281781e-02
+2.498217110573942579e-01	7.375801113367959072e-01	1.482445459680504785e-01	7.925725003436661087e-01	9.914375973884594906e-01	2.925398865461952269e-01	8.099206607676803227e-01	1.077266904523052071e-01
+6.581057735085237281e-01	6.025447753173125420e-01	9.803309958177824912e-01	5.515549636834599090e-01	5.719963997309103210e-01	2.355979979949258674e-01	4.678735237172474415e-01	7.951213393036187238e-01
+4.579553948678688480e-01	7.083466831653683071e-01	6.943092899343267232e-01	5.628470822285513986e-01	5.041183883229488627e-01	4.922475492765877592e-01	7.112269656671759144e-01	7.527825523085366344e-01
+8.904152078304561346e-02	4.851452467551536918e-01	4.961684233945652389e-01	7.227630094369027480e-01	7.941192620303402228e-01	6.862738307243544389e-01	2.875528137088578795e-03	8.887272802248467052e-01
+2.027268222673047626e-01	1.864589517445699451e-01	3.164517650319575992e-02	7.348886111799766141e-01	8.891364634357682428e-01	5.007840587035868873e-01	5.708660974381420949e-01	1.558023300449833393e-01
+1.836197432645331196e-01	9.233909544890370746e-01	9.672335696313063558e-01	1.318036430338809240e-01	6.464277460772708261e-01	5.829176273377223438e-02	8.128731213150902635e-01	2.910847215351848316e-01
+4.584693242309511030e-01	6.235223455839221662e-01	9.145897912583158540e-01	4.371206303352970224e-03	6.609404887464986889e-01	3.754657950915659681e-01	4.610065859356806683e-01	9.573868276963984902e-01
+4.670995075200443658e-01	8.995960231233040005e-01	9.286792396085093992e-01	3.377687993055877858e-01	4.185749801261525738e-01	7.233549960223029096e-02	1.228907699520034313e-01	8.130293051142654104e-01
+7.112413723998651793e-01	2.212722738267847156e-02	3.914754115133126655e-01	7.336988716426550150e-01	6.707949451911210392e-01	2.608685273235705759e-01	7.988357251546289728e-01	9.089420988648369004e-01
+9.362331851906711133e-01	2.767797552673270101e-01	3.248617744277900732e-01	1.598846300335792225e-01	5.038093510865794267e-01	2.920870412668601368e-01	1.881850541157747969e-02	7.634825192208336553e-01
+5.492030659996813835e-01	5.333912395972560949e-01	7.085246231959548835e-01	9.889101262423849459e-01	6.059405850373511537e-02	6.045216130463650916e-01	7.411768075143481127e-01	6.196081995827146249e-01
+5.269797132776219417e-01	5.152505308871397904e-01	4.983095294844348544e-01	6.585263452991433342e-01	9.290777025928824706e-01	3.573732915698895063e-01	3.725969575933809619e-01	9.086898250429096269e-01
+2.230401946213855791e-02	5.511167468731759111e-01	6.778296137261515808e-01	9.476451689257890942e-01	8.352333886111484862e-02	5.692240996028005151e-01	8.252714986422522436e-01	5.939648582605467908e-01
+6.044899117089345131e-01	6.344947089201169454e-02	8.658534417171168673e-01	8.309207095970582158e-01	9.320621377649057626e-01	4.385696518319281978e-01	3.684560686662246010e-01	2.301560535404708618e-01
+8.711158583457317972e-01	2.135676840987010827e-02	6.154683902546649321e-01	5.790833939798749608e-01	7.029750169525454950e-01	6.741751246096941985e-01	1.049725673825600003e-01	1.721239201010347220e-01
+4.475948664413829103e-01	3.380600903837258642e-01	8.336913152741829425e-01	2.836777308020316246e-01	6.561617461922398808e-01	7.182398096317532676e-02	6.638656676807999091e-01	9.889485713382989429e-01
+9.970295092289638283e-02	3.711203511544238776e-01	4.236922679970946959e-01	8.857443931755341060e-01	4.682554351888846833e-01	1.379407091558269016e-01	7.032162321078115896e-01	8.280288774265611718e-01
+5.257824173197997997e-01	9.362690222440636090e-01	4.956338912811877329e-01	1.963016974964715278e-02	7.282084034891694868e-01	9.284023567482084793e-01	4.187048782951445780e-01	1.667154354525317572e-01
+3.559190829727184591e-01	4.542912392414757417e-01	6.303335375162172349e-01	2.042639661974954279e-02	7.748040158356828133e-02	6.297258051483258789e-01	3.009796698567375195e-01	2.366584213575668727e-01
+8.204890543386224033e-01	8.632118673243632800e-01	9.345323021856817292e-01	2.419352010902064976e-01	6.455514017809544924e-01	1.727561638910907194e-01	7.021079011502225908e-01	8.475262634036084819e-01
+7.543801395963501966e-01	9.740796749668273469e-01	3.690689317717377183e-02	8.275719678133353074e-01	1.705394719341579712e-01	9.599945498682882494e-02	9.282769033854609830e-01	8.978568472020869162e-01
+3.401375920356430882e-01	2.675122630694009018e-01	7.253631799146841308e-01	4.665042268260102265e-01	7.787332440560607028e-01	6.057843860964712279e-01	9.062757616860147580e-01	2.340063523608431062e-01
+8.944657763941082917e-01	1.716576530650798516e-01	3.968419151134316980e-02	6.861924262973515543e-01	4.922795797049059896e-01	4.835132979582880131e-01	8.183583642856079310e-01	3.060354713777990732e-02
+1.677289065078335639e-02	5.473179754397513586e-01	7.104936612180788869e-01	7.363083560258977256e-01	7.113525378564670154e-01	8.213752809740303418e-01	1.161827062823872492e-02	8.323750413293149464e-01
+6.329988596520355060e-01	2.791600974657106882e-01	1.662262001900927100e-01	5.858046826039917665e-01	1.334852592288270356e-01	9.373055376579106923e-01	5.233985934094795844e-01	8.626991821654029780e-01
+1.843458032141579439e-01	5.439812243179042994e-01	9.889654988231978416e-01	9.046426916064090884e-01	4.035450642272191413e-01	1.465477987467944665e-02	3.198825512720645525e-01	7.441648792152292247e-01
+2.843628569091375402e-01	2.629992376559231460e-01	8.563883981564025527e-01	6.145709100801205471e-01	6.640172584313757120e-01	1.285271358127880736e-01	4.156236830240359614e-01	1.257030928764483191e-01
+1.935943818036295339e-01	5.859929651512008064e-01	4.655433239783667299e-01	6.975802715130341447e-02	9.711726451128367410e-01	2.188829222627084459e-01	9.640256213794865525e-01	1.068581159039356798e-01
+4.581732864612467759e-01	8.340016012506963339e-01	7.367025370363962100e-01	6.198202582192986476e-01	6.624862396347275251e-02	8.958976966654973451e-01	9.954902437985890806e-01	1.196633664717050571e-01
+8.724241882763520417e-01	4.633625231012267198e-01	5.339108491225087461e-01	9.591084472847671849e-01	4.089228001634876986e-01	7.510928110940007230e-01	5.307786633632389783e-01	2.240499908986105515e-01
+9.627605301098967061e-01	1.000098623796528141e-01	7.036185930984296677e-01	1.074808558906417133e-01	8.606382400077690065e-01	7.552477171798165356e-01	7.274601516952922120e-01	5.574651404332113813e-01
+4.433241249133741402e-01	8.460906189664096910e-01	5.985880220498489557e-01	5.493685730318246252e-01	8.445130056962889542e-01	2.235819474079103752e-01	8.251377116339078110e-01	6.662081494682047245e-01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/medium-input/output.tsv	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,100 @@
+6.260662423106535535e-01	1.524887333930107891e+00	1.636894364954784908e+00	9.534823759140125254e-01	7.777904882237156592e-01	1.103577465211500019e+00	1.828989286434621886e-01	1.194402800812723875e+00
+1.064354834823865031e-01	2.443253403563385717e+00	9.352904207393186731e-01	6.958235071370608704e-01	3.059157523069105711e+00	5.352166896168863985e-02	4.185124883957822561e-01	2.880055045970961736e-01
+5.071938283430243999e-01	6.100612503736918546e-01	2.397656478432312888e+00	9.207743580532321559e-01	1.475712730961514119e+00	4.436248725413152738e-01	4.467429273115088306e-01	1.198233553971345344e+00
+8.834605456432442772e-01	2.822329675881941613e-01	1.048037415004819950e+00	9.596764430866304707e-01	1.671660464257316292e+00	1.138694752779329189e+00	1.245830879436621519e+00	7.704065322001962812e-01
+1.615490114582019299e+00	9.863945217919819486e-01	1.442732334271225936e+00	6.902134895771802059e-01	1.812881724586432597e+00	1.330801885170614096e-01	6.082289377488294679e-01	7.109786889063081095e-01
+9.940805096338916069e-01	1.088973054999595957e+00	1.396427376810878140e+00	2.892252483493024107e-01	1.680912615512207386e+00	7.319994733374608487e-01	8.871069646088772798e-01	9.312747567279126004e-01
+2.730453768400197267e-01	9.981834259764956752e-01	1.527480829497189108e+00	5.039557393850377931e-01	3.046053796416711701e-01	1.793097724575097418e+00	1.170135140295111675e+00	1.429496383797861370e+00
+4.197847466687382734e-01	7.828538744656359238e-01	8.580487867091840526e-01	7.293505549405370214e-01	1.945212315880147091e+00	2.259007336679042854e+00	3.879340131197580588e-01	6.178083715388495989e-01
+5.679015924093875345e-01	3.518987041035506746e-01	7.341695139258449521e-01	1.457142696077054378e+00	1.302370262113086374e+00	1.245942540987419855e+00	1.347169002740285393e+00	9.934056876477307396e-01
+1.684004907590734845e+00	1.444161235849159564e+00	3.984739107085444321e-01	9.998233818522748173e-01	1.518934154709371542e+00	5.840990850347825836e-01	3.162940102694656863e-01	1.054209313976296025e+00
+1.869424955388639509e+00	9.543124558230038357e-01	5.275825192842545919e-01	1.403355477389838679e+00	2.701438127929193245e-01	8.026011040762355275e-01	7.754724118967846191e-01	1.397107263364716134e+00
+8.333400225491112145e-01	8.464876083525055828e-01	9.468331039771183955e-01	1.416840276121563713e+00	3.421795543099768744e-01	2.062256635596919629e+00	7.517493614211798736e-01	8.003134377000580280e-01
+1.980845705053990491e+00	9.869789773706824088e-01	7.199621699070712921e-01	5.409330595782843032e-01	1.422129150352609894e+00	2.321393674522503614e-01	5.204238217204103512e-01	1.596587748550086783e+00
+4.733243860276685755e-01	1.663280135792251646e-01	5.551602300846610882e-01	4.703804315204037634e-01	1.929156044838635342e+00	6.501697695854313785e-01	1.685950897176192065e+00	2.069530227161819447e+00
+1.770765003784900704e-01	1.599322957434187398e+00	9.850296363927099064e-01	7.088411917627196468e-01	1.815351673755039252e+00	1.037839760930164612e+00	8.440692536778210409e-01	8.324690256473180616e-01
+2.500391349190613344e+00	9.831377558222472723e-01	1.203415485156630993e+00	7.808979718481456889e-02	8.301742165321654987e-01	9.939695562440449272e-01	1.342725754818879569e+00	6.809608505360831288e-02
+1.416374823920011794e+00	1.027932720662224186e+00	1.484392136536779316e-01	1.798744683010785050e-01	8.038515686359086754e-01	1.800740087593484251e+00	1.283240596750704787e+00	1.339546520486716519e+00
+1.076311733596298614e+00	4.180094330650535039e-01	1.829453748811742386e+00	1.575568727988075013e+00	1.597896114233158027e+00	7.616629111167537713e-01	6.682492489558786719e-01	7.284808223705228902e-02
+7.026524776563871644e-01	3.594001095653271971e-01	6.387241257303820641e-01	1.866113661088050435e+00	2.995515006963848648e-01	2.057392590802483490e+00	1.670932042788848104e+00	4.052334917058952324e-01
+1.571930039775518040e+00	8.976618872976043217e-01	8.751388454741950707e-01	1.354752506197021811e+00	5.193008961319115491e-01	1.681768736377190487e+00	1.012722200546272822e+00	8.672488822585092128e-02
+9.947840479491272259e-01	1.318818140626395685e+00	9.370230526735290333e-01	3.028050673494406819e-01	9.444866687729805976e-01	1.467230889022174356e+00	6.059171377752231580e-01	1.428934995828433197e+00
+1.606281047505409232e+00	7.934482112809826404e-01	1.112653148694779270e+00	1.957219272773572660e+00	1.001960019788458611e+00	1.009503420634959792e+00	3.468564135615970767e-01	1.720784657804333984e-01
+2.334536381205888578e+00	1.116588959723178842e+00	1.632108947369288743e-01	3.397733642707536084e-01	1.185832066535515705e-01	8.317644487152379140e-01	1.422151649750632796e+00	1.673391094949497226e+00
+9.331652220304009759e-01	4.815963812542815164e-02	8.940753076129521748e-01	1.520428414370275316e+00	1.420238551205383004e+00	1.575251115416942405e+00	1.389719131153653198e+00	2.189626200990912319e-01
+1.031729101062084597e+00	2.520365556339915214e-01	7.099142256038142307e-01	3.228692858494026097e-01	3.099928524642467376e-01	2.007603279153673981e+00	2.396392344833994770e+00	9.694623554138034338e-01
+3.290352266861794606e-01	1.423009097036550319e+00	1.598952021841940185e+00	1.045229095634860883e+00	1.113281500177927957e-01	7.529534708454936887e-01	9.199580140941560069e-01	1.819534923843782792e+00
+1.051768125298089940e+00	1.067635671231291633e-01	2.603726515950290921e+00	1.074063150835202984e+00	1.203442162872841587e-01	2.297726054200244672e+00	7.160979365373363326e-01	2.951043380923046300e-02
+1.100027728978102637e+00	1.270047865193449033e+00	4.219188507223764484e-01	1.467195692608980195e+00	5.646478827046587101e-01	1.001807572532477320e+00	7.870535862611587330e-01	1.387300821007612983e+00
+1.762757865071204577e+00	1.826792619628732739e+00	1.385262184816468400e-01	2.439043304297625891e-01	2.856758693534294791e-01	1.531492568084829475e+00	9.293555436407240355e-01	1.281494985315702051e+00
+3.616772655158986827e-01	1.535661821557115836e+00	3.284510399387614021e-01	1.279879713975671018e+00	1.487171139131853836e+00	6.092021273360161970e-01	1.584122873319150804e+00	8.138340192072816004e-01
+9.251584924451490277e-01	1.363793501014154197e+00	1.165832513571358531e+00	1.386859529266327051e+00	4.638597615114695705e-01	7.770179606430539510e-01	6.714910758444357919e-01	1.245987165710203293e+00
+9.178013604196544328e-01	1.474892731923109546e+00	1.021869387940393059e+00	4.097356994511237027e-01	1.314622058150399342e+00	1.936657279838428725e+00	3.851556002269050927e-01	5.392658820513777096e-01
+1.373264613862467787e+00	1.469464511361221026e+00	4.317036461766104449e-01	1.234716905203558646e-01	7.697083271975306840e-01	1.293489502511184774e+00	5.824904071557502894e-01	1.956407301209800442e+00
+1.707386074332197579e+00	5.108112115622573945e-01	8.373167602131628140e-01	5.913774141944324464e-02	2.323808739134543000e+00	1.276009843283479328e-01	1.891058183736556542e+00	5.428803052399375773e-01
+5.380311794611595255e-01	1.919564529234300432e+00	6.512831261040875896e-02	1.480974521848076764e+00	1.672027923961491469e+00	2.122836969607022339e-01	4.594624920487170860e-01	1.652527343851448283e+00
+7.940892087896685991e-01	2.641856419943767742e-01	9.529917973854424851e-01	6.457190091606748172e-01	1.826927086021748137e+00	2.171177372742092881e+00	8.710730671477331377e-01	4.738368167642144635e-01
+7.413828174455967535e-01	1.300200855412667389e+00	1.038635654763986560e+00	5.579842523802344134e-01	7.774248967334110860e-01	2.648003334470097059e-01	1.428894857468393065e+00	1.890676332329826126e+00
+1.305257705998938311e+00	5.932524460016698198e-01	5.950111568839381304e-01	1.908001158634192285e+00	9.226802469684728392e-01	8.117742751754079000e-01	4.185321334372795188e-01	1.445490876913575473e+00
+1.402337681787121593e+00	1.420550014418945572e+00	3.863353342567079074e-01	1.826751964458309452e+00	1.162962699368209396e+00	1.068314297639433974e+00	3.592843868721708467e-01	3.734636212097804386e-01
+3.093458152732207478e-01	4.372001707753075395e-01	1.060700039600145805e+00	1.145290144067888871e+00	3.019621676562125323e-01	8.337406063695094183e-01	2.204467794077170417e+00	1.707293262182628224e+00
+1.229356936889106078e-01	2.748001691588282114e-01	9.853065586692719702e-01	1.678015218209728765e+00	1.383651487802548985e+00	1.551234432031751043e+00	8.579656388738582384e-01	1.146090801574100482e+00
+1.972671472399033732e+00	8.102673934702107061e-01	9.949025498689354485e-01	8.642159116182392131e-02	3.666340360474427684e-01	8.279374685688942748e-01	1.007483128273502837e+00	1.933682360211149476e+00
+1.347190370647808555e+00	8.526657590507904505e-01	7.668055451880352313e-01	1.009659676823193797e+00	1.277800025687763297e+00	1.379191940565360985e+00	6.185276187527362080e-01	7.481590632905956717e-01
+1.187308781260941748e+00	1.416434062670310468e+00	5.711917382207448712e-01	1.560024899922183961e+00	9.997815516143394865e-02	3.690599674211873515e-01	1.592655036458980433e+00	1.203347358889285346e+00
+4.778066606017979945e-01	1.855082083913372371e+00	4.308563702535935791e-01	1.179552506171445359e+00	1.425854493154909974e+00	1.565610965528159149e+00	1.045121755043409983e+00	2.011516532995163628e-02
+1.394332399666426303e+00	1.326256898708139786e+00	1.991956528286979444e-01	1.582737430348651664e+00	7.346385879145518327e-01	1.480393763943961050e+00	4.938122631078689651e-01	7.886330034996061888e-01
+6.864622962581252708e-01	2.992689628604456864e+00	5.777418016743363083e-01	3.437735792292248016e-01	1.676760615530714371e-01	2.163972574249807934e+00	1.096267157250208207e-01	9.580573427126344299e-01
+1.110291133184210910e+00	1.260767180085014871e+00	1.115461027959469664e+00	9.325873710302008401e-01	3.826526025106025686e-01	1.256513425050605370e+00	7.197479046705360650e-01	1.221979355519595245e+00
+2.503164407560089622e+00	1.342958358835747157e-01	1.357742523881091623e+00	6.254381283796186519e-01	1.156150598086370940e-01	5.622051664069175336e-01	1.058049650111206663e+00	1.643489227984286094e+00
+1.024432480697601733e+00	7.632828299167790931e-01	1.009859656863205890e+00	2.907160628302665195e+00	4.125645429481631377e-01	1.608227943820842887e+00	8.886580465947541141e-02	1.856061128347510636e-01
+1.215236684430805569e+00	1.290568270106081661e+00	7.659320455884195411e-01	1.309397959369345665e+00	2.499635608174520518e-01	1.383635079487802511e+00	1.115974889320991315e+00	6.692915108970085569e-01
+2.008902573224175647e+00	1.887858122376153136e-01	2.268804088583847633e+00	8.149949978059789490e-01	1.009055056036695541e+00	3.180915412399808462e-01	1.642965906209322216e-02	1.374936271813944622e+00
+4.447384793233875588e-01	9.823635540310742265e-01	1.292634373972280315e+00	1.560270900140888983e+00	1.170509073224734298e+00	3.973388405682437008e-01	9.702533773172701270e-01	1.181891401414672638e+00
+1.643325997380105985e+00	1.510194006517519671e+00	1.525499248422103715e+00	2.238490533040519148e-01	5.634036053974297298e-01	1.080036284922529122e+00	4.235226318993823846e-01	1.030169172158312385e+00
+9.233234488937014373e-01	1.361871538538544701e+00	1.448209691056492110e+00	3.382275766768068070e-01	1.372488115352348936e+00	7.684162855605572995e-01	1.675634421367673044e+00	1.118289225362769229e-01
+1.497201220239979369e+00	5.090097905367766407e-01	1.801979748389138436e+00	1.227203493107398291e+00	1.119919785613822549e+00	2.401829632408456483e-01	1.490715029572329930e+00	1.137879692984200275e-01
+1.042016868958514086e+00	2.466822195099293014e-01	2.026688100838765827e+00	1.052499484335787550e+00	8.447733522867764133e-01	7.176148494608598494e-01	6.843595357585767758e-01	1.385365588856116714e+00
+1.561589361526830810e+00	6.728079130750193038e-01	5.237514942141847651e-01	1.048527620312971864e+00	1.083169329669369851e+00	5.863230451222437578e-01	1.543291858360316127e+00	9.805393777164091995e-01
+7.202242496732034205e-01	1.539522083257735208e+00	1.722581225549867812e+00	1.485994008034706715e-01	6.398856873364299203e-01	3.679967790492769120e-02	1.492870131892262142e+00	1.699517543556859689e+00
+5.855803875909194600e-01	9.378723277094230815e-01	5.665359138820668106e-01	8.354023650385336217e-03	2.305629268380920305e+00	8.576683139569467595e-01	1.838791518589718343e+00	8.995682462044874983e-01
+1.245055867670846750e+00	4.189026193456105163e-01	2.268870934469359835e+00	5.899043718678476100e-01	5.618301795113412461e-02	1.465696973374178702e+00	3.125666050514917804e-02	1.924129554837595402e+00
+4.678297798582106148e-01	1.692357396532937930e+00	2.337435509223362851e-01	1.340174925849280330e+00	9.979412979405386519e-01	1.040306448412098073e+00	1.082044547559847691e+00	1.145602052919655334e+00
+9.181400283391810691e-01	1.321600707656119145e+00	6.254644902326023104e-01	1.374320978171403196e+00	1.148279554725103013e+00	1.446360098681712114e-01	1.118992445661734614e+00	1.348565785332251687e+00
+4.248695132966540666e-01	8.499177814785908724e-01	8.123178686133051274e-01	1.440194699034175629e+00	1.138896085701420535e+00	4.800947464065575265e-01	1.556008761786696004e+00	1.297700543673272700e+00
+1.162309664922556579e-01	1.998030650082804227e+00	9.757301325866100938e-02	4.049585776531008235e-02	1.838071948046003046e+00	1.942518798435709071e+00	9.910292170166522530e-01	9.760495488805110975e-01
+1.872672558317382885e+00	8.575554073483780959e-01	1.113667040482630322e+00	7.966886649649733698e-01	9.708417610578357060e-01	1.056476821076509198e+00	1.009893702396194692e+00	3.222040443632204210e-01
+5.993862288664886934e-02	1.771536575033267669e+00	9.898042699061877780e-02	4.376921414926100429e-01	6.011282304172518298e-01	1.321142859315700413e+00	2.960752457952702255e+00	7.488286858965005344e-01
+5.213102242944162024e-01	7.137363475195225293e-01	1.410477390185877811e+00	1.575795415443368874e+00	6.937626543054649098e-01	1.538565166037205723e+00	1.500844859472159731e+00	4.550794275943188111e-02
+4.867506702941648000e-01	1.442548043830153226e+00	2.702069644477119170e-01	1.697896288111885088e+00	1.760089618711488946e+00	5.944595151409278744e-01	1.531508632586380925e+00	2.165402668628660099e-01
+1.090541333394849710e+00	1.002260151727252246e+00	1.519709571274461934e+00	1.004918882597565233e+00	8.636399878585248047e-01	4.071728765810334605e-01	7.524462659341862869e-01	1.359310930627217751e+00
+7.512153504429490702e-01	1.166357933769011312e+00	1.065456406311383608e+00	1.015143581122553540e+00	7.534715018758881833e-01	8.421426284865074496e-01	1.132270207283167185e+00	1.273942390706132022e+00
+1.698519513833826045e-01	9.289545397596324916e-01	8.854183703007749706e-01	1.515896914142323526e+00	1.380246706842599203e+00	1.365325573485258515e+00	5.323486842235061745e-03	1.748982457245881417e+00
+4.952546912906013454e-01	4.572411753508336951e-01	7.232131964208760033e-02	1.973943336389879954e+00	1.979150514932048521e+00	1.275935425413319724e+00	1.353481203097589791e+00	3.926723338848077671e-01
+3.767262801010314854e-01	1.901677491990949820e+00	1.856433244798963544e+00	2.973238414120884521e-01	1.208424572975383304e+00	1.247310403122396383e-01	1.618564073623872890e+00	6.161194547534850630e-01
+8.385963779788184747e-01	1.144825859272824431e+00	1.564986096432909424e+00	8.791030423181097828e-03	1.101534425241357029e+00	7.162652689424425789e-01	8.183713575662894257e-01	1.806629584123481402e+00
+9.283662552158286063e-01	1.794742604721061063e+00	1.726700872158686728e+00	7.381170651428120566e-01	7.580122417562176196e-01	1.499416330954731758e-01	2.370444511302969570e-01	1.667074876764772728e+00
+1.263684219381692619e+00	3.946328723546875528e-02	6.506800250636570748e-01	1.433293665716915966e+00	1.085936297346789647e+00	4.833971125671445712e-01	1.377461982920801908e+00	1.666083409768950085e+00
+2.295135831283014571e+00	6.810882566835233520e-01	7.450139573366355572e-01	4.309499733534426502e-01	1.125339605700555135e+00	7.467882333518138793e-01	4.477236980589809762e-02	1.930911772484751321e+00
+9.005194698170541079e-01	8.779115068850363857e-01	1.086817283333363582e+00	1.782841592962209454e+00	9.052805993108284377e-02	1.033791128706980311e+00	1.179458234247101833e+00	1.048132724137654348e+00
+8.870347860847868082e-01	8.705824570779707727e-01	7.846706017893677609e-01	1.218752973898090897e+00	1.424924354857822095e+00	6.273785433140555146e-01	6.086766626043523809e-01	1.577979620365240976e+00
+4.116048706003221092e-02	1.020905837182289888e+00	1.170197977660509814e+00	1.922821202260215800e+00	1.404423973720620167e-01	1.095573359648053913e+00	1.478069339197772170e+00	1.130829399633766608e+00
+1.126342098127968594e+00	1.186735606512926700e-01	1.509270492807857078e+00	1.702302049813247065e+00	1.582410453177338638e+00	8.522767672705384712e-01	6.662965504778207704e-01	4.424280276817313395e-01
+1.869285894179249841e+00	4.600235403053628408e-02	1.235512080910819099e+00	1.366270525508729738e+00	1.374461936133297923e+00	1.508805809064666770e+00	2.186131185500332363e-01	3.810482816446787990e-01
+8.493092924074534533e-01	6.439014322190574902e-01	1.479883373370868949e+00	5.918365777517762272e-01	1.134448288102004820e+00	1.421382834980028098e-01	1.222535783982990232e+00	1.935946968649103539e+00
+2.019444843478477580e-01	7.545420764799811719e-01	8.028158842033232823e-01	1.972550701668144502e+00	8.641712785547585041e-01	2.913917505542883424e-01	1.382335502120043413e+00	1.730248322067943434e+00
+1.010880475535465450e+00	1.806920782742236664e+00	8.914483386554149513e-01	4.149670222896253285e-02	1.275682076254167852e+00	1.861618982059719984e+00	7.812721840673254592e-01	3.306804584510307232e-01
+1.059405758034907663e+00	1.357344620261239365e+00	1.755185023993608207e+00	6.684956647571674293e-02	2.101338104202281065e-01	1.954894659814573110e+00	8.694584015424136059e-01	7.267281594700171210e-01
+1.274205852822588803e+00	1.345640082989700836e+00	1.357696054095994809e+00	4.131061355933078327e-01	9.134623458041745137e-01	2.798086719977840864e-01	1.058208524860832611e+00	1.357872331819580225e+00
+1.268052280208412652e+00	1.643562044913096987e+00	5.803578129451093803e-02	1.529496417315769907e+00	2.611949911698592253e-01	1.682970467416549376e-01	1.514345772507830201e+00	1.557015665846665176e+00
+6.383852217471039925e-01	5.039838226135164856e-01	1.273576782275271047e+00	9.626746917194736186e-01	1.331710808218696362e+00	1.185788084247972884e+00	1.650779809900288164e+00	4.531007792758162678e-01
+1.967486807689114769e+00	3.790146351246681533e-01	8.165956685106766366e-02	1.659547931806607313e+00	9.866268705289080732e-01	1.109219097037613233e+00	1.746997235805637372e+00	6.944785517418136656e-02
+3.039108884184182208e-02	9.954575967112762047e-01	1.204314697939318446e+00	1.466877520283608183e+00	1.174400553380190448e+00	1.552175370344539562e+00	2.043056723331126978e-02	1.555952605272098221e+00
+1.202854158483585012e+00	5.324858806459089600e-01	2.954955589844737718e-01	1.223935875242039506e+00	2.311193849187546112e-01	1.857599321720684760e+00	9.652575097588353970e-01	1.691252310271481374e+00
+3.587039480492289489e-01	1.062506317137934087e+00	1.800219564892792778e+00	1.935422387205247619e+00	7.154642846627768948e-01	2.974014049089237707e-02	6.040794259196902161e-01	1.493863931639172193e+00
+6.899185621243281163e-01	6.405074114970347177e-01	1.943735517740597496e+00	1.639429479368786025e+00	1.467902957962788912e+00	3.252225158146130890e-01	9.786464815485278468e-01	3.146370739385612736e-01
+4.485198494382933165e-01	1.362780872165482604e+00	1.008998349091168478e+00	1.776965054693923629e-01	2.050115724134634831e+00	5.288854395106104000e-01	2.167594728278198879e+00	2.554085318753113731e-01
+7.716058946346181502e-01	1.409864469467362769e+00	1.160644913594760075e+00	1.147697190771561848e+00	1.016566168008197213e-01	1.573566158976552387e+00	1.627059264952448903e+00	2.079054908187498441e-01
+1.455930514413848798e+00	7.762088038860069927e-01	8.335336377939984720e-01	1.759853214993184256e+00	6.217950979196400496e-01	1.307276247030488170e+00	8.596605521556217600e-01	3.857419318307236389e-01
+1.641346631099818598e+00	1.711471097203262626e-01	1.122175473490078401e+00	2.014693226858040587e-01	1.336890037723805547e+00	1.342864727622078869e+00	1.203626750087759767e+00	9.804799475706394984e-01
+7.168586535655534497e-01	1.373326358038039929e+00	9.054857572178900416e-01	9.767237720819449409e-01	1.244261107565042268e+00	3.770593511820826138e-01	1.294908836976682354e+00	1.111376163355483726e+00
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/nan-input/input.tsv	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,30 @@
+4.231400670701204181e-01	6.972447935264126651e-01	1.168054985456667971e-02
+9.560556187078717016e-01	2.704180857650853032e-01	8.541409196649117908e-01
+4.276850068211504041e-01	1.551188174921825924e-01	7.564537460025996252e-01
+2.056109152934415540e-01	3.914207894942801635e-01	1.753352755596826462e-01
+3.000182557735093791e-01	8.889017433960088033e-01	6.655057545851970069e-01
+9.206693992696912687e-02	9.063987221561853325e-01	7.834031964516821045e-01
+9.020067834652161221e-01	4.038305132455564106e-01	8.041233683026974832e-01
+2.609992689923649190e-01	2.290773132661515499e-01	6.407978862117292840e-01
+4.302979163567077769e-01	5.189164739152933858e-01	7.282046345415423838e-01
+3.727612357259043607e-01	5.382837810102580889e-01	6.259649541607605894e-01
+4.096371524566553290e-01	1.638901913879453609e-01	1.678342163833023148e-01
+2.186558515622157861e-01	5.622065063130399221e-01	2.998133176366933883e-01
+4.992189737025926055e-01	1.039042287249525298e-01	9.419866770406133405e-01
+9.458437407968390831e-01	1.128206041554240535e-01	
+4.683732310273942545e-01	7.463684803475290064e-01	6.812850751802099758e-01
+1.433214923169910948e-01	3.374908339553078784e-01	6.092897069787208686e-01
+1.685995744922146322e-01	6.905776573689135223e-01	6.877749185223458461e-01
+2.993897822998040636e-01	5.909985106906043839e-01	5.678634836964767674e-01
+1.508555881146554922e-01	5.982598790549433776e-01	6.545109450209030122e-02
+1.724739676503597163e-01	5.409229376781971022e-01	2.472459999727213420e-01
+6.565667028105197645e-01	9.583626457707581370e-01	3.649899950922246283e-01
+7.426180877158538030e-01	5.220924947800742455e-01	8.818388121134798086e-01
+6.653679005411207159e-01	2.235211047762991621e-01	4.914949879570088553e-01
+5.351554433048275605e-01	7.170776681718373791e-01	5.641381280847517221e-01
+7.644886789172464781e-01	3.440158136066440164e-01	8.953187419474518682e-01
+4.427103390772796354e-01	6.924506590460971500e-01	8.952268703526516935e-01
+6.967418840845805983e-01	1.774238958422759138e-01	5.270121234373810193e-01
+6.721491722408921010e-01	6.784908515221647063e-01	3.976999198521171675e-01
+1.994366196124827129e-01		                        1.178064990376457288e-01
+1.413991789112177822e-01	6.509831022834017267e-01	3.659049634212959701e-01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/nan-input/output.tsv	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,30 @@
+1.238451123046671709e+00	1.733286680229875198e+00	2.826177063163367795e-02
+1.516069139623520634e+00	3.642184840650264932e-01	1.119713042435520611e+00
+1.082941557910463093e+00	3.336075560892349245e-01	1.583451375310092946e+00
+9.031033546600629736e-01	1.460244491362069130e+00	6.366517667487930909e-01
+5.607192711801572971e-01	1.411048552236049192e+00	1.028231667205588229e+00
+1.829685815836648299e-01	1.529968524289943677e+00	1.287062127894877284e+00
+1.416941468619384636e+00	5.388050243461898203e-01	1.044254004687746651e+00
+7.946737278886979450e-01	5.924095406363826255e-01	1.612916906315922771e+00
+8.763460851844718791e-01	8.976236055509355660e-01	1.226030306370209599e+00
+8.299358519848363258e-01	1.017924286569396042e+00	1.152139752493622327e+00
+1.787287177537208116e+00	6.073490582023632900e-01	6.053643832321136120e-01
+6.948646134989058254e-01	1.517488321465798373e+00	7.876465420724275690e-01
+1.096221566266590841e+00	1.937897848404329104e-01	1.709989242842970381e+00
+1.816017145236336727e+00	1.839837091801540536e-01	nan
+8.436539414830295236e-01	1.141868160662288467e+00	1.014477707818163710e+00
+4.605130642886565706e-01	9.210495923645510841e-01	1.618437133469267541e+00
+3.821034746175552832e-01	1.329313559821668322e+00	1.288582431983404719e+00
+7.067722964650948736e-01	1.185002670010254278e+00	1.108224750384734447e+00
+6.346471713525444480e-01	2.137721987291562264e+00	2.276298536088366964e-01
+6.186991556308228946e-01	1.648093194398743355e+00	7.332070000571625501e-01
+1.111385918914882698e+00	1.377863871007495078e+00	5.107499763213050326e-01
+1.163330239593957538e+00	6.946648806668308529e-01	1.142005151361795035e+00
+1.582288367994578060e+00	4.514739788061359893e-01	9.662382881484504749e-01
+9.968270875280101917e-01	1.134479049444214960e+00	8.686937483600094545e-01
+1.276396016333581018e+00	4.878464926938406165e-01	1.235757960170374092e+00
+7.499661651969031784e-01	9.963254815879537540e-01	1.253708222858260113e+00
+1.629028001317088137e+00	3.523377210157976891e-01	1.018635003906147363e+00
+1.278495203107245848e+00	1.096144552383487181e+00	6.253602858800826336e-01
+1.343796337868724100e+00	nan	                        6.562044299393090530e-01
+4.255568940863548311e-01	1.664067188781326978e+00	9.103751674911713110e-01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/skip-headers/input.tsv	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,31 @@
+header1						header2						header3
+4.231400670701204181e-01 	6.972447935264126651e-01 	1.168054985456667971e-02
+9.560556187078717016e-01 	2.704180857650853032e-01 	8.541409196649117908e-01
+4.276850068211504041e-01 	1.551188174921825924e-01 	7.564537460025996252e-01
+2.056109152934415540e-01 	3.914207894942801635e-01 	1.753352755596826462e-01
+3.000182557735093791e-01 	8.889017433960088033e-01 	6.655057545851970069e-01
+9.206693992696912687e-02 	9.063987221561853325e-01 	7.834031964516821045e-01
+9.020067834652161221e-01 	4.038305132455564106e-01 	8.041233683026974832e-01
+2.609992689923649190e-01 	2.290773132661515499e-01 	6.407978862117292840e-01
+4.302979163567077769e-01 	5.189164739152933858e-01 	7.282046345415423838e-01
+3.727612357259043607e-01 	5.382837810102580889e-01 	6.259649541607605894e-01
+4.096371524566553290e-01 	1.638901913879453609e-01 	1.678342163833023148e-01
+2.186558515622157861e-01 	5.622065063130399221e-01 	2.998133176366933883e-01
+4.992189737025926055e-01 	1.039042287249525298e-01 	9.419866770406133405e-01
+9.458437407968390831e-01 	1.128206041554240535e-01 	5.962479756357473848e-01
+4.683732310273942545e-01 	7.463684803475290064e-01 	6.812850751802099758e-01
+1.433214923169910948e-01 	3.374908339553078784e-01 	6.092897069787208686e-01
+1.685995744922146322e-01 	6.905776573689135223e-01 	6.877749185223458461e-01
+2.993897822998040636e-01 	5.909985106906043839e-01 	5.678634836964767674e-01
+1.508555881146554922e-01 	5.982598790549433776e-01 	6.545109450209030122e-02
+1.724739676503597163e-01 	5.409229376781971022e-01 	2.472459999727213420e-01
+6.565667028105197645e-01 	9.583626457707581370e-01 	3.649899950922246283e-01
+7.426180877158538030e-01 	5.220924947800742455e-01 	8.818388121134798086e-01
+6.653679005411207159e-01 	2.235211047762991621e-01 	4.914949879570088553e-01
+5.351554433048275605e-01 	7.170776681718373791e-01 	5.641381280847517221e-01
+7.644886789172464781e-01 	3.440158136066440164e-01 	8.953187419474518682e-01
+4.427103390772796354e-01 	6.924506590460971500e-01 	8.952268703526516935e-01
+6.967418840845805983e-01 	1.774238958422759138e-01 	5.270121234373810193e-01
+6.721491722408921010e-01 	6.784908515221647063e-01 	3.976999198521171675e-01
+1.994366196124827129e-01 	1.813519271551978784e-01 	1.178064990376457288e-01
+1.413991789112177822e-01 	6.509831022834017267e-01 	3.659049634212959701e-01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/skip-headers/output.tsv	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,30 @@
+1.238802271994421389e+00	1.732866646331113758e+00	2.833085820906559860e-02
+1.514944051032812045e+00	3.637568581186076400e-01	1.121299335164818833e+00
+1.081771160614414251e+00	3.330718114081009373e-01	1.585157252171595976e+00
+9.029205094212741090e-01	1.459181316086391123e+00	6.378980172935116988e-01
+5.604429290841307365e-01	1.409611682284410250e+00	1.029945223815339705e+00
+1.828481637050317354e-01	1.528157788639554759e+00	1.288993817697919431e+00
+1.416010173105141545e+00	5.381678143696415617e-01	1.045822192809435336e+00
+7.938340709941633655e-01	5.914724827111300653e-01	1.614693565774141248e+00
+8.757106707624776609e-01	8.965012037144599599e-01	1.227788150773085007e+00
+8.293956793813973549e-01	1.016726961264114326e+00	1.153877341990019456e+00
+1.786698179553708687e+00	6.068297147167470706e-01	6.064722893412397564e-01
+6.946554003956029177e-01	1.516233889861913209e+00	7.891105193443078702e-01
+1.094910331778548018e+00	1.934562271395225408e-01	1.711633711931943802e+00
+1.847839700973952448e+00	1.871092855935013732e-01	9.650513388114931868e-01
+8.432066917611433787e-01	1.140662828719055666e+00	1.016130422513758624e+00
+4.600511624003348343e-01	9.196420333058372698e-01	1.620306793007374457e+00
+3.818381442749248511e-01	1.327692126409216966e+00	1.290469578896356717e+00
+7.063553039789411958e-01	1.183680907541539540e+00	1.109963707846808756e+00
+6.347810397359161527e-01	2.137048816821788932e+00	2.281697454829023086e-01
+6.185512860806933189e-01	1.646833064661356927e+00	7.346154107716317272e-01
+1.111245555659131190e+00	1.376965568787809735e+00	5.117887598016794826e-01
+1.162515643424361089e+00	6.938135110730451194e-01	1.143670957135836996e+00
+1.581312944100051299e+00	4.509584571618966975e-01	9.677288191087516367e-01
+9.964018763601419915e-01	1.133398952923437175e+00	8.701991267618354176e-01
+1.275369959546302390e+00	4.871980612105015207e-01	1.237432166428948266e+00
+7.494204334635453657e-01	9.950770697250511665e-01	1.255502480968706980e+00
+1.627934081143535883e+00	3.519160123710210475e-01	1.020150162551919371e+00
+1.278165088151270723e+00	1.095285401268141445e+00	6.265494987405105798e-01
+1.326665371441246633e+00	1.024096033361061808e+00	6.492386100591159837e-01
+4.254021256813869112e-01	1.662587472420029799e+00	9.120101447959347851e-01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/small-input/input.tsv	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,30 @@
+4.231400670701204181e-01	6.972447935264126651e-01	1.168054985456667971e-02
+9.560556187078717016e-01	2.704180857650853032e-01	8.541409196649117908e-01
+4.276850068211504041e-01	1.551188174921825924e-01	7.564537460025996252e-01
+2.056109152934415540e-01	3.914207894942801635e-01	1.753352755596826462e-01
+3.000182557735093791e-01	8.889017433960088033e-01	6.655057545851970069e-01
+9.206693992696912687e-02	9.063987221561853325e-01	7.834031964516821045e-01
+9.020067834652161221e-01	4.038305132455564106e-01	8.041233683026974832e-01
+2.609992689923649190e-01	2.290773132661515499e-01	6.407978862117292840e-01
+4.302979163567077769e-01	5.189164739152933858e-01	7.282046345415423838e-01
+3.727612357259043607e-01	5.382837810102580889e-01	6.259649541607605894e-01
+4.096371524566553290e-01	1.638901913879453609e-01	1.678342163833023148e-01
+2.186558515622157861e-01	5.622065063130399221e-01	2.998133176366933883e-01
+4.992189737025926055e-01	1.039042287249525298e-01	9.419866770406133405e-01
+9.458437407968390831e-01	1.128206041554240535e-01	5.962479756357473848e-01
+4.683732310273942545e-01	7.463684803475290064e-01	6.812850751802099758e-01
+1.433214923169910948e-01	3.374908339553078784e-01	6.092897069787208686e-01
+1.685995744922146322e-01	6.905776573689135223e-01	6.877749185223458461e-01
+2.993897822998040636e-01	5.909985106906043839e-01	5.678634836964767674e-01
+1.508555881146554922e-01	5.982598790549433776e-01	6.545109450209030122e-02
+1.724739676503597163e-01	5.409229376781971022e-01	2.472459999727213420e-01
+6.565667028105197645e-01	9.583626457707581370e-01	3.649899950922246283e-01
+7.426180877158538030e-01	5.220924947800742455e-01	8.818388121134798086e-01
+6.653679005411207159e-01	2.235211047762991621e-01	4.914949879570088553e-01
+5.351554433048275605e-01	7.170776681718373791e-01	5.641381280847517221e-01
+7.644886789172464781e-01	3.440158136066440164e-01	8.953187419474518682e-01
+4.427103390772796354e-01	6.924506590460971500e-01	8.952268703526516935e-01
+6.967418840845805983e-01	1.774238958422759138e-01	5.270121234373810193e-01
+6.721491722408921010e-01	6.784908515221647063e-01	3.976999198521171675e-01
+1.994366196124827129e-01	1.813519271551978784e-01	1.178064990376457288e-01
+1.413991789112177822e-01	6.509831022834017267e-01	3.659049634212959701e-01
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/small-input/output.tsv	Tue Feb 04 09:11:16 2025 +0000
@@ -0,0 +1,30 @@
+1.238802271994421389e+00	1.732866646331113758e+00	2.833085820906559860e-02
+1.514944051032812045e+00	3.637568581186076400e-01	1.121299335164818833e+00
+1.081771160614414251e+00	3.330718114081009373e-01	1.585157252171595976e+00
+9.029205094212741090e-01	1.459181316086391123e+00	6.378980172935116988e-01
+5.604429290841307365e-01	1.409611682284410250e+00	1.029945223815339705e+00
+1.828481637050317354e-01	1.528157788639554759e+00	1.288993817697919431e+00
+1.416010173105141545e+00	5.381678143696415617e-01	1.045822192809435336e+00
+7.938340709941633655e-01	5.914724827111300653e-01	1.614693565774141248e+00
+8.757106707624776609e-01	8.965012037144599599e-01	1.227788150773085007e+00
+8.293956793813973549e-01	1.016726961264114326e+00	1.153877341990019456e+00
+1.786698179553708687e+00	6.068297147167470706e-01	6.064722893412397564e-01
+6.946554003956029177e-01	1.516233889861913209e+00	7.891105193443078702e-01
+1.094910331778548018e+00	1.934562271395225408e-01	1.711633711931943802e+00
+1.847839700973952448e+00	1.871092855935013732e-01	9.650513388114931868e-01
+8.432066917611433787e-01	1.140662828719055666e+00	1.016130422513758624e+00
+4.600511624003348343e-01	9.196420333058372698e-01	1.620306793007374457e+00
+3.818381442749248511e-01	1.327692126409216966e+00	1.290469578896356717e+00
+7.063553039789411958e-01	1.183680907541539540e+00	1.109963707846808756e+00
+6.347810397359161527e-01	2.137048816821788932e+00	2.281697454829023086e-01
+6.185512860806933189e-01	1.646833064661356927e+00	7.346154107716317272e-01
+1.111245555659131190e+00	1.376965568787809735e+00	5.117887598016794826e-01
+1.162515643424361089e+00	6.938135110730451194e-01	1.143670957135836996e+00
+1.581312944100051299e+00	4.509584571618966975e-01	9.677288191087516367e-01
+9.964018763601419915e-01	1.133398952923437175e+00	8.701991267618354176e-01
+1.275369959546302390e+00	4.871980612105015207e-01	1.237432166428948266e+00
+7.494204334635453657e-01	9.950770697250511665e-01	1.255502480968706980e+00
+1.627934081143535883e+00	3.519160123710210475e-01	1.020150162551919371e+00
+1.278165088151270723e+00	1.095285401268141445e+00	6.265494987405105798e-01
+1.326665371441246633e+00	1.024096033361061808e+00	6.492386100591159837e-01
+4.254021256813869112e-01	1.662587472420029799e+00	9.120101447959347851e-01