Repository 'mycrobiota'
hg clone https://toolshed.g2.bx.psu.edu/repos/erasmus-medical-center/mycrobiota

Changeset 0:607c5e7e0a64 (2017-12-13)
Next changeset 1:e93e39c121b1 (2019-01-29)
Commit message:
planemo upload for repository https://github.com/ErasmusMC-Bioinformatics/galaxytools-emc/tree/master/tools/mycrobiota commit 1c4c58018b64ff3531a719e789ce71cb0a1244c5
added:
correct_replicates.xml
counttable-addsums.xml
krona_mothur.xml
macros.xml
make_multi_otutable.xml
mycrobiota.py
otutable_add_blast_links.xml
otutable_split_by_sample.xml
qcreport.xml
recover_samples_discarded_by_subsample.xml
test-data/DX01.otutable
test-data/example.mothur.shared
test-data/fasta_after_subsample_small.fasta
test-data/fasta_before_subsample_small.fasta
test-data/groups_after_subsample_small.groups
test-data/groups_before_subsample_small.groups
test-data/krona.test1.mothur.cons.taxonomy
test-data/multisample.otutable
test-data/multisample.taxonomy
test-data/otureps.fasta
test-data/otutable_tocorrect.taxonomy
test-data/otutable_with_blast.tsv
test-data/otutable_without_blast.tsv
test-data/recovered.fasta
test-data/recovered.groups
test-data/shared_dereplicated.tsv
test-data/shared_mock.tsv
test-data/shared_tocorrect.tsv
test-data/shared_with_taxonomy.tsv
test-data/summarylog1.txt
test-data/summarylog2.txt
test-data/summarylog3.txt
test-data/test-out.count_table
test-data/test.count_table
test-data/test2.count_table
b
diff -r 000000000000 -r 607c5e7e0a64 correct_replicates.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/correct_replicates.xml Wed Dec 13 10:09:50 2017 -0500
[
@@ -0,0 +1,46 @@
+<tool id="mycrobiota-correct-replicates" name="Correct counts" version="0.6">
+    <description>in a mothur shared file for replicates and negative controls</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <command detect_errors="aggressive"><![CDATA[
+        python '$__tool_directory__/mycrobiota.py'
+            --command correct_replicates
+            --shared '$shared'
+            --taxonomy '$taxonomy'
+            --replicate_suffix '$replicate_suffix'
+            --negative_control '$negative_control'
+            --nc_copies '$nc_copies'
+            --copies '$copies'
+            --negative_control_species '$negative_control_species'
+    ]]></command>
+    <inputs>
+        <param argument="--shared" type="data" format="mothur.shared" label="Select shared file"/>
+        <param argument="--taxonomy" type="data" format="mothur.ref.taxonomy,mothur.seq.taxonomy,mothur.cons.taxonomy" label="Select taxonomy file"/>
+        <param argument="--replicate_suffix" type="text" size="100" value="_replicate" label="Suffix used to indicated replicates" help="e.g. _R if files are named [sample]_R1, [sample]_R2 etc"/>
+        <param argument="--negative_control" type="text" optional="True" size="100" value="" label="sample name for your negative control (optional)" help="e.g. negative_control"/>
+        <param argument="--negative_control_species" type="text" optional="True" size="100" value="Oscillatoria" label="taxonomy of negative control" help="e.g. Oscillatoria"/>
+        <param argument="--nc_copies" type="integer" value="100" min="0" label="number of copies of control species in the negative control sample"/>
+        <param argument="--copies" type="integer" value="1000" min="0" label="number of copies of control species in the real samples"/>
+    </inputs>
+    <outputs>
+        <data name="corrected_out" format="mothur.shared" from_work_dir="shared_corrected.tsv" label="${tool.name} on ${on_string}: corrected shared file"/>
+        <data name="corrected_tax" format_source="taxonomy" from_work_dir="taxonomy_corrected.tsv" label="${tool.name} on ${on_string}: corrected taxonomy file"/>
+        <data name="corrected_out_avg" format="mothur.shared" from_work_dir="shared_averaged.tsv" label="${tool.name} on ${on_string}: averaged only shared file"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="shared" value="shared_tocorrect.tsv" ftype="mothur.shared"/>
+            <param name="taxonomy" value="otutable_tocorrect.taxonomy" ftype="mothur.cons.taxonomy"/>
+            <param name="replicate_suffix" value="_replicate"/>
+            <param name="negative_control" value="NC"/>
+            <output name="corrected_out" md5="a7bafe98a383b308b4f1f1681483091d" ftype="mothur.shared"/>
+            <output name="corrected_tax" md5="9cc44bec811b868bde9acbe5d857e4c9" ftype="mothur.cons.taxonomy"/>
+        </test>
+    </tests>
+    <help><![CDATA[
+**What it does**
+averages the counts over all replicates of a sample in a mothur shared file
+    ]]></help>
+    <expand macro="citations"/>
+</tool>
b
diff -r 000000000000 -r 607c5e7e0a64 counttable-addsums.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/counttable-addsums.xml Wed Dec 13 10:09:50 2017 -0500
[
@@ -0,0 +1,28 @@
+<tool id="mycrobiota-counttable-totals" name="Counttable totals" version="0.1">
+    <description>add line with total counts to your mothur count table</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <command detect_errors="aggressive"><![CDATA[
+        python '$__tool_directory__/mycrobiota.py'
+            --command counttable_totals
+            -ct '$count_in'
+            -o '$count_out'
+    ]]></command>
+    <inputs>
+        <param name="count_in" type="data" format="mothur.count_table" label="Select count file"/>
+    </inputs>
+    <outputs>
+        <data name="count_out" format="tabular" label="Count table with totals on ${on_string}"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="count_in" value="test.count_table" ftype="mothur.count_table"/>
+            <output name="count_out" file="test-out.count_table" ftype="tabular"/>
+        </test>
+    </tests>
+    <help><![CDATA[
+        Takes a Mothur count table and adds a line to the end with the total counts per sample
+    ]]></help>
+    <expand macro="citations"/>
+</tool>
b
diff -r 000000000000 -r 607c5e7e0a64 krona_mothur.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/krona_mothur.xml Wed Dec 13 10:09:50 2017 -0500
[
@@ -0,0 +1,113 @@
+<tool id="mycrobiota-krona-mothur" name="Krona" version="1">
+    <description>for mothur datasets</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <requirements>
+        <requirement type="package" version="2.7">krona</requirement>
+    </requirements>
+    <command detect_errors="aggressive"><![CDATA[
+        ## create symlinks to taxonomy files for nicer display names in output
+        #if $input.haveshared == 'no':
+            #for $tax in $input.taxonomy:
+                ln -s '$tax' '$tax.name' &&
+            #end for
+        #end if
+
+        python '$__tool_directory__/mycrobiota.py'
+            #if $input.haveshared == 'yes':
+                --command create_krona_plot_multisample
+                --shared_file '$input.shared_file'
+                #if $input.level == 'None':
+                    --level '$input.taxonomy.name'
+                #else:
+                    --level '$input.level'
+                #end if
+                --taxonomy $input.taxonomy
+            #else:
+                --command create_krona_plot
+                #for $tax in $input.taxonomy:
+                    --taxonomy '$tax.name'
+                #end for
+            #end if
+            ${with_otu}
+    ]]></command>
+    <inputs>
+        <conditional name="input">
+            <param name="haveshared" type="select" label="Would you like to supply a mothur shared file?"
+                help="This will create a multisample plot. If you select 'no', you can still create a multisample plot by providing a taxonomy file per sample">
+                <option value="no">No</option>
+                <option value="yes">Yes</option>
+            </param>
+            <when value="no">
+                <param argument="--taxonomy" type="data" multiple="true" format="mothur.ref.taxonomy,mothur.seq.taxonomy,mothur.cons.taxonomy" label="Select mothur taxonomy file" help=""/>
+            </when>
+            <when value="yes">
+                <param argument="--taxonomy" type="data" format="mothur.ref.taxonomy,mothur.seq.taxonomy,mothur.cons.taxonomy" label="Select mothur taxonomy file" help=""/>
+                <param argument="--shared_file" type="data" optional="true" format="mothur.shared" label="Supply a mothur shared file" help=""/>
+                <param argument="--level" type="select" optional="true" label="label - pick (one) OTU Label" help="leave blank for collections, will try to determine level from element names">
+                    <options>
+                        <filter type="data_meta" ref="shared_file" key="labels"/>
+                    </options>
+                </param>
+            </when>
+        </conditional>
+        <param argument="--with_otu" type="boolean" checked="false" truevalue="--with-otu" falsevalue="" label="differentiate between different OTUs of same taxonomy?" help=""/>
+    </inputs>
+    <outputs>
+        <data name="krona_plot" format="html"  from_work_dir="text.krona.html" label="Krona plot of ${on_string}: HTML"/>
+    </outputs>
+    <tests>
+        <test> <!-- test single sample -->
+            <param name="haveshared" value="no"/>
+            <param name="taxonomy" value="multisample.taxonomy"/>
+            <param name="with_otu" value="--with-otu"/>
+            <output name="krona_plot">
+                <assert_contents>
+                    <has_text text="Krona"/>
+                    <has_text text="Actinobacteria"/>
+                    <not_has_text text="F3D0"/>
+                    <not_has_text text="F3D148"/>
+                    <not_has_text text="krona.test1.mothur.cons"/>
+                    <has_text text="Otu0127"/>
+                </assert_contents>
+            </output>
+        </test>
+        <test> <!-- test multi samples (multiple single-sample taxonomy files) -->
+            <param name="haveshared" value="no"/>
+            <param name="taxonomy" value="multisample.taxonomy,krona.test1.mothur.cons.taxonomy"/>
+            <param name="with_otu" value=""/>
+            <output name="krona_plot">
+                <assert_contents>
+                    <has_text text="Krona"/>
+                    <has_text text="krona.test1.mothur.cons"/>
+                    <has_text text="Actinobacteria"/>
+                    <not_has_text text="F3D0"/>
+                    <not_has_text text="F3D148"/>
+                    <not_has_text text="Otu0127"/>
+                </assert_contents>
+            </output>
+        </test>
+        <test> <!-- test multi sample (single multisample taxonomy file with shared file) -->
+            <param name="haveshared" value="yes"/>
+            <param name="taxonomy" value="multisample.taxonomy"/>
+            <param name="shared_file" ftype="mothur.shared" value="example.mothur.shared"/>
+            <param name="with_otu" value="--with-otu"/>
+            <param name="level" value="0.03"/>
+            <output name="krona_plot">
+                <assert_contents>
+                    <has_text text="Krona"/>
+                    <has_text text="Actinobacteria"/>
+                    <has_text text="F3D0"/>
+                    <has_text text="F3D148"/>
+                </assert_contents>
+            </output>
+        </test>
+    </tests>
+    <help><![CDATA[
+**What it does**
+    ]]></help>
+    <expand macro="citations">
+        <citation type="doi">10.1007/978-1-4614-6418-1_802-1</citation>
+    </expand>
+</tool>
b
diff -r 000000000000 -r 607c5e7e0a64 macros.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,9 @@
+<macros>
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.1128/AEM.01541-09</citation> <!-- mothur -->
+            <!-- TODO: MYcrobiota paper -->
+            <yield/>
+        </citations>
+    </xml>
+</macros>
b
diff -r 000000000000 -r 607c5e7e0a64 make_multi_otutable.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make_multi_otutable.xml Wed Dec 13 10:09:50 2017 -0500
[
@@ -0,0 +1,37 @@
+<tool id="mycrobiota-make-multi-otutable" name="Make multisample OTUtable" version="0.1">
+    <description>from a shared and taxonomy file</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <command detect_errors="aggressive"><![CDATA[
+        python '$__tool_directory__/mycrobiota.py'
+            --command make_multi_otutable
+            --shared_file '$shared_file'
+            --taxonomy '$taxonomy'
+            --level $level
+    ]]></command>
+    <inputs>
+        <param argument="--taxonomy" type="data" format="mothur.ref.taxonomy,mothur.seq.taxonomy,mothur.cons.taxonomy" label="Select mothur taxonomy file" help=""/>
+        <param argument="--shared_file" type="data" optional="true" format="mothur.shared" label="Supply a mothur shared file" help=""/>
+        <param argument="--level" type="select" optional="true" label="label - pick (one) OTU Label" help="leave blank for collections, will try to determine level from element names">
+            <options>
+                <filter type="data_meta" ref="shared_file" key="labels"/>
+            </options>
+        </param>
+    </inputs>
+    <outputs>
+        <data name="multi_otutable" format="tabular" from_work_dir="multi_otutable.tsv" label="Multisample otutable on ${on_string}"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="taxonomy" value="multisample.taxonomy"/>
+            <param name="shared_file" ftype="mothur.shared" value="example.mothur.shared"/>
+            <param name="level" value="0.03"/>
+            <output name="multi_otutable" file="shared_with_taxonomy.tsv"/>
+        </test>
+    </tests>
+    <help><![CDATA[
+        help text goes here
+    ]]></help>
+    <expand macro="citations"/>
+</tool>
b
diff -r 000000000000 -r 607c5e7e0a64 mycrobiota.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mycrobiota.py Wed Dec 13 10:09:50 2017 -0500
[
b'@@ -0,0 +1,553 @@\n+import argparse\n+import csv\n+import math\n+import os\n+from subprocess import call\n+\n+\n+def main():\n+    print("Welcome to the MYcrobiota suite")\n+    parser = argparse.ArgumentParser()\n+    parser.add_argument(\'-c\', \'--command\', required=True,\n+                        help="What action to perform")\n+    parser.add_argument(\'-ct\', \'--count_table\', action=\'append\',\n+                        help="mothur count table")\n+    parser.add_argument(\'-cp\', \'--copies\', help="copies of NC for samples")\n+    parser.add_argument(\'-nccp\', \'--nc_copies\', help="copies of NC for itself")\n+    parser.add_argument(\'-t\', \'--taxonomy\', action=\'append\',\n+                        help="mothur taxonomy file")\n+    parser.add_argument(\'-s\', \'--shared_file\', action=\'append\',\n+                        help="mothur shared file")\n+    parser.add_argument(\'-otu\', \'--otutable\', action=\'append\',\n+                        help="mothur OTU table")\n+    parser.add_argument(\'-f\', \'--fasta\', action=\'append\', help="fasta")\n+    parser.add_argument(\'-sl\', \'--summary_log\', action=\'append\',\n+                        help="mothur summary log file")\n+    parser.add_argument(\'-o\', \'--outfile\', help="output file")\n+    parser.add_argument(\'-od\', \'--outdir\', help="output directory", default="")\n+    parser.add_argument(\'-lv\', \'--level\', help="taxonomy level")\n+    parser.add_argument(\'-nc\', \'--negative_control\',\n+                        help="sample name of the negative control")\n+    parser.add_argument(\'-ncs\', \'--negative_control_species\',\n+                        help="species name of the negative control",\n+                        default="Oscillatoria")\n+    parser.add_argument(\'-r\', \'--replicate_suffix\',\n+                        help="suffix to identify replicates")\n+    parser.add_argument(\'-l\', \'--label\', action=\'append\',\n+                        help="label for count table")\n+    parser.add_argument(\'--with-otu\', dest=\'with_otu\', action=\'store_true\',\n+                        default=False)\n+    args = parser.parse_args()\n+\n+    try:\n+        os.mkdir(args.outdir)\n+    except OSError:\n+        pass\n+\n+    print("Running command: "+args.command)\n+\n+    if args.command == \'counttable_totals\':\n+        count_table_totals(args.count_table[0], args.outdir, args.outfile)\n+\n+    elif args.command == \'qc_report\':\n+        if args.count_table:\n+            qc_report(args.count_table, args.label, \'counttables\', args.outdir)\n+        elif args.summary_log:\n+            qc_report(args.summary_log, args.label, \'summarylogs\', args.outdir)\n+\n+    elif args.command == \'create_krona_plot\':\n+        create_krona_plot(args.taxonomy, args.outdir, args.with_otu)\n+\n+    elif args.command == \'create_krona_plot_multisample\':\n+        create_krona_plot_multisample(args.taxonomy, args.shared_file,\n+                                      args.level, args.outdir, args.with_otu)\n+\n+    elif args.command == \'correct_replicates\':\n+        correct_replicates(args.shared_file, args.taxonomy, args.outdir,\n+                           args.replicate_suffix, args.copies,\n+                           args.negative_control, args.nc_copies,\n+                           args.negative_control_species)\n+\n+    elif args.command == \'make_multi_otutable\':\n+        make_multi_otutable(args.taxonomy, args.shared_file, args.level,\n+                            args.outdir)\n+\n+    elif args.command == \'otutable_add_blast_links\':\n+        otutable_add_blast_links(args.otutable, args.fasta)\n+\n+    elif args.command == \'split_multi_otutable\':\n+        split_multi_otutable(args.otutable)\n+\n+    else:\n+        print("unknown command. exiting")\n+\n+\n+def make_url(seq, baseurl):\n+    return baseurl+"?DATABASE=nr&PERC_IDENT=97&EXCLUDE_SEQ_UNCULT=on&" \\\n+                   "HITLIST_SIZE=10&FILTER=L&FILTER=m&FILTER=R&EXPECT=10&" \\\n+                   "FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&" \\\n+                   "SERVICE=megablast&PAGE=Nucleotides&CMD=Put&QUERY=" \\\n+                  + seq.lower()\n+\n+\n+def mak'..b'[0])\n+        lst = map(list, zip(*lst))\n+        writelines2 = [[writelines[i][0]] + lst[i] + writelines[i][-6:]\n+                       for i in range(0, len(writelines))]\n+\n+        # output corrected shared file\n+        write_output(outdir, "multi_otutable.tsv", writelines2)\n+\n+\n+def split_multi_otutable(otutable, with_avg=True):\n+    fulltable = [line.strip().split(\'\\t\')\n+                 for line in open(otutable[0], \'r\') if line]\n+    samples = [s.split(\'_\')[0] for s in fulltable[0][1:-6]]\n+    numcols = len(fulltable[0])\n+    numreplicates = (numcols - 7) / len(set(samples))\n+\n+    for sample in set(samples):\n+        outlines = []\n+        cols = [0] + [i+1 for i, s in enumerate(samples) if sample in s] \\\n+            + [i for i in range(numcols-6, numcols)]\n+        for i, line in enumerate(fulltable):\n+            out = [line[j] for j in cols]\n+            if out[1:-6] != [\'0\'] * numreplicates:\n+                out.insert(-6, \'mean\' if i == 0\n+                           else int(round(mean(map(int, out[1:-6])))))\n+                outlines.append(out)\n+\n+        write_output(\'.\', sample+\'.otutable\', outlines)\n+\n+\n+def create_krona_plot_multisample(taxonomy_file, shared_file, level, outdir,\n+                                  with_otu):\n+    """\n+    Create krona plots from a multisample taxonomy plot and a shared file.\n+    Create one multisample plot and a plot per individual sample\n+\n+    :param taxonomy_file:\n+    :param shared_file:\n+    :param level: which level to use, e.g. unique/0.03/..\n+    :param with_otu:\n+    :return:\n+    """\n+\n+    taxonomies = []\n+\n+    # create taxonomy file per sample\n+    with open(taxonomy_file[0], \'r\') as tax, open(shared_file[0]) as sh:\n+        taxonomy = csv.reader(tax, delimiter=\'\\t\')\n+        shared = csv.reader(sh, delimiter=\'\\t\')\n+        shared_header = next(shared)\n+\n+        for i, row in enumerate(shared):\n+            tax.seek(0)  # make sure to start at beginning of file each time\n+            if row[0] == level:\n+                sample = row[1]\n+\n+                outfile = os.path.join(outdir, sample+".tsv")\n+                taxonomies.append(outfile)\n+                with open(outfile, \'w+\') as of:\n+                    out_table = csv.writer(of, delimiter=\'\\t\')\n+                    out_table.writerow(next(taxonomy))  # header line\n+                    for j, t in enumerate(taxonomy):\n+                        assert t[0] == shared_header[j+3], \\\n+                            "OTU mismatch between taxonomy and shared file"\n+                        t[1] = row[j+3]\n+                        out_table.writerow(t + [shared_header[j+3]])\n+\n+    # make krona plot\n+    create_krona_plot(taxonomies, outdir, with_otu)\n+\n+\n+def create_krona_plot(taxonomy_files, outdir, with_otu):\n+    """\n+    Create a krona plot from one or more mothur taxonomy files\n+\n+    :param taxonomy_files: mothur taxonomy file (output from classify.otu)\n+    :param outdir: directory to store krona-formatted outputs. Default=cwd\n+    :param with_otu: add OTU number as a level in the Krona plot? Default=True\n+    :return:\n+    """\n+    krona_input_files = []\n+\n+    # convert taxonomy files to krona input.\n+    for tax in taxonomy_files:\n+        with open(tax, \'r\') as f:\n+            taxonomy = csv.reader(f, delimiter=\'\\t\')\n+            out_rows = []\n+\n+            next(taxonomy)  # skip header line\n+            for row in taxonomy:\n+                out_rows.append(\n+                    filter(None, [row[1]] + row[2].rstrip(";\\n").split(\';\') +\n+                           [row[0] if with_otu else None]))\n+\n+        outfile = os.path.join(outdir, tax.split("/")[-1]+"krona")\n+        krona_input_files.append(outfile)\n+\n+        with open(outfile, \'w+\') as f2:\n+            out_table = csv.writer(f2, delimiter=\'\\t\')\n+            for row in out_rows:\n+                out_table.writerow(row)\n+\n+    # execute krona command\n+    call(["ktImportText"] + krona_input_files)\n+\n+\n+if __name__ == "__main__":\n+    main()\n'
b
diff -r 000000000000 -r 607c5e7e0a64 otutable_add_blast_links.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/otutable_add_blast_links.xml Wed Dec 13 10:09:50 2017 -0500
[
@@ -0,0 +1,31 @@
+<tool id="mycrobiota-otutable_add_blast" name="Add BLAST links" version="0.1">
+    <description>to a mothur OTU table</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <command detect_errors="aggressive"><![CDATA[
+        python '$__tool_directory__/mycrobiota.py'
+            --command otutable_add_blast_links
+            --otutable '$otutable'
+            --fasta '$fasta'
+    ]]></command>
+    <inputs>
+        <param argument="--otutable" type="data" format="tabular" label="OTU table" help=""/>
+        <param argument="--fasta" type="data" format="fasta" label="OTU representatives fasta file" help=""/>
+    </inputs>
+    <outputs>
+        <data name="otutable_with_blast" format="tabular" from_work_dir="otutable_with_blast.tsv" label="OTUtable with blast links on ${on_string}"/>
+        <data name="filtered_otureps" format="fasta" from_work_dir="filtered_otureps.fasta" label="OTUtable with blast links on ${on_string}"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="otutable" value="otutable_without_blast.tsv"/>
+            <param name="fasta" value="otureps.fasta"/>
+            <output name="otutable_with_blast" file="otutable_with_blast.tsv"/>
+        </test>
+    </tests>
+    <help><![CDATA[
+        help text goes here
+    ]]></help>
+    <expand macro="citations"/>
+</tool>
b
diff -r 000000000000 -r 607c5e7e0a64 otutable_split_by_sample.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/otutable_split_by_sample.xml Wed Dec 13 10:09:50 2017 -0500
[
@@ -0,0 +1,31 @@
+<tool id="mycrobiota-split-multi-otutable" name="Split multisample OTUtable" version="0.1">
+    <description>into a table persample</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <command detect_errors="aggressive"><![CDATA[
+        python '$__tool_directory__/mycrobiota.py'
+            --command split_multi_otutable
+            --otutable '$otutable'
+    ]]></command>
+    <inputs>
+        <param argument="--otutable" type="data" format="tabular" label="Supply a multisaple OTU table" help="expects sample as first part of name e.g. samplename_replicate2_rest"/>
+    </inputs>
+    <outputs>
+        <collection name="sample_otutables" type="list" label="${tool.name} on ${on_string}: per-sample otu tables">
+            <discover_datasets pattern="(?P&lt;designation&gt;.*)\.otutable" format="tabular"/>
+        </collection>
+    </outputs>
+    <tests>
+        <test>
+            <param name="otutable" value="multisample.otutable" ftype="tabular"/>
+            <output_collection name="sample_otutables" count="3">
+                <element name="DX01" file="DX01.otutable" ftype="tabular"/>
+            </output_collection>
+        </test>
+    </tests>
+    <help><![CDATA[
+        help text goes here
+    ]]></help>
+    <expand macro="citations"/>
+</tool>
b
diff -r 000000000000 -r 607c5e7e0a64 qcreport.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/qcreport.xml Wed Dec 13 10:09:50 2017 -0500
[
@@ -0,0 +1,89 @@
+<tool id="mycrobiota-qc-report" name="QC report" version="1">
+    <description>from count tables</description>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <command detect_errors="aggressive"><![CDATA[
+        python '$__tool_directory__/mycrobiota.py'
+            --command qc_report
+            #if $input.filetype == 'summarylog':
+                #for $i, $c in enumerate($input.summaryfiles):
+                    --summary_log '${c.summary}'
+                    --label '${c.label}'
+                #end for
+            #elif $input.filetype == 'counttable':
+                #for $i, $c in enumerate($input.counttables):
+                    --count_table '${c.count_table}'
+                    --label '${c.label}'
+                #end for
+            #end if
+    ]]></command>
+    <inputs>
+        <conditional name="input">
+            <param name="filetype" type="select" label="Generate QC table from" help="">
+                <option value="counttable">count tables</option>
+                <option value="summarylog">summary.seqs log outputs</option>
+            </param>
+            <when value="counttable">
+                <repeat name="counttables" title="Count Table" default="1" >
+                    <param argument="--count_table" type="data" format="mothur.count_table" label="Coumt Table" help=""/>
+                    <param argument="--label" type="text" size="100" value="" label="Enter a label for this step" help="e.g. trimmed by length"/>
+                </repeat>
+            </when>
+            <when value="summarylog">
+                <repeat name="summaryfiles" title="Summary.seqs output log" default="1" >
+                    <param argument="--summary" type="data" format="text" label="Summary File" help="logfile output of summary.seqs command"/>
+                    <param argument="--label" type="text" size="100" value="" label="Enter a label for this step" help="e.g. trimmed by length"/>
+                </repeat>
+            </when>
+        </conditional>
+    </inputs>
+    <outputs>
+        <data name="allsamples" format="tabular" from_work_dir="all_qctable.tsv" label="${tool.name} on ${on_string}: QC table total counts"/>
+        <collection name="persample" type="list" label="${tool.name} on ${on_string}: per-sample QC tables">
+            <discover_datasets pattern=".*?persample_qctable_(?P&lt;designation&gt;.*)\.tsv" format="tabular"/>
+            <filter> input['filetype'] == 'counttable' </filter>
+        </collection>
+    </outputs>
+    <tests>
+        <test><!-- test with count tables -->
+            <param name="filetype" value="counttable"/>
+            <repeat name="counttables">
+                <param name="count_table" value="test2.count_table"/>
+                <param name="label" value="step1"/>
+            </repeat>
+            <repeat name="counttables">
+                <param name="count_table" value="test.count_table"/>
+                <param name="label" value="step2"/>
+            </repeat>
+            <output name="allsamples" md5="97725d04b9927724729f6cd902e10317" ftype="tabular"/>
+            <output_collection name="persample" count="9">
+                <element name="F3D144" md5="d86e633358e8f1518a4a8c2782a358ec"/>
+            </output_collection>
+        </test>
+        <test><!-- test with summary logfiles -->
+            <param name="filetype" value="summarylog"/>
+            <repeat name="summaryfiles">
+                <param name="summary" value="summarylog1.txt"/>
+                <param name="label" value="step1"/>
+            </repeat>
+            <repeat name="summaryfiles">
+                <param name="summary" value="summarylog2.txt"/>
+                <param name="label" value="step2"/>
+            </repeat>
+            <repeat name="summaryfiles">
+                <param name="summary" value="summarylog3.txt"/>
+                <param name="label" value="step 3"/>
+            </repeat>
+            <output name="allsamples" md5="7e092deb126c537247e63a36def1d8fb" ftype="tabular"/>
+        </test>
+    </tests>
+    <help>
+<![CDATA[
+**What it does**
+
+Given a set of count tables, make a summary table describing the differences in number of sequences.
+]]>
+    </help>
+    <expand macro="citations"/>
+</tool>
b
diff -r 000000000000 -r 607c5e7e0a64 recover_samples_discarded_by_subsample.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/recover_samples_discarded_by_subsample.xml Wed Dec 13 10:09:50 2017 -0500
[
@@ -0,0 +1,63 @@
+<tool id="mycrobiota_subsample_add_discarded_samples" name="Recover samples" version="0.1" profile="16.07">
+    <description> discarded by sub.sample</description>
+    <requirements>
+        <requirement type="package" version="1.36.1">mothur</requirement>
+    </requirements>
+    <command detect_errors="aggressive"><![CDATA[
+        ln -s "$in_fasta" fasta.dat &&
+        ln -s "$in_group" group.dat &&
+        ln -s "$in_fasta_subsampled" fasta2.dat &&
+        ln -s "$in_group_subsampled" group2.dat
+
+        ## mothur count.groups on in_fasta
+        && echo 'count.groups(group=group.dat)' | sed 's/ //g' | mothur
+
+        ## get group names with fewer than threshold reads and make a dash-separated list
+        && samples=`python -c "print('-'.join([g[0] for g in [ l.strip().split('\t') for l in open('group.count.summary').readlines() ] if int(g[1]) < $threshold]))"`
+
+        ## get.groups on in_fasta with this list of groups, if list not empty, otherwise create empty file
+        &&
+        if [ -z "\$samples"];
+            then
+                touch fasta.pick.dat;
+                touch group.pick.dat;
+            else
+                echo "get.groups(fasta=fasta.dat, group=group.dat, groups=\$samples)" | sed 's/ //g' | mothur;
+        fi
+
+        ## merge selected reads (fasta.pick.dat) with the fasta file from after sub.sample
+        && echo "merge.files(input=fasta2.dat-fasta.pick.dat, output=final_fasta)" | sed 's/ //g' | mothur
+
+        ## merge group files
+        && echo "merge.files(input=group2.dat-group.pick.dat, output=final_group)" | sed 's/ //g' | mothur
+
+    ]]></command>
+    <inputs>
+        <param name="in_fasta" type="data" format="fasta" label="Fasta before subsample"/>
+        <param name="in_fasta_subsampled" type="data" format="fasta" label="Fasta after subsample"/>
+        <param name="in_group" type="data" format="mothur.groups" label="Group file before subsample"/>
+        <param name="in_group_subsampled" type="data" format="mothur.groups" label="Group file after subsample"/>
+        <param name="threshold" type="integer" value="" min="0" label="Subsample level - cutoff value used in the subsampling" help="any samples with fewer reads than this value would have been discarded by sub.sample, but we want to add them back in" />
+    </inputs>
+    <outputs>
+        <data name="out_fasta" format="fasta" from_work_dir="final_fasta" label="${tool.name} on ${on_string}: fasta"/>
+        <data name="out_group" format="mothur.groups" from_work_dir="final_group" label="${tool.name} on ${on_string}: group"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="in_fasta" value="fasta_before_subsample_small.fasta" ftype="fasta"/>
+            <param name="in_fasta_subsampled" value="fasta_after_subsample_small.fasta" ftype="fasta"/>
+            <param name="in_group" value="groups_before_subsample_small.groups" ftype="mothur.groups"/>
+            <param name="in_group_subsampled" value="groups_after_subsample_small.groups" ftype="mothur.groups"/>
+            <param name="threshold" value="3"/>
+            <output name="out_fasta" file="recovered.fasta"/>
+            <output name="out_group" file="recovered.groups"/>
+        </test>
+    </tests>
+    <help><![CDATA[
+**What it does**
+filter fasta file by group based on number of sequences in the group.
+    ]]></help>
+    <citations>
+    </citations>
+</tool>
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/DX01.otutable
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/DX01.otutable Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,19 @@
+OTU DX01_replicate1 DX01_replicate2 DX01_replicate3 mean Kingdom Phylum Class Order Family Genus
+Otu0001 1025 930 1769 1241 Bacteria Cyanobacteria Cyanobacteria SubsectionIII FamilyI Oscillatoria
+Otu0003 7700 5150 11678 8176 Bacteria Firmicutes Clostridia Clostridiales Family_XI Anaerococcus
+Otu0004 0 3 0 1 Bacteria Bacteroidetes Bacteroidia Bacteroidales Prevotellaceae Alloprevotella
+Otu0005 0 2 0 1 Bacteria Firmicutes Bacilli Lactobacillales Enterococcaceae Enterococcus
+Otu0006 1333 1123 2015 1490 Bacteria Firmicutes Clostridia Clostridiales Family_XI Peptoniphilus
+Otu0007 1335 853 1941 1376 Bacteria Bacteroidetes Bacteroidia Bacteroidales Prevotellaceae Prevotella
+Otu0008 946 761 1909 1205 Bacteria Firmicutes Clostridia Clostridiales Family_XI Parvimonas
+Otu0009 1 8 23 11 Bacteria Firmicutes Bacilli Bacillales Staphylococcaceae Staphylococcus
+Otu0010 897 614 1397 969 Bacteria Firmicutes Clostridia Clostridiales Family_XI Peptoniphilus
+Otu0011 33 10 40 28 Bacteria Proteobacteria Gammaproteobacteria Pseudomonadales Moraxellaceae Acinetobacter
+Otu0012 833 459 1020 771 Bacteria Proteobacteria Epsilonproteobacteria Campylobacterales Campylobacteraceae Campylobacter
+Otu0013 715 454 1121 763 Bacteria Bacteroidetes Bacteroidia Bacteroidales Porphyromonadaceae Porphyromonas
+Otu0014 443 409 671 508 Bacteria Actinobacteria Actinobacteria Corynebacteriales Corynebacteriaceae unclassified
+Otu0015 388 422 1015 608 Bacteria Bacteroidetes Bacteroidia Bacteroidales Porphyromonadaceae Porphyromonas
+Otu0016 585 390 839 605 Bacteria Firmicutes Clostridia Clostridiales Family_XI Peptoniphilus
+Otu0017 0 1 0 0 Bacteria Proteobacteria Alphaproteobacteria Rhodospirillales Acetobacteraceae Acetobacter
+Otu0018 45 1 144 63 Bacteria Firmicutes Bacilli Lactobacillales Streptococcaceae Streptococcus
+Otu0019 374 352 645 457 Bacteria Firmicutes Clostridia Clostridiales Family_XI Anaerococcus
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/example.mothur.shared
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/example.mothur.shared Wed Dec 13 10:09:50 2017 -0500
b
b'@@ -0,0 +1,91 @@\n+label\tGroup\tnumOtus\tOtu0001\tOtu0002\tOtu0003\tOtu0004\tOtu0005\tOtu0006\tOtu0007\tOtu0008\tOtu0009\tOtu0010\tOtu0011\tOtu0012\tOtu0013\tOtu0014\tOtu0015\tOtu0016\tOtu0017\tOtu0018\tOtu0019\tOtu0020\tOtu0021\tOtu0022\tOtu0023\tOtu0024\tOtu0025\tOtu0026\tOtu0027\tOtu0028\tOtu0029\tOtu0030\tOtu0031\tOtu0032\tOtu0033\tOtu0034\tOtu0035\tOtu0036\tOtu0037\tOtu0038\tOtu0039\tOtu0040\tOtu0041\tOtu0042\tOtu0043\tOtu0044\tOtu0045\tOtu0046\tOtu0047\tOtu0048\tOtu0049\tOtu0050\tOtu0051\tOtu0052\tOtu0053\tOtu0054\tOtu0055\tOtu0056\tOtu0057\tOtu0058\tOtu0059\tOtu0060\tOtu0061\tOtu0062\tOtu0063\tOtu0064\tOtu0065\tOtu0066\tOtu0067\tOtu0068\tOtu0069\tOtu0070\tOtu0071\tOtu0072\tOtu0073\tOtu0074\tOtu0075\tOtu0076\tOtu0077\tOtu0078\tOtu0079\tOtu0080\tOtu0081\tOtu0082\tOtu0083\tOtu0084\tOtu0085\tOtu0086\tOtu0087\tOtu0088\tOtu0089\tOtu0090\tOtu0091\tOtu0092\tOtu0093\tOtu0094\tOtu0095\tOtu0096\tOtu0097\tOtu0098\tOtu0099\tOtu0100\tOtu0101\tOtu0102\tOtu0103\tOtu0104\tOtu0105\tOtu0106\tOtu0107\tOtu0108\tOtu0109\tOtu0110\tOtu0111\tOtu0112\tOtu0113\tOtu0114\tOtu0115\tOtu0116\tOtu0117\tOtu0118\tOtu0119\tOtu0120\tOtu0121\tOtu0122\tOtu0123\tOtu0124\tOtu0125\tOtu0126\tOtu0127\tOtu0128\tOtu0129\tOtu0130\tOtu0131\tOtu0132\tOtu0133\tOtu0134\tOtu0135\tOtu0136\tOtu0137\tOtu0138\tOtu0139\tOtu0140\tOtu0141\tOtu0142\tOtu0143\tOtu0144\tOtu0145\tOtu0146\tOtu0147\tOtu0148\tOtu0149\tOtu0150\tOtu0151\tOtu0152\tOtu0153\tOtu0154\tOtu0155\tOtu0156\tOtu0157\tOtu0158\tOtu0159\tOtu0160\tOtu0161\tOtu0162\tOtu0163\tOtu0164\tOtu0165\tOtu0166\tOtu0167\tOtu0168\tOtu0169\tOtu0170\tOtu0171\tOtu0172\tOtu0173\tOtu0174\tOtu0175\tOtu0176\tOtu0177\tOtu0178\tOtu0179\tOtu0180\tOtu0181\tOtu0182\tOtu0183\tOtu0184\tOtu0185\tOtu0186\tOtu0187\tOtu0188\tOtu0189\tOtu0190\tOtu0191\tOtu0192\tOtu0193\tOtu0194\tOtu0195\tOtu0196\tOtu0197\tOtu0198\tOtu0199\tOtu0200\tOtu0201\tOtu0202\tOtu0203\tOtu0204\tOtu0205\tOtu0206\tOtu0207\tOtu0208\tOtu0209\tOtu0210\tOtu0211\tOtu0212\tOtu0213\tOtu0214\tOtu0215\tOtu0216\tOtu0217\tOtu0218\tOtu0219\tOtu0220\tOtu0221\tOtu0222\tOtu0223\tOtu0224\tOtu0225\tOtu0226\tOtu0227\tOtu0228\tOtu0229\tOtu0230\tOtu0231\tOtu0232\tOtu0233\tOtu0234\tOtu0235\tOtu0236\tOtu0237\tOtu0238\tOtu0239\tOtu0240\tOtu0241\tOtu0242\tOtu0243\tOtu0244\tOtu0245\tOtu0246\tOtu0247\tOtu0248\tOtu0249\tOtu0250\tOtu0251\tOtu0252\tOtu0253\tOtu0254\tOtu0255\tOtu0256\tOtu0257\tOtu0258\tOtu0259\tOtu0260\tOtu0261\tOtu0262\tOtu0263\tOtu0264\tOtu0265\tOtu0266\tOtu0267\tOtu0268\tOtu0269\tOtu0270\tOtu0271\tOtu0272\tOtu0273\tOtu0274\tOtu0275\tOtu0276\tOtu0277\tOtu0278\tOtu0279\tOtu0280\tOtu0281\tOtu0282\tOtu0283\tOtu0284\tOtu0285\tOtu0286\tOtu0287\tOtu0288\tOtu0289\tOtu0290\tOtu0291\tOtu0292\tOtu0293\tOtu0294\tOtu0295\tOtu0296\tOtu0297\tOtu0298\tOtu0299\tOtu0300\tOtu0301\tOtu0302\tOtu0303\tOtu0304\tOtu0305\tOtu0306\tOtu0307\tOtu0308\tOtu0309\tOtu0310\tOtu0311\tOtu0312\tOtu0313\tOtu0314\tOtu0315\tOtu0316\tOtu0317\tOtu0318\tOtu0319\tOtu0320\tOtu0321\tOtu0322\tOtu0323\tOtu0324\tOtu0325\tOtu0326\tOtu0327\tOtu0328\tOtu0329\tOtu0330\tOtu0331\tOtu0332\tOtu0333\tOtu0334\tOtu0335\tOtu0336\tOtu0337\tOtu0338\tOtu0339\tOtu0340\tOtu0341\tOtu0342\tOtu0343\tOtu0344\tOtu0345\tOtu0346\tOtu0347\tOtu0348\tOtu0349\tOtu0350\tOtu0351\tOtu0352\tOtu0353\tOtu0354\tOtu0355\tOtu0356\tOtu0357\tOtu0358\tOtu0359\tOtu0360\tOtu0361\tOtu0362\tOtu0363\tOtu0364\tOtu0365\tOtu0366\tOtu0367\tOtu0368\tOtu0369\tOtu0370\tOtu0371\tOtu0372\tOtu0373\tOtu0374\tOtu0375\tOtu0376\tOtu0377\tOtu0378\tOtu0379\tOtu0380\tOtu0381\tOtu0382\tOtu0383\tOtu0384\tOtu0385\tOtu0386\tOtu0387\tOtu0388\tOtu0389\tOtu0390\tOtu0391\tOtu0392\tOtu0393\tOtu0394\tOtu0395\tOtu0396\tOtu0397\tOtu0398\tOtu0399\tOtu0400\tOtu0401\tOtu0402\tOtu0403\tOtu0404\tOtu0405\tOtu0406\tOtu0407\tOtu0408\tOtu0409\tOtu0410\tOtu0411\tOtu0412\tOtu0413\tOtu0414\tOtu0415\tOtu0416\tOtu0417\tOtu0418\tOtu0419\tOtu0420\tOtu0421\tOtu0422\tOtu0423\tOtu0424\tOtu0425\tOtu0426\tOtu0427\tOtu0428\tOtu0429\tOtu0430\tOtu0431\tOtu0432\tOtu0433\tOtu0434\tOtu0435\tOtu0436\tOtu0437\tOtu0438\tOtu0439\tOtu0440\tOtu0441\tOtu0442\tOtu0443\tOtu0444\tOtu0445\tOtu0446\tOtu0447\tOtu0448\tOtu0449\tOtu0450\tOtu0451\tOtu0452\tOtu0453\tOtu0454\tOtu0455\tOtu0456\tOtu0457\tOtu0458\tOtu0459\tOtu0460\tOtu0461\tOtu0462\tOtu0463\tOtu0464\tOtu0465\tOtu0466\tOtu0467\tOtu0468\tOtu0469\tOtu0470\tOtu0471\tOtu0472\tOtu0473\tOtu0474\tOtu0475\tOtu0476\tOtu0477\tOtu0478\tOtu0479\tOtu0480\tOtu0481\tOtu0482\tOtu0483\tOtu0484\tOtu0485\tOtu0486\tOtu0487\tOtu0488\tOtu0489\tOtu0490\tOtu0491\tOtu0492\tOtu0493\tOtu0494\tOtu0495\tO'..b'\t0\t0\t0\t0\t0\t0\t0\n+0.08\tF3D143\t118\t1279\t234\t121\t85\t95\t79\t51\t49\t38\t81\t48\t47\t15\t76\t2\t14\t18\t13\t2\t24\t24\t7\t10\t11\t13\t4\t11\t9\t16\t2\t4\t12\t12\t7\t4\t10\t0\t3\t6\t6\t6\t2\t4\t13\t11\t0\t4\t3\t3\t1\t2\t0\t0\t0\t2\t0\t3\t1\t2\t2\t2\t2\t2\t0\t0\t1\t0\t1\t0\t0\t0\t0\t0\t0\t0\t2\t1\t0\t0\t1\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\n+0.08\tF3D144\t118\t2038\t447\t140\t276\t38\t110\t78\t45\t108\t39\t57\t50\t43\t9\t11\t23\t19\t12\t7\t16\t9\t3\t5\t14\t13\t7\t21\t5\t5\t5\t11\t5\t2\t7\t3\t14\t0\t5\t12\t8\t5\t11\t1\t5\t4\t0\t0\t8\t3\t2\t4\t1\t3\t2\t1\t0\t3\t3\t1\t1\t1\t0\t2\t1\t0\t1\t1\t1\t1\t0\t0\t0\t0\t0\t0\t1\t1\t0\t0\t0\t0\t1\t0\t1\t2\t1\t0\t0\t0\t1\t0\t0\t0\t0\t0\t1\t1\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t1\t0\t0\t0\t0\t0\n+0.08\tF3D145\t118\t3303\t737\t367\t345\t130\t144\t58\t48\t116\t49\t63\t61\t93\t24\t16\t21\t18\t32\t7\t17\t18\t16\t7\t9\t10\t19\t5\t6\t5\t5\t11\t10\t10\t6\t1\t23\t3\t13\t11\t10\t9\t20\t7\t4\t20\t0\t6\t3\t5\t3\t3\t0\t0\t0\t4\t0\t2\t5\t1\t2\t1\t3\t2\t3\t4\t2\t0\t0\t2\t4\t0\t0\t2\t0\t0\t3\t0\t0\t2\t3\t0\t0\t1\t2\t3\t0\t2\t0\t0\t1\t0\t1\t1\t2\t0\t3\t0\t0\t0\t0\t2\t1\t0\t0\t1\t0\t1\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\n+0.08\tF3D146\t118\t1805\t362\t195\t202\t66\t90\t117\t169\t35\t141\t22\t148\t32\t53\t14\t90\t26\t28\t43\t5\t23\t48\t35\t22\t43\t1\t3\t30\t28\t4\t36\t31\t25\t7\t5\t7\t0\t2\t11\t12\t15\t11\t5\t12\t1\t0\t16\t3\t12\t4\t4\t2\t0\t3\t2\t0\t3\t0\t0\t2\t2\t3\t2\t2\t5\t0\t3\t0\t1\t1\t0\t1\t2\t1\t0\t0\t2\t2\t0\t1\t1\t0\t1\t0\t0\t0\t0\t0\t3\t1\t0\t0\t0\t0\t1\t0\t0\t0\t0\t1\t0\t0\t0\t1\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\n+0.08\tF3D147\t118\t7227\t1933\t565\t551\t90\t605\t224\t285\t304\t224\t307\t85\t133\t43\t103\t65\t49\t66\t22\t54\t49\t46\t33\t43\t59\t22\t30\t33\t54\t40\t13\t55\t39\t27\t19\t42\t25\t28\t12\t10\t13\t22\t12\t6\t16\t0\t11\t18\t12\t12\t12\t0\t4\t0\t5\t0\t0\t4\t10\t5\t3\t4\t2\t4\t6\t0\t1\t3\t4\t3\t0\t4\t2\t1\t0\t3\t3\t0\t0\t2\t1\t4\t1\t0\t0\t2\t0\t1\t1\t1\t0\t0\t1\t0\t0\t0\t0\t1\t2\t0\t0\t0\t0\t0\t0\t1\t0\t0\t1\t0\t0\t0\t0\t0\t1\t0\t0\t0\n+0.08\tF3D148\t118\t4942\t1074\t514\t444\t561\t312\t139\t232\t268\t183\t129\t44\t113\t106\t165\t26\t89\t21\t50\t87\t45\t39\t31\t27\t21\t30\t69\t29\t30\t52\t24\t18\t37\t25\t15\t18\t0\t24\t25\t14\t17\t12\t17\t14\t15\t0\t12\t16\t9\t8\t11\t0\t3\t1\t6\t8\t9\t3\t8\t2\t4\t3\t1\t7\t0\t4\t3\t5\t1\t1\t0\t2\t4\t1\t0\t1\t1\t2\t1\t1\t1\t1\t1\t2\t0\t1\t0\t1\t1\t2\t3\t1\t2\t2\t0\t0\t1\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t2\t0\t0\t0\t0\t0\t0\t0\t0\t1\t1\n+0.09\tF3D0\t95\t2555\t563\t981\t111\t169\t166\t28\t80\t223\t67\t153\t102\t25\t110\t72\t61\t69\t0\t107\t24\t82\t121\t23\t42\t60\t4\t81\t18\t8\t22\t0\t25\t0\t68\t9\t2\t0\t10\t32\t2\t33\t24\t5\t19\t1\t6\t0\t5\t4\t0\t0\t9\t0\t3\t4\t4\t3\t5\t8\t1\t0\t0\t10\t5\t1\t2\t0\t1\t4\t3\t0\t1\t0\t0\t0\t3\t0\t0\t0\t2\t0\t1\t2\t1\t1\t0\t0\t0\t1\t0\t1\t0\t0\t0\t0\n+0.09\tF3D141\t95\t2290\t501\t467\t236\t210\t343\t118\t101\t114\t136\t42\t15\t51\t8\t11\t11\t12\t31\t15\t56\t10\t5\t16\t34\t4\t8\t0\t5\t10\t12\t5\t16\t0\t0\t3\t5\t10\t4\t1\t1\t0\t0\t3\t1\t5\t1\t0\t3\t0\t7\t2\t0\t1\t4\t2\t2\t2\t1\t0\t1\t0\t1\t0\t0\t0\t1\t2\t1\t0\t0\t0\t1\t0\t1\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\n+0.09\tF3D142\t95\t1294\t296\t142\t162\t210\t83\t58\t53\t25\t15\t8\t21\t11\t9\t19\t20\t17\t25\t6\t10\t9\t3\t27\t4\t5\t12\t1\t8\t6\t5\t7\t0\t3\t0\t6\t4\t3\t0\t0\t0\t1\t0\t0\t0\t1\t3\t2\t0\t1\t2\t1\t1\t5\t1\t0\t0\t2\t0\t0\t2\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t1\t0\t0\t2\t1\t0\t1\t1\t0\t0\t1\t1\t0\t0\t0\t0\t1\t1\t0\t0\t0\t1\t0\t0\t0\n+0.09\tF3D143\t95\t1294\t234\t206\t133\t121\t95\t79\t38\t60\t92\t19\t19\t2\t14\t19\t18\t13\t24\t2\t24\t11\t4\t11\t4\t2\t10\t0\t3\t6\t6\t2\t4\t11\t0\t4\t3\t3\t1\t0\t2\t0\t0\t2\t0\t3\t1\t2\t2\t2\t2\t0\t1\t1\t0\t0\t0\t0\t1\t0\t0\t2\t1\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\n+0.09\tF3D144\t95\t2081\t447\t169\t333\t140\t38\t110\t108\t61\t14\t10\t8\t11\t23\t18\t19\t12\t16\t7\t9\t14\t7\t21\t11\t5\t14\t0\t5\t12\t8\t11\t1\t4\t0\t0\t8\t3\t2\t3\t4\t1\t2\t1\t0\t3\t3\t1\t1\t0\t2\t1\t1\t1\t1\t1\t0\t1\t0\t0\t0\t1\t2\t0\t0\t0\t0\t1\t1\t0\t0\t2\t1\t1\t0\t0\t0\t0\t0\t1\t0\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\n+0.09\tF3D145\t95\t3396\t737\t169\t408\t367\t130\t144\t116\t70\t29\t13\t26\t16\t21\t19\t18\t32\t17\t7\t18\t9\t19\t5\t15\t5\t23\t3\t13\t11\t10\t20\t7\t20\t0\t6\t3\t5\t5\t0\t3\t0\t0\t4\t0\t2\t5\t1\t1\t3\t2\t3\t2\t0\t0\t2\t4\t0\t4\t0\t0\t3\t0\t0\t0\t3\t1\t0\t2\t0\t0\t3\t0\t1\t2\t0\t1\t1\t2\t3\t0\t1\t0\t0\t0\t0\t0\t1\t1\t0\t0\t0\t0\t1\t0\t0\n+0.09\tF3D146\t95\t1837\t362\t464\t224\t195\t66\t90\t35\t162\t81\t65\t79\t14\t90\t58\t26\t28\t5\t43\t23\t22\t1\t3\t41\t4\t7\t0\t2\t11\t12\t11\t5\t1\t0\t16\t3\t12\t6\t0\t4\t2\t3\t2\t0\t3\t0\t0\t2\t3\t2\t2\t0\t0\t3\t1\t1\t1\t0\t1\t1\t0\t2\t0\t2\t1\t1\t0\t0\t0\t0\t0\t0\t1\t0\t3\t0\t0\t0\t0\t1\t0\t0\t1\t0\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\t0\n+0.09\tF3D147\t95\t7360\t1933\t778\t858\t565\t90\t605\t304\t136\t97\t66\t101\t103\t65\t72\t49\t66\t54\t22\t49\t43\t22\t30\t19\t40\t42\t25\t28\t12\t10\t22\t12\t16\t0\t11\t18\t12\t14\t4\t12\t0\t0\t5\t0\t0\t4\t10\t3\t4\t2\t4\t0\t3\t1\t4\t3\t1\t0\t1\t4\t3\t3\t0\t0\t2\t1\t4\t0\t1\t0\t0\t2\t1\t0\t1\t0\t1\t0\t0\t0\t0\t1\t0\t2\t0\t1\t0\t0\t0\t0\t0\t0\t0\t1\t1\n+0.09\tF3D148\t95\t5055\t1074\t605\t573\t514\t561\t312\t268\t86\t136\t60\t57\t165\t26\t38\t89\t21\t87\t50\t45\t27\t30\t69\t24\t52\t18\t0\t24\t25\t15\t14\t17\t15\t0\t12\t16\t9\t12\t3\t11\t0\t1\t6\t8\t9\t3\t8\t4\t3\t1\t7\t4\t5\t3\t1\t1\t2\t1\t1\t2\t1\t1\t0\t2\t1\t1\t1\t2\t1\t3\t0\t1\t2\t0\t1\t2\t2\t2\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t0\n'
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/fasta_after_subsample_small.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fasta_after_subsample_small.fasta Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,12 @@
+>read1
+ACTG
+>read2
+ACTG
+>read3
+ACTG
+>read6
+ACTG
+>read7
+ACTG
+>read8
+ACTG
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/fasta_before_subsample_small.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/fasta_before_subsample_small.fasta Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,20 @@
+>read1
+ACTG
+>read2
+ACTG
+>read3
+ACTG
+>read4
+ACTG
+>read5
+ACTG
+>read6
+ACTG
+>read7
+ACTG
+>read8
+ACTG
+>read9
+ACTG
+>read10
+ACTG
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/groups_after_subsample_small.groups
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/groups_after_subsample_small.groups Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,6 @@
+read1 group1
+read2 group1
+read3 group1
+read6 group2
+read7 group2
+read8 group2
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/groups_before_subsample_small.groups
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/groups_before_subsample_small.groups Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,10 @@
+read1 group1
+read2 group1
+read3 group1
+read4 group1
+read5 group1
+read6 group2
+read7 group2
+read8 group2
+read9 group3
+read10 group3
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/krona.test1.mothur.cons.taxonomy
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/krona.test1.mothur.cons.taxonomy Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,47 @@
+OTU Size Taxonomy
+Otu01 89 Bacteria;Firmicutes;Bacilli;Lactobacillales;Streptococcaceae;Streptococcus;
+Otu02 67 Bacteria;Firmicutes;Bacilli;Lactobacillales;Carnobacteriaceae;Dolosigranulum;
+Otu03 66 Bacteria;Firmicutes;Bacilli;Lactobacillales;Aerococcaceae;Abiotrophia;
+Otu04 57 Bacteria;Firmicutes;Bacilli;Bacillales;Staphylococcaceae;Staphylococcus;
+Otu05 42 Bacteria;Proteobacteria;Gammaproteobacteria;Pseudomonadales;Moraxellaceae;Moraxella;
+Otu06 31 Bacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Corynebacterium_1;
+Otu07 29 Bacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Corynebacterium_1;
+Otu08 28 Bacteria;Firmicutes;Negativicutes;Selenomonadales;Veillonellaceae;Veillonella;
+Otu09 14 Bacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Corynebacterium_1;
+Otu10 11 Bacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Prevotellaceae;Prevotella_7;
+Otu11 5 Bacteria;Proteobacteria;Betaproteobacteria;Neisseriales;Neisseriaceae;unclassified;
+Otu12 5 Bacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Corynebacterium_1;
+Otu13 5 Bacteria;Firmicutes;Clostridia;Clostridiales;Lachnospiraceae;Stomatobaculum;
+Otu14 5 Bacteria;Proteobacteria;Gammaproteobacteria;Enterobacteriales;Enterobacteriaceae;Escherichia-Shigella;
+Otu15 4 Bacteria;Actinobacteria;Actinobacteria;unclassified;unclassified;unclassified;
+Otu16 4 Bacteria;Proteobacteria;Betaproteobacteria;Neisseriales;Neisseriaceae;Neisseria;
+Otu17 3 Bacteria;Proteobacteria;Betaproteobacteria;Neisseriales;Neisseriaceae;unclassified;
+Otu18 2 Bacteria;Proteobacteria;Gammaproteobacteria;unclassified;unclassified;unclassified;
+Otu19 2 Bacteria;Proteobacteria;Betaproteobacteria;Burkholderiales;Comamonadaceae;Tepidimonas;
+Otu20 2 Bacteria;Proteobacteria;Betaproteobacteria;Burkholderiales;Comamonadaceae;Aquabacterium;
+Otu21 2 Bacteria;Firmicutes;Negativicutes;Selenomonadales;Veillonellaceae;Selenomonas;
+Otu22 2 Bacteria;Firmicutes;Clostridia;Clostridiales;Lachnospiraceae;Lachnoanaerobaculum;
+Otu23 1 Bacteria;Actinobacteria;Actinobacteria;Bifidobacteriales;Bifidobacteriaceae;Scardovia;
+Otu24 1 Bacteria;Deinococcus-Thermus;Deinococci;Deinococcales;Deinococcaceae;Deinococcus;
+Otu25 1 Bacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Prevotellaceae;Prevotella;
+Otu26 1 Bacteria;Actinobacteria;Coriobacteriia;Coriobacteriales;Coriobacteriaceae;Atopobium;
+Otu27 1 Bacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Corynebacterium_1;
+Otu28 1 Bacteria;Firmicutes;Bacilli;Bacillales;Listeriaceae;Listeria;
+Otu29 1 Bacteria;Actinobacteria;Coriobacteriia;Coriobacteriales;Coriobacteriaceae;Olsenella;
+Otu30 1 Bacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Prevotellaceae;Prevotella_7;
+Otu31 1 Bacteria;Firmicutes;Clostridia;Clostridiales;Family_XIII;Mogibacterium;
+Otu32 1 Bacteria;Firmicutes;Clostridia;Clostridiales;Lachnospiraceae;Oribacterium;
+Otu33 1 Bacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;
+Otu34 1 Bacteria;Firmicutes;Bacilli;Lactobacillales;Streptococcaceae;Streptococcus;
+Otu35 1 Bacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;
+Otu36 1 Bacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Prevotellaceae;Prevotella_6;
+Otu37 1 Bacteria;Actinobacteria;Actinobacteria;Micrococcales;Micrococcaceae;Kocuria;
+Otu38 1 Bacteria;Firmicutes;Bacilli;Lactobacillales;Carnobacteriaceae;Granulicatella;
+Otu39 1 Bacteria;Actinobacteria;Actinobacteria;Micrococcales;Micrococcaceae;Rothia;
+Otu40 1 Bacteria;Proteobacteria;Gammaproteobacteria;Pseudomonadales;Moraxellaceae;Moraxella;
+Otu41 1 Bacteria;Cyanobacteria;unclassified;unclassified;unclassified;unclassified;
+Otu42 1 Bacteria;Firmicutes;Negativicutes;Selenomonadales;Veillonellaceae;Dialister;
+Otu43 1 Bacteria;Firmicutes;Bacilli;Lactobacillales;Streptococcaceae;Streptococcus;
+Otu44 1 Bacteria;Firmicutes;Clostridia;Clostridiales;Lachnospiraceae;unclassified;
+Otu45 1 Bacteria;Proteobacteria;Betaproteobacteria;Neisseriales;Neisseriaceae;Eikenella;
+Otu46 1 Bacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Prevotellaceae;Prevotella;
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/multisample.otutable
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/multisample.otutable Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,20 @@
+OTU DX01_replicate1 DX01_replicate2 DX01_replicate3 DX02_replicate1 DX02_replicate2 DX02_replicate3 NC_replicate1 NC_replicate2 NC_replicate3 Kingdom Phylum Class Order Family Genus
+Otu0001 1025 930 1769 981 931 1154 3098 11487 7509 Bacteria Cyanobacteria Cyanobacteria SubsectionIII FamilyI Oscillatoria
+Otu0002 0 0 0 8703 7578 9012 0 0 0 Bacteria Proteobacteria Gammaproteobacteria Enterobacteriales Enterobacteriaceae Morganella
+Otu0003 7700 5150 11678 1 0 1 2 0 1 Bacteria Firmicutes Clostridia Clostridiales Family_XI Anaerococcus
+Otu0004 0 3 0 7401 5795 7061 0 0 353 Bacteria Bacteroidetes Bacteroidia Bacteroidales Prevotellaceae Alloprevotella
+Otu0005 0 2 0 3978 3577 4362 0 0 0 Bacteria Firmicutes Bacilli Lactobacillales Enterococcaceae Enterococcus
+Otu0006 1333 1123 2015 0 0 0 0 0 0 Bacteria Firmicutes Clostridia Clostridiales Family_XI Peptoniphilus
+Otu0007 1335 853 1941 0 0 3 0 0 0 Bacteria Bacteroidetes Bacteroidia Bacteroidales Prevotellaceae Prevotella
+Otu0008 946 761 1909 0 0 0 0 0 0 Bacteria Firmicutes Clostridia Clostridiales Family_XI Parvimonas
+Otu0009 1 8 23 610 451 519 214 686 943 Bacteria Firmicutes Bacilli Bacillales Staphylococcaceae Staphylococcus
+Otu0010 897 614 1397 0 0 0 0 0 0 Bacteria Firmicutes Clostridia Clostridiales Family_XI Peptoniphilus
+Otu0011 33 10 40 1 35 0 156 1205 874 Bacteria Proteobacteria Gammaproteobacteria Pseudomonadales Moraxellaceae Acinetobacter
+Otu0012 833 459 1020 0 0 0 0 0 0 Bacteria Proteobacteria Epsilonproteobacteria Campylobacterales Campylobacteraceae Campylobacter
+Otu0013 715 454 1121 4 0 0 0 0 0 Bacteria Bacteroidetes Bacteroidia Bacteroidales Porphyromonadaceae Porphyromonas
+Otu0014 443 409 671 10 2 0 0 0 398 Bacteria Actinobacteria Actinobacteria Corynebacteriales Corynebacteriaceae unclassified
+Otu0015 388 422 1015 18 0 16 0 0 0 Bacteria Bacteroidetes Bacteroidia Bacteroidales Porphyromonadaceae Porphyromonas
+Otu0016 585 390 839 0 0 0 0 0 0 Bacteria Firmicutes Clostridia Clostridiales Family_XI Peptoniphilus
+Otu0017 0 1 0 0 1 0 0 1589 0 Bacteria Proteobacteria Alphaproteobacteria Rhodospirillales Acetobacteraceae Acetobacter
+Otu0018 45 1 144 12 3 8 0 23 1287 Bacteria Firmicutes Bacilli Lactobacillales Streptococcaceae Streptococcus
+Otu0019 374 352 645 0 0 0 0 0 0 Bacteria Firmicutes Clostridia Clostridiales Family_XI Anaerococcus
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/multisample.taxonomy
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/multisample.taxonomy Wed Dec 13 10:09:50 2017 -0500
b
b'@@ -0,0 +1,335 @@\n+OTU\tSize\tTaxonomy\n+Otu0001\t6675\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0002\t5145\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0003\t4815\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0004\t4283\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0005\t4060\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0006\t3710\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0007\t2489\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);Bacteroidaceae(100);Bacteroides(100);\n+Otu0008\t2152\tBacteria(100);Firmicutes(100);Bacilli(100);Lactobacillales(100);Lactobacillaceae(100);Lactobacillus(100);\n+Otu0009\t1581\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0010\t1572\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);Rikenellaceae(100);Alistipes(100);\n+Otu0011\t1539\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0012\t1416\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0013\t1092\tBacteria(100);Firmicutes(100);Erysipelotrichia(100);Erysipelotrichales(100);Erysipelotrichaceae(100);Turicibacter(100);\n+Otu0014\t980\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0015\t632\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);Blautia(100);\n+Otu0016\t553\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0017\t470\tBacteria(100);Firmicutes(100);Bacilli(100);Lactobacillales(100);Lactobacillaceae(100);Lactobacillus(100);\n+Otu0018\t462\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0019\t414\tBacteria(100);Firmicutes(100);Bacilli(100);Lactobacillales(100);Lactobacillaceae(100);Lactobacillus(94);\n+Otu0020\t395\tBacteria(100);unclassified(100);unclassified(100);unclassified(100);unclassified(100);unclassified(100);\n+Otu0021\t330\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0022\t316\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);Blautia(100);\n+Otu0023\t308\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);Blautia(96);\n+Otu0024\t304\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);Blautia(100);\n+Otu0025\t259\tBacteria(100);Tenericutes(100);Mollicutes(100);RF9(100);unclassified(100);unclassified(100);\n+Otu0026\t259\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0027\t257\tBacteria(100);Firmicutes(96);Clostridia(96);Clostridiales(96);Lachnospiraceae(96);unclassified(96);\n+Otu0028\t229\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);Blautia(99);\n+Otu0029\t222\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0030\t220\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Ruminococcaceae(100);unclassified(62);\n+Otu0031\t205\tBacteria(100);Actinobacteria(100);Actinobacteria(100);Bifidobacteriales(100);Bifidobacteriaceae(100);Bifidobacterium(100);\n+Otu0032\t203\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Clostridiaceae_1(100);Clostridium_sensu_stricto_1(100);\n+Otu0033\t203\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0034\t180\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(10'..b'ales(100);S24-7(100);unclassified(100);\n+Otu0300\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0301\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0302\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0303\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0304\t1\tBacteria(100);Firmicutes(100);unclassified(100);unclassified(100);unclassified(100);unclassified(100);\n+Otu0305\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0306\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0307\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0308\t1\tBacteria(100);Firmicutes(100);Bacilli(100);Lactobacillales(100);Lactobacillaceae(100);unclassified(100);\n+Otu0309\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0310\t1\tBacteria(100);unclassified(100);unclassified(100);unclassified(100);unclassified(100);unclassified(100);\n+Otu0311\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0312\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);Blautia(100);\n+Otu0313\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0314\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0315\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Eubacteriaceae(100);Anaerofustis(100);\n+Otu0316\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Ruminococcaceae(100);Anaerotruncus(100);\n+Otu0317\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0318\t1\tBacteria(100);Firmicutes(100);Bacilli(100);unclassified(100);unclassified(100);unclassified(100);\n+Otu0319\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);Bacteroidaceae(100);Bacteroides(100);\n+Otu0320\t1\tBacteria(100);Bacteroidetes(100);Flavobacteriia(100);Flavobacteriales(100);Cryomorphaceae(100);Fluviicola(100);\n+Otu0321\t1\tBacteria(100);unclassified(100);unclassified(100);unclassified(100);unclassified(100);unclassified(100);\n+Otu0322\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0323\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Ruminococcaceae(100);Oscillibacter(100);\n+Otu0324\t1\tBacteria(100);Firmicutes(100);Bacilli(100);unclassified(100);unclassified(100);unclassified(100);\n+Otu0325\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0326\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0327\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);unclassified(100);\n+Otu0328\t1\tBacteria(100);unclassified(100);unclassified(100);unclassified(100);unclassified(100);unclassified(100);\n+Otu0329\t1\tBacteria(100);Firmicutes(100);Bacilli(100);unclassified(100);unclassified(100);unclassified(100);\n+Otu0330\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0331\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0332\t1\tBacteria(100);Firmicutes(100);Bacilli(100);Bacillales(100);Listeriaceae(100);Listeria(100);\n+Otu0333\t1\tBacteria(100);Bacteroidetes(100);Bacteroidia(100);Bacteroidales(100);S24-7(100);unclassified(100);\n+Otu0334\t1\tBacteria(100);Firmicutes(100);Clostridia(100);Clostridiales(100);Lachnospiraceae(100);Marvinbryantia(100);\n'
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/otureps.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/otureps.fasta Wed Dec 13 10:09:50 2017 -0500
b
b'@@ -0,0 +1,92 @@\n+>6186_496929\tOtu01|89\n+CACGCTGTAAACGATG-AGTGC-TAGGTG-TT-AG-ACC-CT---TT-CC---GG-GGTTTAGTG-CCGT--AGCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGAAGCAACGCGAAGAACCTTACCAGGTCTTGACATC-CCTCT-GACCG-CTCTA-GAGAT-A-GA-GTTT-T-----CC-T--TC-G-G-G---ACAGAGGTG-ACAGGTGGTGCATGGTT\n+>6186_156947\tOtu02|67\n+CACGCCGTAAACGATG-AGTGC-TAAGTG-TT-GG-GGG-CT---TT-CC---GG-CCCTCGGTG-CTGG--AGCTAACGTATTAAGCACTCCGCCTGGGGATTACGACCGCAAGGTTGAAACTCAAAAGAATTGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGAAGCAACGCGAAGAACCTTACCAGCTCTTGACATC--TTCT-GACAA-CTCTA-GAGAT-A-GA-GCGT-T-C---CC-T--TC-G-G-G--GACAGAA-TG-ACAGGTGGTGCATGGTT\n+>6186_449599\tOtu03|66\n+CACGCCGTAAACGATG-AGTGC-TAAGTG-TT-GG-AGG-GG---TT-CC---AC-CCTTCAGTG-CTGG--AGTTAACGCAATAAGCACTCCGCCTGGGGAGTACGGCCGCAAGGCTGAAACTCAAAGGAATTGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGAAGCAACGCGAAGAACCTTACCAGGTCTTGACATC-CCGAC-GACCG-CTCTA-GAGAT-A-GA-GTTT-T-----TC-T--TC-G-G-A---ACGTCGGTG-ACAGGTGGTGCATGGTT\n+>6186_7388600\tOtu04|57\n+CACGCCGTAAACGATG-AGTGC-TAAGTG-TT-AG-GGG-GT---TT-CC---GC-CCCTTAGTG-CTGC--AGCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAATTGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGAAGCAACGCGAAGAACCTTACCAAATCTTGACATC--CTTT-GACCG-CTCTA-GAGAT-A-GA-GTCT-T-CC--CC-T--TC-G-G-G-GGACAAAG-TG-ACAGGTGGTGCATGGTT\n+>6186_7011166\tOtu05|42\n+CACGCCGTAAACGATG-TCTAC-CAGTCG-TT-GG-GTC-T---TTT-AA----A-GGCTTAGTG-ACGC--AGTTAACGCGATAAGTAGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGATGCAACGCGAAGAACCTTACCTGGTCTTGACATA--GTGA-GAGTC-TTGCA-GAGAT-G-CG-AGAG-T-G---CC-T--TT-G-G-G--AATTCAC-AT-ACAGGTGCTGCATGGCT\n+>6186_6532585\tOtu06|31\n+CATGCCGTAAACGGTG-GGCGC-TAGGTG-TG-AG-GGT-C--TTTC-TA-C--G-ACTTTCGTG-CCGT--AGCTAACGCATTAAGCGCCCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAATTGACGGGGACCCGCACAAGCGGCGGAGCATGTGGATTAATT-CGATGCAACGCGAAGAACCTTACCTGGGCTTGACATAC-ATCA-GATCG-CTGCA-GAGAT-G-TA-GTTT-------CC-CT-TT-GTG-G----TTGGT-GT-ACAGGTGGTGCATGGTT\n+>6186_372115\tOtu07|29\n+CATGCCGTAAACGGTG-GGCGC-TAGGTG-TA-GG-GGC-C---TTT-TG-G--G-GTTTCTGTG-CCGT--AGCTAACGCATTAAGCGCCCCGCCTGGGGAGTACGGCCGCAAGGCTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGCGGAGCATGTGGATTAATT-CGATGCAACGCGAAGAACCTTACCTGGGCTTGACATAC-ACCG-GATCG-CTGCA-GAGAT-G-TA-GTTT-------CC-C--TT-GTG-G----CTGGT-GT-ACAGGTGGTGCATGGCT\n+>6186_433990\tOtu08|28\n+CTGGCCGTAAACGATG-GGTAC-TAGGTG-TA-GG-AGG----TATC-GA-CC---CCTTCTGTG-CCGG--AGTTAACGCAATAAGTACCCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGTATGTGGTTTAATT-CGACGCAACGCGAAGAACCTTACCAGGTCTTGACATT--GATG-GACAG-AACTA-GAGAT-A-GT-TCCT-C-T---TC-T--TC-G-G-A--AGCCAGA-AA-ACAGGTGGTGCACGGTT\n+>6186_93574\tOtu09|14\n+CATGCCGTAAACGGTG-GGCGC-TAGGTG-TG-AG-GGT-C--TTTC-TA-C--G-ACTTTCGTG-CCGT--AGCTAACGCATTAAGCGCCCCGCCTGGGGAGTACGGCCGCAAGGCTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGCGGAGCATGTGGATTAATT-CGATGCAACGCGAAGAACCTTACCTGGGCTTGACATAC-ACCA-GATTG-GGCTA-GAGAT-A-GT-TCGT-------CC-CT-TT-GTG-G----TTGGT-GT-ACAGGTGGTGCATGGTT\n+>6186_545958\tOtu10|11\n+CGCACAGTAAACGATG-GATGC-CCGCTG-TT-GG-TA------CCT-GG-------TATCAGCG-GCTA--AGCGAAAGCATTAAGCATCCCACCTGGGGAGTACGCCGGCAACGGTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGAGGAACATGTGGTTTAATT-CGATGATACGCGAGGAACCTTACCCGGGCTTGAATTGC-AGAG-GAAGG-ATTTA-GAGAT-A-AT-GACG-C-----CC-T--TC-G-G-G---GTCTCT-GT-GAAGGTGCTGCATGGTT\n+>6186_553777\tOtu11|5\n+CACGCCCTAAACGATG-ACAAT-TAGCTG-TT-GG-CCC-C---ATT-AA----G-GGGTGAGTA-GCGA--AGCTAACGCGTGAAATTGTCCGCCTGGGGAGTACGGTCGCAAGATTAAAACTCAAAGGAATTGACGGGGACCCGCACAAGCGGTGGATGATGTGGATTAATT-CGATGCAACGCGAAGAACCTTACCTGGTCTTGACATG--TACA-GAAGG-TTTTA-GAGAT-A-AG-ACTG-T-G---CC-T--TC-G-G-G--AACTGTA-AC-ACAGGTGCTGCATGGCT\n+>6186_4347702\tOtu12|5\n+CATGCCGTAAACGGTG-GGCGC-TAGGTG-TG-GG-TTT-C--CTTC-CA-C--G-GGATCCGTG-CCGT--AGCTAACGCATTAAGCGCCCCGCCTGGGGAGTACGGCCGCAAGGCTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGCGGAGCATGTGGATTAATT-CGATGCAACGCGAAGAACCTTACCTGGGCTTGACATGC-ACTG-GATGC-GGCCA-GAGAT-G-GT-TGTT-------CC-CT-TT-GTG-G----CTGGT-GT-GCAGGTGGTGCATGGTT\n+>6186_7681685\tOtu13|5\n+CACGCGGTAAACGATG-AATAC-TAGGTG-TT-GG-TGC-CC---AA-A----GG-GCATCGGTG-CCGT--CGCAAACGCAATAAGTATTCC'..b'ATGTGGTTTAATT-CGAAGCAACGCGAAGAACCTTACCAGGTCTTGACATC-CTTCT-GACCG-GCCTA-GAGAT-A-GG-CTTT-C-----TC-T--TC-G-G-A---GCAGAAGTG-ACAGGTGGTGCATGGTT\n+>6186_735142\tOtu35|1\n+CACGCTGTAAACGATG-AGTGC-TAGGTG-TC-GG-C--------GA-AT--------GTCGGTG-CCGC--AGTTAACACAATAAGCACTCCGCCTGGGGAGTACGTGCGCAAGCATGAAACTCAAAGGAATTGACGGGGACCCGCACAAGCAGCGGAGCATGTGGTTTAATT-CGAAGCAACGCGAAGAACCTTACCAGGGCTTGACATAC-TGAG-GACGT-ACTTA-GAGAT-A-AG-TATA-C-T---TC-T--TC-G-G-A--AGCCTCA-AT-ACAGGTGGTGCATGGTT\n+>6186_7042987\tOtu36|1\n+CGCACAGTAAACGATG-GATGC-CCGTTG-TT-AG-TTC-A---CTT-A-----A-GAATTAGCG-ACCA--AGCGAAAGCATTAAGCATCCCACCTGGGGAGTACGCCGGCAACGGTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGAGGAACATGTGGTTTAATT-CGATGATACGCGAGGAACCTTACCCGGGCTTGAATTGC-AGAC-GAACG-ATTCA-GAGAT-G-AT-GAGG-C-----CC-T--TC-G-G-G---GCGTCT-GT-GAAGGTGCTGCATGGTT\n+>6186_6695219\tOtu37|1\n+CATGCCGTAAACGTTG-GGCAC-TAGGTG-TG-GG-GGA-C--ATTC-CA-C--G-TTTTCCGCG-CCGT--AGCTAACGCATTAAGTGCCCCGCCTGGGGAGTACGGCCGCAAGGCTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGCGGAGCATGCGGATTAATT-CGATGCAACGCGAAGAACCTTACCAAGGCTTGACATAT-ACCG-GATCG-TTCCA-GAGAT-G-GT-TCTT-C-----CC-C--TTTG-G-G---GTCGGT-AT-ACAGGTGGTGCATGGTT\n+>6186_6317358\tOtu38|1\n+CACGCCGTAAACGATG-AGTGC-TAAGTG-TT-GG-AGG-GT---TT-CC---GC-CCTTCAGTG-CTGC--AGTTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAATTGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGAAGCAACGCGAAGAACCTTACCAAGTCTTGACATC--CTTT-GACCA-CTCTA-GGGAT-A-GA-GCTT-T-C---CC-T--TC-G-G-G--GACAAAG-TG-ACAGGTGGTGCATGGTT\n+>6186_5975992\tOtu39|1\n+CATGCCGTAAACGTTG-GGCAC-TAGGTG-TG-GG-GGA-C--ATTC-CA-C--G-TTTTCCGCG-CCGT--AGCTAACGCATTAAGTGCCCCGCCTGGGGAGTACGGCCGCAAGGCTAAAACTCAAAGAAATTGACGGGGGCCCGCACAAGCGGCGGAGCATGCGGATTAAT-TCGATGCAACGCGAAGAACCTTACCAAGGCTTGACATAT-ACTG-GACTG-CGTCA-GAGAT-G-GC-GTTT-C-----CC-T--TC-G-G-G---GCTGGT-AT-ACAGGTGGTGCATGGTT\n+>6186_2187574\tOtu40|1\n+CACGCCGTAAACGATG-TCTAC-CAGTCG-TT-GG-GTC-T---TTT-AA----A-GACTTAGTG-ACGC--AGTTAACGCAATAAGTAGACCGCCTGGGGAGTACGGCCGCAAGGTTAAAACTCAAATGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGATGCAACGCGAAGAACCTTACCTGGTCTTGACATA--TCTA-GAATC-CTGCA-GAGAT-G-CG-GGAG-T-G---CC-T--TC-G-G-G--AATTAGA-AT-ACAGGTGCTGCATGGCT\n+>6186_2825082\tOtu41|1\n+CTAGCCGTAAACGATG-GATAC-TAGGCG-CT-GC-GCGT----ATC-GACC----CGTGCAGTG-CTGT--AGCTAACGCGTTAAGTATCCCGCCTGGGGAGTACGTTCGCAAGAATGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGATGCAAAGCGAAGAACCTTACCAGGGCTTGACATG--CCGC-GAATC-CTCTT-GAAAG-A-GA-GGGG-T-G---CC-T--TC-G-G-G--AACGCGG-AC-ACAGGTGGTGCATGGCT\n+>6186_3293195\tOtu42|1\n+CACGCCGTAAACGATG-GATAC-TAGGTG-TA-GG-AGG----TATC-GA-CC---CCTCCTGTG-CCGG--AGTTAACGCAATAAGTATCCCGCCTGGGAAGTACGATCGCAAGATTAAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGTATGTGGTTTAATT-CGACGCAACGCGAAGAACCTTACCAGGTCTTGACATT--GATC-GCGAT-CTGCA-GAAAT-G-CG-GAGT-T-CT--TC-T--TC-G-G-A-AGACGAGA-AA-ACAGGTGGTGCACGGCT\n+>6186_3988839\tOtu43|1\n+CACGCCGTAAACGATG-AGTGC-TAGGTG-TT-GG-ATC-CT---TT-CC---GG-GATTCAGTG-CCGC--AGCTAACGCATTAAGCACTCCGCCTGGGGAGTACGACCGCAAGGTTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGAAGCAACGCGAAGAACCTTACCAGGTCTTGACATC-CCGAT-GCTAT-TTCTA-GAGAT-A-GA-AAGT-T-----AC-T--TC-G-G-T---ACATCGGTG-ACAGGTGGTGCATGGTT\n+>6186_4437514\tOtu44|1\n+CACGCGGTAAACGATG-AATAC-TAGGTG-TC-GG-GGG-A---CAT-AG----T-CTTTCGGTG-CCGC--CGCTAACGCATTAAGTATTCCACCTGGGGAGTACGTTCGCAAGAATGAAACTCAAAGGAATTGACGGGGACCCGCACAAGCGGTGGAGCATGTGGTTTAATT-CGAAGCAACGCGAAGAACCTTACCAAGTCTTGACATA-CCGTT-GACGG-TTCCG-TAATG-G-GG-ACTT-T-----CC-T--TC-G-G-G---ACAACGGAT-ACAGGTGGTGCATGGTT\n+>6186_5203014\tOtu45|1\n+CACGCCCTAAACGATG-TCGAT-TAGCTG-TT-GG-GCA-A---CTT-GA----T-TGCTTAGTA-GCGT--AGCTAACGCGTGAAATCGACCGCCTGGGGAGTACGGTCGCAAGATTAAAACTCAAAGGAATTGACGGGGACCCGCACAAGCGGTGGATGATGTGGATTAATT-CGATGCAACGCGAAGAACCTTACCTGGTCTTGACATG--TACG-GAACC-TTTCA-GAGAC-G-GA-AGGG-T-G---CC-T--TC-G-G-G--AGCCGTA-AC-ACAGGTGCTGCATGGCT\n+>6186_550524\tOtu46|1\n+CGCACAGTAAACGATG-GATGC-CCGCTG-TT-AG-CGC------CT-G-------GCGTTAGCG-GCTA--AGCGAAAGCATTAAGCATCCCACCTGGGGAGTACGCCGGCAACGGTGAAACTCAAAGGAATTGACGGGGGCCCGCACAAGCGGAGGAACATGTGGTTTAATT-CGATGATACGCGAGGAACCTTACCCGGGCTTGAATTGC-AGAG-GAATT-ATTTA-GAGAT-A-AA-TATG-C-----CC-T--TC-G-G-G---GTCTCT-GT-GAAGGTGCTGCATGGTT\n'
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/otutable_tocorrect.taxonomy
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/otutable_tocorrect.taxonomy Wed Dec 13 10:09:50 2017 -0500
b
b'@@ -0,0 +1,597 @@\n+OTU\tSize\tTaxonomy\n+Otu0001\t29141\tBacteria;Cyanobacteria;Cyanobacteria;SubsectionIII;FamilyI;Oscillatoria;\n+Otu0002\t27843\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0003\t5121\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0004\t4669\tBacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Prevotellaceae;Prevotella;\n+Otu0005\t4053\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Parvimonas;\n+Otu0006\t3278\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0007\t2625\tBacteria;Proteobacteria;Epsilonproteobacteria;Campylobacterales;Campylobacteraceae;Campylobacter;\n+Otu0008\t2596\tBacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Porphyromonadaceae;Porphyromonas;\n+Otu0009\t2574\tBacteria;Proteobacteria;Gammaproteobacteria;Pseudomonadales;Moraxellaceae;Acinetobacter;\n+Otu0010\t2194\tBacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;unclassified;\n+Otu0011\t2119\tBacteria;Firmicutes;Bacilli;Bacillales;Staphylococcaceae;Staphylococcus;\n+Otu0012\t2066\tBacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Porphyromonadaceae;Porphyromonas;\n+Otu0013\t2028\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0014\t1791\tBacteria;Proteobacteria;Alphaproteobacteria;Rhodospirillales;Acetobacteraceae;Acetobacter;\n+Otu0015\t1692\tBacteria;Firmicutes;Bacilli;Lactobacillales;Streptococcaceae;Streptococcus;\n+Otu0016\t1518\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0017\t1247\tBacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Corynebacterium_1;\n+Otu0018\t1028\tBacteria;Actinobacteria;Actinobacteria;Micrococcales;Dermabacteraceae;Brachybacterium;\n+Otu0019\t1004\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0020\t955\tBacteria;Proteobacteria;Gammaproteobacteria;Pseudomonadales;Moraxellaceae;Moraxella;\n+Otu0021\t917\tBacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Corynebacterium_1;\n+Otu0022\t850\tBacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Corynebacterium;\n+Otu0023\t801\tBacteria;Proteobacteria;Gammaproteobacteria;Pseudomonadales;Pseudomonadaceae;Pseudomonas;\n+Otu0024\t772\tBacteria;Firmicutes;Clostridia;Clostridiales;Peptococcaceae;Peptococcus;\n+Otu0025\t761\tBacteria;Fusobacteria;Fusobacteriia;Fusobacteriales;Fusobacteriaceae;Fusobacterium;\n+Otu0026\t665\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Finegoldia;\n+Otu0027\t569\tBacteria;Proteobacteria;Alphaproteobacteria;Sphingomonadales;ORCA-3N101;unclassified;\n+Otu0028\t520\tBacteria;Proteobacteria;Gammaproteobacteria;Enterobacteriales;Enterobacteriaceae;unclassified;\n+Otu0029\t457\tBacteria;Firmicutes;Bacilli;Lactobacillales;Lactobacillaceae;Lactobacillus;\n+Otu0030\t452\tBacteria;Proteobacteria;Alphaproteobacteria;Rhizobiales;Rhizobiales_Incertae_Sedis;Phreatobacter;\n+Otu0031\t429\tBacteria;Actinobacteria;Actinobacteria;unclassified;unclassified;unclassified;\n+Otu0032\t427\tBacteria;Proteobacteria;Alphaproteobacteria;Caulobacterales;Caulobacteraceae;Brevundimonas;\n+Otu0033\t410\tBacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Prevotellaceae;Alloprevotella;\n+Otu0034\t370\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0035\t349\tBacteria;Proteobacteria;Gammaproteobacteria;Pseudomonadales;Pseudomonadaceae;Pseudomonas;\n+Otu0036\t314\tBacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Turicella;\n+Otu0037\t234\tBacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Rikenellaceae;Rikenellaceae_RC9_gut_group;\n+Otu0038\t211\tBacteria;Actinobacteria;Actinobacteria;Actinomycetales;Actinomycetaceae;Actinomyces;\n+Otu0039\t200\tBacteria;Actinobacteria;Actinobacteria;Actinomycetales;Actinomycetaceae;Mobiluncus;\n+Otu0040\t185\tBacteria;Proteobacteria;Alphaproteobacteria;Sphingomonadales;Sphingomonadaceae;Sphingomonas;\n+Otu0041\t165\tBacteria;unclassified;unclassified;unclassified;unclassified;unclassified;\n+Otu0042\t159\tBacteria;Firmicutes;Bacilli'..b's;Clostridia;Clostridiales;Lachnospiraceae;Coprococcus_3;\n+Otu0551\t1\tBacteria;Firmicutes;Clostridia;unclassified;unclassified;unclassified;\n+Otu0552\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0553\t1\tBacteria;Firmicutes;Clostridia;unclassified;unclassified;unclassified;\n+Otu0554\t1\tBacteria;Firmicutes;unclassified;unclassified;unclassified;unclassified;\n+Otu0555\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Lachnospiraceae;Lachnospiraceae_UCG-010;\n+Otu0556\t1\tBacteria;Cyanobacteria;Cyanobacteria;SubsectionIII;FamilyI;unclassified;\n+Otu0557\t1\tBacteria;Cyanobacteria;Cyanobacteria;unclassified;unclassified;unclassified;\n+Otu0558\t1\tBacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Nocardiaceae;Rhodococcus;\n+Otu0559\t1\tBacteria;Bacteroidetes;unclassified;unclassified;unclassified;unclassified;\n+Otu0560\t1\tBacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Porphyromonadaceae;Porphyromonas;\n+Otu0561\t1\tBacteria;Proteobacteria;Alphaproteobacteria;Rhodobacterales;Rhodobacteraceae;unclassified;\n+Otu0562\t1\tBacteria;Proteobacteria;Epsilonproteobacteria;unclassified;unclassified;unclassified;\n+Otu0563\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0564\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0565\t1\tBacteria;unclassified;unclassified;unclassified;unclassified;unclassified;\n+Otu0566\t1\tBacteria;Actinobacteria;Actinobacteria;Corynebacteriales;Corynebacteriaceae;Corynebacterium_1;\n+Otu0567\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0568\t1\tBacteria;Bacteroidetes;unclassified;unclassified;unclassified;unclassified;\n+Otu0569\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0570\t1\tBacteria;Proteobacteria;Epsilonproteobacteria;unclassified;unclassified;unclassified;\n+Otu0571\t1\tBacteria;Bacteroidetes;Bacteroidia;unclassified;unclassified;unclassified;\n+Otu0572\t1\tBacteria;Bacteroidetes;Bacteroidia;Bacteroidales;Porphyromonadaceae;Porphyromonas;\n+Otu0573\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0574\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0575\t1\tBacteria;Proteobacteria;Alphaproteobacteria;unclassified;unclassified;unclassified;\n+Otu0576\t1\tBacteria;Bacteroidetes;Bacteroidia;Bacteroidales;unclassified;unclassified;\n+Otu0577\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;unclassified;unclassified;\n+Otu0578\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0579\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0580\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0581\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0582\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0583\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Peptococcaceae;Peptococcus;\n+Otu0584\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0585\t1\tBacteria;unclassified;unclassified;unclassified;unclassified;unclassified;\n+Otu0586\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;unclassified;unclassified;\n+Otu0587\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0588\t1\tBacteria;Cyanobacteria;Cyanobacteria;SubsectionIII;FamilyI;Oscillatoria;\n+Otu0589\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;unclassified;\n+Otu0590\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Anaerococcus;\n+Otu0591\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;unclassified;\n+Otu0592\t1\tBacteria;Firmicutes;Clostridia;Clostridiales;Family_XI;Peptoniphilus;\n+Otu0593\t1\tBacteria;unclassified;unclassified;unclassified;unclassified;unclassified;\n+Otu0594\t1\tBacteria;Cyanobacteria;Cyanobacteria;unclassified;unclassified;unclassified;\n+Otu0595\t1\tBacteria;unclassified;unclassified;unclassified;unclassified;unclassified;\n+Otu0596\t1\tBacteria;unclassified;unclassified;unclassified;unclassified;unclassified;\n'
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/otutable_with_blast.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/otutable_with_blast.tsv Wed Dec 13 10:09:50 2017 -0500
b
b'@@ -0,0 +1,47 @@\n+OTU\tSize\tPerc\tKingdom\tPhylum\tClass\tOrder\tFamily\tGenus\tBLAST\n+Otu01\t89\t17.8357%\tBacteria\tFirmicutes\tBacilli\tLactobacillales\tStreptococcaceae\tStreptococcus\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgctgtaaacgatgagtgctaggtgttagaccctttccggggtttagtgccgtagctaacgcattaagcactccgcctggggagtacgaccgcaaggttgaaactcaaaggaattgacgggggcccgcacaagcggtggagcatgtggtttaattcgaagcaacgcgaagaaccttaccaggtcttgacatccctctgaccgctctagagatagagttttccttcgggacagaggtgacaggtggtgcatggtt">send to BLAST</a>\n+Otu02\t67\t13.4269%\tBacteria\tFirmicutes\tBacilli\tLactobacillales\tCarnobacteriaceae\tDolosigranulum\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgccgtaaacgatgagtgctaagtgttgggggctttccggccctcggtgctggagctaacgtattaagcactccgcctggggattacgaccgcaaggttgaaactcaaaagaattgacggggacccgcacaagcggtggagcatgtggtttaattcgaagcaacgcgaagaaccttaccagctcttgacatcttctgacaactctagagatagagcgttcccttcggggacagaatgacaggtggtgcatggtt">send to BLAST</a>\n+Otu03\t66\t13.2265%\tBacteria\tFirmicutes\tBacilli\tLactobacillales\tAerococcaceae\tAbiotrophia\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgccgtaaacgatgagtgctaagtgttggaggggttccacccttcagtgctggagttaacgcaataagcactccgcctggggagtacggccgcaaggctgaaactcaaaggaattgacggggacccgcacaagcggtggagcatgtggtttaattcgaagcaacgcgaagaaccttaccaggtcttgacatcccgacgaccgctctagagatagagtttttcttcggaacgtcggtgacaggtggtgcatggtt">send to BLAST</a>\n+Otu04\t57\t11.4228%\tBacteria\tFirmicutes\tBacilli\tBacillales\tStaphylococcaceae\tStaphylococcus\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgccgtaaacgatgagtgctaagtgttagggggtttccgccccttagtgctgcagctaacgcattaagcactccgcctggggagtacgaccgcaaggttgaaactcaaaggaattgacggggacccgcacaagcggtggagcatgtggtttaattcgaagcaacgcgaagaaccttaccaaatcttgacatcctttgaccgctctagagatagagtcttccccttcgggggacaaagtgacaggtggtgcatggtt">send to BLAST</a>\n+Otu05\t42\t8.41683%\tBacteria\tProteobacteria\tGammaproteobacteria\tPseudomonadales\tMoraxellaceae\tMoraxella\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgccgtaaacgatgtctaccagtcgttgggtcttttaaaggcttagtgacgcagttaacgcgataagtagaccgcctggggagtacggccgcaaggttaaaactcaaatgaattgacgggggcccgcacaagcggtggagcatgtggtttaattcgatgcaacgcgaagaaccttacctggtcttgacatagtgagagtcttgcagagatgcgagagtgcctttgggaattcacatacaggtgctgcatggct">send to BLAST</a>\n+Otu06\t31\t6.21242%\tBacteria\tActinobacteria\tActinobacteria\tCorynebacteriales\tCorynebacteriaceae\tCorynebacterium_1\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=catgccgtaaacggtgggcgctaggtgtgagggtctttctacgactttcgtgccgtagctaacgcattaagcgccccgcctggggagtacgaccgcaaggttgaaactcaaaggaattgacggggacccgcacaagcggcggagcatgtggattaattcgatgcaacgcgaagaaccttacctgggcttgacatacatcagatcgctgcagagatgtagtttccctttgtggttggtgtacaggtggtgcatggtt">send to BLAST</a>\n+Otu07\t29\t5.81162%\tBacteria\tActinobacteria\tActinobacteria\tCorynebacteriales\tCorynebacteriaceae\tCorynebacterium_1\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=catgccgtaaacggtgggcgctaggtgtaggggccttttggggtttctgtgccgtagctaacgcattaagcgccccgcctggggagtacggccgcaaggctaaaactcaaaggaattgacgggggcccgc'..b'obacteria\tGammaproteobacteria\tPseudomonadales\tMoraxellaceae\tMoraxella\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgccgtaaacgatgtctaccagtcgttgggtcttttaaagacttagtgacgcagttaacgcaataagtagaccgcctggggagtacggccgcaaggttaaaactcaaatgaattgacgggggcccgcacaagcggtggagcatgtggtttaattcgatgcaacgcgaagaaccttacctggtcttgacatatctagaatcctgcagagatgcgggagtgccttcgggaattagaatacaggtgctgcatggct">send to BLAST</a>\n+Otu41\t1\t0.200401%\tBacteria\tCyanobacteria\tunclassified\tunclassified\tunclassified\tunclassified\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=ctagccgtaaacgatggatactaggcgctgcgcgtatcgacccgtgcagtgctgtagctaacgcgttaagtatcccgcctggggagtacgttcgcaagaatgaaactcaaaggaattgacgggggcccgcacaagcggtggagcatgtggtttaattcgatgcaaagcgaagaaccttaccagggcttgacatgccgcgaatcctcttgaaagagaggggtgccttcgggaacgcggacacaggtggtgcatggct">send to BLAST</a>\n+Otu42\t1\t0.200401%\tBacteria\tFirmicutes\tNegativicutes\tSelenomonadales\tVeillonellaceae\tDialister\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgccgtaaacgatggatactaggtgtaggaggtatcgacccctcctgtgccggagttaacgcaataagtatcccgcctgggaagtacgatcgcaagattaaaactcaaaggaattgacgggggcccgcacaagcggtggagtatgtggtttaattcgacgcaacgcgaagaaccttaccaggtcttgacattgatcgcgatctgcagaaatgcggagttcttcttcggaagacgagaaaacaggtggtgcacggct">send to BLAST</a>\n+Otu43\t1\t0.200401%\tBacteria\tFirmicutes\tBacilli\tLactobacillales\tStreptococcaceae\tStreptococcus\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgccgtaaacgatgagtgctaggtgttggatcctttccgggattcagtgccgcagctaacgcattaagcactccgcctggggagtacgaccgcaaggttgaaactcaaaggaattgacgggggcccgcacaagcggtggagcatgtggtttaattcgaagcaacgcgaagaaccttaccaggtcttgacatcccgatgctatttctagagatagaaagttacttcggtacatcggtgacaggtggtgcatggtt">send to BLAST</a>\n+Otu44\t1\t0.200401%\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgcggtaaacgatgaatactaggtgtcgggggacatagtctttcggtgccgccgctaacgcattaagtattccacctggggagtacgttcgcaagaatgaaactcaaaggaattgacggggacccgcacaagcggtggagcatgtggtttaattcgaagcaacgcgaagaaccttaccaagtcttgacataccgttgacggttccgtaatggggactttccttcgggacaacggatacaggtggtgcatggtt">send to BLAST</a>\n+Otu45\t1\t0.200401%\tBacteria\tProteobacteria\tBetaproteobacteria\tNeisseriales\tNeisseriaceae\tEikenella\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cacgccctaaacgatgtcgattagctgttgggcaacttgattgcttagtagcgtagctaacgcgtgaaatcgaccgcctggggagtacggtcgcaagattaaaactcaaaggaattgacggggacccgcacaagcggtggatgatgtggattaattcgatgcaacgcgaagaaccttacctggtcttgacatgtacggaacctttcagagacggaagggtgccttcgggagccgtaacacaggtgctgcatggct">send to BLAST</a>\n+Otu46\t1\t0.200401%\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tPrevotellaceae\tPrevotella\t<a target="_blank" href="http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?DATABASE=nr&EXCLUDE_SEQ_UNCULT=yes&FILTER=L&FORMAT_TYPE=HTML&PROGRAM=blastn&CLIENT=web&SERVICE=megablast&PAGE=Nucleotides&CMD=Web&QUERY=cgcacagtaaacgatggatgcccgctgttagcgcctggcgttagcggctaagcgaaagcattaagcatcccacctggggagtacgccggcaacggtgaaactcaaaggaattgacgggggcccgcacaagcggaggaacatgtggtttaattcgatgatacgcgaggaaccttacccgggcttgaattgcagaggaattatttagagataaatatgcccttcggggtctctgtgaaggtgctgcatggtt">send to BLAST</a>\n'
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/otutable_without_blast.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/otutable_without_blast.tsv Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,47 @@
+OTU Size Perc Kingdom Phylum Class Order Family Genus
+Otu01 89 17.8357% Bacteria Firmicutes Bacilli Lactobacillales Streptococcaceae Streptococcus
+Otu02 67 13.4269% Bacteria Firmicutes Bacilli Lactobacillales Carnobacteriaceae Dolosigranulum
+Otu03 66 13.2265% Bacteria Firmicutes Bacilli Lactobacillales Aerococcaceae Abiotrophia
+Otu04 57 11.4228% Bacteria Firmicutes Bacilli Bacillales Staphylococcaceae Staphylococcus
+Otu05 42 8.41683% Bacteria Proteobacteria Gammaproteobacteria Pseudomonadales Moraxellaceae Moraxella
+Otu06 31 6.21242% Bacteria Actinobacteria Actinobacteria Corynebacteriales Corynebacteriaceae Corynebacterium_1
+Otu07 29 5.81162% Bacteria Actinobacteria Actinobacteria Corynebacteriales Corynebacteriaceae Corynebacterium_1
+Otu08 28 5.61122% Bacteria Firmicutes Negativicutes Selenomonadales Veillonellaceae Veillonella
+Otu09 14 2.80561% Bacteria Actinobacteria Actinobacteria Corynebacteriales Corynebacteriaceae Corynebacterium_1
+Otu10 11 2.20441% Bacteria Bacteroidetes Bacteroidia Bacteroidales Prevotellaceae Prevotella_7
+Otu11 5 1.002% Bacteria Proteobacteria Betaproteobacteria Neisseriales Neisseriaceae unclassified
+Otu12 5 1.002% Bacteria Actinobacteria Actinobacteria Corynebacteriales Corynebacteriaceae Corynebacterium_1
+Otu13 5 1.002% Bacteria Firmicutes Clostridia Clostridiales Lachnospiraceae Stomatobaculum
+Otu14 5 1.002% Bacteria Proteobacteria Gammaproteobacteria Enterobacteriales Enterobacteriaceae Escherichia-Shigella
+Otu15 4 0.801603% Bacteria Actinobacteria Actinobacteria unclassified unclassified unclassified
+Otu16 4 0.801603% Bacteria Proteobacteria Betaproteobacteria Neisseriales Neisseriaceae Neisseria
+Otu17 3 0.601202% Bacteria Proteobacteria Betaproteobacteria Neisseriales Neisseriaceae unclassified
+Otu18 2 0.400802% Bacteria Proteobacteria Gammaproteobacteria unclassified unclassified unclassified
+Otu19 2 0.400802% Bacteria Proteobacteria Betaproteobacteria Burkholderiales Comamonadaceae Tepidimonas
+Otu20 2 0.400802% Bacteria Proteobacteria Betaproteobacteria Burkholderiales Comamonadaceae Aquabacterium
+Otu21 2 0.400802% Bacteria Firmicutes Negativicutes Selenomonadales Veillonellaceae Selenomonas
+Otu22 2 0.400802% Bacteria Firmicutes Clostridia Clostridiales Lachnospiraceae Lachnoanaerobaculum
+Otu23 1 0.200401% Bacteria Actinobacteria Actinobacteria Bifidobacteriales Bifidobacteriaceae Scardovia
+Otu24 1 0.200401% Bacteria Deinococcus-Thermus Deinococci Deinococcales Deinococcaceae Deinococcus
+Otu25 1 0.200401% Bacteria Bacteroidetes Bacteroidia Bacteroidales Prevotellaceae Prevotella
+Otu26 1 0.200401% Bacteria Actinobacteria Coriobacteriia Coriobacteriales Coriobacteriaceae Atopobium
+Otu27 1 0.200401% Bacteria Actinobacteria Actinobacteria Corynebacteriales Corynebacteriaceae Corynebacterium_1
+Otu28 1 0.200401% Bacteria Firmicutes Bacilli Bacillales Listeriaceae Listeria
+Otu29 1 0.200401% Bacteria Actinobacteria Coriobacteriia Coriobacteriales Coriobacteriaceae Olsenella
+Otu30 1 0.200401% Bacteria Bacteroidetes Bacteroidia Bacteroidales Prevotellaceae Prevotella_7
+Otu31 1 0.200401% Bacteria Firmicutes Clostridia Clostridiales Family_XIII Mogibacterium
+Otu32 1 0.200401% Bacteria Firmicutes Clostridia Clostridiales Lachnospiraceae Oribacterium
+Otu33 1 0.200401% Bacteria Firmicutes Clostridia Clostridiales Family_XI Anaerococcus
+Otu34 1 0.200401% Bacteria Firmicutes Bacilli Lactobacillales Streptococcaceae Streptococcus
+Otu35 1 0.200401% Bacteria Firmicutes Clostridia Clostridiales Family_XI Peptoniphilus
+Otu36 1 0.200401% Bacteria Bacteroidetes Bacteroidia Bacteroidales Prevotellaceae Prevotella_6
+Otu37 1 0.200401% Bacteria Actinobacteria Actinobacteria Micrococcales Micrococcaceae Kocuria
+Otu38 1 0.200401% Bacteria Firmicutes Bacilli Lactobacillales Carnobacteriaceae Granulicatella
+Otu39 1 0.200401% Bacteria Actinobacteria Actinobacteria Micrococcales Micrococcaceae Rothia
+Otu40 1 0.200401% Bacteria Proteobacteria Gammaproteobacteria Pseudomonadales Moraxellaceae Moraxella
+Otu41 1 0.200401% Bacteria Cyanobacteria unclassified unclassified unclassified unclassified
+Otu42 1 0.200401% Bacteria Firmicutes Negativicutes Selenomonadales Veillonellaceae Dialister
+Otu43 1 0.200401% Bacteria Firmicutes Bacilli Lactobacillales Streptococcaceae Streptococcus
+Otu44 1 0.200401% Bacteria Firmicutes Clostridia Clostridiales Lachnospiraceae unclassified
+Otu45 1 0.200401% Bacteria Proteobacteria Betaproteobacteria Neisseriales Neisseriaceae Eikenella
+Otu46 1 0.200401% Bacteria Bacteroidetes Bacteroidia Bacteroidales Prevotellaceae Prevotella
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/recovered.fasta
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/recovered.fasta Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,16 @@
+>read1
+ACTG
+>read2
+ACTG
+>read3
+ACTG
+>read6
+ACTG
+>read7
+ACTG
+>read8
+ACTG
+>read9
+ACTG
+>read10
+ACTG
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/recovered.groups
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/recovered.groups Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,8 @@
+read1 group1
+read2 group1
+read3 group1
+read6 group2
+read7 group2
+read8 group2
+read9 group3
+read10 group3
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/shared_dereplicated.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/shared_dereplicated.tsv Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,7 @@
+label Group numOtus Otu0001 Otu0002 Otu0003 Otu0004 Otu0005
+unique sample1 5 10 5 8 0 7
+unique sample2 5 12 0 6 2 0
+unique negative-control 1 0 2 1 0 1
+0.03 sample1 4 19 17 21 6
+0.03 sample2 4 32 15 15 0
+0.03 negative-control 1 0 2 0 2
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/shared_mock.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/shared_mock.tsv Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,19 @@
+label Group numOtus Otu0001 Otu0002 Otu0003 Otu0004 Otu0005
+unique sample1_replicate1 5 15 4 9 2 1
+unique sample1_replicate2 5 11 8 12 0 7
+unique sample1_replicate3 5 5 4 3 3 13
+unique sample2_replicate1 5 21 0 13 2 1
+unique sample2_replicate2 5 5 4 3 2 0
+unique sample2_replicate3 5 10 4 3 2 0
+unique negative-control_replicate1 1 0 1 2 5 1
+unique negative-control_replicate2 2 1 4 1 0 1
+unique negative-control_replicate3 1 3 2 1 2 1
+0.03 sample1_replicate1 4 14 20 25 3
+0.03 sample1_replicate2 4 24 22 13 9
+0.03 sample1_replicate3 4 18 9 24 7
+0.03 sample2_replicate1 4 27 17 17 0
+0.03 sample2_replicate2 4 26 13 18 1
+0.03 sample2_replicate3 4 44 15 10 9
+0.03 negative-control_replicate1 1 0 2 2 1
+0.03 negative-control_replicate2 4 0 1 1 3
+0.03 negative-control_replicate3 2 2 3 0 1
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/shared_tocorrect.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/shared_tocorrect.tsv Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,19 @@
+label Group numOtus Otu0001 Otu0002 Otu0003 Otu0004 Otu0005 Otu0006 Otu0007 Otu0008 Otu0009 Otu0010
+0.03 DX01_replicate1 10 1025 7700 1333 1335 946 897 33 833 715 443
+0.03 DX01_replicate2 10 930 5150 1123 853 761 614 10 459 454 409
+0.03 DX01_replicate3 10 1769 11678 2015 1941 1909 1397 40 1020 1121 671
+0.03 DX02_replicate1 10 1025 7700 1333 1335 946 897 33 833 715 443
+0.03 DX02_replicate2 10 930 5150 1123 853 761 614 10 459 454 409
+0.03 DX02_replicate3 10 1769 11678 2015 1941 1909 1397 40 1020 1121 671
+0.03 NC_replicate1 10 3098 2 0 0 0 0 156 0 0 0
+0.03 NC_replicate2 10 11487 0 0 0 0 0 1205 0 0 0
+0.03 NC_replicate3 10 7509 1 0 0 0 0 874 0 0 398
+0.02 DX01_replicate1 9 1025 7700 1333 1335 946 897 23 833 715
+0.02 DX01_replicate2 9 930 5150 1123 853 761 614 10 459 454
+0.02 DX01_replicate3 9 1769 11678 2015 1941 1909 1397 30 1020 1121
+0.02 DX02_replicate1 9 1025 7700 1333 1335 946 897 23 833 715
+0.02 DX02_replicate2 9 930 5150 1123 853 761 614 10 459 454
+0.02 DX02_replicate3 9 1769 11678 2015 1941 1909 1397 30 1020 1121
+0.02 NC_replicate1 9 3098 2 0 0 0 0 156 0 0
+0.02 NC_replicate2 9 11487 0 0 0 0 0 1205 0 0
+0.02 NC_replicate3 9 7509 1 0 0 0 0 874 0 0
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/shared_with_taxonomy.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/shared_with_taxonomy.tsv Wed Dec 13 10:09:50 2017 -0500
b
b'@@ -0,0 +1,335 @@\n+OTU\tF3D0\tF3D141\tF3D142\tF3D143\tF3D144\tF3D145\tF3D146\tF3D147\tF3D148\tKingdom\tPhylum\tClass\tOrder\tFamily\tGenus\n+Otu0001\t669\t481\t274\t345\t533\t742\t452\t1815\t1364\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0002\t526\t435\t269\t205\t401\t642\t300\t1513\t854\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0003\t430\t515\t163\t229\t352\t574\t406\t1212\t934\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0004\t380\t316\t217\t201\t319\t530\t291\t1215\t814\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0005\t327\t359\t284\t165\t268\t478\t226\t1218\t735\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0006\t421\t332\t160\t208\t298\t514\t246\t940\t591\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0007\t169\t210\t210\t120\t139\t367\t195\t565\t514\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tBacteroidaceae\tBacteroides\n+Otu0008\t19\t181\t49\t85\t276\t345\t202\t551\t444\tBacteria\tFirmicutes\tBacilli\tLactobacillales\tLactobacillaceae\tLactobacillus\n+Otu0009\t119\t112\t94\t47\t97\t212\t86\t533\t281\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0010\t166\t343\t83\t95\t38\t130\t66\t90\t561\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tRikenellaceae\tAlistipes\n+Otu0011\t28\t118\t58\t78\t110\t143\t89\t604\t311\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0012\t144\t134\t78\t78\t164\t242\t92\t271\t213\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0013\t79\t99\t51\t38\t106\t112\t35\t304\t268\tBacteria\tFirmicutes\tErysipelotrichia\tErysipelotrichales\tErysipelotrichaceae\tTuricibacter\n+Otu0014\t36\t66\t27\t28\t45\t93\t61\t409\t215\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0015\t300\t75\t12\t19\t28\t20\t32\t103\t43\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tBlautia\n+Otu0016\t62\t38\t24\t15\t43\t93\t32\t133\t113\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0017\t40\t46\t6\t11\t43\t35\t18\t160\t111\tBacteria\tFirmicutes\tBacilli\tLactobacillales\tLactobacillaceae\tLactobacillus\n+Otu0018\t35\t80\t28\t58\t13\t12\t73\t72\t91\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0019\t52\t9\t107\t37\t14\t27\t4\t146\t18\tBacteria\tFirmicutes\tBacilli\tLactobacillales\tLactobacillaceae\tLactobacillus\n+Otu0020\t25\t51\t11\t2\t11\t15\t14\t102\t164\tBacteria\tunclassified\tunclassified\tunclassified\tunclassified\tunclassified\n+Otu0021\t2\t58\t11\t38\t33\t41\t98\t39\t10\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0022\t149\t41\t8\t13\t22\t11\t22\t24\t26\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tBlautia\n+Otu0023\t61\t11\t20\t18\t18\t18\t25\t49\t88\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tBlautia\n+Otu0024\t90\t30\t9\t7\t10\t14\t26\t73\t45\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tBlautia\n+Otu0025\t0\t31\t25\t24\t16\t17\t5\t54\t87\tBacteria\tTenericutes\tMollicutes\tRF9\tunclassified\tunclassified\n+Otu0026\t107\t15\t6\t2\t7\t7\t43\t22\t50\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0027\t24\t56\t10\t24\t9\t18\t23\t49\t44\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0028\t0\t16\t8\t3\t18\t11\t35\t80\t58\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tBlautia\n+Otu0029\t29\t42\t4\t33\t2\t12\t29\t20\t51\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0030\t50\t3\t14\t13\t13\t10\t43\t53\t21\tBacteria\tFirmicutes\tClostridia\tClostridiales\tRuminococcaceae\tunclassified\n+Otu0031\t23\t16\t27\t11\t21\t5\t3\t30\t69\tBacteria\tActinobacteria\tActinobacteria\tBifidobacteriales\tBifidobacteriaceae\tBifidobacterium\n+Otu0032\t121\t4\t3\t2\t6\t14\t1\t22\t30\tBacteria\tFirmicutes\tClostridia\tClostridiales\tClostridiaceae_1\tClostridium_sensu_stricto_1\n+Otu0033\t27\t23\t11\t15\t5\t5\t30\t41\t46\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0034\t74\t21\t6\t11\t15\t12\t21\t11\t9\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0035\t60\t4\t5\t2\t5\t5\t4\t40\t52\tBacteria\tTenericutes\tMollicutes\tRF9\tunclassified\tunclassified\n+Otu0036\t58'..b'a\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0295\t1\t0\t0\t0\t0\t0\t0\t0\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tBlautia\n+Otu0296\t1\t0\t0\t0\t0\t0\t0\t0\t0\tBacteria\tProteobacteria\tAlphaproteobacteria\tRickettsiales\tmitochondria\tunclassified\n+Otu0297\t1\t0\t0\t0\t0\t0\t0\t0\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0298\t0\t0\t0\t0\t0\t0\t0\t0\t1\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0299\t0\t1\t0\t0\t0\t0\t0\t0\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0300\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0301\t0\t0\t0\t0\t0\t0\t1\t0\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0302\t0\t0\t0\t0\t0\t0\t1\t0\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0303\t0\t0\t0\t0\t0\t0\t1\t0\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0304\t0\t0\t0\t0\t0\t0\t1\t0\t0\tBacteria\tFirmicutes\tunclassified\tunclassified\tunclassified\tunclassified\n+Otu0305\t0\t0\t0\t0\t0\t0\t1\t0\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0306\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0307\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0308\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tFirmicutes\tBacilli\tLactobacillales\tLactobacillaceae\tunclassified\n+Otu0309\t0\t0\t0\t0\t0\t0\t1\t0\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0310\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tunclassified\tunclassified\tunclassified\tunclassified\tunclassified\n+Otu0311\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0312\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tBlautia\n+Otu0313\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0314\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0315\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tEubacteriaceae\tAnaerofustis\n+Otu0316\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tRuminococcaceae\tAnaerotruncus\n+Otu0317\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0318\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tFirmicutes\tBacilli\tunclassified\tunclassified\tunclassified\n+Otu0319\t0\t0\t0\t0\t1\t0\t0\t0\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tBacteroidaceae\tBacteroides\n+Otu0320\t0\t0\t0\t0\t1\t0\t0\t0\t0\tBacteria\tBacteroidetes\tFlavobacteriia\tFlavobacteriales\tCryomorphaceae\tFluviicola\n+Otu0321\t0\t0\t0\t0\t1\t0\t0\t0\t0\tBacteria\tunclassified\tunclassified\tunclassified\tunclassified\tunclassified\n+Otu0322\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0323\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tRuminococcaceae\tOscillibacter\n+Otu0324\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tFirmicutes\tBacilli\tunclassified\tunclassified\tunclassified\n+Otu0325\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0326\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0327\t0\t0\t0\t0\t0\t0\t0\t1\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tunclassified\n+Otu0328\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tunclassified\tunclassified\tunclassified\tunclassified\tunclassified\n+Otu0329\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tFirmicutes\tBacilli\tunclassified\tunclassified\tunclassified\n+Otu0330\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0331\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0332\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tFirmicutes\tBacilli\tBacillales\tListeriaceae\tListeria\n+Otu0333\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tBacteroidetes\tBacteroidia\tBacteroidales\tS24-7\tunclassified\n+Otu0334\t0\t0\t0\t0\t0\t1\t0\t0\t0\tBacteria\tFirmicutes\tClostridia\tClostridiales\tLachnospiraceae\tMarvinbryantia\n'
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/summarylog1.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/summarylog1.txt Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,50 @@
+Linux version
+
+Using ReadLine
+
+Running 64Bit Version
+
+mothur v.1.36.1
+Last updated: 7/27/2015
+
+by
+Patrick D. Schloss
+
+Department of Microbiology & Immunology
+University of Michigan
+pschloss@umich.edu
+http://www.mothur.org
+
+When using, please cite:
+Schloss, P.D., et al., Introducing mothur: Open-source, platform-independent, community-supported software for describing and comparing microbial communities. Appl Environ Microbiol, 2009. 75(23):7537-41.
+
+Distributed under the GNU General Public License
+
+Type 'help()' for information on the commands that are available
+
+Type 'quit()' to exit program
+Interactive Mode
+
+
+mothur > summary.seqs(fasta=fasta.dat,processors=1)
+
+Using 1 processors.
+
+ Start End NBases Ambigs Polymer NumSeqs
+Minimum: 1 297 297 0 4 1
+2.5%-tile: 1 299 299 0 4 16
+25%-tile: 1 304 304 0 5 151
+Median:  1 305 305 0 5 301
+75%-tile: 1 305 305 0 5 451
+97.5%-tile: 1 307 307 0 5 586
+Maximum: 1 312 312 0 6 600
+Mean: 1 304.715 304.715 0 4.94833
+# of Seqs: 600
+
+Output File Names: 
+fasta.summary
+
+It took 0 secs to summarize 600 sequences.
+quit
+
+mothur > quit
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/summarylog2.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/summarylog2.txt Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,50 @@
+Linux version
+
+Using ReadLine
+
+Running 64Bit Version
+
+mothur v.1.36.1
+Last updated: 7/27/2015
+
+by
+Patrick D. Schloss
+
+Department of Microbiology & Immunology
+University of Michigan
+pschloss@umich.edu
+http://www.mothur.org
+
+When using, please cite:
+Schloss, P.D., et al., Introducing mothur: Open-source, platform-independent, community-supported software for describing and comparing microbial communities. Appl Environ Microbiol, 2009. 75(23):7537-41.
+
+Distributed under the GNU General Public License
+
+Type 'help()' for information on the commands that are available
+
+Type 'quit()' to exit program
+Interactive Mode
+
+
+mothur > summary.seqs(fasta=fasta.dat,processors=1)
+
+Using 1 processors.
+
+ Start End NBases Ambigs Polymer NumSeqs
+Minimum: 1 249 249 0 4 1
+2.5%-tile: 1 250 250 0 4 14
+25%-tile: 1 255 255 0 5 137
+Median:  1 256 256 0 5 273
+75%-tile: 1 256 256 0 5 409
+97.5%-tile: 1 258 258 0 5 532
+Maximum: 1 263 263 0 6 545
+Mean: 1 255.739 255.739 0 4.94679
+# of Seqs: 545
+
+Output File Names: 
+fasta.summary
+
+It took 0 secs to summarize 545 sequences.
+quit
+
+mothur > quit
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/summarylog3.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/summarylog3.txt Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,51 @@
+Linux version
+
+Using ReadLine
+
+Running 64Bit Version
+
+mothur v.1.36.1
+Last updated: 7/27/2015
+
+by
+Patrick D. Schloss
+
+Department of Microbiology & Immunology
+University of Michigan
+pschloss@umich.edu
+http://www.mothur.org
+
+When using, please cite:
+Schloss, P.D., et al., Introducing mothur: Open-source, platform-independent, community-supported software for describing and comparing microbial communities. Appl Environ Microbiol, 2009. 75(23):7537-41.
+
+Distributed under the GNU General Public License
+
+Type 'help()' for information on the commands that are available
+
+Type 'quit()' to exit program
+Interactive Mode
+
+
+mothur > summary.seqs(fasta=fasta.dat,name=name.dat,processors=1)
+
+Using 1 processors.
+
+ Start End NBases Ambigs Polymer NumSeqs
+Minimum: 2943 11738 249 0 4 1
+2.5%-tile: 2943 11738 250 0 4 14
+25%-tile: 2943 11738 255 0 5 135
+Median:  2943 11738 256 0 5 269
+75%-tile: 2943 11738 256 0 5 403
+97.5%-tile: 2943 11738 258 0 5 524
+Maximum: 2943 11738 260 0 6 537
+Mean: 2943 11738 255.723 0 4.94786
+# of unique seqs: 158
+total # of seqs: 537
+
+Output File Names: 
+fasta.summary
+
+It took 0 secs to summarize 537 sequences.
+quit
+
+mothur > quit
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/test-out.count_table
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test-out.count_table Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,9 @@
+Representative_Sequence total F3D0 F3D141 F3D142 F3D143 F3D144 F3D145 F3D146 F3D147 F3D148
+M00967_43_000000000-A3JHG_1_1101_18327_1699 6 2 0 0 0 0 0 1 3 0
+M00967_43_000000000-A3JHG_1_1101_14069_1827 3524 370 257 142 176 298 363 229 958 731
+M00967_43_000000000-A3JHG_1_1101_18044_1900 20 1 1 0 0 1 0 0 9 8
+M00967_43_000000000-A3JHG_1_1101_13234_1983 3874 425 340 205 153 294 475 233 1114 635
+M00967_43_000000000-A3JHG_1_1101_16780_2259 69 13 1 7 3 4 3 16 17 5
+M00967_43_000000000-A3JHG_1_1101_17674_2779 3256 265 301 230 136 216 390 178 967 573
+M00967_43_000000000-A3JHG_1_1101_18089_2781 92 44 4 0 1 3 2 12 10 16
+total 10841 1120 904 584 469 816 1233 669 3078 1968
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/test.count_table
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test.count_table Wed Dec 13 10:09:50 2017 -0500
b
@@ -0,0 +1,8 @@
+Representative_Sequence total F3D0 F3D141 F3D142 F3D143 F3D144 F3D145 F3D146 F3D147 F3D148
+M00967_43_000000000-A3JHG_1_1101_18327_1699 6 2 0 0 0 0 0 1 3 0
+M00967_43_000000000-A3JHG_1_1101_14069_1827 3524 370 257 142 176 298 363 229 958 731
+M00967_43_000000000-A3JHG_1_1101_18044_1900 20 1 1 0 0 1 0 0 9 8
+M00967_43_000000000-A3JHG_1_1101_13234_1983 3874 425 340 205 153 294 475 233 1114 635
+M00967_43_000000000-A3JHG_1_1101_16780_2259 69 13 1 7 3 4 3 16 17 5
+M00967_43_000000000-A3JHG_1_1101_17674_2779 3256 265 301 230 136 216 390 178 967 573
+M00967_43_000000000-A3JHG_1_1101_18089_2781 92 44 4 0 1 3 2 12 10 16
b
diff -r 000000000000 -r 607c5e7e0a64 test-data/test2.count_table
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/test2.count_table Wed Dec 13 10:09:50 2017 -0500
b
b'@@ -0,0 +1,17404 @@\n+Representative_Sequence\ttotal\tF3D0\tF3D141\tF3D142\tF3D143\tF3D144\tF3D145\tF3D146\tF3D147\tF3D148\n+M00967_43_000000000-A3JHG_1_1101_18327_1699\t6\t2\t0\t0\t0\t0\t0\t1\t3\t0\n+M00967_43_000000000-A3JHG_1_1101_14069_1827\t3524\t370\t257\t142\t176\t298\t363\t229\t958\t731\n+M00967_43_000000000-A3JHG_1_1101_18044_1900\t20\t1\t1\t0\t0\t1\t0\t0\t9\t8\n+M00967_43_000000000-A3JHG_1_1101_13234_1983\t3874\t425\t340\t205\t153\t294\t475\t233\t1114\t635\n+M00967_43_000000000-A3JHG_1_1101_16780_2259\t69\t13\t1\t7\t3\t4\t3\t16\t17\t5\n+M00967_43_000000000-A3JHG_1_1101_17674_2779\t3256\t265\t301\t230\t136\t216\t390\t178\t967\t573\n+M00967_43_000000000-A3JHG_1_1101_18089_2781\t92\t44\t4\t0\t1\t3\t2\t12\t10\t16\n+M00967_43_000000000-A3JHG_1_1101_14203_2907\t2765\t331\t256\t122\t140\t212\t391\t188\t677\t448\n+M00967_43_000000000-A3JHG_1_1101_19561_3147\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_18278_3345\t3\t2\t0\t0\t1\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_16061_3516\t126\t54\t12\t4\t9\t12\t7\t15\t7\t6\n+M00967_43_000000000-A3JHG_1_1101_21880_3715\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_10011_3881\t783\t79\t47\t46\t42\t62\t94\t37\t226\t150\n+M00967_43_000000000-A3JHG_1_1101_9376_4054\t1211\t138\t276\t60\t75\t33\t94\t52\t61\t422\n+M00967_43_000000000-A3JHG_1_1101_20574_4322\t6\t1\t0\t1\t0\t1\t1\t0\t1\t1\n+M00967_43_000000000-A3JHG_1_1101_15120_4326\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_11296_4480\t25\t17\t1\t0\t0\t0\t0\t0\t0\t7\n+M00967_43_000000000-A3JHG_1_1101_8868_4602\t940\t16\t86\t33\t47\t68\t84\t53\t366\t187\n+M00967_43_000000000-A3JHG_1_1101_15591_4696\t19\t7\t0\t0\t0\t1\t0\t7\t0\t4\n+M00967_43_000000000-A3JHG_1_1101_22635_4902\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_18922_4934\t153\t22\t17\t7\t11\t3\t4\t22\t29\t38\n+M00967_43_000000000-A3JHG_1_1101_22481_5236\t390\t231\t39\t7\t8\t13\t7\t18\t46\t21\n+M00967_43_000000000-A3JHG_1_1101_15514_5325\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_21843_5361\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_21702_5444\t307\t43\t6\t78\t31\t7\t16\t4\t111\t11\n+M00967_43_000000000-A3JHG_1_1101_6977_5486\t17\t8\t1\t0\t1\t1\t0\t3\t2\t1\n+M00967_43_000000000-A3JHG_1_1101_20384_5679\t1031\t115\t93\t62\t51\t115\t174\t62\t201\t158\n+M00967_43_000000000-A3JHG_1_1101_7379_5693\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_23296_5777\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_15463_5782\t12\t10\t0\t0\t0\t1\t0\t1\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_9331_5806\t4\t3\t1\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_19852_6086\t1710\t173\t118\t82\t86\t120\t208\t121\t455\t347\n+M00967_43_000000000-A3JHG_1_1101_16581_7006\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_7949_7104\t3\t2\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_1101_17656_7294\t116\t21\t4\t3\t10\t11\t10\t26\t20\t11\n+M00967_43_000000000-A3JHG_1_1101_16910_7379\t3755\t344\t428\t129\t181\t275\t455\t323\t894\t726\n+M00967_43_000000000-A3JHG_1_1101_13646_7420\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_20183_7496\t123\t55\t1\t1\t0\t3\t5\t27\t26\t5\n+M00967_43_000000000-A3JHG_1_1101_7777_7652\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_6929_7655\t23\t23\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_8460_7696\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_24218_7727\t2399\t223\t184\t111\t117\t182\t303\t171\t659\t449\n+M00967_43_000000000-A3JHG_1_1101_11666_7824\t55\t8\t2\t5\t3\t0\t6\t12\t9\t10\n+M00967_43_000000000-A3JHG_1_1101_19252_7867\t47\t38\t2\t0\t0\t0\t1\t4\t2\t0\n+M00967_43_000000000-A3JHG_1_1101_5885_8193\t2\t1\t0\t0\t0\t0\t0\t0\t1\t0\n+M00967_43_000000000-A3JHG_1_1101_21492_8356\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_14364_8401\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_14341_8428\t142\t33\t7\t7\t6\t7\t6\t9\t21\t46\n+M00967_43_000000000-A3JHG_1_1101_10133_8460\t20\t19\t0\t0\t0\t0\t0\t1\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_13595_8524\t375\t29\t65\t27\t48\t10\t10\t55\t64\t67\n+M00967_43_000000000-A3JHG_1_1101_21616_8560\t11\t7\t0\t0\t2\t0\t0\t2\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_8928_8766\t1\t1\t0\t0\t0\t0\t0\t0\t0\t0\n+M00967_43_000000000-A3JHG_1_1101_26181_9437\t270\t24\t31\t3\t9\t26\t20\t12\t89\t56\n+M00967_43_000000000-A3JHG_1_1101_7265_9662\t120\t36\t4\t6\t8\t9\t8\t11\t23\t15\n+M00967_43_000000000-A3JHG_1_1101_11856_9674\t83\t62\t0\t1\t0\t0\t3\t0\t17\t0\n+M00967_43_000'..b'0000-A3JHG_1_2114_24048_11137\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_14346_11453\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_19741_11571\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_4293_11847\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_2535_12166\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_12174_12430\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_7704_12490\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_27753_12633\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_26277_12911\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_8521_13181\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_21881_13315\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_10056_13609\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_24641_13897\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_24801_14307\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_24520_14349\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_14273_14388\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_18580_14515\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_16963_14622\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_16687_14816\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_24734_14879\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_8668_15116\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_9937_15135\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_28481_15276\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_22551_15861\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_28358_16084\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_17564_16092\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_20604_16292\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_20763_17646\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_22368_18258\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_23293_18448\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_4840_19519\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_18819_19641\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_27606_19662\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_13637_20496\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_17714_20591\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_8081_20628\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_18809_20809\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_24145_21229\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_16268_21350\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_23206_21862\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_12973_21991\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_24798_22023\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_24257_22700\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_19110_22836\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_27077_23007\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_16521_24080\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_6270_24213\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_21233_24239\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_17769_24361\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_24888_24478\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_11277_24502\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_7632_25068\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_17811_25265\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_10525_25275\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_8926_25532\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_20339_25953\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_19789_26938\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_13480_27112\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_12323_27338\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_12932_27851\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n+M00967_43_000000000-A3JHG_1_2114_12396_28078\t1\t0\t0\t0\t0\t0\t0\t0\t0\t1\n'