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

Changeset 1:7a889f2f2e15 (2020-06-22)
Previous changeset 0:479ff3a9023c (2017-02-27)
Commit message:
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/flowclr_summary commit ce895377ed593ace77016bd019a7998e13e470cc"
added:
flowclrstats.py
flowclrstats.xml
test-data/input.flowclr
test-data/out.tabular
test-data/report.tabular
removed:
flowclr_summary/flowclrstats.py
flowclr_summary/flowclrstats.xml
flowclr_summary/test-data/input.flowclr
flowclr_summary/test-data/out.tabular
flowclr_summary/test-data/report.tabular
b
diff -r 479ff3a9023c -r 7a889f2f2e15 flowclr_summary/flowclrstats.py
--- a/flowclr_summary/flowclrstats.py Mon Feb 27 12:57:41 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-
-######################################################################
-#                  Copyright (c) 2016 Northrop Grumman.
-#                          All rights reserved.
-######################################################################
-
-from __future__ import print_function
-import sys
-from argparse import ArgumentParser
-import pandas as pd
-
-
-def get_FLOCK_stats(input_file, output_file, out_file2):
-    df = pd.read_table(input_file)
-    summary = df.groupby('Population').describe().round(1)
-    counts = df['Population'].value_counts()
-    percent = (df['Population'].value_counts(normalize=True) * 100).round(decimals=2)
-    tot_count = len(df['Population'])
-
-    to_rm = summary.loc(axis=0)[:, ['count']].index.tolist()
-    df1 = summary[~summary.index.isin(to_rm)]
-    df1.to_csv(out_file2, sep="\t")
-
-    with open(output_file, "w") as outf:
-        outf.write("Population\tCount\tPercentage\n")
-        for pops in set(df.Population):
-            outf.write("\t".join([str(pops), str(counts.loc[pops]), str(percent.loc[pops])]) + "\n")
-        outf.write("Total\t" + str(tot_count) + "\t \n")
-    return
-
-
-if __name__ == '__main__':
-    parser = ArgumentParser(
-            prog="flowstats",
-            description="Gets statistics on FLOCK run")
-
-    parser.add_argument(
-          '-i',
-          dest="input_file",
-          required=True,
-          help="File locations for flow clr file.")
-
-    parser.add_argument(
-          '-o',
-          dest="out_file",
-          required=True,
-          help="Path to the directory for the output file.")
-
-    parser.add_argument(
-          '-p',
-          dest="out_file2",
-          required=True,
-          help="Path to the directory for the output file.")
-    args = parser.parse_args()
-
-    get_FLOCK_stats(args.input_file, args.out_file, args.out_file2)
-    sys.exit(0)
b
diff -r 479ff3a9023c -r 7a889f2f2e15 flowclr_summary/flowclrstats.xml
--- a/flowclr_summary/flowclrstats.xml Mon Feb 27 12:57:41 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,80 +0,0 @@
-<tool id="flowclr_stats" name="Generate summary statistics" version="1.0">
-  <description>of FLOCK output</description>
-  <requirements>
-    <requirement type="package" version="0.16.0">scipy</requirement>
-    <requirement type="package" version="0.17.1">pandas</requirement>
-  </requirements>
-  <stdio>
-    <exit_code range="1:" />
-  </stdio>
-  <command><![CDATA[
-    python $__tool_directory__/flowclrstats.py -i "${input}" -p "${output}" -o "${report}"
- ]]>
-  </command>
-  <inputs>
-    <param format="flowclr" name="input" type="data" collection_type="list" label="FLOCK file"/>
-  </inputs>
-  <outputs>
-    <data format="tabular" name="output" label="Summary statistics of ${input.name}"/>
-    <data format="tabular" name="report" label="Population report of ${input.name}"/>
-  </outputs>
-  <tests>
-    <test>
-      <param name="input" value="input.flowclr"/>
-      <output name="output" file="out.tabular" />
-      <output name="report" file="report.tabular" />
-    </test>
-  </tests>
-  <help><![CDATA[
-   This tool generates summary statistics on FLOCK output.
-
------
-
-**Input**
-
-Any flowclr file, output from FLOCK or Cross Sample, containing fluorescence intensity value par marker and assigned population.
-
-**Output**
-
-This tool produces two reports. One indicates the population distribution in the input file, the other gives descriptive summary statistics per population and marker.
-
------
-
-**Example**
-
-*Input* - fluorescence intensities per marker per event::
-
-   Marker1 Marker2 Marker3 Population
-   33      47      11      1
-   31      64      11      6
-   21      62      99      2
-   14      34      60      7
-
-*Output* - Summary statistics::
-
-   Population .    Marker1 Marker2 ...
-   1          mean 188.7   71.7    ...
-   1          std  49.6    40.2    ...
-   1          min  107.0   0.0     ...
-   1          25%  149.0   40.0    ...
-   1          50%  183.0   77.0    ...
-   1          75%  222.0   105.0   ...
-   1          max  379.0   147.0   ...
-   2          mean 36.8    186.5   ...
-   2          std  40.6    50.5    ...
-   2          min  0.0     119.0   ...
-   2          25%  0.0     150.0   ...
-   2          50%  20.0    174.0   ...
-   2          75%  73.0    208.0   ...
-   2          max  124.0   433.0   ...
-
-*Output* - Population report::
-
-   Population Count Percentage
-   1          3866  43.92
-   2          2772  31.50
-   3          2163  24.58
-   Total      8801
-]]>
-  </help>
-</tool>
b
diff -r 479ff3a9023c -r 7a889f2f2e15 flowclr_summary/test-data/input.flowclr
--- a/flowclr_summary/test-data/input.flowclr Mon Feb 27 12:57:41 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
b'@@ -1,2000 +0,0 @@\n-FSC\tSSC\tCD4\tCCR3\tCD8\tCCR7\tPopulation\n-331\t143\t550\t85\t24\t124\t10\n-359\t290\t240\t313\t256\t277\t12\n-261\t107\t10\t93\t0\t4\t5\n-431\t216\t109\t55\t604\t193\t6\n-417\t144\t560\t77\t207\t10\t10\n-371\t94\t513\t0\t0\t312\t2\n-765\t1023\t173\t276\t185\t233\t25\n-620\t1023\t165\t229\t245\t287\t21\n-362\t196\t54\t108\t317\t228\t12\n-410\t142\t520\t215\t35\t277\t18\n-282\t166\t6\t0\t5\t97\t5\n-333\t125\t509\t153\t54\t137\t1\n-364\t109\t514\t0\t144\t109\t10\n-587\t306\t358\t236\t174\t230\t22\n-286\t114\t46\t0\t18\t112\t5\n-735\t1023\t201\t284\t223\t175\t25\n-330\t76\t479\t21\t4\t45\t10\n-667\t938\t127\t193\t286\t146\t21\n-376\t92\t560\t194\t0\t26\t1\n-459\t743\t114\t203\t194\t219\t21\n-388\t135\t518\t141\t33\t138\t18\n-554\t1023\t0\t163\t150\t141\t21\n-397\t123\t524\t224\t151\t145\t18\n-592\t219\t69\t124\t617\t302\t6\n-985\t1023\t421\t292\t257\t220\t26\n-398\t193\t23\t91\t609\t162\t6\n-319\t98\t516\t205\t59\t58\t1\n-352\t92\t545\t70\t172\t333\t2\n-346\t88\t82\t84\t196\t98\t5\n-468\t191\t539\t134\t124\t132\t18\n-644\t1023\t158\t242\t257\t123\t21\n-334\t183\t0\t145\t570\t280\t6\n-382\t101\t522\t151\t0\t117\t1\n-433\t172\t64\t0\t614\t166\t6\n-344\t138\t553\t81\t0\t68\t10\n-370\t171\t145\t24\t579\t303\t6\n-282\t159\t0\t101\t514\t169\t6\n-650\t983\t150\t281\t217\t281\t25\n-616\t1023\t124\t212\t258\t181\t21\n-337\t160\t10\t37\t610\t297\t6\n-315\t58\t512\t128\t0\t48\t1\n-1023\t1023\t258\t386\t352\t342\t26\n-455\t107\t551\t183\t0\t235\t18\n-800\t1023\t239\t284\t288\t280\t25\n-344\t129\t41\t0\t185\t40\t5\n-583\t820\t154\t239\t202\t135\t21\n-376\t146\t105\t90\t627\t206\t6\n-634\t1023\t97\t138\t235\t183\t21\n-350\t104\t548\t51\t0\t116\t10\n-604\t987\t203\t256\t188\t247\t21\n-353\t160\t38\t173\t630\t225\t6\n-361\t135\t505\t132\t186\t236\t18\n-304\t105\t494\t0\t0\t144\t2\n-285\t99\t82\t0\t35\t118\t5\n-301\t87\t0\t0\t611\t300\t6\n-575\t895\t149\t252\t212\t99\t21\n-685\t1023\t81\t283\t235\t87\t21\n-262\t138\t3\t73\t31\t107\t5\n-637\t1023\t148\t174\t244\t203\t21\n-355\t124\t100\t75\t632\t179\t6\n-372\t125\t528\t15\t0\t55\t10\n-970\t1023\t212\t249\t303\t282\t26\n-557\t854\t136\t192\t106\t202\t21\n-400\t200\t0\t58\t0\t108\t5\n-1023\t1023\t541\t714\t391\t495\t19\n-606\t1023\t359\t459\t356\t417\t23\n-385\t208\t109\t39\t566\t279\t6\n-367\t196\t48\t179\t205\t153\t12\n-322\t66\t74\t114\t548\t275\t6\n-814\t1023\t215\t243\t240\t226\t25\n-379\t167\t63\t142\t617\t303\t6\n-419\t268\t562\t49\t0\t200\t2\n-426\t187\t160\t123\t549\t185\t6\n-416\t212\t68\t67\t10\t83\t5\n-354\t107\t532\t71\t59\t272\t2\n-437\t232\t562\t0\t210\t130\t2\n-421\t230\t159\t177\t393\t257\t12\n-365\t202\t55\t0\t537\t181\t6\n-315\t104\t505\t88\t0\t118\t10\n-406\t160\t550\t128\t70\t108\t1\n-598\t1023\t140\t256\t234\t258\t21\n-346\t102\t515\t0\t92\t84\t10\n-626\t276\t399\t170\t227\t141\t24\n-319\t72\t546\t0\t0\t73\t10\n-513\t83\t534\t48\t62\t215\t2\n-365\t124\t505\t0\t0\t126\t10\n-322\t115\t527\t0\t75\t70\t10\n-347\t97\t495\t259\t149\t107\t1\n-612\t347\t483\t189\t165\t185\t24\n-394\t133\t75\t0\t620\t225\t6\n-597\t1023\t102\t135\t222\t260\t21\n-479\t276\t645\t65\t89\t92\t10\n-652\t1023\t123\t0\t219\t247\t21\n-419\t158\t101\t102\t583\t240\t6\n-310\t134\t108\t207\t0\t26\t5\n-470\t1023\t374\t475\t433\t480\t23\n-354\t124\t378\t0\t0\t197\t2\n-656\t960\t180\t193\t246\t179\t21\n-699\t941\t213\t266\t293\t172\t25\n-720\t1023\t145\t295\t215\t340\t25\n-577\t859\t90\t237\t149\t83\t21\n-455\t95\t527\t139\t0\t276\t18\n-578\t1023\t347\t465\t307\t431\t23\n-780\t853\t198\t256\t230\t270\t25\n-360\t98\t543\t0\t62\t182\t2\n-388\t181\t0\t83\t591\t176\t6\n-749\t1023\t204\t271\t260\t263\t25\n-735\t418\t510\t74\t113\t232\t22\n-766\t1023\t347\t411\t384\t191\t25\n-440\t144\t203\t136\t619\t334\t6\n-378\t181\t520\t81\t120\t155\t2\n-386\t152\t502\t225\t1\t133\t18\n-732\t501\t493\t156\t228\t199\t24\n-359\t73\t492\t52\t0\t50\t10\n-324\t102\t505\t126\t0\t73\t1\n-790\t1023\t256\t318\t318\t176\t25\n-399\t153\t359\t106\t25\t42\t15\n-350\t162\t6\t132\t586\t215\t6\n-528\t948\t43\t222\t192\t155\t21\n-408\t113\t545\t183\t210\t104\t1\n-595\t885\t136\t156\t236\t131\t21\n-329\t118\t0\t24\t574\t198\t6\n-404\t136\t534\t207\t44\t123\t1\n-319\t172\t79\t0\t0\t185\t5\n-349\t126\t529\t174\t118\t246\t18\n-594\t1023\t154\t287\t261\t125\t21\n-344\t148\t65\t155\t646\t279\t6\n-400\t154\t286\t0\t141\t125\t15\n-442\t219\t574\t51\t136\t222\t2\n-406\t193\t108\t173\t669\t348\t6\n-295\t128\t78\t0\t37\t96\t5\n-394\t133\t545\t200\t17\t209\t18\n-339\t130\t123\t132\t616\t288\t6\n-377\t123\t39\t203\t468\t238\t6\n-382\t145\t506\t0\t27\t110\t10\n-616\t1023\t111\t248\t225\t212\t21\n-622\t1023\t136\t195\t260\t200\t21\n-725\t1023\t127\t258\t233\t144\t25\n-365\t132\t551\t0\t96\t146\t2\n-355\t148\t519\t75\t9\t153\t2\n-299\t129\t0\t57\t621\t289\t6\n-349\t140\t14\t0\t604\t249\t6\n-349\t133\t531\t117\t38\t225\t18\n-360\t153\t81\t132\t596\t193\t6\n-522\t249\t355\t237\t178\t203\t22\n-328\t122\t502\t0\t24\t93\t10\n-318\t92\t448\t112\t22\t193\t2\n-388\t168\t124\t3\t574\t127\t6\n-369\t129\t569\t145\t18\t30\t1\n-902\t1023\t190\t262\t316\t406\t26\n-743\t290\t247\t243\t164\t94\t24\n-334\t1'..b'6\t21\n-372\t123\t550\t83\t12\t0\t10\n-772\t1023\t139\t302\t209\t211\t25\n-721\t497\t510\t257\t217\t193\t24\n-405\t108\t547\t182\t0\t128\t1\n-756\t513\t351\t243\t217\t268\t22\n-773\t1023\t107\t284\t266\t287\t25\n-285\t156\t46\t12\t4\t93\t5\n-701\t1023\t190\t258\t259\t241\t25\n-344\t158\t51\t160\t647\t196\t6\n-654\t1023\t214\t241\t249\t200\t21\n-450\t183\t581\t167\t151\t259\t18\n-559\t895\t128\t149\t207\t178\t21\n-443\t202\t90\t103\t647\t294\t6\n-376\t92\t517\t2\t0\t77\t10\n-439\t148\t557\t142\t60\t179\t18\n-331\t93\t532\t173\t168\t80\t1\n-607\t462\t392\t137\t132\t121\t24\n-339\t86\t520\t62\t34\t204\t2\n-843\t1023\t217\t307\t243\t208\t25\n-841\t1023\t220\t229\t296\t235\t25\n-414\t83\t335\t0\t0\t100\t15\n-376\t127\t495\t255\t28\t298\t18\n-371\t154\t540\t0\t50\t212\t2\n-367\t89\t509\t112\t127\t199\t2\n-315\t104\t520\t15\t0\t143\t2\n-366\t110\t511\t117\t184\t83\t1\n-756\t1023\t244\t241\t255\t255\t25\n-354\t106\t547\t0\t181\t196\t2\n-678\t1023\t237\t283\t238\t309\t25\n-359\t119\t534\t0\t98\t213\t2\n-355\t97\t493\t218\t187\t155\t18\n-649\t1023\t176\t212\t247\t307\t25\n-408\t136\t539\t114\t0\t92\t1\n-414\t232\t157\t100\t122\t246\t12\n-611\t446\t423\t254\t162\t215\t22\n-355\t132\t85\t53\t147\t122\t5\n-334\t164\t121\t0\t559\t216\t6\n-711\t1023\t183\t293\t233\t190\t25\n-440\t328\t295\t321\t199\t227\t12\n-295\t96\t509\t0\t70\t97\t10\n-334\t115\t512\t145\t31\t35\t1\n-369\t102\t533\t134\t115\t146\t18\n-672\t1023\t195\t294\t267\t255\t25\n-683\t1023\t211\t303\t272\t176\t25\n-578\t1023\t343\t455\t376\t411\t23\n-412\t161\t0\t64\t615\t314\t6\n-709\t995\t155\t200\t144\t113\t21\n-577\t1011\t85\t285\t224\t122\t21\n-625\t931\t204\t292\t256\t197\t21\n-363\t200\t41\t11\t558\t219\t6\n-663\t1023\t176\t355\t229\t266\t25\n-399\t182\t558\t155\t0\t146\t18\n-305\t121\t0\t151\t7\t192\t5\n-370\t130\t546\t117\t131\t115\t1\n-412\t177\t98\t34\t627\t180\t6\n-726\t1023\t214\t250\t221\t183\t25\n-789\t1023\t177\t180\t273\t245\t25\n-703\t1023\t93\t241\t252\t158\t21\n-337\t74\t495\t0\t91\t125\t10\n-690\t370\t401\t210\t152\t82\t24\n-346\t109\t49\t181\t595\t294\t6\n-610\t1023\t181\t203\t290\t232\t21\n-385\t105\t557\t100\t0\t53\t10\n-351\t152\t552\t0\t0\t172\t2\n-419\t105\t524\t0\t191\t273\t2\n-455\t209\t552\t0\t96\t241\t2\n-289\t117\t46\t142\t0\t62\t5\n-354\t117\t529\t0\t173\t84\t10\n-368\t95\t507\t189\t0\t109\t1\n-346\t107\t506\t204\t0\t83\t1\n-553\t851\t173\t135\t133\t190\t21\n-336\t107\t55\t135\t570\t188\t6\n-826\t1003\t173\t272\t232\t163\t25\n-566\t857\t109\t248\t166\t224\t21\n-615\t339\t326\t208\t226\t217\t22\n-656\t298\t400\t138\t108\t189\t24\n-346\t135\t538\t259\t0\t142\t18\n-570\t991\t128\t276\t175\t304\t21\n-397\t92\t541\t147\t167\t26\t1\n-341\t150\t108\t0\t650\t183\t6\n-609\t1023\t171\t283\t225\t95\t21\n-651\t1023\t74\t197\t238\t239\t21\n-305\t79\t481\t203\t136\t22\t1\n-571\t1023\t364\t461\t377\t463\t23\n-325\t79\t504\t177\t30\t74\t1\n-404\t679\t175\t204\t209\t199\t12\n-312\t108\t514\t32\t40\t179\t2\n-775\t529\t408\t181\t214\t188\t24\n-425\t166\t589\t116\t0\t271\t18\n-262\t102\t0\t285\t155\t48\t12\n-374\t161\t37\t0\t146\t137\t5\n-347\t92\t92\t0\t643\t147\t6\n-649\t1023\t172\t160\t202\t184\t21\n-378\t179\t0\t0\t613\t194\t6\n-396\t135\t540\t7\t0\t194\t2\n-272\t126\t12\t7\t65\t272\t5\n-462\t313\t0\t208\t78\t83\t12\n-716\t846\t150\t273\t243\t229\t25\n-528\t992\t155\t250\t221\t206\t21\n-635\t888\t145\t188\t221\t77\t21\n-348\t102\t489\t0\t99\t249\t2\n-368\t103\t20\t183\t566\t298\t6\n-802\t906\t91\t167\t151\t203\t25\n-321\t151\t66\t28\t16\t79\t5\n-746\t1023\t206\t318\t265\t202\t25\n-618\t948\t144\t207\t239\t173\t21\n-399\t112\t526\t267\t0\t21\t1\n-450\t1023\t374\t475\t323\t442\t23\n-365\t96\t538\t0\t0\t119\t10\n-432\t210\t89\t249\t116\t190\t12\n-344\t119\t537\t175\t0\t184\t18\n-358\t120\t496\t0\t85\t173\t2\n-353\t180\t153\t194\t543\t29\t6\n-358\t79\t305\t0\t4\t189\t15\n-368\t96\t495\t0\t57\t149\t2\n-420\t135\t131\t21\t604\t266\t6\n-655\t1023\t190\t289\t243\t293\t25\n-312\t111\t485\t33\t0\t31\t10\n-378\t196\t536\t96\t195\t179\t2\n-571\t993\t102\t214\t182\t112\t21\n-362\t105\t533\t14\t100\t139\t2\n-329\t107\t510\t137\t0\t60\t1\n-364\t109\t347\t0\t0\t62\t15\n-627\t1023\t194\t280\t224\t245\t25\n-741\t602\t433\t208\t254\t279\t22\n-333\t98\t520\t229\t0\t28\t1\n-278\t95\t455\t0\t0\t84\t10\n-399\t161\t511\t226\t72\t121\t1\n-328\t78\t46\t0\t564\t85\t6\n-372\t152\t515\t0\t150\t63\t10\n-1023\t1023\t513\t260\t347\t324\t26\n-325\t98\t509\t69\t0\t55\t10\n-327\t177\t141\t187\t639\t334\t6\n-394\t213\t73\t79\t109\t55\t5\n-620\t1023\t115\t173\t229\t121\t21\n-387\t111\t550\t62\t0\t38\t10\n-342\t184\t0\t46\t605\t224\t6\n-346\t217\t98\t215\t0\t218\t12\n-477\t330\t183\t377\t147\t217\t16\n-307\t139\t514\t227\t83\t0\t1\n-364\t123\t537\t121\t0\t154\t18\n-338\t112\t538\t200\t0\t0\t1\n-386\t133\t570\t183\t195\t70\t1\n-768\t1023\t193\t246\t278\t232\t25\n-410\t169\t106\t135\t157\t175\t12\n-416\t112\t43\t0\t613\t294\t6\n-627\t1023\t225\t276\t212\t245\t25\n-350\t104\t68\t0\t623\t193\t6\n-377\t148\t116\t2\t616\t213\t6\n-650\t980\t161\t77\t216\t173\t21\n-342\t158\t510\t0\t0\t167\t2\n-561\t1023\t117\t313\t179\t125\t21\n-331\t176\t497\t172\t0\t141\t1\n'
b
diff -r 479ff3a9023c -r 7a889f2f2e15 flowclr_summary/test-data/out.tabular
--- a/flowclr_summary/test-data/out.tabular Mon Feb 27 12:57:41 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,141 +0,0 @@
-Population CCR3 CCR7 CD4 CD8 FSC SSC
-1 mean 179.5 73.3 522.9 54.7 361.5 121.0
-1 std 42.7 40.1 27.8 62.0 37.1 33.2
-1 min 112.0 0.0 444.0 0.0 262.0 58.0
-1 25% 146.2 42.5 505.0 0.0 334.0 99.0
-1 50% 173.5 79.5 526.0 32.0 359.5 114.5
-1 75% 209.2 106.8 543.0 94.8 385.8 139.0
-1 max 284.0 141.0 588.0 237.0 485.0 322.0
-2 mean 30.2 194.1 526.4 68.8 372.8 128.0
-2 std 38.3 52.8 31.7 71.5 43.8 37.6
-2 min 0.0 128.0 378.0 0.0 266.0 61.0
-2 25% 0.0 153.0 509.0 0.0 344.2 101.0
-2 50% 5.0 184.0 531.0 52.5 367.0 120.0
-2 75% 59.8 222.0 546.0 119.8 397.0 147.8
-2 max 118.0 385.0 596.0 332.0 513.0 303.0
-3 mean 33.0 303.0 532.0 532.0 383.0 184.0
-3 std
-3 min 33.0 303.0 532.0 532.0 383.0 184.0
-3 25% 33.0 303.0 532.0 532.0 383.0 184.0
-3 50% 33.0 303.0 532.0 532.0 383.0 184.0
-3 75% 33.0 303.0 532.0 532.0 383.0 184.0
-3 max 33.0 303.0 532.0 532.0 383.0 184.0
-4 mean 182.5 384.0 50.0 86.0 380.5 234.0
-4 std 75.7 75.0 70.7 73.5 12.0 19.8
-4 min 129.0 331.0 0.0 34.0 372.0 220.0
-4 25% 155.8 357.5 25.0 60.0 376.2 227.0
-4 50% 182.5 384.0 50.0 86.0 380.5 234.0
-4 75% 209.2 410.5 75.0 112.0 384.8 241.0
-4 max 236.0 437.0 100.0 138.0 389.0 248.0
-5 mean 63.0 101.5 64.5 88.1 338.7 160.1
-5 std 63.5 62.5 46.9 84.6 47.1 55.4
-5 min 0.0 0.0 0.0 0.0 261.0 48.0
-5 25% 0.0 57.0 25.0 22.5 301.8 125.0
-5 50% 49.0 104.5 68.0 76.0 332.0 154.0
-5 75% 116.0 143.0 101.2 116.2 374.8 190.2
-5 max 224.0 272.0 196.0 408.0 439.0 560.0
-6 mean 84.7 243.3 70.2 608.5 375.5 153.2
-6 std 65.4 59.8 52.8 48.3 44.5 45.3
-6 min 0.0 2.0 0.0 354.0 262.0 53.0
-6 25% 17.0 212.0 28.0 591.0 350.0 129.0
-6 50% 93.0 252.0 65.0 619.0 376.0 151.0
-6 75% 137.0 287.0 108.0 640.0 398.0 176.0
-6 max 205.0 375.0 281.0 712.0 673.0 445.0
-7 mean 225.4 238.8 69.5 624.5 408.5 182.1
-7 std 21.0 65.3 44.9 55.2 33.3 56.1
-7 min 197.0 141.0 0.0 492.0 378.0 112.0
-7 25% 207.2 183.8 41.2 621.2 384.8 144.5
-7 50% 223.5 255.0 67.0 637.5 399.0 177.5
-7 75% 245.5 273.8 111.2 654.0 415.5 209.2
-7 max 252.0 347.0 126.0 680.0 481.0 299.0
-10 mean 23.1 67.7 521.7 49.8 356.6 118.1
-10 std 32.6 35.8 30.0 62.1 39.7 32.3
-10 min 0.0 0.0 424.0 0.0 261.0 50.0
-10 25% 0.0 41.0 506.0 0.0 330.0 100.0
-10 50% 0.0 72.0 522.0 25.0 354.0 116.0
-10 75% 43.5 94.5 541.5 87.0 382.0 137.0
-10 max 113.0 131.0 645.0 266.0 479.0 276.0
-12 mean 197.6 153.2 115.5 176.8 402.5 283.7
-12 std 56.3 87.1 59.2 104.4 63.4 157.1
-12 min 64.0 0.0 0.0 0.0 262.0 102.0
-12 25% 163.0 97.2 82.8 109.0 361.5 179.8
-12 50% 196.0 156.5 111.0 163.0 405.5 219.0
-12 75% 231.5 214.2 144.8 227.8 441.0 329.8
-12 max 333.0 350.0 295.0 393.0 590.0 679.0
-13 mean 405.0 291.0 348.0 312.0 470.0 425.0
-13 std
-13 min 405.0 291.0 348.0 312.0 470.0 425.0
-13 25% 405.0 291.0 348.0 312.0 470.0 425.0
-13 50% 405.0 291.0 348.0 312.0 470.0 425.0
-13 75% 405.0 291.0 348.0 312.0 470.0 425.0
-13 max 405.0 291.0 348.0 312.0 470.0 425.0
-15 mean 71.0 130.6 305.4 72.7 374.9 129.7
-15 std 66.2 66.1 51.0 86.2 68.8 65.9
-15 min 0.0 0.0 215.0 0.0 262.0 40.0
-15 25% 13.0 95.0 269.0 0.0 331.5 81.5
-15 50% 52.0 141.0 305.0 47.0 369.0 109.0
-15 75% 104.0 180.0 338.5 124.5 406.5 156.5
-15 max 208.0 248.0 396.0 325.0 523.0 280.0
-16 mean 468.6 172.7 115.4 161.9 408.9 423.0
-16 std 66.1 69.5 59.7 36.0 65.6 154.3
-16 min 377.0 49.0 12.0 124.0 322.0 219.0
-16 25% 412.5 147.0 87.5 136.5 363.0 310.0
-16 50% 499.0 193.0 118.0 151.0 403.0 409.0
-16 75% 517.0 210.0 160.0 179.5 454.0 544.0
-16 max 545.0 253.0 183.0 226.0 503.0 625.0
-18 mean 188.0 204.9 527.7 57.2 390.3 132.1
-18 std 45.5 61.7 31.4 65.1 49.0 35.1
-18 min 116.0 131.0 410.0 0.0 262.0 57.0
-18 25% 150.0 158.0 508.0 0.0 361.0 109.0
-18 50% 184.0 183.0 532.0 35.0 385.0 128.0
-18 75% 218.0 241.0 549.5 98.0 417.5 148.5
-18 max 315.0 425.0 591.0 369.0 566.0 264.0
-19 mean 704.1 515.5 492.4 442.4 945.8 984.4
-19 std 170.2 118.9 109.8 136.5 89.4 139.2
-19 min 456.0 380.0 362.0 313.0 777.0 521.0
-19 25% 583.0 450.0 404.0 358.0 899.0 1023.0
-19 50% 751.0 481.0 467.0 395.0 968.0 1023.0
-19 75% 810.0 544.0 541.0 479.0 1023.0 1023.0
-19 max 1023.0 841.0 764.0 804.0 1023.0 1023.0
-21 mean 221.4 172.0 142.3 216.5 614.4 973.4
-21 std 53.6 65.3 49.4 43.4 58.1 74.6
-21 min 0.0 0.0 0.0 84.0 417.0 643.0
-21 25% 193.8 129.5 111.0 192.8 579.0 938.8
-21 50% 230.5 179.0 146.0 222.0 616.0 1023.0
-21 75% 256.0 224.0 173.0 246.0 651.2 1023.0
-21 max 328.0 304.0 311.0 320.0 776.0 1023.0
-22 mean 179.1 260.8 398.4 173.6 680.2 443.1
-22 std 84.5 39.3 57.3 60.4 76.1 96.1
-22 min 0.0 203.0 250.0 25.0 522.0 239.0
-22 25% 131.0 230.0 359.0 137.0 623.0 377.0
-22 50% 186.0 257.0 413.0 174.0 685.0 458.0
-22 75% 243.0 279.0 433.0 217.0 737.0 503.0
-22 max 387.0 388.0 550.0 295.0 855.0 607.0
-23 mean 482.7 423.5 339.7 362.9 546.7 1000.9
-23 std 58.4 37.5 41.5 61.4 89.7 56.3
-23 min 410.0 321.0 196.0 245.0 338.0 740.0
-23 25% 453.8 406.0 322.8 323.8 490.8 1023.0
-23 50% 468.0 434.5 347.5 357.0 554.5 1023.0
-23 75% 490.2 451.5 366.0 388.0 606.2 1023.0
-23 max 738.0 480.0 404.0 609.0 765.0 1023.0
-24 mean 180.9 145.2 401.3 175.7 679.4 404.8
-24 std 74.3 47.1 74.2 54.8 59.1 103.7
-24 min 0.0 25.0 215.0 0.0 568.0 182.0
-24 25% 156.0 118.0 383.0 144.0 634.0 329.0
-24 50% 189.0 141.0 401.0 180.0 675.0 394.0
-24 75% 229.0 187.0 428.0 217.0 707.0 476.0
-24 max 314.0 199.0 573.0 268.0 853.0 693.0
-25 mean 267.9 222.3 184.8 249.6 731.6 1009.3
-25 std 44.2 58.9 48.5 40.8 64.8 52.0
-25 min 147.0 22.0 45.0 107.0 595.0 487.0
-25 25% 243.8 190.0 157.0 226.0 683.0 1023.0
-25 50% 271.0 225.5 188.0 251.0 726.0 1023.0
-25 75% 289.5 263.0 213.0 275.5 774.0 1023.0
-25 max 463.0 384.0 372.0 384.0 917.0 1023.0
-26 mean 334.5 348.9 322.6 304.2 967.1 980.0
-26 std 60.8 75.1 88.2 45.8 63.1 109.3
-26 min 160.0 179.0 180.0 181.0 854.0 573.0
-26 25% 298.0 295.0 245.0 282.0 903.0 1023.0
-26 50% 331.0 346.0 300.0 303.0 995.0 1023.0
-26 75% 370.0 399.0 401.0 340.0 1023.0 1023.0
-26 max 478.0 499.0 513.0 407.0 1023.0 1023.0
b
diff -r 479ff3a9023c -r 7a889f2f2e15 flowclr_summary/test-data/report.tabular
--- a/flowclr_summary/test-data/report.tabular Mon Feb 27 12:57:41 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,22 +0,0 @@
-Population Count Percentage
-1 194 9.7
-2 194 9.7
-3 1 0.05
-4 2 0.1
-5 140 7.0
-6 309 15.46
-7 10 0.5
-10 187 9.35
-12 72 3.6
-13 1 0.05
-15 23 1.15
-16 7 0.35
-18 151 7.55
-19 13 0.65
-21 292 14.61
-22 53 2.65
-23 36 1.8
-24 41 2.05
-25 232 11.61
-26 41 2.05
-Total 1999  
b
diff -r 479ff3a9023c -r 7a889f2f2e15 flowclrstats.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/flowclrstats.py Mon Jun 22 19:55:57 2020 -0400
[
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+
+######################################################################
+#                  Copyright (c) 2016 Northrop Grumman.
+#                          All rights reserved.
+######################################################################
+
+from __future__ import print_function
+from argparse import ArgumentParser
+import pandas as pd
+
+
+def get_FLOCK_stats(input_file, output_file, out_file2):
+    df = pd.read_table(input_file)
+    summary = df.groupby('Population').describe().round(1)
+    counts = df['Population'].value_counts()
+    percent = (df['Population'].value_counts(normalize=True) * 100).round(decimals=2)
+    tot_count = len(df['Population'])
+
+    to_rm = summary.loc(axis=0)[:, ['count']].index.tolist()
+    df1 = summary[~summary.index.isin(to_rm)]
+    df1.to_csv(out_file2, sep="\t")
+
+    with open(output_file, "w") as outf:
+        outf.write("Population\tCount\tPercentage\n")
+        for pops in set(df.Population):
+            outf.write("\t".join([str(pops), str(counts.loc[pops]), str(percent.loc[pops])]) + "\n")
+        outf.write("Total\t" + str(tot_count) + "\t \n")
+    return
+
+
+if __name__ == '__main__':
+    parser = ArgumentParser(
+            prog="flowstats",
+            description="Gets statistics on FLOCK run")
+
+    parser.add_argument(
+          '-i',
+          dest="input_file",
+          required=True,
+          help="File locations for flow clr file.")
+
+    parser.add_argument(
+          '-o',
+          dest="out_file",
+          required=True,
+          help="Path to the directory for the output file.")
+
+    parser.add_argument(
+          '-p',
+          dest="out_file2",
+          required=True,
+          help="Path to the directory for the output file.")
+    args = parser.parse_args()
+
+    get_FLOCK_stats(args.input_file, args.out_file, args.out_file2)
b
diff -r 479ff3a9023c -r 7a889f2f2e15 flowclrstats.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/flowclrstats.xml Mon Jun 22 19:55:57 2020 -0400
[
@@ -0,0 +1,83 @@
+<tool id="flowclr_stats" name="Generate summary statistics" version="1.0+galaxy0">
+  <description>of FLOCK output</description>
+  <requirements>
+    <requirement type="package" version="0.17.1">pandas</requirement>
+  </requirements>
+  <stdio>
+    <exit_code range="1:" />
+  </stdio>
+  <command><![CDATA[
+    python $__tool_directory__/flowclrstats.py -i '${input}' -p '${output}' -o '${report}'
+ ]]>
+  </command>
+  <inputs>
+    <param format="flowclr" name="input" type="data" collection_type="list" label="FLOCK file"/>
+  </inputs>
+  <outputs>
+    <data format="tabular" name="output" label="Summary statistics of ${input.name}"/>
+    <data format="tabular" name="report" label="Population report of ${input.name}"/>
+  </outputs>
+  <tests>
+    <test>
+      <param name="input" value="input.flowclr"/>
+      <output name="output" file="out.tabular" />
+      <output name="report" file="report.tabular" />
+    </test>
+  </tests>
+  <help><![CDATA[
+   This tool generates summary statistics on FLOCK output.
+
+-----
+
+**Input**
+
+Any flowclr file, output from FLOCK or Cross Sample, containing fluorescence intensity value par marker and assigned population.
+
+**Output**
+
+This tool produces two reports. One indicates the population distribution in the input file, the other gives descriptive summary statistics per population and marker.
+
+-----
+
+**Example**
+
+*Input* - fluorescence intensities per marker per event::
+
+   Marker1 Marker2 Marker3 ... Population
+   33      47      11      ... 1
+   31      64      11      ... 6
+   21      62      99      ... 2
+   14      34      60      ... 7
+   ...     ...     ...     ... ...
+
+
+*Output* - Summary statistics::
+
+   Population .    Marker1 Marker2 ...
+   1          mean 188.7   71.7    ...
+   1          std  49.6    40.2    ...
+   1          min  107.0   0.0     ...
+   1          25%  149.0   40.0    ...
+   1          50%  183.0   77.0    ...
+   1          75%  222.0   105.0   ...
+   1          max  379.0   147.0   ...
+   2          mean 36.8    186.5   ...
+   2          std  40.6    50.5    ...
+   2          min  0.0     119.0   ...
+   2          25%  0.0     150.0   ...
+   2          50%  20.0    174.0   ...
+   2          75%  73.0    208.0   ...
+   2          max  124.0   433.0   ...
+   ...        ...  ...     ...     ...
+
+*Output* - Population report::
+
+   Population Count Percentage
+   1          3866  43.92
+   2          2772  31.50
+   3          2163  24.58
+   ...        ...   ...
+   Total      8801
+  ]]>
+  </help>
+</tool>
b
diff -r 479ff3a9023c -r 7a889f2f2e15 test-data/input.flowclr
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/input.flowclr Mon Jun 22 19:55:57 2020 -0400
b
b'@@ -0,0 +1,2000 @@\n+FSC\tSSC\tCD4\tCCR3\tCD8\tCCR7\tPopulation\n+331\t143\t550\t85\t24\t124\t10\n+359\t290\t240\t313\t256\t277\t12\n+261\t107\t10\t93\t0\t4\t5\n+431\t216\t109\t55\t604\t193\t6\n+417\t144\t560\t77\t207\t10\t10\n+371\t94\t513\t0\t0\t312\t2\n+765\t1023\t173\t276\t185\t233\t25\n+620\t1023\t165\t229\t245\t287\t21\n+362\t196\t54\t108\t317\t228\t12\n+410\t142\t520\t215\t35\t277\t18\n+282\t166\t6\t0\t5\t97\t5\n+333\t125\t509\t153\t54\t137\t1\n+364\t109\t514\t0\t144\t109\t10\n+587\t306\t358\t236\t174\t230\t22\n+286\t114\t46\t0\t18\t112\t5\n+735\t1023\t201\t284\t223\t175\t25\n+330\t76\t479\t21\t4\t45\t10\n+667\t938\t127\t193\t286\t146\t21\n+376\t92\t560\t194\t0\t26\t1\n+459\t743\t114\t203\t194\t219\t21\n+388\t135\t518\t141\t33\t138\t18\n+554\t1023\t0\t163\t150\t141\t21\n+397\t123\t524\t224\t151\t145\t18\n+592\t219\t69\t124\t617\t302\t6\n+985\t1023\t421\t292\t257\t220\t26\n+398\t193\t23\t91\t609\t162\t6\n+319\t98\t516\t205\t59\t58\t1\n+352\t92\t545\t70\t172\t333\t2\n+346\t88\t82\t84\t196\t98\t5\n+468\t191\t539\t134\t124\t132\t18\n+644\t1023\t158\t242\t257\t123\t21\n+334\t183\t0\t145\t570\t280\t6\n+382\t101\t522\t151\t0\t117\t1\n+433\t172\t64\t0\t614\t166\t6\n+344\t138\t553\t81\t0\t68\t10\n+370\t171\t145\t24\t579\t303\t6\n+282\t159\t0\t101\t514\t169\t6\n+650\t983\t150\t281\t217\t281\t25\n+616\t1023\t124\t212\t258\t181\t21\n+337\t160\t10\t37\t610\t297\t6\n+315\t58\t512\t128\t0\t48\t1\n+1023\t1023\t258\t386\t352\t342\t26\n+455\t107\t551\t183\t0\t235\t18\n+800\t1023\t239\t284\t288\t280\t25\n+344\t129\t41\t0\t185\t40\t5\n+583\t820\t154\t239\t202\t135\t21\n+376\t146\t105\t90\t627\t206\t6\n+634\t1023\t97\t138\t235\t183\t21\n+350\t104\t548\t51\t0\t116\t10\n+604\t987\t203\t256\t188\t247\t21\n+353\t160\t38\t173\t630\t225\t6\n+361\t135\t505\t132\t186\t236\t18\n+304\t105\t494\t0\t0\t144\t2\n+285\t99\t82\t0\t35\t118\t5\n+301\t87\t0\t0\t611\t300\t6\n+575\t895\t149\t252\t212\t99\t21\n+685\t1023\t81\t283\t235\t87\t21\n+262\t138\t3\t73\t31\t107\t5\n+637\t1023\t148\t174\t244\t203\t21\n+355\t124\t100\t75\t632\t179\t6\n+372\t125\t528\t15\t0\t55\t10\n+970\t1023\t212\t249\t303\t282\t26\n+557\t854\t136\t192\t106\t202\t21\n+400\t200\t0\t58\t0\t108\t5\n+1023\t1023\t541\t714\t391\t495\t19\n+606\t1023\t359\t459\t356\t417\t23\n+385\t208\t109\t39\t566\t279\t6\n+367\t196\t48\t179\t205\t153\t12\n+322\t66\t74\t114\t548\t275\t6\n+814\t1023\t215\t243\t240\t226\t25\n+379\t167\t63\t142\t617\t303\t6\n+419\t268\t562\t49\t0\t200\t2\n+426\t187\t160\t123\t549\t185\t6\n+416\t212\t68\t67\t10\t83\t5\n+354\t107\t532\t71\t59\t272\t2\n+437\t232\t562\t0\t210\t130\t2\n+421\t230\t159\t177\t393\t257\t12\n+365\t202\t55\t0\t537\t181\t6\n+315\t104\t505\t88\t0\t118\t10\n+406\t160\t550\t128\t70\t108\t1\n+598\t1023\t140\t256\t234\t258\t21\n+346\t102\t515\t0\t92\t84\t10\n+626\t276\t399\t170\t227\t141\t24\n+319\t72\t546\t0\t0\t73\t10\n+513\t83\t534\t48\t62\t215\t2\n+365\t124\t505\t0\t0\t126\t10\n+322\t115\t527\t0\t75\t70\t10\n+347\t97\t495\t259\t149\t107\t1\n+612\t347\t483\t189\t165\t185\t24\n+394\t133\t75\t0\t620\t225\t6\n+597\t1023\t102\t135\t222\t260\t21\n+479\t276\t645\t65\t89\t92\t10\n+652\t1023\t123\t0\t219\t247\t21\n+419\t158\t101\t102\t583\t240\t6\n+310\t134\t108\t207\t0\t26\t5\n+470\t1023\t374\t475\t433\t480\t23\n+354\t124\t378\t0\t0\t197\t2\n+656\t960\t180\t193\t246\t179\t21\n+699\t941\t213\t266\t293\t172\t25\n+720\t1023\t145\t295\t215\t340\t25\n+577\t859\t90\t237\t149\t83\t21\n+455\t95\t527\t139\t0\t276\t18\n+578\t1023\t347\t465\t307\t431\t23\n+780\t853\t198\t256\t230\t270\t25\n+360\t98\t543\t0\t62\t182\t2\n+388\t181\t0\t83\t591\t176\t6\n+749\t1023\t204\t271\t260\t263\t25\n+735\t418\t510\t74\t113\t232\t22\n+766\t1023\t347\t411\t384\t191\t25\n+440\t144\t203\t136\t619\t334\t6\n+378\t181\t520\t81\t120\t155\t2\n+386\t152\t502\t225\t1\t133\t18\n+732\t501\t493\t156\t228\t199\t24\n+359\t73\t492\t52\t0\t50\t10\n+324\t102\t505\t126\t0\t73\t1\n+790\t1023\t256\t318\t318\t176\t25\n+399\t153\t359\t106\t25\t42\t15\n+350\t162\t6\t132\t586\t215\t6\n+528\t948\t43\t222\t192\t155\t21\n+408\t113\t545\t183\t210\t104\t1\n+595\t885\t136\t156\t236\t131\t21\n+329\t118\t0\t24\t574\t198\t6\n+404\t136\t534\t207\t44\t123\t1\n+319\t172\t79\t0\t0\t185\t5\n+349\t126\t529\t174\t118\t246\t18\n+594\t1023\t154\t287\t261\t125\t21\n+344\t148\t65\t155\t646\t279\t6\n+400\t154\t286\t0\t141\t125\t15\n+442\t219\t574\t51\t136\t222\t2\n+406\t193\t108\t173\t669\t348\t6\n+295\t128\t78\t0\t37\t96\t5\n+394\t133\t545\t200\t17\t209\t18\n+339\t130\t123\t132\t616\t288\t6\n+377\t123\t39\t203\t468\t238\t6\n+382\t145\t506\t0\t27\t110\t10\n+616\t1023\t111\t248\t225\t212\t21\n+622\t1023\t136\t195\t260\t200\t21\n+725\t1023\t127\t258\t233\t144\t25\n+365\t132\t551\t0\t96\t146\t2\n+355\t148\t519\t75\t9\t153\t2\n+299\t129\t0\t57\t621\t289\t6\n+349\t140\t14\t0\t604\t249\t6\n+349\t133\t531\t117\t38\t225\t18\n+360\t153\t81\t132\t596\t193\t6\n+522\t249\t355\t237\t178\t203\t22\n+328\t122\t502\t0\t24\t93\t10\n+318\t92\t448\t112\t22\t193\t2\n+388\t168\t124\t3\t574\t127\t6\n+369\t129\t569\t145\t18\t30\t1\n+902\t1023\t190\t262\t316\t406\t26\n+743\t290\t247\t243\t164\t94\t24\n+334\t1'..b'6\t21\n+372\t123\t550\t83\t12\t0\t10\n+772\t1023\t139\t302\t209\t211\t25\n+721\t497\t510\t257\t217\t193\t24\n+405\t108\t547\t182\t0\t128\t1\n+756\t513\t351\t243\t217\t268\t22\n+773\t1023\t107\t284\t266\t287\t25\n+285\t156\t46\t12\t4\t93\t5\n+701\t1023\t190\t258\t259\t241\t25\n+344\t158\t51\t160\t647\t196\t6\n+654\t1023\t214\t241\t249\t200\t21\n+450\t183\t581\t167\t151\t259\t18\n+559\t895\t128\t149\t207\t178\t21\n+443\t202\t90\t103\t647\t294\t6\n+376\t92\t517\t2\t0\t77\t10\n+439\t148\t557\t142\t60\t179\t18\n+331\t93\t532\t173\t168\t80\t1\n+607\t462\t392\t137\t132\t121\t24\n+339\t86\t520\t62\t34\t204\t2\n+843\t1023\t217\t307\t243\t208\t25\n+841\t1023\t220\t229\t296\t235\t25\n+414\t83\t335\t0\t0\t100\t15\n+376\t127\t495\t255\t28\t298\t18\n+371\t154\t540\t0\t50\t212\t2\n+367\t89\t509\t112\t127\t199\t2\n+315\t104\t520\t15\t0\t143\t2\n+366\t110\t511\t117\t184\t83\t1\n+756\t1023\t244\t241\t255\t255\t25\n+354\t106\t547\t0\t181\t196\t2\n+678\t1023\t237\t283\t238\t309\t25\n+359\t119\t534\t0\t98\t213\t2\n+355\t97\t493\t218\t187\t155\t18\n+649\t1023\t176\t212\t247\t307\t25\n+408\t136\t539\t114\t0\t92\t1\n+414\t232\t157\t100\t122\t246\t12\n+611\t446\t423\t254\t162\t215\t22\n+355\t132\t85\t53\t147\t122\t5\n+334\t164\t121\t0\t559\t216\t6\n+711\t1023\t183\t293\t233\t190\t25\n+440\t328\t295\t321\t199\t227\t12\n+295\t96\t509\t0\t70\t97\t10\n+334\t115\t512\t145\t31\t35\t1\n+369\t102\t533\t134\t115\t146\t18\n+672\t1023\t195\t294\t267\t255\t25\n+683\t1023\t211\t303\t272\t176\t25\n+578\t1023\t343\t455\t376\t411\t23\n+412\t161\t0\t64\t615\t314\t6\n+709\t995\t155\t200\t144\t113\t21\n+577\t1011\t85\t285\t224\t122\t21\n+625\t931\t204\t292\t256\t197\t21\n+363\t200\t41\t11\t558\t219\t6\n+663\t1023\t176\t355\t229\t266\t25\n+399\t182\t558\t155\t0\t146\t18\n+305\t121\t0\t151\t7\t192\t5\n+370\t130\t546\t117\t131\t115\t1\n+412\t177\t98\t34\t627\t180\t6\n+726\t1023\t214\t250\t221\t183\t25\n+789\t1023\t177\t180\t273\t245\t25\n+703\t1023\t93\t241\t252\t158\t21\n+337\t74\t495\t0\t91\t125\t10\n+690\t370\t401\t210\t152\t82\t24\n+346\t109\t49\t181\t595\t294\t6\n+610\t1023\t181\t203\t290\t232\t21\n+385\t105\t557\t100\t0\t53\t10\n+351\t152\t552\t0\t0\t172\t2\n+419\t105\t524\t0\t191\t273\t2\n+455\t209\t552\t0\t96\t241\t2\n+289\t117\t46\t142\t0\t62\t5\n+354\t117\t529\t0\t173\t84\t10\n+368\t95\t507\t189\t0\t109\t1\n+346\t107\t506\t204\t0\t83\t1\n+553\t851\t173\t135\t133\t190\t21\n+336\t107\t55\t135\t570\t188\t6\n+826\t1003\t173\t272\t232\t163\t25\n+566\t857\t109\t248\t166\t224\t21\n+615\t339\t326\t208\t226\t217\t22\n+656\t298\t400\t138\t108\t189\t24\n+346\t135\t538\t259\t0\t142\t18\n+570\t991\t128\t276\t175\t304\t21\n+397\t92\t541\t147\t167\t26\t1\n+341\t150\t108\t0\t650\t183\t6\n+609\t1023\t171\t283\t225\t95\t21\n+651\t1023\t74\t197\t238\t239\t21\n+305\t79\t481\t203\t136\t22\t1\n+571\t1023\t364\t461\t377\t463\t23\n+325\t79\t504\t177\t30\t74\t1\n+404\t679\t175\t204\t209\t199\t12\n+312\t108\t514\t32\t40\t179\t2\n+775\t529\t408\t181\t214\t188\t24\n+425\t166\t589\t116\t0\t271\t18\n+262\t102\t0\t285\t155\t48\t12\n+374\t161\t37\t0\t146\t137\t5\n+347\t92\t92\t0\t643\t147\t6\n+649\t1023\t172\t160\t202\t184\t21\n+378\t179\t0\t0\t613\t194\t6\n+396\t135\t540\t7\t0\t194\t2\n+272\t126\t12\t7\t65\t272\t5\n+462\t313\t0\t208\t78\t83\t12\n+716\t846\t150\t273\t243\t229\t25\n+528\t992\t155\t250\t221\t206\t21\n+635\t888\t145\t188\t221\t77\t21\n+348\t102\t489\t0\t99\t249\t2\n+368\t103\t20\t183\t566\t298\t6\n+802\t906\t91\t167\t151\t203\t25\n+321\t151\t66\t28\t16\t79\t5\n+746\t1023\t206\t318\t265\t202\t25\n+618\t948\t144\t207\t239\t173\t21\n+399\t112\t526\t267\t0\t21\t1\n+450\t1023\t374\t475\t323\t442\t23\n+365\t96\t538\t0\t0\t119\t10\n+432\t210\t89\t249\t116\t190\t12\n+344\t119\t537\t175\t0\t184\t18\n+358\t120\t496\t0\t85\t173\t2\n+353\t180\t153\t194\t543\t29\t6\n+358\t79\t305\t0\t4\t189\t15\n+368\t96\t495\t0\t57\t149\t2\n+420\t135\t131\t21\t604\t266\t6\n+655\t1023\t190\t289\t243\t293\t25\n+312\t111\t485\t33\t0\t31\t10\n+378\t196\t536\t96\t195\t179\t2\n+571\t993\t102\t214\t182\t112\t21\n+362\t105\t533\t14\t100\t139\t2\n+329\t107\t510\t137\t0\t60\t1\n+364\t109\t347\t0\t0\t62\t15\n+627\t1023\t194\t280\t224\t245\t25\n+741\t602\t433\t208\t254\t279\t22\n+333\t98\t520\t229\t0\t28\t1\n+278\t95\t455\t0\t0\t84\t10\n+399\t161\t511\t226\t72\t121\t1\n+328\t78\t46\t0\t564\t85\t6\n+372\t152\t515\t0\t150\t63\t10\n+1023\t1023\t513\t260\t347\t324\t26\n+325\t98\t509\t69\t0\t55\t10\n+327\t177\t141\t187\t639\t334\t6\n+394\t213\t73\t79\t109\t55\t5\n+620\t1023\t115\t173\t229\t121\t21\n+387\t111\t550\t62\t0\t38\t10\n+342\t184\t0\t46\t605\t224\t6\n+346\t217\t98\t215\t0\t218\t12\n+477\t330\t183\t377\t147\t217\t16\n+307\t139\t514\t227\t83\t0\t1\n+364\t123\t537\t121\t0\t154\t18\n+338\t112\t538\t200\t0\t0\t1\n+386\t133\t570\t183\t195\t70\t1\n+768\t1023\t193\t246\t278\t232\t25\n+410\t169\t106\t135\t157\t175\t12\n+416\t112\t43\t0\t613\t294\t6\n+627\t1023\t225\t276\t212\t245\t25\n+350\t104\t68\t0\t623\t193\t6\n+377\t148\t116\t2\t616\t213\t6\n+650\t980\t161\t77\t216\t173\t21\n+342\t158\t510\t0\t0\t167\t2\n+561\t1023\t117\t313\t179\t125\t21\n+331\t176\t497\t172\t0\t141\t1\n'
b
diff -r 479ff3a9023c -r 7a889f2f2e15 test-data/out.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/out.tabular Mon Jun 22 19:55:57 2020 -0400
b
@@ -0,0 +1,141 @@
+Population CCR3 CCR7 CD4 CD8 FSC SSC
+1 mean 179.5 73.3 522.9 54.7 361.5 121.0
+1 std 42.7 40.1 27.8 62.0 37.1 33.2
+1 min 112.0 0.0 444.0 0.0 262.0 58.0
+1 25% 146.2 42.5 505.0 0.0 334.0 99.0
+1 50% 173.5 79.5 526.0 32.0 359.5 114.5
+1 75% 209.2 106.8 543.0 94.8 385.8 139.0
+1 max 284.0 141.0 588.0 237.0 485.0 322.0
+2 mean 30.2 194.1 526.4 68.8 372.8 128.0
+2 std 38.3 52.8 31.7 71.5 43.8 37.6
+2 min 0.0 128.0 378.0 0.0 266.0 61.0
+2 25% 0.0 153.0 509.0 0.0 344.2 101.0
+2 50% 5.0 184.0 531.0 52.5 367.0 120.0
+2 75% 59.8 222.0 546.0 119.8 397.0 147.8
+2 max 118.0 385.0 596.0 332.0 513.0 303.0
+3 mean 33.0 303.0 532.0 532.0 383.0 184.0
+3 std
+3 min 33.0 303.0 532.0 532.0 383.0 184.0
+3 25% 33.0 303.0 532.0 532.0 383.0 184.0
+3 50% 33.0 303.0 532.0 532.0 383.0 184.0
+3 75% 33.0 303.0 532.0 532.0 383.0 184.0
+3 max 33.0 303.0 532.0 532.0 383.0 184.0
+4 mean 182.5 384.0 50.0 86.0 380.5 234.0
+4 std 75.7 75.0 70.7 73.5 12.0 19.8
+4 min 129.0 331.0 0.0 34.0 372.0 220.0
+4 25% 155.8 357.5 25.0 60.0 376.2 227.0
+4 50% 182.5 384.0 50.0 86.0 380.5 234.0
+4 75% 209.2 410.5 75.0 112.0 384.8 241.0
+4 max 236.0 437.0 100.0 138.0 389.0 248.0
+5 mean 63.0 101.5 64.5 88.1 338.7 160.1
+5 std 63.5 62.5 46.9 84.6 47.1 55.4
+5 min 0.0 0.0 0.0 0.0 261.0 48.0
+5 25% 0.0 57.0 25.0 22.5 301.8 125.0
+5 50% 49.0 104.5 68.0 76.0 332.0 154.0
+5 75% 116.0 143.0 101.2 116.2 374.8 190.2
+5 max 224.0 272.0 196.0 408.0 439.0 560.0
+6 mean 84.7 243.3 70.2 608.5 375.5 153.2
+6 std 65.4 59.8 52.8 48.3 44.5 45.3
+6 min 0.0 2.0 0.0 354.0 262.0 53.0
+6 25% 17.0 212.0 28.0 591.0 350.0 129.0
+6 50% 93.0 252.0 65.0 619.0 376.0 151.0
+6 75% 137.0 287.0 108.0 640.0 398.0 176.0
+6 max 205.0 375.0 281.0 712.0 673.0 445.0
+7 mean 225.4 238.8 69.5 624.5 408.5 182.1
+7 std 21.0 65.3 44.9 55.2 33.3 56.1
+7 min 197.0 141.0 0.0 492.0 378.0 112.0
+7 25% 207.2 183.8 41.2 621.2 384.8 144.5
+7 50% 223.5 255.0 67.0 637.5 399.0 177.5
+7 75% 245.5 273.8 111.2 654.0 415.5 209.2
+7 max 252.0 347.0 126.0 680.0 481.0 299.0
+10 mean 23.1 67.7 521.7 49.8 356.6 118.1
+10 std 32.6 35.8 30.0 62.1 39.7 32.3
+10 min 0.0 0.0 424.0 0.0 261.0 50.0
+10 25% 0.0 41.0 506.0 0.0 330.0 100.0
+10 50% 0.0 72.0 522.0 25.0 354.0 116.0
+10 75% 43.5 94.5 541.5 87.0 382.0 137.0
+10 max 113.0 131.0 645.0 266.0 479.0 276.0
+12 mean 197.6 153.2 115.5 176.8 402.5 283.7
+12 std 56.3 87.1 59.2 104.4 63.4 157.1
+12 min 64.0 0.0 0.0 0.0 262.0 102.0
+12 25% 163.0 97.2 82.8 109.0 361.5 179.8
+12 50% 196.0 156.5 111.0 163.0 405.5 219.0
+12 75% 231.5 214.2 144.8 227.8 441.0 329.8
+12 max 333.0 350.0 295.0 393.0 590.0 679.0
+13 mean 405.0 291.0 348.0 312.0 470.0 425.0
+13 std
+13 min 405.0 291.0 348.0 312.0 470.0 425.0
+13 25% 405.0 291.0 348.0 312.0 470.0 425.0
+13 50% 405.0 291.0 348.0 312.0 470.0 425.0
+13 75% 405.0 291.0 348.0 312.0 470.0 425.0
+13 max 405.0 291.0 348.0 312.0 470.0 425.0
+15 mean 71.0 130.6 305.4 72.7 374.9 129.7
+15 std 66.2 66.1 51.0 86.2 68.8 65.9
+15 min 0.0 0.0 215.0 0.0 262.0 40.0
+15 25% 13.0 95.0 269.0 0.0 331.5 81.5
+15 50% 52.0 141.0 305.0 47.0 369.0 109.0
+15 75% 104.0 180.0 338.5 124.5 406.5 156.5
+15 max 208.0 248.0 396.0 325.0 523.0 280.0
+16 mean 468.6 172.7 115.4 161.9 408.9 423.0
+16 std 66.1 69.5 59.7 36.0 65.6 154.3
+16 min 377.0 49.0 12.0 124.0 322.0 219.0
+16 25% 412.5 147.0 87.5 136.5 363.0 310.0
+16 50% 499.0 193.0 118.0 151.0 403.0 409.0
+16 75% 517.0 210.0 160.0 179.5 454.0 544.0
+16 max 545.0 253.0 183.0 226.0 503.0 625.0
+18 mean 188.0 204.9 527.7 57.2 390.3 132.1
+18 std 45.5 61.7 31.4 65.1 49.0 35.1
+18 min 116.0 131.0 410.0 0.0 262.0 57.0
+18 25% 150.0 158.0 508.0 0.0 361.0 109.0
+18 50% 184.0 183.0 532.0 35.0 385.0 128.0
+18 75% 218.0 241.0 549.5 98.0 417.5 148.5
+18 max 315.0 425.0 591.0 369.0 566.0 264.0
+19 mean 704.1 515.5 492.4 442.4 945.8 984.4
+19 std 170.2 118.9 109.8 136.5 89.4 139.2
+19 min 456.0 380.0 362.0 313.0 777.0 521.0
+19 25% 583.0 450.0 404.0 358.0 899.0 1023.0
+19 50% 751.0 481.0 467.0 395.0 968.0 1023.0
+19 75% 810.0 544.0 541.0 479.0 1023.0 1023.0
+19 max 1023.0 841.0 764.0 804.0 1023.0 1023.0
+21 mean 221.4 172.0 142.3 216.5 614.4 973.4
+21 std 53.6 65.3 49.4 43.4 58.1 74.6
+21 min 0.0 0.0 0.0 84.0 417.0 643.0
+21 25% 193.8 129.5 111.0 192.8 579.0 938.8
+21 50% 230.5 179.0 146.0 222.0 616.0 1023.0
+21 75% 256.0 224.0 173.0 246.0 651.2 1023.0
+21 max 328.0 304.0 311.0 320.0 776.0 1023.0
+22 mean 179.1 260.8 398.4 173.6 680.2 443.1
+22 std 84.5 39.3 57.3 60.4 76.1 96.1
+22 min 0.0 203.0 250.0 25.0 522.0 239.0
+22 25% 131.0 230.0 359.0 137.0 623.0 377.0
+22 50% 186.0 257.0 413.0 174.0 685.0 458.0
+22 75% 243.0 279.0 433.0 217.0 737.0 503.0
+22 max 387.0 388.0 550.0 295.0 855.0 607.0
+23 mean 482.7 423.5 339.7 362.9 546.7 1000.9
+23 std 58.4 37.5 41.5 61.4 89.7 56.3
+23 min 410.0 321.0 196.0 245.0 338.0 740.0
+23 25% 453.8 406.0 322.8 323.8 490.8 1023.0
+23 50% 468.0 434.5 347.5 357.0 554.5 1023.0
+23 75% 490.2 451.5 366.0 388.0 606.2 1023.0
+23 max 738.0 480.0 404.0 609.0 765.0 1023.0
+24 mean 180.9 145.2 401.3 175.7 679.4 404.8
+24 std 74.3 47.1 74.2 54.8 59.1 103.7
+24 min 0.0 25.0 215.0 0.0 568.0 182.0
+24 25% 156.0 118.0 383.0 144.0 634.0 329.0
+24 50% 189.0 141.0 401.0 180.0 675.0 394.0
+24 75% 229.0 187.0 428.0 217.0 707.0 476.0
+24 max 314.0 199.0 573.0 268.0 853.0 693.0
+25 mean 267.9 222.3 184.8 249.6 731.6 1009.3
+25 std 44.2 58.9 48.5 40.8 64.8 52.0
+25 min 147.0 22.0 45.0 107.0 595.0 487.0
+25 25% 243.8 190.0 157.0 226.0 683.0 1023.0
+25 50% 271.0 225.5 188.0 251.0 726.0 1023.0
+25 75% 289.5 263.0 213.0 275.5 774.0 1023.0
+25 max 463.0 384.0 372.0 384.0 917.0 1023.0
+26 mean 334.5 348.9 322.6 304.2 967.1 980.0
+26 std 60.8 75.1 88.2 45.8 63.1 109.3
+26 min 160.0 179.0 180.0 181.0 854.0 573.0
+26 25% 298.0 295.0 245.0 282.0 903.0 1023.0
+26 50% 331.0 346.0 300.0 303.0 995.0 1023.0
+26 75% 370.0 399.0 401.0 340.0 1023.0 1023.0
+26 max 478.0 499.0 513.0 407.0 1023.0 1023.0
b
diff -r 479ff3a9023c -r 7a889f2f2e15 test-data/report.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/report.tabular Mon Jun 22 19:55:57 2020 -0400
b
@@ -0,0 +1,22 @@
+Population Count Percentage
+1 194 9.7
+2 194 9.7
+3 1 0.05
+4 2 0.1
+5 140 7.0
+6 309 15.46
+7 10 0.5
+10 187 9.35
+12 72 3.6
+13 1 0.05
+15 23 1.15
+16 7 0.35
+18 151 7.55
+19 13 0.65
+21 292 14.61
+22 53 2.65
+23 36 1.8
+24 41 2.05
+25 232 11.61
+26 41 2.05
+Total 1999