Repository 'cs_overview_2'
hg clone https://toolshed.g2.bx.psu.edu/repos/azomics/cs_overview_2

Changeset 0:09114b034834 (2020-05-20)
Commit message:
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/cs_overview commit d572546e2a1a28b33df2f908652e85dd86f5916f"
added:
crossSampleOverview.xml
static/images/flowtools/barssm.png
static/images/flowtools/cs_bpt.png
static/images/flowtools/edit_popdistrib.png
static/images/flowtools/pcmfi.png
static/images/flowtools/pcpop.png
static/images/flowtools/popdistrib.png
static/images/flowtools/stackedA.png
static/images/flowtools/stackedB.png
static/images/flowtools/stackedsm.png
test-data/csAllMFIs.tsv
test-data/csBoxplotData.json
test-data/csOverview.tsv
test-data/input.flowstat1
test-data/input.flowstat2
test-data/input.mfi
test-data/input1.flowclr
test-data/input2.flowclr
test-data/input3.flowclr
test-data/out.html
b
diff -r 000000000000 -r 09114b034834 crossSampleOverview.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/crossSampleOverview.xml Wed May 20 15:37:35 2020 -0400
[
b'@@ -0,0 +1,165 @@\n+<tool id="cross_sample_overview" name="Generate overview information" version="1.1">\n+  <description>of a multi-sample analysis.</description>\n+  <requirements>\n+    <requirement type="package" version="2.0.2">ig-flowtools</requirement>\n+  </requirements>\n+  <stdio>\n+    <exit_code range="1" level="fatal" description="There are too many populations in the input files. The maximum number of populations is 40." />\n+    <exit_code range="2" level="fatal" description="There are populations inconsistencies between provided inputs." />\n+  </stdio>\n+  <command><![CDATA[\n+    mkdir templates &&\n+    mkdir -p static/flowtools &&\n+    mkdir -p static/images/flowtools &&\n+    export FLOWTOOL=\'which crossSampleOverview.py\' &&\n+    FLOWTOOLDIR=\\$(dirname $FLOWTOOL) &&\n+    cp $FLOWTOOLDIR/../share/templates/* templates/ &&\n+    cp -r $FLOWTOOLDIR/../share/static/flowtools/* static/flowtools/ &&\n+    cp $FLOWTOOLDIR/../share/static/images/flowtools/* static/images/flowtools/ &&\n+    crossSampleOverview.py -i \'${input}\' -I \'${inputmfi}\' -o \'${html_file}\' -m \'${mfi}\' -d \'${html_file.files_path}\' -t \'templates/\'\n+    #for $f in $cs_outputs\n+       -s $f\n+    #end for\n+  ]]>\n+  </command>\n+  <inputs>\n+    <param format="flowstat1" name="input" type="data" label="CrossSample Population Summary Table"/>\n+    <param format="flowstat2" name="inputmfi" type="data" label="Centroids MFI Summary Table"/>\n+    <param format="flowmfi" name="mfi" type="data" label="Centroids File from FLOCK"/>\n+    <param format="flowclr" name="cs_outputs" type="data_collection" collection_type="list" label="Clustered flow files" help="output from a Cross Sample analysis or from mapping individual files to a FlowSOM reference tree."/>\n+  </inputs>\n+  <outputs>\n+    <data format="html" name="html_file" label="Overview of ${input.name}">\n+    </data>\n+  </outputs>\n+  <tests>\n+    <test>\n+      <param name="input" value="input.flowstat1"/>\n+      <param name="inputmfi" value="input.flowstat2"/>\n+      <param name="mfi" value="input.mfi"/>\n+      <param name="cs_outputs">\n+        <collection type="list">\n+          <element name="input1.flowclr" value="input1.flowclr"/>\n+          <element name="input2.flowclr" value="input2.flowclr"/>\n+          <element name="input3.flowclr" value="input3.flowclr"/>\n+        </collection>\n+      </param>\n+      <output name="html_file" file="out.html" compare="sim_size">\n+        <extra_files type="file" name="csAllMFIs.tsv" value="csAllMFIs.tsv"/>\n+        <extra_files type="file" name="csOverview.tsv" value="csOverview.tsv"/>\n+        <extra_files type="file" name="csBoxplotData.json" value="csBoxplotData.json" compare="contains"/>\n+      </output>\n+    </test>\n+  </tests>\n+  <help><![CDATA[\n+   This tool generates an overview of the flow analysis results.\n+\n+-----\n+\n+**Input**\n+\n+Input files are tab-separated files containing counts of events in each population for each file compared to reference population patterns, MFI for each marker in each population for each file, and individual files used in the comparison. The output from a Cross Sample analysis as well as from mapping individual files to a FlowSOM reference tree are suitable files.\n+The Centroids file can be generated with the following Flow Analysis tool:\n+\n+- Generate the centroids from a flow result file\n+\n+.. class:: warningmark\n+\n+The number of populations or clusters this tool can handle is limited to 40.\n+\n+**Output**\n+\n+The output is a page that allows visualization of the data.\n+\n+.. class:: warningmark\n+\n+*The output of this tool is interactive. However, comments or any other modifications made are not saved when exiting the view.*\n+\n+-----\n+\n+**Example**\n+\n+*Input*\n+\n+Clustered Flow Data - fluorescence intensities per marker and population ID per event::\n+\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+   ...     ...'..b"s MFI Summary table::\n+\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+\n+Centroids file::\n+\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+\n+*Output*\n+\n+Summary of the population distribution:\n+\n+The comment field of this table is editable, as well as the population names. The edited values are used to populate the legends of the other graphs. The columns are re-orderable. The 'col visibility' button allows to choose which columns to display. 'CSV', 'PDF' and 'Copy' respectively allow to download a comma-separated values file, a pdf version or to copy to your clipboard in a tab-separated format the current view of the table.\n+\n+.. image:: ./static/images/flowtools/popdistrib.png\n+\n+.. image:: ./static/images/flowtools/edit_popdistrib.png\n+\n+\n+Stacked plot of the population distribution in each sample:\n+\n+The user can choose which populations to display, and whether to see the data as a bar plot or area plot. The graph displays the proportion of each population within the set of selected populations. The Plotly toolbar allows more control over the display of the graph. There is an option to save the plot as a png file.\n+\n+.. image:: ./static/images/flowtools/stackedA.png\n+\n+.. image:: ./static/images/flowtools/stackedB.png\n+\n+\n+Parallel coordinates representation of populations:\n+\n+The user can reorder the populations, and choose which samples to display either by selecting them in the legend via checkboxes or by selecting them on the graph. Data selected for display is shown in the table below the graph. Mousing over a line in that table highlights the corresponding line on the graph. The 'col visibility' button allows to choose which columns to display. 'CSV', 'PDF' and 'Copy' respectively allow to download a comma-separated values file, a pdf version or to copy to your clipboard in a tab-separated format the current view of the table.\n+\n+.. image:: ./static/images/flowtools/pcpop.png\n+\n+\n+Parallel coordinates representation of the data:\n+\n+The user can reorder the markers, and choose which samples and/or populations to display either by selecting them in the legends via checkboxes or by selecting them on the graph. Data selected for display is shown in the table below the graph. Mousing over a line in that table highlights the corresponding line on the graph. The 'col visibility' button allows to choose which columns to display. 'CSV', 'PDF' and 'Copy' respectively allow to download a comma-separated values file, a pdf version or to copy to your clipboard in a tab-separated format the current view of the table.\n+\n+.. image:: ./static/images/flowtools/pcmfi.png\n+\n+\n+Summary Statistics Boxplots:\n+\n+The user can choose whether to group the boxplots per marker or per population. By default, the values displayed are the 25th, median and 75th percentiles. The whiskers represent 1.5 times the interquartile range. The MFI or the values can be displayed by checking the corresponding checkboxes. The number of markers that can be plotted simultaneously is limited to 5. The number of outliers per data point is limited to 100. If there are more than 100 outliers, they are downsampled randomly to a 100 and a warning message is displayed.\n+\n+.. image:: ./static/images/flowtools/cs_bpt.png\n+  ]]>\n+  </help>\n+</tool>\n"
b
diff -r 000000000000 -r 09114b034834 static/images/flowtools/barssm.png
b
Binary file static/images/flowtools/barssm.png has changed
b
diff -r 000000000000 -r 09114b034834 static/images/flowtools/cs_bpt.png
b
Binary file static/images/flowtools/cs_bpt.png has changed
b
diff -r 000000000000 -r 09114b034834 static/images/flowtools/edit_popdistrib.png
b
Binary file static/images/flowtools/edit_popdistrib.png has changed
b
diff -r 000000000000 -r 09114b034834 static/images/flowtools/pcmfi.png
b
Binary file static/images/flowtools/pcmfi.png has changed
b
diff -r 000000000000 -r 09114b034834 static/images/flowtools/pcpop.png
b
Binary file static/images/flowtools/pcpop.png has changed
b
diff -r 000000000000 -r 09114b034834 static/images/flowtools/popdistrib.png
b
Binary file static/images/flowtools/popdistrib.png has changed
b
diff -r 000000000000 -r 09114b034834 static/images/flowtools/stackedA.png
b
Binary file static/images/flowtools/stackedA.png has changed
b
diff -r 000000000000 -r 09114b034834 static/images/flowtools/stackedB.png
b
Binary file static/images/flowtools/stackedB.png has changed
b
diff -r 000000000000 -r 09114b034834 static/images/flowtools/stackedsm.png
b
Binary file static/images/flowtools/stackedsm.png has changed
b
diff -r 000000000000 -r 09114b034834 test-data/csAllMFIs.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/csAllMFIs.tsv Wed May 20 15:37:35 2020 -0400
b
@@ -0,0 +1,76 @@
+FSC SSC CD4 CCR7 CD8 CCR3 Percentage Population SampleName
+361.11 119.12 521.83 181.74 48.05 76.45 10.22 1 Sample01
+374.37 125.63 525.73 35.68 72.0 197.41 8.49 2 Sample01
+407.04 153.46 426.27 60.27 578.92 268.62 0.13 3 Sample01
+363.32 241.46 99.96 145.89 102.81 318.15 0.42 4 Sample01
+337.01 155.21 56.65 72.22 73.39 112.31 6.66 5 Sample01
+368.59 148.89 69.11 71.71 606.03 237.4 13.3 6 Sample01
+403.38 176.77 93.68 191.88 620.84 263.67 2.96 7 Sample01
+394.0 176.73 319.53 183.2 615.93 287.33 0.08 8 Sample01
+345.6 331.2 292.6 562.5 293.0 413.3 0.05 9 Sample01
+352.11 115.59 519.67 30.16 54.33 72.31 9.86 10 Sample01
+421.38 241.16 115.05 151.82 215.63 147.29 3.27 12 Sample01
+456.33 283.0 451.33 333.83 524.33 268.17 0.03 13 Sample01
+363.33 188.33 360.33 551.11 77.56 198.67 0.04 14 Sample01
+354.13 118.63 301.28 81.22 69.19 117.1 1.42 15 Sample01
+419.05 392.93 120.34 408.48 122.57 168.11 0.5 16 Sample01
+461.88 422.08 421.0 718.08 357.2 480.84 0.12 17 Sample01
+388.56 132.3 528.7 189.23 62.06 206.63 7.59 18 Sample01
+972.67 1014.57 510.17 649.92 498.02 507.31 0.46 19 Sample01
+436.0 331.33 195.33 587.83 698.0 475.67 0.03 20 Sample01
+602.7 967.96 140.02 220.22 213.07 176.14 14.78 21 Sample01
+687.29 492.17 377.54 210.74 192.45 266.89 2.35 22 Sample01
+551.75 988.58 350.25 482.74 364.3 411.62 1.38 23 Sample01
+647.97 385.39 396.58 170.54 166.82 144.43 2.22 24 Sample01
+726.14 1016.99 182.62 264.76 248.2 217.07 12.0 25 Sample01
+969.6 1001.4 329.24 338.48 302.98 333.58 1.62 26 Sample01
+562.4 279.89 395.37 85.52 233.15 423.82 0.41 2 Sample02
+361.27 110.68 512.56 68.78 633.79 483.62 10.72 3 Sample02
+355.26 167.2 73.65 147.49 108.77 528.0 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.19 96.03 612.98 319.43 3.08 6 Sample02
+412.95 178.92 94.56 281.78 623.08 375.29 2.95 7 Sample02
+371.12 112.05 517.49 258.96 642.94 505.4 11.26 8 Sample02
+432.33 214.49 133.48 402.37 298.53 645.37 1.27 9 Sample02
+380.56 135.17 85.28 110.51 602.83 574.66 8.98 11 Sample02
+447.84 525.86 156.54 205.91 232.41 226.26 1.04 12 Sample02
+406.28 136.61 517.79 421.89 615.35 306.51 10.94 13 Sample02
+358.41 103.0 460.06 676.12 556.82 164.12 0.08 14 Sample02
+392.82 210.34 274.9 177.84 205.7 226.14 0.25 15 Sample02
+433.7 263.98 107.32 510.33 149.7 224.73 0.58 16 Sample02
+503.0 183.67 512.67 468.67 380.67 284.33 0.02 17 Sample02
+401.91 199.4 351.38 197.56 325.84 376.18 0.22 18 Sample02
+942.11 977.37 496.87 556.88 589.5 591.94 0.71 19 Sample02
+431.49 175.21 108.33 449.62 589.5 338.8 0.53 20 Sample02
+612.64 962.73 145.03 218.27 241.53 218.17 12.76 21 Sample02
+677.89 432.97 395.05 215.41 253.52 320.54 2.78 22 Sample02
+537.32 987.67 377.08 463.75 412.69 503.96 2.01 23 Sample02
+709.18 473.67 400.15 219.99 227.86 177.82 1.58 24 Sample02
+724.18 1017.01 183.88 263.44 272.12 249.6 19.98 25 Sample02
+956.13 990.81 316.67 335.77 337.53 324.79 1.88 26 Sample02
+363.95 112.51 518.71 193.17 50.64 67.35 8.88 1 Sample03
+366.04 113.59 521.83 39.17 65.94 165.47 5.34 2 Sample03
+395.7 119.3 384.9 85.9 585.6 230.1 0.05 3 Sample03
+369.39 205.67 97.01 236.06 84.86 292.39 0.34 4 Sample03
+318.6 144.34 48.13 81.89 64.55 103.94 4.61 5 Sample03
+356.89 131.76 69.32 144.68 612.42 244.05 1.94 6 Sample03
+373.64 149.87 73.69 364.35 620.22 274.16 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.86 110.17 520.31 33.06 61.37 62.34 7.46 10 Sample03
+395.52 201.76 124.0 438.24 675.14 501.81 0.1 11 Sample03
+416.88 238.6 120.19 236.76 187.66 133.17 3.0 12 Sample03
+435.72 195.36 389.95 550.08 631.15 289.23 0.19 13 Sample03
+399.59 136.41 525.46 567.47 69.53 112.63 4.7 14 Sample03
+361.32 113.15 344.55 109.52 71.39 102.73 1.61 15 Sample03
+404.65 196.83 95.23 518.72 130.58 201.29 3.17 16 Sample03
+451.64 196.71 522.26 588.96 117.02 273.98 1.52 17 Sample03
+383.16 121.62 525.61 214.22 63.94 172.91 5.26 18 Sample03
+948.66 979.64 477.18 676.02 492.0 476.04 0.48 19 Sample03
+393.34 154.15 80.74 547.09 620.52 265.13 7.53 20 Sample03
+618.71 977.02 140.44 231.46 216.74 155.19 16.55 21 Sample03
+634.28 434.83 361.97 254.26 193.6 244.19 1.54 22 Sample03
+550.91 992.18 358.58 469.96 366.77 399.73 1.77 23 Sample03
+692.2 478.05 385.86 213.85 182.9 123.52 2.62 24 Sample03
+732.99 1018.5 182.2 275.26 250.19 190.78 13.6 25 Sample03
+971.95 998.45 334.88 363.32 315.37 269.93 1.74 26 Sample03
b
diff -r 000000000000 -r 09114b034834 test-data/csBoxplotData.json
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/csBoxplotData.json Wed May 20 15:37:35 2020 -0400
[
b'@@ -0,0 +1,1 @@\n+{"lower": {"CCR3":{"1":-57.5,"2":56.0,"3":294.25,"4":288.5,"5":-76.5,"6":94.0,"7":116.0,"8":342.0,"9":434.875,"10":-57.5,"11":446.5,"12":-64.5,"13":125.5,"14":-74.0,"15":-86.0,"16":-88.375,"17":78.0,"18":58.5,"19":237.625,"20":96.0,"21":-21.0,"22":135.625,"23":251.5,"24":-39.5,"25":60.0,"26":114.0},"CCR7":{"1":37.5,"2":-112.5,"3":-183.75,"4":-114.75,"5":-196.5,"6":-160.625,"7":-20.0,"8":71.5,"9":64.5,"10":-94.5,"11":-126.875,"12":-23.0,"13":135.0,"14":351.5,"15":-202.25,"16":262.875,"17":397.0,"18":39.0,"19":192.625,"20":268.25,"21":94.5,"22":44.375,"23":373.0,"24":-4.75,"25":167.5,"26":200.0},"CD4":{"1":446.0,"2":441.0,"3":434.0,"4":-96.5,"5":-105.5,"6":-79.0,"7":-62.5,"8":449.5,"9":-77.0,"10":442.0,"11":-65.5,"12":-15.25,"13":415.0,"14":430.0,"15":191.0,"16":-57.5,"17":376.25,"18":450.5,"19":249.75,"20":-60.25,"21":25.5,"22":240.875,"23":271.5,"24":277.0,"25":77.5,"26":5.5},"CD8":{"1":-133.5,"2":-183.0,"3":550.5,"4":-141.25,"5":-144.5,"6":504.5,"7":515.0,"8":566.5,"9":-198.5,"10":-151.5,"11":510.0,"12":-57.75,"13":512.5,"14":-196.5,"15":-161.75,"16":-188.875,"17":-205.75,"18":-172.5,"19":117.375,"20":516.0,"21":111.0,"22":53.0,"23":281.0,"24":21.5,"25":161.0,"26":190.5},"FSC":{"1":271.5,"2":260.5,"3":265.0,"4":175.5,"5":207.0,"6":278.5,"7":295.0,"8":287.0,"9":187.875,"10":258.0,"11":286.5,"12":256.5,"13":263.5,"14":278.0,"15":232.25,"16":270.0,"17":261.75,"18":268.0,"19":708.0,"20":297.0,"21":486.5,"22":463.5,"23":326.0,"24":469.0,"25":548.0,"26":748.625},"SSC":{"1":42.0,"2":37.5,"3":42.0,"4":23.5,"5":49.0,"6":38.5,"7":43.5,"8":46.0,"9":21.75,"10":43.0,"11":36.5,"12":2.25,"13":15.5,"14":34.0,"15":1.5,"16":26.5,"17":-25.25,"18":41.0,"19":1023.0,"20":53.0,"21":798.0,"22":186.375,"23":1023.0,"24":178.75,"25":1023.0,"26":1023.0}}, "mfi": {"CCR3":{"1":72,"2":187,"3":483,"4":520,"5":109,"6":251,"7":304,"8":504,"9":641,"10":68,"11":565,"12":161,"13":306,"14":108,"15":110,"16":201,"17":289,"18":195,"19":541,"20":267,"21":173,"22":283,"23":448,"24":132,"25":232,"26":311},"CCR7":{"1":189,"2":37,"3":68,"4":141,"5":67,"6":90,"7":318,"8":257,"9":419,"10":32,"11":111,"12":213,"13":424,"14":566,"15":84,"16":509,"17":598,"18":198,"19":629,"20":534,"21":224,"22":204,"23":476,"24":204,"25":269,"26":343},"CD4":{"1":520,"2":523,"3":512,"4":84,"5":56,"6":75,"7":83,"8":517,"9":138,"10":521,"11":85,"12":119,"13":516,"14":526,"15":322,"16":104,"17":509,"18":524,"19":490,"20":82,"21":145,"22":389,"23":366,"24":392,"25":182,"26":325},"CD8":{"1":53,"2":67,"3":632,"4":114,"5":82,"6":608,"7":620,"8":641,"9":327,"10":59,"11":604,"12":183,"13":615,"14":76,"15":75,"16":138,"17":119,"18":60,"19":533,"20":621,"21":225,"22":215,"23":387,"24":187,"25":259,"26":318},"FSC":{"1":364,"2":370,"3":363,"4":360,"5":333,"6":372,"7":389,"8":371,"9":422,"10":357,"11":381,"12":410,"13":406,"14":401,"15":356,"16":413,"17":440,"18":384,"19":944,"20":393,"21":617,"22":667,"23":546,"24":681,"25":727,"26":960},"SSC":{"1":117,"2":121,"3":112,"4":175,"5":156,"6":154,"7":162,"8":113,"9":214,"10":114,"11":138,"12":276,"13":137,"14":139,"15":121,"16":239,"17":198,"18":128,"19":966,"20":154,"21":975,"22":437,"23":976,"24":440,"25":1013,"26":975}}, "outliers": {"CCR3":{"1":[],"2":[342,565,320,633,364,568,450,390,545,543,548,558,305,309,322,385,344,331,424,358,310,388,542,607,335,338,530,324,316,412,594,593,339,386,306,432,333,488,560,375,317,323,627,367,536,333,578,313,321,348,385,310,407,366,502,333,337,334,335,334,351,419,376,312,317,310,307,418,317,345,423,368,340,334,393,568,553,317,326,366,587,354,553,313,315,313,314,565,345,385,340,407,387,333,503,550,378,385,320,531],"3":[283,281,260,281,258,291,278,222,240,287,273,236,270,272,260,280,259,262,277,282,261,156,698,190,251,283,286,278,239,167,281,187,293,285,165,237,245,240,280,256,268,262,286,153,237,285,294,249,294,285,228,286,293,282,282,141,255,254,180,274,234,210,266,175,159,264,270,266,272,277,256,214,273,224,206,195,276,127,184,176,268,241,246,274,281,215,288,266,278,168,274,275,230,232,270,252,267,181,95'..b'":414.0,"13":406.0,"14":400.0,"15":357.0,"16":400.0,"17":433.0,"18":380.0,"19":1023.0,"20":391.0,"21":614.0,"22":666.0,"23":547.0,"24":679.0,"25":719.0,"26":1001.0},"SSC":{"1":113.0,"2":117.0,"3":109.0,"4":166.0,"5":147.0,"6":147.0,"7":158.0,"8":110.0,"9":211.0,"10":110.0,"11":133.0,"12":230.0,"13":130.0,"14":132.0,"15":109.0,"16":201.0,"17":183.0,"18":123.0,"19":1023.0,"20":152.0,"21":1022.0,"22":457.0,"23":1023.0,"24":452.0,"25":1023.0,"26":1023.0}}, "q3": {"CCR3":{"1":105.0,"2":211.0,"3":543.0,"4":571.0,"5":156.0,"6":294.0,"7":341.0,"8":547.0,"9":683.0,"10":100.0,"11":609.0,"12":208.0,"13":348.0,"14":161.0,"15":164.0,"16":271.0,"17":338.0,"18":221.0,"19":583.25,"20":316.0,"21":234.0,"22":306.25,"23":499.0,"24":193.0,"25":270.0,"26":359.0},"CCR7":{"1":220.0,"2":75.0,"3":122.5,"4":214.0,"5":131.0,"6":135.0,"7":380.0,"8":294.0,"9":524.5,"10":63.0,"11":165.0,"12":247.0,"13":495.0,"14":629.0,"15":166.5,"16":559.75,"17":642.0,"18":234.0,"19":713.25,"20":609.5,"21":262.0,"22":270.0,"23":488.0,"24":259.0,"25":295.0,"26":375.0},"CD4":{"1":541.0,"2":546.0,"3":534.0,"4":116.0,"5":87.0,"6":106.0,"7":120.0,"8":537.0,"9":199.25,"10":542.0,"11":122.0,"12":153.5,"13":545.0,"14":550.0,"15":356.0,"16":135.0,"17":560.0,"18":548.0,"19":554.75,"20":118.5,"21":173.0,"22":429.0,"23":389.0,"24":427.0,"25":210.0,"26":413.0},"CD8":{"1":89.0,"2":122.0,"3":658.0,"4":162.5,"5":108.0,"6":642.0,"7":655.0,"8":664.0,"9":460.25,"10":101.0,"11":630.0,"12":273.5,"13":645.0,"14":131.0,"15":124.5,"16":201.75,"17":198.0,"18":115.0,"19":633.0,"20":656.0,"21":256.0,"22":258.0,"23":406.0,"24":234.0,"25":286.0,"26":348.0},"FSC":{"1":384.0,"2":398.0,"3":385.0,"4":398.0,"5":357.0,"6":391.0,"7":410.0,"8":392.0,"9":476.0,"10":378.0,"11":404.0,"12":459.0,"13":441.0,"14":428.0,"15":388.5,"16":435.0,"17":488.0,"18":413.0,"19":1023.0,"20":417.0,"21":644.0,"22":721.0,"23":601.0,"24":734.0,"25":768.0,"26":1023.0},"SSC":{"1":132.0,"2":140.0,"3":127.0,"4":206.0,"5":174.0,"6":176.0,"7":191.0,"8":126.0,"9":270.5,"10":128.0,"11":159.0,"12":313.5,"13":163.0,"14":159.0,"15":144.0,"16":259.0,"17":263.5,"18":146.0,"19":1023.0,"20":178.0,"21":1023.0,"22":522.0,"23":1023.0,"24":510.0,"25":1023.0,"26":1023.0}}, "upper": {"CCR3":{"1":202.5,"2":304.0,"3":692.25,"4":740.5,"5":295.5,"6":414.0,"7":476.0,"8":670.0,"9":831.875,"10":194.5,"11":706.5,"12":371.5,"13":481.5,"14":302.0,"15":314.0,"16":486.625,"17":494.0,"18":318.5,"19":790.625,"20":448.0,"21":387.0,"22":408.625,"23":647.5,"24":332.5,"25":396.0,"26":506.0},"CCR7":{"1":329.5,"2":187.5,"3":306.25,"4":411.25,"5":327.5,"6":312.375,"7":620.0,"8":427.5,"9":800.5,"10":157.5,"11":340.125,"12":409.0,"13":711.0,"14":795.5,"15":387.75,"16":737.875,"17":789.0,"18":351.0,"19":1025.625,"20":814.25,"21":362.5,"22":405.375,"23":557.0,"24":417.25,"25":371.5,"26":480.0},"CD4":{"1":598.0,"2":609.0,"3":594.0,"4":243.5,"5":202.5,"6":217.0,"7":229.5,"8":589.5,"9":365.0,"10":602.0,"11":234.5,"12":254.75,"13":623.0,"14":622.0,"15":455.0,"16":250.5,"17":670.25,"18":606.5,"19":737.75,"20":225.75,"21":261.5,"22":541.875,"23":459.5,"24":517.0,"25":289.5,"26":657.5},"CD8":{"1":222.5,"2":305.0,"3":722.5,"4":344.75,"5":259.5,"6":724.5,"7":739.0,"8":722.5,"9":855.5,"10":252.5,"11":702.0,"12":472.25,"13":724.5,"14":327.5,"15":296.25,"16":436.125,"17":440.25,"18":287.5,"19":942.375,"20":740.0,"21":343.0,"22":381.0,"23":481.0,"24":361.5,"25":361.0,"26":442.5},"FSC":{"1":451.5,"2":480.5,"3":457.0,"4":531.5,"5":447.0,"6":458.5,"7":479.0,"8":455.0,"9":648.875,"10":450.0,"11":474.5,"12":580.5,"13":547.5,"14":518.0,"15":482.25,"16":534.0,"17":623.75,"18":500.0,"19":1212.0,"20":489.0,"21":738.5,"22":875.5,"23":766.0,"24":893.0,"25":900.0,"26":1187.625},"SSC":{"1":186.0,"2":201.5,"3":178.0,"4":315.5,"5":249.0,"6":258.5,"7":279.5,"8":174.0,"9":419.75,"10":179.0,"11":232.5,"12":500.25,"13":251.5,"14":234.0,"15":229.5,"16":398.5,"17":436.75,"18":209.0,"19":1023.0,"20":253.0,"21":1158.0,"22":723.375,"23":1023.0,"24":708.75,"25":1023.0,"26":1023.0}}}\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 09114b034834 test-data/csOverview.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/csOverview.tsv Wed May 20 15:37:35 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.225 8.49 0.13 0.42 6.665 13.3 2.965 0.075 0.05 9.855 0.0 3.27 0.03 0.045 1.415 0.495 0.125 7.59 0.465 0.03 14.78 2.35 1.385 2.22 12.0 1.625
+Rearranged FCSGateTrans on FCS2.001.20Kevents.fcs Sample02 0.0 0.41 10.715 5.69 0.275 3.075 2.95 11.26 1.27 0.0 8.985 1.04 10.94 0.085 0.25 0.585 0.015 0.225 0.71 0.535 12.755 2.785 2.01 1.575 19.975 1.885
+Rearranged FCSGateTrans on FCS2.002.20Kevents.fcs Sample03 8.88 5.345 0.05 0.345 4.61 1.945 5.765 0.015 0.18 7.465 0.105 3.005 0.195 4.695 1.61 3.17 1.515 5.265 0.485 7.53 16.545 1.545 1.77 2.62 13.605 1.74
b
diff -r 000000000000 -r 09114b034834 test-data/input.flowstat1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input.flowstat1 Wed May 20 15:37:35 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.225 8.49 0.13 0.42 6.665 13.3 2.965 0.075 0.05 9.855 0.0 3.27 0.03 0.045 1.415 0.495 0.125 7.59 0.465 0.03 14.78 2.35 1.385 2.22 12.0 1.625
+Rearranged FCSGateTrans on FCS2.001.20Kevents.fcs Sample02 0.0 0.41 10.715 5.69 0.275 3.075 2.95 11.26 1.27 0.0 8.985 1.04 10.94 0.085 0.25 0.585 0.015 0.225 0.71 0.535 12.755 2.785 2.01 1.575 19.975 1.885
+Rearranged FCSGateTrans on FCS2.002.20Kevents.fcs Sample03 8.88 5.345 0.05 0.345 4.61 1.945 5.765 0.015 0.18 7.465 0.105 3.005 0.195 4.695 1.61 3.17 1.515 5.265 0.485 7.53 16.545 1.545 1.77 2.62 13.605 1.74
b
diff -r 000000000000 -r 09114b034834 test-data/input.flowstat2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input.flowstat2 Wed May 20 15:37:35 2020 -0400
b
@@ -0,0 +1,76 @@
+FSC SSC CD4 CCR7 CD8 CCR3 Percentage Population SampleName
+361.11 119.12 521.83 181.74 48.05 76.45 10.22 1 Sample01
+374.37 125.63 525.73 35.68 72.0 197.41 8.49 2 Sample01
+407.04 153.46 426.27 60.27 578.92 268.62 0.13 3 Sample01
+363.32 241.46 99.96 145.89 102.81 318.15 0.42 4 Sample01
+337.01 155.21 56.65 72.22 73.39 112.31 6.66 5 Sample01
+368.59 148.89 69.11 71.71 606.03 237.4 13.3 6 Sample01
+403.38 176.77 93.68 191.88 620.84 263.67 2.96 7 Sample01
+394.0 176.73 319.53 183.2 615.93 287.33 0.08 8 Sample01
+345.6 331.2 292.6 562.5 293.0 413.3 0.05 9 Sample01
+352.11 115.59 519.67 30.16 54.33 72.31 9.86 10 Sample01
+421.38 241.16 115.05 151.82 215.63 147.29 3.27 12 Sample01
+456.33 283.0 451.33 333.83 524.33 268.17 0.03 13 Sample01
+363.33 188.33 360.33 551.11 77.56 198.67 0.04 14 Sample01
+354.13 118.63 301.28 81.22 69.19 117.1 1.42 15 Sample01
+419.05 392.93 120.34 408.48 122.57 168.11 0.5 16 Sample01
+461.88 422.08 421.0 718.08 357.2 480.84 0.12 17 Sample01
+388.56 132.3 528.7 189.23 62.06 206.63 7.59 18 Sample01
+972.67 1014.57 510.17 649.92 498.02 507.31 0.46 19 Sample01
+436.0 331.33 195.33 587.83 698.0 475.67 0.03 20 Sample01
+602.7 967.96 140.02 220.22 213.07 176.14 14.78 21 Sample01
+687.29 492.17 377.54 210.74 192.45 266.89 2.35 22 Sample01
+551.75 988.58 350.25 482.74 364.3 411.62 1.38 23 Sample01
+647.97 385.39 396.58 170.54 166.82 144.43 2.22 24 Sample01
+726.14 1016.99 182.62 264.76 248.2 217.07 12.0 25 Sample01
+969.6 1001.4 329.24 338.48 302.98 333.58 1.62 26 Sample01
+562.4 279.89 395.37 85.52 233.15 423.82 0.41 2 Sample02
+361.27 110.68 512.56 68.78 633.79 483.62 10.72 3 Sample02
+355.26 167.2 73.65 147.49 108.77 528.0 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.19 96.03 612.98 319.43 3.08 6 Sample02
+412.95 178.92 94.56 281.78 623.08 375.29 2.95 7 Sample02
+371.12 112.05 517.49 258.96 642.94 505.4 11.26 8 Sample02
+432.33 214.49 133.48 402.37 298.53 645.37 1.27 9 Sample02
+380.56 135.17 85.28 110.51 602.83 574.66 8.98 11 Sample02
+447.84 525.86 156.54 205.91 232.41 226.26 1.04 12 Sample02
+406.28 136.61 517.79 421.89 615.35 306.51 10.94 13 Sample02
+358.41 103.0 460.06 676.12 556.82 164.12 0.08 14 Sample02
+392.82 210.34 274.9 177.84 205.7 226.14 0.25 15 Sample02
+433.7 263.98 107.32 510.33 149.7 224.73 0.58 16 Sample02
+503.0 183.67 512.67 468.67 380.67 284.33 0.02 17 Sample02
+401.91 199.4 351.38 197.56 325.84 376.18 0.22 18 Sample02
+942.11 977.37 496.87 556.88 589.5 591.94 0.71 19 Sample02
+431.49 175.21 108.33 449.62 589.5 338.8 0.53 20 Sample02
+612.64 962.73 145.03 218.27 241.53 218.17 12.76 21 Sample02
+677.89 432.97 395.05 215.41 253.52 320.54 2.78 22 Sample02
+537.32 987.67 377.08 463.75 412.69 503.96 2.01 23 Sample02
+709.18 473.67 400.15 219.99 227.86 177.82 1.58 24 Sample02
+724.18 1017.01 183.88 263.44 272.12 249.6 19.98 25 Sample02
+956.13 990.81 316.67 335.77 337.53 324.79 1.88 26 Sample02
+363.95 112.51 518.71 193.17 50.64 67.35 8.88 1 Sample03
+366.04 113.59 521.83 39.17 65.94 165.47 5.34 2 Sample03
+395.7 119.3 384.9 85.9 585.6 230.1 0.05 3 Sample03
+369.39 205.67 97.01 236.06 84.86 292.39 0.34 4 Sample03
+318.6 144.34 48.13 81.89 64.55 103.94 4.61 5 Sample03
+356.89 131.76 69.32 144.68 612.42 244.05 1.94 6 Sample03
+373.64 149.87 73.69 364.35 620.22 274.16 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.86 110.17 520.31 33.06 61.37 62.34 7.46 10 Sample03
+395.52 201.76 124.0 438.24 675.14 501.81 0.1 11 Sample03
+416.88 238.6 120.19 236.76 187.66 133.17 3.0 12 Sample03
+435.72 195.36 389.95 550.08 631.15 289.23 0.19 13 Sample03
+399.59 136.41 525.46 567.47 69.53 112.63 4.7 14 Sample03
+361.32 113.15 344.55 109.52 71.39 102.73 1.61 15 Sample03
+404.65 196.83 95.23 518.72 130.58 201.29 3.17 16 Sample03
+451.64 196.71 522.26 588.96 117.02 273.98 1.52 17 Sample03
+383.16 121.62 525.61 214.22 63.94 172.91 5.26 18 Sample03
+948.66 979.64 477.18 676.02 492.0 476.04 0.48 19 Sample03
+393.34 154.15 80.74 547.09 620.52 265.13 7.53 20 Sample03
+618.71 977.02 140.44 231.46 216.74 155.19 16.55 21 Sample03
+634.28 434.83 361.97 254.26 193.6 244.19 1.54 22 Sample03
+550.91 992.18 358.58 469.96 366.77 399.73 1.77 23 Sample03
+692.2 478.05 385.86 213.85 182.9 123.52 2.62 24 Sample03
+732.99 1018.5 182.2 275.26 250.19 190.78 13.6 25 Sample03
+971.95 998.45 334.88 363.32 315.37 269.93 1.74 26 Sample03
b
diff -r 000000000000 -r 09114b034834 test-data/input.mfi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input.mfi Wed May 20 15:37:35 2020 -0400
b
@@ -0,0 +1,27 @@
+Population FSC SSC CD4 CCR7 CD8 CCR3
+1 364 117 520 189 53 72
+2 370 121 523 37 67 187
+3 363 112 512 68 632 483
+4 360 175 84 141 114 520
+5 333 156 56 67 82 109
+6 372 154 75 90 608 251
+7 389 162 83 318 620 304
+8 371 113 517 257 641 504
+9 422 214 138 419 327 641
+10 357 114 521 32 59 68
+11 381 138 85 111 604 565
+12 410 276 119 213 183 161
+13 406 137 516 424 615 306
+14 401 139 526 566 76 108
+15 356 121 322 84 75 110
+16 413 239 104 509 138 201
+17 440 198 509 598 119 289
+18 384 128 524 198 60 195
+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 976 366 476 387 448
+24 681 440 392 204 187 132
+25 727 1013 182 269 259 232
+26 960 975 325 343 318 311
b
diff -r 000000000000 -r 09114b034834 test-data/input1.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input1.flowclr Wed May 20 15:37:35 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\t266\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+266\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\t266\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\t8\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\t522\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\t522\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\t522\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\t522\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 000000000000 -r 09114b034834 test-data/input2.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input2.flowclr Wed May 20 15:37:35 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\t266\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\t522\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\t266\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\t266\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\t266\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+778\t893\t114\t242\t232\t248\t25\n+341\t185\t10\t228\t117\t561\t4\n+694\t370\t391\t254\t311\t330\t22\n'
b
diff -r 000000000000 -r 09114b034834 test-data/input3.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input3.flowclr Wed May 20 15:37:35 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\t522\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\t522\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\t266\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\t10\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\t266\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\t266\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\t10\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\t266\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 000000000000 -r 09114b034834 test-data/out.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out.html Wed May 20 15:37:35 2020 -0400
[
b'@@ -0,0 +1,282 @@\n+<!DOCTYPE html>\n+<html>\n+<head lang="en">\n+<title>CrossSample Overview</title>\n+<meta charset="UTF-8">\n+<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">\n+<meta name="viewport" content="width=device-width, initial-scale=1.0">\n+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"/>\n+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css"/>\n+<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/pdfmake-0.1.18/dt-1.10.12/b-1.2.1/b-colvis-1.2.1/b-html5-1.2.1/cr-1.3.2/fc-3.2.2/fh-3.1.2/r-2.1.0/rr-1.1.2/sc-1.4.2/se-1.2.0/datatables.min.css"/>\n+<link rel="stylesheet" href="/static/flowtools/css/parallelCoordinates.css"/>\n+\n+<script type="text/javascript" src="https://cdn.datatables.net/v/dt/pdfmake-0.1.18/dt-1.10.12/b-1.2.1/b-colvis-1.2.1/b-html5-1.2.1/cr-1.3.2/fc-3.2.2/fh-3.1.2/r-2.1.0/rr-1.1.2/sc-1.4.2/se-1.2.0/datatables.min.js"></script>\n+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>\n+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js" type="text/javascript"></script>\n+<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.min.js" type="text/javascript"></script>\n+<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js" type="text/javascript"></script>\n+<script src="https://cdn.plot.ly/plotly-1.0.0.min.js" type="text/javascript"></script>\n+<script src="/static/flowtools/js/csOverview.js" type="text/javascript"></script>\n+<script src="/static/flowtools/js/crossSamplePlots.js" type="text/javascript"></script>\n+<script src="/static/flowtools/js/pCoordMFIstats.js" type="text/javascript"></script>\n+<script src="/static/flowtools/js/pCoordCSstats.js" type="text/javascript"></script>\n+<script src="/static/flowtools/js/color_palette.js" type="text/javascript"></script>\n+<script src="/static/flowtools/js/boxplots.js" type="text/javascript"></script>\n+\n+<style>\n+#input{font-family:Calibri,Arial}\n+table.dataTable tbody td.dt-body-right {\n+    text-align: right;\n+}\n+#div{padding:5px;width:150px;height:100px;text-align:center}\n+table{width:100%;border:0px solid;border-collapse:collapse;text-align:center;}\n+th{background-color:#3e6db0;color:#fff;padding:5px}\n+</style>\n+</head>\n+\n+<body>\n+<div class="container-fluid">\n+    <div class="row" style="padding-bottom:10px;min-height:500px;">\n+        <div  class="col-md-12">\n+            <ul class="nav nav-tabs tabs-main">\n+                <li class="homeTab active" data-value="prop"><a href="#prop" data-toggle="tab">Population Distribution</a></li>\n+                <li class="homeTab" data-value="stackedA"><a href="#stackedA" data-toggle="tab">Stacked Plot</a></li>\n+                <li class="homeTab" data-value="pcoord"><a href="#pcoord" data-toggle="tab">Parallel Coordinates Population Summary</a></li>\n+                <li class="homeTab" data-value="pcoordMFI"><a href="#pcoordMFI" data-toggle="tab">Parallel Coordinates MFI Summary</a></li>\n+                <li class="homeTab" data-value="csstats"><a href="#boxplot" data-toggle="tab">Summary Statistics Boxplots</a></li>\n+            </ul>\n+\n+            <div class="tab-content">\n+                <div class="tab-pane active" id="prop" style="min-height:500px;">\n+                    <div class="row">\n+                        <div id="propDiv">Population Distribution</div>\n+                    </div>\n+                    <div class="row">\n+                    &nbsp;&nbsp;&nbsp;&nbsp;Edit population names below:\n+                    <div id="popnamesDiv"></div>\n+                    </div>\n+                </div>\n+\n+                <div class="tab-pane" id="stackedA" style="min-height:500px;">\n+                    <div class="col-md-12 chartDiv">\n+                        <div id="plotDivA" class="col-md-10" style="height:100%;"></div>\n+\n+                        <div id="popDivA" class="col-md-2" style="heigh'..b'>\n+                          <input type="checkbox" unchecked id="displayMFIC"/>&nbsp;Display MFI<br><br>\n+                          <button id="changeDisplayC" class="igbtn">View per marker</button><br><br>\n+                          <div id="markerWarning" style="display:none;">\n+                            <div class="alert alert-info alert-dismissible fade in" role="alert">\n+                              <button type="button" class="close" data-dismiss="alert" aria-label="Close">\n+                                <span aria-hidden="true">&times;</span></button>\n+                                  Only 5 markers can be displayed at most.\n+                            </div>\n+                          </div>\n+                          <div id="outlierWarning">\n+                            <div class="alert alert-info alert-dismissible fade in" role="alert">\n+                              <button type="button" class="close" data-dismiss="alert" aria-label="Close">\n+                                <span aria-hidden="true">&times;</span></button>\n+                                  The number of outliers is too large to display. Representation shows randomly downsampled outliers.\n+                            </div>\n+                          </div>\n+                        </div>\n+\n+                        <div id="plotDivC" class="col-md-8" style="height:100%;"></div>\n+\n+                        <div id="popDivC" class="col-md-2" style="height:100%;">\n+                            <button id="updateDisplayC" class="igbtn">Reset Display</button>\n+                            <table id="popTableC" class="table table-condensed table-bordered igtable">\n+                                <thead>\n+                                    <tr>\n+                                        <th><input type="checkbox" checked id="popSelectAllC"/></th>\n+                                        <th>Pop. Names</th>\n+                                        <th>Color</th>\n+                                     </tr>\n+                                </thead>\n+                                <tbody>\n+                                </tbody>\n+                            </table>\n+                        </div>\n+                    </div>\n+                </div>\n+            </div>\n+        </div>\n+    </div>\n+</div>\n+\n+\n+</div>\n+</div>\n+<script>\n+var poppropLoaded = false;\n+var stackedALoaded = false;\n+var pCoordLoaded = false;\n+var pCoordMFILoaded = false;\n+var boxplotLoaded = false;\n+\n+$().ready(function() {\n+    $(document).on(\'shown.bs.tab\',\'a[data-toggle="tab"]\', function(e) {\n+      var tab = e.target.getAttribute("href");\n+      if (tab == \'#prop\') {\n+        if (poppropLoaded) {\n+            return true;\n+        }\n+        poppropLoaded = true;\n+        displayProp();\n+      }\n+      if (tab == \'#stackedA\') {\n+        if (stackedALoaded) {\n+            displayPopulationLegend(configAreaplot);\n+            updatePlot(configAreaplot);\n+            return true;\n+        }\n+        stackedALoaded = true;\n+        displayStackedAreaPlot();\n+      }\n+      if (tab == \'#pcoord\') {\n+        if (pCoordLoaded) {\n+            displaySmpTable();\n+            displayTableGrid();\n+            return true;\n+        }\n+        pCoordLoaded = true;\n+        displayParallelCoordinates();\n+      }\n+      if (tab == \'#pcoordMFI\') {\n+        if (pCoordMFILoaded) {\n+            displayPopTablem();\n+            displaySmpTablem();\n+            displayTableGridm();\n+            return true;\n+        }\n+        pCoordMFILoaded = true;\n+        displayParallelCoordinatesMFI();\n+      }\n+      if (tab == \'#boxplot\') {\n+        if (boxplotLoaded) {\n+            displayPopulationLegend(configBoxplot);\n+            displayMarkerTable(configBoxplot);\n+            updateBoxplot(configBoxplot);\n+            return true;\n+        }\n+        boxplotLoaded = true;\n+        displayBoxplot();\n+      }\n+    });\n+\n+    poppropLoaded = true;\n+    displayProp();\n+});\n+</script>\n+</body>\n+</html>\n'