Repository 'cross_sample'
hg clone https://toolshed.g2.bx.psu.edu/repos/immport-devteam/cross_sample

Changeset 4:e80b0f62ffb3 (2020-07-29)
Previous changeset 3:5f670146a9af (2017-02-27)
Commit message:
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/cross_sample commit e7eab2dca0c1f73f580362f61425a78d4c8892ce"
added:
runCrossSample.py
runCrossSample.xml
test-data/gmfi.flowmfi
test-data/input1.flowtext
test-data/input2.flowtext
test-data/input3.flowtext
test-data/mfi.flowmfi
test-data/out1.flowstat1
test-data/out1.flowstat2
test-data/out1.flowstat3
test-data/out2.flowstat1
test-data/out2.flowstat2
test-data/out2.flowstat3
test-data/run1/input1.flowtext.flowclr
test-data/run1/input2.flowtext.flowclr
test-data/run1/input3.flowtext.flowclr
test-data/run2/input1.flowtext.flowclr
test-data/run2/input2.flowtext.flowclr
test-data/run2/input3.flowtext.flowclr
removed:
cross_sample/runCrossSample.py
cross_sample/runCrossSample.xml
cross_sample/src/README
cross_sample/src/cent_adjust.c
cross_sample/src/find_connected.c
cross_sample/src/flock1.c
cross_sample/src/flock2.c
cross_sample/test-data/gmfi.flowmfi
cross_sample/test-data/input1.flowtext
cross_sample/test-data/input2.flowtext
cross_sample/test-data/input3.flowtext
cross_sample/test-data/mfi.flowmfi
cross_sample/test-data/out1.flowstat1
cross_sample/test-data/out1.flowstat2
cross_sample/test-data/out1.flowstat3
cross_sample/test-data/out2.flowstat1
cross_sample/test-data/out2.flowstat2
cross_sample/test-data/out2.flowstat3
cross_sample/test-data/run1/input1.flowtext.flowclr
cross_sample/test-data/run1/input2.flowtext.flowclr
cross_sample/test-data/run1/input3.flowtext.flowclr
cross_sample/test-data/run2/input1.flowtext.flowclr
cross_sample/test-data/run2/input2.flowtext.flowclr
cross_sample/test-data/run2/input3.flowtext.flowclr
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/runCrossSample.py
--- a/cross_sample/runCrossSample.py Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,224 +0,0 @@\n-#!/usr/bin/env python\n-######################################################################\n-#                  Copyright (c) 2016 Northrop Grumman.\n-#                          All rights reserved.\n-######################################################################\n-from __future__ import print_function\n-import sys\n-import os\n-from scipy.stats import gmean\n-from argparse import ArgumentParser\n-from collections import defaultdict\n-import pandas as pd\n-\n-#\n-# version 1.1 -- April 2016 -- C. Thomas\n-# modified to read in several input files and output to a directory\n-# + generates summary statistics\n-# also checks before running that input files are consistent with centroid file\n-#\n-\n-\n-def compare_MFIs(input_files, f_names, mfi_file):\n-    header_MFIs = ""\n-    flag_error = False\n-    with open(mfi_file, "r") as mfi_check:\n-        mfi_fl = mfi_check.readline().split("\\t")\n-        header_MFIs = "\\t".join([mfi_fl[h] for h in range(1, len(mfi_fl))])\n-\n-    for hh, files in enumerate(input_files):\n-        with open(files, "r") as inf:\n-            hdrs = inf.readline()\n-            if hdrs != header_MFIs:\n-                sys.stderr.write(hdrs + "headers in " + f_names[hh] + " are not consistent with FLOCK centroid file:\\n" + header_MFIs + "\\n")\n-                flag_error = True\n-    if flag_error:\n-        sys.exit(2)\n-\n-\n-def stats_MFIs(cs_df, ctr, mfi_calc):\n-    if mfi_calc == "mfi":\n-        MFIs = cs_df.groupby(\'Population\').mean().round(decimals=2)\n-    elif mfi_calc == "gmfi":\n-        MFIs = cs_df.groupby(\'Population\').agg(lambda x: gmean(list(x))).round(decimals=2)\n-    else:\n-        MFIs = cs_df.groupby(\'Population\').median().round(decimals=2)\n-    pop_freq = (cs_df.Population.value_counts(normalize=True) * 100).round(decimals=2)\n-    sorted_pop_freq = pop_freq.sort_index()\n-    MFIs[\'Percentage\'] = sorted_pop_freq\n-    MFIs[\'Population\'] = MFIs.index\n-    MFIs[\'SampleName\'] = "".join(["Sample", str(ctr).zfill(2)])\n-    return MFIs\n-\n-\n-def get_pop_prop(input_files, summary_stat, mfi_stats, marker_names, mfi_calc):\n-    pop_count = defaultdict(dict)\n-    mrk = marker_names.strip().split("\\t")\n-    markers = "\\t".join([mrk[m] for m in range(1, len(mrk))])\n-\n-    ctr_mfi = 0\n-    nb_pop = 0\n-    tot = {}\n-    with open(mfi_stats, "a") as mfis:\n-        mfis.write("\\t".join([markers, "Percentage", "Population", "SampleName"]) + "\\n")\n-        for files in input_files:\n-            cs = pd.read_table(files)\n-            tot[files] = len(cs.index)\n-            for pops in cs.Population:\n-                if pops in pop_count[files]:\n-                    pop_count[files][pops] += 1\n-                else:\n-                    pop_count[files][pops] = 1\n-            if (len(pop_count[files]) > nb_pop):\n-                nb_pop = len(pop_count[files])\n-            ctr_mfi += 1\n-            cs_stats = stats_MFIs(cs, ctr_mfi, mfi_calc)\n-            cs_stats.to_csv(mfis, sep="\\t", header=False, index=False)\n-\n-    ctr = 0\n-    with open(summary_stat, "w") as outf:\n-        itpop = [str(x) for x in range(1, nb_pop + 1)]\n-        cols = "\\t".join(itpop)\n-        outf.write("FileID\\tSampleName\\t" + cols + "\\n")\n-        for eachfile in pop_count:\n-            tmp = []\n-            for num in range(1, nb_pop + 1):\n-                if num not in pop_count[eachfile]:\n-                    pop_count[eachfile][num] = 0\n-                tmp.append(str((pop_count[eachfile][num] / float(tot[eachfile])) * 100))\n-            props = "\\t".join(tmp)\n-            ctr += 1\n-            sample_name = "".join(["Sample", str(ctr).zfill(2)])\n-            outf.write("\\t".join([input_files[eachfile], sample_name, props]) + "\\n")\n-\n-\n-def run_cross_sample(input_files, f_names, mfi_file, output_dir, summary_stat,\n-                     mfi_stats, tool_directory, mfi_calc):\n-    markers = ""\n-    # Strip off Header Line\n-    with open(mfi_file, "r") as mfi_in, open("mfi.txt", "w") as mfi_out:\n-        markers = mfi_in.readline().str'..b'e in enumerate(input_files):\n-        run_command = tool_directory + "/bin/cent_adjust mfi.txt " + flow_file\n-        print(run_command)\n-        os.system(run_command)\n-        flow_name = os.path.split(flow_file)[1]\n-        outfile = os.path.join(output_dir, flow_name + ".flowclr")\n-        outputs[outfile] = f_names[nm]\n-        with open(flow_file, "r") as flowf, open("population_id.txt", "r") as popf, open(outfile, "w") as outf:\n-            f_line = flowf.readline()\n-            f_line = f_line.rstrip()\n-            f_line = f_line + "\\tPopulation\\n"\n-            outf.write(f_line)\n-\n-            for line in flowf:\n-                line = line.rstrip()\n-                pop_line = popf.readline()\n-                pop_line = pop_line.rstrip()\n-                line = line + "\\t" + pop_line + "\\n"\n-                outf.write(line)\n-    get_pop_prop(outputs, summary_stat, mfi_stats, markers, mfi_calc)\n-    return\n-\n-\n-def generate_CS_stats(mfi_stats, all_stats):\n-    df = pd.read_table(mfi_stats)\n-    means = df.groupby(\'Population\').mean().round(decimals=2)\n-    medians = df.groupby(\'Population\').median().round(decimals=2)\n-    stdev = df.groupby(\'Population\').std().round(decimals=2)\n-    all_markers = []\n-    with open(mfi_stats, "r") as ms:\n-        ms_fl = ms.readline().strip()\n-        all_markers = ms_fl.split("\\t")[0:-2]\n-\n-    with open(all_stats, "w") as mstats:\n-        hdgs = ["\\t".join(["_".join([mrs, "mean"]), "_".join([mrs, "median"]), "_".join([mrs, "stdev"])]) for mrs in all_markers]\n-        mstats.write("Population\\t")\n-        mstats.write("\\t".join(hdgs) + "\\n")\n-        for pops in set(df.Population):\n-            tmp_line = []\n-            for mar in all_markers:\n-                tmp_line.append("\\t".join([str(means.loc[pops, mar]), str(medians.loc[pops, mar]), str(stdev.loc[pops, mar])]))\n-            mstats.write(str(pops) + "\\t")\n-            mstats.write("\\t".join(tmp_line) + "\\n")\n-\n-\n-if __name__ == "__main__":\n-    parser = ArgumentParser(\n-             prog="runCrossSample",\n-             description="Run CrossSample on Flow file")\n-\n-    parser.add_argument(\n-            \'-i\',\n-            dest="input_files",\n-            required=True,\n-            action=\'append\',\n-            help="File locations for flow text files.")\n-\n-    parser.add_argument(\n-            \'-n\',\n-            dest="filenames",\n-            required=True,\n-            action=\'append\',\n-            help="Filenames")\n-\n-    parser.add_argument(\n-            \'-m\',\n-            dest="mfi",\n-            required=True,\n-            help="File location for the MFI text file.")\n-\n-    parser.add_argument(\n-            \'-o\',\n-            dest="out_path",\n-            required=True,\n-            help="Path to the directory for the output files.")\n-\n-    parser.add_argument(\n-            \'-M\',\n-            dest="mfi_calc",\n-            required=True,\n-            help="what to calculate for centroids.")\n-\n-    parser.add_argument(\n-            \'-s\',\n-            dest="sstat",\n-            required=True,\n-            help="File location for the summary statistics.")\n-\n-    parser.add_argument(\n-            \'-S\',\n-            dest="mfi_stat",\n-            required=True,\n-            help="File location for the MFI summary statistics.")\n-\n-    parser.add_argument(\n-            \'-t\',\n-            dest="tool_dir",\n-            required=True,\n-            help="File location for cent_adjust.")\n-\n-    parser.add_argument(\n-            \'-a\',\n-            dest="all_stats",\n-            required=True,\n-            help="File location for stats on all markers.")\n-\n-    args = parser.parse_args()\n-\n-    input_files = [f for f in args.input_files]\n-    input_names = [n for n in args.filenames]\n-    compare_MFIs(input_files, input_names, args.mfi)\n-    run_cross_sample(input_files, input_names, args.mfi, args.out_path, args.sstat, args.mfi_stat, args.tool_dir, args.mfi_calc)\n-    generate_CS_stats(args.mfi_stat, args.all_stats)\n-\n-    sys.exit(0)\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/runCrossSample.xml
--- a/cross_sample/runCrossSample.xml Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,162 +0,0 @@
-<tool id="run_cross_sample" name="Run Cross Sample" version="1.1">
-  <description>using a Flow file that was run using FLOCK</description>
-  <requirements>
-    <requirement type="package" version="0.16.0">scipy</requirement>
-    <requirement type="package" version="0.17.1">pandas</requirement>
-    <requirement type="package" version="1.0">flock</requirement>
-  </requirements>
-  <stdio>
-    <exit_code range="2" level="fatal" description="Columns inconsistencies between files and centroids file. See stderr for more details." />
-  </stdio>
-  <command><![CDATA[
-    python $__tool_directory__/runCrossSample.py -m "${centroid}" -s "${stats}" -S "${mfistats}" -a "${allstats}" -M "${mfi}" -t $__tool_directory__ -o crossSampleOutputs
- #for $f in $input#
-    -i $f
-    -n "${f.name}"
- #end for#
- ]]>
-  </command>
-  <inputs>
-    <param format="flowtext" name="input" type="data_collection" collection_type="list" label="Flowtext files Collection"/>
-    <param format="flowmfi" name="centroid" type="data" label="Centroid file"/>
-    <param name="mfi" type="select" label="Calculate centroids using:">
-      <option value="mfi" selected="true">Mean Fluorescence Intensity</option>
-      <option value="mdfi">Median Fluorescence Intensity</option>
-      <option value="gmfi">Geometric Mean Fluorescence Intensity</option>
-    </param>
-  </inputs>
-  <outputs>
-    <collection type="list" label="CrossSample on ${input.name}" name="output">
-      <discover_datasets pattern="(?P&lt;name&gt;.*)" directory="crossSampleOutputs" format="flowclr" />
-    </collection>
-    <data format="flowstat1" name="stats" label="Population distribution after CrossSample on ${input.name} using ${mfi}"/>
-    <data format="flowstat2" name="mfistats" label="${mfi} centroids of CrossSample on ${input.name} using ${mfi}"/>
-    <data format="flowstat3" name="allstats" label="${mfi} descriptive stats of CrossSample on ${input.name} using ${mfi}"/>
-  </outputs>
-  <tests>
-    <test>
-      <param name="input">
-        <collection type="list">
-          <element name="input1" value="input1.flowtext"/>
-          <element name="input2" value="input2.flowtext"/>
-          <element name="input3" value="input3.flowtext"/>
-        </collection>
-      </param>
-      <param name="centroid" value="mfi.flowmfi"/>
-      <param name="mfi" value="mfi"/>
-      <output name="stats" file="out1.flowstat1" lines_diff="6"/>
-      <output name="allstats" file="out1.flowstat3"/>
-      <output name="mfistats" file="out1.flowstat2" compare="sim_size"/>
-      <output_collection name="output" type="list" count="3">
-        <element name="input1" file="run1/input1.flowtext.flowclr"/>
-        <element name="input2" file="run1/input2.flowtext.flowclr"/>
-        <element name="input3" file="run1/input3.flowtext.flowclr"/>
-      </output_collection>
-    </test>
-    <test>
-      <param name="input">
-        <collection type="list">
-          <element name="input1" value="input1.flowtext"/>
-          <element name="input2" value="input2.flowtext"/>
-          <element name="input3" value="input3.flowtext"/>
-        </collection>
-      </param>
-      <param name="centroid" value="gmfi.flowmfi"/>
-      <param name="mfi" value="gmfi"/>
-      <output name="stats" file="out2.flowstat1" lines_diff="6"/>
-      <output name="allstats" file="out2.flowstat3"/>
-      <output name="mfistats" file="out2.flowstat2" compare="sim_size"/>
-      <output_collection name="output" type="list" count="3">
-        <element name="input1" file="run2/input1.flowtext.flowclr"/>
-        <element name="input2" file="run2/input2.flowtext.flowclr"/>
-        <element name="input3" file="run2/input3.flowtext.flowclr"/>
-      </output_collection>
-    </test>
-  </tests>
-  <help><![CDATA[
-   This tool runs CrossSample using the MFI from FLOCK and text-converted FCS files.
-
------
-
-**Input**
-
-This tool compares text-converted FCS files from a data collection to the MFI generated by a FLOCK run. The same data collection merged and run with FLOCK should be used to ensure consistency in the attribution of events to populations.
-
-.. class:: infomark
-
-The option chosen for the centroids (mean, median or geometric mean) should be the same as used to run FLOCK.
-
-**Output**
-
-Each event within each file of a dataset collection is attributed to a population depending on its intensity profile.
-A table of the population composition of each file is generated as well as MFI and population descriptive statistics.
-
-.. class:: infomark
-
-Tip: If headers in each text-converted FCS file do not match those in the centroid file, the program will not run. Edit the input file using the Remove, rearrange and/or rename columns tool in the Flow File Tools section prior to Cross Sample analysis.
-
------
-
-**Example**
-
-*Input* - fluorescence intensities per marker per event::
-
-   Marker1 Marker2 Marker3
-   33      47      11
-   31      64      11
-   21      62      99
-   14      34      60
-
-*Centroid file* - mean, geometric mean or median fluorescence intensity per marker per population::
-
-   Population Marker1 Marker2 Marker3
-   1          38      49      10
-   2          21      63      100
-   3          31      52      45
-   4          11      78      25
-
-*Output* for each text file - fluorescence intensities per marker and population ID per event::
-
-   Marker1 Marker2 Marker3 Population
-   33      47      11      1
-   31      64      11      6
-   21      62      99      2
-   14      34      60      7
-
-*Summary table* - counts of events in each population in each file::
-
-   Filename SampleName Pop1 Pop2 Pop3 ...
-   File1    Biosample1 255  147  18   ...
-   File2    Biosample2 27   61   965  ...
-   File3    Biosample3 201  546  221  ...
-   File4    Biosample4 11   77   327  ...
-
-*Centroid MFI Summary table* - for each file, mean, median or geometric mean fluorescence intensities per marker per population::
-
-   Marker1 Marker2 Marker3 ... Population Percentage SampleName
-   154     885     24      ... 1          0.2        Biosample1
-   458     74      574     ... 2          0.3        Biosample1
-   3       210     86      ... 3          0.05       Biosample1
-   140     921     19      ... 1          0.1        Biosample2
-   428     79      508     ... 2          0.25       Biosample2
-   9       225     90      ... 3          0.3        Biosample2
-
-*MFI Descriptive Statistics table* - for the set of files, mean, median and standard deviation of each centroid per marker per population, as well as mean, median and standard deviation of the population's proportion::
-
-   Population Marker1_mean Marker1_median Marker1_stdev ... Percentage_mean Percentage_median Percentage_stdev
-   1          94.65        90.86          25.8          ... 1.84            0.55              2.48
-   2          132.18       131.58         5.02          ... 9.89            9.76              0.33
-   3          71.8         69.68          10.53         ... 3.02            1.49              3.45
-   4          84.85        84.85          nan           ... 8.52            8.52              nan
-   5          161.82       132.77         61.29         ... 0.95            0.37              1.06
- ]]>
-  </help>
-  <citations>
-    <citation type="doi">10.1002/cyto.b.20554</citation>
-    <citation type="doi">10.3389/fimmu.2012.00302</citation>
-    <citation type="doi">10.1371/journal.pone.0038408</citation>
-    <citation type="doi">10.1371/journal.ppat.1003076</citation>
-    <citation type="doi">10.1016/j.clim.2012.12.003</citation>
-    <citation type="doi">10.1038/srep02327</citation>
-  </citations>
-</tool>
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/src/README
--- a/cross_sample/src/README Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,139 +0,0 @@
-This package contains R code for converting and transforming a binary
-FCS file, using the FCSTrans software, and the C code for running the
-flock1 and flock2 population identification software.
-
-src - contains the C code for flock1, flock2 and cent_adjust
-bin - contains the compiled C code for flock1, flock2 and cent_adjust,
-      plus the R code for using the FCSTrans algorithm for file
-      conversion and data transformation.
-doc - documentation for FCSTrans and FLOCK algorithms
-example - sample data and output from FCSTrans and FLOCK
-
-To run this software sucessfully the code assumes the software was installed
-in the /usr/local/flock directory and that R, plus the Bioconductor flowCore
-module has been installed. If you use the ipconvert.sh shell script, you
-may need to adjust the location of the RScript executable and the location
-of the FCSTrans.R code by editing the shell script.
-
-#############################################################################
-# Overview
-#############################################################################
-ImmPort-FLOCK
-
-FLOCK (FLOw Clustering without K), an automated population discovery tool for
-multidimensional FCM data was designed to specifically take into account the
-unique feature of FCM data and produce objective segregation of cell
-populations.
-
-FLOCK parameter settings can be customized by defining Bins and Density
-Threshold.  The number of bins is an integer specifying the number of
-equal-sized regions the data will be partitioned into on each axis. Increasing
-the number of bins increases the sensitivity to detect rare populations but
-may also result in single populations being divided.  Density Threshold is the
-cut-off value to separate the dense regions from background. It is a floating
-point number that helps define population centers; increasing the threshold
-may help separate major populations but could cause the algorithm to overlook
-rare populations.
-
-#############################################################################
-# Compiling C code
-#############################################################################
-cd bin
-cc -o flock1 ../src/flock1.c ../src/find_connected.c -lm
-cc -o flock2 ../src/flock2.c -lm
-cc -o cent_adjust ../src/cent_adjust.c -lm
-
-#############################################################################
-# FCSTrans
-#############################################################################
-A shell script named ipconvert.sh is included that runs the FCSTrans R
-code for converting and transforming a binary FCS file. The output consists
-of one text file containing the transformed channel intensity values and
-another file containing a list of the FCS parameters.
-
-cd bin
-/usr/local/flock/bin/ipconvert.sh ../example/data/FCS2.fcs
-/usr/local/flock/bin/ipconvert.sh ../example/data/FCS3.fcs
-
-#############################################################################
-# Running flock1 or flock2
-#############################################################################
-Running the FLOCK1 and FLOCK2 algorithms generate 8 output files that have
-generic file names. For this reason, it is recommended that one output
-directory be created for one input file to the program.
-
-cd example/output/FCS2
-/usr/local/flock/bin/flock1 ../../data/FCS2.txt
-
-cd example/output/FCS3
-/usr/local/flock/bin/flock2 ../../data/FCS3.txt
-
-Files created: MFI.txt, percentage.txt, population_id.txt, profile.txt,
-               flock_results.txt, coordinates.txt, population_center.txt
-               and percentage.txt
-
-Usage Information for FLOCK1
-----------------------------------------------------------------------------
-basic mode: flock1 fcs.txt
-advanced_ mode: flock1 fcs.txt num_bin density_index max_num_pop
-
-Usage Information for FLOCK2
-----------------------------------------------------------------------------
-basic mode: flock data_file
-advanced mode 0 (specify maximum # of pops): flock data_file max_num_pop
-advanced mode 1 (without # of pops): flock data_file num_bin density_index
-advanced mode 2 (specify # of pops): flock data_file num_bin density_index
-                                           number_of_pop
-advanced mode 3 (specify both # of pops): flock data_file num_bin density_index
-                                           number_of_pop max_num_pop
-
-FLOCK Output Files
-----------------------------------------------------------------------------
-coordinates.txt:
-    Output is the intensity values for each marker and event
-
-flock_results.txt:
-    A combination of the input file, event identifiers and population
-    identifiers.
-
-MFI.txt:
-    Provides the mean fluorescence intensity for each population for each
-    marker/parameter
-
-population_id.txt:
-    Contains population identifiers (i.e, values from [1 to n] where n is
-    the population assigned to the  corresponding events in the input data
-    file, one identifier per row.)
-
-population_center.txt:
-    Contains the centroid coordinates for each identified population
-
-percentage.txt:
-    Includes the population identifiers and percentage of events within that
-    population (relative to the whole data file)
-
-profile.txt:
-    Displays an expression profile, where the approximate expression level
-    for each marker is assigned a numeric value from 1-4, for each identified
-    population
-
-fcs_properties.txt:
-    Contains the number of events, number of populations, and number of
-    markers, as well as the algorithm parameters used in the  analysis
-
-#############################################################################
-# Running cent_adjust 
-#############################################################################
-Running the cent_adjust algorithm generates 4 output files that have
-generic file names. For this reason, it is recommened that one output
-directory be created for one input file to the program. 
-
-mkdir example/output/FCS2/cent_adjust
-cd example/output/FCS2/cent_adjust
-/usr/local/flock/bin/cent_adjust ../population_center.txt ../coordinates.txt
-
-Files created: MFI.txt, percentage.txt, population_id.txt and profile.txt
-
-Usage Information for cent_adjust
-----------------------------------------------------------------------------
-basic mode: cent_adjust input_center input_data_file
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/src/cent_adjust.c
--- a/cross_sample/src/cent_adjust.c Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,1009 +0,0 @@\n-/////////////////////////////////////////////////////////\n-//  Cent_adjust version number and modification history\n-//  ImmPort BISC project\n-//  Author: Yu "Max" Qian\n-//  v1.01: Oct 16, 2009\n-//         Line 899 of the main function:\n-//         Changed kmean_term=1 to kmean_term=2\n-//////////////////////////////////////////////////////////\n-\n-\n-#include <time.h>\n-#include <stdio.h>\n-#include <stdlib.h>\n-#include <math.h>\n-#include <string.h>\n-\n-#define DEBUG 0\n-#define LINE_LEN 1024\n-#define FILE_NAME_LEN 128\n-#define PARA_NAME_LEN 64\n-#define MAX_VALUE 1000000000\n-#define CUBE 0\n-\n-\n-void getctrfileinfo(FILE *f_src_ctr, long *num_clust)\n-{\n-\tint ch=\'\\n\';\n-\tint prev=\'\\n\';\n-\tlong num_rows=0;\n-\n-\twhile ((ch = fgetc(f_src_ctr))!= EOF )\n-    {\n-\t\tif (ch == \'\\n\')\n-        {\n-\t\t\t++num_rows;\n-        }\n-\t\tprev = ch;\n-    }\n-\tif (prev!=\'\\n\')\n-\t\t++num_rows;\n-\t\n-\t*num_clust=num_rows;\n-\t//printf("center file has %ld rows\\n", *num_clust);\n-}\n-\n-/************************************* Read basic info of the source file **************************************/\n-void getfileinfo(FILE *f_src, long *file_Len, long *num_dm, char *name_string, int *time_ID)\n-{\n-\tchar src[LINE_LEN];\n-\tchar current_name[64];\n-\tchar prv;\n-\n-\tlong num_rows=0;\n-\tlong num_columns=0;\n-\tint ch=\'\\n\';\n-\tint prev=\'\\n\';\n-\tlong time_pos=0;\n-\tlong i=0;\n-\tlong j=0;\n-\n-\t\n-\n-\tsrc[0]=\'\\0\';\n-\tfgets(src, LINE_LEN, f_src);\n-\n-\tname_string[0]=\'\\0\';\n-\tcurrent_name[0]=\'\\0\';\n-\tprv=\'\\n\';\n-\n-\twhile ((src[i]==\' \') || (src[i]==\'\\t\')) //skip space and tab characters\n-\t\ti++;\n-\n-\twhile ((src[i]!=\'\\r\') && (src[i]!=\'\\n\')) //repeat until the end of the line\n-\t{\n-\t\tcurrent_name[j]=src[i];\n-\t\t\n-\t\tif ((src[i]==\'\\t\') && (prv!=\'\\t\')) //a complete word\n-\t\t{\n-\t\t\tcurrent_name[j]=\'\\0\';\n-\t\t\t\n-          /* \n-           * Commented out John Campbell, June 10 2010\n-           * We no longer want to automatically remove Time column.\n-           * This column should have been removed by column selection\n-          if (0!=strcmp(current_name,"Time"))\n-            {\n-              num_columns++; //num_columns does not inlcude the column of Time\n-              time_pos++;\n-              strcat(name_string,current_name); \n-              strcat(name_string,"\\t");\n-            }\n-          else\n-            {\n-              *time_ID=time_pos;\n-            }\n-          */\n-\n-           num_columns++;\n-           strcat(name_string,current_name);\n-           strcat(name_string,"\\t");\n-\n-\t\t   current_name[0]=\'\\0\';\n-\t\t   j=0;\t\t\t\n-\t\t}\t\t\n-\t\t\n-\t\tif ((src[i]==\'\\t\') && (prv==\'\\t\')) //a duplicate tab or space\n-\t\t{\n-\t\t\tcurrent_name[0]=\'\\0\';\n-\t\t\tj=0;\n-\t\t}\n-\t\t\n-        if (src[i]!=\'\\t\')\n-\t        j++;\n-\n-\t\t\n-\t\tprv=src[i];\n-\t\ti++;\n-\t}\n-\t\n-\tif (prv!=\'\\t\') //the last one hasn\'t been retrieved\n-\t{\n-\t\tcurrent_name[j]=\'\\0\';\n-      /* \n-       * Commented out John Campbell, June 10 2010\n-       * We no longer want to automatically remove Time column.\n-       * This column should have been removed by column selection\n-      if (0!=strcmp(current_name,"Time"))\n-        {\n-          num_columns++;\n-          strcat(name_string,current_name);\n-          time_pos++;\n-        }\n-      else\n-        {\n-          *time_ID=time_pos;\n-        }\n-      */\n-\n-      num_columns++;\n-      strcat(name_string,current_name);\n-\t}\n-\n-\tif (DEBUG==1)\n-\t{\n-\t\tprintf("time_ID is %d\\n",*time_ID);\n-\t\tprintf("name_string is %s\\n",name_string);\n-\t}\n-\n-\t// # of rows\n-\n-\twhile ((ch = fgetc(f_src))!= EOF )\n-    {\n-\t\tif (ch == \'\\n\')\n-        {\n-\t\t\t++num_rows;\n-        }\n-\t\tprev = ch;\n-    }\n-\tif (prev!=\'\\n\')\n-\t\t++num_rows;\n-\t\n-\t*file_Len=num_rows;\n-\t*num_dm=num_columns; \n-\n-\t//printf("original file size is %ld; number of dimensions is %ld\\n", *file_Len, *num_dm);\n-}\n-\n-\n-\n-///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n-/************************************* Read the source file into uncomp_data **************************************/\n-void readsource(FILE *f_src, lo'..b'0;\n-\tlong j=0;\n-\n-\tlong *cluster_id;\n-\tlong *IDmapping; //this is to keep the original populationID of the center.txt\n-\n-\tdouble kmean_term=0;\n-\t\n-\tdouble **cluster_center;\n-\tdouble **orig_data;\n-\tdouble **normalized_data;\n-\t\t\n-/*\n-\t_strtime( tmpbuf );\n-    printf( "Starting time:\\t\\t\\t\\t%s\\n", tmpbuf );\n-\t_strdate( tmpbuf );\n-    printf( "Starting date:\\t\\t\\t\\t%s\\n", tmpbuf );\n-*/\n-\n-\tif (argc!=3)\n-\t{\n-\t\tprintf("usage: cent_adjust input_center input_data_file\\n");       \n-\t\texit(0);\n-\t}\t\n-\t\n-\n-\tf_src_ctr=fopen(argv[1],"r");\t\n-\t\n-\t//read source data\n-\tf_src=fopen(argv[2],"r");\n-\t\n-\tgetfileinfo(f_src, &file_Len, &num_dm, name_string, &time_id); //get the filelength, number of dimensions, and num/name of parameters\n-\n-\trewind(f_src); //reset data file pointer\t\n-\n-\torig_data = (double **)malloc(sizeof(double*)*file_Len);\n-\tmemset(orig_data,0,sizeof(double*)*file_Len);\n-\tfor (i=0;i<file_Len;i++)\n-\t{\n-\t\torig_data[i]=(double *)malloc(sizeof(double)*num_dm);\n-\t\tmemset(orig_data[i],0,sizeof(double)*num_dm);\n-\t}\n-\t\n-\treadsource(f_src, file_Len, num_dm, orig_data, time_id); //read the data;\n-\t\n-\tfclose(f_src);\n-\t/////////////////////////////////////////////////////////////////////////////\n-\tgetctrfileinfo(f_src_ctr, &num_clust); //get how many populations\n-\tnorm_used=0;\n-\tdist_used=0;\n-\tkmean_term=2;  //modified on Oct 16, 2009: changed kmean_term=1 to kmean_term=2\n-\n-\trewind(f_src_ctr); //reset center file pointer\n-\n-\t//read population center\n-\tcluster_center=(double **)malloc(sizeof(double*)*num_clust);\n-\tmemset(cluster_center,0,sizeof(double*)*num_clust);\n-\tfor (i=0;i<num_clust;i++)\n-\t{\n-\t\tcluster_center[i]=(double*)malloc(sizeof(double)*num_dm);\n-\t\tmemset(cluster_center[i],0,sizeof(double)*num_dm);\n-\t}\n-\tfor (i=0;i<num_clust;i++)\n-\t\tfor (j=0;j<num_dm;j++)\n-\t\t\tcluster_center[i][j]=0;\n-\n-\tIDmapping=(long *)malloc(sizeof(long)*num_clust);\n-\tmemset(IDmapping,0,sizeof(long)*num_clust);\n-\n-\treadcenter(f_src_ctr,num_clust,num_dm,cluster_center,IDmapping); //read population center\n-    fclose(f_src_ctr);\n-\n-\t/////////////////////////////////////////////////////////////////////////////\n-\tnormalized_data=(double **)malloc(sizeof(double*)*file_Len);\n-\tmemset(normalized_data,0,sizeof(double*)*file_Len);\n-\tfor (i=0;i<file_Len;i++)\n-\t{\n-\t\tnormalized_data[i]=(double *)malloc(sizeof(double)*num_dm);\n-\t\tmemset(normalized_data[i],0,sizeof(double)*num_dm);\n-\t}\n-\t\n-\ttran(orig_data, file_Len, num_dm, norm_used, normalized_data);\n-\t/************************************************* Compute number of clusters *************************************************/\n-\t\n-\tcluster_id=(long*)malloc(sizeof(long)*file_Len);\n-\tmemset(cluster_id,0,sizeof(long)*file_Len);\n-\n-\tassign_event(normalized_data,num_clust,dist_used,kmean_term,file_Len,num_dm,cluster_id,cluster_center,0);\n-\n-\t\n-\t//show(orig_data,cluster_id,file_Len,num_clust,num_dm,show_data,num_disp,name_string); \n-\tshow(orig_data, cluster_id, file_Len, num_clust, num_dm, name_string, IDmapping);\n-\n-\tf_cid=fopen("population_id.txt","w");\n-\n-\tfor (i=0;i<file_Len;i++)\n-\t\tfprintf(f_cid,"%ld\\n",IDmapping[cluster_id[i]]);\n-\t\t\n-\n-\tfclose(f_cid);\n- \n-\t//added April 16, 2009\n-\tf_mfi=fopen("MFI.txt","w");\n-\n-\tfor (i=0;i<num_clust;i++)\n-\t{\n-\t\tfprintf(f_mfi,"%ld\\t",IDmapping[i]);\n-\n-\t\tfor (j=0;j<num_dm;j++)\n-\t\t{\n-\t\t\tif (j==num_dm-1)\n-\t\t\t\tfprintf(f_mfi,"%.0f\\n",cluster_center[i][j]);\n-\t\t\telse\n-\t\t\t\tfprintf(f_mfi,"%.0f\\t",cluster_center[i][j]);\n-\t\t}\n-\t}\n-\tfclose(f_mfi);\n-\n-\t//ended April 16, 2009\n-\n-\tfor (i=0;i<num_clust;i++)\n-\t\tfree(cluster_center[i]);\n-\tfree(cluster_center);\n-\t\t\n-\n-\t/********************************************** Release memory ******************************************/\n-  \n-\tfor (i=0;i<file_Len;i++)\n-\t{\n-\t\tfree(orig_data[i]);\t\t\n-\t\tfree(normalized_data[i]);\n-\t}\n-\t\n-\tfree(orig_data);\n-\tfree(normalized_data);\n-\tfree(cluster_id);\n-\tfree(IDmapping);\n-\n-/*\n-\t_strtime( tmpbuf );\n-    printf( "Ending time:\\t\\t\\t\\t%s\\n", tmpbuf );\n-\t_strdate( tmpbuf );\n-    printf( "Ending date:\\t\\t\\t\\t%s\\n", tmpbuf );\n-*/\n-\n-}\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/src/find_connected.c
--- a/cross_sample/src/find_connected.c Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,176 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-//static const char *rcsid = "$Id: find_connected.c,v 1.1 2008/09/05 21:54:40 rpl Exp $";
-
-int find_connected(int **G, int num_dense_grids, int ndim, int *grid_clusterID);
-void depth_first(int startnode);
-
-void bail(const char *);        /* exits via abort */
-static void check_clusters(int *gcID, int ndense);
-static void merge_cluster(int from, int into);
-  
-
-/* Vars that will not change througout the depth-first recursion.  We
-   store them here to avoid endless replication on the stack. */
-static int **Gr=0;
-static int *gcID = 0;          /* grid cluster IDs */
-static int *cluster_count=0;   /* count of nodes per cluster */
-static int ndense=0;
-static int ndim=0;
-/* cid changes between depth-first searches, but is constant within a
-   single search, so it goes here. */
-static int cid=0;
-
-/* Find connected components in the graph of neighboring grids defined in G.
- *
- * Output:
- *
- * grid_clusterID[]  -- cluster to which each dense grid was assigned
- * return value      -- number of clusters assigned.
- */
-int find_connected(int **G, int n_dense_grids, int num_dm, int *grid_clusterID)
-{
-  int nclust=0;                  /* number of clusters found */
-  int i;
-  int *subfac;
-  int subval=0,nempty=0;
-    int clustid=0;
-  
-  size_t sz = n_dense_grids*sizeof(int); 
-  cluster_count = malloc(sz);
-  if(!cluster_count)
-    bail("find_connected: Unable to allocate %zd bytes.\n");
-  memset(cluster_count,0,sz);
-
-  /* set up the statics that will be used in the DFS */
-  Gr=G;
-  gcID = grid_clusterID;
-  ndense = n_dense_grids;
-  ndim = num_dm;
-
-  
-  for(i=0;i<ndense;++i)
-    grid_clusterID[i] = -1;
-
-  for(i=0;i<ndense;++i) {
-    if(grid_clusterID[i] < 0) {  /* grid hasn't been assigned yet */
-      cid = nclust++;
-      depth_first(i);
-    }
-  }
-
-#ifndef NDEBUG
-  check_clusters(gcID,ndense);
-#endif 
-  
-  /* At this point we probably have some clusters that are empty due to merging.
-     We want to compact the cluster numbering to eliminate the empty clusters. */
-
-  subfac = malloc(sz);
-  if(!subfac)
-    bail("find_connected: Unable to allocate %zd bytes.\n");
- subval=0;
- nempty=0;
-
-  /* cluster #i needs to have its ID decremented by 1 for each empty cluster with
-     ID < i.  Precaclulate the decrements in this loop: */
-  for(i=0;i<nclust;++i) {
-    //clustid = grid_clusterID[i];
-    if(cluster_count[i] == 0) {
-      subval++;
-      nempty++;
-    }
-    subfac[i] = subval;
-  }
-
-  /* Now apply the decrements to all of the dense grids */
-  for(i=0;i<ndense;++i) {
-   clustid = grid_clusterID[i];
-    grid_clusterID[i] -= subfac[clustid];
-  }
-
-#ifndef NDEBUG
-  //  check_clusters(gcID,ndense);
-#endif  
-  
-  /* correct the number of clusters found */
-  nclust -= nempty;
-
-  return nclust;
-}
-
-
-/* Do a depth-first search for a single connected component in graph
- * G.  Start from node, tag the nodes found with cid, and record
- * the tags in grid_clusterID.  Also, record the node count in
- * cluster_count.  If we find a node that has already been assigned to
- * a cluster, that means we're merging two clusters, so zero out the
- * old cid's node count.
- *
- * Note that our graph is constructed as a DAG, so we can be
- * guaranteed to terminate without checking for cycles.  
- *
- * Note2: this function can potentially recurse to depth = ndense.
- * Plan stack size accordingly.  
- *
- * Output:
- *
- * grid_clusterID[] -- array where we tag the nodes.
- * cluster_count[]  -- count of the number of nodes per cluster.
- */
-   
-void depth_first(int node)
-{
-  int i;
-
-  if(gcID[node] == cid)         // we're guaranteed no cycles, but it is possible to reach a node 
-    return;                     // through two different paths in the same cluster.  This early
-                                // return saves us some unneeded work.
-
-  /* Check to see if we are merging a cluster */
-  if(gcID[node] >= 0) {
-    /* We are, so zero the count for the old cluster. */
-    cluster_count[ gcID[node] ] = 0;  
-    merge_cluster(gcID[node], cid);
-    return;
-  }
-
-  /* Update for this node */
-  gcID[node] = cid;
-  cluster_count[cid]++;
-
-  /* Recursively search the child nodes */
-  for(i=0; i<ndim; ++i)
-    if(Gr[node][i] >= 0)      /* This is a child node */
-      depth_first(Gr[node][i]);
-}
-
-void bail(const char *msg)
-{
-  fprintf(stderr,"%s",msg);
-  abort();
-}
-
-
-static void check_clusters(int *gcID, int ndense)
-{
-  int i;
-
-  for(i=0; i<ndense; ++i)
-    if(gcID[i] < 0) {
-      fprintf(stderr,"faulty cluster id at i= %d\n",i);
-      abort();
-    }
-}
-
-static void merge_cluster(int from, int into)
-{
-  int i;
-
-  for(i=0; i<ndense; ++i)
-    if(gcID[i] == from)
-      gcID[i] = into;
-}
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/src/flock1.c
--- a/cross_sample/src/flock1.c Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b'@@ -1,2400 +0,0 @@\n-/*****************************************************************************\n-\t\n-\tFLOCK: FLOw cytometry Clustering without K (Named by: Jamie A. Lee and Richard H. Scheuermann) \n-\t\n-\tAuthor: (Max) Yu Qian, Ph.D.\n-\t\n-\tCopyright: Scheuermann Lab, Dept. of Pathology, UTSW\n-\t\n-\tDevelopment: November 2005 ~ Forever\n-\n-\tAlgorithm Status: May 2007: Release 1.0\n-\n-\tUsage: flock data_file\n-\t\t    Note: the input file format must be channel values and the delimiter between two values must be a tab.\n-\n-    Changes made July 23, 2010: made errors to STDERR\n-\tChanges made Nov 4, 2010: added one more error (select_num_bin<min_grid) || (select_num_bin>max_grid) to STDERR;\n-\t                          MAX_GRID changed to 50 as larger than 50 seems not useful for any file we have got\n-\t\n-******************************************************************************/\n-#include <time.h>\n-#include <stdio.h>\n-#include <stdlib.h>\n-#include <math.h>\n-#include <string.h>\n-#include <sys/stat.h>\n-#include <unistd.h>\n-#include <assert.h>\n-\n-\n-#define DEBUG 0\n-#define LINE_LEN 1024\n-#define FILE_NAME_LEN 128\n-#define PARA_NAME_LEN 64\n-#define MAX_VALUE 1000000000\n-#define MIN_GRID 6\n-#define MAX_GRID 50\n-\n-#define NORM_METHOD 2 //2 if z-score; 0 if no normalization; 1 if min-max \n-#define KMEANS_TERM 100\n-//#define MAX_NUM_POP 30\n-\n-\n-int find_connected(int **G, int num_dense_grids, int ndim, int *grid_clusterID);\n-\n-/************* Read basic info of the source file ****************************/\n-void getfileinfo(FILE *f_src, int *file_Len, int *num_dm, char *name_string, int *time_ID)\n-{\n-  char src[LINE_LEN];\n-  char current_name[64];\n-  char prv;\n-\n-  int num_rows=0;\n-  int num_columns=0;\n-  int ch=\'\\n\';\n-  int prev=\'\\n\';\n-  int time_pos=0;\n-  int i=0;\n-  int j=0;\n-  int sw=0;\n-\n-  src[0]=\'\\0\';\n-  fgets(src, LINE_LEN, f_src);\n-\n-  if ((src[0]==\'F\') && (src[1]==\'C\') && (src[2]==\'S\'))\n-\t{\n-\t\tfprintf(stderr,"the correct input format is a tab-delimited txt file, instead of FCS file.\\n");\n-\t\tabort();\n-\t}\n-\n-  name_string[0]=\'\\0\';\n-  current_name[0]=\'\\0\';\n-  prv=\'\\n\';\n-\n-  // skip space and tab characters\n-  while ((src[i]==\' \') || (src[i]==\'\\t\'))\n-    i++;\n-\n-  // repeat until the end of line is reached\n-  while ((src[i]!=\'\\0\') && (src[i]!=\'\\n\') && (src[i]!=\'\\r\'))\n-    {\n-      current_name[j]=src[i];\n-\t\t\n-      if ((src[i]==\'\\t\') && (prv!=\'\\t\')) //a complete word\n-        {\n-          current_name[j]=\'\\0\';\n-\t\t\t\n-          if (0!=strcmp(current_name,"Time"))\n-            {\n-              num_columns++; //num_columns does not inlcude the column of Time\n-              time_pos++;\n-              if (sw) {\n-                  strcat(name_string,"\\t");\n-              }\n-              strcat(name_string,current_name); \n-              sw = 1;\n-            }\n-          else\n-            {\n-              *time_ID=time_pos;\n-            }\n-          \n-          \n-          current_name[0]=\'\\0\';\n-          j=0;\t\t\t\n-        }\t\t\n-\t\t\n-      if ((src[i]==\'\\t\') && (prv==\'\\t\')) //a duplicate tab or space\n-        {\n-          current_name[0]=\'\\0\';\n-          j=0;\n-        }\n-\t\t\n-      if (src[i]!=\'\\t\')\n-        j++;\n-\t\t\n-      prv=src[i];\n-      i++;\n-    }\n-\t\n-  if (prv!=\'\\t\') //the last one hasn\'t been retrieved\n-    {\n-      current_name[j]=\'\\0\';\n-      \n-      if (0!=strcmp(current_name,"Time"))\n-        {\n-          num_columns++;\n-          strcat(name_string,"\\t");\n-          strcat(name_string,current_name);\n-          time_pos++;\n-        }\n-      else\n-        {\n-          *time_ID=time_pos;\n-        }\n-      \n-      \n-    }\n-  if (DEBUG==1)\n-    {\n-      printf("time_ID is %d\\n",*time_ID);\n-      printf("name_string is %s\\n",name_string);\n-    }\n-\n-  //start computing # of rows\n-\n-  while ((ch = fgetc(f_src))!= EOF )\n-    {\n-      if (ch == \'\\n\')\n-        {\n-          ++num_rows;\n-        }\n-      prev = ch;\n-    }\n-  if (prev!=\'\\n\')\n-    ++num_rows;\n-\n-  //added on July 23, 2010\n-  if (num_rows<50)\n-  {\n-    fprintf(stderr,"Number of events '..b'lation_ID=(int*)malloc(sizeof(int)*file_Len);\n-  memset(all_population_ID,0,sizeof(int)*file_Len);\n-\n-  kmeans(normalized_data, num_population, KMEANS_TERM, file_Len, num_dm, all_population_ID, population_center);\n-  show(input_data, all_population_ID, file_Len, num_population, num_dm, para_name_string);\n-\n-  ID2Center_all(input_data,file_Len,num_dm,num_population,all_population_ID,population_center);\n-  \n-\n-  f_cid=fopen("population_id.txt","w");\n-  f_ctr=fopen("population_center.txt","w");\n-  f_out=fopen("coordinates.txt","w");\n-  f_results=fopen("flock_results.txt","w");\n-\n-/*\n-  f_parameters=fopen("parameters.txt","w");\n-  fprintf(f_parameters,"Number_of_Bins\\t%d\\n",num_bin);\n-  fprintf(f_parameters,"Density\\t%f\\n",aver_index);\n-  fclose(f_parameters);\n-*/\n-\n-  for (i=0;i<file_Len;i++)\n-\tfprintf(f_cid,"%d\\n",all_population_ID[i]+1); //all_population_ID[i] changed to all_population_ID[i]+1 to start from 1 instead of 0: April 16, 2009\n-\n-  /*\n-   * New to check for min/max to add to parameters.txt\n-   *\n-  */\n-  \n-  fprintf(f_out,"%s\\n",para_name_string);\n-  //fprintf(f_results,"%s\\tEvent\\tPopulation\\n",para_name_string);\n-  fprintf(f_results,"%s\\tPopulation\\n",para_name_string);\n-  for (i=0;i<file_Len;i++)\n-  {\n-\tfor (j=0;j<num_dm;j++)\n-\t{\n-\t\tif (input_data[i][j] < min) {\n-\t\t\tmin = (int)input_data[i][j];\n-\t\t}\n-\t\tif (input_data[i][j] > max) {\n-\t\t\tmax = (int)input_data[i][j];\n-\t\t}\n-\t\tif (j==num_dm-1)\n-\t\t{\n-\t\t\tfprintf(f_out,"%d\\n",(int)input_data[i][j]);\n-\t\t\tfprintf(f_results,"%d\\t",(int)input_data[i][j]);\n-\t\t}\n-\t\telse\n-\t\t{\n-\t\t\tfprintf(f_out,"%d\\t",(int)input_data[i][j]);\n-\t\t\tfprintf(f_results,"%d\\t",(int)input_data[i][j]);\n-\t\t}\n-\t}\n-\t//fprintf(f_results,"%d\\t",i + 1);\n-\tfprintf(f_results,"%d\\n",all_population_ID[i]+1); //all_population_ID[i] changed to all_population_ID[i]+1 to start from 1 instead of 0: April 16, 2009\n-  }\n-\n-/*\n-  f_parameters=fopen("parameters.txt","w");\n-  fprintf(f_parameters,"Number_of_Bins\\t%d\\n",num_bin);\n-  fprintf(f_parameters,"Density\\t%d\\n",den_t_event);\n-  fprintf(f_parameters,"Min\\t%d\\n",min);\n-  fprintf(f_parameters,"Max\\t%d\\n",max);\n-  fclose(f_parameters);\n-*/\n-\n-  f_properties=fopen("fcs.properties","w");\n-  fprintf(f_properties,"Bins=%d\\n",num_bin);\n-  fprintf(f_properties,"Density=%d\\n",den_t_event);\n-  fprintf(f_properties,"Min=%d\\n",min);\n-  fprintf(f_properties,"Max=%d\\n",max);\n-  fprintf(f_properties,"Populations=%d\\n",num_population);\n-  fprintf(f_properties,"Events=%d\\n",file_Len);\n-  fprintf(f_properties,"Markers=%d\\n",num_dm);\n-  fclose(f_properties);\n-\n-\n-  for (i=0;i<num_population;i++) {\n-\t/* Add if we want to include population id in the output\n-\t*/\n-\tfprintf(f_ctr,"%d\\t",i+1);  //i changed to i+1 to start from 1 instead of 0: April 16, 2009\n-\n-\tfor (j=0;j<num_dm;j++) {\n-\t\tif (j==num_dm-1)\n-\t\t\tfprintf(f_ctr,"%.0f\\n",population_center[i][j]);\n-\t\telse\n-\t\t\tfprintf(f_ctr,"%.0f\\t",population_center[i][j]);\n-\t}\n-  }\n-\n-  \t//added April 16, 2009\n-\tf_mfi=fopen("MFI.txt","w");\n-\n-\tfor (i=0;i<num_population;i++)\n-\t{\n-\t\tfprintf(f_mfi,"%d\\t",i+1);\n-\n-\t\tfor (j=0;j<num_dm;j++)\n-\t\t{\n-\t\t\tif (j==num_dm-1)\n-\t\t\t\tfprintf(f_mfi,"%.0f\\n",population_center[i][j]);\n-\t\t\telse\n-\t\t\t\tfprintf(f_mfi,"%.0f\\t",population_center[i][j]);\n-\t\t}\n-\t}\n-\tfclose(f_mfi);\n-\n-\t//ended April 16, 2009\n-\t\t\t\n-  fclose(f_cid);\n-  fclose(f_ctr);\n-  fclose(f_out);\n-  fclose(f_results);\n-\n-\n-  for (i=0;i<num_population;i++)\n-  {\n-\tfree(population_center[i]);\n-  }\n-  free(population_center);\n- \n-\n-  for (i=0;i<file_Len;i++)\n-    free(normalized_data[i]);\n-  free(normalized_data);\t\n-\t\n-  free(grid_populationID);\n-\n-  free(cluster_populationID);\n-  free(grid_clusterID);\n-  free(cluster_ID);\n-\n-  for (i=0;i<file_Len;i++)\n-    free(input_data[i]);\n-  free(input_data);\n-\n-  free(grid_ID);\n-  free(population_ID);\n-  free(all_population_ID);\n-  free(eventID_To_denseventID);\n-\t\t\n-  ///////////////////////////////////////////////////////////\n-  printf("Ending time:\\t\\t\\t\\t");\n-  fflush(stdout);\n-  system("/bin/date");\n-\n-  return 0;\n-\n-}\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/src/flock2.c
--- a/cross_sample/src/flock2.c Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
b"@@ -1,3405 +0,0 @@\n-///////////\n-// Changes made:\n-// 1. Added another parameter: number of populations\n-// 2. Added a hierarchical merging step based on density change between centroids of two hyper-regions\n-// 3. Picked the longest dimensions between the population centroids to judge whether the two parts should be merged\n-// 4. Removed checking time parameter\n-// 5. Output error to stderr\n-// 6. Fixed the bug of density threshold always = 3\n-// 7. Added another error (select_num_bin<min_grid) || (select_num_bin>max_grid) to STDERR\n-// 8. Fixed a bug for 2D data by using K=e*K\n-// 9. Added some header files, may not be necessary\n-// 10. Added a lower bound (at least two) for number of populations\n-/***************************************************************************************************************************************\n-\t\n-\tFLOCK: FLOw cytometry Clustering without K (Named by: Jamie A. Lee and Richard H. Scheuermann) \n-\t\n-\tAuthor: (Max) Yu Qian, Ph.D.\n-\t\n-\tCopyright: Scheuermann Lab, Dept. of Pathology, UTSW\n-\t\n-\tDevelopment: November 2005 ~ Forever\n-\n-\tStatus: July 2010: Release 2.0\n-\n-\tUsage: flock data_file\n-\t\t    Note: the input file format must be channel values and the delimiter between two values must be a tab.\n-\n-\n-    \t\n-****************************************************************************************************************************************/\n-\n-#include <time.h>\n-#include <stdio.h>\n-#include <stdlib.h>\n-#include <math.h>\n-#include <string.h>\n-#include <sys/stat.h>\n-#include <unistd.h>\n-#include <assert.h>\n-\n-\n-\n-#define DEBUG 0\n-#define LINE_LEN 1024\n-#define FILE_NAME_LEN 128\n-#define PARA_NAME_LEN 64\n-#define MAX_VALUE 1000000000\n-#define MIN_GRID 6\n-#define MAX_GRID 50\n-#define E_T 1.0\n-\n-#define NORM_METHOD 2 //2 if z-score; 0 if no normalization; 1 if min-max \n-#define KMEANS_TERM 10 \n-#define MAX_POP_NUM 128\n-\n-#ifndef max\n-    #define max( a, b ) ( ((a) > (b)) ? (a) : (b) )\n-#endif\n-\n-#ifndef min\n-    #define min( a, b ) ( ((a) < (b)) ? (a) : (b) )\n-#endif\n-\n-static long **Gr=0;\n-static long *gcID = 0;          /* grid cluster IDs */\n-static long *cluster_count=0;   /* count of nodes per cluster */\n-static long ndense=0;\n-static long ndim=0;\n-/* cid changes between depth-first searches, but is constant within a\n-   single search, so it goes here. */\n-static long cid=0;\n-/* Do a depth-first search for a single connected component in graph\n- * G.  Start from node, tag the nodes found with cid, and record\n- * the tags in grid_clusterID.  Also, record the node count in\n- * cluster_count.  If we find a node that has already been assigned to\n- * a cluster, that means we're merging two clusters, so zero out the\n- * old cid's node count.\n- *\n- * Note that our graph is constructed as a DAG, so we can be\n- * guaranteed to terminate without checking for cycles.  \n- *\n- * Note2: this function can potentially recurse to depth = ndense.\n- * Plan stack size accordingly.  \n- *\n- * Output:\n- *\n- * grid_clusterID[] -- array where we tag the nodes.\n- * cluster_count[]  -- count of the number of nodes per cluster.\n- */\n-static void merge_cluster(long from, long into)\n-{\n-  int i;\n-\n-  for(i=0; i<ndense; ++i)\n-    if(gcID[i] == from)\n-      gcID[i] = into;\n-}\n-   \n-void depth_first(long node)\n-{\n-  long i;\n-\n-  if(gcID[node] == cid)         // we're guaranteed no cycles, but it is possible to reach a node \n-    return;                     // through two different paths in the same cluster.  This early\n-                                // return saves us some unneeded work.\n-\n-  /* Check to see if we are merging a cluster */\n-  if(gcID[node] >= 0) {\n-    /* We are, so zero the count for the old cluster. */\n-    cluster_count[ gcID[node] ] = 0;  \n-    merge_cluster(gcID[node], cid);\n-    return;\n-  }\n-\n-  /* Update for this node */\n-  gcID[node] = cid;\n-  cluster_count[cid]++;\n-\n-  /* Recursively search the child nodes */\n-  for(i=0; i<ndim; ++i)\n-    if(Gr[node][i] >= 0)      /* This is a child node */\n"..b'ring);\n-\n-  ID2Center_all(input_data,file_Len,num_dm,num_real_pop,all_population_ID,new_population_center);\n-  \n-\n-  f_cid=fopen("population_id.txt","w");\n-  f_ctr=fopen("population_center.txt","w");\n-  f_out=fopen("coordinates.txt","w");\n-  f_results=fopen("flock_results.txt","w");\n-\n-/*\n-  f_parameters=fopen("parameters.txt","w");\n-  fprintf(f_parameters,"Number_of_Bins\\t%d\\n",num_bin);\n-  fprintf(f_parameters,"Density\\t%f\\n",aver_index);\n-  fclose(f_parameters);\n-*/\n-\n-  for (i=0;i<file_Len;i++)\n-\tfprintf(f_cid,"%ld\\n",all_population_ID[i]+1); //all_population_ID[i] changed to all_population_ID[i]+1 to start from 1 instead of 0: April 16, 2009\n-\n-  /*\n-   * New to check for min/max to add to parameters.txt\n-   *\n-  */\n-  \n-  fprintf(f_out,"%s\\n",para_name_string);\n-  //fprintf(f_results,"%s\\tEvent\\tPopulation\\n",para_name_string);\n-  fprintf(f_results,"%s\\tPopulation\\n",para_name_string);\n-  for (i=0;i<file_Len;i++)\n-  {\n-\tfor (j=0;j<num_dm;j++)\n-\t{\n-\t\tif (input_data[i][j] < min) {\n-\t\t\tmin = (int)input_data[i][j];\n-\t\t}\n-\t\tif (input_data[i][j] > max) {\n-\t\t\tmax = (int)input_data[i][j];\n-\t\t}\n-\t\tif (j==num_dm-1)\n-\t\t{\n-\t\t\tfprintf(f_out,"%d\\n",(int)input_data[i][j]);\n-\t\t\tfprintf(f_results,"%d\\t",(int)input_data[i][j]);\n-\t\t}\n-\t\telse\n-\t\t{\n-\t\t\tfprintf(f_out,"%d\\t",(int)input_data[i][j]);\n-\t\t\tfprintf(f_results,"%d\\t",(int)input_data[i][j]);\n-\t\t}\n-\t}\n-\t//fprintf(f_results,"%ld\\t",i + 1);\n-\tfprintf(f_results,"%ld\\n",all_population_ID[i]+1); //all_population_ID[i] changed to all_population_ID[i]+1 to start from 1 instead of 0: April 16, 2009\n-  }\n-\n-/*\n-  f_parameters=fopen("parameters.txt","w");\n-  fprintf(f_parameters,"Number_of_Bins\\t%ld\\n",num_bin);\n-  fprintf(f_parameters,"Density\\t%d\\n",den_t_event);\n-  fprintf(f_parameters,"Min\\t%d\\n",min);\n-  fprintf(f_parameters,"Max\\t%d\\n",max);\n-  fclose(f_parameters);\n-*/\n-\n-  f_properties=fopen("fcs.properties","w");\n-  fprintf(f_properties,"Bins=%ld\\n",num_bin);\n-  fprintf(f_properties,"Density=%d\\n",den_t_event);\n-  fprintf(f_properties,"Min=%d\\n",min);\n-  fprintf(f_properties,"Max=%d\\n",max);\n-  fprintf(f_properties,"Populations=%ld\\n",num_real_pop);\n-  fprintf(f_properties,"Events=%ld\\n",file_Len);\n-  fprintf(f_properties,"Markers=%ld\\n",num_dm);\n-  fclose(f_properties);\n-\n-  for (i=0;i<num_real_pop;i++) {\n-\t/* Add if we want to include population id in the output\n-\t*/\n-\tfprintf(f_ctr,"%ld\\t",i+1);  //i changed to i+1 to start from 1 instead of 0: April 16, 2009\n-\n-\tfor (j=0;j<num_dm;j++) {\n-\t\tif (j==num_dm-1)\n-\t\t\tfprintf(f_ctr,"%.0f\\n",new_population_center[i][j]);\n-\t\telse\n-\t\t\tfprintf(f_ctr,"%.0f\\t",new_population_center[i][j]);\n-\t}\n-  }\n-\n-  \t//added April 16, 2009\n-\tf_mfi=fopen("MFI.txt","w");\n-\n-\tfor (i=0;i<num_real_pop;i++)\n-\t{\n-\t\tfprintf(f_mfi,"%ld\\t",i+1);\n-\n-\t\tfor (j=0;j<num_dm;j++)\n-\t\t{\n-\t\t\tif (j==num_dm-1)\n-\t\t\t\tfprintf(f_mfi,"%.0f\\n",new_population_center[i][j]);\n-\t\t\telse\n-\t\t\t\tfprintf(f_mfi,"%.0f\\t",new_population_center[i][j]);\n-\t\t}\n-\t}\n-\tfclose(f_mfi);\n-\n-\t//ended April 16, 2009\n-\t\t\t\n-  fclose(f_cid);\n-  fclose(f_ctr);\n-  fclose(f_out);\n-  fclose(f_results);\n-\n-\n-  for (i=0;i<num_population;i++)\n-  \tfree(population_center[i]);\n-  \n-  free(population_center);\n- \n-  for (i=0;i<num_real_pop;i++)\n-\t  free(new_population_center[i]);\n-  \n-  free(new_population_center);\n-\n-  for (i=0;i<file_Len;i++)\n-    free(normalized_data[i]);\n-  free(normalized_data);\t\n-\t\n-  free(grid_populationID);\n-\n-  free(cluster_populationID);\n-  free(grid_clusterID);\n-  free(cluster_ID);\n-\n-  for (i=0;i<file_Len;i++)\n-    free(input_data[i]);\n-  free(input_data);\n-\n-  free(grid_ID);\n-  free(population_ID);\n-  free(all_population_ID);\n-  free(eventID_To_denseventID);\n-\t\t\n-  ///////////////////////////////////////////////////////////\n-  printf("Ending time:\\t\\t\\t\\t");\n-  fflush(stdout);\n-  system("/bin/date");\n-\n-  /*\n-   * Windows version\n-  _strtime( tmpbuf );\n-  printf( "Ending time:\\t\\t\\t\\t%s\\n", tmpbuf );\n-  _strdate( tmpbuf );\n-  printf( "Ending date:\\t\\t\\t\\t%s\\n", tmpbuf );\n- */\n-  \n-  return 0;\n-}\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/gmfi.flowmfi
--- a/cross_sample/test-data/gmfi.flowmfi Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,27 +0,0 @@
-Population FSC SSC CD4 CCR7 CD8 CCR3
-1 362 113 519 182 0 0
-2 368 116 522 0 0 181
-3 360 108 511 0 630 472
-4 354 165 0 0 0 514
-5 329 149 0 0 0 0
-6 370 147 0 0 606 0
-7 386 154 0 310 617 294
-8 369 109 516 249 640 500
-9 413 200 0 403 0 633
-10 354 110 520 0 0 0
-11 379 133 0 0 602 562
-12 405 242 0 0 0 0
-13 402 129 514 409 613 294
-14 399 133 525 560 0 0
-15 353 109 318 0 0 0
-16 407 214 0 502 0 0
-17 432 180 503 592 0 279
-18 381 123 523 192 0 187
-19 935 946 478 612 513 523
-20 390 148 0 528 618 0
-21 614 972 0 0 0 0
-22 662 422 382 0 0 276
-23 538 965 362 471 382 442
-24 677 427 387 0 0 0
-25 724 1012 0 265 0 0
-26 957 963 311 337 0 300
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/input1.flowtext
--- a/cross_sample/test-data/input1.flowtext Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,20001 +0,0 @@\n-FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\n-289\t56\t438\t0\t626\t480\n-352\t153\t30\t147\t483\t386\n-383\t190\t156\t228\t734\t408\n-261\t62\t432\t121\t598\t555\n-451\t120\t537\t338\t568\t201\n-373\t104\t3\t110\t621\t584\n-418\t105\t561\t0\t610\t562\n-358\t185\t0\t292\t641\t327\n-733\t970\t139\t227\t293\t259\n-765\t1023\t71\t239\t233\t253\n-762\t957\t143\t158\t271\t255\n-406\t191\t513\t122\t646\t264\n-695\t1023\t168\t251\t234\t283\n-336\t178\t0\t146\t128\t537\n-668\t1023\t167\t306\t302\t253\n-330\t135\t493\t72\t734\t496\n-618\t1015\t201\t269\t284\t141\n-662\t1023\t204\t241\t273\t149\n-383\t109\t49\t50\t575\t451\n-427\t206\t169\t258\t725\t402\n-369\t152\t216\t569\t738\t684\n-420\t209\t26\t368\t651\t303\n-554\t218\t601\t336\t629\t300\n-425\t229\t89\t416\t616\t373\n-493\t355\t516\t252\t625\t568\n-674\t1023\t211\t243\t259\t310\n-286\t88\t0\t63\t556\t491\n-318\t83\t477\t469\t627\t546\n-297\t65\t489\t324\t618\t518\n-358\t101\t496\t0\t646\t543\n-429\t168\t515\t462\t675\t321\n-364\t105\t504\t298\t602\t460\n-319\t469\t415\t202\t571\t405\n-532\t1023\t390\t528\t406\t507\n-561\t287\t396\t72\t381\t279\n-422\t150\t522\t351\t626\t353\n-448\t149\t529\t288\t612\t270\n-361\t143\t0\t132\t656\t362\n-377\t96\t504\t163\t603\t524\n-837\t1023\t211\t231\t316\t280\n-702\t907\t176\t206\t271\t236\n-367\t130\t570\t0\t661\t568\n-302\t95\t508\t205\t643\t494\n-403\t216\t159\t361\t158\t554\n-427\t215\t188\t0\t711\t381\n-743\t1023\t217\t316\t306\t278\n-746\t339\t238\t433\t692\t433\n-409\t104\t545\t278\t631\t480\n-345\t67\t499\t581\t682\t524\n-292\t171\t69\t115\t70\t463\n-314\t152\t84\t0\t0\t514\n-824\t1023\t220\t273\t315\t179\n-554\t1023\t143\t255\t219\t283\n-700\t998\t193\t261\t294\t148\n-732\t1023\t204\t314\t322\t279\n-360\t84\t467\t425\t577\t278\n-425\t136\t558\t193\t622\t586\n-301\t135\t49\t66\t574\t499\n-356\t146\t511\t110\t635\t287\n-390\t119\t528\t386\t580\t251\n-654\t931\t169\t259\t334\t220\n-385\t255\t102\t211\t671\t449\n-589\t1023\t187\t203\t270\t189\n-678\t1023\t0\t251\t177\t250\n-410\t123\t528\t305\t710\t429\n-362\t90\t514\t292\t642\t531\n-543\t934\t127\t153\t283\t199\n-739\t587\t416\t244\t300\t158\n-406\t98\t497\t428\t621\t364\n-895\t1023\t201\t307\t281\t279\n-330\t123\t7\t230\t577\t247\n-384\t158\t83\t62\t614\t300\n-685\t1023\t197\t257\t209\t278\n-395\t163\t531\t0\t618\t434\n-350\t128\t483\t352\t642\t514\n-339\t119\t124\t127\t546\t556\n-357\t107\t516\t66\t679\t560\n-1023\t1023\t420\t305\t336\t355\n-620\t894\t88\t189\t210\t272\n-618\t970\t394\t238\t179\t201\n-678\t954\t143\t286\t280\t114\n-544\t766\t122\t184\t279\t236\n-416\t138\t120\t358\t578\t228\n-425\t100\t167\t229\t582\t600\n-333\t95\t516\t229\t591\t443\n-396\t147\t554\t263\t608\t280\n-331\t140\t27\t51\t39\t552\n-689\t1023\t204\t267\t316\t276\n-564\t810\t151\t89\t250\t253\n-282\t70\t494\t158\t497\t546\n-378\t127\t550\t189\t629\t555\n-396\t182\t181\t323\t541\t509\n-627\t1011\t239\t262\t314\t225\n-319\t139\t45\t78\t131\t480\n-324\t123\t17\t73\t637\t603\n-398\t95\t555\t173\t643\t518\n-445\t1023\t426\t492\t402\t540\n-671\t1023\t113\t249\t281\t283\n-384\t223\t0\t200\t621\t273\n-780\t1023\t237\t227\t287\t64\n-408\t141\t72\t272\t645\t621\n-672\t1023\t164\t214\t258\t273\n-626\t932\t66\t256\t207\t301\n-398\t111\t118\t165\t589\t531\n-687\t927\t137\t266\t263\t141\n-342\t139\t82\t122\t305\t595\n-736\t393\t454\t252\t235\t324\n-311\t102\t491\t118\t632\t474\n-318\t110\t503\t46\t643\t523\n-623\t1023\t159\t266\t253\t197\n-416\t106\t547\t347\t668\t489\n-350\t91\t93\t199\t590\t577\n-403\t158\t186\t222\t604\t540\n-362\t202\t128\t187\t597\t241\n-628\t886\t205\t244\t172\t201\n-656\t1023\t231\t241\t251\t104\n-731\t981\t141\t207\t273\t165\n-340\t224\t49\t449\t548\t782\n-699\t1023\t259\t233\t266\t220\n-392\t148\t43\t35\t595\t575\n-942\t1023\t199\t308\t335\t193\n-312\t164\t35\t103\t0\t461\n-822\t1023\t202\t311\t252\t308\n-683\t457\t339\t241\t182\t180\n-683\t1023\t180\t263\t277\t261\n-397\t174\t25\t20\t654\t616\n-324\t77\t487\t0\t623\t518\n-371\t146\t511\t36\t648\t414\n-399\t162\t144\t64\t622\t589\n-682\t1023\t157\t221\t257\t233\n-590\t922\t199\t196\t271\t146\n-393\t105\t506\t253\t497\t251\n-633\t1023\t41\t145\t256\t162\n-550\t232\t350\t249\t197\t556\n-355\t99\t523\t31\t646\t507\n-434\t202\t88\t311\t725\t360\n-696\t1023\t222\t263\t293\t283\n-725\t345\t375\t211\t267\t260\n-678\t1023\t163\t273\t259\t286\n-559\t831\t132\t272\t323\t237\n-298\t110\t506\t382\t669\t443\n-334\t117\t542\t4\t628\t525\n-681\t1023\t206\t236\t252\t223\n-638\t1023\t167\t225\t290\t234\n-297\t101\t0\t33\t579\t305\n-359\t129\t190\t49\t592\t560\n-361\t88\t508\t215\t632\t345\n-644\t917\t113\t197\t254\t280\n-749\t1023\t172\t305\t290\t189\n-382\t87\t544\t374\t615\t543\n-330\t75\t515\t253\t640\t370\n-1023\t827\t298\t327\t363\t366\n-347\t116\t513\t140\t640\t591\n-676\t1023\t204\t229\t246\t286\n-362\t118\t522\t185\t530\t539\n-1023\t1023\t400\t386\t361\t304\n-822\t1023\t184\t186\t209\t291\n-459\t701\t171\t84\t225\t267\n-330\t56\t41\t177\t93\t238\n-416\t160\t149\t140\t658\t601\n-656\t1023\t129\t249\t2'..b'9\n-596\t1023\t230\t309\t284\t241\n-425\t169\t170\t0\t610\t566\n-417\t241\t77\t38\t562\t275\n-399\t99\t512\t0\t653\t515\n-1005\t674\t405\t309\t291\t314\n-755\t781\t189\t231\t239\t211\n-744\t1023\t191\t303\t227\t278\n-435\t129\t84\t253\t560\t479\n-634\t1023\t138\t237\t233\t172\n-675\t1023\t126\t199\t262\t2\n-515\t836\t154\t127\t230\t88\n-404\t165\t529\t246\t667\t237\n-481\t522\t150\t197\t255\t94\n-920\t1023\t259\t296\t300\t243\n-346\t84\t475\t340\t591\t425\n-734\t485\t425\t233\t252\t232\n-363\t83\t464\t526\t458\t398\n-404\t143\t538\t282\t581\t229\n-535\t1023\t133\t259\t238\t118\n-454\t1023\t240\t324\t338\t257\n-430\t212\t534\t498\t646\t266\n-290\t78\t445\t508\t645\t476\n-431\t165\t549\t489\t659\t263\n-350\t110\t536\t136\t638\t609\n-434\t169\t89\t212\t630\t664\n-681\t282\t338\t196\t221\t147\n-466\t779\t167\t101\t125\t188\n-330\t176\t81\t67\t47\t499\n-409\t138\t550\t347\t649\t324\n-595\t962\t186\t253\t220\t172\n-704\t986\t218\t244\t283\t207\n-382\t119\t539\t354\t615\t558\n-406\t181\t541\t566\t661\t196\n-654\t1023\t171\t304\t320\t271\n-367\t174\t75\t300\t598\t294\n-383\t119\t536\t205\t660\t582\n-329\t92\t510\t240\t652\t574\n-473\t217\t161\t90\t0\t601\n-556\t278\t479\t118\t264\t627\n-655\t1023\t211\t250\t296\t291\n-361\t120\t96\t24\t600\t557\n-468\t1023\t366\t419\t409\t500\n-303\t89\t91\t90\t602\t563\n-315\t169\t39\t0\t0\t476\n-315\t99\t521\t140\t650\t499\n-419\t126\t81\t186\t624\t677\n-748\t1023\t177\t287\t236\t140\n-342\t100\t49\t52\t569\t507\n-730\t1023\t217\t327\t278\t308\n-389\t197\t76\t26\t626\t337\n-593\t900\t215\t209\t285\t248\n-685\t1023\t137\t278\t318\t109\n-454\t149\t550\t469\t585\t294\n-380\t235\t117\t220\t651\t327\n-358\t53\t476\t302\t674\t485\n-603\t1023\t404\t506\t414\t494\n-315\t56\t511\t0\t629\t522\n-719\t1023\t166\t268\t277\t308\n-405\t140\t66\t184\t617\t286\n-645\t1023\t119\t169\t236\t256\n-626\t1023\t136\t283\t180\t248\n-836\t1023\t180\t305\t203\t193\n-656\t1023\t249\t310\t291\t353\n-726\t372\t175\t299\t674\t367\n-684\t1023\t147\t276\t200\t282\n-638\t927\t130\t216\t243\t256\n-354\t133\t523\t120\t694\t565\n-374\t125\t527\t241\t650\t497\n-718\t1023\t189\t235\t278\t259\n-735\t1023\t188\t199\t287\t253\n-381\t156\t87\t57\t646\t606\n-406\t151\t547\t332\t645\t536\n-402\t241\t118\t203\t139\t593\n-405\t106\t539\t202\t624\t504\n-419\t118\t527\t555\t685\t349\n-618\t548\t436\t238\t196\t289\n-281\t107\t19\t211\t54\t460\n-425\t130\t540\t219\t612\t495\n-387\t153\t106\t35\t563\t649\n-398\t87\t505\t241\t611\t528\n-720\t1023\t194\t262\t184\t298\n-699\t880\t166\t238\t248\t235\n-409\t149\t32\t216\t612\t638\n-395\t145\t84\t344\t632\t361\n-394\t109\t473\t219\t659\t355\n-595\t1023\t210\t133\t164\t104\n-387\t139\t77\t0\t632\t583\n-393\t163\t513\t285\t574\t308\n-382\t108\t540\t89\t643\t555\n-565\t932\t176\t209\t268\t76\n-349\t79\t492\t0\t618\t410\n-653\t1023\t187\t202\t250\t282\n-364\t147\t497\t278\t490\t558\n-563\t219\t498\t343\t638\t582\n-787\t1023\t259\t195\t292\t350\n-566\t634\t173\t253\t273\t248\n-403\t107\t529\t457\t623\t371\n-784\t1023\t198\t300\t313\t295\n-983\t1023\t245\t338\t372\t318\n-348\t104\t503\t49\t483\t454\n-448\t222\t130\t278\t732\t443\n-1023\t1023\t519\t526\t592\t406\n-354\t93\t535\t217\t703\t509\n-464\t210\t557\t538\t615\t268\n-395\t103\t108\t87\t583\t593\n-402\t193\t86\t364\t70\t498\n-366\t106\t184\t4\t631\t601\n-360\t110\t500\t86\t513\t554\n-334\t64\t501\t0\t632\t473\n-411\t190\t15\t299\t623\t412\n-737\t986\t151\t234\t159\t210\n-330\t82\t505\t440\t536\t238\n-416\t161\t549\t436\t648\t303\n-401\t187\t534\t295\t579\t192\n-871\t1023\t538\t465\t679\t269\n-324\t103\t475\t559\t584\t511\n-331\t148\t74\t95\t0\t530\n-665\t1023\t198\t178\t276\t283\n-401\t143\t60\t99\t539\t562\n-390\t133\t497\t616\t590\t240\n-708\t975\t175\t270\t257\t96\n-374\t100\t501\t47\t607\t504\n-357\t91\t470\t128\t618\t604\n-484\t527\t183\t214\t256\t285\n-686\t1023\t153\t263\t335\t176\n-409\t146\t542\t0\t669\t444\n-370\t172\t107\t81\t578\t319\n-611\t1023\t200\t306\t269\t298\n-653\t1023\t123\t236\t265\t241\n-333\t87\t480\t509\t681\t462\n-614\t816\t125\t165\t184\t117\n-333\t96\t503\t460\t584\t221\n-362\t183\t113\t270\t604\t227\n-776\t564\t356\t271\t270\t223\n-637\t1023\t185\t299\t259\t296\n-795\t1023\t243\t269\t311\t247\n-415\t107\t481\t403\t545\t288\n-721\t950\t157\t204\t276\t259\n-464\t310\t113\t193\t615\t265\n-668\t400\t415\t202\t230\t229\n-407\t109\t554\t22\t691\t466\n-704\t1023\t297\t277\t294\t121\n-603\t1020\t209\t222\t290\t220\n-577\t1017\t174\t235\t224\t145\n-822\t1023\t155\t171\t274\t185\n-332\t97\t503\t229\t665\t522\n-693\t1023\t166\t259\t307\t211\n-394\t111\t545\t290\t710\t510\n-457\t226\t0\t106\t131\t573\n-554\t1023\t137\t0\t262\t145\n-330\t116\t507\t1\t647\t558\n-619\t983\t105\t151\t199\t257\n-442\t129\t531\t413\t591\t214\n-384\t160\t541\t267\t661\t527\n-687\t1023\t197\t250\t221\t195\n-438\t100\t97\t169\t636\t461\n-383\t168\t105\t183\t620\t581\n-312\t71\t482\t164\t639\t427\n-541\t1023\t166\t207\t266\t103\n-781\t893\t114\t242\t232\t248\n-341\t185\t13\t228\t117\t561\n-694\t370\t391\t254\t311\t330\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/input2.flowtext
--- a/cross_sample/test-data/input2.flowtext Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,20001 +0,0 @@\n-FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\n-363\t76\t550\t200\t0\t127\n-372\t126\t519\t44\t51\t148\n-1023\t1023\t289\t401\t362\t254\n-770\t1023\t175\t361\t225\t237\n-384\t111\t525\t121\t0\t138\n-602\t578\t385\t286\t222\t131\n-788\t1023\t216\t310\t270\t294\n-420\t211\t552\t479\t0\t62\n-668\t1019\t73\t193\t227\t132\n-417\t134\t542\t597\t22\t107\n-755\t1023\t232\t305\t294\t204\n-374\t128\t536\t493\t0\t173\n-332\t71\t495\t0\t60\t34\n-561\t874\t136\t254\t245\t241\n-423\t146\t542\t284\t98\t81\n-261\t74\t477\t0\t5\t72\n-355\t120\t58\t348\t649\t276\n-595\t857\t169\t193\t246\t100\n-749\t662\t434\t318\t216\t247\n-450\t142\t559\t187\t0\t32\n-365\t129\t515\t0\t0\t30\n-370\t181\t76\t357\t74\t314\n-651\t655\t339\t274\t129\t132\n-305\t149\t74\t0\t118\t182\n-375\t85\t285\t137\t0\t0\n-274\t149\t0\t164\t0\t38\n-399\t187\t102\t625\t226\t365\n-602\t1023\t167\t257\t204\t273\n-293\t240\t263\t222\t0\t6\n-671\t929\t112\t215\t182\t170\n-436\t149\t90\t425\t659\t308\n-317\t89\t492\t266\t0\t99\n-363\t146\t6\t527\t194\t64\n-858\t1023\t252\t325\t217\t105\n-266\t152\t91\t173\t44\t12\n-318\t114\t495\t230\t10\t0\n-337\t83\t502\t103\t3\t149\n-619\t977\t159\t241\t274\t5\n-869\t1023\t177\t296\t252\t323\n-734\t388\t470\t143\t93\t238\n-361\t114\t525\t86\t3\t0\n-372\t113\t551\t109\t104\t153\n-333\t239\t363\t529\t121\t263\n-749\t1023\t219\t260\t225\t179\n-353\t194\t77\t352\t663\t182\n-649\t1023\t373\t478\t420\t453\n-416\t118\t535\t291\t91\t38\n-716\t515\t423\t240\t203\t201\n-413\t197\t106\t511\t130\t306\n-370\t110\t517\t252\t66\t141\n-341\t131\t20\t438\t609\t265\n-327\t88\t520\t53\t207\t111\n-340\t75\t520\t0\t0\t33\n-447\t153\t551\t575\t0\t113\n-399\t88\t554\t269\t0\t167\n-380\t96\t484\t557\t138\t173\n-993\t1023\t195\t318\t335\t263\n-375\t147\t554\t168\t0\t72\n-358\t130\t0\t0\t299\t76\n-284\t96\t448\t126\t0\t147\n-744\t1023\t189\t313\t240\t168\n-610\t1023\t158\t232\t231\t234\n-633\t1023\t144\t244\t275\t200\n-477\t584\t84\t403\t131\t161\n-370\t117\t532\t59\t9\t169\n-709\t923\t193\t233\t246\t76\n-342\t152\t533\t92\t66\t161\n-306\t129\t13\t66\t82\t106\n-349\t165\t80\t201\t301\t207\n-650\t1023\t108\t178\t150\t61\n-316\t106\t0\t337\t600\t236\n-535\t435\t368\t226\t10\t83\n-320\t78\t500\t185\t0\t135\n-364\t189\t158\t363\t396\t206\n-367\t134\t552\t0\t129\t208\n-367\t109\t537\t198\t49\t185\n-650\t1023\t113\t289\t213\t258\n-354\t211\t117\t75\t116\t205\n-599\t1023\t131\t186\t252\t181\n-528\t355\t334\t248\t180\t219\n-560\t933\t181\t239\t307\t137\n-262\t88\t3\t189\t0\t165\n-708\t1023\t41\t300\t174\t227\n-532\t862\t158\t113\t259\t179\n-358\t102\t515\t0\t70\t18\n-648\t438\t442\t286\t206\t49\n-410\t141\t518\t323\t182\t3\n-399\t62\t498\t125\t0\t29\n-784\t549\t343\t23\t201\t152\n-342\t169\t102\t195\t24\t146\n-616\t691\t378\t268\t230\t276\n-585\t1009\t164\t124\t223\t236\n-678\t1023\t155\t197\t140\t30\n-378\t113\t76\t464\t624\t173\n-682\t1023\t185\t293\t187\t285\n-402\t143\t568\t262\t0\t68\n-339\t150\t512\t542\t26\t115\n-607\t898\t56\t278\t217\t194\n-333\t93\t524\t129\t0\t103\n-369\t153\t62\t426\t656\t263\n-345\t108\t523\t205\t0\t0\n-615\t747\t199\t285\t260\t263\n-389\t247\t91\t0\t93\t44\n-365\t114\t517\t0\t35\t83\n-362\t83\t547\t236\t39\t87\n-776\t1023\t172\t253\t259\t268\n-368\t120\t539\t198\t20\t84\n-735\t1023\t253\t304\t315\t151\n-350\t138\t54\t284\t652\t243\n-390\t162\t554\t29\t0\t62\n-466\t183\t71\t676\t699\t371\n-370\t120\t244\t117\t85\t19\n-361\t132\t537\t223\t0\t163\n-730\t1023\t187\t307\t303\t208\n-636\t979\t127\t275\t257\t133\n-405\t124\t27\t464\t634\t252\n-329\t109\t108\t315\t546\t216\n-582\t1023\t135\t227\t156\t148\n-348\t120\t501\t39\t74\t201\n-356\t66\t467\t93\t304\t155\n-385\t206\t60\t439\t675\t364\n-351\t116\t520\t549\t43\t71\n-836\t429\t537\t214\t79\t160\n-386\t162\t61\t530\t701\t354\n-413\t180\t119\t476\t670\t272\n-357\t119\t551\t281\t70\t30\n-348\t74\t545\t222\t0\t0\n-414\t154\t0\t354\t606\t178\n-490\t169\t570\t628\t108\t95\n-384\t112\t537\t150\t75\t172\n-754\t1009\t121\t180\t203\t86\n-394\t82\t537\t85\t63\t73\n-942\t1023\t230\t307\t299\t216\n-401\t211\t95\t519\t678\t321\n-686\t1023\t151\t236\t274\t242\n-622\t946\t120\t196\t158\t177\n-615\t1023\t184\t84\t230\t179\n-709\t1019\t181\t275\t148\t236\n-458\t210\t598\t527\t58\t172\n-357\t146\t65\t366\t651\t257\n-621\t1023\t70\t244\t245\t249\n-437\t206\t530\t654\t0\t211\n-974\t1023\t242\t319\t318\t221\n-320\t189\t319\t396\t172\t221\n-323\t72\t482\t186\t0\t156\n-823\t1023\t131\t272\t167\t232\n-660\t1023\t229\t290\t246\t28\n-297\t119\t444\t0\t0\t104\n-393\t117\t82\t503\t658\t196\n-586\t834\t175\t274\t215\t260\n-696\t1023\t100\t205\t219\t278\n-351\t171\t144\t358\t633\t329\n-394\t257\t190\t475\t685\t439\n-373\t120\t541\t0\t19\t15\n-294\t94\t452\t0\t50\t113\n-346\t118\t119\t419\t672\t276\n-647\t1023\t207\t278\t254\t168\n-367\t113\t0\t600\t597\t227\n-352\t191\t59\t199\t59\t111\n-773\t1023\t201\t291\t236\t163\n-509\t1023\t383\t465\t349\t426\n-389\t97\t515\t118\t18\t109\n-383\t98\t521\t207\t160\t170\n-299\t120\t118\t0\t0\t99\n-743\t995\t162\t204\t239\t112\n-342\t135\t49\t164\t647\t262\n-302\t116\t0\t48\t118'..b'99\t523\t205\t122\t138\n-719\t1023\t153\t247\t212\t229\n-713\t371\t431\t309\t311\t247\n-359\t168\t536\t0\t0\t157\n-488\t304\t115\t97\t152\t298\n-378\t188\t114\t593\t628\t231\n-704\t1023\t117\t230\t185\t168\n-337\t122\t472\t103\t179\t85\n-408\t71\t469\t0\t173\t170\n-361\t104\t555\t150\t50\t186\n-875\t1023\t208\t311\t205\t240\n-369\t86\t519\t15\t0\t61\n-336\t161\t70\t286\t616\t166\n-282\t118\t17\t29\t0\t65\n-486\t221\t593\t636\t166\t260\n-676\t1023\t125\t291\t220\t253\n-891\t1023\t209\t318\t301\t228\n-365\t150\t530\t172\t0\t37\n-378\t121\t16\t354\t660\t290\n-363\t133\t52\t398\t674\t255\n-775\t1023\t149\t265\t217\t181\n-334\t82\t502\t71\t27\t162\n-383\t173\t75\t397\t676\t243\n-681\t354\t407\t284\t269\t243\n-386\t133\t545\t103\t93\t112\n-416\t110\t532\t173\t148\t63\n-636\t1023\t132\t243\t243\t203\n-405\t152\t96\t299\t656\t301\n-639\t1023\t132\t308\t183\t280\n-629\t946\t125\t256\t211\t47\n-429\t104\t230\t714\t692\t738\n-700\t1023\t211\t292\t271\t252\n-568\t323\t441\t389\t118\t316\n-323\t97\t507\t183\t120\t51\n-671\t1023\t213\t362\t301\t0\n-329\t134\t94\t146\t0\t173\n-388\t125\t19\t433\t591\t254\n-360\t183\t0\t266\t649\t231\n-331\t78\t489\t41\t0\t131\n-634\t897\t167\t226\t210\t252\n-292\t108\t22\t0\t0\t79\n-336\t111\t0\t316\t655\t258\n-434\t141\t489\t167\t162\t185\n-560\t845\t137\t252\t178\t150\n-396\t145\t568\t147\t0\t128\n-645\t936\t138\t185\t223\t222\n-663\t1023\t155\t260\t230\t151\n-954\t1023\t207\t339\t286\t306\n-674\t972\t195\t257\t173\t45\n-381\t105\t548\t103\t85\t177\n-333\t212\t123\t717\t655\t302\n-600\t1023\t110\t214\t245\t181\n-360\t113\t509\t223\t5\t114\n-600\t1023\t213\t261\t235\t219\n-754\t995\t185\t289\t42\t7\n-427\t157\t86\t174\t569\t270\n-325\t91\t508\t39\t6\t11\n-372\t171\t68\t463\t0\t277\n-402\t215\t527\t646\t191\t44\n-709\t1023\t365\t530\t393\t377\n-291\t126\t76\t0\t114\t159\n-568\t673\t187\t320\t185\t230\n-323\t79\t458\t0\t15\t170\n-406\t161\t536\t605\t0\t212\n-420\t127\t519\t0\t23\t90\n-605\t1023\t237\t166\t258\t187\n-382\t124\t511\t134\t37\t95\n-702\t511\t377\t256\t160\t267\n-596\t1023\t160\t192\t250\t182\n-431\t211\t111\t495\t658\t274\n-703\t1023\t135\t316\t128\t103\n-357\t123\t529\t62\t149\t21\n-772\t1023\t223\t266\t188\t226\n-567\t1023\t130\t251\t253\t104\n-356\t95\t489\t126\t0\t128\n-390\t129\t568\t75\t124\t90\n-691\t1023\t229\t340\t209\t256\n-311\t116\t0\t145\t24\t185\n-381\t130\t101\t619\t649\t367\n-376\t116\t549\t163\t27\t33\n-705\t329\t430\t149\t119\t0\n-670\t1023\t122\t269\t228\t199\n-711\t962\t148\t235\t274\t256\n-641\t1023\t160\t259\t194\t181\n-556\t1023\t135\t247\t279\t164\n-571\t1023\t179\t245\t160\t215\n-392\t100\t515\t65\t0\t45\n-340\t105\t499\t69\t0\t82\n-636\t967\t185\t158\t282\t74\n-373\t132\t500\t217\t34\t48\n-929\t1023\t431\t319\t260\t282\n-345\t120\t507\t0\t0\t124\n-293\t106\t505\t133\t104\t63\n-359\t96\t529\t222\t127\t150\n-381\t176\t551\t222\t0\t156\n-263\t191\t440\t451\t47\t140\n-1013\t1023\t450\t456\t401\t351\n-441\t331\t131\t99\t79\t131\n-317\t129\t514\t0\t143\t39\n-373\t94\t517\t0\t168\t59\n-602\t1023\t100\t189\t188\t93\n-356\t120\t491\t546\t0\t123\n-375\t118\t554\t71\t159\t109\n-387\t95\t494\t196\t152\t0\n-326\t68\t54\t201\t582\t256\n-717\t1023\t230\t275\t270\t195\n-306\t80\t455\t370\t0\t42\n-411\t282\t149\t127\t82\t213\n-405\t122\t116\t436\t653\t360\n-633\t906\t180\t248\t271\t263\n-364\t104\t541\t0\t213\t168\n-313\t133\t48\t167\t117\t61\n-294\t58\t478\t120\t17\t35\n-313\t78\t459\t247\t0\t59\n-389\t148\t563\t146\t154\t85\n-305\t145\t57\t91\t92\t6\n-637\t1023\t154\t242\t291\t226\n-655\t1023\t194\t238\t261\t257\n-632\t1023\t205\t268\t268\t234\n-391\t187\t542\t31\t107\t245\n-305\t122\t38\t0\t130\t112\n-358\t250\t85\t130\t157\t15\n-446\t134\t559\t255\t37\t13\n-386\t138\t531\t74\t133\t167\n-367\t106\t535\t4\t47\t49\n-391\t84\t521\t217\t143\t76\n-357\t110\t515\t171\t93\t38\n-374\t122\t552\t0\t23\t93\n-360\t124\t501\t469\t0\t129\n-533\t1023\t349\t446\t357\t406\n-332\t74\t105\t328\t559\t232\n-466\t232\t146\t351\t263\t85\n-405\t87\t517\t538\t0\t183\n-597\t1023\t143\t242\t241\t208\n-333\t111\t523\t123\t0\t0\n-788\t1023\t202\t311\t298\t227\n-599\t995\t128\t266\t260\t178\n-377\t123\t62\t574\t629\t198\n-719\t1023\t183\t260\t267\t153\n-680\t1023\t159\t287\t251\t255\n-379\t97\t535\t51\t0\t84\n-383\t225\t63\t307\t0\t405\n-597\t987\t222\t220\t201\t244\n-360\t82\t14\t376\t23\t1\n-592\t1023\t104\t276\t212\t164\n-651\t368\t378\t283\t21\t91\n-304\t132\t73\t138\t67\t52\n-380\t160\t543\t273\t0\t68\n-305\t143\t0\t52\t45\t162\n-405\t132\t552\t417\t22\t142\n-366\t99\t509\t0\t102\t183\n-704\t1023\t122\t250\t310\t204\n-713\t1023\t169\t282\t280\t140\n-380\t198\t97\t647\t662\t234\n-577\t273\t318\t268\t329\t260\n-372\t80\t490\t584\t0\t0\n-801\t980\t156\t331\t228\t182\n-402\t153\t38\t594\t656\t289\n-317\t82\t32\t131\t323\t45\n-630\t1023\t101\t188\t157\t153\n-670\t1023\t185\t162\t250\t249\n-338\t108\t536\t0\t0\t119\n-964\t1023\t262\t348\t358\t269\n-639\t823\t129\t263\t178\t177\n-362\t145\t24\t123\t310\t158\n-360\t223\t65\t352\t600\t403\n-1014\t1023\t410\t349\t265\t286\n-656\t1023\t149\t307\t240\t175\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/input3.flowtext
--- a/cross_sample/test-data/input3.flowtext Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,20001 +0,0 @@\n-FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\n-449\t157\t551\t129\t169\t292\n-894\t1023\t199\t277\t320\t227\n-262\t73\t437\t69\t0\t146\n-340\t115\t509\t268\t0\t74\n-316\t76\t50\t0\t60\t129\n-394\t144\t83\t138\t335\t194\n-383\t139\t499\t0\t0\t224\n-800\t1023\t239\t284\t288\t280\n-388\t97\t534\t111\t83\t177\n-481\t117\t566\t247\t157\t99\n-652\t997\t118\t236\t250\t300\n-333\t100\t526\t82\t21\t34\n-636\t1023\t162\t290\t242\t261\n-283\t137\t0\t32\t137\t151\n-389\t105\t538\t36\t0\t130\n-684\t1023\t111\t180\t205\t186\n-688\t1023\t156\t255\t233\t77\n-431\t83\t64\t114\t586\t144\n-788\t1023\t167\t258\t158\t241\n-687\t1023\t94\t234\t218\t133\n-676\t1023\t149\t287\t215\t102\n-869\t1023\t223\t285\t277\t388\n-986\t1023\t267\t290\t261\t224\n-603\t1018\t193\t272\t255\t135\n-404\t168\t532\t113\t0\t0\n-661\t501\t418\t184\t256\t248\n-381\t169\t508\t0\t125\t204\n-686\t860\t49\t190\t225\t97\n-402\t202\t117\t90\t693\t316\n-418\t89\t566\t19\t0\t306\n-303\t119\t35\t155\t87\t108\n-402\t184\t70\t111\t627\t309\n-304\t107\t0\t118\t86\t257\n-360\t124\t26\t10\t615\t209\n-372\t118\t558\t125\t0\t120\n-659\t1023\t341\t246\t228\t256\n-720\t1023\t180\t178\t212\t229\n-712\t1002\t228\t163\t282\t195\n-321\t90\t472\t35\t151\t178\n-376\t154\t54\t61\t587\t264\n-744\t1023\t229\t271\t226\t216\n-329\t149\t82\t173\t629\t269\n-447\t153\t524\t161\t138\t197\n-364\t294\t248\t335\t0\t222\n-645\t1023\t177\t179\t282\t254\n-1023\t1023\t456\t557\t482\t445\n-440\t297\t403\t122\t82\t135\n-432\t115\t572\t165\t78\t225\n-366\t112\t299\t0\t23\t98\n-673\t1023\t230\t330\t294\t261\n-707\t1023\t222\t246\t206\t242\n-628\t1023\t161\t288\t241\t234\n-601\t1023\t126\t296\t278\t191\n-347\t157\t531\t0\t42\t49\n-262\t65\t210\t36\t0\t176\n-349\t101\t481\t139\t96\t211\n-596\t1023\t193\t252\t233\t288\n-375\t112\t546\t184\t59\t88\n-436\t141\t123\t229\t611\t218\n-389\t131\t576\t0\t0\t144\n-353\t97\t477\t204\t0\t221\n-400\t149\t91\t143\t639\t310\n-742\t1023\t225\t277\t114\t241\n-747\t1023\t132\t254\t227\t176\n-350\t122\t489\t194\t0\t99\n-407\t131\t535\t209\t0\t57\n-269\t92\t0\t0\t5\t128\n-355\t142\t540\t103\t115\t84\n-387\t123\t529\t116\t115\t0\n-358\t86\t523\t18\t32\t101\n-388\t132\t105\t99\t653\t329\n-305\t165\t509\t126\t0\t63\n-454\t168\t113\t124\t629\t251\n-400\t121\t176\t0\t581\t240\n-405\t230\t115\t233\t632\t289\n-596\t942\t74\t236\t280\t279\n-380\t211\t72\t236\t670\t255\n-392\t127\t546\t204\t47\t105\n-519\t409\t169\t117\t136\t417\n-767\t1023\t196\t278\t269\t192\n-367\t121\t528\t95\t0\t117\n-378\t175\t507\t201\t0\t227\n-664\t668\t359\t287\t268\t166\n-435\t161\t543\t185\t67\t197\n-358\t233\t0\t136\t148\t331\n-633\t977\t95\t250\t175\t187\n-373\t128\t564\t0\t35\t119\n-386\t123\t547\t0\t65\t181\n-319\t110\t497\t77\t101\t0\n-401\t86\t503\t126\t184\t138\n-364\t136\t0\t161\t15\t0\n-741\t1023\t188\t221\t270\t230\n-677\t510\t416\t268\t195\t188\n-311\t212\t17\t22\t91\t146\n-642\t1023\t152\t268\t221\t196\n-739\t395\t291\t219\t174\t75\n-760\t1023\t175\t247\t284\t198\n-410\t168\t528\t125\t0\t211\n-338\t158\t71\t69\t1\t155\n-401\t137\t34\t223\t641\t291\n-780\t853\t198\t256\t230\t270\n-389\t185\t160\t28\t664\t319\n-369\t130\t567\t21\t0\t38\n-359\t119\t60\t55\t660\t217\n-349\t97\t522\t0\t21\t0\n-553\t762\t136\t193\t137\t198\n-476\t91\t554\t0\t0\t102\n-372\t77\t506\t0\t89\t0\n-628\t1023\t202\t285\t305\t61\n-493\t351\t403\t242\t150\t196\n-393\t181\t128\t0\t148\t83\n-400\t143\t554\t109\t89\t115\n-387\t91\t544\t199\t141\t45\n-564\t924\t104\t220\t170\t249\n-673\t237\t124\t79\t648\t268\n-363\t203\t84\t213\t79\t224\n-353\t83\t517\t168\t70\t133\n-378\t157\t577\t0\t68\t205\n-338\t139\t25\t41\t38\t92\n-330\t70\t0\t55\t597\t165\n-558\t280\t421\t143\t113\t226\n-447\t288\t156\t211\t5\t33\n-341\t112\t457\t22\t0\t116\n-757\t1023\t205\t268\t291\t189\n-375\t112\t541\t20\t14\t0\n-657\t1023\t141\t206\t196\t125\n-356\t114\t550\t0\t0\t101\n-700\t1023\t196\t256\t272\t64\n-629\t1023\t189\t174\t253\t149\n-360\t141\t554\t0\t32\t52\n-362\t108\t543\t219\t158\t128\n-337\t112\t511\t107\t65\t178\n-398\t277\t67\t116\t277\t95\n-767\t1023\t157\t205\t212\t95\n-609\t1023\t348\t474\t390\t429\n-369\t96\t532\t255\t0\t212\n-386\t174\t46\t65\t619\t231\n-336\t115\t492\t87\t0\t105\n-469\t164\t580\t94\t50\t12\n-396\t108\t535\t84\t4\t82\n-452\t159\t534\t176\t169\t176\n-410\t129\t537\t107\t0\t67\n-304\t141\t31\t0\t112\t176\n-863\t1023\t242\t349\t309\t330\n-391\t226\t83\t224\t576\t232\n-701\t1023\t77\t158\t258\t111\n-674\t1023\t151\t247\t256\t238\n-309\t70\t73\t137\t287\t110\n-352\t154\t0\t23\t602\t271\n-352\t152\t130\t0\t29\t161\n-542\t1011\t70\t282\t223\t208\n-713\t1023\t160\t223\t253\t199\n-329\t156\t62\t242\t103\t106\n-341\t112\t537\t34\t102\t138\n-825\t1023\t203\t273\t294\t277\n-537\t308\t449\t0\t0\t86\n-587\t1023\t176\t297\t207\t278\n-402\t121\t513\t130\t0\t131\n-390\t155\t572\t130\t92\t176\n-787\t1023\t206\t298\t198\t167\n-409\t158\t514\t0\t127\t358\n-268\t107\t94\t18\t71\t148\n-395\t112\t66\t0\t486\t162\n-402\t117\t537\t0\t242\t79\n-396\t153\t555\t32\t96\t337\n-322\t120\t259\t134\t0\t123\n-1023\t1023\t448\t348\t352\t357\n-476\t280\t'..b'47\t220\n-354\t99\t525\t0\t142\t353\n-753\t1023\t190\t260\t336\t230\n-435\t149\t561\t67\t10\t301\n-376\t113\t545\t87\t0\t141\n-559\t783\t126\t247\t112\t238\n-393\t169\t562\t222\t118\t177\n-287\t93\t447\t95\t0\t175\n-648\t988\t186\t161\t237\t143\n-360\t96\t536\t218\t0\t116\n-308\t159\t0\t137\t55\t93\n-379\t260\t111\t176\t570\t245\n-421\t99\t508\t0\t128\t100\n-316\t69\t527\t244\t0\t52\n-346\t88\t82\t84\t196\t98\n-424\t180\t563\t119\t0\t56\n-387\t203\t60\t69\t623\t243\n-418\t117\t508\t283\t0\t149\n-653\t800\t119\t209\t182\t110\n-358\t182\t80\t44\t667\t310\n-512\t1023\t125\t168\t262\t201\n-466\t240\t133\t157\t196\t5\n-302\t139\t471\t0\t7\t19\n-361\t114\t533\t0\t0\t275\n-1023\t1023\t263\t311\t246\t309\n-334\t118\t371\t156\t0\t44\n-820\t1023\t294\t313\t318\t305\n-407\t150\t547\t133\t138\t210\n-271\t65\t486\t0\t48\t0\n-364\t121\t541\t49\t94\t229\n-654\t1023\t151\t256\t251\t230\n-366\t143\t555\t195\t0\t15\n-512\t571\t107\t220\t20\t192\n-556\t265\t448\t81\t172\t103\n-424\t228\t43\t132\t616\t310\n-753\t1023\t224\t268\t192\t116\n-360\t96\t533\t15\t109\t138\n-426\t207\t276\t99\t578\t328\n-432\t207\t142\t0\t408\t0\n-640\t580\t445\t287\t171\t207\n-658\t1023\t201\t282\t277\t300\n-666\t1023\t92\t257\t172\t234\n-354\t216\t87\t176\t336\t106\n-356\t176\t42\t0\t170\t134\n-689\t1023\t186\t217\t283\t198\n-346\t115\t516\t155\t0\t132\n-387\t128\t579\t203\t51\t141\n-665\t1023\t122\t229\t165\t78\n-400\t168\t0\t160\t600\t249\n-357\t95\t517\t0\t87\t186\n-373\t158\t534\t228\t53\t103\n-372\t103\t525\t238\t7\t175\n-298\t86\t428\t55\t0\t174\n-348\t131\t546\t6\t0\t55\n-368\t135\t549\t144\t0\t12\n-589\t1023\t333\t446\t322\t395\n-337\t117\t81\t149\t643\t348\n-372\t258\t139\t113\t174\t374\n-827\t1023\t128\t271\t263\t132\n-693\t1023\t179\t292\t201\t287\n-732\t946\t187\t253\t264\t121\n-370\t268\t125\t182\t104\t97\n-554\t761\t111\t293\t224\t233\n-411\t188\t525\t185\t124\t208\n-356\t165\t123\t85\t672\t282\n-353\t92\t508\t124\t141\t66\n-684\t902\t144\t248\t244\t173\n-402\t185\t135\t497\t774\t472\n-380\t144\t527\t156\t62\t31\n-765\t1023\t202\t261\t254\t258\n-1023\t1023\t500\t508\t445\t550\n-1023\t1023\t538\t456\t358\t450\n-652\t921\t131\t204\t107\t223\n-480\t181\t541\t223\t133\t294\n-651\t1023\t174\t340\t182\t19\n-619\t1023\t133\t263\t239\t231\n-374\t93\t520\t0\t0\t138\n-547\t760\t70\t0\t162\t224\n-427\t278\t113\t238\t385\t170\n-753\t1023\t156\t296\t263\t300\n-640\t942\t122\t265\t237\t242\n-348\t94\t507\t300\t109\t22\n-599\t1023\t135\t321\t261\t212\n-591\t948\t188\t176\t247\t130\n-386\t92\t515\t201\t32\t79\n-423\t156\t562\t8\t120\t144\n-581\t1023\t146\t214\t153\t145\n-779\t1023\t208\t308\t295\t319\n-1022\t174\t372\t274\t253\t397\n-395\t112\t554\t213\t64\t109\n-398\t283\t104\t418\t52\t211\n-459\t215\t559\t287\t198\t109\n-366\t160\t536\t218\t156\t122\n-380\t197\t123\t74\t638\t287\n-624\t1023\t133\t241\t194\t265\n-400\t163\t518\t139\t69\t225\n-380\t131\t564\t126\t0\t36\n-283\t146\t65\t180\t134\t0\n-379\t112\t173\t0\t646\t223\n-752\t1023\t129\t258\t239\t245\n-409\t206\t179\t149\t641\t290\n-635\t525\t409\t225\t206\t227\n-680\t1023\t234\t196\t249\t165\n-702\t458\t425\t271\t150\t46\n-734\t511\t416\t176\t152\t200\n-409\t171\t20\t29\t574\t212\n-413\t251\t83\t12\t21\t64\n-737\t1023\t180\t287\t284\t283\n-431\t175\t361\t239\t132\t0\n-353\t114\t50\t0\t621\t271\n-408\t141\t559\t0\t132\t196\n-531\t798\t102\t253\t209\t75\n-619\t1023\t205\t294\t235\t212\n-667\t1023\t187\t234\t288\t219\n-392\t247\t261\t675\t198\t451\n-311\t102\t514\t99\t110\t146\n-460\t125\t559\t0\t0\t73\n-400\t99\t564\t212\t139\t96\n-633\t1023\t168\t232\t214\t195\n-404\t166\t556\t177\t58\t46\n-678\t1023\t210\t305\t274\t229\n-364\t174\t98\t36\t615\t267\n-372\t118\t543\t109\t3\t52\n-672\t1023\t188\t292\t133\t249\n-643\t1023\t216\t273\t296\t169\n-445\t134\t552\t0\t143\t94\n-400\t151\t556\t179\t191\t181\n-701\t1023\t226\t239\t247\t291\n-365\t157\t122\t0\t667\t233\n-385\t88\t542\t89\t180\t60\n-358\t87\t482\t10\t0\t55\n-710\t487\t449\t284\t139\t96\n-371\t134\t510\t19\t14\t351\n-264\t69\t463\t0\t0\t80\n-428\t103\t512\t263\t0\t70\n-614\t490\t462\t229\t120\t325\n-466\t219\t513\t117\t0\t174\n-674\t525\t400\t208\t194\t194\n-324\t110\t506\t66\t32\t128\n-394\t115\t28\t0\t557\t193\n-411\t175\t63\t139\t618\t323\n-611\t303\t345\t92\t88\t100\n-450\t239\t160\t99\t195\t210\n-356\t129\t33\t90\t602\t94\n-605\t1006\t213\t204\t220\t220\n-773\t1023\t237\t275\t210\t167\n-429\t142\t570\t272\t0\t141\n-263\t33\t417\t0\t0\t194\n-347\t148\t26\t0\t630\t300\n-364\t121\t528\t182\t70\t194\n-339\t87\t483\t0\t43\t74\n-692\t1009\t147\t285\t115\t156\n-596\t988\t133\t305\t113\t273\n-847\t1023\t244\t216\t316\t101\n-386\t135\t531\t166\t184\t117\n-621\t970\t37\t127\t238\t274\n-298\t99\t482\t88\t0\t130\n-658\t1023\t117\t165\t208\t188\n-326\t172\t76\t12\t149\t77\n-360\t84\t532\t57\t138\t102\n-886\t1023\t229\t361\t290\t234\n-634\t972\t248\t277\t271\t215\n-332\t164\t0\t73\t246\t210\n-447\t121\t548\t0\t0\t393\n-391\t119\t74\t0\t628\t238\n-340\t100\t528\t245\t0\t8\n-385\t99\t179\t115\t513\t163\n-400\t157\t126\t99\t638\t313\n-431\t97\t527\t156\t122\t197\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/mfi.flowmfi
--- a/cross_sample/test-data/mfi.flowmfi Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,27 +0,0 @@
-Population FSC SSC CD4 CCR7 CD8 CCR3
-1 364 117 520 188 53 71
-2 370 121 523 37 67 187
-3 363 112 512 69 632 482
-4 360 175 84 141 114 520
-5 333 156 56 68 82 109
-6 372 154 75 90 608 251
-7 389 162 83 318 620 304
-8 371 113 517 258 642 505
-9 422 214 138 420 327 640
-10 356 114 521 31 59 68
-11 381 138 85 111 604 565
-12 410 276 119 213 183 161
-13 406 137 516 424 615 305
-14 401 139 526 566 76 108
-15 356 121 322 84 75 110
-16 414 239 104 510 138 200
-17 440 198 509 598 119 289
-18 384 128 524 199 60 194
-19 944 966 490 629 533 541
-20 393 154 82 534 621 267
-21 617 975 145 224 225 173
-22 667 437 389 204 215 283
-23 546 975 366 476 387 448
-24 681 441 392 204 187 132
-25 727 1013 182 269 259 232
-26 960 975 325 343 318 311
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/out1.flowstat1
--- a/cross_sample/test-data/out1.flowstat1 Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,4 +0,0 @@
-FileID SampleName 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
-Rearranged FCSGateTrans on FCS2.003.20Kevents.fcs Sample01 10.18 8.555 0.15 0.42 6.67 13.3 2.985 0.0 0.05 9.825 0.0 3.265 0.065 0.045 1.42 0.495 0.125 7.6 0.465 0.03 14.78 2.36 1.385 2.205 12.0 1.625
-Rearranged FCSGateTrans on FCS2.001.20Kevents.fcs Sample02 0.0 0.41 10.735 5.69 0.275 3.075 2.945 11.245 1.285 0.0 8.975 1.04 10.935 0.085 0.25 0.585 0.015 0.225 0.71 0.535 12.76 2.775 2.01 1.585 19.97 1.885
-Rearranged FCSGateTrans on FCS2.002.20Kevents.fcs Sample03 8.88 5.35 0.05 0.35 4.615 1.945 5.765 0.015 0.18 7.445 0.105 3.0 0.195 4.695 1.61 3.165 1.515 5.28 0.485 7.53 16.55 1.525 1.77 2.64 13.6 1.74
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/out1.flowstat2
--- a/cross_sample/test-data/out1.flowstat2 Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,75 +0,0 @@
-FSC SSC CD4 CCR7 CD8 CCR3 Percentage Population SampleName
-360.93 118.98 521.7 181.35 48.29 76.01 10.18 1 Sample01
-374.35 125.62 525.73 36.34 72.0 197.55 8.56 2 Sample01
-406.43 162.77 410.23 69.3 580.9 275.2 0.15 3 Sample01
-363.32 241.5 99.96 145.89 102.85 318.19 0.42 4 Sample01
-337.09 155.29 56.73 72.34 73.35 112.25 6.67 5 Sample01
-368.59 148.89 69.12 71.72 606.04 237.42 13.3 6 Sample01
-403.26 176.59 94.75 191.8 620.71 263.77 2.99 7 Sample01
-345.6 331.2 292.9 562.5 293.0 413.3 0.05 9 Sample01
-352.15 115.59 519.81 29.88 54.23 72.34 9.83 10 Sample01
-421.38 241.15 115.02 151.72 215.97 147.47 3.26 12 Sample01
-423.08 219.69 405.31 271.0 585.31 272.92 0.06 13 Sample01
-363.33 188.33 360.33 551.11 77.56 198.67 0.04 14 Sample01
-354.94 118.97 301.48 81.19 69.35 117.17 1.42 15 Sample01
-419.08 392.96 120.34 408.48 122.57 168.11 0.5 16 Sample01
-462.0 422.08 421.0 718.08 357.2 480.84 0.12 17 Sample01
-388.6 132.42 528.82 190.06 61.71 205.87 7.6 18 Sample01
-972.67 1014.57 510.17 649.92 498.02 507.34 0.46 19 Sample01
-436.0 331.33 195.33 587.83 698.0 475.67 0.03 20 Sample01
-602.71 967.97 140.02 220.24 213.08 176.15 14.78 21 Sample01
-687.46 490.61 376.69 209.82 192.18 267.15 2.36 22 Sample01
-551.76 988.58 350.25 482.74 364.3 411.62 1.38 23 Sample01
-647.77 387.0 397.71 171.63 167.15 143.66 2.2 24 Sample01
-726.15 1016.99 182.62 264.79 248.23 217.08 12.0 25 Sample01
-969.6 1001.4 329.26 338.48 302.98 333.58 1.62 26 Sample01
-562.4 279.96 395.37 85.56 233.15 423.82 0.41 2 Sample02
-361.23 110.65 512.56 68.97 633.79 483.67 10.74 3 Sample02
-355.26 167.2 73.65 147.5 108.78 528.01 5.69 4 Sample02
-320.36 182.36 72.15 113.6 120.13 198.04 0.27 5 Sample02
-379.34 171.32 79.2 96.05 612.98 319.43 3.08 6 Sample02
-412.99 178.92 94.51 281.53 623.12 374.9 2.94 7 Sample02
-371.1 112.03 517.49 259.35 642.93 505.5 11.24 8 Sample02
-431.34 213.62 133.05 402.6 302.14 645.66 1.28 9 Sample02
-380.63 135.19 85.29 110.18 602.83 574.54 8.98 11 Sample02
-447.85 525.88 156.54 205.92 232.46 226.29 1.04 12 Sample02
-406.39 136.68 517.93 421.76 615.38 306.36 10.94 13 Sample02
-358.41 103.0 460.06 676.12 556.82 164.12 0.08 14 Sample02
-392.88 210.34 274.9 177.9 205.7 226.14 0.25 15 Sample02
-433.7 264.01 107.35 510.36 149.73 224.73 0.58 16 Sample02
-503.0 183.67 512.67 468.67 380.67 284.33 0.02 17 Sample02
-401.98 199.4 351.38 197.56 325.84 376.18 0.22 18 Sample02
-942.13 977.37 496.89 556.9 589.52 591.96 0.71 19 Sample02
-431.49 175.21 108.33 449.62 589.52 338.83 0.53 20 Sample02
-612.66 962.76 145.03 218.29 241.58 218.2 12.76 21 Sample02
-677.97 432.92 394.9 215.63 253.73 320.89 2.78 22 Sample02
-537.34 987.67 377.09 463.75 412.69 504.01 2.01 23 Sample02
-708.86 473.52 400.38 219.62 227.69 178.15 1.58 24 Sample02
-724.21 1017.01 183.89 263.49 272.15 249.63 19.97 25 Sample02
-956.13 990.81 316.68 335.77 337.56 324.8 1.88 26 Sample02
-363.8 112.35 518.73 192.67 50.31 67.22 8.88 1 Sample03
-366.09 113.61 521.93 39.72 65.66 165.65 5.35 2 Sample03
-395.7 119.3 384.9 85.9 585.6 230.1 0.05 3 Sample03
-368.81 204.11 96.34 237.57 86.57 292.1 0.35 4 Sample03
-318.7 144.37 48.23 81.95 64.63 103.98 4.61 5 Sample03
-356.9 131.76 69.32 144.68 612.42 244.06 1.94 6 Sample03
-373.64 149.87 73.71 364.36 620.22 274.19 5.76 7 Sample03
-438.0 176.67 517.33 423.0 277.33 437.33 0.02 8 Sample03
-456.47 368.94 339.69 764.56 534.31 616.89 0.18 9 Sample03
-358.85 110.16 520.35 32.56 61.77 62.47 7.44 10 Sample03
-395.52 201.76 124.0 438.24 675.14 501.81 0.1 11 Sample03
-416.9 238.72 120.19 236.94 187.78 133.18 3.0 12 Sample03
-435.72 195.44 389.95 550.08 631.15 289.23 0.19 13 Sample03
-399.59 136.41 525.52 567.5 69.54 112.64 4.7 14 Sample03
-361.32 113.15 344.56 109.52 71.4 102.73 1.61 15 Sample03
-404.76 196.99 95.3 519.01 130.48 201.21 3.16 16 Sample03
-451.65 196.73 522.28 588.96 117.05 274.0 1.52 17 Sample03
-383.32 121.85 525.67 214.77 64.27 172.42 5.28 18 Sample03
-948.66 979.64 477.21 676.02 492.0 476.04 0.48 19 Sample03
-393.34 154.15 80.74 547.09 620.52 265.14 7.53 20 Sample03
-618.74 977.0 140.47 231.46 216.74 155.22 16.55 21 Sample03
-632.72 434.17 361.81 253.26 192.78 244.91 1.52 22 Sample03
-550.94 992.18 358.59 469.96 366.78 399.73 1.77 23 Sample03
-692.69 478.12 385.77 214.78 183.47 124.04 2.64 24 Sample03
-733.01 1018.55 182.18 275.33 250.23 190.78 13.6 25 Sample03
-971.95 998.45 334.9 363.32 315.39 269.99 1.74 26 Sample03
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/out1.flowstat3
--- a/cross_sample/test-data/out1.flowstat3 Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,27 +0,0 @@
-Population FSC_mean FSC_median FSC_stdev SSC_mean SSC_median SSC_stdev CD4_mean CD4_median CD4_stdev CCR7_mean CCR7_median CCR7_stdev CD8_mean CD8_median CD8_stdev CCR3_mean CCR3_median CCR3_stdev Percentage_mean Percentage_median Percentage_stdev
-1 362.36 362.36 2.03 115.66 115.66 4.69 520.22 520.22 2.1 187.01 187.01 8.0 49.3 49.3 1.43 71.62 71.62 6.22 9.53 9.53 0.92
-2 434.28 374.35 111.03 173.06 125.62 92.77 481.01 521.93 74.19 53.87 39.72 27.49 123.6 72.0 94.92 262.34 197.55 140.75 4.77 5.35 4.11
-3 387.79 395.7 23.62 130.91 119.3 27.93 435.9 410.23 67.59 74.72 69.3 9.68 600.1 585.6 29.27 329.66 275.2 135.27 3.65 0.15 6.14
-4 362.46 363.32 6.82 204.27 204.11 37.15 89.98 96.34 14.26 176.99 147.5 52.47 99.4 102.85 11.5 379.43 318.19 129.33 2.15 0.42 3.06
-5 325.38 320.36 10.17 160.67 155.29 19.56 59.04 56.73 12.13 89.3 81.95 21.59 86.04 73.35 29.85 138.09 112.25 52.08 3.85 4.61 3.27
-6 368.28 368.59 11.22 150.66 148.89 19.84 72.55 69.32 5.76 104.15 96.05 37.15 610.48 612.42 3.86 266.97 244.06 45.55 6.11 3.08 6.26
-7 396.63 403.26 20.5 168.46 176.59 16.14 87.66 94.51 12.08 279.23 281.53 86.3 621.35 620.71 1.55 304.29 274.19 61.37 3.9 2.99 1.61
-8 404.55 404.55 47.31 144.35 144.35 45.71 517.41 517.41 0.11 341.18 341.18 115.72 460.13 460.13 258.52 471.42 471.42 48.2 5.63 5.63 7.93
-9 411.14 431.34 58.13 304.59 331.2 81.01 255.21 292.9 108.35 576.55 562.5 181.39 376.48 302.14 136.76 558.62 616.89 126.67 0.5 0.18 0.68
-10 355.5 355.5 4.74 112.88 112.88 3.84 520.08 520.08 0.38 31.22 31.22 1.9 58.0 58.0 5.33 67.4 67.4 6.98 8.64 8.64 1.69
-11 388.08 388.08 10.53 168.48 168.48 47.07 104.65 104.65 27.37 274.21 274.21 231.97 638.98 638.98 51.13 538.17 538.17 51.43 4.54 4.54 6.28
-12 428.71 421.38 16.73 335.25 241.15 165.09 130.58 120.19 22.63 198.19 205.92 43.13 212.07 215.97 22.59 168.98 147.47 50.14 2.43 3.0 1.21
-13 421.73 423.08 14.71 183.94 195.44 42.68 437.73 405.31 69.88 414.28 421.76 139.69 610.61 615.38 23.29 289.5 289.23 16.72 3.73 0.19 6.24
-14 373.78 363.33 22.49 142.58 136.41 43.0 448.64 460.06 83.19 598.24 567.5 67.94 234.64 77.56 279.04 158.48 164.12 43.29 1.61 0.08 2.68
-15 369.71 361.32 20.31 147.49 118.97 54.51 306.98 301.48 35.15 122.87 109.52 49.72 115.48 71.4 78.14 148.68 117.17 67.47 1.09 1.42 0.74
-16 419.18 419.08 14.47 284.65 264.01 99.6 107.66 107.35 12.52 479.28 510.36 61.47 134.26 130.48 13.97 198.02 201.21 28.44 1.41 0.58 1.51
-17 472.22 462.0 27.16 267.49 196.73 134.04 485.32 512.67 55.91 591.9 588.96 124.73 284.97 357.2 145.9 346.39 284.33 116.55 0.55 0.12 0.84
-18 391.3 388.6 9.62 151.22 132.42 42.06 468.62 525.67 101.55 200.8 197.56 12.67 150.61 64.27 151.76 251.49 205.87 109.27 4.37 5.28 3.77
-19 954.49 948.66 16.08 990.53 979.64 20.85 494.76 496.89 16.58 627.61 649.92 62.61 526.51 498.02 54.65 525.11 507.34 59.97 0.55 0.48 0.14
-20 420.28 431.49 23.44 220.23 175.21 96.79 128.13 108.33 59.81 528.18 547.09 71.02 636.01 620.52 55.87 359.88 338.83 106.83 2.7 0.53 4.19
-21 611.37 612.66 8.09 969.24 967.97 7.2 141.84 140.47 2.77 223.33 220.24 7.11 223.8 216.74 15.51 183.19 176.15 32.07 14.7 14.78 1.9
-22 666.05 677.97 29.25 452.57 434.17 32.95 377.8 376.69 16.57 226.24 215.63 23.58 212.9 192.78 35.36 277.65 267.15 39.06 2.22 2.36 0.64
-23 546.68 550.94 8.1 989.48 988.58 2.38 361.98 358.59 13.74 472.15 469.96 9.68 381.26 366.78 27.25 438.45 411.62 57.08 1.72 1.77 0.32
-24 683.11 692.69 31.65 446.21 473.52 51.33 394.62 397.71 7.78 202.01 214.78 26.42 192.77 183.47 31.32 148.62 143.66 27.39 2.14 2.2 0.53
-25 727.79 726.15 4.62 1017.52 1017.01 0.89 182.9 182.62 0.89 267.87 264.79 6.49 256.87 250.23 13.27 219.16 217.08 29.48 15.19 13.6 4.22
-26 965.89 969.6 8.54 996.89 998.45 5.47 326.95 329.26 9.33 345.86 338.48 15.18 318.64 315.39 17.52 309.46 324.8 34.46 1.75 1.74 0.13
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/out2.flowstat1
--- a/cross_sample/test-data/out2.flowstat1 Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,4 +0,0 @@
-FileID SampleName 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
-Rearranged FCSGateTrans on FCS2.003.20Kevents.fcs Sample01 8.5 9.99 0.12 0.67 5.145 4.76 7.925 0.105 0.165 7.27 3.9 3.7 0.12 0.015 1.325 0.72 0.17 10.48 0.955 0.0 4.35 3.195 3.925 1.435 15.705 5.355
-Rearranged FCSGateTrans on FCS2.001.20Kevents.fcs Sample02 0.05 0.33 9.37 4.345 0.225 1.575 4.41 12.41 2.385 0.0 9.395 0.725 11.265 0.0 0.075 0.5 0.18 0.46 1.54 0.395 3.915 3.635 9.05 0.895 14.01 8.86
-Rearranged FCSGateTrans on FCS2.002.20Kevents.fcs Sample03 7.265 6.76 0.07 0.575 4.185 1.035 8.955 0.16 1.1 5.46 0.995 2.145 0.295 3.74 1.41 2.675 2.53 7.615 0.88 4.68 3.98 2.515 3.275 1.69 20.385 5.625
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/out2.flowstat2
--- a/cross_sample/test-data/out2.flowstat2 Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,76 +0,0 @@
-FSC SSC CD4 CCR7 CD8 CCR3 Percentage Population SampleName
-355.78 114.46 519.34 168.82 0.0 0.0 8.5 1 Sample01
-366.75 118.51 522.91 0.0 0.0 173.37 9.99 2 Sample01
-395.48 148.84 392.96 0.0 586.93 243.93 0.12 3 Sample01
-354.8 191.64 0.0 0.0 0.0 275.85 0.67 4 Sample01
-319.28 138.51 0.0 0.0 0.0 0.0 5.14 5 Sample01
-362.66 143.68 0.0 0.0 555.18 0.0 4.76 6 Sample01
-380.81 152.04 0.0 145.67 614.99 252.75 7.92 7 Sample01
-400.38 174.42 364.97 180.95 586.5 279.3 0.1 8 Sample01
-466.22 295.56 170.77 285.06 183.68 310.72 0.16 9 Sample01
-350.06 111.14 519.16 0.0 0.0 0.0 7.27 10 Sample01
-369.23 147.33 0.0 0.0 631.66 282.47 3.9 11 Sample01
-409.74 209.13 0.0 0.0 0.0 0.0 3.7 12 Sample01
-425.44 428.91 350.72 615.96 500.26 478.29 0.12 13 Sample01
-337.43 123.45 431.7 538.75 0.0 114.12 0.02 14 Sample01
-348.19 106.43 290.24 0.0 0.0 0.0 1.32 15 Sample01
-403.15 365.18 0.0 321.2 0.0 0.0 0.72 16 Sample01
-438.05 324.84 321.28 594.04 0.0 317.46 0.17 17 Sample01
-380.78 125.14 526.06 177.24 0.0 180.63 10.48 18 Sample01
-947.3 1005.61 446.06 514.03 412.83 450.29 0.96 19 Sample01
-564.8 892.55 0.0 0.0 0.0 0.0 4.35 21 Sample01
-666.51 454.64 369.55 0.0 0.0 241.11 3.2 22 Sample01
-601.97 997.64 234.58 333.96 283.79 305.79 3.92 23 Sample01
-650.11 361.04 386.73 0.0 0.0 0.0 1.44 24 Sample01
-648.85 1003.84 0.0 239.36 0.0 0.0 15.7 25 Sample01
-823.2 1013.04 211.5 279.26 260.44 233.45 5.36 26 Sample01
-476.64 216.34 377.33 193.69 240.82 0.0 0.05 1 Sample02
-471.05 266.57 360.02 0.0 199.15 475.21 0.33 2 Sample02
-359.23 107.35 511.79 0.0 632.87 473.39 9.37 3 Sample02
-336.76 151.5 0.0 0.0 0.0 512.43 4.35 4 Sample02
-317.03 152.51 0.0 0.0 0.0 172.25 0.22 5 Sample02
-371.85 156.31 0.0 0.0 594.77 279.72 1.58 6 Sample02
-402.12 171.98 0.0 237.43 620.27 364.06 4.41 7 Sample02
-368.32 108.49 514.9 236.18 641.3 500.82 12.41 8 Sample02
-409.74 195.75 0.0 294.04 0.0 580.59 2.38 9 Sample02
-378.44 132.1 0.0 0.0 600.97 570.17 9.4 11 Sample02
-426.29 523.22 0.0 0.0 0.0 197.13 0.73 12 Sample02
-401.36 127.3 516.01 406.73 613.97 296.09 11.26 13 Sample02
-400.4 219.68 190.49 78.26 125.95 176.58 0.08 15 Sample02
-423.89 256.67 0.0 514.7 0.0 187.2 0.5 16 Sample02
-497.74 393.88 292.7 475.7 352.66 342.82 0.18 17 Sample02
-420.84 217.2 284.35 211.29 245.95 275.71 0.46 18 Sample02
-884.52 972.3 440.63 466.03 477.16 487.96 1.54 19 Sample02
-423.88 161.22 0.0 448.14 577.34 274.5 0.4 20 Sample02
-581.05 892.1 0.0 0.0 233.34 0.0 3.91 21 Sample02
-674.41 425.53 389.33 0.0 236.75 288.13 3.64 22 Sample02
-624.32 1007.46 217.78 295.71 297.25 314.48 9.05 23 Sample02
-718.58 474.62 396.15 0.0 224.48 0.0 0.9 24 Sample02
-660.25 1000.27 0.0 237.39 243.98 0.0 14.01 25 Sample02
-807.85 1014.39 196.22 272.05 278.9 248.53 8.86 26 Sample02
-361.35 109.32 516.61 180.94 0.0 0.0 7.26 1 Sample03
-361.78 108.85 520.87 0.0 0.0 146.36 6.76 2 Sample03
-373.61 121.06 332.84 0.0 583.08 240.41 0.07 3 Sample03
-383.18 197.39 0.0 0.0 0.0 258.69 0.57 4 Sample03
-310.49 136.14 0.0 0.0 0.0 0.0 4.18 5 Sample03
-364.87 131.0 0.0 0.0 489.71 0.0 1.03 6 Sample03
-375.6 144.75 0.0 389.84 622.87 273.03 8.96 7 Sample03
-439.6 306.15 288.84 737.82 594.44 672.52 0.16 8 Sample03
-398.88 189.54 0.0 499.34 0.0 324.64 1.1 9 Sample03
-356.28 107.51 519.27 0.0 0.0 0.0 5.46 10 Sample03
-353.41 129.92 0.0 0.0 641.06 278.58 1.0 11 Sample03
-413.37 228.27 0.0 0.0 0.0 0.0 2.14 12 Sample03
-439.22 239.91 367.79 549.6 553.86 308.33 0.3 13 Sample03
-394.14 128.93 523.27 554.83 0.0 0.0 3.74 14 Sample03
-355.73 103.18 334.1 0.0 0.0 0.0 1.41 15 Sample03
-396.87 187.11 0.0 467.44 0.0 0.0 2.68 16 Sample03
-431.47 165.27 520.82 580.86 0.0 230.86 2.53 17 Sample03
-376.04 115.81 519.43 197.15 0.0 151.84 7.61 18 Sample03
-932.7 989.79 437.87 562.38 426.21 406.49 0.88 19 Sample03
-394.2 149.29 0.0 589.44 603.93 0.0 4.68 20 Sample03
-585.23 908.66 0.0 0.0 0.0 0.0 3.98 21 Sample03
-643.85 436.66 357.78 0.0 0.0 212.63 2.51 22 Sample03
-584.99 986.35 270.28 378.3 0.0 317.27 3.28 23 Sample03
-689.54 462.88 376.1 0.0 0.0 0.0 1.69 24 Sample03
-659.74 1006.36 0.0 251.84 0.0 0.0 20.39 25 Sample03
-836.45 1013.12 214.98 295.93 264.33 0.0 5.62 26 Sample03
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/out2.flowstat3
--- a/cross_sample/test-data/out2.flowstat3 Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,27 +0,0 @@
-Population FSC_mean FSC_median FSC_stdev SSC_mean SSC_median SSC_stdev CD4_mean CD4_median CD4_stdev CCR7_mean CCR7_median CCR7_stdev CD8_mean CD8_median CD8_stdev CCR3_mean CCR3_median CCR3_stdev Percentage_mean Percentage_median Percentage_stdev
-1 397.92 361.35 68.23 146.71 114.46 60.36 471.09 516.61 81.21 181.15 180.94 12.44 80.27 0.0 139.04 0.0 0.0 0.0 5.27 7.26 4.56
-2 399.86 366.75 61.7 164.64 118.51 88.4 467.93 520.87 93.46 0.0 0.0 0.0 66.38 0.0 114.98 264.98 173.37 182.56 5.69 6.76 4.92
-3 376.11 373.61 18.25 125.75 121.06 21.14 412.53 392.96 91.07 0.0 0.0 0.0 600.96 586.93 27.7 319.24 243.93 133.51 3.19 0.12 5.35
-4 358.25 354.8 23.4 180.18 191.64 25.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 348.99 275.85 141.8 1.86 0.67 2.15
-5 315.6 317.03 4.57 142.39 138.51 8.85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 57.42 0.0 99.45 3.18 4.18 2.61
-6 366.46 364.87 4.8 143.66 143.68 12.66 0.0 0.0 0.0 0.0 0.0 0.0 546.55 555.18 53.06 93.24 0.0 161.5 2.46 1.58 2.01
-7 386.18 380.81 14.05 156.26 152.04 14.1 0.0 0.0 0.0 257.65 237.43 123.33 619.38 620.27 4.02 296.61 273.03 59.28 7.1 7.92 2.38
-8 402.77 400.38 35.7 196.35 174.42 100.64 389.57 364.97 115.02 384.98 236.18 306.81 607.41 594.44 29.61 484.21 500.82 197.14 4.22 0.16 7.09
-9 424.95 409.74 36.15 226.95 195.75 59.5 56.92 0.0 98.59 359.48 294.04 121.21 61.23 0.0 106.05 405.32 324.64 151.95 1.21 1.1 1.11
-10 353.17 353.17 4.4 109.32 109.32 2.57 519.21 519.21 0.08 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.36 6.36 1.28
-11 367.03 369.23 12.66 136.45 132.1 9.49 0.0 0.0 0.0 0.0 0.0 0.0 624.56 631.66 20.97 377.07 282.47 167.24 4.77 3.9 4.27
-12 416.47 413.37 8.7 320.21 228.27 176.07 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 65.71 0.0 113.81 2.19 2.14 1.49
-13 422.01 425.44 19.16 265.37 239.91 152.41 411.51 367.79 90.9 524.1 549.6 106.92 556.03 553.86 56.89 360.9 308.33 101.84 3.89 0.3 6.38
-14 365.78 365.78 40.1 126.19 126.19 3.87 477.48 477.48 64.75 546.79 546.79 11.37 0.0 0.0 0.0 57.06 57.06 80.7 1.88 1.88 2.63
-15 368.11 355.73 28.22 143.1 106.43 66.34 271.61 290.24 73.6 26.09 0.0 45.18 41.98 0.0 72.72 58.86 0.0 101.95 0.94 1.32 0.74
-16 407.97 403.15 14.14 269.65 256.67 89.74 0.0 0.0 0.0 434.45 467.44 100.88 0.0 0.0 0.0 62.4 0.0 108.08 1.3 0.72 1.2
-17 455.75 438.05 36.51 294.66 324.84 117.25 378.27 321.28 124.28 550.2 580.86 64.85 117.55 0.0 203.61 297.05 317.46 58.71 0.96 0.18 1.36
-18 392.55 380.78 24.61 152.72 125.14 56.04 443.28 519.43 137.68 195.23 197.15 17.11 81.98 0.0 142.0 202.73 180.63 64.82 6.18 7.61 5.16
-19 921.51 932.7 32.85 989.23 989.79 16.66 441.52 440.63 4.17 514.15 514.03 48.18 438.73 426.21 33.94 448.25 450.29 40.77 1.13 0.96 0.36
-20 409.04 409.04 20.99 155.26 155.26 8.44 0.0 0.0 0.0 518.79 518.79 99.91 590.64 590.64 18.8 137.25 137.25 194.1 2.54 2.54 3.03
-21 577.03 581.05 10.79 897.77 892.55 9.43 0.0 0.0 0.0 0.0 0.0 0.0 77.78 0.0 134.72 0.0 0.0 0.0 4.08 3.98 0.24
-22 661.59 666.51 15.86 438.94 436.66 14.69 372.22 369.55 15.94 0.0 0.0 0.0 78.92 0.0 136.69 247.29 241.11 38.13 3.12 3.2 0.57
-23 603.76 601.97 19.73 997.15 997.64 10.56 240.88 234.58 26.81 335.99 333.96 41.33 193.68 283.79 167.87 312.51 314.48 5.99 5.42 3.92 3.16
-24 686.08 689.54 34.37 432.85 462.88 62.46 386.33 386.73 10.03 0.0 0.0 0.0 74.83 0.0 129.6 0.0 0.0 0.0 1.34 1.44 0.4
-25 656.28 659.74 6.44 1003.49 1003.84 3.06 0.0 0.0 0.0 242.86 239.36 7.84 81.33 0.0 140.86 0.0 0.0 0.0 16.7 15.7 3.31
-26 822.5 823.2 14.31 1013.52 1013.12 0.76 207.57 211.5 9.98 282.41 279.26 12.25 267.89 264.33 9.73 160.66 233.45 139.34 6.61 5.62 1.95
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/run1/input1.flowtext.flowclr
--- a/cross_sample/test-data/run1/input1.flowtext.flowclr Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,20001 +0,0 @@\n-FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n-289\t56\t438\t0\t626\t480\t3\n-352\t153\t30\t147\t483\t386\t6\n-383\t190\t156\t228\t734\t408\t7\n-261\t62\t432\t121\t598\t555\t3\n-451\t120\t537\t338\t568\t201\t13\n-373\t104\t3\t110\t621\t584\t11\n-418\t105\t561\t0\t610\t562\t3\n-358\t185\t0\t292\t641\t327\t7\n-733\t970\t139\t227\t293\t259\t25\n-765\t1023\t71\t239\t233\t253\t25\n-762\t957\t143\t158\t271\t255\t25\n-406\t191\t513\t122\t646\t264\t3\n-695\t1023\t168\t251\t234\t283\t25\n-336\t178\t0\t146\t128\t537\t4\n-668\t1023\t167\t306\t302\t253\t25\n-330\t135\t493\t72\t734\t496\t3\n-618\t1015\t201\t269\t284\t141\t21\n-662\t1023\t204\t241\t273\t149\t25\n-383\t109\t49\t50\t575\t451\t11\n-427\t206\t169\t258\t725\t402\t7\n-369\t152\t216\t569\t738\t684\t20\n-420\t209\t26\t368\t651\t303\t7\n-554\t218\t601\t336\t629\t300\t13\n-425\t229\t89\t416\t616\t373\t20\n-493\t355\t516\t252\t625\t568\t8\n-674\t1023\t211\t243\t259\t310\t25\n-286\t88\t0\t63\t556\t491\t11\n-318\t83\t477\t469\t627\t546\t8\n-297\t65\t489\t324\t618\t518\t8\n-358\t101\t496\t0\t646\t543\t3\n-429\t168\t515\t462\t675\t321\t13\n-364\t105\t504\t298\t602\t460\t8\n-319\t469\t415\t202\t571\t405\t8\n-532\t1023\t390\t528\t406\t507\t23\n-561\t287\t396\t72\t381\t279\t2\n-422\t150\t522\t351\t626\t353\t13\n-448\t149\t529\t288\t612\t270\t13\n-361\t143\t0\t132\t656\t362\t6\n-377\t96\t504\t163\t603\t524\t8\n-837\t1023\t211\t231\t316\t280\t25\n-702\t907\t176\t206\t271\t236\t21\n-367\t130\t570\t0\t661\t568\t3\n-302\t95\t508\t205\t643\t494\t8\n-403\t216\t159\t361\t158\t554\t9\n-427\t215\t188\t0\t711\t381\t6\n-743\t1023\t217\t316\t306\t278\t25\n-746\t339\t238\t433\t692\t433\t20\n-409\t104\t545\t278\t631\t480\t8\n-345\t67\t499\t581\t682\t524\t13\n-292\t171\t69\t115\t70\t463\t4\n-314\t152\t84\t0\t0\t514\t4\n-824\t1023\t220\t273\t315\t179\t25\n-554\t1023\t143\t255\t219\t283\t21\n-700\t998\t193\t261\t294\t148\t25\n-732\t1023\t204\t314\t322\t279\t25\n-360\t84\t467\t425\t577\t278\t13\n-425\t136\t558\t193\t622\t586\t8\n-301\t135\t49\t66\t574\t499\t11\n-356\t146\t511\t110\t635\t287\t3\n-390\t119\t528\t386\t580\t251\t13\n-654\t931\t169\t259\t334\t220\t21\n-385\t255\t102\t211\t671\t449\t7\n-589\t1023\t187\t203\t270\t189\t21\n-678\t1023\t0\t251\t177\t250\t21\n-410\t123\t528\t305\t710\t429\t8\n-362\t90\t514\t292\t642\t531\t8\n-543\t934\t127\t153\t283\t199\t21\n-739\t587\t416\t244\t300\t158\t24\n-406\t98\t497\t428\t621\t364\t13\n-895\t1023\t201\t307\t281\t279\t26\n-330\t123\t7\t230\t577\t247\t6\n-384\t158\t83\t62\t614\t300\t6\n-685\t1023\t197\t257\t209\t278\t25\n-395\t163\t531\t0\t618\t434\t3\n-350\t128\t483\t352\t642\t514\t8\n-339\t119\t124\t127\t546\t556\t11\n-357\t107\t516\t66\t679\t560\t3\n-1023\t1023\t420\t305\t336\t355\t26\n-620\t894\t88\t189\t210\t272\t21\n-618\t970\t394\t238\t179\t201\t21\n-678\t954\t143\t286\t280\t114\t21\n-544\t766\t122\t184\t279\t236\t21\n-416\t138\t120\t358\t578\t228\t7\n-425\t100\t167\t229\t582\t600\t11\n-333\t95\t516\t229\t591\t443\t8\n-396\t147\t554\t263\t608\t280\t13\n-331\t140\t27\t51\t39\t552\t4\n-689\t1023\t204\t267\t316\t276\t25\n-564\t810\t151\t89\t250\t253\t21\n-282\t70\t494\t158\t497\t546\t3\n-378\t127\t550\t189\t629\t555\t8\n-396\t182\t181\t323\t541\t509\t7\n-627\t1011\t239\t262\t314\t225\t25\n-319\t139\t45\t78\t131\t480\t4\n-324\t123\t17\t73\t637\t603\t11\n-398\t95\t555\t173\t643\t518\t8\n-445\t1023\t426\t492\t402\t540\t23\n-671\t1023\t113\t249\t281\t283\t25\n-384\t223\t0\t200\t621\t273\t6\n-780\t1023\t237\t227\t287\t64\t25\n-408\t141\t72\t272\t645\t621\t11\n-672\t1023\t164\t214\t258\t273\t25\n-626\t932\t66\t256\t207\t301\t21\n-398\t111\t118\t165\t589\t531\t11\n-687\t927\t137\t266\t263\t141\t21\n-342\t139\t82\t122\t305\t595\t4\n-736\t393\t454\t252\t235\t324\t22\n-311\t102\t491\t118\t632\t474\t3\n-318\t110\t503\t46\t643\t523\t3\n-623\t1023\t159\t266\t253\t197\t21\n-416\t106\t547\t347\t668\t489\t8\n-350\t91\t93\t199\t590\t577\t11\n-403\t158\t186\t222\t604\t540\t11\n-362\t202\t128\t187\t597\t241\t6\n-628\t886\t205\t244\t172\t201\t21\n-656\t1023\t231\t241\t251\t104\t21\n-731\t981\t141\t207\t273\t165\t25\n-340\t224\t49\t449\t548\t782\t9\n-699\t1023\t259\t233\t266\t220\t25\n-392\t148\t43\t35\t595\t575\t11\n-942\t1023\t199\t308\t335\t193\t26\n-312\t164\t35\t103\t0\t461\t4\n-822\t1023\t202\t311\t252\t308\t25\n-683\t457\t339\t241\t182\t180\t24\n-683\t1023\t180\t263\t277\t261\t25\n-397\t174\t25\t20\t654\t616\t11\n-324\t77\t487\t0\t623\t518\t3\n-371\t146\t511\t36\t648\t414\t3\n-399\t162\t144\t64\t622\t589\t11\n-682\t1023\t157\t221\t257\t233\t25\n-590\t922\t199\t196\t271\t146\t21\n-393\t105\t506\t253\t497\t251\t13\n-633\t1023\t41\t145\t256\t162\t21\n-550\t232\t350\t249\t197\t556\t18\n-355\t99\t523\t31\t646\t507\t3\n-434\t202\t88\t311\t725\t360\t7\n-696\t1023\t222\t263\t293\t283\t25\n-725\t345\t375\t211\t267\t260\t22\n-678\t1023\t163\t273\t259\t286\t25\n-559\t831\t132\t272\t323\t237\t21\n-298\t110\t506\t382\t669\t443\t8\n-334\t117\t542\t4\t628\t525\t3\n-681\t1023\t206\t236\t252\t223\t25\n-638\t1023\t167\t225\t290\t234\t21\n-297\t101\t0\t33\t579\t305\t6\n-359\t1'..b'2\t232\t24\n-363\t83\t464\t526\t458\t398\t13\n-404\t143\t538\t282\t581\t229\t13\n-535\t1023\t133\t259\t238\t118\t21\n-454\t1023\t240\t324\t338\t257\t21\n-430\t212\t534\t498\t646\t266\t13\n-290\t78\t445\t508\t645\t476\t13\n-431\t165\t549\t489\t659\t263\t13\n-350\t110\t536\t136\t638\t609\t3\n-434\t169\t89\t212\t630\t664\t11\n-681\t282\t338\t196\t221\t147\t24\n-466\t779\t167\t101\t125\t188\t21\n-330\t176\t81\t67\t47\t499\t4\n-409\t138\t550\t347\t649\t324\t13\n-595\t962\t186\t253\t220\t172\t21\n-704\t986\t218\t244\t283\t207\t25\n-382\t119\t539\t354\t615\t558\t8\n-406\t181\t541\t566\t661\t196\t13\n-654\t1023\t171\t304\t320\t271\t25\n-367\t174\t75\t300\t598\t294\t7\n-383\t119\t536\t205\t660\t582\t8\n-329\t92\t510\t240\t652\t574\t8\n-473\t217\t161\t90\t0\t601\t4\n-556\t278\t479\t118\t264\t627\t2\n-655\t1023\t211\t250\t296\t291\t25\n-361\t120\t96\t24\t600\t557\t11\n-468\t1023\t366\t419\t409\t500\t23\n-303\t89\t91\t90\t602\t563\t11\n-315\t169\t39\t0\t0\t476\t4\n-315\t99\t521\t140\t650\t499\t3\n-419\t126\t81\t186\t624\t677\t11\n-748\t1023\t177\t287\t236\t140\t25\n-342\t100\t49\t52\t569\t507\t11\n-730\t1023\t217\t327\t278\t308\t25\n-389\t197\t76\t26\t626\t337\t6\n-593\t900\t215\t209\t285\t248\t21\n-685\t1023\t137\t278\t318\t109\t25\n-454\t149\t550\t469\t585\t294\t13\n-380\t235\t117\t220\t651\t327\t7\n-358\t53\t476\t302\t674\t485\t8\n-603\t1023\t404\t506\t414\t494\t23\n-315\t56\t511\t0\t629\t522\t3\n-719\t1023\t166\t268\t277\t308\t25\n-405\t140\t66\t184\t617\t286\t6\n-645\t1023\t119\t169\t236\t256\t21\n-626\t1023\t136\t283\t180\t248\t21\n-836\t1023\t180\t305\t203\t193\t25\n-656\t1023\t249\t310\t291\t353\t25\n-726\t372\t175\t299\t674\t367\t7\n-684\t1023\t147\t276\t200\t282\t25\n-638\t927\t130\t216\t243\t256\t21\n-354\t133\t523\t120\t694\t565\t3\n-374\t125\t527\t241\t650\t497\t8\n-718\t1023\t189\t235\t278\t259\t25\n-735\t1023\t188\t199\t287\t253\t25\n-381\t156\t87\t57\t646\t606\t11\n-406\t151\t547\t332\t645\t536\t8\n-402\t241\t118\t203\t139\t593\t4\n-405\t106\t539\t202\t624\t504\t8\n-419\t118\t527\t555\t685\t349\t13\n-618\t548\t436\t238\t196\t289\t22\n-281\t107\t19\t211\t54\t460\t4\n-425\t130\t540\t219\t612\t495\t8\n-387\t153\t106\t35\t563\t649\t11\n-398\t87\t505\t241\t611\t528\t8\n-720\t1023\t194\t262\t184\t298\t25\n-699\t880\t166\t238\t248\t235\t21\n-409\t149\t32\t216\t612\t638\t11\n-395\t145\t84\t344\t632\t361\t7\n-394\t109\t473\t219\t659\t355\t8\n-595\t1023\t210\t133\t164\t104\t21\n-387\t139\t77\t0\t632\t583\t11\n-393\t163\t513\t285\t574\t308\t13\n-382\t108\t540\t89\t643\t555\t3\n-565\t932\t176\t209\t268\t76\t21\n-349\t79\t492\t0\t618\t410\t3\n-653\t1023\t187\t202\t250\t282\t25\n-364\t147\t497\t278\t490\t558\t8\n-563\t219\t498\t343\t638\t582\t8\n-787\t1023\t259\t195\t292\t350\t25\n-566\t634\t173\t253\t273\t248\t12\n-403\t107\t529\t457\t623\t371\t13\n-784\t1023\t198\t300\t313\t295\t25\n-983\t1023\t245\t338\t372\t318\t26\n-348\t104\t503\t49\t483\t454\t3\n-448\t222\t130\t278\t732\t443\t7\n-1023\t1023\t519\t526\t592\t406\t19\n-354\t93\t535\t217\t703\t509\t8\n-464\t210\t557\t538\t615\t268\t13\n-395\t103\t108\t87\t583\t593\t11\n-402\t193\t86\t364\t70\t498\t4\n-366\t106\t184\t4\t631\t601\t11\n-360\t110\t500\t86\t513\t554\t3\n-334\t64\t501\t0\t632\t473\t3\n-411\t190\t15\t299\t623\t412\t7\n-737\t986\t151\t234\t159\t210\t25\n-330\t82\t505\t440\t536\t238\t13\n-416\t161\t549\t436\t648\t303\t13\n-401\t187\t534\t295\t579\t192\t13\n-871\t1023\t538\t465\t679\t269\t19\n-324\t103\t475\t559\t584\t511\t13\n-331\t148\t74\t95\t0\t530\t4\n-665\t1023\t198\t178\t276\t283\t25\n-401\t143\t60\t99\t539\t562\t11\n-390\t133\t497\t616\t590\t240\t13\n-708\t975\t175\t270\t257\t96\t25\n-374\t100\t501\t47\t607\t504\t3\n-357\t91\t470\t128\t618\t604\t3\n-484\t527\t183\t214\t256\t285\t12\n-686\t1023\t153\t263\t335\t176\t25\n-409\t146\t542\t0\t669\t444\t3\n-370\t172\t107\t81\t578\t319\t6\n-611\t1023\t200\t306\t269\t298\t25\n-653\t1023\t123\t236\t265\t241\t21\n-333\t87\t480\t509\t681\t462\t13\n-614\t816\t125\t165\t184\t117\t21\n-333\t96\t503\t460\t584\t221\t13\n-362\t183\t113\t270\t604\t227\t7\n-776\t564\t356\t271\t270\t223\t24\n-637\t1023\t185\t299\t259\t296\t25\n-795\t1023\t243\t269\t311\t247\t25\n-415\t107\t481\t403\t545\t288\t13\n-721\t950\t157\t204\t276\t259\t25\n-464\t310\t113\t193\t615\t265\t6\n-668\t400\t415\t202\t230\t229\t22\n-407\t109\t554\t22\t691\t466\t3\n-704\t1023\t297\t277\t294\t121\t25\n-603\t1020\t209\t222\t290\t220\t21\n-577\t1017\t174\t235\t224\t145\t21\n-822\t1023\t155\t171\t274\t185\t25\n-332\t97\t503\t229\t665\t522\t8\n-693\t1023\t166\t259\t307\t211\t25\n-394\t111\t545\t290\t710\t510\t8\n-457\t226\t0\t106\t131\t573\t4\n-554\t1023\t137\t0\t262\t145\t21\n-330\t116\t507\t1\t647\t558\t3\n-619\t983\t105\t151\t199\t257\t21\n-442\t129\t531\t413\t591\t214\t13\n-384\t160\t541\t267\t661\t527\t8\n-687\t1023\t197\t250\t221\t195\t25\n-438\t100\t97\t169\t636\t461\t11\n-383\t168\t105\t183\t620\t581\t11\n-312\t71\t482\t164\t639\t427\t3\n-541\t1023\t166\t207\t266\t103\t21\n-781\t893\t114\t242\t232\t248\t25\n-341\t185\t13\t228\t117\t561\t4\n-694\t370\t391\t254\t311\t330\t22\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/run1/input2.flowtext.flowclr
--- a/cross_sample/test-data/run1/input2.flowtext.flowclr Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,20001 +0,0 @@\n-FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n-363\t76\t550\t200\t0\t127\t1\n-372\t126\t519\t44\t51\t148\t2\n-1023\t1023\t289\t401\t362\t254\t26\n-770\t1023\t175\t361\t225\t237\t25\n-384\t111\t525\t121\t0\t138\t1\n-602\t578\t385\t286\t222\t131\t24\n-788\t1023\t216\t310\t270\t294\t25\n-420\t211\t552\t479\t0\t62\t14\n-668\t1019\t73\t193\t227\t132\t21\n-417\t134\t542\t597\t22\t107\t14\n-755\t1023\t232\t305\t294\t204\t25\n-374\t128\t536\t493\t0\t173\t14\n-332\t71\t495\t0\t60\t34\t10\n-561\t874\t136\t254\t245\t241\t21\n-423\t146\t542\t284\t98\t81\t1\n-261\t74\t477\t0\t5\t72\t10\n-355\t120\t58\t348\t649\t276\t7\n-595\t857\t169\t193\t246\t100\t21\n-749\t662\t434\t318\t216\t247\t22\n-450\t142\t559\t187\t0\t32\t1\n-365\t129\t515\t0\t0\t30\t10\n-370\t181\t76\t357\t74\t314\t4\n-651\t655\t339\t274\t129\t132\t24\n-305\t149\t74\t0\t118\t182\t5\n-375\t85\t285\t137\t0\t0\t15\n-274\t149\t0\t164\t0\t38\t5\n-399\t187\t102\t625\t226\t365\t16\n-602\t1023\t167\t257\t204\t273\t21\n-293\t240\t263\t222\t0\t6\t15\n-671\t929\t112\t215\t182\t170\t21\n-436\t149\t90\t425\t659\t308\t7\n-317\t89\t492\t266\t0\t99\t1\n-363\t146\t6\t527\t194\t64\t16\n-858\t1023\t252\t325\t217\t105\t25\n-266\t152\t91\t173\t44\t12\t5\n-318\t114\t495\t230\t10\t0\t1\n-337\t83\t502\t103\t3\t149\t2\n-619\t977\t159\t241\t274\t5\t21\n-869\t1023\t177\t296\t252\t323\t25\n-734\t388\t470\t143\t93\t238\t22\n-361\t114\t525\t86\t3\t0\t10\n-372\t113\t551\t109\t104\t153\t2\n-333\t239\t363\t529\t121\t263\t17\n-749\t1023\t219\t260\t225\t179\t25\n-353\t194\t77\t352\t663\t182\t7\n-649\t1023\t373\t478\t420\t453\t23\n-416\t118\t535\t291\t91\t38\t1\n-716\t515\t423\t240\t203\t201\t24\n-413\t197\t106\t511\t130\t306\t16\n-370\t110\t517\t252\t66\t141\t18\n-341\t131\t20\t438\t609\t265\t7\n-327\t88\t520\t53\t207\t111\t10\n-340\t75\t520\t0\t0\t33\t10\n-447\t153\t551\t575\t0\t113\t14\n-399\t88\t554\t269\t0\t167\t18\n-380\t96\t484\t557\t138\t173\t14\n-993\t1023\t195\t318\t335\t263\t26\n-375\t147\t554\t168\t0\t72\t1\n-358\t130\t0\t0\t299\t76\t5\n-284\t96\t448\t126\t0\t147\t1\n-744\t1023\t189\t313\t240\t168\t25\n-610\t1023\t158\t232\t231\t234\t21\n-633\t1023\t144\t244\t275\t200\t21\n-477\t584\t84\t403\t131\t161\t12\n-370\t117\t532\t59\t9\t169\t2\n-709\t923\t193\t233\t246\t76\t21\n-342\t152\t533\t92\t66\t161\t2\n-306\t129\t13\t66\t82\t106\t5\n-349\t165\t80\t201\t301\t207\t12\n-650\t1023\t108\t178\t150\t61\t21\n-316\t106\t0\t337\t600\t236\t7\n-535\t435\t368\t226\t10\t83\t24\n-320\t78\t500\t185\t0\t135\t1\n-364\t189\t158\t363\t396\t206\t7\n-367\t134\t552\t0\t129\t208\t2\n-367\t109\t537\t198\t49\t185\t18\n-650\t1023\t113\t289\t213\t258\t25\n-354\t211\t117\t75\t116\t205\t5\n-599\t1023\t131\t186\t252\t181\t21\n-528\t355\t334\t248\t180\t219\t22\n-560\t933\t181\t239\t307\t137\t21\n-262\t88\t3\t189\t0\t165\t5\n-708\t1023\t41\t300\t174\t227\t25\n-532\t862\t158\t113\t259\t179\t21\n-358\t102\t515\t0\t70\t18\t10\n-648\t438\t442\t286\t206\t49\t24\n-410\t141\t518\t323\t182\t3\t1\n-399\t62\t498\t125\t0\t29\t1\n-784\t549\t343\t23\t201\t152\t24\n-342\t169\t102\t195\t24\t146\t5\n-616\t691\t378\t268\t230\t276\t22\n-585\t1009\t164\t124\t223\t236\t21\n-678\t1023\t155\t197\t140\t30\t21\n-378\t113\t76\t464\t624\t173\t20\n-682\t1023\t185\t293\t187\t285\t25\n-402\t143\t568\t262\t0\t68\t1\n-339\t150\t512\t542\t26\t115\t14\n-607\t898\t56\t278\t217\t194\t21\n-333\t93\t524\t129\t0\t103\t1\n-369\t153\t62\t426\t656\t263\t7\n-345\t108\t523\t205\t0\t0\t1\n-615\t747\t199\t285\t260\t263\t21\n-389\t247\t91\t0\t93\t44\t5\n-365\t114\t517\t0\t35\t83\t10\n-362\t83\t547\t236\t39\t87\t1\n-776\t1023\t172\t253\t259\t268\t25\n-368\t120\t539\t198\t20\t84\t1\n-735\t1023\t253\t304\t315\t151\t25\n-350\t138\t54\t284\t652\t243\t7\n-390\t162\t554\t29\t0\t62\t10\n-466\t183\t71\t676\t699\t371\t20\n-370\t120\t244\t117\t85\t19\t15\n-361\t132\t537\t223\t0\t163\t18\n-730\t1023\t187\t307\t303\t208\t25\n-636\t979\t127\t275\t257\t133\t21\n-405\t124\t27\t464\t634\t252\t20\n-329\t109\t108\t315\t546\t216\t7\n-582\t1023\t135\t227\t156\t148\t21\n-348\t120\t501\t39\t74\t201\t2\n-356\t66\t467\t93\t304\t155\t2\n-385\t206\t60\t439\t675\t364\t7\n-351\t116\t520\t549\t43\t71\t14\n-836\t429\t537\t214\t79\t160\t24\n-386\t162\t61\t530\t701\t354\t20\n-413\t180\t119\t476\t670\t272\t20\n-357\t119\t551\t281\t70\t30\t1\n-348\t74\t545\t222\t0\t0\t1\n-414\t154\t0\t354\t606\t178\t7\n-490\t169\t570\t628\t108\t95\t14\n-384\t112\t537\t150\t75\t172\t18\n-754\t1009\t121\t180\t203\t86\t21\n-394\t82\t537\t85\t63\t73\t10\n-942\t1023\t230\t307\t299\t216\t26\n-401\t211\t95\t519\t678\t321\t20\n-686\t1023\t151\t236\t274\t242\t25\n-622\t946\t120\t196\t158\t177\t21\n-615\t1023\t184\t84\t230\t179\t21\n-709\t1019\t181\t275\t148\t236\t25\n-458\t210\t598\t527\t58\t172\t14\n-357\t146\t65\t366\t651\t257\t7\n-621\t1023\t70\t244\t245\t249\t21\n-437\t206\t530\t654\t0\t211\t17\n-974\t1023\t242\t319\t318\t221\t26\n-320\t189\t319\t396\t172\t221\t16\n-323\t72\t482\t186\t0\t156\t18\n-823\t1023\t131\t272\t167\t232\t25\n-660\t1023\t229\t290\t246\t28\t21\n-297\t119\t444\t0\t0\t104\t10\n-393\t117\t82\t503\t658\t196\t20\n-586\t834\t175\t274'..b'26\n-365\t150\t530\t172\t0\t37\t1\n-378\t121\t16\t354\t660\t290\t7\n-363\t133\t52\t398\t674\t255\t7\n-775\t1023\t149\t265\t217\t181\t25\n-334\t82\t502\t71\t27\t162\t2\n-383\t173\t75\t397\t676\t243\t7\n-681\t354\t407\t284\t269\t243\t22\n-386\t133\t545\t103\t93\t112\t2\n-416\t110\t532\t173\t148\t63\t1\n-636\t1023\t132\t243\t243\t203\t21\n-405\t152\t96\t299\t656\t301\t7\n-639\t1023\t132\t308\t183\t280\t25\n-629\t946\t125\t256\t211\t47\t21\n-429\t104\t230\t714\t692\t738\t9\n-700\t1023\t211\t292\t271\t252\t25\n-568\t323\t441\t389\t118\t316\t22\n-323\t97\t507\t183\t120\t51\t1\n-671\t1023\t213\t362\t301\t0\t25\n-329\t134\t94\t146\t0\t173\t5\n-388\t125\t19\t433\t591\t254\t7\n-360\t183\t0\t266\t649\t231\t7\n-331\t78\t489\t41\t0\t131\t2\n-634\t897\t167\t226\t210\t252\t21\n-292\t108\t22\t0\t0\t79\t5\n-336\t111\t0\t316\t655\t258\t7\n-434\t141\t489\t167\t162\t185\t18\n-560\t845\t137\t252\t178\t150\t21\n-396\t145\t568\t147\t0\t128\t1\n-645\t936\t138\t185\t223\t222\t21\n-663\t1023\t155\t260\t230\t151\t21\n-954\t1023\t207\t339\t286\t306\t26\n-674\t972\t195\t257\t173\t45\t21\n-381\t105\t548\t103\t85\t177\t2\n-333\t212\t123\t717\t655\t302\t20\n-600\t1023\t110\t214\t245\t181\t21\n-360\t113\t509\t223\t5\t114\t1\n-600\t1023\t213\t261\t235\t219\t21\n-754\t995\t185\t289\t42\t7\t21\n-427\t157\t86\t174\t569\t270\t6\n-325\t91\t508\t39\t6\t11\t10\n-372\t171\t68\t463\t0\t277\t16\n-402\t215\t527\t646\t191\t44\t14\n-709\t1023\t365\t530\t393\t377\t23\n-291\t126\t76\t0\t114\t159\t5\n-568\t673\t187\t320\t185\t230\t22\n-323\t79\t458\t0\t15\t170\t2\n-406\t161\t536\t605\t0\t212\t14\n-420\t127\t519\t0\t23\t90\t10\n-605\t1023\t237\t166\t258\t187\t21\n-382\t124\t511\t134\t37\t95\t1\n-702\t511\t377\t256\t160\t267\t22\n-596\t1023\t160\t192\t250\t182\t21\n-431\t211\t111\t495\t658\t274\t20\n-703\t1023\t135\t316\t128\t103\t21\n-357\t123\t529\t62\t149\t21\t10\n-772\t1023\t223\t266\t188\t226\t25\n-567\t1023\t130\t251\t253\t104\t21\n-356\t95\t489\t126\t0\t128\t1\n-390\t129\t568\t75\t124\t90\t10\n-691\t1023\t229\t340\t209\t256\t25\n-311\t116\t0\t145\t24\t185\t5\n-381\t130\t101\t619\t649\t367\t20\n-376\t116\t549\t163\t27\t33\t1\n-705\t329\t430\t149\t119\t0\t24\n-670\t1023\t122\t269\t228\t199\t21\n-711\t962\t148\t235\t274\t256\t25\n-641\t1023\t160\t259\t194\t181\t21\n-556\t1023\t135\t247\t279\t164\t21\n-571\t1023\t179\t245\t160\t215\t21\n-392\t100\t515\t65\t0\t45\t10\n-340\t105\t499\t69\t0\t82\t10\n-636\t967\t185\t158\t282\t74\t21\n-373\t132\t500\t217\t34\t48\t1\n-929\t1023\t431\t319\t260\t282\t26\n-345\t120\t507\t0\t0\t124\t10\n-293\t106\t505\t133\t104\t63\t1\n-359\t96\t529\t222\t127\t150\t18\n-381\t176\t551\t222\t0\t156\t18\n-263\t191\t440\t451\t47\t140\t14\n-1013\t1023\t450\t456\t401\t351\t26\n-441\t331\t131\t99\t79\t131\t12\n-317\t129\t514\t0\t143\t39\t10\n-373\t94\t517\t0\t168\t59\t10\n-602\t1023\t100\t189\t188\t93\t21\n-356\t120\t491\t546\t0\t123\t14\n-375\t118\t554\t71\t159\t109\t10\n-387\t95\t494\t196\t152\t0\t1\n-326\t68\t54\t201\t582\t256\t6\n-717\t1023\t230\t275\t270\t195\t25\n-306\t80\t455\t370\t0\t42\t1\n-411\t282\t149\t127\t82\t213\t12\n-405\t122\t116\t436\t653\t360\t7\n-633\t906\t180\t248\t271\t263\t21\n-364\t104\t541\t0\t213\t168\t2\n-313\t133\t48\t167\t117\t61\t5\n-294\t58\t478\t120\t17\t35\t1\n-313\t78\t459\t247\t0\t59\t1\n-389\t148\t563\t146\t154\t85\t1\n-305\t145\t57\t91\t92\t6\t5\n-637\t1023\t154\t242\t291\t226\t21\n-655\t1023\t194\t238\t261\t257\t25\n-632\t1023\t205\t268\t268\t234\t25\n-391\t187\t542\t31\t107\t245\t2\n-305\t122\t38\t0\t130\t112\t5\n-358\t250\t85\t130\t157\t15\t12\n-446\t134\t559\t255\t37\t13\t1\n-386\t138\t531\t74\t133\t167\t2\n-367\t106\t535\t4\t47\t49\t10\n-391\t84\t521\t217\t143\t76\t1\n-357\t110\t515\t171\t93\t38\t1\n-374\t122\t552\t0\t23\t93\t10\n-360\t124\t501\t469\t0\t129\t14\n-533\t1023\t349\t446\t357\t406\t23\n-332\t74\t105\t328\t559\t232\t7\n-466\t232\t146\t351\t263\t85\t12\n-405\t87\t517\t538\t0\t183\t14\n-597\t1023\t143\t242\t241\t208\t21\n-333\t111\t523\t123\t0\t0\t1\n-788\t1023\t202\t311\t298\t227\t25\n-599\t995\t128\t266\t260\t178\t21\n-377\t123\t62\t574\t629\t198\t20\n-719\t1023\t183\t260\t267\t153\t25\n-680\t1023\t159\t287\t251\t255\t25\n-379\t97\t535\t51\t0\t84\t10\n-383\t225\t63\t307\t0\t405\t4\n-597\t987\t222\t220\t201\t244\t21\n-360\t82\t14\t376\t23\t1\t16\n-592\t1023\t104\t276\t212\t164\t21\n-651\t368\t378\t283\t21\t91\t24\n-304\t132\t73\t138\t67\t52\t5\n-380\t160\t543\t273\t0\t68\t1\n-305\t143\t0\t52\t45\t162\t5\n-405\t132\t552\t417\t22\t142\t14\n-366\t99\t509\t0\t102\t183\t2\n-704\t1023\t122\t250\t310\t204\t25\n-713\t1023\t169\t282\t280\t140\t25\n-380\t198\t97\t647\t662\t234\t20\n-577\t273\t318\t268\t329\t260\t22\n-372\t80\t490\t584\t0\t0\t14\n-801\t980\t156\t331\t228\t182\t25\n-402\t153\t38\t594\t656\t289\t20\n-317\t82\t32\t131\t323\t45\t5\n-630\t1023\t101\t188\t157\t153\t21\n-670\t1023\t185\t162\t250\t249\t25\n-338\t108\t536\t0\t0\t119\t10\n-964\t1023\t262\t348\t358\t269\t26\n-639\t823\t129\t263\t178\t177\t21\n-362\t145\t24\t123\t310\t158\t12\n-360\t223\t65\t352\t600\t403\t7\n-1014\t1023\t410\t349\t265\t286\t26\n-656\t1023\t149\t307\t240\t175\t25\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/run1/input3.flowtext.flowclr
--- a/cross_sample/test-data/run1/input3.flowtext.flowclr Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,20001 +0,0 @@\n-FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n-449\t157\t551\t129\t169\t292\t18\n-894\t1023\t199\t277\t320\t227\t25\n-262\t73\t437\t69\t0\t146\t10\n-340\t115\t509\t268\t0\t74\t1\n-316\t76\t50\t0\t60\t129\t5\n-394\t144\t83\t138\t335\t194\t12\n-383\t139\t499\t0\t0\t224\t2\n-800\t1023\t239\t284\t288\t280\t25\n-388\t97\t534\t111\t83\t177\t2\n-481\t117\t566\t247\t157\t99\t1\n-652\t997\t118\t236\t250\t300\t25\n-333\t100\t526\t82\t21\t34\t10\n-636\t1023\t162\t290\t242\t261\t25\n-283\t137\t0\t32\t137\t151\t5\n-389\t105\t538\t36\t0\t130\t10\n-684\t1023\t111\t180\t205\t186\t21\n-688\t1023\t156\t255\t233\t77\t21\n-431\t83\t64\t114\t586\t144\t6\n-788\t1023\t167\t258\t158\t241\t25\n-687\t1023\t94\t234\t218\t133\t21\n-676\t1023\t149\t287\t215\t102\t21\n-869\t1023\t223\t285\t277\t388\t26\n-986\t1023\t267\t290\t261\t224\t26\n-603\t1018\t193\t272\t255\t135\t21\n-404\t168\t532\t113\t0\t0\t1\n-661\t501\t418\t184\t256\t248\t22\n-381\t169\t508\t0\t125\t204\t2\n-686\t860\t49\t190\t225\t97\t21\n-402\t202\t117\t90\t693\t316\t6\n-418\t89\t566\t19\t0\t306\t2\n-303\t119\t35\t155\t87\t108\t5\n-402\t184\t70\t111\t627\t309\t6\n-304\t107\t0\t118\t86\t257\t5\n-360\t124\t26\t10\t615\t209\t6\n-372\t118\t558\t125\t0\t120\t1\n-659\t1023\t341\t246\t228\t256\t25\n-720\t1023\t180\t178\t212\t229\t25\n-712\t1002\t228\t163\t282\t195\t25\n-321\t90\t472\t35\t151\t178\t2\n-376\t154\t54\t61\t587\t264\t6\n-744\t1023\t229\t271\t226\t216\t25\n-329\t149\t82\t173\t629\t269\t6\n-447\t153\t524\t161\t138\t197\t18\n-364\t294\t248\t335\t0\t222\t16\n-645\t1023\t177\t179\t282\t254\t25\n-1023\t1023\t456\t557\t482\t445\t19\n-440\t297\t403\t122\t82\t135\t15\n-432\t115\t572\t165\t78\t225\t18\n-366\t112\t299\t0\t23\t98\t15\n-673\t1023\t230\t330\t294\t261\t25\n-707\t1023\t222\t246\t206\t242\t25\n-628\t1023\t161\t288\t241\t234\t25\n-601\t1023\t126\t296\t278\t191\t21\n-347\t157\t531\t0\t42\t49\t10\n-262\t65\t210\t36\t0\t176\t15\n-349\t101\t481\t139\t96\t211\t18\n-596\t1023\t193\t252\t233\t288\t21\n-375\t112\t546\t184\t59\t88\t1\n-436\t141\t123\t229\t611\t218\t7\n-389\t131\t576\t0\t0\t144\t2\n-353\t97\t477\t204\t0\t221\t18\n-400\t149\t91\t143\t639\t310\t7\n-742\t1023\t225\t277\t114\t241\t25\n-747\t1023\t132\t254\t227\t176\t25\n-350\t122\t489\t194\t0\t99\t1\n-407\t131\t535\t209\t0\t57\t1\n-269\t92\t0\t0\t5\t128\t5\n-355\t142\t540\t103\t115\t84\t10\n-387\t123\t529\t116\t115\t0\t1\n-358\t86\t523\t18\t32\t101\t10\n-388\t132\t105\t99\t653\t329\t6\n-305\t165\t509\t126\t0\t63\t1\n-454\t168\t113\t124\t629\t251\t6\n-400\t121\t176\t0\t581\t240\t6\n-405\t230\t115\t233\t632\t289\t7\n-596\t942\t74\t236\t280\t279\t21\n-380\t211\t72\t236\t670\t255\t7\n-392\t127\t546\t204\t47\t105\t1\n-519\t409\t169\t117\t136\t417\t4\n-767\t1023\t196\t278\t269\t192\t25\n-367\t121\t528\t95\t0\t117\t10\n-378\t175\t507\t201\t0\t227\t18\n-664\t668\t359\t287\t268\t166\t22\n-435\t161\t543\t185\t67\t197\t18\n-358\t233\t0\t136\t148\t331\t4\n-633\t977\t95\t250\t175\t187\t21\n-373\t128\t564\t0\t35\t119\t10\n-386\t123\t547\t0\t65\t181\t2\n-319\t110\t497\t77\t101\t0\t10\n-401\t86\t503\t126\t184\t138\t18\n-364\t136\t0\t161\t15\t0\t5\n-741\t1023\t188\t221\t270\t230\t25\n-677\t510\t416\t268\t195\t188\t22\n-311\t212\t17\t22\t91\t146\t5\n-642\t1023\t152\t268\t221\t196\t21\n-739\t395\t291\t219\t174\t75\t24\n-760\t1023\t175\t247\t284\t198\t25\n-410\t168\t528\t125\t0\t211\t18\n-338\t158\t71\t69\t1\t155\t5\n-401\t137\t34\t223\t641\t291\t7\n-780\t853\t198\t256\t230\t270\t25\n-389\t185\t160\t28\t664\t319\t6\n-369\t130\t567\t21\t0\t38\t10\n-359\t119\t60\t55\t660\t217\t6\n-349\t97\t522\t0\t21\t0\t10\n-553\t762\t136\t193\t137\t198\t21\n-476\t91\t554\t0\t0\t102\t10\n-372\t77\t506\t0\t89\t0\t10\n-628\t1023\t202\t285\t305\t61\t21\n-493\t351\t403\t242\t150\t196\t24\n-393\t181\t128\t0\t148\t83\t5\n-400\t143\t554\t109\t89\t115\t1\n-387\t91\t544\t199\t141\t45\t1\n-564\t924\t104\t220\t170\t249\t21\n-673\t237\t124\t79\t648\t268\t7\n-363\t203\t84\t213\t79\t224\t12\n-353\t83\t517\t168\t70\t133\t1\n-378\t157\t577\t0\t68\t205\t2\n-338\t139\t25\t41\t38\t92\t5\n-330\t70\t0\t55\t597\t165\t6\n-558\t280\t421\t143\t113\t226\t24\n-447\t288\t156\t211\t5\t33\t12\n-341\t112\t457\t22\t0\t116\t10\n-757\t1023\t205\t268\t291\t189\t25\n-375\t112\t541\t20\t14\t0\t10\n-657\t1023\t141\t206\t196\t125\t21\n-356\t114\t550\t0\t0\t101\t10\n-700\t1023\t196\t256\t272\t64\t25\n-629\t1023\t189\t174\t253\t149\t21\n-360\t141\t554\t0\t32\t52\t10\n-362\t108\t543\t219\t158\t128\t1\n-337\t112\t511\t107\t65\t178\t2\n-398\t277\t67\t116\t277\t95\t12\n-767\t1023\t157\t205\t212\t95\t25\n-609\t1023\t348\t474\t390\t429\t23\n-369\t96\t532\t255\t0\t212\t18\n-386\t174\t46\t65\t619\t231\t6\n-336\t115\t492\t87\t0\t105\t10\n-469\t164\t580\t94\t50\t12\t10\n-396\t108\t535\t84\t4\t82\t10\n-452\t159\t534\t176\t169\t176\t18\n-410\t129\t537\t107\t0\t67\t1\n-304\t141\t31\t0\t112\t176\t5\n-863\t1023\t242\t349\t309\t330\t26\n-391\t226\t83\t224\t576\t232\t7\n-701\t1023\t77\t158\t258\t111\t21\n-674\t1023\t151\t247\t256\t238\t25\n-309\t70\t73\t137\t287\t110\t5\n-352\t154\t0\t23\t602\t271\t6\n-352\t152\t130\t0\t29\t161\t5\n-542\t1011\t70\t2'..b'653\t800\t119\t209\t182\t110\t21\n-358\t182\t80\t44\t667\t310\t6\n-512\t1023\t125\t168\t262\t201\t21\n-466\t240\t133\t157\t196\t5\t12\n-302\t139\t471\t0\t7\t19\t10\n-361\t114\t533\t0\t0\t275\t2\n-1023\t1023\t263\t311\t246\t309\t26\n-334\t118\t371\t156\t0\t44\t15\n-820\t1023\t294\t313\t318\t305\t26\n-407\t150\t547\t133\t138\t210\t18\n-271\t65\t486\t0\t48\t0\t10\n-364\t121\t541\t49\t94\t229\t2\n-654\t1023\t151\t256\t251\t230\t25\n-366\t143\t555\t195\t0\t15\t1\n-512\t571\t107\t220\t20\t192\t16\n-556\t265\t448\t81\t172\t103\t24\n-424\t228\t43\t132\t616\t310\t7\n-753\t1023\t224\t268\t192\t116\t25\n-360\t96\t533\t15\t109\t138\t2\n-426\t207\t276\t99\t578\t328\t3\n-432\t207\t142\t0\t408\t0\t12\n-640\t580\t445\t287\t171\t207\t22\n-658\t1023\t201\t282\t277\t300\t25\n-666\t1023\t92\t257\t172\t234\t21\n-354\t216\t87\t176\t336\t106\t12\n-356\t176\t42\t0\t170\t134\t5\n-689\t1023\t186\t217\t283\t198\t25\n-346\t115\t516\t155\t0\t132\t1\n-387\t128\t579\t203\t51\t141\t18\n-665\t1023\t122\t229\t165\t78\t21\n-400\t168\t0\t160\t600\t249\t6\n-357\t95\t517\t0\t87\t186\t2\n-373\t158\t534\t228\t53\t103\t1\n-372\t103\t525\t238\t7\t175\t18\n-298\t86\t428\t55\t0\t174\t2\n-348\t131\t546\t6\t0\t55\t10\n-368\t135\t549\t144\t0\t12\t1\n-589\t1023\t333\t446\t322\t395\t23\n-337\t117\t81\t149\t643\t348\t6\n-372\t258\t139\t113\t174\t374\t4\n-827\t1023\t128\t271\t263\t132\t25\n-693\t1023\t179\t292\t201\t287\t25\n-732\t946\t187\t253\t264\t121\t25\n-370\t268\t125\t182\t104\t97\t12\n-554\t761\t111\t293\t224\t233\t21\n-411\t188\t525\t185\t124\t208\t18\n-356\t165\t123\t85\t672\t282\t6\n-353\t92\t508\t124\t141\t66\t1\n-684\t902\t144\t248\t244\t173\t21\n-402\t185\t135\t497\t774\t472\t20\n-380\t144\t527\t156\t62\t31\t1\n-765\t1023\t202\t261\t254\t258\t25\n-1023\t1023\t500\t508\t445\t550\t19\n-1023\t1023\t538\t456\t358\t450\t19\n-652\t921\t131\t204\t107\t223\t21\n-480\t181\t541\t223\t133\t294\t18\n-651\t1023\t174\t340\t182\t19\t21\n-619\t1023\t133\t263\t239\t231\t21\n-374\t93\t520\t0\t0\t138\t10\n-547\t760\t70\t0\t162\t224\t21\n-427\t278\t113\t238\t385\t170\t12\n-753\t1023\t156\t296\t263\t300\t25\n-640\t942\t122\t265\t237\t242\t21\n-348\t94\t507\t300\t109\t22\t1\n-599\t1023\t135\t321\t261\t212\t21\n-591\t948\t188\t176\t247\t130\t21\n-386\t92\t515\t201\t32\t79\t1\n-423\t156\t562\t8\t120\t144\t2\n-581\t1023\t146\t214\t153\t145\t21\n-779\t1023\t208\t308\t295\t319\t25\n-1022\t174\t372\t274\t253\t397\t22\n-395\t112\t554\t213\t64\t109\t1\n-398\t283\t104\t418\t52\t211\t16\n-459\t215\t559\t287\t198\t109\t18\n-366\t160\t536\t218\t156\t122\t1\n-380\t197\t123\t74\t638\t287\t6\n-624\t1023\t133\t241\t194\t265\t21\n-400\t163\t518\t139\t69\t225\t18\n-380\t131\t564\t126\t0\t36\t1\n-283\t146\t65\t180\t134\t0\t5\n-379\t112\t173\t0\t646\t223\t6\n-752\t1023\t129\t258\t239\t245\t25\n-409\t206\t179\t149\t641\t290\t7\n-635\t525\t409\t225\t206\t227\t22\n-680\t1023\t234\t196\t249\t165\t25\n-702\t458\t425\t271\t150\t46\t24\n-734\t511\t416\t176\t152\t200\t22\n-409\t171\t20\t29\t574\t212\t6\n-413\t251\t83\t12\t21\t64\t5\n-737\t1023\t180\t287\t284\t283\t25\n-431\t175\t361\t239\t132\t0\t1\n-353\t114\t50\t0\t621\t271\t6\n-408\t141\t559\t0\t132\t196\t2\n-531\t798\t102\t253\t209\t75\t21\n-619\t1023\t205\t294\t235\t212\t25\n-667\t1023\t187\t234\t288\t219\t25\n-392\t247\t261\t675\t198\t451\t9\n-311\t102\t514\t99\t110\t146\t2\n-460\t125\t559\t0\t0\t73\t10\n-400\t99\t564\t212\t139\t96\t1\n-633\t1023\t168\t232\t214\t195\t21\n-404\t166\t556\t177\t58\t46\t1\n-678\t1023\t210\t305\t274\t229\t25\n-364\t174\t98\t36\t615\t267\t6\n-372\t118\t543\t109\t3\t52\t1\n-672\t1023\t188\t292\t133\t249\t25\n-643\t1023\t216\t273\t296\t169\t25\n-445\t134\t552\t0\t143\t94\t10\n-400\t151\t556\t179\t191\t181\t18\n-701\t1023\t226\t239\t247\t291\t25\n-365\t157\t122\t0\t667\t233\t6\n-385\t88\t542\t89\t180\t60\t10\n-358\t87\t482\t10\t0\t55\t10\n-710\t487\t449\t284\t139\t96\t24\n-371\t134\t510\t19\t14\t351\t2\n-264\t69\t463\t0\t0\t80\t10\n-428\t103\t512\t263\t0\t70\t1\n-614\t490\t462\t229\t120\t325\t22\n-466\t219\t513\t117\t0\t174\t18\n-674\t525\t400\t208\t194\t194\t22\n-324\t110\t506\t66\t32\t128\t10\n-394\t115\t28\t0\t557\t193\t6\n-411\t175\t63\t139\t618\t323\t7\n-611\t303\t345\t92\t88\t100\t24\n-450\t239\t160\t99\t195\t210\t12\n-356\t129\t33\t90\t602\t94\t6\n-605\t1006\t213\t204\t220\t220\t21\n-773\t1023\t237\t275\t210\t167\t25\n-429\t142\t570\t272\t0\t141\t18\n-263\t33\t417\t0\t0\t194\t2\n-347\t148\t26\t0\t630\t300\t6\n-364\t121\t528\t182\t70\t194\t18\n-339\t87\t483\t0\t43\t74\t10\n-692\t1009\t147\t285\t115\t156\t21\n-596\t988\t133\t305\t113\t273\t21\n-847\t1023\t244\t216\t316\t101\t25\n-386\t135\t531\t166\t184\t117\t1\n-621\t970\t37\t127\t238\t274\t21\n-298\t99\t482\t88\t0\t130\t10\n-658\t1023\t117\t165\t208\t188\t21\n-326\t172\t76\t12\t149\t77\t5\n-360\t84\t532\t57\t138\t102\t10\n-886\t1023\t229\t361\t290\t234\t26\n-634\t972\t248\t277\t271\t215\t25\n-332\t164\t0\t73\t246\t210\t5\n-447\t121\t548\t0\t0\t393\t2\n-391\t119\t74\t0\t628\t238\t6\n-340\t100\t528\t245\t0\t8\t1\n-385\t99\t179\t115\t513\t163\t6\n-400\t157\t126\t99\t638\t313\t6\n-431\t97\t527\t156\t122\t197\t18\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/run2/input1.flowtext.flowclr
--- a/cross_sample/test-data/run2/input1.flowtext.flowclr Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,20001 +0,0 @@\n-FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n-289\t56\t438\t0\t626\t480\t3\n-352\t153\t30\t147\t483\t386\t7\n-383\t190\t156\t228\t734\t408\t7\n-261\t62\t432\t121\t598\t555\t3\n-451\t120\t537\t338\t568\t201\t13\n-373\t104\t3\t110\t621\t584\t11\n-418\t105\t561\t0\t610\t562\t3\n-358\t185\t0\t292\t641\t327\t7\n-733\t970\t139\t227\t293\t259\t25\n-765\t1023\t71\t239\t233\t253\t25\n-762\t957\t143\t158\t271\t255\t25\n-406\t191\t513\t122\t646\t264\t3\n-695\t1023\t168\t251\t234\t283\t25\n-336\t178\t0\t146\t128\t537\t4\n-668\t1023\t167\t306\t302\t253\t23\n-330\t135\t493\t72\t734\t496\t3\n-618\t1015\t201\t269\t284\t141\t25\n-662\t1023\t204\t241\t273\t149\t25\n-383\t109\t49\t50\t575\t451\t11\n-427\t206\t169\t258\t725\t402\t7\n-369\t152\t216\t569\t738\t684\t8\n-420\t209\t26\t368\t651\t303\t7\n-554\t218\t601\t336\t629\t300\t13\n-425\t229\t89\t416\t616\t373\t7\n-493\t355\t516\t252\t625\t568\t8\n-674\t1023\t211\t243\t259\t310\t23\n-286\t88\t0\t63\t556\t491\t11\n-318\t83\t477\t469\t627\t546\t8\n-297\t65\t489\t324\t618\t518\t8\n-358\t101\t496\t0\t646\t543\t3\n-429\t168\t515\t462\t675\t321\t13\n-364\t105\t504\t298\t602\t460\t8\n-319\t469\t415\t202\t571\t405\t8\n-532\t1023\t390\t528\t406\t507\t23\n-561\t287\t396\t72\t381\t279\t22\n-422\t150\t522\t351\t626\t353\t13\n-448\t149\t529\t288\t612\t270\t13\n-361\t143\t0\t132\t656\t362\t7\n-377\t96\t504\t163\t603\t524\t8\n-837\t1023\t211\t231\t316\t280\t26\n-702\t907\t176\t206\t271\t236\t25\n-367\t130\t570\t0\t661\t568\t3\n-302\t95\t508\t205\t643\t494\t8\n-403\t216\t159\t361\t158\t554\t9\n-427\t215\t188\t0\t711\t381\t6\n-743\t1023\t217\t316\t306\t278\t26\n-746\t339\t238\t433\t692\t433\t7\n-409\t104\t545\t278\t631\t480\t8\n-345\t67\t499\t581\t682\t524\t13\n-292\t171\t69\t115\t70\t463\t4\n-314\t152\t84\t0\t0\t514\t4\n-824\t1023\t220\t273\t315\t179\t26\n-554\t1023\t143\t255\t219\t283\t23\n-700\t998\t193\t261\t294\t148\t25\n-732\t1023\t204\t314\t322\t279\t23\n-360\t84\t467\t425\t577\t278\t13\n-425\t136\t558\t193\t622\t586\t8\n-301\t135\t49\t66\t574\t499\t11\n-356\t146\t511\t110\t635\t287\t3\n-390\t119\t528\t386\t580\t251\t13\n-654\t931\t169\t259\t334\t220\t25\n-385\t255\t102\t211\t671\t449\t7\n-589\t1023\t187\t203\t270\t189\t25\n-678\t1023\t0\t251\t177\t250\t25\n-410\t123\t528\t305\t710\t429\t8\n-362\t90\t514\t292\t642\t531\t8\n-543\t934\t127\t153\t283\t199\t21\n-739\t587\t416\t244\t300\t158\t24\n-406\t98\t497\t428\t621\t364\t13\n-895\t1023\t201\t307\t281\t279\t26\n-330\t123\t7\t230\t577\t247\t7\n-384\t158\t83\t62\t614\t300\t6\n-685\t1023\t197\t257\t209\t278\t25\n-395\t163\t531\t0\t618\t434\t3\n-350\t128\t483\t352\t642\t514\t8\n-339\t119\t124\t127\t546\t556\t11\n-357\t107\t516\t66\t679\t560\t3\n-1023\t1023\t420\t305\t336\t355\t19\n-620\t894\t88\t189\t210\t272\t21\n-618\t970\t394\t238\t179\t201\t23\n-678\t954\t143\t286\t280\t114\t25\n-544\t766\t122\t184\t279\t236\t21\n-416\t138\t120\t358\t578\t228\t20\n-425\t100\t167\t229\t582\t600\t11\n-333\t95\t516\t229\t591\t443\t8\n-396\t147\t554\t263\t608\t280\t13\n-331\t140\t27\t51\t39\t552\t4\n-689\t1023\t204\t267\t316\t276\t23\n-564\t810\t151\t89\t250\t253\t21\n-282\t70\t494\t158\t497\t546\t8\n-378\t127\t550\t189\t629\t555\t8\n-396\t182\t181\t323\t541\t509\t7\n-627\t1011\t239\t262\t314\t225\t23\n-319\t139\t45\t78\t131\t480\t4\n-324\t123\t17\t73\t637\t603\t11\n-398\t95\t555\t173\t643\t518\t8\n-445\t1023\t426\t492\t402\t540\t23\n-671\t1023\t113\t249\t281\t283\t25\n-384\t223\t0\t200\t621\t273\t7\n-780\t1023\t237\t227\t287\t64\t25\n-408\t141\t72\t272\t645\t621\t11\n-672\t1023\t164\t214\t258\t273\t25\n-626\t932\t66\t256\t207\t301\t25\n-398\t111\t118\t165\t589\t531\t11\n-687\t927\t137\t266\t263\t141\t25\n-342\t139\t82\t122\t305\t595\t4\n-736\t393\t454\t252\t235\t324\t22\n-311\t102\t491\t118\t632\t474\t3\n-318\t110\t503\t46\t643\t523\t3\n-623\t1023\t159\t266\t253\t197\t25\n-416\t106\t547\t347\t668\t489\t8\n-350\t91\t93\t199\t590\t577\t11\n-403\t158\t186\t222\t604\t540\t11\n-362\t202\t128\t187\t597\t241\t7\n-628\t886\t205\t244\t172\t201\t25\n-656\t1023\t231\t241\t251\t104\t25\n-731\t981\t141\t207\t273\t165\t25\n-340\t224\t49\t449\t548\t782\t11\n-699\t1023\t259\t233\t266\t220\t25\n-392\t148\t43\t35\t595\t575\t11\n-942\t1023\t199\t308\t335\t193\t26\n-312\t164\t35\t103\t0\t461\t4\n-822\t1023\t202\t311\t252\t308\t26\n-683\t457\t339\t241\t182\t180\t24\n-683\t1023\t180\t263\t277\t261\t23\n-397\t174\t25\t20\t654\t616\t11\n-324\t77\t487\t0\t623\t518\t3\n-371\t146\t511\t36\t648\t414\t3\n-399\t162\t144\t64\t622\t589\t11\n-682\t1023\t157\t221\t257\t233\t25\n-590\t922\t199\t196\t271\t146\t21\n-393\t105\t506\t253\t497\t251\t13\n-633\t1023\t41\t145\t256\t162\t25\n-550\t232\t350\t249\t197\t556\t9\n-355\t99\t523\t31\t646\t507\t3\n-434\t202\t88\t311\t725\t360\t7\n-696\t1023\t222\t263\t293\t283\t23\n-725\t345\t375\t211\t267\t260\t22\n-678\t1023\t163\t273\t259\t286\t23\n-559\t831\t132\t272\t323\t237\t21\n-298\t110\t506\t382\t669\t443\t8\n-334\t117\t542\t4\t628\t525\t3\n-681\t1023\t206\t236\t252\t223\t25\n-638\t1023\t167\t225\t290\t234\t25\n-297\t101\t0\t33\t579\t305\t6\n-359\t12'..b'2\t232\t22\n-363\t83\t464\t526\t458\t398\t13\n-404\t143\t538\t282\t581\t229\t13\n-535\t1023\t133\t259\t238\t118\t25\n-454\t1023\t240\t324\t338\t257\t23\n-430\t212\t534\t498\t646\t266\t13\n-290\t78\t445\t508\t645\t476\t13\n-431\t165\t549\t489\t659\t263\t13\n-350\t110\t536\t136\t638\t609\t8\n-434\t169\t89\t212\t630\t664\t11\n-681\t282\t338\t196\t221\t147\t24\n-466\t779\t167\t101\t125\t188\t21\n-330\t176\t81\t67\t47\t499\t4\n-409\t138\t550\t347\t649\t324\t13\n-595\t962\t186\t253\t220\t172\t25\n-704\t986\t218\t244\t283\t207\t25\n-382\t119\t539\t354\t615\t558\t8\n-406\t181\t541\t566\t661\t196\t13\n-654\t1023\t171\t304\t320\t271\t23\n-367\t174\t75\t300\t598\t294\t7\n-383\t119\t536\t205\t660\t582\t8\n-329\t92\t510\t240\t652\t574\t8\n-473\t217\t161\t90\t0\t601\t4\n-556\t278\t479\t118\t264\t627\t2\n-655\t1023\t211\t250\t296\t291\t23\n-361\t120\t96\t24\t600\t557\t11\n-468\t1023\t366\t419\t409\t500\t23\n-303\t89\t91\t90\t602\t563\t11\n-315\t169\t39\t0\t0\t476\t4\n-315\t99\t521\t140\t650\t499\t3\n-419\t126\t81\t186\t624\t677\t11\n-748\t1023\t177\t287\t236\t140\t25\n-342\t100\t49\t52\t569\t507\t11\n-730\t1023\t217\t327\t278\t308\t23\n-389\t197\t76\t26\t626\t337\t6\n-593\t900\t215\t209\t285\t248\t21\n-685\t1023\t137\t278\t318\t109\t25\n-454\t149\t550\t469\t585\t294\t13\n-380\t235\t117\t220\t651\t327\t7\n-358\t53\t476\t302\t674\t485\t8\n-603\t1023\t404\t506\t414\t494\t23\n-315\t56\t511\t0\t629\t522\t3\n-719\t1023\t166\t268\t277\t308\t23\n-405\t140\t66\t184\t617\t286\t7\n-645\t1023\t119\t169\t236\t256\t25\n-626\t1023\t136\t283\t180\t248\t25\n-836\t1023\t180\t305\t203\t193\t26\n-656\t1023\t249\t310\t291\t353\t23\n-726\t372\t175\t299\t674\t367\t7\n-684\t1023\t147\t276\t200\t282\t25\n-638\t927\t130\t216\t243\t256\t25\n-354\t133\t523\t120\t694\t565\t3\n-374\t125\t527\t241\t650\t497\t8\n-718\t1023\t189\t235\t278\t259\t25\n-735\t1023\t188\t199\t287\t253\t26\n-381\t156\t87\t57\t646\t606\t11\n-406\t151\t547\t332\t645\t536\t8\n-402\t241\t118\t203\t139\t593\t9\n-405\t106\t539\t202\t624\t504\t8\n-419\t118\t527\t555\t685\t349\t13\n-618\t548\t436\t238\t196\t289\t22\n-281\t107\t19\t211\t54\t460\t4\n-425\t130\t540\t219\t612\t495\t8\n-387\t153\t106\t35\t563\t649\t11\n-398\t87\t505\t241\t611\t528\t8\n-720\t1023\t194\t262\t184\t298\t26\n-699\t880\t166\t238\t248\t235\t25\n-409\t149\t32\t216\t612\t638\t11\n-395\t145\t84\t344\t632\t361\t7\n-394\t109\t473\t219\t659\t355\t8\n-595\t1023\t210\t133\t164\t104\t21\n-387\t139\t77\t0\t632\t583\t11\n-393\t163\t513\t285\t574\t308\t13\n-382\t108\t540\t89\t643\t555\t3\n-565\t932\t176\t209\t268\t76\t21\n-349\t79\t492\t0\t618\t410\t3\n-653\t1023\t187\t202\t250\t282\t25\n-364\t147\t497\t278\t490\t558\t8\n-563\t219\t498\t343\t638\t582\t8\n-787\t1023\t259\t195\t292\t350\t26\n-566\t634\t173\t253\t273\t248\t22\n-403\t107\t529\t457\t623\t371\t13\n-784\t1023\t198\t300\t313\t295\t26\n-983\t1023\t245\t338\t372\t318\t26\n-348\t104\t503\t49\t483\t454\t3\n-448\t222\t130\t278\t732\t443\t7\n-1023\t1023\t519\t526\t592\t406\t19\n-354\t93\t535\t217\t703\t509\t8\n-464\t210\t557\t538\t615\t268\t13\n-395\t103\t108\t87\t583\t593\t11\n-402\t193\t86\t364\t70\t498\t9\n-366\t106\t184\t4\t631\t601\t11\n-360\t110\t500\t86\t513\t554\t3\n-334\t64\t501\t0\t632\t473\t3\n-411\t190\t15\t299\t623\t412\t7\n-737\t986\t151\t234\t159\t210\t25\n-330\t82\t505\t440\t536\t238\t13\n-416\t161\t549\t436\t648\t303\t13\n-401\t187\t534\t295\t579\t192\t13\n-871\t1023\t538\t465\t679\t269\t19\n-324\t103\t475\t559\t584\t511\t13\n-331\t148\t74\t95\t0\t530\t4\n-665\t1023\t198\t178\t276\t283\t23\n-401\t143\t60\t99\t539\t562\t11\n-390\t133\t497\t616\t590\t240\t13\n-708\t975\t175\t270\t257\t96\t25\n-374\t100\t501\t47\t607\t504\t3\n-357\t91\t470\t128\t618\t604\t3\n-484\t527\t183\t214\t256\t285\t12\n-686\t1023\t153\t263\t335\t176\t25\n-409\t146\t542\t0\t669\t444\t3\n-370\t172\t107\t81\t578\t319\t6\n-611\t1023\t200\t306\t269\t298\t23\n-653\t1023\t123\t236\t265\t241\t25\n-333\t87\t480\t509\t681\t462\t13\n-614\t816\t125\t165\t184\t117\t21\n-333\t96\t503\t460\t584\t221\t13\n-362\t183\t113\t270\t604\t227\t7\n-776\t564\t356\t271\t270\t223\t24\n-637\t1023\t185\t299\t259\t296\t23\n-795\t1023\t243\t269\t311\t247\t26\n-415\t107\t481\t403\t545\t288\t13\n-721\t950\t157\t204\t276\t259\t25\n-464\t310\t113\t193\t615\t265\t7\n-668\t400\t415\t202\t230\t229\t22\n-407\t109\t554\t22\t691\t466\t3\n-704\t1023\t297\t277\t294\t121\t25\n-603\t1020\t209\t222\t290\t220\t25\n-577\t1017\t174\t235\t224\t145\t25\n-822\t1023\t155\t171\t274\t185\t26\n-332\t97\t503\t229\t665\t522\t8\n-693\t1023\t166\t259\t307\t211\t25\n-394\t111\t545\t290\t710\t510\t8\n-457\t226\t0\t106\t131\t573\t4\n-554\t1023\t137\t0\t262\t145\t21\n-330\t116\t507\t1\t647\t558\t3\n-619\t983\t105\t151\t199\t257\t21\n-442\t129\t531\t413\t591\t214\t13\n-384\t160\t541\t267\t661\t527\t8\n-687\t1023\t197\t250\t221\t195\t25\n-438\t100\t97\t169\t636\t461\t11\n-383\t168\t105\t183\t620\t581\t11\n-312\t71\t482\t164\t639\t427\t8\n-541\t1023\t166\t207\t266\t103\t25\n-781\t893\t114\t242\t232\t248\t26\n-341\t185\t13\t228\t117\t561\t4\n-694\t370\t391\t254\t311\t330\t22\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/run2/input2.flowtext.flowclr
--- a/cross_sample/test-data/run2/input2.flowtext.flowclr Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,20001 +0,0 @@\n-FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n-363\t76\t550\t200\t0\t127\t18\n-372\t126\t519\t44\t51\t148\t2\n-1023\t1023\t289\t401\t362\t254\t26\n-770\t1023\t175\t361\t225\t237\t26\n-384\t111\t525\t121\t0\t138\t18\n-602\t578\t385\t286\t222\t131\t24\n-788\t1023\t216\t310\t270\t294\t26\n-420\t211\t552\t479\t0\t62\t14\n-668\t1019\t73\t193\t227\t132\t25\n-417\t134\t542\t597\t22\t107\t14\n-755\t1023\t232\t305\t294\t204\t26\n-374\t128\t536\t493\t0\t173\t14\n-332\t71\t495\t0\t60\t34\t10\n-561\t874\t136\t254\t245\t241\t21\n-423\t146\t542\t284\t98\t81\t18\n-261\t74\t477\t0\t5\t72\t10\n-355\t120\t58\t348\t649\t276\t7\n-595\t857\t169\t193\t246\t100\t21\n-749\t662\t434\t318\t216\t247\t22\n-450\t142\t559\t187\t0\t32\t1\n-365\t129\t515\t0\t0\t30\t10\n-370\t181\t76\t357\t74\t314\t9\n-651\t655\t339\t274\t129\t132\t24\n-305\t149\t74\t0\t118\t182\t5\n-375\t85\t285\t137\t0\t0\t15\n-274\t149\t0\t164\t0\t38\t5\n-399\t187\t102\t625\t226\t365\t9\n-602\t1023\t167\t257\t204\t273\t25\n-293\t240\t263\t222\t0\t6\t15\n-671\t929\t112\t215\t182\t170\t25\n-436\t149\t90\t425\t659\t308\t7\n-317\t89\t492\t266\t0\t99\t1\n-363\t146\t6\t527\t194\t64\t16\n-858\t1023\t252\t325\t217\t105\t26\n-266\t152\t91\t173\t44\t12\t5\n-318\t114\t495\t230\t10\t0\t1\n-337\t83\t502\t103\t3\t149\t2\n-619\t977\t159\t241\t274\t5\t25\n-869\t1023\t177\t296\t252\t323\t26\n-734\t388\t470\t143\t93\t238\t22\n-361\t114\t525\t86\t3\t0\t10\n-372\t113\t551\t109\t104\t153\t2\n-333\t239\t363\t529\t121\t263\t17\n-749\t1023\t219\t260\t225\t179\t26\n-353\t194\t77\t352\t663\t182\t7\n-649\t1023\t373\t478\t420\t453\t23\n-416\t118\t535\t291\t91\t38\t1\n-716\t515\t423\t240\t203\t201\t22\n-413\t197\t106\t511\t130\t306\t9\n-370\t110\t517\t252\t66\t141\t18\n-341\t131\t20\t438\t609\t265\t7\n-327\t88\t520\t53\t207\t111\t2\n-340\t75\t520\t0\t0\t33\t10\n-447\t153\t551\t575\t0\t113\t14\n-399\t88\t554\t269\t0\t167\t18\n-380\t96\t484\t557\t138\t173\t14\n-993\t1023\t195\t318\t335\t263\t26\n-375\t147\t554\t168\t0\t72\t1\n-358\t130\t0\t0\t299\t76\t5\n-284\t96\t448\t126\t0\t147\t18\n-744\t1023\t189\t313\t240\t168\t25\n-610\t1023\t158\t232\t231\t234\t25\n-633\t1023\t144\t244\t275\t200\t25\n-477\t584\t84\t403\t131\t161\t16\n-370\t117\t532\t59\t9\t169\t2\n-709\t923\t193\t233\t246\t76\t25\n-342\t152\t533\t92\t66\t161\t2\n-306\t129\t13\t66\t82\t106\t5\n-349\t165\t80\t201\t301\t207\t4\n-650\t1023\t108\t178\t150\t61\t25\n-316\t106\t0\t337\t600\t236\t7\n-535\t435\t368\t226\t10\t83\t24\n-320\t78\t500\t185\t0\t135\t18\n-364\t189\t158\t363\t396\t206\t7\n-367\t134\t552\t0\t129\t208\t2\n-367\t109\t537\t198\t49\t185\t18\n-650\t1023\t113\t289\t213\t258\t25\n-354\t211\t117\t75\t116\t205\t4\n-599\t1023\t131\t186\t252\t181\t25\n-528\t355\t334\t248\t180\t219\t22\n-560\t933\t181\t239\t307\t137\t25\n-262\t88\t3\t189\t0\t165\t5\n-708\t1023\t41\t300\t174\t227\t25\n-532\t862\t158\t113\t259\t179\t21\n-358\t102\t515\t0\t70\t18\t10\n-648\t438\t442\t286\t206\t49\t24\n-410\t141\t518\t323\t182\t3\t1\n-399\t62\t498\t125\t0\t29\t1\n-784\t549\t343\t23\t201\t152\t24\n-342\t169\t102\t195\t24\t146\t5\n-616\t691\t378\t268\t230\t276\t22\n-585\t1009\t164\t124\t223\t236\t21\n-678\t1023\t155\t197\t140\t30\t25\n-378\t113\t76\t464\t624\t173\t7\n-682\t1023\t185\t293\t187\t285\t25\n-402\t143\t568\t262\t0\t68\t1\n-339\t150\t512\t542\t26\t115\t14\n-607\t898\t56\t278\t217\t194\t25\n-333\t93\t524\t129\t0\t103\t1\n-369\t153\t62\t426\t656\t263\t7\n-345\t108\t523\t205\t0\t0\t1\n-615\t747\t199\t285\t260\t263\t23\n-389\t247\t91\t0\t93\t44\t5\n-365\t114\t517\t0\t35\t83\t10\n-362\t83\t547\t236\t39\t87\t1\n-776\t1023\t172\t253\t259\t268\t26\n-368\t120\t539\t198\t20\t84\t1\n-735\t1023\t253\t304\t315\t151\t26\n-350\t138\t54\t284\t652\t243\t7\n-390\t162\t554\t29\t0\t62\t10\n-466\t183\t71\t676\t699\t371\t20\n-370\t120\t244\t117\t85\t19\t15\n-361\t132\t537\t223\t0\t163\t18\n-730\t1023\t187\t307\t303\t208\t26\n-636\t979\t127\t275\t257\t133\t25\n-405\t124\t27\t464\t634\t252\t7\n-329\t109\t108\t315\t546\t216\t7\n-582\t1023\t135\t227\t156\t148\t25\n-348\t120\t501\t39\t74\t201\t2\n-356\t66\t467\t93\t304\t155\t2\n-385\t206\t60\t439\t675\t364\t7\n-351\t116\t520\t549\t43\t71\t14\n-836\t429\t537\t214\t79\t160\t24\n-386\t162\t61\t530\t701\t354\t7\n-413\t180\t119\t476\t670\t272\t7\n-357\t119\t551\t281\t70\t30\t1\n-348\t74\t545\t222\t0\t0\t1\n-414\t154\t0\t354\t606\t178\t7\n-490\t169\t570\t628\t108\t95\t14\n-384\t112\t537\t150\t75\t172\t18\n-754\t1009\t121\t180\t203\t86\t25\n-394\t82\t537\t85\t63\t73\t10\n-942\t1023\t230\t307\t299\t216\t26\n-401\t211\t95\t519\t678\t321\t7\n-686\t1023\t151\t236\t274\t242\t25\n-622\t946\t120\t196\t158\t177\t21\n-615\t1023\t184\t84\t230\t179\t21\n-709\t1019\t181\t275\t148\t236\t25\n-458\t210\t598\t527\t58\t172\t17\n-357\t146\t65\t366\t651\t257\t7\n-621\t1023\t70\t244\t245\t249\t25\n-437\t206\t530\t654\t0\t211\t17\n-974\t1023\t242\t319\t318\t221\t26\n-320\t189\t319\t396\t172\t221\t16\n-323\t72\t482\t186\t0\t156\t18\n-823\t1023\t131\t272\t167\t232\t26\n-660\t1023\t229\t290\t246\t28\t25\n-297\t119\t444\t0\t0\t104\t2\n-393\t117\t82\t503\t658\t196\t20\n-586\t834\t175\t274\t215\t'..b'28\t26\n-365\t150\t530\t172\t0\t37\t1\n-378\t121\t16\t354\t660\t290\t7\n-363\t133\t52\t398\t674\t255\t7\n-775\t1023\t149\t265\t217\t181\t25\n-334\t82\t502\t71\t27\t162\t2\n-383\t173\t75\t397\t676\t243\t7\n-681\t354\t407\t284\t269\t243\t22\n-386\t133\t545\t103\t93\t112\t2\n-416\t110\t532\t173\t148\t63\t1\n-636\t1023\t132\t243\t243\t203\t25\n-405\t152\t96\t299\t656\t301\t7\n-639\t1023\t132\t308\t183\t280\t25\n-629\t946\t125\t256\t211\t47\t25\n-429\t104\t230\t714\t692\t738\t8\n-700\t1023\t211\t292\t271\t252\t23\n-568\t323\t441\t389\t118\t316\t22\n-323\t97\t507\t183\t120\t51\t1\n-671\t1023\t213\t362\t301\t0\t25\n-329\t134\t94\t146\t0\t173\t5\n-388\t125\t19\t433\t591\t254\t7\n-360\t183\t0\t266\t649\t231\t7\n-331\t78\t489\t41\t0\t131\t2\n-634\t897\t167\t226\t210\t252\t25\n-292\t108\t22\t0\t0\t79\t5\n-336\t111\t0\t316\t655\t258\t7\n-434\t141\t489\t167\t162\t185\t18\n-560\t845\t137\t252\t178\t150\t21\n-396\t145\t568\t147\t0\t128\t18\n-645\t936\t138\t185\t223\t222\t21\n-663\t1023\t155\t260\t230\t151\t25\n-954\t1023\t207\t339\t286\t306\t26\n-674\t972\t195\t257\t173\t45\t25\n-381\t105\t548\t103\t85\t177\t2\n-333\t212\t123\t717\t655\t302\t20\n-600\t1023\t110\t214\t245\t181\t25\n-360\t113\t509\t223\t5\t114\t18\n-600\t1023\t213\t261\t235\t219\t25\n-754\t995\t185\t289\t42\t7\t25\n-427\t157\t86\t174\t569\t270\t6\n-325\t91\t508\t39\t6\t11\t10\n-372\t171\t68\t463\t0\t277\t9\n-402\t215\t527\t646\t191\t44\t14\n-709\t1023\t365\t530\t393\t377\t23\n-291\t126\t76\t0\t114\t159\t5\n-568\t673\t187\t320\t185\t230\t22\n-323\t79\t458\t0\t15\t170\t2\n-406\t161\t536\t605\t0\t212\t17\n-420\t127\t519\t0\t23\t90\t10\n-605\t1023\t237\t166\t258\t187\t25\n-382\t124\t511\t134\t37\t95\t1\n-702\t511\t377\t256\t160\t267\t22\n-596\t1023\t160\t192\t250\t182\t25\n-431\t211\t111\t495\t658\t274\t7\n-703\t1023\t135\t316\t128\t103\t25\n-357\t123\t529\t62\t149\t21\t10\n-772\t1023\t223\t266\t188\t226\t26\n-567\t1023\t130\t251\t253\t104\t25\n-356\t95\t489\t126\t0\t128\t18\n-390\t129\t568\t75\t124\t90\t10\n-691\t1023\t229\t340\t209\t256\t23\n-311\t116\t0\t145\t24\t185\t5\n-381\t130\t101\t619\t649\t367\t20\n-376\t116\t549\t163\t27\t33\t1\n-705\t329\t430\t149\t119\t0\t24\n-670\t1023\t122\t269\t228\t199\t25\n-711\t962\t148\t235\t274\t256\t25\n-641\t1023\t160\t259\t194\t181\t25\n-556\t1023\t135\t247\t279\t164\t25\n-571\t1023\t179\t245\t160\t215\t25\n-392\t100\t515\t65\t0\t45\t10\n-340\t105\t499\t69\t0\t82\t10\n-636\t967\t185\t158\t282\t74\t21\n-373\t132\t500\t217\t34\t48\t1\n-929\t1023\t431\t319\t260\t282\t26\n-345\t120\t507\t0\t0\t124\t2\n-293\t106\t505\t133\t104\t63\t1\n-359\t96\t529\t222\t127\t150\t18\n-381\t176\t551\t222\t0\t156\t18\n-263\t191\t440\t451\t47\t140\t14\n-1013\t1023\t450\t456\t401\t351\t19\n-441\t331\t131\t99\t79\t131\t12\n-317\t129\t514\t0\t143\t39\t10\n-373\t94\t517\t0\t168\t59\t10\n-602\t1023\t100\t189\t188\t93\t25\n-356\t120\t491\t546\t0\t123\t14\n-375\t118\t554\t71\t159\t109\t2\n-387\t95\t494\t196\t152\t0\t1\n-326\t68\t54\t201\t582\t256\t6\n-717\t1023\t230\t275\t270\t195\t25\n-306\t80\t455\t370\t0\t42\t1\n-411\t282\t149\t127\t82\t213\t12\n-405\t122\t116\t436\t653\t360\t7\n-633\t906\t180\t248\t271\t263\t23\n-364\t104\t541\t0\t213\t168\t2\n-313\t133\t48\t167\t117\t61\t5\n-294\t58\t478\t120\t17\t35\t1\n-313\t78\t459\t247\t0\t59\t1\n-389\t148\t563\t146\t154\t85\t1\n-305\t145\t57\t91\t92\t6\t5\n-637\t1023\t154\t242\t291\t226\t25\n-655\t1023\t194\t238\t261\t257\t25\n-632\t1023\t205\t268\t268\t234\t25\n-391\t187\t542\t31\t107\t245\t2\n-305\t122\t38\t0\t130\t112\t5\n-358\t250\t85\t130\t157\t15\t12\n-446\t134\t559\t255\t37\t13\t1\n-386\t138\t531\t74\t133\t167\t2\n-367\t106\t535\t4\t47\t49\t10\n-391\t84\t521\t217\t143\t76\t1\n-357\t110\t515\t171\t93\t38\t1\n-374\t122\t552\t0\t23\t93\t10\n-360\t124\t501\t469\t0\t129\t14\n-533\t1023\t349\t446\t357\t406\t23\n-332\t74\t105\t328\t559\t232\t7\n-466\t232\t146\t351\t263\t85\t16\n-405\t87\t517\t538\t0\t183\t14\n-597\t1023\t143\t242\t241\t208\t25\n-333\t111\t523\t123\t0\t0\t1\n-788\t1023\t202\t311\t298\t227\t26\n-599\t995\t128\t266\t260\t178\t25\n-377\t123\t62\t574\t629\t198\t20\n-719\t1023\t183\t260\t267\t153\t25\n-680\t1023\t159\t287\t251\t255\t25\n-379\t97\t535\t51\t0\t84\t10\n-383\t225\t63\t307\t0\t405\t9\n-597\t987\t222\t220\t201\t244\t25\n-360\t82\t14\t376\t23\t1\t16\n-592\t1023\t104\t276\t212\t164\t25\n-651\t368\t378\t283\t21\t91\t24\n-304\t132\t73\t138\t67\t52\t5\n-380\t160\t543\t273\t0\t68\t1\n-305\t143\t0\t52\t45\t162\t5\n-405\t132\t552\t417\t22\t142\t14\n-366\t99\t509\t0\t102\t183\t2\n-704\t1023\t122\t250\t310\t204\t25\n-713\t1023\t169\t282\t280\t140\t25\n-380\t198\t97\t647\t662\t234\t20\n-577\t273\t318\t268\t329\t260\t22\n-372\t80\t490\t584\t0\t0\t14\n-801\t980\t156\t331\t228\t182\t26\n-402\t153\t38\t594\t656\t289\t20\n-317\t82\t32\t131\t323\t45\t6\n-630\t1023\t101\t188\t157\t153\t25\n-670\t1023\t185\t162\t250\t249\t25\n-338\t108\t536\t0\t0\t119\t2\n-964\t1023\t262\t348\t358\t269\t26\n-639\t823\t129\t263\t178\t177\t25\n-362\t145\t24\t123\t310\t158\t6\n-360\t223\t65\t352\t600\t403\t7\n-1014\t1023\t410\t349\t265\t286\t26\n-656\t1023\t149\t307\t240\t175\t25\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 cross_sample/test-data/run2/input3.flowtext.flowclr
--- a/cross_sample/test-data/run2/input3.flowtext.flowclr Mon Feb 27 13:29:54 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,20001 +0,0 @@\n-FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n-449\t157\t551\t129\t169\t292\t18\n-894\t1023\t199\t277\t320\t227\t26\n-262\t73\t437\t69\t0\t146\t2\n-340\t115\t509\t268\t0\t74\t1\n-316\t76\t50\t0\t60\t129\t5\n-394\t144\t83\t138\t335\t194\t12\n-383\t139\t499\t0\t0\t224\t2\n-800\t1023\t239\t284\t288\t280\t26\n-388\t97\t534\t111\t83\t177\t18\n-481\t117\t566\t247\t157\t99\t18\n-652\t997\t118\t236\t250\t300\t25\n-333\t100\t526\t82\t21\t34\t10\n-636\t1023\t162\t290\t242\t261\t23\n-283\t137\t0\t32\t137\t151\t5\n-389\t105\t538\t36\t0\t130\t2\n-684\t1023\t111\t180\t205\t186\t25\n-688\t1023\t156\t255\t233\t77\t25\n-431\t83\t64\t114\t586\t144\t6\n-788\t1023\t167\t258\t158\t241\t26\n-687\t1023\t94\t234\t218\t133\t25\n-676\t1023\t149\t287\t215\t102\t25\n-869\t1023\t223\t285\t277\t388\t26\n-986\t1023\t267\t290\t261\t224\t26\n-603\t1018\t193\t272\t255\t135\t25\n-404\t168\t532\t113\t0\t0\t1\n-661\t501\t418\t184\t256\t248\t22\n-381\t169\t508\t0\t125\t204\t2\n-686\t860\t49\t190\t225\t97\t21\n-402\t202\t117\t90\t693\t316\t11\n-418\t89\t566\t19\t0\t306\t2\n-303\t119\t35\t155\t87\t108\t5\n-402\t184\t70\t111\t627\t309\t7\n-304\t107\t0\t118\t86\t257\t4\n-360\t124\t26\t10\t615\t209\t6\n-372\t118\t558\t125\t0\t120\t1\n-659\t1023\t341\t246\t228\t256\t23\n-720\t1023\t180\t178\t212\t229\t25\n-712\t1002\t228\t163\t282\t195\t25\n-321\t90\t472\t35\t151\t178\t2\n-376\t154\t54\t61\t587\t264\t11\n-744\t1023\t229\t271\t226\t216\t26\n-329\t149\t82\t173\t629\t269\t7\n-447\t153\t524\t161\t138\t197\t18\n-364\t294\t248\t335\t0\t222\t16\n-645\t1023\t177\t179\t282\t254\t25\n-1023\t1023\t456\t557\t482\t445\t19\n-440\t297\t403\t122\t82\t135\t18\n-432\t115\t572\t165\t78\t225\t18\n-366\t112\t299\t0\t23\t98\t15\n-673\t1023\t230\t330\t294\t261\t23\n-707\t1023\t222\t246\t206\t242\t25\n-628\t1023\t161\t288\t241\t234\t25\n-601\t1023\t126\t296\t278\t191\t25\n-347\t157\t531\t0\t42\t49\t10\n-262\t65\t210\t36\t0\t176\t15\n-349\t101\t481\t139\t96\t211\t18\n-596\t1023\t193\t252\t233\t288\t23\n-375\t112\t546\t184\t59\t88\t1\n-436\t141\t123\t229\t611\t218\t7\n-389\t131\t576\t0\t0\t144\t2\n-353\t97\t477\t204\t0\t221\t18\n-400\t149\t91\t143\t639\t310\t7\n-742\t1023\t225\t277\t114\t241\t26\n-747\t1023\t132\t254\t227\t176\t25\n-350\t122\t489\t194\t0\t99\t1\n-407\t131\t535\t209\t0\t57\t1\n-269\t92\t0\t0\t5\t128\t5\n-355\t142\t540\t103\t115\t84\t1\n-387\t123\t529\t116\t115\t0\t1\n-358\t86\t523\t18\t32\t101\t10\n-388\t132\t105\t99\t653\t329\t11\n-305\t165\t509\t126\t0\t63\t1\n-454\t168\t113\t124\t629\t251\t7\n-400\t121\t176\t0\t581\t240\t6\n-405\t230\t115\t233\t632\t289\t7\n-596\t942\t74\t236\t280\t279\t25\n-380\t211\t72\t236\t670\t255\t7\n-392\t127\t546\t204\t47\t105\t1\n-519\t409\t169\t117\t136\t417\t4\n-767\t1023\t196\t278\t269\t192\t26\n-367\t121\t528\t95\t0\t117\t2\n-378\t175\t507\t201\t0\t227\t18\n-664\t668\t359\t287\t268\t166\t22\n-435\t161\t543\t185\t67\t197\t18\n-358\t233\t0\t136\t148\t331\t4\n-633\t977\t95\t250\t175\t187\t25\n-373\t128\t564\t0\t35\t119\t2\n-386\t123\t547\t0\t65\t181\t2\n-319\t110\t497\t77\t101\t0\t10\n-401\t86\t503\t126\t184\t138\t18\n-364\t136\t0\t161\t15\t0\t5\n-741\t1023\t188\t221\t270\t230\t26\n-677\t510\t416\t268\t195\t188\t22\n-311\t212\t17\t22\t91\t146\t5\n-642\t1023\t152\t268\t221\t196\t25\n-739\t395\t291\t219\t174\t75\t24\n-760\t1023\t175\t247\t284\t198\t26\n-410\t168\t528\t125\t0\t211\t18\n-338\t158\t71\t69\t1\t155\t5\n-401\t137\t34\t223\t641\t291\t7\n-780\t853\t198\t256\t230\t270\t26\n-389\t185\t160\t28\t664\t319\t11\n-369\t130\t567\t21\t0\t38\t10\n-359\t119\t60\t55\t660\t217\t6\n-349\t97\t522\t0\t21\t0\t10\n-553\t762\t136\t193\t137\t198\t21\n-476\t91\t554\t0\t0\t102\t2\n-372\t77\t506\t0\t89\t0\t10\n-628\t1023\t202\t285\t305\t61\t25\n-493\t351\t403\t242\t150\t196\t22\n-393\t181\t128\t0\t148\t83\t12\n-400\t143\t554\t109\t89\t115\t18\n-387\t91\t544\t199\t141\t45\t1\n-564\t924\t104\t220\t170\t249\t21\n-673\t237\t124\t79\t648\t268\t7\n-363\t203\t84\t213\t79\t224\t4\n-353\t83\t517\t168\t70\t133\t18\n-378\t157\t577\t0\t68\t205\t2\n-338\t139\t25\t41\t38\t92\t5\n-330\t70\t0\t55\t597\t165\t6\n-558\t280\t421\t143\t113\t226\t22\n-447\t288\t156\t211\t5\t33\t12\n-341\t112\t457\t22\t0\t116\t2\n-757\t1023\t205\t268\t291\t189\t26\n-375\t112\t541\t20\t14\t0\t10\n-657\t1023\t141\t206\t196\t125\t25\n-356\t114\t550\t0\t0\t101\t10\n-700\t1023\t196\t256\t272\t64\t25\n-629\t1023\t189\t174\t253\t149\t25\n-360\t141\t554\t0\t32\t52\t10\n-362\t108\t543\t219\t158\t128\t18\n-337\t112\t511\t107\t65\t178\t2\n-398\t277\t67\t116\t277\t95\t12\n-767\t1023\t157\t205\t212\t95\t25\n-609\t1023\t348\t474\t390\t429\t23\n-369\t96\t532\t255\t0\t212\t18\n-386\t174\t46\t65\t619\t231\t6\n-336\t115\t492\t87\t0\t105\t10\n-469\t164\t580\t94\t50\t12\t1\n-396\t108\t535\t84\t4\t82\t10\n-452\t159\t534\t176\t169\t176\t18\n-410\t129\t537\t107\t0\t67\t1\n-304\t141\t31\t0\t112\t176\t5\n-863\t1023\t242\t349\t309\t330\t26\n-391\t226\t83\t224\t576\t232\t7\n-701\t1023\t77\t158\t258\t111\t25\n-674\t1023\t151\t247\t256\t238\t25\n-309\t70\t73\t137\t287\t110\t5\n-352\t154\t0\t23\t602\t271\t11\n-352\t152\t130\t0\t29\t161\t5\n-542\t1011\t70'..b'19\t209\t182\t110\t21\n-358\t182\t80\t44\t667\t310\t11\n-512\t1023\t125\t168\t262\t201\t21\n-466\t240\t133\t157\t196\t5\t12\n-302\t139\t471\t0\t7\t19\t10\n-361\t114\t533\t0\t0\t275\t2\n-1023\t1023\t263\t311\t246\t309\t26\n-334\t118\t371\t156\t0\t44\t15\n-820\t1023\t294\t313\t318\t305\t26\n-407\t150\t547\t133\t138\t210\t18\n-271\t65\t486\t0\t48\t0\t10\n-364\t121\t541\t49\t94\t229\t2\n-654\t1023\t151\t256\t251\t230\t25\n-366\t143\t555\t195\t0\t15\t1\n-512\t571\t107\t220\t20\t192\t16\n-556\t265\t448\t81\t172\t103\t24\n-424\t228\t43\t132\t616\t310\t7\n-753\t1023\t224\t268\t192\t116\t25\n-360\t96\t533\t15\t109\t138\t2\n-426\t207\t276\t99\t578\t328\t8\n-432\t207\t142\t0\t408\t0\t6\n-640\t580\t445\t287\t171\t207\t22\n-658\t1023\t201\t282\t277\t300\t23\n-666\t1023\t92\t257\t172\t234\t25\n-354\t216\t87\t176\t336\t106\t12\n-356\t176\t42\t0\t170\t134\t5\n-689\t1023\t186\t217\t283\t198\t25\n-346\t115\t516\t155\t0\t132\t18\n-387\t128\t579\t203\t51\t141\t18\n-665\t1023\t122\t229\t165\t78\t25\n-400\t168\t0\t160\t600\t249\t7\n-357\t95\t517\t0\t87\t186\t2\n-373\t158\t534\t228\t53\t103\t1\n-372\t103\t525\t238\t7\t175\t18\n-298\t86\t428\t55\t0\t174\t2\n-348\t131\t546\t6\t0\t55\t10\n-368\t135\t549\t144\t0\t12\t1\n-589\t1023\t333\t446\t322\t395\t23\n-337\t117\t81\t149\t643\t348\t7\n-372\t258\t139\t113\t174\t374\t4\n-827\t1023\t128\t271\t263\t132\t26\n-693\t1023\t179\t292\t201\t287\t23\n-732\t946\t187\t253\t264\t121\t25\n-370\t268\t125\t182\t104\t97\t12\n-554\t761\t111\t293\t224\t233\t21\n-411\t188\t525\t185\t124\t208\t18\n-356\t165\t123\t85\t672\t282\t11\n-353\t92\t508\t124\t141\t66\t1\n-684\t902\t144\t248\t244\t173\t25\n-402\t185\t135\t497\t774\t472\t13\n-380\t144\t527\t156\t62\t31\t1\n-765\t1023\t202\t261\t254\t258\t26\n-1023\t1023\t500\t508\t445\t550\t19\n-1023\t1023\t538\t456\t358\t450\t19\n-652\t921\t131\t204\t107\t223\t25\n-480\t181\t541\t223\t133\t294\t18\n-651\t1023\t174\t340\t182\t19\t25\n-619\t1023\t133\t263\t239\t231\t25\n-374\t93\t520\t0\t0\t138\t2\n-547\t760\t70\t0\t162\t224\t21\n-427\t278\t113\t238\t385\t170\t7\n-753\t1023\t156\t296\t263\t300\t26\n-640\t942\t122\t265\t237\t242\t25\n-348\t94\t507\t300\t109\t22\t1\n-599\t1023\t135\t321\t261\t212\t25\n-591\t948\t188\t176\t247\t130\t21\n-386\t92\t515\t201\t32\t79\t1\n-423\t156\t562\t8\t120\t144\t2\n-581\t1023\t146\t214\t153\t145\t25\n-779\t1023\t208\t308\t295\t319\t26\n-1022\t174\t372\t274\t253\t397\t22\n-395\t112\t554\t213\t64\t109\t18\n-398\t283\t104\t418\t52\t211\t16\n-459\t215\t559\t287\t198\t109\t18\n-366\t160\t536\t218\t156\t122\t18\n-380\t197\t123\t74\t638\t287\t11\n-624\t1023\t133\t241\t194\t265\t25\n-400\t163\t518\t139\t69\t225\t18\n-380\t131\t564\t126\t0\t36\t1\n-283\t146\t65\t180\t134\t0\t5\n-379\t112\t173\t0\t646\t223\t11\n-752\t1023\t129\t258\t239\t245\t25\n-409\t206\t179\t149\t641\t290\t7\n-635\t525\t409\t225\t206\t227\t22\n-680\t1023\t234\t196\t249\t165\t25\n-702\t458\t425\t271\t150\t46\t24\n-734\t511\t416\t176\t152\t200\t22\n-409\t171\t20\t29\t574\t212\t6\n-413\t251\t83\t12\t21\t64\t12\n-737\t1023\t180\t287\t284\t283\t26\n-431\t175\t361\t239\t132\t0\t1\n-353\t114\t50\t0\t621\t271\t11\n-408\t141\t559\t0\t132\t196\t2\n-531\t798\t102\t253\t209\t75\t21\n-619\t1023\t205\t294\t235\t212\t25\n-667\t1023\t187\t234\t288\t219\t25\n-392\t247\t261\t675\t198\t451\t17\n-311\t102\t514\t99\t110\t146\t2\n-460\t125\t559\t0\t0\t73\t10\n-400\t99\t564\t212\t139\t96\t1\n-633\t1023\t168\t232\t214\t195\t25\n-404\t166\t556\t177\t58\t46\t1\n-678\t1023\t210\t305\t274\t229\t23\n-364\t174\t98\t36\t615\t267\t11\n-372\t118\t543\t109\t3\t52\t1\n-672\t1023\t188\t292\t133\t249\t25\n-643\t1023\t216\t273\t296\t169\t25\n-445\t134\t552\t0\t143\t94\t2\n-400\t151\t556\t179\t191\t181\t18\n-701\t1023\t226\t239\t247\t291\t23\n-365\t157\t122\t0\t667\t233\t11\n-385\t88\t542\t89\t180\t60\t10\n-358\t87\t482\t10\t0\t55\t10\n-710\t487\t449\t284\t139\t96\t24\n-371\t134\t510\t19\t14\t351\t2\n-264\t69\t463\t0\t0\t80\t10\n-428\t103\t512\t263\t0\t70\t1\n-614\t490\t462\t229\t120\t325\t22\n-466\t219\t513\t117\t0\t174\t18\n-674\t525\t400\t208\t194\t194\t22\n-324\t110\t506\t66\t32\t128\t2\n-394\t115\t28\t0\t557\t193\t6\n-411\t175\t63\t139\t618\t323\t7\n-611\t303\t345\t92\t88\t100\t24\n-450\t239\t160\t99\t195\t210\t12\n-356\t129\t33\t90\t602\t94\t6\n-605\t1006\t213\t204\t220\t220\t25\n-773\t1023\t237\t275\t210\t167\t26\n-429\t142\t570\t272\t0\t141\t18\n-263\t33\t417\t0\t0\t194\t2\n-347\t148\t26\t0\t630\t300\t11\n-364\t121\t528\t182\t70\t194\t18\n-339\t87\t483\t0\t43\t74\t10\n-692\t1009\t147\t285\t115\t156\t25\n-596\t988\t133\t305\t113\t273\t25\n-847\t1023\t244\t216\t316\t101\t26\n-386\t135\t531\t166\t184\t117\t18\n-621\t970\t37\t127\t238\t274\t21\n-298\t99\t482\t88\t0\t130\t2\n-658\t1023\t117\t165\t208\t188\t25\n-326\t172\t76\t12\t149\t77\t5\n-360\t84\t532\t57\t138\t102\t10\n-886\t1023\t229\t361\t290\t234\t26\n-634\t972\t248\t277\t271\t215\t23\n-332\t164\t0\t73\t246\t210\t5\n-447\t121\t548\t0\t0\t393\t2\n-391\t119\t74\t0\t628\t238\t11\n-340\t100\t528\t245\t0\t8\t1\n-385\t99\t179\t115\t513\t163\t6\n-400\t157\t126\t99\t638\t313\t7\n-431\t97\t527\t156\t122\t197\t18\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 runCrossSample.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/runCrossSample.py Wed Jul 29 13:32:17 2020 -0400
[
b'@@ -0,0 +1,216 @@\n+#!/usr/bin/env python\n+######################################################################\n+#                  Copyright (c) 2016 Northrop Grumman.\n+#                          All rights reserved.\n+######################################################################\n+import sys\n+import os\n+from scipy.stats import gmean\n+from argparse import ArgumentParser\n+from collections import defaultdict\n+import pandas as pd\n+\n+#\n+# version 1.1 -- April 2016 -- C. Thomas\n+# modified to read in several input files and output to a directory\n+# + generates summary statistics\n+# also checks before running that input files are consistent with centroid file\n+#\n+\n+\n+def compare_MFIs(input_files, f_names, mfi_file):\n+    header_MFIs = ""\n+    flag_error = False\n+    with open(mfi_file, "r") as mfi_check:\n+        mfi_fl = mfi_check.readline().split("\\t")\n+        header_MFIs = "\\t".join([mfi_fl[h] for h in range(1, len(mfi_fl))])\n+\n+    for hh, files in enumerate(input_files):\n+        with open(files, "r") as inf:\n+            hdrs = inf.readline()\n+            if hdrs != header_MFIs:\n+                sys.stderr.write(hdrs + "headers in " + f_names[hh] + " are not consistent with FLOCK centroid file:\\n" + header_MFIs + "\\n")\n+                flag_error = True\n+    if flag_error:\n+        sys.exit(2)\n+\n+\n+def stats_MFIs(cs_df, ctr, mfi_calc):\n+    if mfi_calc == "mfi":\n+        MFIs = cs_df.groupby(\'Population\').mean().round(decimals=2)\n+    elif mfi_calc == "gmfi":\n+        MFIs = cs_df.groupby(\'Population\').agg(lambda x: gmean(list(x))).round(decimals=2)\n+    else:\n+        MFIs = cs_df.groupby(\'Population\').median().round(decimals=2)\n+    pop_freq = (cs_df.Population.value_counts(normalize=True) * 100).round(decimals=2)\n+    sorted_pop_freq = pop_freq.sort_index()\n+    MFIs[\'Percentage\'] = sorted_pop_freq\n+    MFIs[\'Population\'] = MFIs.index\n+    MFIs[\'SampleName\'] = "".join(["Sample", str(ctr).zfill(2)])\n+    return MFIs\n+\n+\n+def get_pop_prop(input_files, summary_stat, mfi_stats, marker_names, mfi_calc):\n+    pop_count = defaultdict(dict)\n+    mrk = marker_names.strip().split("\\t")\n+    markers = "\\t".join([mrk[m] for m in range(1, len(mrk))])\n+\n+    ctr_mfi = 0\n+    nb_pop = 0\n+    tot = {}\n+    with open(mfi_stats, "a") as mfis:\n+        mfis.write("\\t".join([markers, "Percentage", "Population", "SampleName"]) + "\\n")\n+        for files in input_files:\n+            cs = pd.read_table(files)\n+            tot[files] = len(cs.index)\n+            for pops in cs.Population:\n+                if pops in pop_count[files]:\n+                    pop_count[files][pops] += 1\n+                else:\n+                    pop_count[files][pops] = 1\n+            max_nb_pop = max(set(cs.Population))\n+            if (max_nb_pop > nb_pop):\n+                nb_pop = max_nb_pop\n+            ctr_mfi += 1\n+            cs_stats = stats_MFIs(cs, ctr_mfi, mfi_calc)\n+            cs_stats.to_csv(mfis, sep="\\t", header=False, index=False)\n+\n+    ctr = 0\n+    with open(summary_stat, "w") as outf:\n+        itpop = [str(x) for x in range(1, nb_pop + 1)]\n+        cols = "\\t".join(itpop)\n+        outf.write("FileID\\tSampleName\\t" + cols + "\\n")\n+        for eachfile in pop_count:\n+            tmp = []\n+            for num in range(1, nb_pop + 1):\n+                if num not in pop_count[eachfile]:\n+                    pop_count[eachfile][num] = 0\n+                tmp.append(str((pop_count[eachfile][num] / float(tot[eachfile])) * 100))\n+            props = "\\t".join(tmp)\n+            ctr += 1\n+            sample_name = "".join(["Sample", str(ctr).zfill(2)])\n+            outf.write("\\t".join([input_files[eachfile], sample_name, props]) + "\\n")\n+\n+\n+def run_cross_sample(input_files, f_names, mfi_file, output_dir, summary_stat,\n+                     mfi_stats, mfi_calc):\n+    markers = ""\n+    # Strip off Header Line\n+    with open(mfi_file, "r") as mfi_in, open("mfi.txt", "w") as mfi_out:\n+        markers = mfi_in.readline().strip("\\n")\n+        for line '..b'mfi_in:\n+            mfi_out.write(line)\n+\n+    # Create output directory\n+    if not os.path.exists(output_dir):\n+        os.makedirs(output_dir)\n+\n+    outputs = {}\n+    # Run cent_adjust\n+    for nm, flow_file in enumerate(input_files):\n+        run_command = "cent_adjust mfi.txt " + flow_file\n+        print(run_command)\n+        os.system(run_command)\n+        flow_name = os.path.split(flow_file)[1]\n+        outfile = os.path.join(output_dir, f_names[nm] + ".flowclr")\n+        outputs[outfile] = f_names[nm]\n+        with open(flow_file, "r") as flowf, open("population_id.txt", "r") as popf, open(outfile, "w") as outf:\n+            f_line = flowf.readline()\n+            f_line = f_line.rstrip()\n+            f_line = f_line + "\\tPopulation\\n"\n+            outf.write(f_line)\n+\n+            for line in flowf:\n+                line = line.rstrip()\n+                pop_line = popf.readline()\n+                pop_line = pop_line.rstrip()\n+                line = line + "\\t" + pop_line + "\\n"\n+                outf.write(line)\n+    get_pop_prop(outputs, summary_stat, mfi_stats, markers, mfi_calc)\n+    return\n+\n+\n+def generate_CS_stats(mfi_stats, all_stats):\n+    df = pd.read_table(mfi_stats)\n+    means = df.groupby(\'Population\').mean().round(decimals=2)\n+    medians = df.groupby(\'Population\').median().round(decimals=2)\n+    stdev = df.groupby(\'Population\').std().round(decimals=2)\n+    all_markers = []\n+    with open(mfi_stats, "r") as ms:\n+        ms_fl = ms.readline().strip()\n+        all_markers = ms_fl.split("\\t")[0:-2]\n+\n+    with open(all_stats, "w") as mstats:\n+        hdgs = ["\\t".join(["_".join([mrs, "mean"]), "_".join([mrs, "median"]), "_".join([mrs, "stdev"])]) for mrs in all_markers]\n+        mstats.write("Population\\t")\n+        mstats.write("\\t".join(hdgs) + "\\n")\n+        for pops in set(df.Population):\n+            tmp_line = []\n+            for mar in all_markers:\n+                tmp_line.append("\\t".join([str(means.loc[pops, mar]), str(medians.loc[pops, mar]), str(stdev.loc[pops, mar])]))\n+            mstats.write(str(pops) + "\\t")\n+            mstats.write("\\t".join(tmp_line) + "\\n")\n+\n+\n+if __name__ == "__main__":\n+    parser = ArgumentParser(\n+             prog="runCrossSample",\n+             description="Run CrossSample on Flow file")\n+\n+    parser.add_argument(\n+            \'-i\',\n+            dest="input_files",\n+            required=True,\n+            action=\'append\',\n+            help="File locations for flow text files.")\n+\n+    parser.add_argument(\n+            \'-n\',\n+            dest="filenames",\n+            required=True,\n+            action=\'append\',\n+            help="Filenames")\n+\n+    parser.add_argument(\n+            \'-m\',\n+            dest="mfi",\n+            required=True,\n+            help="File location for the MFI text file.")\n+\n+    parser.add_argument(\n+            \'-o\',\n+            dest="out_path",\n+            required=True,\n+            help="Path to the directory for the output files.")\n+\n+    parser.add_argument(\n+            \'-M\',\n+            dest="mfi_calc",\n+            required=True,\n+            help="what to calculate for centroids.")\n+\n+    parser.add_argument(\n+            \'-s\',\n+            dest="sstat",\n+            required=True,\n+            help="File location for the summary statistics.")\n+\n+    parser.add_argument(\n+            \'-S\',\n+            dest="mfi_stat",\n+            required=True,\n+            help="File location for the MFI summary statistics.")\n+\n+    parser.add_argument(\n+            \'-a\',\n+            dest="all_stats",\n+            required=True,\n+            help="File location for stats on all markers.")\n+\n+    args = parser.parse_args()\n+\n+    input_files = [f for f in args.input_files]\n+    input_names = [n for n in args.filenames]\n+    compare_MFIs(input_files, input_names, args.mfi)\n+    run_cross_sample(input_files, input_names, args.mfi, args.out_path, args.sstat, args.mfi_stat, args.mfi_calc)\n+    generate_CS_stats(args.mfi_stat, args.all_stats)\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 runCrossSample.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/runCrossSample.xml Wed Jul 29 13:32:17 2020 -0400
[
b'@@ -0,0 +1,148 @@\n+<tool id="run_cross_sample" name="Run Cross Sample" version="1.1+galaxy0" profile="18.01">\n+  <description>using a Flow file that was run using FLOCK</description>\n+  <requirements>\n+    <requirement type="package" version="1.5.1">scipy</requirement>\n+    <requirement type="package" version="1.0.5">pandas</requirement>\n+    <requirement type="package" version="1.0">flock</requirement>\n+  </requirements>\n+  <stdio>\n+    <exit_code range="1" level="fatal"/>\n+    <exit_code range="2" level="fatal" description="Columns inconsistencies between files and centroids file. See stderr for more details." />\n+    <exit_code range="3:" level="fatal"/>\n+  </stdio>\n+  <command><![CDATA[\n+    python \'$__tool_directory__/runCrossSample.py\' -m \'${centroid}\' -s \'${stats}\' -S \'${mfistats}\' -a \'${allstats}\' -M \'${mfi}\' -o crossSampleOutputs\n+  #for $f in $input\n+    -i $f\n+    -n \'${f.name}\'\n+  #end for\n+\n+  ]]>\n+  </command>\n+  <inputs>\n+    <param format="flowtext" name="input" type="data_collection" collection_type="list" label="Flowtext files Collection"/>\n+    <param format="flowmfi" name="centroid" type="data" label="Centroid file"/>\n+    <param name="mfi" type="select" label="Calculate centroids using:">\n+      <option value="mfi" selected="true">Mean Fluorescence Intensity</option>\n+      <option value="mdfi">Median Fluorescence Intensity</option>\n+      <option value="gmfi">Geometric Mean Fluorescence Intensity</option>\n+    </param>\n+  </inputs>\n+  <outputs>\n+    <collection type="list" label="CrossSample on ${input.name}" name="output">\n+        <discover_datasets pattern="(?P&lt;name&gt;.*)" directory="crossSampleOutputs" format="flowclr" />\n+    </collection>\n+    <data format="flowstat1" name="stats" label="Population distribution after CrossSample on ${input.name} using ${mfi}"/>\n+    <data format="flowstat2" name="mfistats" label="${mfi} centroids of CrossSample on ${input.name} using ${mfi}"/>\n+    <data format="flowstat3" name="allstats" label="${mfi} descriptive stats of CrossSample on ${input.name} using ${mfi}"/>\n+  </outputs>\n+  <tests>\n+    <test>\n+      <param name="input">\n+        <collection type="list">\n+          <element name="input1" value="input1.flowtext"/>\n+          <element name="input2" value="input2.flowtext"/>\n+          <element name="input3" value="input3.flowtext"/>\n+        </collection>\n+      </param>\n+      <param name="centroid" value="mfi.flowmfi"/>\n+      <param name="mfi" value="mfi"/>\n+      <output name="stats" file="out1.flowstat1" lines_diff="6"/>\n+      <output name="allstats" file="out1.flowstat3"/>\n+      <output name="mfistats" file="out1.flowstat2" compare="sim_size"/>\n+      <output_collection name="output" count="3">\n+        <element name="input1.flowtext.flowclr" file="run1/input1.flowtext.flowclr" compare="sim_size"/>\n+        <element name="input2.flowtext.flowclr" file="run1/input2.flowtext.flowclr" compare="sim_size"/>\n+        <element name="input3.flowtext.flowclr" file="run1/input3.flowtext.flowclr" compare="sim_size"/>\n+      </output_collection>\n+    </test>\n+    <test>\n+      <param name="input">\n+        <collection type="list">\n+          <element name="input1" value="input1.flowtext"/>\n+          <element name="input2" value="input2.flowtext"/>\n+          <element name="input3" value="input3.flowtext"/>\n+        </collection>\n+      </param>\n+      <param name="centroid" value="gmfi.flowmfi"/>\n+      <param name="mfi" value="gmfi"/>\n+      <output name="stats" file="out2.flowstat1" lines_diff="6"/>\n+      <output name="allstats" file="out2.flowstat3"/>\n+      <output name="mfistats" file="out2.flowstat2" compare="sim_size"/>\n+      <output_collection name="output" type="list" count="3">\n+        <element name="input1.flowtext.flowclr" file="run2/input1.flowtext.flowclr"/>\n+        <element name="input2.flowtext.flowclr" file="run2/input2.flowtext.flowclr"/>\n+        <element name="input3.flowtext.flowclr" file="run2/input3.flowtext.flowclr"/>\n+      </o'..b' the attribution of events to populations.\n+.. class:: infomark\n+The option chosen for the centroids (mean, median or geometric mean) should be the same as used to run FLOCK.\n+**Output**\n+Each event within each file of a dataset collection is attributed to a population depending on its intensity profile.\n+A table of the population composition of each file is generated as well as MFI and population descriptive statistics.\n+.. class:: infomark\n+Tip: If headers in each text-converted FCS file do not match those in the centroid file, the program will not run. Edit the input file using the Remove, rearrange and/or rename columns tool in the Flow Text File Tools section prior to Cross Sample analysis.\n+-----\n+**Example**\n+*Input* - fluorescence intensities per marker per event::\n+   Marker1 Marker2 Marker3 ...\n+   33      47      11      ...\n+   31      64      11      ...\n+   21      62      99      ...\n+   14      34      60      ...\n+   ...     ...     ...     ...\n+*Centroid file* - mean, geometric mean or median fluorescence intensity per marker per population::\n+   Population Marker1 Marker2 Marker3 ...\n+   1          38      49      10      ...\n+   2          21      63      100     ...\n+   3          31      52      45      ...\n+   4          11      78      25      ...\n+   ...        ...     ...     ...     ...\n+*Output* for each text file - fluorescence intensities per marker and population ID per event::\n+   Marker1 Marker2 Marker3 ... Population\n+   33      47      11      ... 1\n+   31      64      11      ... 6\n+   21      62      99      ... 2\n+   14      34      60      ... 7\n+   ...     ...     ...     ... ...\n+*Summary table* - distribution of events in each population in each file::\n+   Filename SampleName Pop1 Pop2 Pop3 ...\n+   File1    Biosample1 0.1  0.25 0.14 ...\n+   File2    Biosample2 0.02 0.1  0.17 ...\n+   File3    Biosample3 0.4  0.05 0.21 ...\n+   File4    Biosample4 0.05 0.3  0.08 ...\n+*Centroid MFI Summary table* - for each file, mean, median or geometric mean fluorescence intensities per marker per population::\n+   Marker1 Marker2 Marker3 ... Population Percentage SampleName\n+   154     885     24      ... 1          0.2        Biosample1\n+   458     74      574     ... 2          0.3        Biosample1\n+   3       210     86      ... 3          0.05       Biosample1\n+   ...     ...     ...     ... ...        ...        ...\n+   140     921     19      ... 1          0.1        Biosample2\n+   428     79      508     ... 2          0.25       Biosample2\n+   9       225     90      ... 3          0.3        Biosample2\n+   ...     ...     ...     ... ...        ...        ...\n+*MFI Descriptive Statistics table* - for the set of files, mean, median and standard deviation of each centroid per marker per population, as well as mean, median and standard deviation of the population\'s proportion::\n+   Population Marker1_mean Marker1_median Marker1_stdev ... Percentage_mean Percentage_median Percentage_stdev\n+   1          94.65        90.86          25.8          ... 1.84            0.55              2.48\n+   2          132.18       131.58         5.02          ... 9.89            9.76              0.33\n+   3          71.8         69.68          10.53         ... 3.02            1.49              3.45\n+   4          84.85        84.85          nan           ... 8.52            8.52              nan\n+   5          161.82       132.77         61.29         ... 0.95            0.37              1.06\n+   ...        ...          ...            ...           ... ...             ...               ...\n+  ]]>\n+  </help>\n+  <citations>\n+    <citation type="doi">10.1002/cyto.b.20554</citation>\n+    <citation type="doi">10.3389/fimmu.2012.00302</citation>\n+    <citation type="doi">10.1371/journal.pone.0038408</citation>\n+    <citation type="doi">10.1371/journal.ppat.1003076</citation>\n+    <citation type="doi">10.1016/j.clim.2012.12.003</citation>\n+    <citation type="doi">10.1038/srep02327</citation>\n+  </citations>\n+</tool>\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/gmfi.flowmfi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/gmfi.flowmfi Wed Jul 29 13:32:17 2020 -0400
b
@@ -0,0 +1,27 @@
+Population FSC SSC CD4 CCR7 CD8 CCR3
+1 362 113 519 182 0 0
+2 368 116 522 0 0 181
+3 360 108 511 0 630 472
+4 354 165 0 0 0 514
+5 329 149 0 0 0 0
+6 370 147 0 0 606 0
+7 386 154 0 310 617 294
+8 369 109 516 249 640 500
+9 413 200 0 403 0 633
+10 354 110 520 0 0 0
+11 379 133 0 0 602 562
+12 405 242 0 0 0 0
+13 402 129 514 409 613 294
+14 399 133 525 560 0 0
+15 353 109 318 0 0 0
+16 407 214 0 502 0 0
+17 432 180 503 592 0 279
+18 381 123 523 192 0 187
+19 935 946 478 612 513 523
+20 390 148 0 528 618 0
+21 614 972 0 0 0 0
+22 662 422 382 0 0 276
+23 538 965 362 471 382 442
+24 677 427 387 0 0 0
+25 724 1012 0 265 0 0
+26 957 963 311 337 0 300
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/input1.flowtext
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input1.flowtext Wed Jul 29 13:32:17 2020 -0400
b
b'@@ -0,0 +1,20001 @@\n+FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\n+289\t56\t438\t0\t626\t480\n+352\t153\t30\t147\t483\t386\n+383\t190\t156\t228\t734\t408\n+261\t62\t432\t121\t598\t555\n+451\t120\t537\t338\t568\t201\n+373\t104\t3\t110\t621\t584\n+418\t105\t561\t0\t610\t562\n+358\t185\t0\t292\t641\t327\n+733\t970\t139\t227\t293\t259\n+765\t1023\t71\t239\t233\t253\n+762\t957\t143\t158\t271\t255\n+406\t191\t513\t122\t646\t264\n+695\t1023\t168\t251\t234\t283\n+336\t178\t0\t146\t128\t537\n+668\t1023\t167\t306\t302\t253\n+330\t135\t493\t72\t734\t496\n+618\t1015\t201\t269\t284\t141\n+662\t1023\t204\t241\t273\t149\n+383\t109\t49\t50\t575\t451\n+427\t206\t169\t258\t725\t402\n+369\t152\t216\t569\t738\t684\n+420\t209\t26\t368\t651\t303\n+554\t218\t601\t336\t629\t300\n+425\t229\t89\t416\t616\t373\n+493\t355\t516\t252\t625\t568\n+674\t1023\t211\t243\t259\t310\n+286\t88\t0\t63\t556\t491\n+318\t83\t477\t469\t627\t546\n+297\t65\t489\t324\t618\t518\n+358\t101\t496\t0\t646\t543\n+429\t168\t515\t462\t675\t321\n+364\t105\t504\t298\t602\t460\n+319\t469\t415\t202\t571\t405\n+532\t1023\t390\t528\t406\t507\n+561\t287\t396\t72\t381\t279\n+422\t150\t522\t351\t626\t353\n+448\t149\t529\t288\t612\t270\n+361\t143\t0\t132\t656\t362\n+377\t96\t504\t163\t603\t524\n+837\t1023\t211\t231\t316\t280\n+702\t907\t176\t206\t271\t236\n+367\t130\t570\t0\t661\t568\n+302\t95\t508\t205\t643\t494\n+403\t216\t159\t361\t158\t554\n+427\t215\t188\t0\t711\t381\n+743\t1023\t217\t316\t306\t278\n+746\t339\t238\t433\t692\t433\n+409\t104\t545\t278\t631\t480\n+345\t67\t499\t581\t682\t524\n+292\t171\t69\t115\t70\t463\n+314\t152\t84\t0\t0\t514\n+824\t1023\t220\t273\t315\t179\n+554\t1023\t143\t255\t219\t283\n+700\t998\t193\t261\t294\t148\n+732\t1023\t204\t314\t322\t279\n+360\t84\t467\t425\t577\t278\n+425\t136\t558\t193\t622\t586\n+301\t135\t49\t66\t574\t499\n+356\t146\t511\t110\t635\t287\n+390\t119\t528\t386\t580\t251\n+654\t931\t169\t259\t334\t220\n+385\t255\t102\t211\t671\t449\n+589\t1023\t187\t203\t270\t189\n+678\t1023\t0\t251\t177\t250\n+410\t123\t528\t305\t710\t429\n+362\t90\t514\t292\t642\t531\n+543\t934\t127\t153\t283\t199\n+739\t587\t416\t244\t300\t158\n+406\t98\t497\t428\t621\t364\n+895\t1023\t201\t307\t281\t279\n+330\t123\t7\t230\t577\t247\n+384\t158\t83\t62\t614\t300\n+685\t1023\t197\t257\t209\t278\n+395\t163\t531\t0\t618\t434\n+350\t128\t483\t352\t642\t514\n+339\t119\t124\t127\t546\t556\n+357\t107\t516\t66\t679\t560\n+1023\t1023\t420\t305\t336\t355\n+620\t894\t88\t189\t210\t272\n+618\t970\t394\t238\t179\t201\n+678\t954\t143\t286\t280\t114\n+544\t766\t122\t184\t279\t236\n+416\t138\t120\t358\t578\t228\n+425\t100\t167\t229\t582\t600\n+333\t95\t516\t229\t591\t443\n+396\t147\t554\t263\t608\t280\n+331\t140\t27\t51\t39\t552\n+689\t1023\t204\t267\t316\t276\n+564\t810\t151\t89\t250\t253\n+282\t70\t494\t158\t497\t546\n+378\t127\t550\t189\t629\t555\n+396\t182\t181\t323\t541\t509\n+627\t1011\t239\t262\t314\t225\n+319\t139\t45\t78\t131\t480\n+324\t123\t17\t73\t637\t603\n+398\t95\t555\t173\t643\t518\n+445\t1023\t426\t492\t402\t540\n+671\t1023\t113\t249\t281\t283\n+384\t223\t0\t200\t621\t273\n+780\t1023\t237\t227\t287\t64\n+408\t141\t72\t272\t645\t621\n+672\t1023\t164\t214\t258\t273\n+626\t932\t66\t256\t207\t301\n+398\t111\t118\t165\t589\t531\n+687\t927\t137\t266\t263\t141\n+342\t139\t82\t122\t305\t595\n+736\t393\t454\t252\t235\t324\n+311\t102\t491\t118\t632\t474\n+318\t110\t503\t46\t643\t523\n+623\t1023\t159\t266\t253\t197\n+416\t106\t547\t347\t668\t489\n+350\t91\t93\t199\t590\t577\n+403\t158\t186\t222\t604\t540\n+362\t202\t128\t187\t597\t241\n+628\t886\t205\t244\t172\t201\n+656\t1023\t231\t241\t251\t104\n+731\t981\t141\t207\t273\t165\n+340\t224\t49\t449\t548\t782\n+699\t1023\t259\t233\t266\t220\n+392\t148\t43\t35\t595\t575\n+942\t1023\t199\t308\t335\t193\n+312\t164\t35\t103\t0\t461\n+822\t1023\t202\t311\t252\t308\n+683\t457\t339\t241\t182\t180\n+683\t1023\t180\t263\t277\t261\n+397\t174\t25\t20\t654\t616\n+324\t77\t487\t0\t623\t518\n+371\t146\t511\t36\t648\t414\n+399\t162\t144\t64\t622\t589\n+682\t1023\t157\t221\t257\t233\n+590\t922\t199\t196\t271\t146\n+393\t105\t506\t253\t497\t251\n+633\t1023\t41\t145\t256\t162\n+550\t232\t350\t249\t197\t556\n+355\t99\t523\t31\t646\t507\n+434\t202\t88\t311\t725\t360\n+696\t1023\t222\t263\t293\t283\n+725\t345\t375\t211\t267\t260\n+678\t1023\t163\t273\t259\t286\n+559\t831\t132\t272\t323\t237\n+298\t110\t506\t382\t669\t443\n+334\t117\t542\t4\t628\t525\n+681\t1023\t206\t236\t252\t223\n+638\t1023\t167\t225\t290\t234\n+297\t101\t0\t33\t579\t305\n+359\t129\t190\t49\t592\t560\n+361\t88\t508\t215\t632\t345\n+644\t917\t113\t197\t254\t280\n+749\t1023\t172\t305\t290\t189\n+382\t87\t544\t374\t615\t543\n+330\t75\t515\t253\t640\t370\n+1023\t827\t298\t327\t363\t366\n+347\t116\t513\t140\t640\t591\n+676\t1023\t204\t229\t246\t286\n+362\t118\t522\t185\t530\t539\n+1023\t1023\t400\t386\t361\t304\n+822\t1023\t184\t186\t209\t291\n+459\t701\t171\t84\t225\t267\n+330\t56\t41\t177\t93\t238\n+416\t160\t149\t140\t658\t601\n+656\t1023\t129\t249\t2'..b'9\n+596\t1023\t230\t309\t284\t241\n+425\t169\t170\t0\t610\t566\n+417\t241\t77\t38\t562\t275\n+399\t99\t512\t0\t653\t515\n+1005\t674\t405\t309\t291\t314\n+755\t781\t189\t231\t239\t211\n+744\t1023\t191\t303\t227\t278\n+435\t129\t84\t253\t560\t479\n+634\t1023\t138\t237\t233\t172\n+675\t1023\t126\t199\t262\t2\n+515\t836\t154\t127\t230\t88\n+404\t165\t529\t246\t667\t237\n+481\t522\t150\t197\t255\t94\n+920\t1023\t259\t296\t300\t243\n+346\t84\t475\t340\t591\t425\n+734\t485\t425\t233\t252\t232\n+363\t83\t464\t526\t458\t398\n+404\t143\t538\t282\t581\t229\n+535\t1023\t133\t259\t238\t118\n+454\t1023\t240\t324\t338\t257\n+430\t212\t534\t498\t646\t266\n+290\t78\t445\t508\t645\t476\n+431\t165\t549\t489\t659\t263\n+350\t110\t536\t136\t638\t609\n+434\t169\t89\t212\t630\t664\n+681\t282\t338\t196\t221\t147\n+466\t779\t167\t101\t125\t188\n+330\t176\t81\t67\t47\t499\n+409\t138\t550\t347\t649\t324\n+595\t962\t186\t253\t220\t172\n+704\t986\t218\t244\t283\t207\n+382\t119\t539\t354\t615\t558\n+406\t181\t541\t566\t661\t196\n+654\t1023\t171\t304\t320\t271\n+367\t174\t75\t300\t598\t294\n+383\t119\t536\t205\t660\t582\n+329\t92\t510\t240\t652\t574\n+473\t217\t161\t90\t0\t601\n+556\t278\t479\t118\t264\t627\n+655\t1023\t211\t250\t296\t291\n+361\t120\t96\t24\t600\t557\n+468\t1023\t366\t419\t409\t500\n+303\t89\t91\t90\t602\t563\n+315\t169\t39\t0\t0\t476\n+315\t99\t521\t140\t650\t499\n+419\t126\t81\t186\t624\t677\n+748\t1023\t177\t287\t236\t140\n+342\t100\t49\t52\t569\t507\n+730\t1023\t217\t327\t278\t308\n+389\t197\t76\t26\t626\t337\n+593\t900\t215\t209\t285\t248\n+685\t1023\t137\t278\t318\t109\n+454\t149\t550\t469\t585\t294\n+380\t235\t117\t220\t651\t327\n+358\t53\t476\t302\t674\t485\n+603\t1023\t404\t506\t414\t494\n+315\t56\t511\t0\t629\t522\n+719\t1023\t166\t268\t277\t308\n+405\t140\t66\t184\t617\t286\n+645\t1023\t119\t169\t236\t256\n+626\t1023\t136\t283\t180\t248\n+836\t1023\t180\t305\t203\t193\n+656\t1023\t249\t310\t291\t353\n+726\t372\t175\t299\t674\t367\n+684\t1023\t147\t276\t200\t282\n+638\t927\t130\t216\t243\t256\n+354\t133\t523\t120\t694\t565\n+374\t125\t527\t241\t650\t497\n+718\t1023\t189\t235\t278\t259\n+735\t1023\t188\t199\t287\t253\n+381\t156\t87\t57\t646\t606\n+406\t151\t547\t332\t645\t536\n+402\t241\t118\t203\t139\t593\n+405\t106\t539\t202\t624\t504\n+419\t118\t527\t555\t685\t349\n+618\t548\t436\t238\t196\t289\n+281\t107\t19\t211\t54\t460\n+425\t130\t540\t219\t612\t495\n+387\t153\t106\t35\t563\t649\n+398\t87\t505\t241\t611\t528\n+720\t1023\t194\t262\t184\t298\n+699\t880\t166\t238\t248\t235\n+409\t149\t32\t216\t612\t638\n+395\t145\t84\t344\t632\t361\n+394\t109\t473\t219\t659\t355\n+595\t1023\t210\t133\t164\t104\n+387\t139\t77\t0\t632\t583\n+393\t163\t513\t285\t574\t308\n+382\t108\t540\t89\t643\t555\n+565\t932\t176\t209\t268\t76\n+349\t79\t492\t0\t618\t410\n+653\t1023\t187\t202\t250\t282\n+364\t147\t497\t278\t490\t558\n+563\t219\t498\t343\t638\t582\n+787\t1023\t259\t195\t292\t350\n+566\t634\t173\t253\t273\t248\n+403\t107\t529\t457\t623\t371\n+784\t1023\t198\t300\t313\t295\n+983\t1023\t245\t338\t372\t318\n+348\t104\t503\t49\t483\t454\n+448\t222\t130\t278\t732\t443\n+1023\t1023\t519\t526\t592\t406\n+354\t93\t535\t217\t703\t509\n+464\t210\t557\t538\t615\t268\n+395\t103\t108\t87\t583\t593\n+402\t193\t86\t364\t70\t498\n+366\t106\t184\t4\t631\t601\n+360\t110\t500\t86\t513\t554\n+334\t64\t501\t0\t632\t473\n+411\t190\t15\t299\t623\t412\n+737\t986\t151\t234\t159\t210\n+330\t82\t505\t440\t536\t238\n+416\t161\t549\t436\t648\t303\n+401\t187\t534\t295\t579\t192\n+871\t1023\t538\t465\t679\t269\n+324\t103\t475\t559\t584\t511\n+331\t148\t74\t95\t0\t530\n+665\t1023\t198\t178\t276\t283\n+401\t143\t60\t99\t539\t562\n+390\t133\t497\t616\t590\t240\n+708\t975\t175\t270\t257\t96\n+374\t100\t501\t47\t607\t504\n+357\t91\t470\t128\t618\t604\n+484\t527\t183\t214\t256\t285\n+686\t1023\t153\t263\t335\t176\n+409\t146\t542\t0\t669\t444\n+370\t172\t107\t81\t578\t319\n+611\t1023\t200\t306\t269\t298\n+653\t1023\t123\t236\t265\t241\n+333\t87\t480\t509\t681\t462\n+614\t816\t125\t165\t184\t117\n+333\t96\t503\t460\t584\t221\n+362\t183\t113\t270\t604\t227\n+776\t564\t356\t271\t270\t223\n+637\t1023\t185\t299\t259\t296\n+795\t1023\t243\t269\t311\t247\n+415\t107\t481\t403\t545\t288\n+721\t950\t157\t204\t276\t259\n+464\t310\t113\t193\t615\t265\n+668\t400\t415\t202\t230\t229\n+407\t109\t554\t22\t691\t466\n+704\t1023\t297\t277\t294\t121\n+603\t1020\t209\t222\t290\t220\n+577\t1017\t174\t235\t224\t145\n+822\t1023\t155\t171\t274\t185\n+332\t97\t503\t229\t665\t522\n+693\t1023\t166\t259\t307\t211\n+394\t111\t545\t290\t710\t510\n+457\t226\t0\t106\t131\t573\n+554\t1023\t137\t0\t262\t145\n+330\t116\t507\t1\t647\t558\n+619\t983\t105\t151\t199\t257\n+442\t129\t531\t413\t591\t214\n+384\t160\t541\t267\t661\t527\n+687\t1023\t197\t250\t221\t195\n+438\t100\t97\t169\t636\t461\n+383\t168\t105\t183\t620\t581\n+312\t71\t482\t164\t639\t427\n+541\t1023\t166\t207\t266\t103\n+781\t893\t114\t242\t232\t248\n+341\t185\t13\t228\t117\t561\n+694\t370\t391\t254\t311\t330\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/input2.flowtext
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input2.flowtext Wed Jul 29 13:32:17 2020 -0400
b
b'@@ -0,0 +1,20001 @@\n+FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\n+363\t76\t550\t200\t0\t127\n+372\t126\t519\t44\t51\t148\n+1023\t1023\t289\t401\t362\t254\n+770\t1023\t175\t361\t225\t237\n+384\t111\t525\t121\t0\t138\n+602\t578\t385\t286\t222\t131\n+788\t1023\t216\t310\t270\t294\n+420\t211\t552\t479\t0\t62\n+668\t1019\t73\t193\t227\t132\n+417\t134\t542\t597\t22\t107\n+755\t1023\t232\t305\t294\t204\n+374\t128\t536\t493\t0\t173\n+332\t71\t495\t0\t60\t34\n+561\t874\t136\t254\t245\t241\n+423\t146\t542\t284\t98\t81\n+261\t74\t477\t0\t5\t72\n+355\t120\t58\t348\t649\t276\n+595\t857\t169\t193\t246\t100\n+749\t662\t434\t318\t216\t247\n+450\t142\t559\t187\t0\t32\n+365\t129\t515\t0\t0\t30\n+370\t181\t76\t357\t74\t314\n+651\t655\t339\t274\t129\t132\n+305\t149\t74\t0\t118\t182\n+375\t85\t285\t137\t0\t0\n+274\t149\t0\t164\t0\t38\n+399\t187\t102\t625\t226\t365\n+602\t1023\t167\t257\t204\t273\n+293\t240\t263\t222\t0\t6\n+671\t929\t112\t215\t182\t170\n+436\t149\t90\t425\t659\t308\n+317\t89\t492\t266\t0\t99\n+363\t146\t6\t527\t194\t64\n+858\t1023\t252\t325\t217\t105\n+266\t152\t91\t173\t44\t12\n+318\t114\t495\t230\t10\t0\n+337\t83\t502\t103\t3\t149\n+619\t977\t159\t241\t274\t5\n+869\t1023\t177\t296\t252\t323\n+734\t388\t470\t143\t93\t238\n+361\t114\t525\t86\t3\t0\n+372\t113\t551\t109\t104\t153\n+333\t239\t363\t529\t121\t263\n+749\t1023\t219\t260\t225\t179\n+353\t194\t77\t352\t663\t182\n+649\t1023\t373\t478\t420\t453\n+416\t118\t535\t291\t91\t38\n+716\t515\t423\t240\t203\t201\n+413\t197\t106\t511\t130\t306\n+370\t110\t517\t252\t66\t141\n+341\t131\t20\t438\t609\t265\n+327\t88\t520\t53\t207\t111\n+340\t75\t520\t0\t0\t33\n+447\t153\t551\t575\t0\t113\n+399\t88\t554\t269\t0\t167\n+380\t96\t484\t557\t138\t173\n+993\t1023\t195\t318\t335\t263\n+375\t147\t554\t168\t0\t72\n+358\t130\t0\t0\t299\t76\n+284\t96\t448\t126\t0\t147\n+744\t1023\t189\t313\t240\t168\n+610\t1023\t158\t232\t231\t234\n+633\t1023\t144\t244\t275\t200\n+477\t584\t84\t403\t131\t161\n+370\t117\t532\t59\t9\t169\n+709\t923\t193\t233\t246\t76\n+342\t152\t533\t92\t66\t161\n+306\t129\t13\t66\t82\t106\n+349\t165\t80\t201\t301\t207\n+650\t1023\t108\t178\t150\t61\n+316\t106\t0\t337\t600\t236\n+535\t435\t368\t226\t10\t83\n+320\t78\t500\t185\t0\t135\n+364\t189\t158\t363\t396\t206\n+367\t134\t552\t0\t129\t208\n+367\t109\t537\t198\t49\t185\n+650\t1023\t113\t289\t213\t258\n+354\t211\t117\t75\t116\t205\n+599\t1023\t131\t186\t252\t181\n+528\t355\t334\t248\t180\t219\n+560\t933\t181\t239\t307\t137\n+262\t88\t3\t189\t0\t165\n+708\t1023\t41\t300\t174\t227\n+532\t862\t158\t113\t259\t179\n+358\t102\t515\t0\t70\t18\n+648\t438\t442\t286\t206\t49\n+410\t141\t518\t323\t182\t3\n+399\t62\t498\t125\t0\t29\n+784\t549\t343\t23\t201\t152\n+342\t169\t102\t195\t24\t146\n+616\t691\t378\t268\t230\t276\n+585\t1009\t164\t124\t223\t236\n+678\t1023\t155\t197\t140\t30\n+378\t113\t76\t464\t624\t173\n+682\t1023\t185\t293\t187\t285\n+402\t143\t568\t262\t0\t68\n+339\t150\t512\t542\t26\t115\n+607\t898\t56\t278\t217\t194\n+333\t93\t524\t129\t0\t103\n+369\t153\t62\t426\t656\t263\n+345\t108\t523\t205\t0\t0\n+615\t747\t199\t285\t260\t263\n+389\t247\t91\t0\t93\t44\n+365\t114\t517\t0\t35\t83\n+362\t83\t547\t236\t39\t87\n+776\t1023\t172\t253\t259\t268\n+368\t120\t539\t198\t20\t84\n+735\t1023\t253\t304\t315\t151\n+350\t138\t54\t284\t652\t243\n+390\t162\t554\t29\t0\t62\n+466\t183\t71\t676\t699\t371\n+370\t120\t244\t117\t85\t19\n+361\t132\t537\t223\t0\t163\n+730\t1023\t187\t307\t303\t208\n+636\t979\t127\t275\t257\t133\n+405\t124\t27\t464\t634\t252\n+329\t109\t108\t315\t546\t216\n+582\t1023\t135\t227\t156\t148\n+348\t120\t501\t39\t74\t201\n+356\t66\t467\t93\t304\t155\n+385\t206\t60\t439\t675\t364\n+351\t116\t520\t549\t43\t71\n+836\t429\t537\t214\t79\t160\n+386\t162\t61\t530\t701\t354\n+413\t180\t119\t476\t670\t272\n+357\t119\t551\t281\t70\t30\n+348\t74\t545\t222\t0\t0\n+414\t154\t0\t354\t606\t178\n+490\t169\t570\t628\t108\t95\n+384\t112\t537\t150\t75\t172\n+754\t1009\t121\t180\t203\t86\n+394\t82\t537\t85\t63\t73\n+942\t1023\t230\t307\t299\t216\n+401\t211\t95\t519\t678\t321\n+686\t1023\t151\t236\t274\t242\n+622\t946\t120\t196\t158\t177\n+615\t1023\t184\t84\t230\t179\n+709\t1019\t181\t275\t148\t236\n+458\t210\t598\t527\t58\t172\n+357\t146\t65\t366\t651\t257\n+621\t1023\t70\t244\t245\t249\n+437\t206\t530\t654\t0\t211\n+974\t1023\t242\t319\t318\t221\n+320\t189\t319\t396\t172\t221\n+323\t72\t482\t186\t0\t156\n+823\t1023\t131\t272\t167\t232\n+660\t1023\t229\t290\t246\t28\n+297\t119\t444\t0\t0\t104\n+393\t117\t82\t503\t658\t196\n+586\t834\t175\t274\t215\t260\n+696\t1023\t100\t205\t219\t278\n+351\t171\t144\t358\t633\t329\n+394\t257\t190\t475\t685\t439\n+373\t120\t541\t0\t19\t15\n+294\t94\t452\t0\t50\t113\n+346\t118\t119\t419\t672\t276\n+647\t1023\t207\t278\t254\t168\n+367\t113\t0\t600\t597\t227\n+352\t191\t59\t199\t59\t111\n+773\t1023\t201\t291\t236\t163\n+509\t1023\t383\t465\t349\t426\n+389\t97\t515\t118\t18\t109\n+383\t98\t521\t207\t160\t170\n+299\t120\t118\t0\t0\t99\n+743\t995\t162\t204\t239\t112\n+342\t135\t49\t164\t647\t262\n+302\t116\t0\t48\t118'..b'99\t523\t205\t122\t138\n+719\t1023\t153\t247\t212\t229\n+713\t371\t431\t309\t311\t247\n+359\t168\t536\t0\t0\t157\n+488\t304\t115\t97\t152\t298\n+378\t188\t114\t593\t628\t231\n+704\t1023\t117\t230\t185\t168\n+337\t122\t472\t103\t179\t85\n+408\t71\t469\t0\t173\t170\n+361\t104\t555\t150\t50\t186\n+875\t1023\t208\t311\t205\t240\n+369\t86\t519\t15\t0\t61\n+336\t161\t70\t286\t616\t166\n+282\t118\t17\t29\t0\t65\n+486\t221\t593\t636\t166\t260\n+676\t1023\t125\t291\t220\t253\n+891\t1023\t209\t318\t301\t228\n+365\t150\t530\t172\t0\t37\n+378\t121\t16\t354\t660\t290\n+363\t133\t52\t398\t674\t255\n+775\t1023\t149\t265\t217\t181\n+334\t82\t502\t71\t27\t162\n+383\t173\t75\t397\t676\t243\n+681\t354\t407\t284\t269\t243\n+386\t133\t545\t103\t93\t112\n+416\t110\t532\t173\t148\t63\n+636\t1023\t132\t243\t243\t203\n+405\t152\t96\t299\t656\t301\n+639\t1023\t132\t308\t183\t280\n+629\t946\t125\t256\t211\t47\n+429\t104\t230\t714\t692\t738\n+700\t1023\t211\t292\t271\t252\n+568\t323\t441\t389\t118\t316\n+323\t97\t507\t183\t120\t51\n+671\t1023\t213\t362\t301\t0\n+329\t134\t94\t146\t0\t173\n+388\t125\t19\t433\t591\t254\n+360\t183\t0\t266\t649\t231\n+331\t78\t489\t41\t0\t131\n+634\t897\t167\t226\t210\t252\n+292\t108\t22\t0\t0\t79\n+336\t111\t0\t316\t655\t258\n+434\t141\t489\t167\t162\t185\n+560\t845\t137\t252\t178\t150\n+396\t145\t568\t147\t0\t128\n+645\t936\t138\t185\t223\t222\n+663\t1023\t155\t260\t230\t151\n+954\t1023\t207\t339\t286\t306\n+674\t972\t195\t257\t173\t45\n+381\t105\t548\t103\t85\t177\n+333\t212\t123\t717\t655\t302\n+600\t1023\t110\t214\t245\t181\n+360\t113\t509\t223\t5\t114\n+600\t1023\t213\t261\t235\t219\n+754\t995\t185\t289\t42\t7\n+427\t157\t86\t174\t569\t270\n+325\t91\t508\t39\t6\t11\n+372\t171\t68\t463\t0\t277\n+402\t215\t527\t646\t191\t44\n+709\t1023\t365\t530\t393\t377\n+291\t126\t76\t0\t114\t159\n+568\t673\t187\t320\t185\t230\n+323\t79\t458\t0\t15\t170\n+406\t161\t536\t605\t0\t212\n+420\t127\t519\t0\t23\t90\n+605\t1023\t237\t166\t258\t187\n+382\t124\t511\t134\t37\t95\n+702\t511\t377\t256\t160\t267\n+596\t1023\t160\t192\t250\t182\n+431\t211\t111\t495\t658\t274\n+703\t1023\t135\t316\t128\t103\n+357\t123\t529\t62\t149\t21\n+772\t1023\t223\t266\t188\t226\n+567\t1023\t130\t251\t253\t104\n+356\t95\t489\t126\t0\t128\n+390\t129\t568\t75\t124\t90\n+691\t1023\t229\t340\t209\t256\n+311\t116\t0\t145\t24\t185\n+381\t130\t101\t619\t649\t367\n+376\t116\t549\t163\t27\t33\n+705\t329\t430\t149\t119\t0\n+670\t1023\t122\t269\t228\t199\n+711\t962\t148\t235\t274\t256\n+641\t1023\t160\t259\t194\t181\n+556\t1023\t135\t247\t279\t164\n+571\t1023\t179\t245\t160\t215\n+392\t100\t515\t65\t0\t45\n+340\t105\t499\t69\t0\t82\n+636\t967\t185\t158\t282\t74\n+373\t132\t500\t217\t34\t48\n+929\t1023\t431\t319\t260\t282\n+345\t120\t507\t0\t0\t124\n+293\t106\t505\t133\t104\t63\n+359\t96\t529\t222\t127\t150\n+381\t176\t551\t222\t0\t156\n+263\t191\t440\t451\t47\t140\n+1013\t1023\t450\t456\t401\t351\n+441\t331\t131\t99\t79\t131\n+317\t129\t514\t0\t143\t39\n+373\t94\t517\t0\t168\t59\n+602\t1023\t100\t189\t188\t93\n+356\t120\t491\t546\t0\t123\n+375\t118\t554\t71\t159\t109\n+387\t95\t494\t196\t152\t0\n+326\t68\t54\t201\t582\t256\n+717\t1023\t230\t275\t270\t195\n+306\t80\t455\t370\t0\t42\n+411\t282\t149\t127\t82\t213\n+405\t122\t116\t436\t653\t360\n+633\t906\t180\t248\t271\t263\n+364\t104\t541\t0\t213\t168\n+313\t133\t48\t167\t117\t61\n+294\t58\t478\t120\t17\t35\n+313\t78\t459\t247\t0\t59\n+389\t148\t563\t146\t154\t85\n+305\t145\t57\t91\t92\t6\n+637\t1023\t154\t242\t291\t226\n+655\t1023\t194\t238\t261\t257\n+632\t1023\t205\t268\t268\t234\n+391\t187\t542\t31\t107\t245\n+305\t122\t38\t0\t130\t112\n+358\t250\t85\t130\t157\t15\n+446\t134\t559\t255\t37\t13\n+386\t138\t531\t74\t133\t167\n+367\t106\t535\t4\t47\t49\n+391\t84\t521\t217\t143\t76\n+357\t110\t515\t171\t93\t38\n+374\t122\t552\t0\t23\t93\n+360\t124\t501\t469\t0\t129\n+533\t1023\t349\t446\t357\t406\n+332\t74\t105\t328\t559\t232\n+466\t232\t146\t351\t263\t85\n+405\t87\t517\t538\t0\t183\n+597\t1023\t143\t242\t241\t208\n+333\t111\t523\t123\t0\t0\n+788\t1023\t202\t311\t298\t227\n+599\t995\t128\t266\t260\t178\n+377\t123\t62\t574\t629\t198\n+719\t1023\t183\t260\t267\t153\n+680\t1023\t159\t287\t251\t255\n+379\t97\t535\t51\t0\t84\n+383\t225\t63\t307\t0\t405\n+597\t987\t222\t220\t201\t244\n+360\t82\t14\t376\t23\t1\n+592\t1023\t104\t276\t212\t164\n+651\t368\t378\t283\t21\t91\n+304\t132\t73\t138\t67\t52\n+380\t160\t543\t273\t0\t68\n+305\t143\t0\t52\t45\t162\n+405\t132\t552\t417\t22\t142\n+366\t99\t509\t0\t102\t183\n+704\t1023\t122\t250\t310\t204\n+713\t1023\t169\t282\t280\t140\n+380\t198\t97\t647\t662\t234\n+577\t273\t318\t268\t329\t260\n+372\t80\t490\t584\t0\t0\n+801\t980\t156\t331\t228\t182\n+402\t153\t38\t594\t656\t289\n+317\t82\t32\t131\t323\t45\n+630\t1023\t101\t188\t157\t153\n+670\t1023\t185\t162\t250\t249\n+338\t108\t536\t0\t0\t119\n+964\t1023\t262\t348\t358\t269\n+639\t823\t129\t263\t178\t177\n+362\t145\t24\t123\t310\t158\n+360\t223\t65\t352\t600\t403\n+1014\t1023\t410\t349\t265\t286\n+656\t1023\t149\t307\t240\t175\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/input3.flowtext
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input3.flowtext Wed Jul 29 13:32:17 2020 -0400
b
b'@@ -0,0 +1,20001 @@\n+FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\n+449\t157\t551\t129\t169\t292\n+894\t1023\t199\t277\t320\t227\n+262\t73\t437\t69\t0\t146\n+340\t115\t509\t268\t0\t74\n+316\t76\t50\t0\t60\t129\n+394\t144\t83\t138\t335\t194\n+383\t139\t499\t0\t0\t224\n+800\t1023\t239\t284\t288\t280\n+388\t97\t534\t111\t83\t177\n+481\t117\t566\t247\t157\t99\n+652\t997\t118\t236\t250\t300\n+333\t100\t526\t82\t21\t34\n+636\t1023\t162\t290\t242\t261\n+283\t137\t0\t32\t137\t151\n+389\t105\t538\t36\t0\t130\n+684\t1023\t111\t180\t205\t186\n+688\t1023\t156\t255\t233\t77\n+431\t83\t64\t114\t586\t144\n+788\t1023\t167\t258\t158\t241\n+687\t1023\t94\t234\t218\t133\n+676\t1023\t149\t287\t215\t102\n+869\t1023\t223\t285\t277\t388\n+986\t1023\t267\t290\t261\t224\n+603\t1018\t193\t272\t255\t135\n+404\t168\t532\t113\t0\t0\n+661\t501\t418\t184\t256\t248\n+381\t169\t508\t0\t125\t204\n+686\t860\t49\t190\t225\t97\n+402\t202\t117\t90\t693\t316\n+418\t89\t566\t19\t0\t306\n+303\t119\t35\t155\t87\t108\n+402\t184\t70\t111\t627\t309\n+304\t107\t0\t118\t86\t257\n+360\t124\t26\t10\t615\t209\n+372\t118\t558\t125\t0\t120\n+659\t1023\t341\t246\t228\t256\n+720\t1023\t180\t178\t212\t229\n+712\t1002\t228\t163\t282\t195\n+321\t90\t472\t35\t151\t178\n+376\t154\t54\t61\t587\t264\n+744\t1023\t229\t271\t226\t216\n+329\t149\t82\t173\t629\t269\n+447\t153\t524\t161\t138\t197\n+364\t294\t248\t335\t0\t222\n+645\t1023\t177\t179\t282\t254\n+1023\t1023\t456\t557\t482\t445\n+440\t297\t403\t122\t82\t135\n+432\t115\t572\t165\t78\t225\n+366\t112\t299\t0\t23\t98\n+673\t1023\t230\t330\t294\t261\n+707\t1023\t222\t246\t206\t242\n+628\t1023\t161\t288\t241\t234\n+601\t1023\t126\t296\t278\t191\n+347\t157\t531\t0\t42\t49\n+262\t65\t210\t36\t0\t176\n+349\t101\t481\t139\t96\t211\n+596\t1023\t193\t252\t233\t288\n+375\t112\t546\t184\t59\t88\n+436\t141\t123\t229\t611\t218\n+389\t131\t576\t0\t0\t144\n+353\t97\t477\t204\t0\t221\n+400\t149\t91\t143\t639\t310\n+742\t1023\t225\t277\t114\t241\n+747\t1023\t132\t254\t227\t176\n+350\t122\t489\t194\t0\t99\n+407\t131\t535\t209\t0\t57\n+269\t92\t0\t0\t5\t128\n+355\t142\t540\t103\t115\t84\n+387\t123\t529\t116\t115\t0\n+358\t86\t523\t18\t32\t101\n+388\t132\t105\t99\t653\t329\n+305\t165\t509\t126\t0\t63\n+454\t168\t113\t124\t629\t251\n+400\t121\t176\t0\t581\t240\n+405\t230\t115\t233\t632\t289\n+596\t942\t74\t236\t280\t279\n+380\t211\t72\t236\t670\t255\n+392\t127\t546\t204\t47\t105\n+519\t409\t169\t117\t136\t417\n+767\t1023\t196\t278\t269\t192\n+367\t121\t528\t95\t0\t117\n+378\t175\t507\t201\t0\t227\n+664\t668\t359\t287\t268\t166\n+435\t161\t543\t185\t67\t197\n+358\t233\t0\t136\t148\t331\n+633\t977\t95\t250\t175\t187\n+373\t128\t564\t0\t35\t119\n+386\t123\t547\t0\t65\t181\n+319\t110\t497\t77\t101\t0\n+401\t86\t503\t126\t184\t138\n+364\t136\t0\t161\t15\t0\n+741\t1023\t188\t221\t270\t230\n+677\t510\t416\t268\t195\t188\n+311\t212\t17\t22\t91\t146\n+642\t1023\t152\t268\t221\t196\n+739\t395\t291\t219\t174\t75\n+760\t1023\t175\t247\t284\t198\n+410\t168\t528\t125\t0\t211\n+338\t158\t71\t69\t1\t155\n+401\t137\t34\t223\t641\t291\n+780\t853\t198\t256\t230\t270\n+389\t185\t160\t28\t664\t319\n+369\t130\t567\t21\t0\t38\n+359\t119\t60\t55\t660\t217\n+349\t97\t522\t0\t21\t0\n+553\t762\t136\t193\t137\t198\n+476\t91\t554\t0\t0\t102\n+372\t77\t506\t0\t89\t0\n+628\t1023\t202\t285\t305\t61\n+493\t351\t403\t242\t150\t196\n+393\t181\t128\t0\t148\t83\n+400\t143\t554\t109\t89\t115\n+387\t91\t544\t199\t141\t45\n+564\t924\t104\t220\t170\t249\n+673\t237\t124\t79\t648\t268\n+363\t203\t84\t213\t79\t224\n+353\t83\t517\t168\t70\t133\n+378\t157\t577\t0\t68\t205\n+338\t139\t25\t41\t38\t92\n+330\t70\t0\t55\t597\t165\n+558\t280\t421\t143\t113\t226\n+447\t288\t156\t211\t5\t33\n+341\t112\t457\t22\t0\t116\n+757\t1023\t205\t268\t291\t189\n+375\t112\t541\t20\t14\t0\n+657\t1023\t141\t206\t196\t125\n+356\t114\t550\t0\t0\t101\n+700\t1023\t196\t256\t272\t64\n+629\t1023\t189\t174\t253\t149\n+360\t141\t554\t0\t32\t52\n+362\t108\t543\t219\t158\t128\n+337\t112\t511\t107\t65\t178\n+398\t277\t67\t116\t277\t95\n+767\t1023\t157\t205\t212\t95\n+609\t1023\t348\t474\t390\t429\n+369\t96\t532\t255\t0\t212\n+386\t174\t46\t65\t619\t231\n+336\t115\t492\t87\t0\t105\n+469\t164\t580\t94\t50\t12\n+396\t108\t535\t84\t4\t82\n+452\t159\t534\t176\t169\t176\n+410\t129\t537\t107\t0\t67\n+304\t141\t31\t0\t112\t176\n+863\t1023\t242\t349\t309\t330\n+391\t226\t83\t224\t576\t232\n+701\t1023\t77\t158\t258\t111\n+674\t1023\t151\t247\t256\t238\n+309\t70\t73\t137\t287\t110\n+352\t154\t0\t23\t602\t271\n+352\t152\t130\t0\t29\t161\n+542\t1011\t70\t282\t223\t208\n+713\t1023\t160\t223\t253\t199\n+329\t156\t62\t242\t103\t106\n+341\t112\t537\t34\t102\t138\n+825\t1023\t203\t273\t294\t277\n+537\t308\t449\t0\t0\t86\n+587\t1023\t176\t297\t207\t278\n+402\t121\t513\t130\t0\t131\n+390\t155\t572\t130\t92\t176\n+787\t1023\t206\t298\t198\t167\n+409\t158\t514\t0\t127\t358\n+268\t107\t94\t18\t71\t148\n+395\t112\t66\t0\t486\t162\n+402\t117\t537\t0\t242\t79\n+396\t153\t555\t32\t96\t337\n+322\t120\t259\t134\t0\t123\n+1023\t1023\t448\t348\t352\t357\n+476\t280\t'..b'47\t220\n+354\t99\t525\t0\t142\t353\n+753\t1023\t190\t260\t336\t230\n+435\t149\t561\t67\t10\t301\n+376\t113\t545\t87\t0\t141\n+559\t783\t126\t247\t112\t238\n+393\t169\t562\t222\t118\t177\n+287\t93\t447\t95\t0\t175\n+648\t988\t186\t161\t237\t143\n+360\t96\t536\t218\t0\t116\n+308\t159\t0\t137\t55\t93\n+379\t260\t111\t176\t570\t245\n+421\t99\t508\t0\t128\t100\n+316\t69\t527\t244\t0\t52\n+346\t88\t82\t84\t196\t98\n+424\t180\t563\t119\t0\t56\n+387\t203\t60\t69\t623\t243\n+418\t117\t508\t283\t0\t149\n+653\t800\t119\t209\t182\t110\n+358\t182\t80\t44\t667\t310\n+512\t1023\t125\t168\t262\t201\n+466\t240\t133\t157\t196\t5\n+302\t139\t471\t0\t7\t19\n+361\t114\t533\t0\t0\t275\n+1023\t1023\t263\t311\t246\t309\n+334\t118\t371\t156\t0\t44\n+820\t1023\t294\t313\t318\t305\n+407\t150\t547\t133\t138\t210\n+271\t65\t486\t0\t48\t0\n+364\t121\t541\t49\t94\t229\n+654\t1023\t151\t256\t251\t230\n+366\t143\t555\t195\t0\t15\n+512\t571\t107\t220\t20\t192\n+556\t265\t448\t81\t172\t103\n+424\t228\t43\t132\t616\t310\n+753\t1023\t224\t268\t192\t116\n+360\t96\t533\t15\t109\t138\n+426\t207\t276\t99\t578\t328\n+432\t207\t142\t0\t408\t0\n+640\t580\t445\t287\t171\t207\n+658\t1023\t201\t282\t277\t300\n+666\t1023\t92\t257\t172\t234\n+354\t216\t87\t176\t336\t106\n+356\t176\t42\t0\t170\t134\n+689\t1023\t186\t217\t283\t198\n+346\t115\t516\t155\t0\t132\n+387\t128\t579\t203\t51\t141\n+665\t1023\t122\t229\t165\t78\n+400\t168\t0\t160\t600\t249\n+357\t95\t517\t0\t87\t186\n+373\t158\t534\t228\t53\t103\n+372\t103\t525\t238\t7\t175\n+298\t86\t428\t55\t0\t174\n+348\t131\t546\t6\t0\t55\n+368\t135\t549\t144\t0\t12\n+589\t1023\t333\t446\t322\t395\n+337\t117\t81\t149\t643\t348\n+372\t258\t139\t113\t174\t374\n+827\t1023\t128\t271\t263\t132\n+693\t1023\t179\t292\t201\t287\n+732\t946\t187\t253\t264\t121\n+370\t268\t125\t182\t104\t97\n+554\t761\t111\t293\t224\t233\n+411\t188\t525\t185\t124\t208\n+356\t165\t123\t85\t672\t282\n+353\t92\t508\t124\t141\t66\n+684\t902\t144\t248\t244\t173\n+402\t185\t135\t497\t774\t472\n+380\t144\t527\t156\t62\t31\n+765\t1023\t202\t261\t254\t258\n+1023\t1023\t500\t508\t445\t550\n+1023\t1023\t538\t456\t358\t450\n+652\t921\t131\t204\t107\t223\n+480\t181\t541\t223\t133\t294\n+651\t1023\t174\t340\t182\t19\n+619\t1023\t133\t263\t239\t231\n+374\t93\t520\t0\t0\t138\n+547\t760\t70\t0\t162\t224\n+427\t278\t113\t238\t385\t170\n+753\t1023\t156\t296\t263\t300\n+640\t942\t122\t265\t237\t242\n+348\t94\t507\t300\t109\t22\n+599\t1023\t135\t321\t261\t212\n+591\t948\t188\t176\t247\t130\n+386\t92\t515\t201\t32\t79\n+423\t156\t562\t8\t120\t144\n+581\t1023\t146\t214\t153\t145\n+779\t1023\t208\t308\t295\t319\n+1022\t174\t372\t274\t253\t397\n+395\t112\t554\t213\t64\t109\n+398\t283\t104\t418\t52\t211\n+459\t215\t559\t287\t198\t109\n+366\t160\t536\t218\t156\t122\n+380\t197\t123\t74\t638\t287\n+624\t1023\t133\t241\t194\t265\n+400\t163\t518\t139\t69\t225\n+380\t131\t564\t126\t0\t36\n+283\t146\t65\t180\t134\t0\n+379\t112\t173\t0\t646\t223\n+752\t1023\t129\t258\t239\t245\n+409\t206\t179\t149\t641\t290\n+635\t525\t409\t225\t206\t227\n+680\t1023\t234\t196\t249\t165\n+702\t458\t425\t271\t150\t46\n+734\t511\t416\t176\t152\t200\n+409\t171\t20\t29\t574\t212\n+413\t251\t83\t12\t21\t64\n+737\t1023\t180\t287\t284\t283\n+431\t175\t361\t239\t132\t0\n+353\t114\t50\t0\t621\t271\n+408\t141\t559\t0\t132\t196\n+531\t798\t102\t253\t209\t75\n+619\t1023\t205\t294\t235\t212\n+667\t1023\t187\t234\t288\t219\n+392\t247\t261\t675\t198\t451\n+311\t102\t514\t99\t110\t146\n+460\t125\t559\t0\t0\t73\n+400\t99\t564\t212\t139\t96\n+633\t1023\t168\t232\t214\t195\n+404\t166\t556\t177\t58\t46\n+678\t1023\t210\t305\t274\t229\n+364\t174\t98\t36\t615\t267\n+372\t118\t543\t109\t3\t52\n+672\t1023\t188\t292\t133\t249\n+643\t1023\t216\t273\t296\t169\n+445\t134\t552\t0\t143\t94\n+400\t151\t556\t179\t191\t181\n+701\t1023\t226\t239\t247\t291\n+365\t157\t122\t0\t667\t233\n+385\t88\t542\t89\t180\t60\n+358\t87\t482\t10\t0\t55\n+710\t487\t449\t284\t139\t96\n+371\t134\t510\t19\t14\t351\n+264\t69\t463\t0\t0\t80\n+428\t103\t512\t263\t0\t70\n+614\t490\t462\t229\t120\t325\n+466\t219\t513\t117\t0\t174\n+674\t525\t400\t208\t194\t194\n+324\t110\t506\t66\t32\t128\n+394\t115\t28\t0\t557\t193\n+411\t175\t63\t139\t618\t323\n+611\t303\t345\t92\t88\t100\n+450\t239\t160\t99\t195\t210\n+356\t129\t33\t90\t602\t94\n+605\t1006\t213\t204\t220\t220\n+773\t1023\t237\t275\t210\t167\n+429\t142\t570\t272\t0\t141\n+263\t33\t417\t0\t0\t194\n+347\t148\t26\t0\t630\t300\n+364\t121\t528\t182\t70\t194\n+339\t87\t483\t0\t43\t74\n+692\t1009\t147\t285\t115\t156\n+596\t988\t133\t305\t113\t273\n+847\t1023\t244\t216\t316\t101\n+386\t135\t531\t166\t184\t117\n+621\t970\t37\t127\t238\t274\n+298\t99\t482\t88\t0\t130\n+658\t1023\t117\t165\t208\t188\n+326\t172\t76\t12\t149\t77\n+360\t84\t532\t57\t138\t102\n+886\t1023\t229\t361\t290\t234\n+634\t972\t248\t277\t271\t215\n+332\t164\t0\t73\t246\t210\n+447\t121\t548\t0\t0\t393\n+391\t119\t74\t0\t628\t238\n+340\t100\t528\t245\t0\t8\n+385\t99\t179\t115\t513\t163\n+400\t157\t126\t99\t638\t313\n+431\t97\t527\t156\t122\t197\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/mfi.flowmfi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/mfi.flowmfi Wed Jul 29 13:32:17 2020 -0400
b
@@ -0,0 +1,27 @@
+Population FSC SSC CD4 CCR7 CD8 CCR3
+1 364 117 520 188 53 71
+2 370 121 523 37 67 187
+3 363 112 512 69 632 482
+4 360 175 84 141 114 520
+5 333 156 56 68 82 109
+6 372 154 75 90 608 251
+7 389 162 83 318 620 304
+8 371 113 517 258 642 505
+9 422 214 138 420 327 640
+10 356 114 521 31 59 68
+11 381 138 85 111 604 565
+12 410 276 119 213 183 161
+13 406 137 516 424 615 305
+14 401 139 526 566 76 108
+15 356 121 322 84 75 110
+16 414 239 104 510 138 200
+17 440 198 509 598 119 289
+18 384 128 524 199 60 194
+19 944 966 490 629 533 541
+20 393 154 82 534 621 267
+21 617 975 145 224 225 173
+22 667 437 389 204 215 283
+23 546 975 366 476 387 448
+24 681 441 392 204 187 132
+25 727 1013 182 269 259 232
+26 960 975 325 343 318 311
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/out1.flowstat1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out1.flowstat1 Wed Jul 29 13:32:17 2020 -0400
b
@@ -0,0 +1,4 @@
+FileID SampleName 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
+Rearranged FCSGateTrans on FCS2.003.20Kevents.fcs Sample01 10.18 8.555 0.15 0.42 6.67 13.3 2.985 0.0 0.05 9.825 0.0 3.265 0.065 0.045 1.42 0.495 0.125 7.6 0.465 0.03 14.78 2.36 1.385 2.205 12.0 1.625
+Rearranged FCSGateTrans on FCS2.001.20Kevents.fcs Sample02 0.0 0.41 10.735 5.69 0.275 3.075 2.945 11.245 1.285 0.0 8.975 1.04 10.935 0.085 0.25 0.585 0.015 0.225 0.71 0.535 12.76 2.775 2.01 1.585 19.97 1.885
+Rearranged FCSGateTrans on FCS2.002.20Kevents.fcs Sample03 8.88 5.35 0.05 0.35 4.615 1.945 5.765 0.015 0.18 7.445 0.105 3.0 0.195 4.695 1.61 3.165 1.515 5.28 0.485 7.53 16.55 1.525 1.77 2.64 13.6 1.74
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/out1.flowstat2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out1.flowstat2 Wed Jul 29 13:32:17 2020 -0400
b
@@ -0,0 +1,75 @@
+FSC SSC CD4 CCR7 CD8 CCR3 Percentage Population SampleName
+360.93 118.98 521.7 181.35 48.29 76.01 10.18 1 Sample01
+374.35 125.62 525.73 36.34 72.0 197.55 8.56 2 Sample01
+406.43 162.77 410.23 69.3 580.9 275.2 0.15 3 Sample01
+363.32 241.5 99.96 145.89 102.85 318.19 0.42 4 Sample01
+337.09 155.29 56.73 72.34 73.35 112.25 6.67 5 Sample01
+368.59 148.89 69.12 71.72 606.04 237.42 13.3 6 Sample01
+403.26 176.59 94.75 191.8 620.71 263.77 2.99 7 Sample01
+345.6 331.2 292.9 562.5 293.0 413.3 0.05 9 Sample01
+352.15 115.59 519.81 29.88 54.23 72.34 9.83 10 Sample01
+421.38 241.15 115.02 151.72 215.97 147.47 3.26 12 Sample01
+423.08 219.69 405.31 271.0 585.31 272.92 0.06 13 Sample01
+363.33 188.33 360.33 551.11 77.56 198.67 0.04 14 Sample01
+354.94 118.97 301.48 81.19 69.35 117.17 1.42 15 Sample01
+419.08 392.96 120.34 408.48 122.57 168.11 0.5 16 Sample01
+462.0 422.08 421.0 718.08 357.2 480.84 0.12 17 Sample01
+388.6 132.42 528.82 190.06 61.71 205.87 7.6 18 Sample01
+972.67 1014.57 510.17 649.92 498.02 507.34 0.46 19 Sample01
+436.0 331.33 195.33 587.83 698.0 475.67 0.03 20 Sample01
+602.71 967.97 140.02 220.24 213.08 176.15 14.78 21 Sample01
+687.46 490.61 376.69 209.82 192.18 267.15 2.36 22 Sample01
+551.76 988.58 350.25 482.74 364.3 411.62 1.38 23 Sample01
+647.77 387.0 397.71 171.63 167.15 143.66 2.2 24 Sample01
+726.15 1016.99 182.62 264.79 248.23 217.08 12.0 25 Sample01
+969.6 1001.4 329.26 338.48 302.98 333.58 1.62 26 Sample01
+562.4 279.96 395.37 85.56 233.15 423.82 0.41 2 Sample02
+361.23 110.65 512.56 68.97 633.79 483.67 10.74 3 Sample02
+355.26 167.2 73.65 147.5 108.78 528.01 5.69 4 Sample02
+320.36 182.36 72.15 113.6 120.13 198.04 0.27 5 Sample02
+379.34 171.32 79.2 96.05 612.98 319.43 3.08 6 Sample02
+412.99 178.92 94.51 281.53 623.12 374.9 2.94 7 Sample02
+371.1 112.03 517.49 259.35 642.93 505.5 11.24 8 Sample02
+431.34 213.62 133.05 402.6 302.14 645.66 1.28 9 Sample02
+380.63 135.19 85.29 110.18 602.83 574.54 8.98 11 Sample02
+447.85 525.88 156.54 205.92 232.46 226.29 1.04 12 Sample02
+406.39 136.68 517.93 421.76 615.38 306.36 10.94 13 Sample02
+358.41 103.0 460.06 676.12 556.82 164.12 0.08 14 Sample02
+392.88 210.34 274.9 177.9 205.7 226.14 0.25 15 Sample02
+433.7 264.01 107.35 510.36 149.73 224.73 0.58 16 Sample02
+503.0 183.67 512.67 468.67 380.67 284.33 0.02 17 Sample02
+401.98 199.4 351.38 197.56 325.84 376.18 0.22 18 Sample02
+942.13 977.37 496.89 556.9 589.52 591.96 0.71 19 Sample02
+431.49 175.21 108.33 449.62 589.52 338.83 0.53 20 Sample02
+612.66 962.76 145.03 218.29 241.58 218.2 12.76 21 Sample02
+677.97 432.92 394.9 215.63 253.73 320.89 2.78 22 Sample02
+537.34 987.67 377.09 463.75 412.69 504.01 2.01 23 Sample02
+708.86 473.52 400.38 219.62 227.69 178.15 1.58 24 Sample02
+724.21 1017.01 183.89 263.49 272.15 249.63 19.97 25 Sample02
+956.13 990.81 316.68 335.77 337.56 324.8 1.88 26 Sample02
+363.8 112.35 518.73 192.67 50.31 67.22 8.88 1 Sample03
+366.09 113.61 521.93 39.72 65.66 165.65 5.35 2 Sample03
+395.7 119.3 384.9 85.9 585.6 230.1 0.05 3 Sample03
+368.81 204.11 96.34 237.57 86.57 292.1 0.35 4 Sample03
+318.7 144.37 48.23 81.95 64.63 103.98 4.61 5 Sample03
+356.9 131.76 69.32 144.68 612.42 244.06 1.94 6 Sample03
+373.64 149.87 73.71 364.36 620.22 274.19 5.76 7 Sample03
+438.0 176.67 517.33 423.0 277.33 437.33 0.02 8 Sample03
+456.47 368.94 339.69 764.56 534.31 616.89 0.18 9 Sample03
+358.85 110.16 520.35 32.56 61.77 62.47 7.44 10 Sample03
+395.52 201.76 124.0 438.24 675.14 501.81 0.1 11 Sample03
+416.9 238.72 120.19 236.94 187.78 133.18 3.0 12 Sample03
+435.72 195.44 389.95 550.08 631.15 289.23 0.19 13 Sample03
+399.59 136.41 525.52 567.5 69.54 112.64 4.7 14 Sample03
+361.32 113.15 344.56 109.52 71.4 102.73 1.61 15 Sample03
+404.76 196.99 95.3 519.01 130.48 201.21 3.16 16 Sample03
+451.65 196.73 522.28 588.96 117.05 274.0 1.52 17 Sample03
+383.32 121.85 525.67 214.77 64.27 172.42 5.28 18 Sample03
+948.66 979.64 477.21 676.02 492.0 476.04 0.48 19 Sample03
+393.34 154.15 80.74 547.09 620.52 265.14 7.53 20 Sample03
+618.74 977.0 140.47 231.46 216.74 155.22 16.55 21 Sample03
+632.72 434.17 361.81 253.26 192.78 244.91 1.52 22 Sample03
+550.94 992.18 358.59 469.96 366.78 399.73 1.77 23 Sample03
+692.69 478.12 385.77 214.78 183.47 124.04 2.64 24 Sample03
+733.01 1018.55 182.18 275.33 250.23 190.78 13.6 25 Sample03
+971.95 998.45 334.9 363.32 315.39 269.99 1.74 26 Sample03
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/out1.flowstat3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out1.flowstat3 Wed Jul 29 13:32:17 2020 -0400
b
@@ -0,0 +1,27 @@
+Population FSC_mean FSC_median FSC_stdev SSC_mean SSC_median SSC_stdev CD4_mean CD4_median CD4_stdev CCR7_mean CCR7_median CCR7_stdev CD8_mean CD8_median CD8_stdev CCR3_mean CCR3_median CCR3_stdev Percentage_mean Percentage_median Percentage_stdev
+1 362.36 362.36 2.03 115.66 115.66 4.69 520.22 520.22 2.1 187.01 187.01 8.0 49.3 49.3 1.43 71.62 71.62 6.22 9.53 9.53 0.92
+2 434.28 374.35 111.03 173.06 125.62 92.77 481.01 521.93 74.19 53.87 39.72 27.49 123.6 72.0 94.92 262.34 197.55 140.75 4.77 5.35 4.11
+3 387.79 395.7 23.62 130.91 119.3 27.93 435.9 410.23 67.59 74.72 69.3 9.68 600.1 585.6 29.27 329.66 275.2 135.27 3.65 0.15 6.14
+4 362.46 363.32 6.82 204.27 204.11 37.15 89.98 96.34 14.26 176.99 147.5 52.47 99.4 102.85 11.5 379.43 318.19 129.33 2.15 0.42 3.06
+5 325.38 320.36 10.17 160.67 155.29 19.56 59.04 56.73 12.13 89.3 81.95 21.59 86.04 73.35 29.85 138.09 112.25 52.08 3.85 4.61 3.27
+6 368.28 368.59 11.22 150.66 148.89 19.84 72.55 69.32 5.76 104.15 96.05 37.15 610.48 612.42 3.86 266.97 244.06 45.55 6.11 3.08 6.26
+7 396.63 403.26 20.5 168.46 176.59 16.14 87.66 94.51 12.08 279.23 281.53 86.3 621.35 620.71 1.55 304.29 274.19 61.37 3.9 2.99 1.61
+8 404.55 404.55 47.31 144.35 144.35 45.71 517.41 517.41 0.11 341.18 341.18 115.72 460.13 460.13 258.52 471.42 471.42 48.2 5.63 5.63 7.93
+9 411.14 431.34 58.13 304.59 331.2 81.01 255.21 292.9 108.35 576.55 562.5 181.39 376.48 302.14 136.76 558.62 616.89 126.67 0.5 0.18 0.68
+10 355.5 355.5 4.74 112.88 112.88 3.84 520.08 520.08 0.38 31.22 31.22 1.9 58.0 58.0 5.33 67.4 67.4 6.98 8.64 8.64 1.69
+11 388.08 388.08 10.53 168.48 168.48 47.07 104.65 104.65 27.37 274.21 274.21 231.97 638.98 638.98 51.13 538.17 538.17 51.43 4.54 4.54 6.28
+12 428.71 421.38 16.73 335.25 241.15 165.09 130.58 120.19 22.63 198.19 205.92 43.13 212.07 215.97 22.59 168.98 147.47 50.14 2.43 3.0 1.21
+13 421.73 423.08 14.71 183.94 195.44 42.68 437.73 405.31 69.88 414.28 421.76 139.69 610.61 615.38 23.29 289.5 289.23 16.72 3.73 0.19 6.24
+14 373.78 363.33 22.49 142.58 136.41 43.0 448.64 460.06 83.19 598.24 567.5 67.94 234.64 77.56 279.04 158.48 164.12 43.29 1.61 0.08 2.68
+15 369.71 361.32 20.31 147.49 118.97 54.51 306.98 301.48 35.15 122.87 109.52 49.72 115.48 71.4 78.14 148.68 117.17 67.47 1.09 1.42 0.74
+16 419.18 419.08 14.47 284.65 264.01 99.6 107.66 107.35 12.52 479.28 510.36 61.47 134.26 130.48 13.97 198.02 201.21 28.44 1.41 0.58 1.51
+17 472.22 462.0 27.16 267.49 196.73 134.04 485.32 512.67 55.91 591.9 588.96 124.73 284.97 357.2 145.9 346.39 284.33 116.55 0.55 0.12 0.84
+18 391.3 388.6 9.62 151.22 132.42 42.06 468.62 525.67 101.55 200.8 197.56 12.67 150.61 64.27 151.76 251.49 205.87 109.27 4.37 5.28 3.77
+19 954.49 948.66 16.08 990.53 979.64 20.85 494.76 496.89 16.58 627.61 649.92 62.61 526.51 498.02 54.65 525.11 507.34 59.97 0.55 0.48 0.14
+20 420.28 431.49 23.44 220.23 175.21 96.79 128.13 108.33 59.81 528.18 547.09 71.02 636.01 620.52 55.87 359.88 338.83 106.83 2.7 0.53 4.19
+21 611.37 612.66 8.09 969.24 967.97 7.2 141.84 140.47 2.77 223.33 220.24 7.11 223.8 216.74 15.51 183.19 176.15 32.07 14.7 14.78 1.9
+22 666.05 677.97 29.25 452.57 434.17 32.95 377.8 376.69 16.57 226.24 215.63 23.58 212.9 192.78 35.36 277.65 267.15 39.06 2.22 2.36 0.64
+23 546.68 550.94 8.1 989.48 988.58 2.38 361.98 358.59 13.74 472.15 469.96 9.68 381.26 366.78 27.25 438.45 411.62 57.08 1.72 1.77 0.32
+24 683.11 692.69 31.65 446.21 473.52 51.33 394.62 397.71 7.78 202.01 214.78 26.42 192.77 183.47 31.32 148.62 143.66 27.39 2.14 2.2 0.53
+25 727.79 726.15 4.62 1017.52 1017.01 0.89 182.9 182.62 0.89 267.87 264.79 6.49 256.87 250.23 13.27 219.16 217.08 29.48 15.19 13.6 4.22
+26 965.89 969.6 8.54 996.89 998.45 5.47 326.95 329.26 9.33 345.86 338.48 15.18 318.64 315.39 17.52 309.46 324.8 34.46 1.75 1.74 0.13
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/out2.flowstat1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out2.flowstat1 Wed Jul 29 13:32:17 2020 -0400
b
@@ -0,0 +1,4 @@
+FileID SampleName 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
+Rearranged FCSGateTrans on FCS2.003.20Kevents.fcs Sample01 8.5 9.99 0.12 0.67 5.145 4.76 7.925 0.105 0.165 7.27 3.9 3.7 0.12 0.015 1.325 0.72 0.17 10.48 0.955 0.0 4.35 3.195 3.925 1.435 15.705 5.355
+Rearranged FCSGateTrans on FCS2.001.20Kevents.fcs Sample02 0.05 0.33 9.37 4.345 0.225 1.575 4.41 12.41 2.385 0.0 9.395 0.725 11.265 0.0 0.075 0.5 0.18 0.46 1.54 0.395 3.915 3.635 9.05 0.895 14.01 8.86
+Rearranged FCSGateTrans on FCS2.002.20Kevents.fcs Sample03 7.265 6.76 0.07 0.575 4.185 1.035 8.955 0.16 1.1 5.46 0.995 2.145 0.295 3.74 1.41 2.675 2.53 7.615 0.88 4.68 3.98 2.515 3.275 1.69 20.385 5.625
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/out2.flowstat2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out2.flowstat2 Wed Jul 29 13:32:17 2020 -0400
b
@@ -0,0 +1,76 @@
+FSC SSC CD4 CCR7 CD8 CCR3 Percentage Population SampleName
+355.78 114.46 519.34 168.82 0.0 0.0 8.5 1 Sample01
+366.75 118.51 522.91 0.0 0.0 173.37 9.99 2 Sample01
+395.48 148.84 392.96 0.0 586.93 243.93 0.12 3 Sample01
+354.8 191.64 0.0 0.0 0.0 275.85 0.67 4 Sample01
+319.28 138.51 0.0 0.0 0.0 0.0 5.14 5 Sample01
+362.66 143.68 0.0 0.0 555.18 0.0 4.76 6 Sample01
+380.81 152.04 0.0 145.67 614.99 252.75 7.92 7 Sample01
+400.38 174.42 364.97 180.95 586.5 279.3 0.1 8 Sample01
+466.22 295.56 170.77 285.06 183.68 310.72 0.16 9 Sample01
+350.06 111.14 519.16 0.0 0.0 0.0 7.27 10 Sample01
+369.23 147.33 0.0 0.0 631.66 282.47 3.9 11 Sample01
+409.74 209.13 0.0 0.0 0.0 0.0 3.7 12 Sample01
+425.44 428.91 350.72 615.96 500.26 478.29 0.12 13 Sample01
+337.43 123.45 431.7 538.75 0.0 114.12 0.02 14 Sample01
+348.19 106.43 290.24 0.0 0.0 0.0 1.32 15 Sample01
+403.15 365.18 0.0 321.2 0.0 0.0 0.72 16 Sample01
+438.05 324.84 321.28 594.04 0.0 317.46 0.17 17 Sample01
+380.78 125.14 526.06 177.24 0.0 180.63 10.48 18 Sample01
+947.3 1005.61 446.06 514.03 412.83 450.29 0.96 19 Sample01
+564.8 892.55 0.0 0.0 0.0 0.0 4.35 21 Sample01
+666.51 454.64 369.55 0.0 0.0 241.11 3.2 22 Sample01
+601.97 997.64 234.58 333.96 283.79 305.79 3.92 23 Sample01
+650.11 361.04 386.73 0.0 0.0 0.0 1.44 24 Sample01
+648.85 1003.84 0.0 239.36 0.0 0.0 15.7 25 Sample01
+823.2 1013.04 211.5 279.26 260.44 233.45 5.36 26 Sample01
+476.64 216.34 377.33 193.69 240.82 0.0 0.05 1 Sample02
+471.05 266.57 360.02 0.0 199.15 475.21 0.33 2 Sample02
+359.23 107.35 511.79 0.0 632.87 473.39 9.37 3 Sample02
+336.76 151.5 0.0 0.0 0.0 512.43 4.35 4 Sample02
+317.03 152.51 0.0 0.0 0.0 172.25 0.22 5 Sample02
+371.85 156.31 0.0 0.0 594.77 279.72 1.58 6 Sample02
+402.12 171.98 0.0 237.43 620.27 364.06 4.41 7 Sample02
+368.32 108.49 514.9 236.18 641.3 500.82 12.41 8 Sample02
+409.74 195.75 0.0 294.04 0.0 580.59 2.38 9 Sample02
+378.44 132.1 0.0 0.0 600.97 570.17 9.4 11 Sample02
+426.29 523.22 0.0 0.0 0.0 197.13 0.73 12 Sample02
+401.36 127.3 516.01 406.73 613.97 296.09 11.26 13 Sample02
+400.4 219.68 190.49 78.26 125.95 176.58 0.08 15 Sample02
+423.89 256.67 0.0 514.7 0.0 187.2 0.5 16 Sample02
+497.74 393.88 292.7 475.7 352.66 342.82 0.18 17 Sample02
+420.84 217.2 284.35 211.29 245.95 275.71 0.46 18 Sample02
+884.52 972.3 440.63 466.03 477.16 487.96 1.54 19 Sample02
+423.88 161.22 0.0 448.14 577.34 274.5 0.4 20 Sample02
+581.05 892.1 0.0 0.0 233.34 0.0 3.91 21 Sample02
+674.41 425.53 389.33 0.0 236.75 288.13 3.64 22 Sample02
+624.32 1007.46 217.78 295.71 297.25 314.48 9.05 23 Sample02
+718.58 474.62 396.15 0.0 224.48 0.0 0.9 24 Sample02
+660.25 1000.27 0.0 237.39 243.98 0.0 14.01 25 Sample02
+807.85 1014.39 196.22 272.05 278.9 248.53 8.86 26 Sample02
+361.35 109.32 516.61 180.94 0.0 0.0 7.26 1 Sample03
+361.78 108.85 520.87 0.0 0.0 146.36 6.76 2 Sample03
+373.61 121.06 332.84 0.0 583.08 240.41 0.07 3 Sample03
+383.18 197.39 0.0 0.0 0.0 258.69 0.57 4 Sample03
+310.49 136.14 0.0 0.0 0.0 0.0 4.18 5 Sample03
+364.87 131.0 0.0 0.0 489.71 0.0 1.03 6 Sample03
+375.6 144.75 0.0 389.84 622.87 273.03 8.96 7 Sample03
+439.6 306.15 288.84 737.82 594.44 672.52 0.16 8 Sample03
+398.88 189.54 0.0 499.34 0.0 324.64 1.1 9 Sample03
+356.28 107.51 519.27 0.0 0.0 0.0 5.46 10 Sample03
+353.41 129.92 0.0 0.0 641.06 278.58 1.0 11 Sample03
+413.37 228.27 0.0 0.0 0.0 0.0 2.14 12 Sample03
+439.22 239.91 367.79 549.6 553.86 308.33 0.3 13 Sample03
+394.14 128.93 523.27 554.83 0.0 0.0 3.74 14 Sample03
+355.73 103.18 334.1 0.0 0.0 0.0 1.41 15 Sample03
+396.87 187.11 0.0 467.44 0.0 0.0 2.68 16 Sample03
+431.47 165.27 520.82 580.86 0.0 230.86 2.53 17 Sample03
+376.04 115.81 519.43 197.15 0.0 151.84 7.61 18 Sample03
+932.7 989.79 437.87 562.38 426.21 406.49 0.88 19 Sample03
+394.2 149.29 0.0 589.44 603.93 0.0 4.68 20 Sample03
+585.23 908.66 0.0 0.0 0.0 0.0 3.98 21 Sample03
+643.85 436.66 357.78 0.0 0.0 212.63 2.51 22 Sample03
+584.99 986.35 270.28 378.3 0.0 317.27 3.28 23 Sample03
+689.54 462.88 376.1 0.0 0.0 0.0 1.69 24 Sample03
+659.74 1006.36 0.0 251.84 0.0 0.0 20.39 25 Sample03
+836.45 1013.12 214.98 295.93 264.33 0.0 5.62 26 Sample03
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/out2.flowstat3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out2.flowstat3 Wed Jul 29 13:32:17 2020 -0400
b
@@ -0,0 +1,27 @@
+Population FSC_mean FSC_median FSC_stdev SSC_mean SSC_median SSC_stdev CD4_mean CD4_median CD4_stdev CCR7_mean CCR7_median CCR7_stdev CD8_mean CD8_median CD8_stdev CCR3_mean CCR3_median CCR3_stdev Percentage_mean Percentage_median Percentage_stdev
+1 397.92 361.35 68.23 146.71 114.46 60.36 471.09 516.61 81.21 181.15 180.94 12.44 80.27 0.0 139.04 0.0 0.0 0.0 5.27 7.26 4.56
+2 399.86 366.75 61.7 164.64 118.51 88.4 467.93 520.87 93.46 0.0 0.0 0.0 66.38 0.0 114.98 264.98 173.37 182.56 5.69 6.76 4.92
+3 376.11 373.61 18.25 125.75 121.06 21.14 412.53 392.96 91.07 0.0 0.0 0.0 600.96 586.93 27.7 319.24 243.93 133.51 3.19 0.12 5.35
+4 358.25 354.8 23.4 180.18 191.64 25.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 348.99 275.85 141.8 1.86 0.67 2.15
+5 315.6 317.03 4.57 142.39 138.51 8.85 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 57.42 0.0 99.45 3.18 4.18 2.61
+6 366.46 364.87 4.8 143.66 143.68 12.66 0.0 0.0 0.0 0.0 0.0 0.0 546.55 555.18 53.06 93.24 0.0 161.5 2.46 1.58 2.01
+7 386.18 380.81 14.05 156.26 152.04 14.1 0.0 0.0 0.0 257.65 237.43 123.33 619.38 620.27 4.02 296.61 273.03 59.28 7.1 7.92 2.38
+8 402.77 400.38 35.7 196.35 174.42 100.64 389.57 364.97 115.02 384.98 236.18 306.81 607.41 594.44 29.61 484.21 500.82 197.14 4.22 0.16 7.09
+9 424.95 409.74 36.15 226.95 195.75 59.5 56.92 0.0 98.59 359.48 294.04 121.21 61.23 0.0 106.05 405.32 324.64 151.95 1.21 1.1 1.11
+10 353.17 353.17 4.4 109.32 109.32 2.57 519.21 519.21 0.08 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.36 6.36 1.28
+11 367.03 369.23 12.66 136.45 132.1 9.49 0.0 0.0 0.0 0.0 0.0 0.0 624.56 631.66 20.97 377.07 282.47 167.24 4.77 3.9 4.27
+12 416.47 413.37 8.7 320.21 228.27 176.07 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 65.71 0.0 113.81 2.19 2.14 1.49
+13 422.01 425.44 19.16 265.37 239.91 152.41 411.51 367.79 90.9 524.1 549.6 106.92 556.03 553.86 56.89 360.9 308.33 101.84 3.89 0.3 6.38
+14 365.78 365.78 40.1 126.19 126.19 3.87 477.48 477.48 64.75 546.79 546.79 11.37 0.0 0.0 0.0 57.06 57.06 80.7 1.88 1.88 2.63
+15 368.11 355.73 28.22 143.1 106.43 66.34 271.61 290.24 73.6 26.09 0.0 45.18 41.98 0.0 72.72 58.86 0.0 101.95 0.94 1.32 0.74
+16 407.97 403.15 14.14 269.65 256.67 89.74 0.0 0.0 0.0 434.45 467.44 100.88 0.0 0.0 0.0 62.4 0.0 108.08 1.3 0.72 1.2
+17 455.75 438.05 36.51 294.66 324.84 117.25 378.27 321.28 124.28 550.2 580.86 64.85 117.55 0.0 203.61 297.05 317.46 58.71 0.96 0.18 1.36
+18 392.55 380.78 24.61 152.72 125.14 56.04 443.28 519.43 137.68 195.23 197.15 17.11 81.98 0.0 142.0 202.73 180.63 64.82 6.18 7.61 5.16
+19 921.51 932.7 32.85 989.23 989.79 16.66 441.52 440.63 4.17 514.15 514.03 48.18 438.73 426.21 33.94 448.25 450.29 40.77 1.13 0.96 0.36
+20 409.04 409.04 20.99 155.26 155.26 8.44 0.0 0.0 0.0 518.79 518.79 99.91 590.64 590.64 18.8 137.25 137.25 194.1 2.54 2.54 3.03
+21 577.03 581.05 10.79 897.77 892.55 9.43 0.0 0.0 0.0 0.0 0.0 0.0 77.78 0.0 134.72 0.0 0.0 0.0 4.08 3.98 0.24
+22 661.59 666.51 15.86 438.94 436.66 14.69 372.22 369.55 15.94 0.0 0.0 0.0 78.92 0.0 136.69 247.29 241.11 38.13 3.12 3.2 0.57
+23 603.76 601.97 19.73 997.15 997.64 10.56 240.88 234.58 26.81 335.99 333.96 41.33 193.68 283.79 167.87 312.51 314.48 5.99 5.42 3.92 3.16
+24 686.08 689.54 34.37 432.85 462.88 62.46 386.33 386.73 10.03 0.0 0.0 0.0 74.83 0.0 129.6 0.0 0.0 0.0 1.34 1.44 0.4
+25 656.28 659.74 6.44 1003.49 1003.84 3.06 0.0 0.0 0.0 242.86 239.36 7.84 81.33 0.0 140.86 0.0 0.0 0.0 16.7 15.7 3.31
+26 822.5 823.2 14.31 1013.52 1013.12 0.76 207.57 211.5 9.98 282.41 279.26 12.25 267.89 264.33 9.73 160.66 233.45 139.34 6.61 5.62 1.95
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/run1/input1.flowtext.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/run1/input1.flowtext.flowclr Wed Jul 29 13:32:17 2020 -0400
b
b'@@ -0,0 +1,20001 @@\n+FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n+289\t56\t438\t0\t626\t480\t3\n+352\t153\t30\t147\t483\t386\t6\n+383\t190\t156\t228\t734\t408\t7\n+261\t62\t432\t121\t598\t555\t3\n+451\t120\t537\t338\t568\t201\t13\n+373\t104\t3\t110\t621\t584\t11\n+418\t105\t561\t0\t610\t562\t3\n+358\t185\t0\t292\t641\t327\t7\n+733\t970\t139\t227\t293\t259\t25\n+765\t1023\t71\t239\t233\t253\t25\n+762\t957\t143\t158\t271\t255\t25\n+406\t191\t513\t122\t646\t264\t3\n+695\t1023\t168\t251\t234\t283\t25\n+336\t178\t0\t146\t128\t537\t4\n+668\t1023\t167\t306\t302\t253\t25\n+330\t135\t493\t72\t734\t496\t3\n+618\t1015\t201\t269\t284\t141\t21\n+662\t1023\t204\t241\t273\t149\t25\n+383\t109\t49\t50\t575\t451\t11\n+427\t206\t169\t258\t725\t402\t7\n+369\t152\t216\t569\t738\t684\t20\n+420\t209\t26\t368\t651\t303\t7\n+554\t218\t601\t336\t629\t300\t13\n+425\t229\t89\t416\t616\t373\t20\n+493\t355\t516\t252\t625\t568\t8\n+674\t1023\t211\t243\t259\t310\t25\n+286\t88\t0\t63\t556\t491\t11\n+318\t83\t477\t469\t627\t546\t8\n+297\t65\t489\t324\t618\t518\t8\n+358\t101\t496\t0\t646\t543\t3\n+429\t168\t515\t462\t675\t321\t13\n+364\t105\t504\t298\t602\t460\t8\n+319\t469\t415\t202\t571\t405\t8\n+532\t1023\t390\t528\t406\t507\t23\n+561\t287\t396\t72\t381\t279\t2\n+422\t150\t522\t351\t626\t353\t13\n+448\t149\t529\t288\t612\t270\t13\n+361\t143\t0\t132\t656\t362\t6\n+377\t96\t504\t163\t603\t524\t8\n+837\t1023\t211\t231\t316\t280\t25\n+702\t907\t176\t206\t271\t236\t21\n+367\t130\t570\t0\t661\t568\t3\n+302\t95\t508\t205\t643\t494\t8\n+403\t216\t159\t361\t158\t554\t9\n+427\t215\t188\t0\t711\t381\t6\n+743\t1023\t217\t316\t306\t278\t25\n+746\t339\t238\t433\t692\t433\t20\n+409\t104\t545\t278\t631\t480\t8\n+345\t67\t499\t581\t682\t524\t13\n+292\t171\t69\t115\t70\t463\t4\n+314\t152\t84\t0\t0\t514\t4\n+824\t1023\t220\t273\t315\t179\t25\n+554\t1023\t143\t255\t219\t283\t21\n+700\t998\t193\t261\t294\t148\t25\n+732\t1023\t204\t314\t322\t279\t25\n+360\t84\t467\t425\t577\t278\t13\n+425\t136\t558\t193\t622\t586\t8\n+301\t135\t49\t66\t574\t499\t11\n+356\t146\t511\t110\t635\t287\t3\n+390\t119\t528\t386\t580\t251\t13\n+654\t931\t169\t259\t334\t220\t21\n+385\t255\t102\t211\t671\t449\t7\n+589\t1023\t187\t203\t270\t189\t21\n+678\t1023\t0\t251\t177\t250\t21\n+410\t123\t528\t305\t710\t429\t8\n+362\t90\t514\t292\t642\t531\t8\n+543\t934\t127\t153\t283\t199\t21\n+739\t587\t416\t244\t300\t158\t24\n+406\t98\t497\t428\t621\t364\t13\n+895\t1023\t201\t307\t281\t279\t26\n+330\t123\t7\t230\t577\t247\t6\n+384\t158\t83\t62\t614\t300\t6\n+685\t1023\t197\t257\t209\t278\t25\n+395\t163\t531\t0\t618\t434\t3\n+350\t128\t483\t352\t642\t514\t8\n+339\t119\t124\t127\t546\t556\t11\n+357\t107\t516\t66\t679\t560\t3\n+1023\t1023\t420\t305\t336\t355\t26\n+620\t894\t88\t189\t210\t272\t21\n+618\t970\t394\t238\t179\t201\t21\n+678\t954\t143\t286\t280\t114\t21\n+544\t766\t122\t184\t279\t236\t21\n+416\t138\t120\t358\t578\t228\t7\n+425\t100\t167\t229\t582\t600\t11\n+333\t95\t516\t229\t591\t443\t8\n+396\t147\t554\t263\t608\t280\t13\n+331\t140\t27\t51\t39\t552\t4\n+689\t1023\t204\t267\t316\t276\t25\n+564\t810\t151\t89\t250\t253\t21\n+282\t70\t494\t158\t497\t546\t3\n+378\t127\t550\t189\t629\t555\t8\n+396\t182\t181\t323\t541\t509\t7\n+627\t1011\t239\t262\t314\t225\t25\n+319\t139\t45\t78\t131\t480\t4\n+324\t123\t17\t73\t637\t603\t11\n+398\t95\t555\t173\t643\t518\t8\n+445\t1023\t426\t492\t402\t540\t23\n+671\t1023\t113\t249\t281\t283\t25\n+384\t223\t0\t200\t621\t273\t6\n+780\t1023\t237\t227\t287\t64\t25\n+408\t141\t72\t272\t645\t621\t11\n+672\t1023\t164\t214\t258\t273\t25\n+626\t932\t66\t256\t207\t301\t21\n+398\t111\t118\t165\t589\t531\t11\n+687\t927\t137\t266\t263\t141\t21\n+342\t139\t82\t122\t305\t595\t4\n+736\t393\t454\t252\t235\t324\t22\n+311\t102\t491\t118\t632\t474\t3\n+318\t110\t503\t46\t643\t523\t3\n+623\t1023\t159\t266\t253\t197\t21\n+416\t106\t547\t347\t668\t489\t8\n+350\t91\t93\t199\t590\t577\t11\n+403\t158\t186\t222\t604\t540\t11\n+362\t202\t128\t187\t597\t241\t6\n+628\t886\t205\t244\t172\t201\t21\n+656\t1023\t231\t241\t251\t104\t21\n+731\t981\t141\t207\t273\t165\t25\n+340\t224\t49\t449\t548\t782\t9\n+699\t1023\t259\t233\t266\t220\t25\n+392\t148\t43\t35\t595\t575\t11\n+942\t1023\t199\t308\t335\t193\t26\n+312\t164\t35\t103\t0\t461\t4\n+822\t1023\t202\t311\t252\t308\t25\n+683\t457\t339\t241\t182\t180\t24\n+683\t1023\t180\t263\t277\t261\t25\n+397\t174\t25\t20\t654\t616\t11\n+324\t77\t487\t0\t623\t518\t3\n+371\t146\t511\t36\t648\t414\t3\n+399\t162\t144\t64\t622\t589\t11\n+682\t1023\t157\t221\t257\t233\t25\n+590\t922\t199\t196\t271\t146\t21\n+393\t105\t506\t253\t497\t251\t13\n+633\t1023\t41\t145\t256\t162\t21\n+550\t232\t350\t249\t197\t556\t18\n+355\t99\t523\t31\t646\t507\t3\n+434\t202\t88\t311\t725\t360\t7\n+696\t1023\t222\t263\t293\t283\t25\n+725\t345\t375\t211\t267\t260\t22\n+678\t1023\t163\t273\t259\t286\t25\n+559\t831\t132\t272\t323\t237\t21\n+298\t110\t506\t382\t669\t443\t8\n+334\t117\t542\t4\t628\t525\t3\n+681\t1023\t206\t236\t252\t223\t25\n+638\t1023\t167\t225\t290\t234\t21\n+297\t101\t0\t33\t579\t305\t6\n+359\t1'..b'2\t232\t24\n+363\t83\t464\t526\t458\t398\t13\n+404\t143\t538\t282\t581\t229\t13\n+535\t1023\t133\t259\t238\t118\t21\n+454\t1023\t240\t324\t338\t257\t21\n+430\t212\t534\t498\t646\t266\t13\n+290\t78\t445\t508\t645\t476\t13\n+431\t165\t549\t489\t659\t263\t13\n+350\t110\t536\t136\t638\t609\t3\n+434\t169\t89\t212\t630\t664\t11\n+681\t282\t338\t196\t221\t147\t24\n+466\t779\t167\t101\t125\t188\t21\n+330\t176\t81\t67\t47\t499\t4\n+409\t138\t550\t347\t649\t324\t13\n+595\t962\t186\t253\t220\t172\t21\n+704\t986\t218\t244\t283\t207\t25\n+382\t119\t539\t354\t615\t558\t8\n+406\t181\t541\t566\t661\t196\t13\n+654\t1023\t171\t304\t320\t271\t25\n+367\t174\t75\t300\t598\t294\t7\n+383\t119\t536\t205\t660\t582\t8\n+329\t92\t510\t240\t652\t574\t8\n+473\t217\t161\t90\t0\t601\t4\n+556\t278\t479\t118\t264\t627\t2\n+655\t1023\t211\t250\t296\t291\t25\n+361\t120\t96\t24\t600\t557\t11\n+468\t1023\t366\t419\t409\t500\t23\n+303\t89\t91\t90\t602\t563\t11\n+315\t169\t39\t0\t0\t476\t4\n+315\t99\t521\t140\t650\t499\t3\n+419\t126\t81\t186\t624\t677\t11\n+748\t1023\t177\t287\t236\t140\t25\n+342\t100\t49\t52\t569\t507\t11\n+730\t1023\t217\t327\t278\t308\t25\n+389\t197\t76\t26\t626\t337\t6\n+593\t900\t215\t209\t285\t248\t21\n+685\t1023\t137\t278\t318\t109\t25\n+454\t149\t550\t469\t585\t294\t13\n+380\t235\t117\t220\t651\t327\t7\n+358\t53\t476\t302\t674\t485\t8\n+603\t1023\t404\t506\t414\t494\t23\n+315\t56\t511\t0\t629\t522\t3\n+719\t1023\t166\t268\t277\t308\t25\n+405\t140\t66\t184\t617\t286\t6\n+645\t1023\t119\t169\t236\t256\t21\n+626\t1023\t136\t283\t180\t248\t21\n+836\t1023\t180\t305\t203\t193\t25\n+656\t1023\t249\t310\t291\t353\t25\n+726\t372\t175\t299\t674\t367\t7\n+684\t1023\t147\t276\t200\t282\t25\n+638\t927\t130\t216\t243\t256\t21\n+354\t133\t523\t120\t694\t565\t3\n+374\t125\t527\t241\t650\t497\t8\n+718\t1023\t189\t235\t278\t259\t25\n+735\t1023\t188\t199\t287\t253\t25\n+381\t156\t87\t57\t646\t606\t11\n+406\t151\t547\t332\t645\t536\t8\n+402\t241\t118\t203\t139\t593\t4\n+405\t106\t539\t202\t624\t504\t8\n+419\t118\t527\t555\t685\t349\t13\n+618\t548\t436\t238\t196\t289\t22\n+281\t107\t19\t211\t54\t460\t4\n+425\t130\t540\t219\t612\t495\t8\n+387\t153\t106\t35\t563\t649\t11\n+398\t87\t505\t241\t611\t528\t8\n+720\t1023\t194\t262\t184\t298\t25\n+699\t880\t166\t238\t248\t235\t21\n+409\t149\t32\t216\t612\t638\t11\n+395\t145\t84\t344\t632\t361\t7\n+394\t109\t473\t219\t659\t355\t8\n+595\t1023\t210\t133\t164\t104\t21\n+387\t139\t77\t0\t632\t583\t11\n+393\t163\t513\t285\t574\t308\t13\n+382\t108\t540\t89\t643\t555\t3\n+565\t932\t176\t209\t268\t76\t21\n+349\t79\t492\t0\t618\t410\t3\n+653\t1023\t187\t202\t250\t282\t25\n+364\t147\t497\t278\t490\t558\t8\n+563\t219\t498\t343\t638\t582\t8\n+787\t1023\t259\t195\t292\t350\t25\n+566\t634\t173\t253\t273\t248\t12\n+403\t107\t529\t457\t623\t371\t13\n+784\t1023\t198\t300\t313\t295\t25\n+983\t1023\t245\t338\t372\t318\t26\n+348\t104\t503\t49\t483\t454\t3\n+448\t222\t130\t278\t732\t443\t7\n+1023\t1023\t519\t526\t592\t406\t19\n+354\t93\t535\t217\t703\t509\t8\n+464\t210\t557\t538\t615\t268\t13\n+395\t103\t108\t87\t583\t593\t11\n+402\t193\t86\t364\t70\t498\t4\n+366\t106\t184\t4\t631\t601\t11\n+360\t110\t500\t86\t513\t554\t3\n+334\t64\t501\t0\t632\t473\t3\n+411\t190\t15\t299\t623\t412\t7\n+737\t986\t151\t234\t159\t210\t25\n+330\t82\t505\t440\t536\t238\t13\n+416\t161\t549\t436\t648\t303\t13\n+401\t187\t534\t295\t579\t192\t13\n+871\t1023\t538\t465\t679\t269\t19\n+324\t103\t475\t559\t584\t511\t13\n+331\t148\t74\t95\t0\t530\t4\n+665\t1023\t198\t178\t276\t283\t25\n+401\t143\t60\t99\t539\t562\t11\n+390\t133\t497\t616\t590\t240\t13\n+708\t975\t175\t270\t257\t96\t25\n+374\t100\t501\t47\t607\t504\t3\n+357\t91\t470\t128\t618\t604\t3\n+484\t527\t183\t214\t256\t285\t12\n+686\t1023\t153\t263\t335\t176\t25\n+409\t146\t542\t0\t669\t444\t3\n+370\t172\t107\t81\t578\t319\t6\n+611\t1023\t200\t306\t269\t298\t25\n+653\t1023\t123\t236\t265\t241\t21\n+333\t87\t480\t509\t681\t462\t13\n+614\t816\t125\t165\t184\t117\t21\n+333\t96\t503\t460\t584\t221\t13\n+362\t183\t113\t270\t604\t227\t7\n+776\t564\t356\t271\t270\t223\t24\n+637\t1023\t185\t299\t259\t296\t25\n+795\t1023\t243\t269\t311\t247\t25\n+415\t107\t481\t403\t545\t288\t13\n+721\t950\t157\t204\t276\t259\t25\n+464\t310\t113\t193\t615\t265\t6\n+668\t400\t415\t202\t230\t229\t22\n+407\t109\t554\t22\t691\t466\t3\n+704\t1023\t297\t277\t294\t121\t25\n+603\t1020\t209\t222\t290\t220\t21\n+577\t1017\t174\t235\t224\t145\t21\n+822\t1023\t155\t171\t274\t185\t25\n+332\t97\t503\t229\t665\t522\t8\n+693\t1023\t166\t259\t307\t211\t25\n+394\t111\t545\t290\t710\t510\t8\n+457\t226\t0\t106\t131\t573\t4\n+554\t1023\t137\t0\t262\t145\t21\n+330\t116\t507\t1\t647\t558\t3\n+619\t983\t105\t151\t199\t257\t21\n+442\t129\t531\t413\t591\t214\t13\n+384\t160\t541\t267\t661\t527\t8\n+687\t1023\t197\t250\t221\t195\t25\n+438\t100\t97\t169\t636\t461\t11\n+383\t168\t105\t183\t620\t581\t11\n+312\t71\t482\t164\t639\t427\t3\n+541\t1023\t166\t207\t266\t103\t21\n+781\t893\t114\t242\t232\t248\t25\n+341\t185\t13\t228\t117\t561\t4\n+694\t370\t391\t254\t311\t330\t22\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/run1/input2.flowtext.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/run1/input2.flowtext.flowclr Wed Jul 29 13:32:17 2020 -0400
b
b'@@ -0,0 +1,20001 @@\n+FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n+363\t76\t550\t200\t0\t127\t1\n+372\t126\t519\t44\t51\t148\t2\n+1023\t1023\t289\t401\t362\t254\t26\n+770\t1023\t175\t361\t225\t237\t25\n+384\t111\t525\t121\t0\t138\t1\n+602\t578\t385\t286\t222\t131\t24\n+788\t1023\t216\t310\t270\t294\t25\n+420\t211\t552\t479\t0\t62\t14\n+668\t1019\t73\t193\t227\t132\t21\n+417\t134\t542\t597\t22\t107\t14\n+755\t1023\t232\t305\t294\t204\t25\n+374\t128\t536\t493\t0\t173\t14\n+332\t71\t495\t0\t60\t34\t10\n+561\t874\t136\t254\t245\t241\t21\n+423\t146\t542\t284\t98\t81\t1\n+261\t74\t477\t0\t5\t72\t10\n+355\t120\t58\t348\t649\t276\t7\n+595\t857\t169\t193\t246\t100\t21\n+749\t662\t434\t318\t216\t247\t22\n+450\t142\t559\t187\t0\t32\t1\n+365\t129\t515\t0\t0\t30\t10\n+370\t181\t76\t357\t74\t314\t4\n+651\t655\t339\t274\t129\t132\t24\n+305\t149\t74\t0\t118\t182\t5\n+375\t85\t285\t137\t0\t0\t15\n+274\t149\t0\t164\t0\t38\t5\n+399\t187\t102\t625\t226\t365\t16\n+602\t1023\t167\t257\t204\t273\t21\n+293\t240\t263\t222\t0\t6\t15\n+671\t929\t112\t215\t182\t170\t21\n+436\t149\t90\t425\t659\t308\t7\n+317\t89\t492\t266\t0\t99\t1\n+363\t146\t6\t527\t194\t64\t16\n+858\t1023\t252\t325\t217\t105\t25\n+266\t152\t91\t173\t44\t12\t5\n+318\t114\t495\t230\t10\t0\t1\n+337\t83\t502\t103\t3\t149\t2\n+619\t977\t159\t241\t274\t5\t21\n+869\t1023\t177\t296\t252\t323\t25\n+734\t388\t470\t143\t93\t238\t22\n+361\t114\t525\t86\t3\t0\t10\n+372\t113\t551\t109\t104\t153\t2\n+333\t239\t363\t529\t121\t263\t17\n+749\t1023\t219\t260\t225\t179\t25\n+353\t194\t77\t352\t663\t182\t7\n+649\t1023\t373\t478\t420\t453\t23\n+416\t118\t535\t291\t91\t38\t1\n+716\t515\t423\t240\t203\t201\t24\n+413\t197\t106\t511\t130\t306\t16\n+370\t110\t517\t252\t66\t141\t18\n+341\t131\t20\t438\t609\t265\t7\n+327\t88\t520\t53\t207\t111\t10\n+340\t75\t520\t0\t0\t33\t10\n+447\t153\t551\t575\t0\t113\t14\n+399\t88\t554\t269\t0\t167\t18\n+380\t96\t484\t557\t138\t173\t14\n+993\t1023\t195\t318\t335\t263\t26\n+375\t147\t554\t168\t0\t72\t1\n+358\t130\t0\t0\t299\t76\t5\n+284\t96\t448\t126\t0\t147\t1\n+744\t1023\t189\t313\t240\t168\t25\n+610\t1023\t158\t232\t231\t234\t21\n+633\t1023\t144\t244\t275\t200\t21\n+477\t584\t84\t403\t131\t161\t12\n+370\t117\t532\t59\t9\t169\t2\n+709\t923\t193\t233\t246\t76\t21\n+342\t152\t533\t92\t66\t161\t2\n+306\t129\t13\t66\t82\t106\t5\n+349\t165\t80\t201\t301\t207\t12\n+650\t1023\t108\t178\t150\t61\t21\n+316\t106\t0\t337\t600\t236\t7\n+535\t435\t368\t226\t10\t83\t24\n+320\t78\t500\t185\t0\t135\t1\n+364\t189\t158\t363\t396\t206\t7\n+367\t134\t552\t0\t129\t208\t2\n+367\t109\t537\t198\t49\t185\t18\n+650\t1023\t113\t289\t213\t258\t25\n+354\t211\t117\t75\t116\t205\t5\n+599\t1023\t131\t186\t252\t181\t21\n+528\t355\t334\t248\t180\t219\t22\n+560\t933\t181\t239\t307\t137\t21\n+262\t88\t3\t189\t0\t165\t5\n+708\t1023\t41\t300\t174\t227\t25\n+532\t862\t158\t113\t259\t179\t21\n+358\t102\t515\t0\t70\t18\t10\n+648\t438\t442\t286\t206\t49\t24\n+410\t141\t518\t323\t182\t3\t1\n+399\t62\t498\t125\t0\t29\t1\n+784\t549\t343\t23\t201\t152\t24\n+342\t169\t102\t195\t24\t146\t5\n+616\t691\t378\t268\t230\t276\t22\n+585\t1009\t164\t124\t223\t236\t21\n+678\t1023\t155\t197\t140\t30\t21\n+378\t113\t76\t464\t624\t173\t20\n+682\t1023\t185\t293\t187\t285\t25\n+402\t143\t568\t262\t0\t68\t1\n+339\t150\t512\t542\t26\t115\t14\n+607\t898\t56\t278\t217\t194\t21\n+333\t93\t524\t129\t0\t103\t1\n+369\t153\t62\t426\t656\t263\t7\n+345\t108\t523\t205\t0\t0\t1\n+615\t747\t199\t285\t260\t263\t21\n+389\t247\t91\t0\t93\t44\t5\n+365\t114\t517\t0\t35\t83\t10\n+362\t83\t547\t236\t39\t87\t1\n+776\t1023\t172\t253\t259\t268\t25\n+368\t120\t539\t198\t20\t84\t1\n+735\t1023\t253\t304\t315\t151\t25\n+350\t138\t54\t284\t652\t243\t7\n+390\t162\t554\t29\t0\t62\t10\n+466\t183\t71\t676\t699\t371\t20\n+370\t120\t244\t117\t85\t19\t15\n+361\t132\t537\t223\t0\t163\t18\n+730\t1023\t187\t307\t303\t208\t25\n+636\t979\t127\t275\t257\t133\t21\n+405\t124\t27\t464\t634\t252\t20\n+329\t109\t108\t315\t546\t216\t7\n+582\t1023\t135\t227\t156\t148\t21\n+348\t120\t501\t39\t74\t201\t2\n+356\t66\t467\t93\t304\t155\t2\n+385\t206\t60\t439\t675\t364\t7\n+351\t116\t520\t549\t43\t71\t14\n+836\t429\t537\t214\t79\t160\t24\n+386\t162\t61\t530\t701\t354\t20\n+413\t180\t119\t476\t670\t272\t20\n+357\t119\t551\t281\t70\t30\t1\n+348\t74\t545\t222\t0\t0\t1\n+414\t154\t0\t354\t606\t178\t7\n+490\t169\t570\t628\t108\t95\t14\n+384\t112\t537\t150\t75\t172\t18\n+754\t1009\t121\t180\t203\t86\t21\n+394\t82\t537\t85\t63\t73\t10\n+942\t1023\t230\t307\t299\t216\t26\n+401\t211\t95\t519\t678\t321\t20\n+686\t1023\t151\t236\t274\t242\t25\n+622\t946\t120\t196\t158\t177\t21\n+615\t1023\t184\t84\t230\t179\t21\n+709\t1019\t181\t275\t148\t236\t25\n+458\t210\t598\t527\t58\t172\t14\n+357\t146\t65\t366\t651\t257\t7\n+621\t1023\t70\t244\t245\t249\t21\n+437\t206\t530\t654\t0\t211\t17\n+974\t1023\t242\t319\t318\t221\t26\n+320\t189\t319\t396\t172\t221\t16\n+323\t72\t482\t186\t0\t156\t18\n+823\t1023\t131\t272\t167\t232\t25\n+660\t1023\t229\t290\t246\t28\t21\n+297\t119\t444\t0\t0\t104\t10\n+393\t117\t82\t503\t658\t196\t20\n+586\t834\t175\t274'..b'26\n+365\t150\t530\t172\t0\t37\t1\n+378\t121\t16\t354\t660\t290\t7\n+363\t133\t52\t398\t674\t255\t7\n+775\t1023\t149\t265\t217\t181\t25\n+334\t82\t502\t71\t27\t162\t2\n+383\t173\t75\t397\t676\t243\t7\n+681\t354\t407\t284\t269\t243\t22\n+386\t133\t545\t103\t93\t112\t2\n+416\t110\t532\t173\t148\t63\t1\n+636\t1023\t132\t243\t243\t203\t21\n+405\t152\t96\t299\t656\t301\t7\n+639\t1023\t132\t308\t183\t280\t25\n+629\t946\t125\t256\t211\t47\t21\n+429\t104\t230\t714\t692\t738\t9\n+700\t1023\t211\t292\t271\t252\t25\n+568\t323\t441\t389\t118\t316\t22\n+323\t97\t507\t183\t120\t51\t1\n+671\t1023\t213\t362\t301\t0\t25\n+329\t134\t94\t146\t0\t173\t5\n+388\t125\t19\t433\t591\t254\t7\n+360\t183\t0\t266\t649\t231\t7\n+331\t78\t489\t41\t0\t131\t2\n+634\t897\t167\t226\t210\t252\t21\n+292\t108\t22\t0\t0\t79\t5\n+336\t111\t0\t316\t655\t258\t7\n+434\t141\t489\t167\t162\t185\t18\n+560\t845\t137\t252\t178\t150\t21\n+396\t145\t568\t147\t0\t128\t1\n+645\t936\t138\t185\t223\t222\t21\n+663\t1023\t155\t260\t230\t151\t21\n+954\t1023\t207\t339\t286\t306\t26\n+674\t972\t195\t257\t173\t45\t21\n+381\t105\t548\t103\t85\t177\t2\n+333\t212\t123\t717\t655\t302\t20\n+600\t1023\t110\t214\t245\t181\t21\n+360\t113\t509\t223\t5\t114\t1\n+600\t1023\t213\t261\t235\t219\t21\n+754\t995\t185\t289\t42\t7\t21\n+427\t157\t86\t174\t569\t270\t6\n+325\t91\t508\t39\t6\t11\t10\n+372\t171\t68\t463\t0\t277\t16\n+402\t215\t527\t646\t191\t44\t14\n+709\t1023\t365\t530\t393\t377\t23\n+291\t126\t76\t0\t114\t159\t5\n+568\t673\t187\t320\t185\t230\t22\n+323\t79\t458\t0\t15\t170\t2\n+406\t161\t536\t605\t0\t212\t14\n+420\t127\t519\t0\t23\t90\t10\n+605\t1023\t237\t166\t258\t187\t21\n+382\t124\t511\t134\t37\t95\t1\n+702\t511\t377\t256\t160\t267\t22\n+596\t1023\t160\t192\t250\t182\t21\n+431\t211\t111\t495\t658\t274\t20\n+703\t1023\t135\t316\t128\t103\t21\n+357\t123\t529\t62\t149\t21\t10\n+772\t1023\t223\t266\t188\t226\t25\n+567\t1023\t130\t251\t253\t104\t21\n+356\t95\t489\t126\t0\t128\t1\n+390\t129\t568\t75\t124\t90\t10\n+691\t1023\t229\t340\t209\t256\t25\n+311\t116\t0\t145\t24\t185\t5\n+381\t130\t101\t619\t649\t367\t20\n+376\t116\t549\t163\t27\t33\t1\n+705\t329\t430\t149\t119\t0\t24\n+670\t1023\t122\t269\t228\t199\t21\n+711\t962\t148\t235\t274\t256\t25\n+641\t1023\t160\t259\t194\t181\t21\n+556\t1023\t135\t247\t279\t164\t21\n+571\t1023\t179\t245\t160\t215\t21\n+392\t100\t515\t65\t0\t45\t10\n+340\t105\t499\t69\t0\t82\t10\n+636\t967\t185\t158\t282\t74\t21\n+373\t132\t500\t217\t34\t48\t1\n+929\t1023\t431\t319\t260\t282\t26\n+345\t120\t507\t0\t0\t124\t10\n+293\t106\t505\t133\t104\t63\t1\n+359\t96\t529\t222\t127\t150\t18\n+381\t176\t551\t222\t0\t156\t18\n+263\t191\t440\t451\t47\t140\t14\n+1013\t1023\t450\t456\t401\t351\t26\n+441\t331\t131\t99\t79\t131\t12\n+317\t129\t514\t0\t143\t39\t10\n+373\t94\t517\t0\t168\t59\t10\n+602\t1023\t100\t189\t188\t93\t21\n+356\t120\t491\t546\t0\t123\t14\n+375\t118\t554\t71\t159\t109\t10\n+387\t95\t494\t196\t152\t0\t1\n+326\t68\t54\t201\t582\t256\t6\n+717\t1023\t230\t275\t270\t195\t25\n+306\t80\t455\t370\t0\t42\t1\n+411\t282\t149\t127\t82\t213\t12\n+405\t122\t116\t436\t653\t360\t7\n+633\t906\t180\t248\t271\t263\t21\n+364\t104\t541\t0\t213\t168\t2\n+313\t133\t48\t167\t117\t61\t5\n+294\t58\t478\t120\t17\t35\t1\n+313\t78\t459\t247\t0\t59\t1\n+389\t148\t563\t146\t154\t85\t1\n+305\t145\t57\t91\t92\t6\t5\n+637\t1023\t154\t242\t291\t226\t21\n+655\t1023\t194\t238\t261\t257\t25\n+632\t1023\t205\t268\t268\t234\t25\n+391\t187\t542\t31\t107\t245\t2\n+305\t122\t38\t0\t130\t112\t5\n+358\t250\t85\t130\t157\t15\t12\n+446\t134\t559\t255\t37\t13\t1\n+386\t138\t531\t74\t133\t167\t2\n+367\t106\t535\t4\t47\t49\t10\n+391\t84\t521\t217\t143\t76\t1\n+357\t110\t515\t171\t93\t38\t1\n+374\t122\t552\t0\t23\t93\t10\n+360\t124\t501\t469\t0\t129\t14\n+533\t1023\t349\t446\t357\t406\t23\n+332\t74\t105\t328\t559\t232\t7\n+466\t232\t146\t351\t263\t85\t12\n+405\t87\t517\t538\t0\t183\t14\n+597\t1023\t143\t242\t241\t208\t21\n+333\t111\t523\t123\t0\t0\t1\n+788\t1023\t202\t311\t298\t227\t25\n+599\t995\t128\t266\t260\t178\t21\n+377\t123\t62\t574\t629\t198\t20\n+719\t1023\t183\t260\t267\t153\t25\n+680\t1023\t159\t287\t251\t255\t25\n+379\t97\t535\t51\t0\t84\t10\n+383\t225\t63\t307\t0\t405\t4\n+597\t987\t222\t220\t201\t244\t21\n+360\t82\t14\t376\t23\t1\t16\n+592\t1023\t104\t276\t212\t164\t21\n+651\t368\t378\t283\t21\t91\t24\n+304\t132\t73\t138\t67\t52\t5\n+380\t160\t543\t273\t0\t68\t1\n+305\t143\t0\t52\t45\t162\t5\n+405\t132\t552\t417\t22\t142\t14\n+366\t99\t509\t0\t102\t183\t2\n+704\t1023\t122\t250\t310\t204\t25\n+713\t1023\t169\t282\t280\t140\t25\n+380\t198\t97\t647\t662\t234\t20\n+577\t273\t318\t268\t329\t260\t22\n+372\t80\t490\t584\t0\t0\t14\n+801\t980\t156\t331\t228\t182\t25\n+402\t153\t38\t594\t656\t289\t20\n+317\t82\t32\t131\t323\t45\t5\n+630\t1023\t101\t188\t157\t153\t21\n+670\t1023\t185\t162\t250\t249\t25\n+338\t108\t536\t0\t0\t119\t10\n+964\t1023\t262\t348\t358\t269\t26\n+639\t823\t129\t263\t178\t177\t21\n+362\t145\t24\t123\t310\t158\t12\n+360\t223\t65\t352\t600\t403\t7\n+1014\t1023\t410\t349\t265\t286\t26\n+656\t1023\t149\t307\t240\t175\t25\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/run1/input3.flowtext.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/run1/input3.flowtext.flowclr Wed Jul 29 13:32:17 2020 -0400
b
b'@@ -0,0 +1,20001 @@\n+FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n+449\t157\t551\t129\t169\t292\t18\n+894\t1023\t199\t277\t320\t227\t25\n+262\t73\t437\t69\t0\t146\t10\n+340\t115\t509\t268\t0\t74\t1\n+316\t76\t50\t0\t60\t129\t5\n+394\t144\t83\t138\t335\t194\t12\n+383\t139\t499\t0\t0\t224\t2\n+800\t1023\t239\t284\t288\t280\t25\n+388\t97\t534\t111\t83\t177\t2\n+481\t117\t566\t247\t157\t99\t1\n+652\t997\t118\t236\t250\t300\t25\n+333\t100\t526\t82\t21\t34\t10\n+636\t1023\t162\t290\t242\t261\t25\n+283\t137\t0\t32\t137\t151\t5\n+389\t105\t538\t36\t0\t130\t10\n+684\t1023\t111\t180\t205\t186\t21\n+688\t1023\t156\t255\t233\t77\t21\n+431\t83\t64\t114\t586\t144\t6\n+788\t1023\t167\t258\t158\t241\t25\n+687\t1023\t94\t234\t218\t133\t21\n+676\t1023\t149\t287\t215\t102\t21\n+869\t1023\t223\t285\t277\t388\t26\n+986\t1023\t267\t290\t261\t224\t26\n+603\t1018\t193\t272\t255\t135\t21\n+404\t168\t532\t113\t0\t0\t1\n+661\t501\t418\t184\t256\t248\t22\n+381\t169\t508\t0\t125\t204\t2\n+686\t860\t49\t190\t225\t97\t21\n+402\t202\t117\t90\t693\t316\t6\n+418\t89\t566\t19\t0\t306\t2\n+303\t119\t35\t155\t87\t108\t5\n+402\t184\t70\t111\t627\t309\t6\n+304\t107\t0\t118\t86\t257\t5\n+360\t124\t26\t10\t615\t209\t6\n+372\t118\t558\t125\t0\t120\t1\n+659\t1023\t341\t246\t228\t256\t25\n+720\t1023\t180\t178\t212\t229\t25\n+712\t1002\t228\t163\t282\t195\t25\n+321\t90\t472\t35\t151\t178\t2\n+376\t154\t54\t61\t587\t264\t6\n+744\t1023\t229\t271\t226\t216\t25\n+329\t149\t82\t173\t629\t269\t6\n+447\t153\t524\t161\t138\t197\t18\n+364\t294\t248\t335\t0\t222\t16\n+645\t1023\t177\t179\t282\t254\t25\n+1023\t1023\t456\t557\t482\t445\t19\n+440\t297\t403\t122\t82\t135\t15\n+432\t115\t572\t165\t78\t225\t18\n+366\t112\t299\t0\t23\t98\t15\n+673\t1023\t230\t330\t294\t261\t25\n+707\t1023\t222\t246\t206\t242\t25\n+628\t1023\t161\t288\t241\t234\t25\n+601\t1023\t126\t296\t278\t191\t21\n+347\t157\t531\t0\t42\t49\t10\n+262\t65\t210\t36\t0\t176\t15\n+349\t101\t481\t139\t96\t211\t18\n+596\t1023\t193\t252\t233\t288\t21\n+375\t112\t546\t184\t59\t88\t1\n+436\t141\t123\t229\t611\t218\t7\n+389\t131\t576\t0\t0\t144\t2\n+353\t97\t477\t204\t0\t221\t18\n+400\t149\t91\t143\t639\t310\t7\n+742\t1023\t225\t277\t114\t241\t25\n+747\t1023\t132\t254\t227\t176\t25\n+350\t122\t489\t194\t0\t99\t1\n+407\t131\t535\t209\t0\t57\t1\n+269\t92\t0\t0\t5\t128\t5\n+355\t142\t540\t103\t115\t84\t10\n+387\t123\t529\t116\t115\t0\t1\n+358\t86\t523\t18\t32\t101\t10\n+388\t132\t105\t99\t653\t329\t6\n+305\t165\t509\t126\t0\t63\t1\n+454\t168\t113\t124\t629\t251\t6\n+400\t121\t176\t0\t581\t240\t6\n+405\t230\t115\t233\t632\t289\t7\n+596\t942\t74\t236\t280\t279\t21\n+380\t211\t72\t236\t670\t255\t7\n+392\t127\t546\t204\t47\t105\t1\n+519\t409\t169\t117\t136\t417\t4\n+767\t1023\t196\t278\t269\t192\t25\n+367\t121\t528\t95\t0\t117\t10\n+378\t175\t507\t201\t0\t227\t18\n+664\t668\t359\t287\t268\t166\t22\n+435\t161\t543\t185\t67\t197\t18\n+358\t233\t0\t136\t148\t331\t4\n+633\t977\t95\t250\t175\t187\t21\n+373\t128\t564\t0\t35\t119\t10\n+386\t123\t547\t0\t65\t181\t2\n+319\t110\t497\t77\t101\t0\t10\n+401\t86\t503\t126\t184\t138\t18\n+364\t136\t0\t161\t15\t0\t5\n+741\t1023\t188\t221\t270\t230\t25\n+677\t510\t416\t268\t195\t188\t22\n+311\t212\t17\t22\t91\t146\t5\n+642\t1023\t152\t268\t221\t196\t21\n+739\t395\t291\t219\t174\t75\t24\n+760\t1023\t175\t247\t284\t198\t25\n+410\t168\t528\t125\t0\t211\t18\n+338\t158\t71\t69\t1\t155\t5\n+401\t137\t34\t223\t641\t291\t7\n+780\t853\t198\t256\t230\t270\t25\n+389\t185\t160\t28\t664\t319\t6\n+369\t130\t567\t21\t0\t38\t10\n+359\t119\t60\t55\t660\t217\t6\n+349\t97\t522\t0\t21\t0\t10\n+553\t762\t136\t193\t137\t198\t21\n+476\t91\t554\t0\t0\t102\t10\n+372\t77\t506\t0\t89\t0\t10\n+628\t1023\t202\t285\t305\t61\t21\n+493\t351\t403\t242\t150\t196\t24\n+393\t181\t128\t0\t148\t83\t5\n+400\t143\t554\t109\t89\t115\t1\n+387\t91\t544\t199\t141\t45\t1\n+564\t924\t104\t220\t170\t249\t21\n+673\t237\t124\t79\t648\t268\t7\n+363\t203\t84\t213\t79\t224\t12\n+353\t83\t517\t168\t70\t133\t1\n+378\t157\t577\t0\t68\t205\t2\n+338\t139\t25\t41\t38\t92\t5\n+330\t70\t0\t55\t597\t165\t6\n+558\t280\t421\t143\t113\t226\t24\n+447\t288\t156\t211\t5\t33\t12\n+341\t112\t457\t22\t0\t116\t10\n+757\t1023\t205\t268\t291\t189\t25\n+375\t112\t541\t20\t14\t0\t10\n+657\t1023\t141\t206\t196\t125\t21\n+356\t114\t550\t0\t0\t101\t10\n+700\t1023\t196\t256\t272\t64\t25\n+629\t1023\t189\t174\t253\t149\t21\n+360\t141\t554\t0\t32\t52\t10\n+362\t108\t543\t219\t158\t128\t1\n+337\t112\t511\t107\t65\t178\t2\n+398\t277\t67\t116\t277\t95\t12\n+767\t1023\t157\t205\t212\t95\t25\n+609\t1023\t348\t474\t390\t429\t23\n+369\t96\t532\t255\t0\t212\t18\n+386\t174\t46\t65\t619\t231\t6\n+336\t115\t492\t87\t0\t105\t10\n+469\t164\t580\t94\t50\t12\t10\n+396\t108\t535\t84\t4\t82\t10\n+452\t159\t534\t176\t169\t176\t18\n+410\t129\t537\t107\t0\t67\t1\n+304\t141\t31\t0\t112\t176\t5\n+863\t1023\t242\t349\t309\t330\t26\n+391\t226\t83\t224\t576\t232\t7\n+701\t1023\t77\t158\t258\t111\t21\n+674\t1023\t151\t247\t256\t238\t25\n+309\t70\t73\t137\t287\t110\t5\n+352\t154\t0\t23\t602\t271\t6\n+352\t152\t130\t0\t29\t161\t5\n+542\t1011\t70\t2'..b'653\t800\t119\t209\t182\t110\t21\n+358\t182\t80\t44\t667\t310\t6\n+512\t1023\t125\t168\t262\t201\t21\n+466\t240\t133\t157\t196\t5\t12\n+302\t139\t471\t0\t7\t19\t10\n+361\t114\t533\t0\t0\t275\t2\n+1023\t1023\t263\t311\t246\t309\t26\n+334\t118\t371\t156\t0\t44\t15\n+820\t1023\t294\t313\t318\t305\t26\n+407\t150\t547\t133\t138\t210\t18\n+271\t65\t486\t0\t48\t0\t10\n+364\t121\t541\t49\t94\t229\t2\n+654\t1023\t151\t256\t251\t230\t25\n+366\t143\t555\t195\t0\t15\t1\n+512\t571\t107\t220\t20\t192\t16\n+556\t265\t448\t81\t172\t103\t24\n+424\t228\t43\t132\t616\t310\t7\n+753\t1023\t224\t268\t192\t116\t25\n+360\t96\t533\t15\t109\t138\t2\n+426\t207\t276\t99\t578\t328\t3\n+432\t207\t142\t0\t408\t0\t12\n+640\t580\t445\t287\t171\t207\t22\n+658\t1023\t201\t282\t277\t300\t25\n+666\t1023\t92\t257\t172\t234\t21\n+354\t216\t87\t176\t336\t106\t12\n+356\t176\t42\t0\t170\t134\t5\n+689\t1023\t186\t217\t283\t198\t25\n+346\t115\t516\t155\t0\t132\t1\n+387\t128\t579\t203\t51\t141\t18\n+665\t1023\t122\t229\t165\t78\t21\n+400\t168\t0\t160\t600\t249\t6\n+357\t95\t517\t0\t87\t186\t2\n+373\t158\t534\t228\t53\t103\t1\n+372\t103\t525\t238\t7\t175\t18\n+298\t86\t428\t55\t0\t174\t2\n+348\t131\t546\t6\t0\t55\t10\n+368\t135\t549\t144\t0\t12\t1\n+589\t1023\t333\t446\t322\t395\t23\n+337\t117\t81\t149\t643\t348\t6\n+372\t258\t139\t113\t174\t374\t4\n+827\t1023\t128\t271\t263\t132\t25\n+693\t1023\t179\t292\t201\t287\t25\n+732\t946\t187\t253\t264\t121\t25\n+370\t268\t125\t182\t104\t97\t12\n+554\t761\t111\t293\t224\t233\t21\n+411\t188\t525\t185\t124\t208\t18\n+356\t165\t123\t85\t672\t282\t6\n+353\t92\t508\t124\t141\t66\t1\n+684\t902\t144\t248\t244\t173\t21\n+402\t185\t135\t497\t774\t472\t20\n+380\t144\t527\t156\t62\t31\t1\n+765\t1023\t202\t261\t254\t258\t25\n+1023\t1023\t500\t508\t445\t550\t19\n+1023\t1023\t538\t456\t358\t450\t19\n+652\t921\t131\t204\t107\t223\t21\n+480\t181\t541\t223\t133\t294\t18\n+651\t1023\t174\t340\t182\t19\t21\n+619\t1023\t133\t263\t239\t231\t21\n+374\t93\t520\t0\t0\t138\t10\n+547\t760\t70\t0\t162\t224\t21\n+427\t278\t113\t238\t385\t170\t12\n+753\t1023\t156\t296\t263\t300\t25\n+640\t942\t122\t265\t237\t242\t21\n+348\t94\t507\t300\t109\t22\t1\n+599\t1023\t135\t321\t261\t212\t21\n+591\t948\t188\t176\t247\t130\t21\n+386\t92\t515\t201\t32\t79\t1\n+423\t156\t562\t8\t120\t144\t2\n+581\t1023\t146\t214\t153\t145\t21\n+779\t1023\t208\t308\t295\t319\t25\n+1022\t174\t372\t274\t253\t397\t22\n+395\t112\t554\t213\t64\t109\t1\n+398\t283\t104\t418\t52\t211\t16\n+459\t215\t559\t287\t198\t109\t18\n+366\t160\t536\t218\t156\t122\t1\n+380\t197\t123\t74\t638\t287\t6\n+624\t1023\t133\t241\t194\t265\t21\n+400\t163\t518\t139\t69\t225\t18\n+380\t131\t564\t126\t0\t36\t1\n+283\t146\t65\t180\t134\t0\t5\n+379\t112\t173\t0\t646\t223\t6\n+752\t1023\t129\t258\t239\t245\t25\n+409\t206\t179\t149\t641\t290\t7\n+635\t525\t409\t225\t206\t227\t22\n+680\t1023\t234\t196\t249\t165\t25\n+702\t458\t425\t271\t150\t46\t24\n+734\t511\t416\t176\t152\t200\t22\n+409\t171\t20\t29\t574\t212\t6\n+413\t251\t83\t12\t21\t64\t5\n+737\t1023\t180\t287\t284\t283\t25\n+431\t175\t361\t239\t132\t0\t1\n+353\t114\t50\t0\t621\t271\t6\n+408\t141\t559\t0\t132\t196\t2\n+531\t798\t102\t253\t209\t75\t21\n+619\t1023\t205\t294\t235\t212\t25\n+667\t1023\t187\t234\t288\t219\t25\n+392\t247\t261\t675\t198\t451\t9\n+311\t102\t514\t99\t110\t146\t2\n+460\t125\t559\t0\t0\t73\t10\n+400\t99\t564\t212\t139\t96\t1\n+633\t1023\t168\t232\t214\t195\t21\n+404\t166\t556\t177\t58\t46\t1\n+678\t1023\t210\t305\t274\t229\t25\n+364\t174\t98\t36\t615\t267\t6\n+372\t118\t543\t109\t3\t52\t1\n+672\t1023\t188\t292\t133\t249\t25\n+643\t1023\t216\t273\t296\t169\t25\n+445\t134\t552\t0\t143\t94\t10\n+400\t151\t556\t179\t191\t181\t18\n+701\t1023\t226\t239\t247\t291\t25\n+365\t157\t122\t0\t667\t233\t6\n+385\t88\t542\t89\t180\t60\t10\n+358\t87\t482\t10\t0\t55\t10\n+710\t487\t449\t284\t139\t96\t24\n+371\t134\t510\t19\t14\t351\t2\n+264\t69\t463\t0\t0\t80\t10\n+428\t103\t512\t263\t0\t70\t1\n+614\t490\t462\t229\t120\t325\t22\n+466\t219\t513\t117\t0\t174\t18\n+674\t525\t400\t208\t194\t194\t22\n+324\t110\t506\t66\t32\t128\t10\n+394\t115\t28\t0\t557\t193\t6\n+411\t175\t63\t139\t618\t323\t7\n+611\t303\t345\t92\t88\t100\t24\n+450\t239\t160\t99\t195\t210\t12\n+356\t129\t33\t90\t602\t94\t6\n+605\t1006\t213\t204\t220\t220\t21\n+773\t1023\t237\t275\t210\t167\t25\n+429\t142\t570\t272\t0\t141\t18\n+263\t33\t417\t0\t0\t194\t2\n+347\t148\t26\t0\t630\t300\t6\n+364\t121\t528\t182\t70\t194\t18\n+339\t87\t483\t0\t43\t74\t10\n+692\t1009\t147\t285\t115\t156\t21\n+596\t988\t133\t305\t113\t273\t21\n+847\t1023\t244\t216\t316\t101\t25\n+386\t135\t531\t166\t184\t117\t1\n+621\t970\t37\t127\t238\t274\t21\n+298\t99\t482\t88\t0\t130\t10\n+658\t1023\t117\t165\t208\t188\t21\n+326\t172\t76\t12\t149\t77\t5\n+360\t84\t532\t57\t138\t102\t10\n+886\t1023\t229\t361\t290\t234\t26\n+634\t972\t248\t277\t271\t215\t25\n+332\t164\t0\t73\t246\t210\t5\n+447\t121\t548\t0\t0\t393\t2\n+391\t119\t74\t0\t628\t238\t6\n+340\t100\t528\t245\t0\t8\t1\n+385\t99\t179\t115\t513\t163\t6\n+400\t157\t126\t99\t638\t313\t6\n+431\t97\t527\t156\t122\t197\t18\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/run2/input1.flowtext.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/run2/input1.flowtext.flowclr Wed Jul 29 13:32:17 2020 -0400
b
b'@@ -0,0 +1,20001 @@\n+FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n+289\t56\t438\t0\t626\t480\t3\n+352\t153\t30\t147\t483\t386\t7\n+383\t190\t156\t228\t734\t408\t7\n+261\t62\t432\t121\t598\t555\t3\n+451\t120\t537\t338\t568\t201\t13\n+373\t104\t3\t110\t621\t584\t11\n+418\t105\t561\t0\t610\t562\t3\n+358\t185\t0\t292\t641\t327\t7\n+733\t970\t139\t227\t293\t259\t25\n+765\t1023\t71\t239\t233\t253\t25\n+762\t957\t143\t158\t271\t255\t25\n+406\t191\t513\t122\t646\t264\t3\n+695\t1023\t168\t251\t234\t283\t25\n+336\t178\t0\t146\t128\t537\t4\n+668\t1023\t167\t306\t302\t253\t23\n+330\t135\t493\t72\t734\t496\t3\n+618\t1015\t201\t269\t284\t141\t25\n+662\t1023\t204\t241\t273\t149\t25\n+383\t109\t49\t50\t575\t451\t11\n+427\t206\t169\t258\t725\t402\t7\n+369\t152\t216\t569\t738\t684\t8\n+420\t209\t26\t368\t651\t303\t7\n+554\t218\t601\t336\t629\t300\t13\n+425\t229\t89\t416\t616\t373\t7\n+493\t355\t516\t252\t625\t568\t8\n+674\t1023\t211\t243\t259\t310\t23\n+286\t88\t0\t63\t556\t491\t11\n+318\t83\t477\t469\t627\t546\t8\n+297\t65\t489\t324\t618\t518\t8\n+358\t101\t496\t0\t646\t543\t3\n+429\t168\t515\t462\t675\t321\t13\n+364\t105\t504\t298\t602\t460\t8\n+319\t469\t415\t202\t571\t405\t8\n+532\t1023\t390\t528\t406\t507\t23\n+561\t287\t396\t72\t381\t279\t22\n+422\t150\t522\t351\t626\t353\t13\n+448\t149\t529\t288\t612\t270\t13\n+361\t143\t0\t132\t656\t362\t7\n+377\t96\t504\t163\t603\t524\t8\n+837\t1023\t211\t231\t316\t280\t26\n+702\t907\t176\t206\t271\t236\t25\n+367\t130\t570\t0\t661\t568\t3\n+302\t95\t508\t205\t643\t494\t8\n+403\t216\t159\t361\t158\t554\t9\n+427\t215\t188\t0\t711\t381\t6\n+743\t1023\t217\t316\t306\t278\t26\n+746\t339\t238\t433\t692\t433\t7\n+409\t104\t545\t278\t631\t480\t8\n+345\t67\t499\t581\t682\t524\t13\n+292\t171\t69\t115\t70\t463\t4\n+314\t152\t84\t0\t0\t514\t4\n+824\t1023\t220\t273\t315\t179\t26\n+554\t1023\t143\t255\t219\t283\t23\n+700\t998\t193\t261\t294\t148\t25\n+732\t1023\t204\t314\t322\t279\t23\n+360\t84\t467\t425\t577\t278\t13\n+425\t136\t558\t193\t622\t586\t8\n+301\t135\t49\t66\t574\t499\t11\n+356\t146\t511\t110\t635\t287\t3\n+390\t119\t528\t386\t580\t251\t13\n+654\t931\t169\t259\t334\t220\t25\n+385\t255\t102\t211\t671\t449\t7\n+589\t1023\t187\t203\t270\t189\t25\n+678\t1023\t0\t251\t177\t250\t25\n+410\t123\t528\t305\t710\t429\t8\n+362\t90\t514\t292\t642\t531\t8\n+543\t934\t127\t153\t283\t199\t21\n+739\t587\t416\t244\t300\t158\t24\n+406\t98\t497\t428\t621\t364\t13\n+895\t1023\t201\t307\t281\t279\t26\n+330\t123\t7\t230\t577\t247\t7\n+384\t158\t83\t62\t614\t300\t6\n+685\t1023\t197\t257\t209\t278\t25\n+395\t163\t531\t0\t618\t434\t3\n+350\t128\t483\t352\t642\t514\t8\n+339\t119\t124\t127\t546\t556\t11\n+357\t107\t516\t66\t679\t560\t3\n+1023\t1023\t420\t305\t336\t355\t19\n+620\t894\t88\t189\t210\t272\t21\n+618\t970\t394\t238\t179\t201\t23\n+678\t954\t143\t286\t280\t114\t25\n+544\t766\t122\t184\t279\t236\t21\n+416\t138\t120\t358\t578\t228\t20\n+425\t100\t167\t229\t582\t600\t11\n+333\t95\t516\t229\t591\t443\t8\n+396\t147\t554\t263\t608\t280\t13\n+331\t140\t27\t51\t39\t552\t4\n+689\t1023\t204\t267\t316\t276\t23\n+564\t810\t151\t89\t250\t253\t21\n+282\t70\t494\t158\t497\t546\t8\n+378\t127\t550\t189\t629\t555\t8\n+396\t182\t181\t323\t541\t509\t7\n+627\t1011\t239\t262\t314\t225\t23\n+319\t139\t45\t78\t131\t480\t4\n+324\t123\t17\t73\t637\t603\t11\n+398\t95\t555\t173\t643\t518\t8\n+445\t1023\t426\t492\t402\t540\t23\n+671\t1023\t113\t249\t281\t283\t25\n+384\t223\t0\t200\t621\t273\t7\n+780\t1023\t237\t227\t287\t64\t25\n+408\t141\t72\t272\t645\t621\t11\n+672\t1023\t164\t214\t258\t273\t25\n+626\t932\t66\t256\t207\t301\t25\n+398\t111\t118\t165\t589\t531\t11\n+687\t927\t137\t266\t263\t141\t25\n+342\t139\t82\t122\t305\t595\t4\n+736\t393\t454\t252\t235\t324\t22\n+311\t102\t491\t118\t632\t474\t3\n+318\t110\t503\t46\t643\t523\t3\n+623\t1023\t159\t266\t253\t197\t25\n+416\t106\t547\t347\t668\t489\t8\n+350\t91\t93\t199\t590\t577\t11\n+403\t158\t186\t222\t604\t540\t11\n+362\t202\t128\t187\t597\t241\t7\n+628\t886\t205\t244\t172\t201\t25\n+656\t1023\t231\t241\t251\t104\t25\n+731\t981\t141\t207\t273\t165\t25\n+340\t224\t49\t449\t548\t782\t11\n+699\t1023\t259\t233\t266\t220\t25\n+392\t148\t43\t35\t595\t575\t11\n+942\t1023\t199\t308\t335\t193\t26\n+312\t164\t35\t103\t0\t461\t4\n+822\t1023\t202\t311\t252\t308\t26\n+683\t457\t339\t241\t182\t180\t24\n+683\t1023\t180\t263\t277\t261\t23\n+397\t174\t25\t20\t654\t616\t11\n+324\t77\t487\t0\t623\t518\t3\n+371\t146\t511\t36\t648\t414\t3\n+399\t162\t144\t64\t622\t589\t11\n+682\t1023\t157\t221\t257\t233\t25\n+590\t922\t199\t196\t271\t146\t21\n+393\t105\t506\t253\t497\t251\t13\n+633\t1023\t41\t145\t256\t162\t25\n+550\t232\t350\t249\t197\t556\t9\n+355\t99\t523\t31\t646\t507\t3\n+434\t202\t88\t311\t725\t360\t7\n+696\t1023\t222\t263\t293\t283\t23\n+725\t345\t375\t211\t267\t260\t22\n+678\t1023\t163\t273\t259\t286\t23\n+559\t831\t132\t272\t323\t237\t21\n+298\t110\t506\t382\t669\t443\t8\n+334\t117\t542\t4\t628\t525\t3\n+681\t1023\t206\t236\t252\t223\t25\n+638\t1023\t167\t225\t290\t234\t25\n+297\t101\t0\t33\t579\t305\t6\n+359\t12'..b'2\t232\t22\n+363\t83\t464\t526\t458\t398\t13\n+404\t143\t538\t282\t581\t229\t13\n+535\t1023\t133\t259\t238\t118\t25\n+454\t1023\t240\t324\t338\t257\t23\n+430\t212\t534\t498\t646\t266\t13\n+290\t78\t445\t508\t645\t476\t13\n+431\t165\t549\t489\t659\t263\t13\n+350\t110\t536\t136\t638\t609\t8\n+434\t169\t89\t212\t630\t664\t11\n+681\t282\t338\t196\t221\t147\t24\n+466\t779\t167\t101\t125\t188\t21\n+330\t176\t81\t67\t47\t499\t4\n+409\t138\t550\t347\t649\t324\t13\n+595\t962\t186\t253\t220\t172\t25\n+704\t986\t218\t244\t283\t207\t25\n+382\t119\t539\t354\t615\t558\t8\n+406\t181\t541\t566\t661\t196\t13\n+654\t1023\t171\t304\t320\t271\t23\n+367\t174\t75\t300\t598\t294\t7\n+383\t119\t536\t205\t660\t582\t8\n+329\t92\t510\t240\t652\t574\t8\n+473\t217\t161\t90\t0\t601\t4\n+556\t278\t479\t118\t264\t627\t2\n+655\t1023\t211\t250\t296\t291\t23\n+361\t120\t96\t24\t600\t557\t11\n+468\t1023\t366\t419\t409\t500\t23\n+303\t89\t91\t90\t602\t563\t11\n+315\t169\t39\t0\t0\t476\t4\n+315\t99\t521\t140\t650\t499\t3\n+419\t126\t81\t186\t624\t677\t11\n+748\t1023\t177\t287\t236\t140\t25\n+342\t100\t49\t52\t569\t507\t11\n+730\t1023\t217\t327\t278\t308\t23\n+389\t197\t76\t26\t626\t337\t6\n+593\t900\t215\t209\t285\t248\t21\n+685\t1023\t137\t278\t318\t109\t25\n+454\t149\t550\t469\t585\t294\t13\n+380\t235\t117\t220\t651\t327\t7\n+358\t53\t476\t302\t674\t485\t8\n+603\t1023\t404\t506\t414\t494\t23\n+315\t56\t511\t0\t629\t522\t3\n+719\t1023\t166\t268\t277\t308\t23\n+405\t140\t66\t184\t617\t286\t7\n+645\t1023\t119\t169\t236\t256\t25\n+626\t1023\t136\t283\t180\t248\t25\n+836\t1023\t180\t305\t203\t193\t26\n+656\t1023\t249\t310\t291\t353\t23\n+726\t372\t175\t299\t674\t367\t7\n+684\t1023\t147\t276\t200\t282\t25\n+638\t927\t130\t216\t243\t256\t25\n+354\t133\t523\t120\t694\t565\t3\n+374\t125\t527\t241\t650\t497\t8\n+718\t1023\t189\t235\t278\t259\t25\n+735\t1023\t188\t199\t287\t253\t26\n+381\t156\t87\t57\t646\t606\t11\n+406\t151\t547\t332\t645\t536\t8\n+402\t241\t118\t203\t139\t593\t9\n+405\t106\t539\t202\t624\t504\t8\n+419\t118\t527\t555\t685\t349\t13\n+618\t548\t436\t238\t196\t289\t22\n+281\t107\t19\t211\t54\t460\t4\n+425\t130\t540\t219\t612\t495\t8\n+387\t153\t106\t35\t563\t649\t11\n+398\t87\t505\t241\t611\t528\t8\n+720\t1023\t194\t262\t184\t298\t26\n+699\t880\t166\t238\t248\t235\t25\n+409\t149\t32\t216\t612\t638\t11\n+395\t145\t84\t344\t632\t361\t7\n+394\t109\t473\t219\t659\t355\t8\n+595\t1023\t210\t133\t164\t104\t21\n+387\t139\t77\t0\t632\t583\t11\n+393\t163\t513\t285\t574\t308\t13\n+382\t108\t540\t89\t643\t555\t3\n+565\t932\t176\t209\t268\t76\t21\n+349\t79\t492\t0\t618\t410\t3\n+653\t1023\t187\t202\t250\t282\t25\n+364\t147\t497\t278\t490\t558\t8\n+563\t219\t498\t343\t638\t582\t8\n+787\t1023\t259\t195\t292\t350\t26\n+566\t634\t173\t253\t273\t248\t22\n+403\t107\t529\t457\t623\t371\t13\n+784\t1023\t198\t300\t313\t295\t26\n+983\t1023\t245\t338\t372\t318\t26\n+348\t104\t503\t49\t483\t454\t3\n+448\t222\t130\t278\t732\t443\t7\n+1023\t1023\t519\t526\t592\t406\t19\n+354\t93\t535\t217\t703\t509\t8\n+464\t210\t557\t538\t615\t268\t13\n+395\t103\t108\t87\t583\t593\t11\n+402\t193\t86\t364\t70\t498\t9\n+366\t106\t184\t4\t631\t601\t11\n+360\t110\t500\t86\t513\t554\t3\n+334\t64\t501\t0\t632\t473\t3\n+411\t190\t15\t299\t623\t412\t7\n+737\t986\t151\t234\t159\t210\t25\n+330\t82\t505\t440\t536\t238\t13\n+416\t161\t549\t436\t648\t303\t13\n+401\t187\t534\t295\t579\t192\t13\n+871\t1023\t538\t465\t679\t269\t19\n+324\t103\t475\t559\t584\t511\t13\n+331\t148\t74\t95\t0\t530\t4\n+665\t1023\t198\t178\t276\t283\t23\n+401\t143\t60\t99\t539\t562\t11\n+390\t133\t497\t616\t590\t240\t13\n+708\t975\t175\t270\t257\t96\t25\n+374\t100\t501\t47\t607\t504\t3\n+357\t91\t470\t128\t618\t604\t3\n+484\t527\t183\t214\t256\t285\t12\n+686\t1023\t153\t263\t335\t176\t25\n+409\t146\t542\t0\t669\t444\t3\n+370\t172\t107\t81\t578\t319\t6\n+611\t1023\t200\t306\t269\t298\t23\n+653\t1023\t123\t236\t265\t241\t25\n+333\t87\t480\t509\t681\t462\t13\n+614\t816\t125\t165\t184\t117\t21\n+333\t96\t503\t460\t584\t221\t13\n+362\t183\t113\t270\t604\t227\t7\n+776\t564\t356\t271\t270\t223\t24\n+637\t1023\t185\t299\t259\t296\t23\n+795\t1023\t243\t269\t311\t247\t26\n+415\t107\t481\t403\t545\t288\t13\n+721\t950\t157\t204\t276\t259\t25\n+464\t310\t113\t193\t615\t265\t7\n+668\t400\t415\t202\t230\t229\t22\n+407\t109\t554\t22\t691\t466\t3\n+704\t1023\t297\t277\t294\t121\t25\n+603\t1020\t209\t222\t290\t220\t25\n+577\t1017\t174\t235\t224\t145\t25\n+822\t1023\t155\t171\t274\t185\t26\n+332\t97\t503\t229\t665\t522\t8\n+693\t1023\t166\t259\t307\t211\t25\n+394\t111\t545\t290\t710\t510\t8\n+457\t226\t0\t106\t131\t573\t4\n+554\t1023\t137\t0\t262\t145\t21\n+330\t116\t507\t1\t647\t558\t3\n+619\t983\t105\t151\t199\t257\t21\n+442\t129\t531\t413\t591\t214\t13\n+384\t160\t541\t267\t661\t527\t8\n+687\t1023\t197\t250\t221\t195\t25\n+438\t100\t97\t169\t636\t461\t11\n+383\t168\t105\t183\t620\t581\t11\n+312\t71\t482\t164\t639\t427\t8\n+541\t1023\t166\t207\t266\t103\t25\n+781\t893\t114\t242\t232\t248\t26\n+341\t185\t13\t228\t117\t561\t4\n+694\t370\t391\t254\t311\t330\t22\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/run2/input2.flowtext.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/run2/input2.flowtext.flowclr Wed Jul 29 13:32:17 2020 -0400
b
b'@@ -0,0 +1,20001 @@\n+FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n+363\t76\t550\t200\t0\t127\t18\n+372\t126\t519\t44\t51\t148\t2\n+1023\t1023\t289\t401\t362\t254\t26\n+770\t1023\t175\t361\t225\t237\t26\n+384\t111\t525\t121\t0\t138\t18\n+602\t578\t385\t286\t222\t131\t24\n+788\t1023\t216\t310\t270\t294\t26\n+420\t211\t552\t479\t0\t62\t14\n+668\t1019\t73\t193\t227\t132\t25\n+417\t134\t542\t597\t22\t107\t14\n+755\t1023\t232\t305\t294\t204\t26\n+374\t128\t536\t493\t0\t173\t14\n+332\t71\t495\t0\t60\t34\t10\n+561\t874\t136\t254\t245\t241\t21\n+423\t146\t542\t284\t98\t81\t18\n+261\t74\t477\t0\t5\t72\t10\n+355\t120\t58\t348\t649\t276\t7\n+595\t857\t169\t193\t246\t100\t21\n+749\t662\t434\t318\t216\t247\t22\n+450\t142\t559\t187\t0\t32\t1\n+365\t129\t515\t0\t0\t30\t10\n+370\t181\t76\t357\t74\t314\t9\n+651\t655\t339\t274\t129\t132\t24\n+305\t149\t74\t0\t118\t182\t5\n+375\t85\t285\t137\t0\t0\t15\n+274\t149\t0\t164\t0\t38\t5\n+399\t187\t102\t625\t226\t365\t9\n+602\t1023\t167\t257\t204\t273\t25\n+293\t240\t263\t222\t0\t6\t15\n+671\t929\t112\t215\t182\t170\t25\n+436\t149\t90\t425\t659\t308\t7\n+317\t89\t492\t266\t0\t99\t1\n+363\t146\t6\t527\t194\t64\t16\n+858\t1023\t252\t325\t217\t105\t26\n+266\t152\t91\t173\t44\t12\t5\n+318\t114\t495\t230\t10\t0\t1\n+337\t83\t502\t103\t3\t149\t2\n+619\t977\t159\t241\t274\t5\t25\n+869\t1023\t177\t296\t252\t323\t26\n+734\t388\t470\t143\t93\t238\t22\n+361\t114\t525\t86\t3\t0\t10\n+372\t113\t551\t109\t104\t153\t2\n+333\t239\t363\t529\t121\t263\t17\n+749\t1023\t219\t260\t225\t179\t26\n+353\t194\t77\t352\t663\t182\t7\n+649\t1023\t373\t478\t420\t453\t23\n+416\t118\t535\t291\t91\t38\t1\n+716\t515\t423\t240\t203\t201\t22\n+413\t197\t106\t511\t130\t306\t9\n+370\t110\t517\t252\t66\t141\t18\n+341\t131\t20\t438\t609\t265\t7\n+327\t88\t520\t53\t207\t111\t2\n+340\t75\t520\t0\t0\t33\t10\n+447\t153\t551\t575\t0\t113\t14\n+399\t88\t554\t269\t0\t167\t18\n+380\t96\t484\t557\t138\t173\t14\n+993\t1023\t195\t318\t335\t263\t26\n+375\t147\t554\t168\t0\t72\t1\n+358\t130\t0\t0\t299\t76\t5\n+284\t96\t448\t126\t0\t147\t18\n+744\t1023\t189\t313\t240\t168\t25\n+610\t1023\t158\t232\t231\t234\t25\n+633\t1023\t144\t244\t275\t200\t25\n+477\t584\t84\t403\t131\t161\t16\n+370\t117\t532\t59\t9\t169\t2\n+709\t923\t193\t233\t246\t76\t25\n+342\t152\t533\t92\t66\t161\t2\n+306\t129\t13\t66\t82\t106\t5\n+349\t165\t80\t201\t301\t207\t4\n+650\t1023\t108\t178\t150\t61\t25\n+316\t106\t0\t337\t600\t236\t7\n+535\t435\t368\t226\t10\t83\t24\n+320\t78\t500\t185\t0\t135\t18\n+364\t189\t158\t363\t396\t206\t7\n+367\t134\t552\t0\t129\t208\t2\n+367\t109\t537\t198\t49\t185\t18\n+650\t1023\t113\t289\t213\t258\t25\n+354\t211\t117\t75\t116\t205\t4\n+599\t1023\t131\t186\t252\t181\t25\n+528\t355\t334\t248\t180\t219\t22\n+560\t933\t181\t239\t307\t137\t25\n+262\t88\t3\t189\t0\t165\t5\n+708\t1023\t41\t300\t174\t227\t25\n+532\t862\t158\t113\t259\t179\t21\n+358\t102\t515\t0\t70\t18\t10\n+648\t438\t442\t286\t206\t49\t24\n+410\t141\t518\t323\t182\t3\t1\n+399\t62\t498\t125\t0\t29\t1\n+784\t549\t343\t23\t201\t152\t24\n+342\t169\t102\t195\t24\t146\t5\n+616\t691\t378\t268\t230\t276\t22\n+585\t1009\t164\t124\t223\t236\t21\n+678\t1023\t155\t197\t140\t30\t25\n+378\t113\t76\t464\t624\t173\t7\n+682\t1023\t185\t293\t187\t285\t25\n+402\t143\t568\t262\t0\t68\t1\n+339\t150\t512\t542\t26\t115\t14\n+607\t898\t56\t278\t217\t194\t25\n+333\t93\t524\t129\t0\t103\t1\n+369\t153\t62\t426\t656\t263\t7\n+345\t108\t523\t205\t0\t0\t1\n+615\t747\t199\t285\t260\t263\t23\n+389\t247\t91\t0\t93\t44\t5\n+365\t114\t517\t0\t35\t83\t10\n+362\t83\t547\t236\t39\t87\t1\n+776\t1023\t172\t253\t259\t268\t26\n+368\t120\t539\t198\t20\t84\t1\n+735\t1023\t253\t304\t315\t151\t26\n+350\t138\t54\t284\t652\t243\t7\n+390\t162\t554\t29\t0\t62\t10\n+466\t183\t71\t676\t699\t371\t20\n+370\t120\t244\t117\t85\t19\t15\n+361\t132\t537\t223\t0\t163\t18\n+730\t1023\t187\t307\t303\t208\t26\n+636\t979\t127\t275\t257\t133\t25\n+405\t124\t27\t464\t634\t252\t7\n+329\t109\t108\t315\t546\t216\t7\n+582\t1023\t135\t227\t156\t148\t25\n+348\t120\t501\t39\t74\t201\t2\n+356\t66\t467\t93\t304\t155\t2\n+385\t206\t60\t439\t675\t364\t7\n+351\t116\t520\t549\t43\t71\t14\n+836\t429\t537\t214\t79\t160\t24\n+386\t162\t61\t530\t701\t354\t7\n+413\t180\t119\t476\t670\t272\t7\n+357\t119\t551\t281\t70\t30\t1\n+348\t74\t545\t222\t0\t0\t1\n+414\t154\t0\t354\t606\t178\t7\n+490\t169\t570\t628\t108\t95\t14\n+384\t112\t537\t150\t75\t172\t18\n+754\t1009\t121\t180\t203\t86\t25\n+394\t82\t537\t85\t63\t73\t10\n+942\t1023\t230\t307\t299\t216\t26\n+401\t211\t95\t519\t678\t321\t7\n+686\t1023\t151\t236\t274\t242\t25\n+622\t946\t120\t196\t158\t177\t21\n+615\t1023\t184\t84\t230\t179\t21\n+709\t1019\t181\t275\t148\t236\t25\n+458\t210\t598\t527\t58\t172\t17\n+357\t146\t65\t366\t651\t257\t7\n+621\t1023\t70\t244\t245\t249\t25\n+437\t206\t530\t654\t0\t211\t17\n+974\t1023\t242\t319\t318\t221\t26\n+320\t189\t319\t396\t172\t221\t16\n+323\t72\t482\t186\t0\t156\t18\n+823\t1023\t131\t272\t167\t232\t26\n+660\t1023\t229\t290\t246\t28\t25\n+297\t119\t444\t0\t0\t104\t2\n+393\t117\t82\t503\t658\t196\t20\n+586\t834\t175\t274\t215\t'..b'28\t26\n+365\t150\t530\t172\t0\t37\t1\n+378\t121\t16\t354\t660\t290\t7\n+363\t133\t52\t398\t674\t255\t7\n+775\t1023\t149\t265\t217\t181\t25\n+334\t82\t502\t71\t27\t162\t2\n+383\t173\t75\t397\t676\t243\t7\n+681\t354\t407\t284\t269\t243\t22\n+386\t133\t545\t103\t93\t112\t2\n+416\t110\t532\t173\t148\t63\t1\n+636\t1023\t132\t243\t243\t203\t25\n+405\t152\t96\t299\t656\t301\t7\n+639\t1023\t132\t308\t183\t280\t25\n+629\t946\t125\t256\t211\t47\t25\n+429\t104\t230\t714\t692\t738\t8\n+700\t1023\t211\t292\t271\t252\t23\n+568\t323\t441\t389\t118\t316\t22\n+323\t97\t507\t183\t120\t51\t1\n+671\t1023\t213\t362\t301\t0\t25\n+329\t134\t94\t146\t0\t173\t5\n+388\t125\t19\t433\t591\t254\t7\n+360\t183\t0\t266\t649\t231\t7\n+331\t78\t489\t41\t0\t131\t2\n+634\t897\t167\t226\t210\t252\t25\n+292\t108\t22\t0\t0\t79\t5\n+336\t111\t0\t316\t655\t258\t7\n+434\t141\t489\t167\t162\t185\t18\n+560\t845\t137\t252\t178\t150\t21\n+396\t145\t568\t147\t0\t128\t18\n+645\t936\t138\t185\t223\t222\t21\n+663\t1023\t155\t260\t230\t151\t25\n+954\t1023\t207\t339\t286\t306\t26\n+674\t972\t195\t257\t173\t45\t25\n+381\t105\t548\t103\t85\t177\t2\n+333\t212\t123\t717\t655\t302\t20\n+600\t1023\t110\t214\t245\t181\t25\n+360\t113\t509\t223\t5\t114\t18\n+600\t1023\t213\t261\t235\t219\t25\n+754\t995\t185\t289\t42\t7\t25\n+427\t157\t86\t174\t569\t270\t6\n+325\t91\t508\t39\t6\t11\t10\n+372\t171\t68\t463\t0\t277\t9\n+402\t215\t527\t646\t191\t44\t14\n+709\t1023\t365\t530\t393\t377\t23\n+291\t126\t76\t0\t114\t159\t5\n+568\t673\t187\t320\t185\t230\t22\n+323\t79\t458\t0\t15\t170\t2\n+406\t161\t536\t605\t0\t212\t17\n+420\t127\t519\t0\t23\t90\t10\n+605\t1023\t237\t166\t258\t187\t25\n+382\t124\t511\t134\t37\t95\t1\n+702\t511\t377\t256\t160\t267\t22\n+596\t1023\t160\t192\t250\t182\t25\n+431\t211\t111\t495\t658\t274\t7\n+703\t1023\t135\t316\t128\t103\t25\n+357\t123\t529\t62\t149\t21\t10\n+772\t1023\t223\t266\t188\t226\t26\n+567\t1023\t130\t251\t253\t104\t25\n+356\t95\t489\t126\t0\t128\t18\n+390\t129\t568\t75\t124\t90\t10\n+691\t1023\t229\t340\t209\t256\t23\n+311\t116\t0\t145\t24\t185\t5\n+381\t130\t101\t619\t649\t367\t20\n+376\t116\t549\t163\t27\t33\t1\n+705\t329\t430\t149\t119\t0\t24\n+670\t1023\t122\t269\t228\t199\t25\n+711\t962\t148\t235\t274\t256\t25\n+641\t1023\t160\t259\t194\t181\t25\n+556\t1023\t135\t247\t279\t164\t25\n+571\t1023\t179\t245\t160\t215\t25\n+392\t100\t515\t65\t0\t45\t10\n+340\t105\t499\t69\t0\t82\t10\n+636\t967\t185\t158\t282\t74\t21\n+373\t132\t500\t217\t34\t48\t1\n+929\t1023\t431\t319\t260\t282\t26\n+345\t120\t507\t0\t0\t124\t2\n+293\t106\t505\t133\t104\t63\t1\n+359\t96\t529\t222\t127\t150\t18\n+381\t176\t551\t222\t0\t156\t18\n+263\t191\t440\t451\t47\t140\t14\n+1013\t1023\t450\t456\t401\t351\t19\n+441\t331\t131\t99\t79\t131\t12\n+317\t129\t514\t0\t143\t39\t10\n+373\t94\t517\t0\t168\t59\t10\n+602\t1023\t100\t189\t188\t93\t25\n+356\t120\t491\t546\t0\t123\t14\n+375\t118\t554\t71\t159\t109\t2\n+387\t95\t494\t196\t152\t0\t1\n+326\t68\t54\t201\t582\t256\t6\n+717\t1023\t230\t275\t270\t195\t25\n+306\t80\t455\t370\t0\t42\t1\n+411\t282\t149\t127\t82\t213\t12\n+405\t122\t116\t436\t653\t360\t7\n+633\t906\t180\t248\t271\t263\t23\n+364\t104\t541\t0\t213\t168\t2\n+313\t133\t48\t167\t117\t61\t5\n+294\t58\t478\t120\t17\t35\t1\n+313\t78\t459\t247\t0\t59\t1\n+389\t148\t563\t146\t154\t85\t1\n+305\t145\t57\t91\t92\t6\t5\n+637\t1023\t154\t242\t291\t226\t25\n+655\t1023\t194\t238\t261\t257\t25\n+632\t1023\t205\t268\t268\t234\t25\n+391\t187\t542\t31\t107\t245\t2\n+305\t122\t38\t0\t130\t112\t5\n+358\t250\t85\t130\t157\t15\t12\n+446\t134\t559\t255\t37\t13\t1\n+386\t138\t531\t74\t133\t167\t2\n+367\t106\t535\t4\t47\t49\t10\n+391\t84\t521\t217\t143\t76\t1\n+357\t110\t515\t171\t93\t38\t1\n+374\t122\t552\t0\t23\t93\t10\n+360\t124\t501\t469\t0\t129\t14\n+533\t1023\t349\t446\t357\t406\t23\n+332\t74\t105\t328\t559\t232\t7\n+466\t232\t146\t351\t263\t85\t16\n+405\t87\t517\t538\t0\t183\t14\n+597\t1023\t143\t242\t241\t208\t25\n+333\t111\t523\t123\t0\t0\t1\n+788\t1023\t202\t311\t298\t227\t26\n+599\t995\t128\t266\t260\t178\t25\n+377\t123\t62\t574\t629\t198\t20\n+719\t1023\t183\t260\t267\t153\t25\n+680\t1023\t159\t287\t251\t255\t25\n+379\t97\t535\t51\t0\t84\t10\n+383\t225\t63\t307\t0\t405\t9\n+597\t987\t222\t220\t201\t244\t25\n+360\t82\t14\t376\t23\t1\t16\n+592\t1023\t104\t276\t212\t164\t25\n+651\t368\t378\t283\t21\t91\t24\n+304\t132\t73\t138\t67\t52\t5\n+380\t160\t543\t273\t0\t68\t1\n+305\t143\t0\t52\t45\t162\t5\n+405\t132\t552\t417\t22\t142\t14\n+366\t99\t509\t0\t102\t183\t2\n+704\t1023\t122\t250\t310\t204\t25\n+713\t1023\t169\t282\t280\t140\t25\n+380\t198\t97\t647\t662\t234\t20\n+577\t273\t318\t268\t329\t260\t22\n+372\t80\t490\t584\t0\t0\t14\n+801\t980\t156\t331\t228\t182\t26\n+402\t153\t38\t594\t656\t289\t20\n+317\t82\t32\t131\t323\t45\t6\n+630\t1023\t101\t188\t157\t153\t25\n+670\t1023\t185\t162\t250\t249\t25\n+338\t108\t536\t0\t0\t119\t2\n+964\t1023\t262\t348\t358\t269\t26\n+639\t823\t129\t263\t178\t177\t25\n+362\t145\t24\t123\t310\t158\t6\n+360\t223\t65\t352\t600\t403\t7\n+1014\t1023\t410\t349\t265\t286\t26\n+656\t1023\t149\t307\t240\t175\t25\n'
b
diff -r 5f670146a9af -r e80b0f62ffb3 test-data/run2/input3.flowtext.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/run2/input3.flowtext.flowclr Wed Jul 29 13:32:17 2020 -0400
b
b'@@ -0,0 +1,20001 @@\n+FSC\tSSC\tCD4\tCCR7\tCD8\tCCR3\tPopulation\n+449\t157\t551\t129\t169\t292\t18\n+894\t1023\t199\t277\t320\t227\t26\n+262\t73\t437\t69\t0\t146\t2\n+340\t115\t509\t268\t0\t74\t1\n+316\t76\t50\t0\t60\t129\t5\n+394\t144\t83\t138\t335\t194\t12\n+383\t139\t499\t0\t0\t224\t2\n+800\t1023\t239\t284\t288\t280\t26\n+388\t97\t534\t111\t83\t177\t18\n+481\t117\t566\t247\t157\t99\t18\n+652\t997\t118\t236\t250\t300\t25\n+333\t100\t526\t82\t21\t34\t10\n+636\t1023\t162\t290\t242\t261\t23\n+283\t137\t0\t32\t137\t151\t5\n+389\t105\t538\t36\t0\t130\t2\n+684\t1023\t111\t180\t205\t186\t25\n+688\t1023\t156\t255\t233\t77\t25\n+431\t83\t64\t114\t586\t144\t6\n+788\t1023\t167\t258\t158\t241\t26\n+687\t1023\t94\t234\t218\t133\t25\n+676\t1023\t149\t287\t215\t102\t25\n+869\t1023\t223\t285\t277\t388\t26\n+986\t1023\t267\t290\t261\t224\t26\n+603\t1018\t193\t272\t255\t135\t25\n+404\t168\t532\t113\t0\t0\t1\n+661\t501\t418\t184\t256\t248\t22\n+381\t169\t508\t0\t125\t204\t2\n+686\t860\t49\t190\t225\t97\t21\n+402\t202\t117\t90\t693\t316\t11\n+418\t89\t566\t19\t0\t306\t2\n+303\t119\t35\t155\t87\t108\t5\n+402\t184\t70\t111\t627\t309\t7\n+304\t107\t0\t118\t86\t257\t4\n+360\t124\t26\t10\t615\t209\t6\n+372\t118\t558\t125\t0\t120\t1\n+659\t1023\t341\t246\t228\t256\t23\n+720\t1023\t180\t178\t212\t229\t25\n+712\t1002\t228\t163\t282\t195\t25\n+321\t90\t472\t35\t151\t178\t2\n+376\t154\t54\t61\t587\t264\t11\n+744\t1023\t229\t271\t226\t216\t26\n+329\t149\t82\t173\t629\t269\t7\n+447\t153\t524\t161\t138\t197\t18\n+364\t294\t248\t335\t0\t222\t16\n+645\t1023\t177\t179\t282\t254\t25\n+1023\t1023\t456\t557\t482\t445\t19\n+440\t297\t403\t122\t82\t135\t18\n+432\t115\t572\t165\t78\t225\t18\n+366\t112\t299\t0\t23\t98\t15\n+673\t1023\t230\t330\t294\t261\t23\n+707\t1023\t222\t246\t206\t242\t25\n+628\t1023\t161\t288\t241\t234\t25\n+601\t1023\t126\t296\t278\t191\t25\n+347\t157\t531\t0\t42\t49\t10\n+262\t65\t210\t36\t0\t176\t15\n+349\t101\t481\t139\t96\t211\t18\n+596\t1023\t193\t252\t233\t288\t23\n+375\t112\t546\t184\t59\t88\t1\n+436\t141\t123\t229\t611\t218\t7\n+389\t131\t576\t0\t0\t144\t2\n+353\t97\t477\t204\t0\t221\t18\n+400\t149\t91\t143\t639\t310\t7\n+742\t1023\t225\t277\t114\t241\t26\n+747\t1023\t132\t254\t227\t176\t25\n+350\t122\t489\t194\t0\t99\t1\n+407\t131\t535\t209\t0\t57\t1\n+269\t92\t0\t0\t5\t128\t5\n+355\t142\t540\t103\t115\t84\t1\n+387\t123\t529\t116\t115\t0\t1\n+358\t86\t523\t18\t32\t101\t10\n+388\t132\t105\t99\t653\t329\t11\n+305\t165\t509\t126\t0\t63\t1\n+454\t168\t113\t124\t629\t251\t7\n+400\t121\t176\t0\t581\t240\t6\n+405\t230\t115\t233\t632\t289\t7\n+596\t942\t74\t236\t280\t279\t25\n+380\t211\t72\t236\t670\t255\t7\n+392\t127\t546\t204\t47\t105\t1\n+519\t409\t169\t117\t136\t417\t4\n+767\t1023\t196\t278\t269\t192\t26\n+367\t121\t528\t95\t0\t117\t2\n+378\t175\t507\t201\t0\t227\t18\n+664\t668\t359\t287\t268\t166\t22\n+435\t161\t543\t185\t67\t197\t18\n+358\t233\t0\t136\t148\t331\t4\n+633\t977\t95\t250\t175\t187\t25\n+373\t128\t564\t0\t35\t119\t2\n+386\t123\t547\t0\t65\t181\t2\n+319\t110\t497\t77\t101\t0\t10\n+401\t86\t503\t126\t184\t138\t18\n+364\t136\t0\t161\t15\t0\t5\n+741\t1023\t188\t221\t270\t230\t26\n+677\t510\t416\t268\t195\t188\t22\n+311\t212\t17\t22\t91\t146\t5\n+642\t1023\t152\t268\t221\t196\t25\n+739\t395\t291\t219\t174\t75\t24\n+760\t1023\t175\t247\t284\t198\t26\n+410\t168\t528\t125\t0\t211\t18\n+338\t158\t71\t69\t1\t155\t5\n+401\t137\t34\t223\t641\t291\t7\n+780\t853\t198\t256\t230\t270\t26\n+389\t185\t160\t28\t664\t319\t11\n+369\t130\t567\t21\t0\t38\t10\n+359\t119\t60\t55\t660\t217\t6\n+349\t97\t522\t0\t21\t0\t10\n+553\t762\t136\t193\t137\t198\t21\n+476\t91\t554\t0\t0\t102\t2\n+372\t77\t506\t0\t89\t0\t10\n+628\t1023\t202\t285\t305\t61\t25\n+493\t351\t403\t242\t150\t196\t22\n+393\t181\t128\t0\t148\t83\t12\n+400\t143\t554\t109\t89\t115\t18\n+387\t91\t544\t199\t141\t45\t1\n+564\t924\t104\t220\t170\t249\t21\n+673\t237\t124\t79\t648\t268\t7\n+363\t203\t84\t213\t79\t224\t4\n+353\t83\t517\t168\t70\t133\t18\n+378\t157\t577\t0\t68\t205\t2\n+338\t139\t25\t41\t38\t92\t5\n+330\t70\t0\t55\t597\t165\t6\n+558\t280\t421\t143\t113\t226\t22\n+447\t288\t156\t211\t5\t33\t12\n+341\t112\t457\t22\t0\t116\t2\n+757\t1023\t205\t268\t291\t189\t26\n+375\t112\t541\t20\t14\t0\t10\n+657\t1023\t141\t206\t196\t125\t25\n+356\t114\t550\t0\t0\t101\t10\n+700\t1023\t196\t256\t272\t64\t25\n+629\t1023\t189\t174\t253\t149\t25\n+360\t141\t554\t0\t32\t52\t10\n+362\t108\t543\t219\t158\t128\t18\n+337\t112\t511\t107\t65\t178\t2\n+398\t277\t67\t116\t277\t95\t12\n+767\t1023\t157\t205\t212\t95\t25\n+609\t1023\t348\t474\t390\t429\t23\n+369\t96\t532\t255\t0\t212\t18\n+386\t174\t46\t65\t619\t231\t6\n+336\t115\t492\t87\t0\t105\t10\n+469\t164\t580\t94\t50\t12\t1\n+396\t108\t535\t84\t4\t82\t10\n+452\t159\t534\t176\t169\t176\t18\n+410\t129\t537\t107\t0\t67\t1\n+304\t141\t31\t0\t112\t176\t5\n+863\t1023\t242\t349\t309\t330\t26\n+391\t226\t83\t224\t576\t232\t7\n+701\t1023\t77\t158\t258\t111\t25\n+674\t1023\t151\t247\t256\t238\t25\n+309\t70\t73\t137\t287\t110\t5\n+352\t154\t0\t23\t602\t271\t11\n+352\t152\t130\t0\t29\t161\t5\n+542\t1011\t70'..b'19\t209\t182\t110\t21\n+358\t182\t80\t44\t667\t310\t11\n+512\t1023\t125\t168\t262\t201\t21\n+466\t240\t133\t157\t196\t5\t12\n+302\t139\t471\t0\t7\t19\t10\n+361\t114\t533\t0\t0\t275\t2\n+1023\t1023\t263\t311\t246\t309\t26\n+334\t118\t371\t156\t0\t44\t15\n+820\t1023\t294\t313\t318\t305\t26\n+407\t150\t547\t133\t138\t210\t18\n+271\t65\t486\t0\t48\t0\t10\n+364\t121\t541\t49\t94\t229\t2\n+654\t1023\t151\t256\t251\t230\t25\n+366\t143\t555\t195\t0\t15\t1\n+512\t571\t107\t220\t20\t192\t16\n+556\t265\t448\t81\t172\t103\t24\n+424\t228\t43\t132\t616\t310\t7\n+753\t1023\t224\t268\t192\t116\t25\n+360\t96\t533\t15\t109\t138\t2\n+426\t207\t276\t99\t578\t328\t8\n+432\t207\t142\t0\t408\t0\t6\n+640\t580\t445\t287\t171\t207\t22\n+658\t1023\t201\t282\t277\t300\t23\n+666\t1023\t92\t257\t172\t234\t25\n+354\t216\t87\t176\t336\t106\t12\n+356\t176\t42\t0\t170\t134\t5\n+689\t1023\t186\t217\t283\t198\t25\n+346\t115\t516\t155\t0\t132\t18\n+387\t128\t579\t203\t51\t141\t18\n+665\t1023\t122\t229\t165\t78\t25\n+400\t168\t0\t160\t600\t249\t7\n+357\t95\t517\t0\t87\t186\t2\n+373\t158\t534\t228\t53\t103\t1\n+372\t103\t525\t238\t7\t175\t18\n+298\t86\t428\t55\t0\t174\t2\n+348\t131\t546\t6\t0\t55\t10\n+368\t135\t549\t144\t0\t12\t1\n+589\t1023\t333\t446\t322\t395\t23\n+337\t117\t81\t149\t643\t348\t7\n+372\t258\t139\t113\t174\t374\t4\n+827\t1023\t128\t271\t263\t132\t26\n+693\t1023\t179\t292\t201\t287\t23\n+732\t946\t187\t253\t264\t121\t25\n+370\t268\t125\t182\t104\t97\t12\n+554\t761\t111\t293\t224\t233\t21\n+411\t188\t525\t185\t124\t208\t18\n+356\t165\t123\t85\t672\t282\t11\n+353\t92\t508\t124\t141\t66\t1\n+684\t902\t144\t248\t244\t173\t25\n+402\t185\t135\t497\t774\t472\t13\n+380\t144\t527\t156\t62\t31\t1\n+765\t1023\t202\t261\t254\t258\t26\n+1023\t1023\t500\t508\t445\t550\t19\n+1023\t1023\t538\t456\t358\t450\t19\n+652\t921\t131\t204\t107\t223\t25\n+480\t181\t541\t223\t133\t294\t18\n+651\t1023\t174\t340\t182\t19\t25\n+619\t1023\t133\t263\t239\t231\t25\n+374\t93\t520\t0\t0\t138\t2\n+547\t760\t70\t0\t162\t224\t21\n+427\t278\t113\t238\t385\t170\t7\n+753\t1023\t156\t296\t263\t300\t26\n+640\t942\t122\t265\t237\t242\t25\n+348\t94\t507\t300\t109\t22\t1\n+599\t1023\t135\t321\t261\t212\t25\n+591\t948\t188\t176\t247\t130\t21\n+386\t92\t515\t201\t32\t79\t1\n+423\t156\t562\t8\t120\t144\t2\n+581\t1023\t146\t214\t153\t145\t25\n+779\t1023\t208\t308\t295\t319\t26\n+1022\t174\t372\t274\t253\t397\t22\n+395\t112\t554\t213\t64\t109\t18\n+398\t283\t104\t418\t52\t211\t16\n+459\t215\t559\t287\t198\t109\t18\n+366\t160\t536\t218\t156\t122\t18\n+380\t197\t123\t74\t638\t287\t11\n+624\t1023\t133\t241\t194\t265\t25\n+400\t163\t518\t139\t69\t225\t18\n+380\t131\t564\t126\t0\t36\t1\n+283\t146\t65\t180\t134\t0\t5\n+379\t112\t173\t0\t646\t223\t11\n+752\t1023\t129\t258\t239\t245\t25\n+409\t206\t179\t149\t641\t290\t7\n+635\t525\t409\t225\t206\t227\t22\n+680\t1023\t234\t196\t249\t165\t25\n+702\t458\t425\t271\t150\t46\t24\n+734\t511\t416\t176\t152\t200\t22\n+409\t171\t20\t29\t574\t212\t6\n+413\t251\t83\t12\t21\t64\t12\n+737\t1023\t180\t287\t284\t283\t26\n+431\t175\t361\t239\t132\t0\t1\n+353\t114\t50\t0\t621\t271\t11\n+408\t141\t559\t0\t132\t196\t2\n+531\t798\t102\t253\t209\t75\t21\n+619\t1023\t205\t294\t235\t212\t25\n+667\t1023\t187\t234\t288\t219\t25\n+392\t247\t261\t675\t198\t451\t17\n+311\t102\t514\t99\t110\t146\t2\n+460\t125\t559\t0\t0\t73\t10\n+400\t99\t564\t212\t139\t96\t1\n+633\t1023\t168\t232\t214\t195\t25\n+404\t166\t556\t177\t58\t46\t1\n+678\t1023\t210\t305\t274\t229\t23\n+364\t174\t98\t36\t615\t267\t11\n+372\t118\t543\t109\t3\t52\t1\n+672\t1023\t188\t292\t133\t249\t25\n+643\t1023\t216\t273\t296\t169\t25\n+445\t134\t552\t0\t143\t94\t2\n+400\t151\t556\t179\t191\t181\t18\n+701\t1023\t226\t239\t247\t291\t23\n+365\t157\t122\t0\t667\t233\t11\n+385\t88\t542\t89\t180\t60\t10\n+358\t87\t482\t10\t0\t55\t10\n+710\t487\t449\t284\t139\t96\t24\n+371\t134\t510\t19\t14\t351\t2\n+264\t69\t463\t0\t0\t80\t10\n+428\t103\t512\t263\t0\t70\t1\n+614\t490\t462\t229\t120\t325\t22\n+466\t219\t513\t117\t0\t174\t18\n+674\t525\t400\t208\t194\t194\t22\n+324\t110\t506\t66\t32\t128\t2\n+394\t115\t28\t0\t557\t193\t6\n+411\t175\t63\t139\t618\t323\t7\n+611\t303\t345\t92\t88\t100\t24\n+450\t239\t160\t99\t195\t210\t12\n+356\t129\t33\t90\t602\t94\t6\n+605\t1006\t213\t204\t220\t220\t25\n+773\t1023\t237\t275\t210\t167\t26\n+429\t142\t570\t272\t0\t141\t18\n+263\t33\t417\t0\t0\t194\t2\n+347\t148\t26\t0\t630\t300\t11\n+364\t121\t528\t182\t70\t194\t18\n+339\t87\t483\t0\t43\t74\t10\n+692\t1009\t147\t285\t115\t156\t25\n+596\t988\t133\t305\t113\t273\t25\n+847\t1023\t244\t216\t316\t101\t26\n+386\t135\t531\t166\t184\t117\t18\n+621\t970\t37\t127\t238\t274\t21\n+298\t99\t482\t88\t0\t130\t2\n+658\t1023\t117\t165\t208\t188\t25\n+326\t172\t76\t12\t149\t77\t5\n+360\t84\t532\t57\t138\t102\t10\n+886\t1023\t229\t361\t290\t234\t26\n+634\t972\t248\t277\t271\t215\t23\n+332\t164\t0\t73\t246\t210\t5\n+447\t121\t548\t0\t0\t393\t2\n+391\t119\t74\t0\t628\t238\t11\n+340\t100\t528\t245\t0\t8\t1\n+385\t99\t179\t115\t513\t163\t6\n+400\t157\t126\t99\t638\t313\t7\n+431\t97\t527\t156\t122\t197\t18\n'