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

Changeset 1:a3ae90eb1232 (2020-06-22)
Previous changeset 0:59f859ea3122 (2017-02-27)
Commit message:
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/collapse_pop commit 1e75b0df5680c0cdd8b2b3e5d4c1f8077b430944"
added:
collapse_pops.py
collapse_pops.xml
static/images/flowtools/liz_colorcode.png
test-data/input.flowclr
test-data/output.flowclr
removed:
collapse_pop/collapse_pops.py
collapse_pop/collapse_pops.xml
collapse_pop/static/images/flowtools/liz_colorcode.png
collapse_pop/test-data/input.flowclr
collapse_pop/test-data/output.flowclr
b
diff -r 59f859ea3122 -r a3ae90eb1232 collapse_pop/collapse_pops.py
--- a/collapse_pop/collapse_pops.py Mon Feb 27 12:43:35 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,110 +0,0 @@
-#!/usr/bin/env python
-######################################################################
-#                  Copyright (c) 2016 Northrop Grumman.
-#                          All rights reserved.
-######################################################################
-
-from __future__ import print_function
-import sys
-import pandas as pd
-
-from argparse import ArgumentParser
-
-
-def is_int(s):
-    try:
-        int(s)
-        return True
-    except ValueError:
-        return False
-
-
-def collapse_populations(in_file, out_file, populations, collapse_in, exit_code):
-    df = pd.read_table(in_file, dtype={'Population': object})
-    df['new_population'] = df.Population
-
-    for i, sets_pop in enumerate(populations):
-        df.loc[df['Population'].isin(sets_pop), ['new_population']] = collapse_in[i]
-
-    df.Population = df.new_population
-    df.drop(['new_population'], inplace=True, axis=1)
-
-    df.to_csv(out_file, sep="\t", index=False)
-
-    sys.exit(exit_code)
-
-
-if __name__ == "__main__":
-    parser = ArgumentParser(
-             prog="ExtractPop",
-             description="Extract events associated to given population numbers.")
-
-    parser.add_argument(
-            '-i',
-            dest="input_file",
-            required=True,
-            help="File location for the text file.")
-
-    parser.add_argument(
-            '-p',
-            dest="pops",
-            required=True,
-            action='append',
-            help="List of populations to collapse.")
-
-    parser.add_argument(
-            '-o',
-            dest="output_file",
-            required=True,
-            help="Name of the output file.")
-
-    parser.add_argument(
-            '-c',
-            dest="collapse_pop",
-            required=True,
-            action='append',
-            help="What to collapse the populations in.")
-
-    args = parser.parse_args()
-
-    # check populations
-    default_values_pop = ["i.e.:2,3,11,25", "default", "Default"]
-    default_values_col = ["i.e.:4", "default", "Default"]
-    pops = [p for p in args.pops]
-    popc = [pc.strip() for pc in args.collapse_pop]
-    exit_code = 0
-    # Check sets of pops to collapse
-    populations = []
-    total_pops = []
-    for pop_set in pops:
-        if pop_set not in default_values_pop:
-            tmp_pops = pop_set.split(",")
-            for popn in tmp_pops:
-                if not is_int(popn):
-                    sys.exit(6)
-                else:
-                    total_pops.append(int(popn))
-            strp_pops = [p.strip() for p in tmp_pops]
-            populations.append(strp_pops)
-        else:
-            sys.exit(4)
-    if len(total_pops) != len(set(total_pops)):
-        sys.exit(7)
-    # Check pops to collapse in
-    collapse_in = []
-    for col_pop in popc:
-        if col_pop not in default_values_col:
-            if not is_int(col_pop):
-                sys.exit(6)
-            else:
-                if int(col_pop) > 40:
-                    exit_code = 2
-                collapse_in.append(col_pop)
-        else:
-            sys.exit(6)
-    if len(collapse_in) != len(set(collapse_in)):
-        exit_code += 3
-
-    collapse_populations(args.input_file, args.output_file, populations, collapse_in, exit_code)
-
-    sys.exit(0)
b
diff -r 59f859ea3122 -r a3ae90eb1232 collapse_pop/collapse_pops.xml
--- a/collapse_pop/collapse_pops.xml Mon Feb 27 12:43:35 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,89 +0,0 @@
-<tool id="collapse_populations" name="Collapse populations" version="1.0">
-  <description>from FLOCK or Cross Sample analysis.</description>
-  <requirements>
-    <requirement type="package" version="0.17.1">pandas</requirement>
-  </requirements>
-  <stdio>
-    <exit_code range="2" level="warning" description="The color code only allows populations between 1 and 40." />
-    <exit_code range="3" level="warning" description="The same population to collapse into is being used several times." />
-    <exit_code range="4" level="fatal" description="Please provide a comma separated list of populations to collapse." />
-    <exit_code range="5" level="warning" description="The color code only allows populations between 1 and 40, and the same population to collapse into is being used several times." />
-    <exit_code range="6" level="fatal" description="The populations must be integers (i.e,: 1,2,4.)" />
-    <exit_code range="7" level="fatal" description="The same population is being collapsed into 2 different populations." />
-  </stdio>
-  <command><![CDATA[
-      python $__tool_directory__/collapse_pops.py -o "${output}" -i "${input}" -p "${population}" -c "${collapse}"
-      #for $repeats in $repeat_option
-        -p "${repeats.population}"
-        -c "${repeats.collapse}"
-      #end for
-  ]]>
-  </command>
-  <inputs>
-    <param format="flowclr" name="input" type="data" label="Source file"/>
-    <param name="population" type="text" label="Collapse the following populations:" value="i.e.:2,3,11,25"/>
-    <param name="collapse" type="text" label="Into population:" value="i.e.:4"/>
-    <repeat name="repeat_option" title="more populations to manipulate:">
-      <param name="population" type="text" label="Collapse the following populations:" value="i.e.:2,3,11,25"/>
-      <param name="collapse" type="text" label="Into population:" value="i.e.:4"/>
-    </repeat>
-  </inputs>
-  <outputs>
-    <data format="flowclr" name="output" label="${input.name} with renamed populations"/>
-  </outputs>
-  <tests>
-    <test>
-      <param name="input" value="input.flowclr"/>
-      <param name="population" value="2,3,4"/>
-      <param name="collapse" value="1"/>
-      <output name="output" file="output.flowclr"/>
-    </test>
-  </tests>
-  <help><![CDATA[
-   This tool collapses several populations into one.
-
------
-
-.. class:: warningmark
-
-Tip: You can use this tool to assign specific colors to your populations in the FLOCK and Cross Sample overview tools. The color scheme we use is the following:
-
-.. image:: static/images/liz_colorcode.png
-
------
-
-**Input**
-
-FLOCK or Cross Sample output - a table of the fluorescence intensities for each event and the population associated with each.
-
-**Output**
-
-The input file with selected populations replaced by the indicated population.
-
------
-
-**Example**
-
-*Input* - fluorescence intensities per marker and population ID per event::
-
-   Marker1 Marker2 Marker3 Population
-   34      45      12      1
-   33      65      10      5
-   19      62      98      2
-   12      36      58      1
-
-*Populations selected:* 2, 5
-
-*Collapse into population:* 3
-
-*Output* - fluorescence intensities per marker and population ID per event::
-
-   Marker1 Marker2 Marker3 Population
-   34      45      12      1
-   33      65      10      3
-   19      62      98      3
-   12      36      58      1
-
-  ]]>
-  </help>
-</tool>
b
diff -r 59f859ea3122 -r a3ae90eb1232 collapse_pop/static/images/flowtools/liz_colorcode.png
b
Binary file collapse_pop/static/images/flowtools/liz_colorcode.png has changed
b
diff -r 59f859ea3122 -r a3ae90eb1232 collapse_pop/test-data/input.flowclr
--- a/collapse_pop/test-data/input.flowclr Mon Feb 27 12:43:35 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,1000 +0,0 @@\n-FSC\tSSC\tCD4\tCCR3\tCD8\tCCR7\tPopulation\n-672\t913\t185\t272\t264\t239\t25\n-369\t193\t0\t208\t32\t600\t4\n-590\t885\t113\t253\t262\t253\t21\n-369\t83\t534\t288\t586\t454\t8\n-287\t127\t0\t0\t568\t434\t11\n-400\t112\t545\t2\t680\t498\t3\n-460\t97\t528\t224\t643\t367\t8\n-592\t226\t572\t278\t639\t364\t13\n-359\t109\t139\t121\t626\t576\t11\n-665\t1023\t266\t211\t215\t219\t25\n-669\t928\t149\t211\t228\t185\t21\n-420\t115\t540\t244\t620\t521\t8\n-543\t296\t478\t69\t242\t208\t22\n-363\t171\t17\t469\t227\t470\t9\n-715\t1023\t207\t158\t279\t275\t25\n-828\t1023\t209\t326\t308\t272\t25\n-347\t91\t483\t87\t570\t528\t3\n-654\t1023\t104\t265\t289\t242\t25\n-366\t99\t484\t249\t645\t221\t13\n-315\t137\t70\t148\t104\t471\t4\n-379\t208\t82\t65\t668\t275\t6\n-385\t142\t526\t220\t652\t310\t8\n-622\t1023\t145\t241\t216\t266\t21\n-600\t1023\t151\t150\t284\t206\t21\n-450\t154\t552\t433\t695\t368\t13\n-405\t225\t85\t211\t163\t547\t4\n-430\t212\t534\t498\t646\t266\t13\n-729\t1023\t201\t288\t289\t301\t25\n-391\t127\t134\t127\t496\t624\t11\n-620\t1023\t164\t301\t217\t267\t25\n-718\t1023\t220\t273\t292\t165\t25\n-340\t78\t517\t283\t685\t532\t8\n-1023\t1023\t519\t526\t592\t406\t19\n-744\t1023\t174\t243\t223\t146\t25\n-667\t469\t406\t35\t199\t261\t22\n-356\t127\t489\t142\t641\t532\t3\n-696\t869\t462\t704\t588\t503\t19\n-367\t138\t72\t113\t650\t545\t11\n-655\t1023\t202\t296\t198\t171\t21\n-726\t325\t371\t270\t200\t285\t22\n-412\t206\t156\t45\t201\t564\t4\n-866\t1023\t181\t312\t333\t192\t25\n-705\t1023\t125\t177\t215\t233\t25\n-414\t194\t29\t40\t556\t556\t11\n-358\t93\t508\t116\t601\t488\t3\n-428\t220\t77\t304\t732\t352\t7\n-417\t191\t4\t175\t645\t549\t11\n-410\t97\t535\t264\t633\t429\t8\n-595\t974\t186\t252\t246\t206\t21\n-432\t208\t552\t35\t613\t273\t3\n-737\t1023\t177\t310\t239\t216\t25\n-729\t1023\t164\t152\t233\t137\t21\n-268\t116\t0\t0\t52\t447\t4\n-721\t1015\t163\t218\t254\t189\t25\n-346\t103\t540\t286\t692\t595\t8\n-429\t118\t33\t75\t655\t566\t11\n-434\t254\t123\t440\t43\t591\t9\n-750\t388\t533\t32\t252\t643\t22\n-331\t84\t489\t0\t677\t621\t3\n-398\t117\t528\t89\t618\t534\t3\n-678\t985\t271\t174\t287\t97\t21\n-375\t92\t531\t128\t637\t549\t3\n-962\t1023\t429\t352\t298\t339\t26\n-669\t1021\t141\t259\t272\t250\t25\n-466\t527\t144\t137\t230\t211\t12\n-428\t89\t495\t450\t621\t342\t13\n-360\t100\t90\t258\t612\t194\t7\n-335\t140\t528\t160\t656\t570\t8\n-363\t82\t513\t0\t584\t570\t3\n-341\t167\t106\t278\t183\t515\t4\n-395\t106\t555\t222\t631\t545\t8\n-299\t84\t483\t222\t643\t496\t8\n-407\t100\t508\t643\t606\t313\t13\n-460\t149\t560\t416\t644\t278\t13\n-670\t1023\t200\t332\t295\t265\t25\n-778\t1003\t133\t232\t263\t230\t25\n-794\t1023\t166\t294\t255\t222\t25\n-296\t182\t37\t177\t0\t563\t4\n-449\t175\t528\t262\t601\t262\t13\n-421\t160\t384\t165\t639\t542\t8\n-343\t107\t484\t181\t659\t541\t8\n-868\t1023\t203\t252\t252\t246\t25\n-385\t140\t95\t524\t623\t627\t9\n-428\t350\t83\t623\t0\t302\t16\n-705\t1023\t177\t252\t283\t266\t25\n-448\t241\t551\t551\t619\t310\t13\n-322\t136\t492\t263\t638\t456\t8\n-364\t88\t0\t112\t178\t450\t4\n-670\t1010\t173\t230\t248\t282\t25\n-601\t923\t142\t228\t230\t186\t21\n-372\t95\t550\t236\t650\t443\t8\n-617\t1023\t207\t72\t324\t276\t21\n-636\t467\t354\t190\t289\t272\t22\n-698\t1023\t161\t263\t288\t261\t25\n-393\t86\t549\t108\t721\t522\t3\n-305\t99\t472\t490\t619\t448\t13\n-370\t75\t514\t409\t629\t337\t13\n-360\t128\t106\t234\t600\t425\t7\n-710\t486\t402\t300\t124\t258\t22\n-671\t1023\t113\t249\t281\t283\t25\n-739\t1023\t250\t293\t303\t300\t25\n-367\t179\t25\t348\t573\t399\t7\n-315\t92\t472\t241\t559\t460\t8\n-323\t82\t510\t367\t646\t463\t8\n-721\t1023\t192\t244\t277\t281\t25\n-702\t932\t429\t292\t316\t300\t25\n-328\t75\t419\t554\t556\t464\t13\n-628\t962\t238\t288\t283\t233\t25\n-337\t120\t531\t216\t671\t580\t8\n-496\t133\t534\t230\t597\t276\t13\n-402\t119\t487\t376\t563\t350\t13\n-325\t84\t474\t96\t645\t423\t3\n-764\t518\t393\t157\t302\t291\t22\n-409\t205\t158\t383\t296\t640\t9\n-327\t101\t516\t57\t677\t602\t3\n-385\t151\t555\t12\t670\t565\t3\n-609\t1017\t140\t192\t285\t252\t21\n-563\t971\t225\t221\t260\t162\t21\n-360\t106\t510\t282\t658\t442\t8\n-306\t126\t0\t278\t4\t544\t4\n-352\t108\t535\t119\t604\t477\t3\n-722\t1023\t201\t315\t247\t234\t25\n-375\t156\t69\t423\t201\t646\t9\n-313\t152\t27\t58\t0\t395\t4\n-397\t108\t550\t258\t680\t528\t8\n-419\t229\t131\t230\t665\t332\t7\n-391\t191\t143\t320\t564\t330\t7\n-337\t119\t529\t127\t629\t534\t3\n-262\t106\t0\t161\t71\t452\t4\n-404\t100\t527\t65\t640\t548\t3\n-647\t1023\t0\t270\t259\t295\t25\n-400\t140\t44\t0\t559\t616\t11\n-724\t1023\t200\t267\t279\t267\t25\n-318\t85\t497\t0\t642\t551\t3\n-783\t1023\t102\t263\t259\t340\t25\n-305\t79\t462\t114\t655\t555\t3\n-361\t105\t510\t156\t592\t498\t3\n-391\t118\t549\t122\t648\t514\t3\n-657\t1023\t158\t186\t265\t50\t21\n-358\t244\t61\t137\t686\t403\t6\n-694\t433\t494\t263\t258\t273\t22\n-671\t1023\t200\t223\t278\t266\t25\n-623\t1001\t166\t295\t287\t218\t21\n-377\t171\t487\t291\t544\t287\t13\n-343\t134\t512\t125\t644\t306\t3\n-453\t21'..b'\t423\t8\n-528\t413\t240\t482\t554\t769\t9\n-417\t125\t96\t147\t627\t615\t11\n-348\t110\t522\t216\t674\t483\t8\n-687\t526\t338\t171\t309\t238\t22\n-677\t1023\t172\t283\t244\t219\t25\n-381\t134\t554\t23\t642\t552\t3\n-419\t258\t37\t317\t686\t360\t7\n-349\t125\t519\t0\t644\t561\t3\n-400\t184\t38\t130\t629\t627\t11\n-391\t208\t523\t262\t610\t274\t13\n-503\t886\t204\t207\t223\t292\t21\n-421\t205\t67\t383\t703\t367\t7\n-357\t122\t506\t334\t632\t516\t8\n-699\t1023\t193\t308\t266\t232\t25\n-332\t90\t450\t579\t621\t424\t13\n-365\t188\t45\t0\t662\t387\t6\n-406\t106\t34\t110\t608\t583\t11\n-382\t205\t81\t60\t96\t551\t4\n-360\t122\t512\t0\t644\t497\t3\n-649\t276\t359\t0\t173\t231\t22\n-416\t134\t529\t500\t603\t324\t13\n-632\t1023\t213\t221\t213\t161\t21\n-375\t88\t529\t151\t658\t577\t3\n-455\t128\t552\t465\t649\t273\t13\n-402\t138\t121\t220\t598\t604\t11\n-815\t1023\t156\t324\t318\t319\t25\n-295\t88\t456\t499\t585\t532\t8\n-393\t574\t0\t246\t142\t193\t12\n-621\t1023\t255\t288\t314\t215\t25\n-342\t86\t490\t181\t619\t421\t8\n-343\t117\t531\t75\t652\t563\t3\n-347\t105\t504\t0\t666\t469\t3\n-615\t1023\t137\t274\t257\t254\t21\n-319\t66\t450\t512\t645\t420\t13\n-413\t130\t125\t0\t627\t569\t11\n-384\t92\t499\t0\t597\t439\t3\n-813\t1023\t137\t296\t245\t160\t25\n-733\t1023\t160\t304\t298\t220\t25\n-807\t1023\t147\t220\t228\t278\t25\n-461\t123\t177\t94\t616\t587\t11\n-339\t56\t470\t78\t645\t471\t3\n-366\t101\t514\t192\t662\t465\t8\n-597\t1023\t181\t255\t302\t206\t21\n-429\t174\t63\t78\t579\t625\t11\n-426\t211\t147\t172\t594\t652\t11\n-679\t944\t79\t237\t266\t189\t21\n-436\t112\t104\t0\t586\t462\t11\n-353\t123\t507\t160\t524\t485\t3\n-362\t388\t167\t213\t479\t248\t7\n-800\t1023\t217\t275\t301\t321\t25\n-357\t102\t534\t162\t623\t496\t3\n-690\t988\t172\t232\t210\t256\t25\n-416\t191\t156\t207\t641\t402\t7\n-401\t98\t549\t28\t616\t547\t3\n-350\t106\t521\t214\t622\t519\t8\n-409\t129\t508\t488\t673\t397\t13\n-435\t219\t50\t220\t138\t588\t4\n-631\t1023\t174\t41\t249\t248\t21\n-393\t153\t564\t140\t688\t569\t3\n-663\t1023\t112\t241\t241\t204\t21\n-438\t123\t559\t6\t663\t520\t3\n-396\t123\t537\t225\t645\t565\t8\n-774\t1023\t192\t275\t283\t206\t25\n-332\t204\t96\t73\t629\t278\t6\n-405\t129\t523\t228\t671\t468\t8\n-908\t1023\t475\t698\t479\t461\t19\n-411\t120\t551\t90\t688\t572\t3\n-391\t86\t528\t356\t652\t478\t8\n-706\t788\t94\t258\t220\t146\t21\n-348\t84\t519\t147\t651\t493\t3\n-405\t238\t133\t192\t144\t598\t4\n-744\t1023\t166\t261\t271\t241\t25\n-433\t219\t560\t471\t519\t256\t13\n-657\t1023\t145\t236\t223\t231\t21\n-373\t170\t188\t201\t666\t675\t11\n-415\t808\t333\t406\t378\t476\t23\n-377\t141\t557\t353\t677\t460\t8\n-382\t170\t534\t251\t637\t621\t8\n-355\t236\t170\t358\t514\t464\t7\n-385\t248\t346\t193\t231\t294\t18\n-419\t119\t563\t328\t675\t472\t8\n-376\t255\t140\t214\t20\t637\t4\n-613\t1023\t117\t174\t120\t250\t21\n-709\t635\t405\t212\t277\t310\t22\n-431\t188\t559\t586\t545\t324\t13\n-367\t110\t54\t103\t586\t579\t11\n-994\t1023\t391\t321\t351\t336\t26\n-364\t84\t534\t142\t679\t526\t3\n-402\t110\t515\t385\t623\t356\t13\n-409\t146\t542\t0\t669\t444\t3\n-727\t1023\t192\t308\t272\t271\t25\n-499\t798\t183\t250\t246\t293\t21\n-278\t103\t487\t166\t655\t559\t8\n-412\t110\t562\t296\t655\t522\t8\n-383\t133\t117\t72\t529\t540\t11\n-346\t119\t215\t167\t589\t524\t11\n-420\t106\t522\t205\t625\t496\t8\n-409\t157\t133\t165\t580\t290\t6\n-348\t72\t135\t234\t0\t438\t4\n-646\t1004\t126\t186\t267\t257\t21\n-779\t499\t428\t213\t203\t150\t24\n-688\t565\t462\t265\t194\t246\t22\n-432\t176\t509\t374\t569\t244\t13\n-325\t153\t0\t181\t601\t322\t6\n-709\t1023\t202\t234\t189\t172\t25\n-331\t67\t492\t0\t599\t521\t3\n-364\t157\t67\t146\t649\t337\t6\n-722\t1023\t192\t264\t258\t228\t25\n-654\t1023\t168\t213\t196\t128\t21\n-690\t1023\t226\t222\t281\t293\t25\n-769\t1023\t205\t298\t223\t263\t25\n-276\t119\t0\t256\t95\t505\t4\n-328\t134\t536\t362\t640\t385\t13\n-414\t182\t98\t210\t612\t521\t11\n-409\t84\t100\t245\t569\t344\t7\n-357\t111\t505\t163\t667\t507\t8\n-769\t975\t168\t278\t224\t134\t25\n-522\t1023\t83\t236\t232\t261\t21\n-730\t1023\t189\t234\t294\t255\t25\n-371\t188\t125\t89\t623\t306\t6\n-391\t139\t522\t437\t622\t266\t13\n-424\t261\t153\t440\t742\t731\t9\n-412\t132\t90\t0\t595\t541\t11\n-612\t554\t374\t266\t210\t323\t22\n-381\t132\t108\t0\t639\t646\t11\n-360\t126\t530\t71\t641\t501\t3\n-579\t974\t68\t194\t251\t225\t21\n-807\t1023\t182\t286\t279\t309\t25\n-826\t1023\t185\t260\t252\t183\t25\n-374\t93\t547\t240\t657\t514\t8\n-395\t106\t500\t246\t566\t287\t13\n-732\t1023\t201\t297\t307\t229\t25\n-397\t134\t542\t95\t687\t598\t3\n-333\t97\t498\t178\t590\t385\t8\n-459\t243\t95\t327\t678\t466\t7\n-397\t174\t25\t20\t654\t616\t11\n-723\t1023\t203\t75\t266\t302\t25\n-507\t158\t526\t485\t550\t190\t13\n-600\t569\t381\t264\t249\t280\t22\n-410\t120\t64\t97\t583\t602\t11\n-343\t103\t526\t140\t685\t482\t3\n-362\t99\t511\t191\t571\t558\t8\n-546\t1023\t181\t286\t234\t244\t21\n-379\t82\t521\t246\t653\t501\t8\n-439\t165\t551\t463\t703\t352\t13\n-298\t125\t0\t260\t186\t485\t4\n-693\t1023\t165\t268\t310\t188\t25\n'
b
diff -r 59f859ea3122 -r a3ae90eb1232 collapse_pop/test-data/output.flowclr
--- a/collapse_pop/test-data/output.flowclr Mon Feb 27 12:43:35 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,1000 +0,0 @@\n-FSC\tSSC\tCD4\tCCR3\tCD8\tCCR7\tPopulation\n-672\t913\t185\t272\t264\t239\t25\n-369\t193\t0\t208\t32\t600\t1\n-590\t885\t113\t253\t262\t253\t21\n-369\t83\t534\t288\t586\t454\t8\n-287\t127\t0\t0\t568\t434\t11\n-400\t112\t545\t2\t680\t498\t1\n-460\t97\t528\t224\t643\t367\t8\n-592\t226\t572\t278\t639\t364\t13\n-359\t109\t139\t121\t626\t576\t11\n-665\t1023\t266\t211\t215\t219\t25\n-669\t928\t149\t211\t228\t185\t21\n-420\t115\t540\t244\t620\t521\t8\n-543\t296\t478\t69\t242\t208\t22\n-363\t171\t17\t469\t227\t470\t9\n-715\t1023\t207\t158\t279\t275\t25\n-828\t1023\t209\t326\t308\t272\t25\n-347\t91\t483\t87\t570\t528\t1\n-654\t1023\t104\t265\t289\t242\t25\n-366\t99\t484\t249\t645\t221\t13\n-315\t137\t70\t148\t104\t471\t1\n-379\t208\t82\t65\t668\t275\t6\n-385\t142\t526\t220\t652\t310\t8\n-622\t1023\t145\t241\t216\t266\t21\n-600\t1023\t151\t150\t284\t206\t21\n-450\t154\t552\t433\t695\t368\t13\n-405\t225\t85\t211\t163\t547\t1\n-430\t212\t534\t498\t646\t266\t13\n-729\t1023\t201\t288\t289\t301\t25\n-391\t127\t134\t127\t496\t624\t11\n-620\t1023\t164\t301\t217\t267\t25\n-718\t1023\t220\t273\t292\t165\t25\n-340\t78\t517\t283\t685\t532\t8\n-1023\t1023\t519\t526\t592\t406\t19\n-744\t1023\t174\t243\t223\t146\t25\n-667\t469\t406\t35\t199\t261\t22\n-356\t127\t489\t142\t641\t532\t1\n-696\t869\t462\t704\t588\t503\t19\n-367\t138\t72\t113\t650\t545\t11\n-655\t1023\t202\t296\t198\t171\t21\n-726\t325\t371\t270\t200\t285\t22\n-412\t206\t156\t45\t201\t564\t1\n-866\t1023\t181\t312\t333\t192\t25\n-705\t1023\t125\t177\t215\t233\t25\n-414\t194\t29\t40\t556\t556\t11\n-358\t93\t508\t116\t601\t488\t1\n-428\t220\t77\t304\t732\t352\t7\n-417\t191\t4\t175\t645\t549\t11\n-410\t97\t535\t264\t633\t429\t8\n-595\t974\t186\t252\t246\t206\t21\n-432\t208\t552\t35\t613\t273\t1\n-737\t1023\t177\t310\t239\t216\t25\n-729\t1023\t164\t152\t233\t137\t21\n-268\t116\t0\t0\t52\t447\t1\n-721\t1015\t163\t218\t254\t189\t25\n-346\t103\t540\t286\t692\t595\t8\n-429\t118\t33\t75\t655\t566\t11\n-434\t254\t123\t440\t43\t591\t9\n-750\t388\t533\t32\t252\t643\t22\n-331\t84\t489\t0\t677\t621\t1\n-398\t117\t528\t89\t618\t534\t1\n-678\t985\t271\t174\t287\t97\t21\n-375\t92\t531\t128\t637\t549\t1\n-962\t1023\t429\t352\t298\t339\t26\n-669\t1021\t141\t259\t272\t250\t25\n-466\t527\t144\t137\t230\t211\t12\n-428\t89\t495\t450\t621\t342\t13\n-360\t100\t90\t258\t612\t194\t7\n-335\t140\t528\t160\t656\t570\t8\n-363\t82\t513\t0\t584\t570\t1\n-341\t167\t106\t278\t183\t515\t1\n-395\t106\t555\t222\t631\t545\t8\n-299\t84\t483\t222\t643\t496\t8\n-407\t100\t508\t643\t606\t313\t13\n-460\t149\t560\t416\t644\t278\t13\n-670\t1023\t200\t332\t295\t265\t25\n-778\t1003\t133\t232\t263\t230\t25\n-794\t1023\t166\t294\t255\t222\t25\n-296\t182\t37\t177\t0\t563\t1\n-449\t175\t528\t262\t601\t262\t13\n-421\t160\t384\t165\t639\t542\t8\n-343\t107\t484\t181\t659\t541\t8\n-868\t1023\t203\t252\t252\t246\t25\n-385\t140\t95\t524\t623\t627\t9\n-428\t350\t83\t623\t0\t302\t16\n-705\t1023\t177\t252\t283\t266\t25\n-448\t241\t551\t551\t619\t310\t13\n-322\t136\t492\t263\t638\t456\t8\n-364\t88\t0\t112\t178\t450\t1\n-670\t1010\t173\t230\t248\t282\t25\n-601\t923\t142\t228\t230\t186\t21\n-372\t95\t550\t236\t650\t443\t8\n-617\t1023\t207\t72\t324\t276\t21\n-636\t467\t354\t190\t289\t272\t22\n-698\t1023\t161\t263\t288\t261\t25\n-393\t86\t549\t108\t721\t522\t1\n-305\t99\t472\t490\t619\t448\t13\n-370\t75\t514\t409\t629\t337\t13\n-360\t128\t106\t234\t600\t425\t7\n-710\t486\t402\t300\t124\t258\t22\n-671\t1023\t113\t249\t281\t283\t25\n-739\t1023\t250\t293\t303\t300\t25\n-367\t179\t25\t348\t573\t399\t7\n-315\t92\t472\t241\t559\t460\t8\n-323\t82\t510\t367\t646\t463\t8\n-721\t1023\t192\t244\t277\t281\t25\n-702\t932\t429\t292\t316\t300\t25\n-328\t75\t419\t554\t556\t464\t13\n-628\t962\t238\t288\t283\t233\t25\n-337\t120\t531\t216\t671\t580\t8\n-496\t133\t534\t230\t597\t276\t13\n-402\t119\t487\t376\t563\t350\t13\n-325\t84\t474\t96\t645\t423\t1\n-764\t518\t393\t157\t302\t291\t22\n-409\t205\t158\t383\t296\t640\t9\n-327\t101\t516\t57\t677\t602\t1\n-385\t151\t555\t12\t670\t565\t1\n-609\t1017\t140\t192\t285\t252\t21\n-563\t971\t225\t221\t260\t162\t21\n-360\t106\t510\t282\t658\t442\t8\n-306\t126\t0\t278\t4\t544\t1\n-352\t108\t535\t119\t604\t477\t1\n-722\t1023\t201\t315\t247\t234\t25\n-375\t156\t69\t423\t201\t646\t9\n-313\t152\t27\t58\t0\t395\t1\n-397\t108\t550\t258\t680\t528\t8\n-419\t229\t131\t230\t665\t332\t7\n-391\t191\t143\t320\t564\t330\t7\n-337\t119\t529\t127\t629\t534\t1\n-262\t106\t0\t161\t71\t452\t1\n-404\t100\t527\t65\t640\t548\t1\n-647\t1023\t0\t270\t259\t295\t25\n-400\t140\t44\t0\t559\t616\t11\n-724\t1023\t200\t267\t279\t267\t25\n-318\t85\t497\t0\t642\t551\t1\n-783\t1023\t102\t263\t259\t340\t25\n-305\t79\t462\t114\t655\t555\t1\n-361\t105\t510\t156\t592\t498\t1\n-391\t118\t549\t122\t648\t514\t1\n-657\t1023\t158\t186\t265\t50\t21\n-358\t244\t61\t137\t686\t403\t6\n-694\t433\t494\t263\t258\t273\t22\n-671\t1023\t200\t223\t278\t266\t25\n-623\t1001\t166\t295\t287\t218\t21\n-377\t171\t487\t291\t544\t287\t13\n-343\t134\t512\t125\t644\t306\t1\n-453\t21'..b'\t423\t8\n-528\t413\t240\t482\t554\t769\t9\n-417\t125\t96\t147\t627\t615\t11\n-348\t110\t522\t216\t674\t483\t8\n-687\t526\t338\t171\t309\t238\t22\n-677\t1023\t172\t283\t244\t219\t25\n-381\t134\t554\t23\t642\t552\t1\n-419\t258\t37\t317\t686\t360\t7\n-349\t125\t519\t0\t644\t561\t1\n-400\t184\t38\t130\t629\t627\t11\n-391\t208\t523\t262\t610\t274\t13\n-503\t886\t204\t207\t223\t292\t21\n-421\t205\t67\t383\t703\t367\t7\n-357\t122\t506\t334\t632\t516\t8\n-699\t1023\t193\t308\t266\t232\t25\n-332\t90\t450\t579\t621\t424\t13\n-365\t188\t45\t0\t662\t387\t6\n-406\t106\t34\t110\t608\t583\t11\n-382\t205\t81\t60\t96\t551\t1\n-360\t122\t512\t0\t644\t497\t1\n-649\t276\t359\t0\t173\t231\t22\n-416\t134\t529\t500\t603\t324\t13\n-632\t1023\t213\t221\t213\t161\t21\n-375\t88\t529\t151\t658\t577\t1\n-455\t128\t552\t465\t649\t273\t13\n-402\t138\t121\t220\t598\t604\t11\n-815\t1023\t156\t324\t318\t319\t25\n-295\t88\t456\t499\t585\t532\t8\n-393\t574\t0\t246\t142\t193\t12\n-621\t1023\t255\t288\t314\t215\t25\n-342\t86\t490\t181\t619\t421\t8\n-343\t117\t531\t75\t652\t563\t1\n-347\t105\t504\t0\t666\t469\t1\n-615\t1023\t137\t274\t257\t254\t21\n-319\t66\t450\t512\t645\t420\t13\n-413\t130\t125\t0\t627\t569\t11\n-384\t92\t499\t0\t597\t439\t1\n-813\t1023\t137\t296\t245\t160\t25\n-733\t1023\t160\t304\t298\t220\t25\n-807\t1023\t147\t220\t228\t278\t25\n-461\t123\t177\t94\t616\t587\t11\n-339\t56\t470\t78\t645\t471\t1\n-366\t101\t514\t192\t662\t465\t8\n-597\t1023\t181\t255\t302\t206\t21\n-429\t174\t63\t78\t579\t625\t11\n-426\t211\t147\t172\t594\t652\t11\n-679\t944\t79\t237\t266\t189\t21\n-436\t112\t104\t0\t586\t462\t11\n-353\t123\t507\t160\t524\t485\t1\n-362\t388\t167\t213\t479\t248\t7\n-800\t1023\t217\t275\t301\t321\t25\n-357\t102\t534\t162\t623\t496\t1\n-690\t988\t172\t232\t210\t256\t25\n-416\t191\t156\t207\t641\t402\t7\n-401\t98\t549\t28\t616\t547\t1\n-350\t106\t521\t214\t622\t519\t8\n-409\t129\t508\t488\t673\t397\t13\n-435\t219\t50\t220\t138\t588\t1\n-631\t1023\t174\t41\t249\t248\t21\n-393\t153\t564\t140\t688\t569\t1\n-663\t1023\t112\t241\t241\t204\t21\n-438\t123\t559\t6\t663\t520\t1\n-396\t123\t537\t225\t645\t565\t8\n-774\t1023\t192\t275\t283\t206\t25\n-332\t204\t96\t73\t629\t278\t6\n-405\t129\t523\t228\t671\t468\t8\n-908\t1023\t475\t698\t479\t461\t19\n-411\t120\t551\t90\t688\t572\t1\n-391\t86\t528\t356\t652\t478\t8\n-706\t788\t94\t258\t220\t146\t21\n-348\t84\t519\t147\t651\t493\t1\n-405\t238\t133\t192\t144\t598\t1\n-744\t1023\t166\t261\t271\t241\t25\n-433\t219\t560\t471\t519\t256\t13\n-657\t1023\t145\t236\t223\t231\t21\n-373\t170\t188\t201\t666\t675\t11\n-415\t808\t333\t406\t378\t476\t23\n-377\t141\t557\t353\t677\t460\t8\n-382\t170\t534\t251\t637\t621\t8\n-355\t236\t170\t358\t514\t464\t7\n-385\t248\t346\t193\t231\t294\t18\n-419\t119\t563\t328\t675\t472\t8\n-376\t255\t140\t214\t20\t637\t1\n-613\t1023\t117\t174\t120\t250\t21\n-709\t635\t405\t212\t277\t310\t22\n-431\t188\t559\t586\t545\t324\t13\n-367\t110\t54\t103\t586\t579\t11\n-994\t1023\t391\t321\t351\t336\t26\n-364\t84\t534\t142\t679\t526\t1\n-402\t110\t515\t385\t623\t356\t13\n-409\t146\t542\t0\t669\t444\t1\n-727\t1023\t192\t308\t272\t271\t25\n-499\t798\t183\t250\t246\t293\t21\n-278\t103\t487\t166\t655\t559\t8\n-412\t110\t562\t296\t655\t522\t8\n-383\t133\t117\t72\t529\t540\t11\n-346\t119\t215\t167\t589\t524\t11\n-420\t106\t522\t205\t625\t496\t8\n-409\t157\t133\t165\t580\t290\t6\n-348\t72\t135\t234\t0\t438\t1\n-646\t1004\t126\t186\t267\t257\t21\n-779\t499\t428\t213\t203\t150\t24\n-688\t565\t462\t265\t194\t246\t22\n-432\t176\t509\t374\t569\t244\t13\n-325\t153\t0\t181\t601\t322\t6\n-709\t1023\t202\t234\t189\t172\t25\n-331\t67\t492\t0\t599\t521\t1\n-364\t157\t67\t146\t649\t337\t6\n-722\t1023\t192\t264\t258\t228\t25\n-654\t1023\t168\t213\t196\t128\t21\n-690\t1023\t226\t222\t281\t293\t25\n-769\t1023\t205\t298\t223\t263\t25\n-276\t119\t0\t256\t95\t505\t1\n-328\t134\t536\t362\t640\t385\t13\n-414\t182\t98\t210\t612\t521\t11\n-409\t84\t100\t245\t569\t344\t7\n-357\t111\t505\t163\t667\t507\t8\n-769\t975\t168\t278\t224\t134\t25\n-522\t1023\t83\t236\t232\t261\t21\n-730\t1023\t189\t234\t294\t255\t25\n-371\t188\t125\t89\t623\t306\t6\n-391\t139\t522\t437\t622\t266\t13\n-424\t261\t153\t440\t742\t731\t9\n-412\t132\t90\t0\t595\t541\t11\n-612\t554\t374\t266\t210\t323\t22\n-381\t132\t108\t0\t639\t646\t11\n-360\t126\t530\t71\t641\t501\t1\n-579\t974\t68\t194\t251\t225\t21\n-807\t1023\t182\t286\t279\t309\t25\n-826\t1023\t185\t260\t252\t183\t25\n-374\t93\t547\t240\t657\t514\t8\n-395\t106\t500\t246\t566\t287\t13\n-732\t1023\t201\t297\t307\t229\t25\n-397\t134\t542\t95\t687\t598\t1\n-333\t97\t498\t178\t590\t385\t8\n-459\t243\t95\t327\t678\t466\t7\n-397\t174\t25\t20\t654\t616\t11\n-723\t1023\t203\t75\t266\t302\t25\n-507\t158\t526\t485\t550\t190\t13\n-600\t569\t381\t264\t249\t280\t22\n-410\t120\t64\t97\t583\t602\t11\n-343\t103\t526\t140\t685\t482\t1\n-362\t99\t511\t191\t571\t558\t8\n-546\t1023\t181\t286\t234\t244\t21\n-379\t82\t521\t246\t653\t501\t8\n-439\t165\t551\t463\t703\t352\t13\n-298\t125\t0\t260\t186\t485\t1\n-693\t1023\t165\t268\t310\t188\t25\n'
b
diff -r 59f859ea3122 -r a3ae90eb1232 collapse_pops.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/collapse_pops.py Mon Jun 22 16:34:35 2020 -0400
[
@@ -0,0 +1,108 @@
+#!/usr/bin/env python
+######################################################################
+#                  Copyright (c) 2016 Northrop Grumman.
+#                          All rights reserved.
+######################################################################
+
+from __future__ import print_function
+import sys
+import pandas as pd
+
+from argparse import ArgumentParser
+
+
+def is_int(s):
+    try:
+        int(s)
+        return True
+    except ValueError:
+        return False
+
+
+def collapse_populations(in_file, out_file, populations, collapse_in, exit_code):
+    df = pd.read_table(in_file, dtype={'Population': object})
+    df['new_population'] = df.Population
+
+    for i, sets_pop in enumerate(populations):
+        df.loc[df['Population'].isin(sets_pop), ['new_population']] = collapse_in[i]
+
+    df.Population = df.new_population
+    df.drop(['new_population'], inplace=True, axis=1)
+
+    df.to_csv(out_file, sep="\t", index=False)
+
+    sys.exit(exit_code)
+
+
+if __name__ == "__main__":
+    parser = ArgumentParser(
+             prog="ExtractPop",
+             description="Extract events associated to given population numbers.")
+
+    parser.add_argument(
+            '-i',
+            dest="input_file",
+            required=True,
+            help="File location for the text file.")
+
+    parser.add_argument(
+            '-p',
+            dest="pops",
+            required=True,
+            action='append',
+            help="List of populations to collapse.")
+
+    parser.add_argument(
+            '-o',
+            dest="output_file",
+            required=True,
+            help="Name of the output file.")
+
+    parser.add_argument(
+            '-c',
+            dest="collapse_pop",
+            required=True,
+            action='append',
+            help="What to collapse the populations in.")
+
+    args = parser.parse_args()
+
+    # check populations
+    default_values_pop = ["i.e.:2,3,11,25", "default", "Default"]
+    default_values_col = ["i.e.:4", "default", "Default"]
+    pops = [p for p in args.pops]
+    popc = [pc.strip() for pc in args.collapse_pop]
+    exit_code = 0
+    # Check sets of pops to collapse
+    populations = []
+    total_pops = []
+    for pop_set in pops:
+        if pop_set not in default_values_pop:
+            tmp_pops = pop_set.split(",")
+            for popn in tmp_pops:
+                if not is_int(popn):
+                    sys.exit(6)
+                else:
+                    total_pops.append(int(popn))
+            strp_pops = [p.strip() for p in tmp_pops]
+            populations.append(strp_pops)
+        else:
+            sys.exit(4)
+    if len(total_pops) != len(set(total_pops)):
+        sys.exit(7)
+    # Check pops to collapse in
+    collapse_in = []
+    for col_pop in popc:
+        if col_pop not in default_values_col:
+            if not is_int(col_pop):
+                sys.exit(6)
+            else:
+                if int(col_pop) > 40:
+                    exit_code = 2
+                collapse_in.append(col_pop)
+        else:
+            sys.exit(6)
+    if len(collapse_in) != len(set(collapse_in)):
+        exit_code += 3
+
+    collapse_populations(args.input_file, args.output_file, populations, collapse_in, exit_code)
b
diff -r 59f859ea3122 -r a3ae90eb1232 collapse_pops.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/collapse_pops.xml Mon Jun 22 16:34:35 2020 -0400
[
@@ -0,0 +1,91 @@
+<tool id="collapse_populations" name="Collapse populations" version="1.0+galaxy1">
+  <description>from FLOCK or Cross Sample analysis</description>
+  <requirements>
+    <requirement type="package" version="0.17.1">pandas</requirement>
+  </requirements>
+  <stdio>
+    <exit_code range="2" level="warning" description="The color code only allows populations between 1 and 40." />
+    <exit_code range="3" level="warning" description="The same population to collapse into is being used several times." />
+    <exit_code range="4" level="fatal" description="Please provide a comma separated list of populations to collapse." />
+    <exit_code range="5" level="warning" description="The color code only allows populations between 1 and 40, and the same population to collapse into is being used several times." />
+    <exit_code range="6" level="fatal" description="The populations must be integers (i.e,: 1,2,4.)" />
+    <exit_code range="7" level="fatal" description="The same population is being collapsed into 2 different populations." />
+  </stdio>
+  <command><![CDATA[
+      python '$__tool_directory__/collapse_pops.py' -o '${output}' -i '${input}' -p '${population}' -c '${collapse}'
+    #for $repeats in $repeat_option
+        -p '${repeats.population}'
+        -c '${repeats.collapse}'
+    #end for
+  ]]>
+  </command>
+  <inputs>
+    <param format="flowclr" name="input" type="data" label="Source file"/>
+    <param name="population" type="text" label="Collapse the following populations:" value="i.e.:2,3,11,25"/>
+    <param name="collapse" type="text" label="Into population:" value="i.e.:4"/>
+    <repeat name="repeat_option" title="more populations to manipulate:">
+      <param name="population" type="text" label="Collapse the following populations:" value="i.e.:2,3,11,25"/>
+      <param name="collapse" type="text" label="Into population:" value="i.e.:4"/>
+    </repeat>
+  </inputs>
+  <outputs>
+    <data format="flowclr" name="output" label="${input.name} with renamed populations"/>
+  </outputs>
+  <tests>
+    <test>
+      <param name="input" value="input.flowclr"/>
+      <param name="population" value="2,3,4"/>
+      <param name="collapse" value="1"/>
+      <output name="output" file="output.flowclr"/>
+    </test>
+  </tests>
+  <help><![CDATA[
+   This tool collapses several populations into one.
+
+-----
+
+.. class:: warningmark
+
+Tip: You can use this tool to assign specific colors to your populations in the FLOCK and Cross Sample overview tools. The color scheme we use is the following:
+
+.. image:: ./static/images/flowtools/liz_colorcode.png
+
+-----
+
+**Input**
+
+FLOCK or Cross Sample output - a table of the fluorescence intensities for each event and the population associated with each.
+
+**Output**
+
+The input file with selected populations replaced by the indicated population.
+
+-----
+
+**Example**
+
+*Input* - fluorescence intensities per marker and population ID per event::
+
+   Marker1 Marker2 Marker3 ... Population
+   34      45      12      ... 1
+   33      65      10      ... 5
+   19      62      98      ... 2
+   12      36      58      ... 1
+   ...     ...     ...     ... ...
+
+*Populations selected:* 2, 5
+
+*Collapse into population:* 3
+
+*Output* - fluorescence intensities per marker and population ID per event::
+
+   Marker1 Marker2 Marker3 ... Population
+   34      45      12      ... 1
+   33      65      10      ... 3
+   19      62      98      ... 3
+   12      36      58      ... 1
+   ...     ...     ...     ... ...
+
+  ]]>
+  </help>
+</tool>
b
diff -r 59f859ea3122 -r a3ae90eb1232 static/images/flowtools/liz_colorcode.png
b
Binary file static/images/flowtools/liz_colorcode.png has changed
b
diff -r 59f859ea3122 -r a3ae90eb1232 test-data/input.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input.flowclr Mon Jun 22 16:34:35 2020 -0400
b
b'@@ -0,0 +1,1000 @@\n+FSC\tSSC\tCD4\tCCR3\tCD8\tCCR7\tPopulation\n+672\t913\t185\t272\t264\t239\t25\n+369\t193\t0\t208\t32\t600\t4\n+590\t885\t113\t253\t262\t253\t21\n+369\t83\t534\t288\t586\t454\t8\n+287\t127\t0\t0\t568\t434\t11\n+400\t112\t545\t2\t680\t498\t3\n+460\t97\t528\t224\t643\t367\t8\n+592\t226\t572\t278\t639\t364\t13\n+359\t109\t139\t121\t626\t576\t11\n+665\t1023\t266\t211\t215\t219\t25\n+669\t928\t149\t211\t228\t185\t21\n+420\t115\t540\t244\t620\t521\t8\n+543\t296\t478\t69\t242\t208\t22\n+363\t171\t17\t469\t227\t470\t9\n+715\t1023\t207\t158\t279\t275\t25\n+828\t1023\t209\t326\t308\t272\t25\n+347\t91\t483\t87\t570\t528\t3\n+654\t1023\t104\t265\t289\t242\t25\n+366\t99\t484\t249\t645\t221\t13\n+315\t137\t70\t148\t104\t471\t4\n+379\t208\t82\t65\t668\t275\t6\n+385\t142\t526\t220\t652\t310\t8\n+622\t1023\t145\t241\t216\t266\t21\n+600\t1023\t151\t150\t284\t206\t21\n+450\t154\t552\t433\t695\t368\t13\n+405\t225\t85\t211\t163\t547\t4\n+430\t212\t534\t498\t646\t266\t13\n+729\t1023\t201\t288\t289\t301\t25\n+391\t127\t134\t127\t496\t624\t11\n+620\t1023\t164\t301\t217\t267\t25\n+718\t1023\t220\t273\t292\t165\t25\n+340\t78\t517\t283\t685\t532\t8\n+1023\t1023\t519\t526\t592\t406\t19\n+744\t1023\t174\t243\t223\t146\t25\n+667\t469\t406\t35\t199\t261\t22\n+356\t127\t489\t142\t641\t532\t3\n+696\t869\t462\t704\t588\t503\t19\n+367\t138\t72\t113\t650\t545\t11\n+655\t1023\t202\t296\t198\t171\t21\n+726\t325\t371\t270\t200\t285\t22\n+412\t206\t156\t45\t201\t564\t4\n+866\t1023\t181\t312\t333\t192\t25\n+705\t1023\t125\t177\t215\t233\t25\n+414\t194\t29\t40\t556\t556\t11\n+358\t93\t508\t116\t601\t488\t3\n+428\t220\t77\t304\t732\t352\t7\n+417\t191\t4\t175\t645\t549\t11\n+410\t97\t535\t264\t633\t429\t8\n+595\t974\t186\t252\t246\t206\t21\n+432\t208\t552\t35\t613\t273\t3\n+737\t1023\t177\t310\t239\t216\t25\n+729\t1023\t164\t152\t233\t137\t21\n+268\t116\t0\t0\t52\t447\t4\n+721\t1015\t163\t218\t254\t189\t25\n+346\t103\t540\t286\t692\t595\t8\n+429\t118\t33\t75\t655\t566\t11\n+434\t254\t123\t440\t43\t591\t9\n+750\t388\t533\t32\t252\t643\t22\n+331\t84\t489\t0\t677\t621\t3\n+398\t117\t528\t89\t618\t534\t3\n+678\t985\t271\t174\t287\t97\t21\n+375\t92\t531\t128\t637\t549\t3\n+962\t1023\t429\t352\t298\t339\t26\n+669\t1021\t141\t259\t272\t250\t25\n+466\t527\t144\t137\t230\t211\t12\n+428\t89\t495\t450\t621\t342\t13\n+360\t100\t90\t258\t612\t194\t7\n+335\t140\t528\t160\t656\t570\t8\n+363\t82\t513\t0\t584\t570\t3\n+341\t167\t106\t278\t183\t515\t4\n+395\t106\t555\t222\t631\t545\t8\n+299\t84\t483\t222\t643\t496\t8\n+407\t100\t508\t643\t606\t313\t13\n+460\t149\t560\t416\t644\t278\t13\n+670\t1023\t200\t332\t295\t265\t25\n+778\t1003\t133\t232\t263\t230\t25\n+794\t1023\t166\t294\t255\t222\t25\n+296\t182\t37\t177\t0\t563\t4\n+449\t175\t528\t262\t601\t262\t13\n+421\t160\t384\t165\t639\t542\t8\n+343\t107\t484\t181\t659\t541\t8\n+868\t1023\t203\t252\t252\t246\t25\n+385\t140\t95\t524\t623\t627\t9\n+428\t350\t83\t623\t0\t302\t16\n+705\t1023\t177\t252\t283\t266\t25\n+448\t241\t551\t551\t619\t310\t13\n+322\t136\t492\t263\t638\t456\t8\n+364\t88\t0\t112\t178\t450\t4\n+670\t1010\t173\t230\t248\t282\t25\n+601\t923\t142\t228\t230\t186\t21\n+372\t95\t550\t236\t650\t443\t8\n+617\t1023\t207\t72\t324\t276\t21\n+636\t467\t354\t190\t289\t272\t22\n+698\t1023\t161\t263\t288\t261\t25\n+393\t86\t549\t108\t721\t522\t3\n+305\t99\t472\t490\t619\t448\t13\n+370\t75\t514\t409\t629\t337\t13\n+360\t128\t106\t234\t600\t425\t7\n+710\t486\t402\t300\t124\t258\t22\n+671\t1023\t113\t249\t281\t283\t25\n+739\t1023\t250\t293\t303\t300\t25\n+367\t179\t25\t348\t573\t399\t7\n+315\t92\t472\t241\t559\t460\t8\n+323\t82\t510\t367\t646\t463\t8\n+721\t1023\t192\t244\t277\t281\t25\n+702\t932\t429\t292\t316\t300\t25\n+328\t75\t419\t554\t556\t464\t13\n+628\t962\t238\t288\t283\t233\t25\n+337\t120\t531\t216\t671\t580\t8\n+496\t133\t534\t230\t597\t276\t13\n+402\t119\t487\t376\t563\t350\t13\n+325\t84\t474\t96\t645\t423\t3\n+764\t518\t393\t157\t302\t291\t22\n+409\t205\t158\t383\t296\t640\t9\n+327\t101\t516\t57\t677\t602\t3\n+385\t151\t555\t12\t670\t565\t3\n+609\t1017\t140\t192\t285\t252\t21\n+563\t971\t225\t221\t260\t162\t21\n+360\t106\t510\t282\t658\t442\t8\n+306\t126\t0\t278\t4\t544\t4\n+352\t108\t535\t119\t604\t477\t3\n+722\t1023\t201\t315\t247\t234\t25\n+375\t156\t69\t423\t201\t646\t9\n+313\t152\t27\t58\t0\t395\t4\n+397\t108\t550\t258\t680\t528\t8\n+419\t229\t131\t230\t665\t332\t7\n+391\t191\t143\t320\t564\t330\t7\n+337\t119\t529\t127\t629\t534\t3\n+262\t106\t0\t161\t71\t452\t4\n+404\t100\t527\t65\t640\t548\t3\n+647\t1023\t0\t270\t259\t295\t25\n+400\t140\t44\t0\t559\t616\t11\n+724\t1023\t200\t267\t279\t267\t25\n+318\t85\t497\t0\t642\t551\t3\n+783\t1023\t102\t263\t259\t340\t25\n+305\t79\t462\t114\t655\t555\t3\n+361\t105\t510\t156\t592\t498\t3\n+391\t118\t549\t122\t648\t514\t3\n+657\t1023\t158\t186\t265\t50\t21\n+358\t244\t61\t137\t686\t403\t6\n+694\t433\t494\t263\t258\t273\t22\n+671\t1023\t200\t223\t278\t266\t25\n+623\t1001\t166\t295\t287\t218\t21\n+377\t171\t487\t291\t544\t287\t13\n+343\t134\t512\t125\t644\t306\t3\n+453\t21'..b'\t423\t8\n+528\t413\t240\t482\t554\t769\t9\n+417\t125\t96\t147\t627\t615\t11\n+348\t110\t522\t216\t674\t483\t8\n+687\t526\t338\t171\t309\t238\t22\n+677\t1023\t172\t283\t244\t219\t25\n+381\t134\t554\t23\t642\t552\t3\n+419\t258\t37\t317\t686\t360\t7\n+349\t125\t519\t0\t644\t561\t3\n+400\t184\t38\t130\t629\t627\t11\n+391\t208\t523\t262\t610\t274\t13\n+503\t886\t204\t207\t223\t292\t21\n+421\t205\t67\t383\t703\t367\t7\n+357\t122\t506\t334\t632\t516\t8\n+699\t1023\t193\t308\t266\t232\t25\n+332\t90\t450\t579\t621\t424\t13\n+365\t188\t45\t0\t662\t387\t6\n+406\t106\t34\t110\t608\t583\t11\n+382\t205\t81\t60\t96\t551\t4\n+360\t122\t512\t0\t644\t497\t3\n+649\t276\t359\t0\t173\t231\t22\n+416\t134\t529\t500\t603\t324\t13\n+632\t1023\t213\t221\t213\t161\t21\n+375\t88\t529\t151\t658\t577\t3\n+455\t128\t552\t465\t649\t273\t13\n+402\t138\t121\t220\t598\t604\t11\n+815\t1023\t156\t324\t318\t319\t25\n+295\t88\t456\t499\t585\t532\t8\n+393\t574\t0\t246\t142\t193\t12\n+621\t1023\t255\t288\t314\t215\t25\n+342\t86\t490\t181\t619\t421\t8\n+343\t117\t531\t75\t652\t563\t3\n+347\t105\t504\t0\t666\t469\t3\n+615\t1023\t137\t274\t257\t254\t21\n+319\t66\t450\t512\t645\t420\t13\n+413\t130\t125\t0\t627\t569\t11\n+384\t92\t499\t0\t597\t439\t3\n+813\t1023\t137\t296\t245\t160\t25\n+733\t1023\t160\t304\t298\t220\t25\n+807\t1023\t147\t220\t228\t278\t25\n+461\t123\t177\t94\t616\t587\t11\n+339\t56\t470\t78\t645\t471\t3\n+366\t101\t514\t192\t662\t465\t8\n+597\t1023\t181\t255\t302\t206\t21\n+429\t174\t63\t78\t579\t625\t11\n+426\t211\t147\t172\t594\t652\t11\n+679\t944\t79\t237\t266\t189\t21\n+436\t112\t104\t0\t586\t462\t11\n+353\t123\t507\t160\t524\t485\t3\n+362\t388\t167\t213\t479\t248\t7\n+800\t1023\t217\t275\t301\t321\t25\n+357\t102\t534\t162\t623\t496\t3\n+690\t988\t172\t232\t210\t256\t25\n+416\t191\t156\t207\t641\t402\t7\n+401\t98\t549\t28\t616\t547\t3\n+350\t106\t521\t214\t622\t519\t8\n+409\t129\t508\t488\t673\t397\t13\n+435\t219\t50\t220\t138\t588\t4\n+631\t1023\t174\t41\t249\t248\t21\n+393\t153\t564\t140\t688\t569\t3\n+663\t1023\t112\t241\t241\t204\t21\n+438\t123\t559\t6\t663\t520\t3\n+396\t123\t537\t225\t645\t565\t8\n+774\t1023\t192\t275\t283\t206\t25\n+332\t204\t96\t73\t629\t278\t6\n+405\t129\t523\t228\t671\t468\t8\n+908\t1023\t475\t698\t479\t461\t19\n+411\t120\t551\t90\t688\t572\t3\n+391\t86\t528\t356\t652\t478\t8\n+706\t788\t94\t258\t220\t146\t21\n+348\t84\t519\t147\t651\t493\t3\n+405\t238\t133\t192\t144\t598\t4\n+744\t1023\t166\t261\t271\t241\t25\n+433\t219\t560\t471\t519\t256\t13\n+657\t1023\t145\t236\t223\t231\t21\n+373\t170\t188\t201\t666\t675\t11\n+415\t808\t333\t406\t378\t476\t23\n+377\t141\t557\t353\t677\t460\t8\n+382\t170\t534\t251\t637\t621\t8\n+355\t236\t170\t358\t514\t464\t7\n+385\t248\t346\t193\t231\t294\t18\n+419\t119\t563\t328\t675\t472\t8\n+376\t255\t140\t214\t20\t637\t4\n+613\t1023\t117\t174\t120\t250\t21\n+709\t635\t405\t212\t277\t310\t22\n+431\t188\t559\t586\t545\t324\t13\n+367\t110\t54\t103\t586\t579\t11\n+994\t1023\t391\t321\t351\t336\t26\n+364\t84\t534\t142\t679\t526\t3\n+402\t110\t515\t385\t623\t356\t13\n+409\t146\t542\t0\t669\t444\t3\n+727\t1023\t192\t308\t272\t271\t25\n+499\t798\t183\t250\t246\t293\t21\n+278\t103\t487\t166\t655\t559\t8\n+412\t110\t562\t296\t655\t522\t8\n+383\t133\t117\t72\t529\t540\t11\n+346\t119\t215\t167\t589\t524\t11\n+420\t106\t522\t205\t625\t496\t8\n+409\t157\t133\t165\t580\t290\t6\n+348\t72\t135\t234\t0\t438\t4\n+646\t1004\t126\t186\t267\t257\t21\n+779\t499\t428\t213\t203\t150\t24\n+688\t565\t462\t265\t194\t246\t22\n+432\t176\t509\t374\t569\t244\t13\n+325\t153\t0\t181\t601\t322\t6\n+709\t1023\t202\t234\t189\t172\t25\n+331\t67\t492\t0\t599\t521\t3\n+364\t157\t67\t146\t649\t337\t6\n+722\t1023\t192\t264\t258\t228\t25\n+654\t1023\t168\t213\t196\t128\t21\n+690\t1023\t226\t222\t281\t293\t25\n+769\t1023\t205\t298\t223\t263\t25\n+276\t119\t0\t256\t95\t505\t4\n+328\t134\t536\t362\t640\t385\t13\n+414\t182\t98\t210\t612\t521\t11\n+409\t84\t100\t245\t569\t344\t7\n+357\t111\t505\t163\t667\t507\t8\n+769\t975\t168\t278\t224\t134\t25\n+522\t1023\t83\t236\t232\t261\t21\n+730\t1023\t189\t234\t294\t255\t25\n+371\t188\t125\t89\t623\t306\t6\n+391\t139\t522\t437\t622\t266\t13\n+424\t261\t153\t440\t742\t731\t9\n+412\t132\t90\t0\t595\t541\t11\n+612\t554\t374\t266\t210\t323\t22\n+381\t132\t108\t0\t639\t646\t11\n+360\t126\t530\t71\t641\t501\t3\n+579\t974\t68\t194\t251\t225\t21\n+807\t1023\t182\t286\t279\t309\t25\n+826\t1023\t185\t260\t252\t183\t25\n+374\t93\t547\t240\t657\t514\t8\n+395\t106\t500\t246\t566\t287\t13\n+732\t1023\t201\t297\t307\t229\t25\n+397\t134\t542\t95\t687\t598\t3\n+333\t97\t498\t178\t590\t385\t8\n+459\t243\t95\t327\t678\t466\t7\n+397\t174\t25\t20\t654\t616\t11\n+723\t1023\t203\t75\t266\t302\t25\n+507\t158\t526\t485\t550\t190\t13\n+600\t569\t381\t264\t249\t280\t22\n+410\t120\t64\t97\t583\t602\t11\n+343\t103\t526\t140\t685\t482\t3\n+362\t99\t511\t191\t571\t558\t8\n+546\t1023\t181\t286\t234\t244\t21\n+379\t82\t521\t246\t653\t501\t8\n+439\t165\t551\t463\t703\t352\t13\n+298\t125\t0\t260\t186\t485\t4\n+693\t1023\t165\t268\t310\t188\t25\n'
b
diff -r 59f859ea3122 -r a3ae90eb1232 test-data/output.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/output.flowclr Mon Jun 22 16:34:35 2020 -0400
b
b'@@ -0,0 +1,1000 @@\n+FSC\tSSC\tCD4\tCCR3\tCD8\tCCR7\tPopulation\n+672\t913\t185\t272\t264\t239\t25\n+369\t193\t0\t208\t32\t600\t1\n+590\t885\t113\t253\t262\t253\t21\n+369\t83\t534\t288\t586\t454\t8\n+287\t127\t0\t0\t568\t434\t11\n+400\t112\t545\t2\t680\t498\t1\n+460\t97\t528\t224\t643\t367\t8\n+592\t226\t572\t278\t639\t364\t13\n+359\t109\t139\t121\t626\t576\t11\n+665\t1023\t266\t211\t215\t219\t25\n+669\t928\t149\t211\t228\t185\t21\n+420\t115\t540\t244\t620\t521\t8\n+543\t296\t478\t69\t242\t208\t22\n+363\t171\t17\t469\t227\t470\t9\n+715\t1023\t207\t158\t279\t275\t25\n+828\t1023\t209\t326\t308\t272\t25\n+347\t91\t483\t87\t570\t528\t1\n+654\t1023\t104\t265\t289\t242\t25\n+366\t99\t484\t249\t645\t221\t13\n+315\t137\t70\t148\t104\t471\t1\n+379\t208\t82\t65\t668\t275\t6\n+385\t142\t526\t220\t652\t310\t8\n+622\t1023\t145\t241\t216\t266\t21\n+600\t1023\t151\t150\t284\t206\t21\n+450\t154\t552\t433\t695\t368\t13\n+405\t225\t85\t211\t163\t547\t1\n+430\t212\t534\t498\t646\t266\t13\n+729\t1023\t201\t288\t289\t301\t25\n+391\t127\t134\t127\t496\t624\t11\n+620\t1023\t164\t301\t217\t267\t25\n+718\t1023\t220\t273\t292\t165\t25\n+340\t78\t517\t283\t685\t532\t8\n+1023\t1023\t519\t526\t592\t406\t19\n+744\t1023\t174\t243\t223\t146\t25\n+667\t469\t406\t35\t199\t261\t22\n+356\t127\t489\t142\t641\t532\t1\n+696\t869\t462\t704\t588\t503\t19\n+367\t138\t72\t113\t650\t545\t11\n+655\t1023\t202\t296\t198\t171\t21\n+726\t325\t371\t270\t200\t285\t22\n+412\t206\t156\t45\t201\t564\t1\n+866\t1023\t181\t312\t333\t192\t25\n+705\t1023\t125\t177\t215\t233\t25\n+414\t194\t29\t40\t556\t556\t11\n+358\t93\t508\t116\t601\t488\t1\n+428\t220\t77\t304\t732\t352\t7\n+417\t191\t4\t175\t645\t549\t11\n+410\t97\t535\t264\t633\t429\t8\n+595\t974\t186\t252\t246\t206\t21\n+432\t208\t552\t35\t613\t273\t1\n+737\t1023\t177\t310\t239\t216\t25\n+729\t1023\t164\t152\t233\t137\t21\n+268\t116\t0\t0\t52\t447\t1\n+721\t1015\t163\t218\t254\t189\t25\n+346\t103\t540\t286\t692\t595\t8\n+429\t118\t33\t75\t655\t566\t11\n+434\t254\t123\t440\t43\t591\t9\n+750\t388\t533\t32\t252\t643\t22\n+331\t84\t489\t0\t677\t621\t1\n+398\t117\t528\t89\t618\t534\t1\n+678\t985\t271\t174\t287\t97\t21\n+375\t92\t531\t128\t637\t549\t1\n+962\t1023\t429\t352\t298\t339\t26\n+669\t1021\t141\t259\t272\t250\t25\n+466\t527\t144\t137\t230\t211\t12\n+428\t89\t495\t450\t621\t342\t13\n+360\t100\t90\t258\t612\t194\t7\n+335\t140\t528\t160\t656\t570\t8\n+363\t82\t513\t0\t584\t570\t1\n+341\t167\t106\t278\t183\t515\t1\n+395\t106\t555\t222\t631\t545\t8\n+299\t84\t483\t222\t643\t496\t8\n+407\t100\t508\t643\t606\t313\t13\n+460\t149\t560\t416\t644\t278\t13\n+670\t1023\t200\t332\t295\t265\t25\n+778\t1003\t133\t232\t263\t230\t25\n+794\t1023\t166\t294\t255\t222\t25\n+296\t182\t37\t177\t0\t563\t1\n+449\t175\t528\t262\t601\t262\t13\n+421\t160\t384\t165\t639\t542\t8\n+343\t107\t484\t181\t659\t541\t8\n+868\t1023\t203\t252\t252\t246\t25\n+385\t140\t95\t524\t623\t627\t9\n+428\t350\t83\t623\t0\t302\t16\n+705\t1023\t177\t252\t283\t266\t25\n+448\t241\t551\t551\t619\t310\t13\n+322\t136\t492\t263\t638\t456\t8\n+364\t88\t0\t112\t178\t450\t1\n+670\t1010\t173\t230\t248\t282\t25\n+601\t923\t142\t228\t230\t186\t21\n+372\t95\t550\t236\t650\t443\t8\n+617\t1023\t207\t72\t324\t276\t21\n+636\t467\t354\t190\t289\t272\t22\n+698\t1023\t161\t263\t288\t261\t25\n+393\t86\t549\t108\t721\t522\t1\n+305\t99\t472\t490\t619\t448\t13\n+370\t75\t514\t409\t629\t337\t13\n+360\t128\t106\t234\t600\t425\t7\n+710\t486\t402\t300\t124\t258\t22\n+671\t1023\t113\t249\t281\t283\t25\n+739\t1023\t250\t293\t303\t300\t25\n+367\t179\t25\t348\t573\t399\t7\n+315\t92\t472\t241\t559\t460\t8\n+323\t82\t510\t367\t646\t463\t8\n+721\t1023\t192\t244\t277\t281\t25\n+702\t932\t429\t292\t316\t300\t25\n+328\t75\t419\t554\t556\t464\t13\n+628\t962\t238\t288\t283\t233\t25\n+337\t120\t531\t216\t671\t580\t8\n+496\t133\t534\t230\t597\t276\t13\n+402\t119\t487\t376\t563\t350\t13\n+325\t84\t474\t96\t645\t423\t1\n+764\t518\t393\t157\t302\t291\t22\n+409\t205\t158\t383\t296\t640\t9\n+327\t101\t516\t57\t677\t602\t1\n+385\t151\t555\t12\t670\t565\t1\n+609\t1017\t140\t192\t285\t252\t21\n+563\t971\t225\t221\t260\t162\t21\n+360\t106\t510\t282\t658\t442\t8\n+306\t126\t0\t278\t4\t544\t1\n+352\t108\t535\t119\t604\t477\t1\n+722\t1023\t201\t315\t247\t234\t25\n+375\t156\t69\t423\t201\t646\t9\n+313\t152\t27\t58\t0\t395\t1\n+397\t108\t550\t258\t680\t528\t8\n+419\t229\t131\t230\t665\t332\t7\n+391\t191\t143\t320\t564\t330\t7\n+337\t119\t529\t127\t629\t534\t1\n+262\t106\t0\t161\t71\t452\t1\n+404\t100\t527\t65\t640\t548\t1\n+647\t1023\t0\t270\t259\t295\t25\n+400\t140\t44\t0\t559\t616\t11\n+724\t1023\t200\t267\t279\t267\t25\n+318\t85\t497\t0\t642\t551\t1\n+783\t1023\t102\t263\t259\t340\t25\n+305\t79\t462\t114\t655\t555\t1\n+361\t105\t510\t156\t592\t498\t1\n+391\t118\t549\t122\t648\t514\t1\n+657\t1023\t158\t186\t265\t50\t21\n+358\t244\t61\t137\t686\t403\t6\n+694\t433\t494\t263\t258\t273\t22\n+671\t1023\t200\t223\t278\t266\t25\n+623\t1001\t166\t295\t287\t218\t21\n+377\t171\t487\t291\t544\t287\t13\n+343\t134\t512\t125\t644\t306\t1\n+453\t21'..b'\t423\t8\n+528\t413\t240\t482\t554\t769\t9\n+417\t125\t96\t147\t627\t615\t11\n+348\t110\t522\t216\t674\t483\t8\n+687\t526\t338\t171\t309\t238\t22\n+677\t1023\t172\t283\t244\t219\t25\n+381\t134\t554\t23\t642\t552\t1\n+419\t258\t37\t317\t686\t360\t7\n+349\t125\t519\t0\t644\t561\t1\n+400\t184\t38\t130\t629\t627\t11\n+391\t208\t523\t262\t610\t274\t13\n+503\t886\t204\t207\t223\t292\t21\n+421\t205\t67\t383\t703\t367\t7\n+357\t122\t506\t334\t632\t516\t8\n+699\t1023\t193\t308\t266\t232\t25\n+332\t90\t450\t579\t621\t424\t13\n+365\t188\t45\t0\t662\t387\t6\n+406\t106\t34\t110\t608\t583\t11\n+382\t205\t81\t60\t96\t551\t1\n+360\t122\t512\t0\t644\t497\t1\n+649\t276\t359\t0\t173\t231\t22\n+416\t134\t529\t500\t603\t324\t13\n+632\t1023\t213\t221\t213\t161\t21\n+375\t88\t529\t151\t658\t577\t1\n+455\t128\t552\t465\t649\t273\t13\n+402\t138\t121\t220\t598\t604\t11\n+815\t1023\t156\t324\t318\t319\t25\n+295\t88\t456\t499\t585\t532\t8\n+393\t574\t0\t246\t142\t193\t12\n+621\t1023\t255\t288\t314\t215\t25\n+342\t86\t490\t181\t619\t421\t8\n+343\t117\t531\t75\t652\t563\t1\n+347\t105\t504\t0\t666\t469\t1\n+615\t1023\t137\t274\t257\t254\t21\n+319\t66\t450\t512\t645\t420\t13\n+413\t130\t125\t0\t627\t569\t11\n+384\t92\t499\t0\t597\t439\t1\n+813\t1023\t137\t296\t245\t160\t25\n+733\t1023\t160\t304\t298\t220\t25\n+807\t1023\t147\t220\t228\t278\t25\n+461\t123\t177\t94\t616\t587\t11\n+339\t56\t470\t78\t645\t471\t1\n+366\t101\t514\t192\t662\t465\t8\n+597\t1023\t181\t255\t302\t206\t21\n+429\t174\t63\t78\t579\t625\t11\n+426\t211\t147\t172\t594\t652\t11\n+679\t944\t79\t237\t266\t189\t21\n+436\t112\t104\t0\t586\t462\t11\n+353\t123\t507\t160\t524\t485\t1\n+362\t388\t167\t213\t479\t248\t7\n+800\t1023\t217\t275\t301\t321\t25\n+357\t102\t534\t162\t623\t496\t1\n+690\t988\t172\t232\t210\t256\t25\n+416\t191\t156\t207\t641\t402\t7\n+401\t98\t549\t28\t616\t547\t1\n+350\t106\t521\t214\t622\t519\t8\n+409\t129\t508\t488\t673\t397\t13\n+435\t219\t50\t220\t138\t588\t1\n+631\t1023\t174\t41\t249\t248\t21\n+393\t153\t564\t140\t688\t569\t1\n+663\t1023\t112\t241\t241\t204\t21\n+438\t123\t559\t6\t663\t520\t1\n+396\t123\t537\t225\t645\t565\t8\n+774\t1023\t192\t275\t283\t206\t25\n+332\t204\t96\t73\t629\t278\t6\n+405\t129\t523\t228\t671\t468\t8\n+908\t1023\t475\t698\t479\t461\t19\n+411\t120\t551\t90\t688\t572\t1\n+391\t86\t528\t356\t652\t478\t8\n+706\t788\t94\t258\t220\t146\t21\n+348\t84\t519\t147\t651\t493\t1\n+405\t238\t133\t192\t144\t598\t1\n+744\t1023\t166\t261\t271\t241\t25\n+433\t219\t560\t471\t519\t256\t13\n+657\t1023\t145\t236\t223\t231\t21\n+373\t170\t188\t201\t666\t675\t11\n+415\t808\t333\t406\t378\t476\t23\n+377\t141\t557\t353\t677\t460\t8\n+382\t170\t534\t251\t637\t621\t8\n+355\t236\t170\t358\t514\t464\t7\n+385\t248\t346\t193\t231\t294\t18\n+419\t119\t563\t328\t675\t472\t8\n+376\t255\t140\t214\t20\t637\t1\n+613\t1023\t117\t174\t120\t250\t21\n+709\t635\t405\t212\t277\t310\t22\n+431\t188\t559\t586\t545\t324\t13\n+367\t110\t54\t103\t586\t579\t11\n+994\t1023\t391\t321\t351\t336\t26\n+364\t84\t534\t142\t679\t526\t1\n+402\t110\t515\t385\t623\t356\t13\n+409\t146\t542\t0\t669\t444\t1\n+727\t1023\t192\t308\t272\t271\t25\n+499\t798\t183\t250\t246\t293\t21\n+278\t103\t487\t166\t655\t559\t8\n+412\t110\t562\t296\t655\t522\t8\n+383\t133\t117\t72\t529\t540\t11\n+346\t119\t215\t167\t589\t524\t11\n+420\t106\t522\t205\t625\t496\t8\n+409\t157\t133\t165\t580\t290\t6\n+348\t72\t135\t234\t0\t438\t1\n+646\t1004\t126\t186\t267\t257\t21\n+779\t499\t428\t213\t203\t150\t24\n+688\t565\t462\t265\t194\t246\t22\n+432\t176\t509\t374\t569\t244\t13\n+325\t153\t0\t181\t601\t322\t6\n+709\t1023\t202\t234\t189\t172\t25\n+331\t67\t492\t0\t599\t521\t1\n+364\t157\t67\t146\t649\t337\t6\n+722\t1023\t192\t264\t258\t228\t25\n+654\t1023\t168\t213\t196\t128\t21\n+690\t1023\t226\t222\t281\t293\t25\n+769\t1023\t205\t298\t223\t263\t25\n+276\t119\t0\t256\t95\t505\t1\n+328\t134\t536\t362\t640\t385\t13\n+414\t182\t98\t210\t612\t521\t11\n+409\t84\t100\t245\t569\t344\t7\n+357\t111\t505\t163\t667\t507\t8\n+769\t975\t168\t278\t224\t134\t25\n+522\t1023\t83\t236\t232\t261\t21\n+730\t1023\t189\t234\t294\t255\t25\n+371\t188\t125\t89\t623\t306\t6\n+391\t139\t522\t437\t622\t266\t13\n+424\t261\t153\t440\t742\t731\t9\n+412\t132\t90\t0\t595\t541\t11\n+612\t554\t374\t266\t210\t323\t22\n+381\t132\t108\t0\t639\t646\t11\n+360\t126\t530\t71\t641\t501\t1\n+579\t974\t68\t194\t251\t225\t21\n+807\t1023\t182\t286\t279\t309\t25\n+826\t1023\t185\t260\t252\t183\t25\n+374\t93\t547\t240\t657\t514\t8\n+395\t106\t500\t246\t566\t287\t13\n+732\t1023\t201\t297\t307\t229\t25\n+397\t134\t542\t95\t687\t598\t1\n+333\t97\t498\t178\t590\t385\t8\n+459\t243\t95\t327\t678\t466\t7\n+397\t174\t25\t20\t654\t616\t11\n+723\t1023\t203\t75\t266\t302\t25\n+507\t158\t526\t485\t550\t190\t13\n+600\t569\t381\t264\t249\t280\t22\n+410\t120\t64\t97\t583\t602\t11\n+343\t103\t526\t140\t685\t482\t1\n+362\t99\t511\t191\t571\t558\t8\n+546\t1023\t181\t286\t234\t244\t21\n+379\t82\t521\t246\t653\t501\t8\n+439\t165\t551\t463\t703\t352\t13\n+298\t125\t0\t260\t186\t485\t1\n+693\t1023\t165\t268\t310\t188\t25\n'