Mercurial > repos > immport-devteam > rearrange_columns
changeset 1:ce206587d42f draft default tip
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/rearrange_columns commit 3289c1f97444f45f946ff92d47c490c9d58f3d94"
author | azomics |
---|---|
date | Thu, 16 Jul 2020 07:22:06 -0400 |
parents | d2cdffd27293 |
children | |
files | editColumnHeadings.py editColumnHeadings.xml rearrange_columns/editColumnHeadings.py rearrange_columns/editColumnHeadings.xml rearrange_columns/test-data/input1.txt rearrange_columns/test-data/input2.txt rearrange_columns/test-data/input3.txt rearrange_columns/test-data/output1.flowtext rearrange_columns/test-data/output2.flowtext rearrange_columns/test-data/output3.flowtext test-data/input1.txt test-data/input2.txt test-data/input3.txt test-data/output1.flowtext test-data/output2.flowtext test-data/output3.flowtext |
diffstat | 16 files changed, 398 insertions(+), 314 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/editColumnHeadings.py Thu Jul 16 07:22:06 2020 -0400 @@ -0,0 +1,147 @@ +#!/usr/bin/env python + +###################################################################### +# Copyright (c) 2016 Northrop Grumman. +# All rights reserved. +###################################################################### +# +# Cristel Thomas - May 2018 +# Version 2 -- with Pandas! +# + +import sys + +from argparse import ArgumentParser +import pandas as pd + + +def is_integer(s): + try: + int(s) + return True + except ValueError: + return False + + +def rearrange_file(input_file, output_file, new_cols, new_order, flag_text): + df = pd.read_table(input_file) + original_columns = [x for x in df.columns] + if new_cols: + edited_cols = [] + if len(new_cols) > len(df.columns): + sys.exit(6) + for i in range(0, len(df.columns)): + if df.columns[i] in new_cols: + edited_cols.append(new_cols[df.columns[i]]) + else: + edited_cols.append(df.columns[i]) + df.columns = edited_cols + + if new_order: + if len(new_order) > len(df.columns): + sys.exit(6) + subset = [] + if flag_text: + existing_cols = list(df.columns) + unknown_elements = list(set(new_order) - set(existing_cols)) + if len(unknown_elements): + print("%s of the provided columns for reorder is/are not in the input file." % len(unknown_elements), file=sys.stderr) + print("Existing columns:", file=sys.stderr) + for col in existing_cols: + print(col, file=sys.stderr) + print("Provided columns for new order which are not in the original list:", file=sys.stderr) + for col in unknown_elements: + print(col, file=sys.stderr) + sys.exit(9) + subset = new_order + else: + subset = [df.columns[x] for x in new_order] + df = df[subset] + + df.to_csv(output_file, sep="\t", index=False) + if new_cols: + for c in new_cols: + if c not in original_columns: + sys.exit(10) + +if __name__ == "__main__": + parser = ArgumentParser( + prog="editColumnHeadings", + description="Cut, rearrange and rename columns in a tab-separated file.") + + parser.add_argument( + '-i', + dest="input_file", + required=True, + help="File location for the text file.") + + parser.add_argument( + '-r', + dest="columns", + action="append", + help="Columns to replace.") + + parser.add_argument( + '-w', + dest="replace_with", + action="append", + help="new column headers.") + + parser.add_argument( + '-n', + dest="new_order", + help="New column order if re-ordering or subsetting.") + + parser.add_argument( + '-o', + dest="output_file", + required=True, + help="Name of the output file.") + + args = parser.parse_args() + + + new_order = [] + new_cols = {} +# flag = False +# exit_codes = [3,4,7,8,9,10,2] + defaults = ["i.e.:TLR 6, TLR6PE", "i.e.:TLR6", "i.e.:1,2,5 or CD3,CD4,CCR3", "default", "Default", ""] + flag_text = False + + if args.new_order: + if args.new_order not in defaults: + nwor = [x.strip() for x in args.new_order.strip().split(",")] + check_integer = [is_integer(x) for x in nwor] + if sum(check_integer) != len(check_integer): + flag_text = True + new_order = [str(x) if flag_text else int(x)-1 for x in nwor] + else: + sys.exit(8) + + if args.columns: + if args.replace_with: + cols_to_change = [c.strip().split(",") if c not in defaults else None for c in args.columns] + replacements = [r.strip() if r not in defaults else None for r in args.replace_with] + check_col = sum([True if x is not None else False for x in cols_to_change]) + check_rep = sum([True if x is not None else False for x in replacements]) + if check_col != check_rep: + sys.exit(7) + for i in range(0, check_col): + if cols_to_change[i]: + if replacements[i]: + for c in cols_to_change[i]: + new_cols[c.strip()] = replacements[i] + else: + sys.exit(4) + else: + sys.exit(3) + else: + sys.exit(7) + else: + if args.replace_with: + sys.exit(7) + + if not new_order and not new_cols: + sys.exit(2) + + rearrange_file(args.input_file, args.output_file, new_cols, new_order, flag_text)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/editColumnHeadings.xml Thu Jul 16 07:22:06 2020 -0400 @@ -0,0 +1,191 @@ +<tool id="edit_rearrange_columns" name="Remove, rearrange and/or rename columns" version="2.0+galaxy0" profile="18.01"> + <description>in txt-converted FCS files</description> + <requirements> + <requirement type="package" version="1.0.5">pandas</requirement> + </requirements> + <stdio> + <exit_code range="1" level="fatal" description="Please pick something for the tool to do =)" /> + <exit_code range="2" level="fatal" description="Please provide column headers to replace." /> + <exit_code range="3" level="fatal" description="Please provide column headers to use as replacement." /> + <exit_code range="4" level="fatal" description="Column headers provided were not found in the input file." /> + <exit_code range="5" level="fatal" description="More headers provided than columns in the input file." /> + <exit_code range="6" level="fatal" description="New column headings and column headings must be provided together." /> + <exit_code range="7" level="fatal" description="Please provide a new column order or subset." /> + <exit_code range="8" level="fatal" description="Columns provided for subsetting/re-ordering are not in the input file" /> + <exit_code range="9:" level="fatal"/> + </stdio> + <command><![CDATA[ + python3 '$__tool_directory__/editColumnHeadings.py' -o '${output_file}' -i '${input}' + #if $rename.nn: + #for $add in $rename.more_replacements: + -r '${add.to_rep}' -w '${add.replace_with}' + #end for + #end if + #if $reorder.order_col: + -n '${reorder.order}' + #end if + ]]> + </command> + <inputs> + <param format="flowtext" name="input" type="data" label="Text file"/> + + <conditional name="rename"> + <param name="nn" type="boolean" label="Edit column headings?" help="By default, column headings are not changed." checked="false" truevalue="TRUE" falsevalue="FALSE"> + </param> + <when value="TRUE"> + <repeat name="more_replacements" title="Column to edit"> + <param name="to_rep" type="text" label="Column headings to replace:" value="i.e.:TLR 6, TLR6PE" help="Please indicate which column heading to replace. If there are more than one heading to replace with the SAME replacement, enter a comma-separated list. See below for examples."/> + <param name="replace_with" type="text" label="Replace with:" value="i.e.:TLR6" help="Please indicate what to use for replacement." /> + </repeat> + </when> + </conditional> + + <conditional name="reorder"> + <param name="order_col" type="boolean" label="Re-order or select column?" help="By default, column order is not changed." checked="false" truevalue="TRUE" falsevalue="FALSE"> + </param> + <when value="TRUE"> + <param name="order" type="text" label="New order:" value="i.e.:1,2,5 or CD3,CD4,CCR3" help="Please indicate columns to keep in the order they should be in. This operation happens after renaming. If subsetting/re-ordering and renaming columns, indicate new column heading names or numerical order."/> + </when> + </conditional> + </inputs> + <outputs> + <data format="flowtext" name="output_file" label="Rearranged ${input.name} on ${on_string}"/> + </outputs> + <tests> + <test> + <param name="input" value="input1.txt"/> + <conditional name="reorder"> + <param name="order_col" value="True"/> + <param name="order" value="CD4,CCR3,CD8,CCR7"/> + </conditional> + <conditional name="rename"> + <param name="nn" value="True"/> + <repeat name="more_replacements"> + <param name="to_rep" value="FITC CD4"/> + <param name="replace_with" value="CD4"/> + </repeat> + <repeat name="more_replacements"> + <param name="to_rep" value="PE CCR3"/> + <param name="replace_with" value="CCR3"/> + </repeat> + <repeat name="more_replacements"> + <param name="to_rep" value="PP CD8"/> + <param name="replace_with" value="CD8"/> + </repeat> + <repeat name="more_replacements"> + <param name="to_rep" value="APC CCR4"/> + <param name="replace_with" value="CCR7"/> + </repeat> + </conditional> + <output name="output_file" value="output1.flowtext"/> + </test> + <test> + <param name="input" value="input2.txt"/> + <conditional name="reorder"> + <param name="order_col" value="True"/> + <param name="order" value="Side Scatter,FITC CD4,APC CCR5,Forward Scatter"/> + </conditional> + <output name="output_file" value="output2.flowtext"/> + </test> + <test> + <param name="input" value="input3.txt"/> + <conditional name="rename"> + <param name="nn" value="True"/> + <repeat name="more_replacements"> + <param name="to_rep" value="Forward Scatter"/> + <param name="replace_with" value="M1"/> + </repeat> + <repeat name="more_replacements"> + <param name="to_rep" value="Side Scatter"/> + <param name="replace_with" value="M2"/> + </repeat> + <repeat name="more_replacements"> + <param name="to_rep" value="FITC CD4"/> + <param name="replace_with" value="M3"/> + </repeat> + <repeat name="more_replacements"> + <param name="to_rep" value="PE CD25"/> + <param name="replace_with" value="M4"/> + </repeat> + <repeat name="more_replacements"> + <param name="to_rep" value="PP CD3"/> + <param name="replace_with" value="M5"/> + </repeat> + <repeat name="more_replacements"> + <param name="to_rep" value="APC CD45RA"/> + <param name="replace_with" value="M6"/> + </repeat> + </conditional> + <output name="output_file" value="output3.flowtext"/> + </test> + </tests> + <help><![CDATA[ + This tool enables the removal, rearrangement and/or renaming of text file columns. +----- +**Input files** +This tool requires txt, flowtext or tabular files as input. +**Column headings** +This field is optional. Please indicate the column headers that need to be replaced. If one marker exists under several names in different files, run the tool in batch mode and include all names to harmonize as a comma-separated list. +.. class:: warningmark +Column headings provided have to match file content. +.. class:: infomark +Tip: One of the tools in the Text File Tools section can help check headers in the files to edit: +- Check headers of any set of flowtext files. +**Replace with** +Please indicate what to replace the headers indicated in the previous field with. If the previous field contains a comma-separated list, each of these items will be replaced. +..class:: infomark +Tip: Add more headings to modify by clicking on 'Insert Column to edit' +**New order** +This field is optional. Please indicate which subset of columns (or all) in which order should be output. +**Output file** +The output flowtext file is a copy of the input file with rearranged and/or renamed columns. +----- +**Examples** +**Input file**:: + Marker1 Marker2 Marker3 Marker4 Marker5 + 4 45 123 1956 62534 + 3 65 104 1254 36576 + 7 26 767 4124 42235 + 4 56 323 7623 74634 + 5 83 532 6256 34763 + 4 15 877 9312 21265 + ... ... ... ... ... +*Example 1* +- Column order: 5,3,2,4 +- Column names: Default +*Output1*:: + Marker5 Marker3 Marker2 Marker4 + 62534 123 45 1956 + 36576 104 65 1254 + 42235 767 26 4124 + 74634 323 56 7623 + 34763 532 83 6256 + 21265 877 15 9312 + ... ... ... ... +*Example 2* +- Column order: 5,3,2,4 +- Column names: Mar34,,Mar7, +*Output2*:: + Mar34 Marker3 Mar7 Marker4 + 62534 123 45 1956 + 36576 104 65 1254 + 42235 767 26 4124 + 74634 323 56 7623 + 34763 532 83 6256 + 21265 877 15 9312 + ... ... ... ... +*Example 3* +- Column order: Default +- Column names: Mar23,,,Mar7,Mar8 +*Output3*:: + Mar23 Marker2 Marker3 Mar7 Mar8 + 4 45 123 1956 62534 + 3 65 104 1254 36576 + 7 26 767 4124 42235 + 4 56 323 7623 74634 + 5 83 532 6256 34763 + 4 15 877 9312 21265 + ... ... ... ... ... + ]]> + </help> +</tool>
--- a/rearrange_columns/editColumnHeadings.py Mon Feb 27 13:05:18 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +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 - - -def is_integer(s): - try: - int(s) - return True - except ValueError: - return False - - -def rearrange_file(input_file, col_order, col_names, output_file): - with open(input_file, "r") as infl, open(output_file, "w") as outf: - # headers - hdrs = infl.readline().strip() - current_hdrs = hdrs.split("\t") - if not col_order and col_names: - if len(col_names) != len(current_hdrs): - sys.stderr.write("There are " + str(len(current_hdrs)) + " columns but " + str(len(col_names)) + " marker names were provided\n") - sys.exit(4) - if col_names: - tmp_hdr = [] - for i in range(0, len(col_names)): - if col_names[i].strip(): - tmp_hdr.append(col_names[i].strip()) - else: - if col_order: - tmp_hdr.append(current_hdrs[col_order[i]]) - else: - tmp_hdr.append(current_hdrs[i]) - hdrs = ("\t".join(tmp_hdr)) - elif col_order: - tp_hdr = [] - for j in col_order: - tp_hdr.append(current_hdrs[j]) - hdrs = ("\t".join(tp_hdr)) - - outf.write(hdrs + "\n") - - # columns - for lines in infl: - cols = lines.strip().split("\t") - if not col_order: - col_order = [x for x in range(0, len(current_hdrs))] - outf.write("\t".join([cols[c] for c in col_order]) + "\n") - - -if __name__ == "__main__": - parser = ArgumentParser( - prog="editColumnHeadings", - description="Cut, rearrange and rename columns in a tab-separated file.") - - parser.add_argument( - '-i', - dest="input_file", - required=True, - help="File location for the text file.") - - parser.add_argument( - '-c', - dest="columns", - help="Columns to keep in the order to keep them in.") - - parser.add_argument( - '-n', - dest="column_names", - help="Column names if renaming.") - - parser.add_argument( - '-o', - dest="output_file", - required=True, - help="Name of the output file.") - - args = parser.parse_args() - - # check column indices - default_value_col = ["i.e.:1,5,2", "default", "Default"] - col_order = [] - if args.columns: - if args.columns not in default_value_col: - tmp_col = args.columns.split(",") - if len(tmp_col) == 1: - if not tmp_col[0].strip(): - col_order = [] - elif not is_integer(tmp_col[0].strip()): - sys.exit(2) - else: - col_order.append(int(tmp_col[0].strip()) - 1) - else: - for c in range(0, len(tmp_col)): - if not is_integer(tmp_col[c].strip()): - sys.exit(3) - else: - col_order.append(int(tmp_col[c].strip()) - 1) - - # check column names - default_value_nms = ["i.e.:Marker1,,Marker4", "default", "Default"] - col_names = [] - if args.column_names: - if args.column_names not in default_value_nms: - col_names = args.column_names.split(",") - if col_order: - if len(col_order) != len(col_names): - sys.stderr.write("There are " + str(len(col_order)) + " columns selected and " + str(len(col_names)) + " marker names\n") - sys.exit(4) - - rearrange_file(args.input_file, col_order, col_names, args.output_file) - - sys.exit(0)
--- a/rearrange_columns/editColumnHeadings.xml Mon Feb 27 13:05:18 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ -<tool id="edit_rearrange_columns" name="Remove, rearrange and/or rename columns" version="1.1"> - <description>in txt-converted FCS files.</description> - <stdio> - <exit_code range="2" level="fatal" description="Please provide a comma separated list of integers for columns you want to keep." /> - <exit_code range="3" level="fatal" description="Please provide integers for columns you want to keep." /> - <exit_code range="4" level="fatal" description="List of column headings and list of selected columns must match. For instance for columns 1,3,4: Marker1,,Marker3." /> - </stdio> - <command><![CDATA[ - python $__tool_directory__/editColumnHeadings.py -o "${output_file}" -i "${input}" - #if $columns - -c "${columns}" - #end if - #if $colnames - -n "${colnames}" - #end if - ]]> - </command> - <inputs> - <param format="flowtext" name="input" type="data" label="Text file"/> - <param name="columns" type="text" label="Column order:" value="i.e.:1,5,2" optional="true" help="By default, will keep all columns in the same order."/> - <param name="colnames" type="text" label="New column headings:" value="i.e.:Marker1,,Marker4" optional="true" help="By default, will not change the column headings. Check below for more details."> - </param> - </inputs> - <outputs> - <data format="flowtext" name="output_file" label="Rearranged ${input.name}"/> - </outputs> - <tests> - <test> - <param name="input" value="input1.txt"/> - <param name="columns" value="3,4,5,6"/> - <param name="colnames" value="CD4,CCR3,CD8,CCR7"/> - <output name="output_file" file="output1.flowtext"/> - </test> - <test> - <param name="input" value="input2.txt"/> - <param name="columns" value="2,3,6,1"/> - <param name="colnames" value="i.e.:Marker1,,Marker4"/> - <output name="output_file" file="output2.flowtext"/> - </test> - <test> - <param name="input" value="input3.txt"/> - <param name="columns" value="i.e.:1,5,2"/> - <param name="colnames" value="M1,M2,M3,M4,M5,M6"/> - <output name="output_file" file="output3.flowtext"/> - </test> - </tests> - <help><![CDATA[ - This tool enables the removal, rearrangement and/or renaming of text file columns. - ------ - -**Input files** - -This tool requires txt, flowtext or tabular files as input. - -**Column order** - -Please indicate columns to keep in the order in which they should be (comma-separated list). -This field is optional. - -**Column names** - -Please indicate the new columns headings in the order in which they should appear in the ouptut file (comma-separated list). The number of headings should match the number of columns in the output. -This field is optional. - -.. class: warningmark - -When providing column order AND new column headings the column count for each must match. See below for an example. - -**Output file** - -The output flowtext file is a copy of the input file with rearranged and/or renamed columns. - ------ - -**Examples** - -**Input file**:: - - Marker1 Marker2 Marker3 Marker4 Marker5 - 4 45 123 1956 62534 - 3 65 104 1254 36576 - 7 26 767 4124 42235 - 4 56 323 7623 74634 - 5 83 532 6256 34763 - 4 15 877 9312 21265 - -*Example 1* - -- Column order: 5,3,2,4 -- Column names: Default - -*Output1*:: - - Marker5 Marker3 Marker2 Marker4 - 62534 123 45 1956 - 36576 104 65 1254 - 42235 767 26 4124 - 74634 323 56 7623 - 34763 532 83 6256 - 21265 877 15 9312 - -*Example 2* - -- Column order: 5,3,2,4 -- Column names: Mar34,,Mar7, - -*Output2*:: - - Mar34 Marker3 Mar7 Marker4 - 62534 123 45 1956 - 36576 104 65 1254 - 42235 767 26 4124 - 74634 323 56 7623 - 34763 532 83 6256 - 21265 877 15 9312 - -*Example 3* - -- Column order: Default -- Column names: Mar23,,,Mar7,Mar8 - -*Output3*:: - - Mar23 Marker2 Marker3 Mar7 Mar8 - 4 45 123 1956 62534 - 3 65 104 1254 36576 - 7 26 767 4124 42235 - 4 56 323 7623 74634 - 5 83 532 6256 34763 - 4 15 877 9312 21265 - ]]> - </help> -</tool>
--- a/rearrange_columns/test-data/input1.txt Mon Feb 27 13:05:18 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -Forward Scatter Side Scatter FITC CD4 PE CCR3 PP CD8 APC CCR4 -449 157 551 129 169 292 -894 1023 199 277 320 227 -262 73 437 69 0 146 -340 115 509 268 0 74 -316 76 50 0 60 129 -394 144 83 138 335 194 -383 139 499 0 0 224 -800 1023 239 284 288 280 -388 97 534 111 83 177
--- a/rearrange_columns/test-data/input2.txt Mon Feb 27 13:05:18 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -Forward Scatter Side Scatter FITC CD4 PE CXCR3 PP CD8 APC CCR5 -363 76 550 200 0 127 -372 126 519 44 51 148 -1023 1023 289 401 362 254 -770 1023 175 361 225 237 -384 111 525 121 0 138 -602 578 385 286 222 131 -788 1023 216 310 270 294 -420 211 552 479 0 62 -668 1019 73 193 227 132
--- a/rearrange_columns/test-data/input3.txt Mon Feb 27 13:05:18 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -Forward Scatter Side Scatter FITC CD4 PE CD25 PP CD3 APC CD45RA -289 56 438 0 626 480 -352 153 30 147 483 386 -383 190 156 228 734 408 -261 62 432 121 598 555 -451 120 537 338 568 201 -373 104 3 110 621 584 -418 105 561 0 610 562 -358 185 0 292 641 327 -733 970 139 227 293 259
--- a/rearrange_columns/test-data/output1.flowtext Mon Feb 27 13:05:18 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -CD4 CCR3 CD8 CCR7 -551 129 169 292 -199 277 320 227 -437 69 0 146 -509 268 0 74 -50 0 60 129 -83 138 335 194 -499 0 0 224 -239 284 288 280 -534 111 83 177
--- a/rearrange_columns/test-data/output2.flowtext Mon Feb 27 13:05:18 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -Side Scatter FITC CD4 APC CCR5 Forward Scatter -76 550 127 363 -126 519 148 372 -1023 289 254 1023 -1023 175 237 770 -111 525 138 384 -578 385 131 602 -1023 216 294 788 -211 552 62 420 -1019 73 132 668
--- a/rearrange_columns/test-data/output3.flowtext Mon Feb 27 13:05:18 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -M1 M2 M3 M4 M5 M6 -289 56 438 0 626 480 -352 153 30 147 483 386 -383 190 156 228 734 408 -261 62 432 121 598 555 -451 120 537 338 568 201 -373 104 3 110 621 584 -418 105 561 0 610 562 -358 185 0 292 641 327 -733 970 139 227 293 259
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/input1.txt Thu Jul 16 07:22:06 2020 -0400 @@ -0,0 +1,10 @@ +Forward Scatter Side Scatter FITC CD4 PE CCR3 PP CD8 APC CCR4 +449 157 551 129 169 292 +894 1023 199 277 320 227 +262 73 437 69 0 146 +340 115 509 268 0 74 +316 76 50 0 60 129 +394 144 83 138 335 194 +383 139 499 0 0 224 +800 1023 239 284 288 280 +388 97 534 111 83 177
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/input2.txt Thu Jul 16 07:22:06 2020 -0400 @@ -0,0 +1,10 @@ +Forward Scatter Side Scatter FITC CD4 PE CXCR3 PP CD8 APC CCR5 +363 76 550 200 0 127 +372 126 519 44 51 148 +1023 1023 289 401 362 254 +770 1023 175 361 225 237 +384 111 525 121 0 138 +602 578 385 286 222 131 +788 1023 216 310 270 294 +420 211 552 479 0 62 +668 1019 73 193 227 132
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/input3.txt Thu Jul 16 07:22:06 2020 -0400 @@ -0,0 +1,10 @@ +Forward Scatter Side Scatter FITC CD4 PE CD25 PP CD3 APC CD45RA +289 56 438 0 626 480 +352 153 30 147 483 386 +383 190 156 228 734 408 +261 62 432 121 598 555 +451 120 537 338 568 201 +373 104 3 110 621 584 +418 105 561 0 610 562 +358 185 0 292 641 327 +733 970 139 227 293 259
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output1.flowtext Thu Jul 16 07:22:06 2020 -0400 @@ -0,0 +1,10 @@ +CD4 CCR3 CD8 CCR7 +551 129 169 292 +199 277 320 227 +437 69 0 146 +509 268 0 74 +50 0 60 129 +83 138 335 194 +499 0 0 224 +239 284 288 280 +534 111 83 177
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output2.flowtext Thu Jul 16 07:22:06 2020 -0400 @@ -0,0 +1,10 @@ +Side Scatter FITC CD4 APC CCR5 Forward Scatter +76 550 127 363 +126 519 148 372 +1023 289 254 1023 +1023 175 237 770 +111 525 138 384 +578 385 131 602 +1023 216 294 788 +211 552 62 420 +1019 73 132 668
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output3.flowtext Thu Jul 16 07:22:06 2020 -0400 @@ -0,0 +1,10 @@ +M1 M2 M3 M4 M5 M6 +289 56 438 0 626 480 +352 153 30 147 483 386 +383 190 156 228 734 408 +261 62 432 121 598 555 +451 120 537 338 568 201 +373 104 3 110 621 584 +418 105 561 0 610 562 +358 185 0 292 641 327 +733 970 139 227 293 259