changeset 0:122dbfdf0826 draft default tip

planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/master/tools/concat_multi_datasets commit 75811bd85c9d175d9bc7b2c4fd723adc3a361f0f
author artbio
date Tue, 09 Jul 2019 09:51:52 -0400
parents
children
files catWrapper.xml test-data/1.bed test-data/1.fastq.gz test-data/1_f.fastq test-data/1_f.fastq.gz test-data/1_options.fastq.gz test-data/1_r.fastq test-data/1_r.fastq.gz test-data/2.bed test-data/2.fastq test-data/2_f.fastq test-data/2_r.fastq test-data/3.fastq test-data/3_f.fastq test-data/3_r.fastq test-data/4.fastq test-data/4_f.fastq test-data/4_r.fastq test-data/cat_wrapper_out1.bed test-data/cat_wrapper_out2.bed test-data/cat_wrapper_out3.bed test-data/f.fastq test-data/r.fastq
diffstat 23 files changed, 1447 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/catWrapper.xml	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,675 @@
+<tool id="cat_multi_datasets" name="Concatenate multiple datasets" version="1.4.1">
+    <description>tail-to-head by specifying how</description>
+    <command><![CDATA[
+        #if $headers == 0:
+            #set $concat_command = "cat"
+        #else:
+            #set $concat_command = 'tail -q -n +'+ str(int($headers)+1)
+        #end if
+        printf "Concatenating files:\n" &&
+        #if $global_condition.input_type == "singles":
+            #if $dataset_names == "No":
+                #for $file in $global_condition.inputs
+                    printf "${file.element_identifier}..." &&
+                    #if $file.ext:
+                        #if $file.ext[-2:] == "gz" and $headers != 0:
+                            gzip -dc '$file' | $concat_command | gzip -c >> '$out_file1' &&
+                        #else:
+                            $concat_command '$file' >> '$out_file1' &&
+                        #end if
+                     #else:
+                        $concat_command '$file' >> '$out_file1' &&
+                     #end if
+                    printf "Done\n" &&
+                #end for
+                sleep 1
+            #else:
+                #for $file in $global_condition.inputs
+                    printf "${file.element_identifier}..." &&
+                    #if $file.ext[-2:] == "gz" and $headers != 0:
+                        printf "# ${file.element_identifier}\n" | gzip -c >> '$out_file1' &&
+                        gzip -dc "$file" | $concat_command |gzip -c >> '$out_file1' &&
+                    #else:
+                        printf "# ${file.element_identifier}\n" >> '$out_file1' &&
+                        $concat_command "$file" >> '$out_file1' &&
+                    #end if
+                    printf "Done\n" &&
+                #end for
+                sleep 1
+            #end if
+        #else if $global_condition.input_type == "simple_collections":
+                mkdir concatenated &&
+                #if $dataset_names == "No":
+                    #for $x, $y in zip($global_condition.input_1, $global_condition.input_2):
+                        printf "${x.element_identifier} and ${y.element_identifier}..." &&
+                        #if $x.ext[-2:] == "gz" and $headers != 0:
+                            gzip -dc '$x' | $concat_command | gzip -c > concatenated/'${x.element_identifier}.listed.${x.ext}.listed' &&
+                            gzip -dc '$y' | $concat_command | gzip -c >> concatenated/'${x.element_identifier}.listed.${x.ext}.listed' &&
+                        #else:
+                            $concat_command '$x' '$y' > concatenated/'${x.element_identifier}.listed.${x.ext}.listed' &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                    sleep 1
+                #else:
+                    #for $x, $y in zip($global_condition.input_1, $global_condition.input_2)
+                        printf "${x.element_identifier} and ${y.element_identifier}..." &&
+                        #if $x.ext[-2:] == "gz" and $headers != 0:
+                            printf "# ${x.element_identifier}\n" | gzip -c > concatenated/'${x.element_identifier}_${y.element_identifier}.listed.${x.ext}.listed' &&
+                            gzip -dc '$x' | $concat_command | gzip -c >> concatenated/'${x.element_identifier}_${y.element_identifier}.listed.${x.ext}.listed' &&
+                            printf "# ${y.element_identifier}\n" | gzip -c >> concatenated/'${x.element_identifier}_${y.element_identifier}.listed.${x.ext}.listed' &&
+                            gzip -dc '$y' | $concat_command | gzip -c >> concatenated/'${x.element_identifier}_${y.element_identifier}.listed.${x.ext}.listed' &&
+                        #else:
+                            printf "# ${x.element_identifier}\n" > concatenated/'${x.element_identifier}_${y.element_identifier}.listed.${x.ext}.listed' &&
+                            $concat_command '$x'>> concatenated/'${x.element_identifier}_${y.element_identifier}.listed.${x.ext}.listed' &&
+                            printf "# ${y.element_identifier}\n" >> concatenated/'${x.element_identifier}_${y.element_identifier}.listed.${x.ext}.listed' &&
+                            $concat_command '$y' >> concatenated/'${x.element_identifier}_${y.element_identifier}.listed.${x.ext}.listed' &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                sleep 1
+                #end if
+        #else if $global_condition.input_type == "paired_collection":
+            #if $global_condition.paired_cat_type == "by_strand":
+                mkdir concatenated &&
+                #if $dataset_names == "No":
+                    #for $file in $global_condition.inputs
+                        printf "${file.element_identifier}- forward and reverse..." &&
+                        #if $file['forward'].ext[-2:] == "gz" and $headers != 0:
+                            gzip -dc $file['forward'] | $concat_command | gzip -c >> concatenated/forward.listed.${file['forward'].ext}.listed &&
+                            gzip -dc $file['reverse'] | $concat_command | gzip -c >> concatenated/reverse.listed.${file['reverse'].ext}.listed &&
+                        #else:
+                            $concat_command $file['forward'] >> concatenated/forward.listed.${file['forward'].ext}.listed &&
+                            $concat_command $file['reverse'] >> concatenated/reverse.listed.${file['reverse'].ext}.listed &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                    sleep 1
+                #else:
+                    #for $file in $global_condition.inputs.keys():
+                        printf "$file - forward and reverse..." &&
+                        #if $global_condition.inputs[$file]['forward'].ext[-2:] == "gz" and $headers != 0:
+                            printf "# ${file}_forward\n" | gzip -c >> concatenated/forward.listed.${global_condition.inputs[$file]['forward'].ext}.listed &&
+                            gzip -dc $global_condition.inputs[$file]['forward'] | $concat_command | gzip -c >> concatenated/forward.listed.${global_condition.inputs[$file]['forward'].ext}.listed &&
+                            printf "# ${file}_reverse\n" | gzip -c >> concatenated/reverse.listed.${global_condition.inputs[$file]['reverse'].ext}.listed &&
+                            gzip -dc $global_condition.inputs[$file]['reverse'] | $concat_command | gzip -c >> concatenated/reverse.listed.${global_condition.inputs[$file]['reverse'].ext}.listed &&
+                        #else:
+                            printf "# ${file}_forward\n" >> concatenated/forward.listed.${global_condition.inputs[$file]['forward'].ext}.listed &&
+                            $concat_command $global_condition.inputs[$file]['forward'] >> concatenated/forward.listed.${global_condition.inputs[$file]['forward'].ext}.listed &&
+                            printf "# ${file}_reverse\n" >> concatenated/reverse.listed.${global_condition.inputs[$file]['reverse'].ext}.listed &&
+                            $concat_command $global_condition.inputs[$file]['reverse'] >> concatenated/reverse.listed.${global_condition.inputs[$file]['reverse'].ext}.listed &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                    sleep 1
+                #end if
+            #else if $global_condition.paired_cat_type == "by_pair":
+                mkdir concatenated &&
+                #if $dataset_names == "No":
+                    #for $file in $global_condition.inputs.keys():
+                        printf "$file - forward and reverse..." &&
+                        #if $global_condition.inputs[$file]['forward'].ext[-2:] == "gz" and $headers != 0:
+                            gzip -dc $global_condition.inputs[$file]['forward'] | $concat_command | gzip -c
+                            > concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                            gzip -dc $global_condition.inputs[$file]['reverse'] | $concat_command | gzip -c
+                            >> concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                        #else:
+                            $concat_command $global_condition.inputs[$file]['forward']
+                            > concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                            $concat_command $global_condition.inputs[$file]['reverse']
+                            >> concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                    sleep 1
+                #else:
+                    #for $file in $global_condition.inputs.keys():
+                        printf "$file - forward and reverse..." &&
+                        #if $global_condition.inputs[$file]['reverse'].ext[-2:] == "gz" and $headers != 0:
+                            printf "# ${file}_forward\n" | gzip -c > concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                            gzip -dc $global_condition.inputs[$file]['forward'] | $concat_command | gzip -c
+                            >> concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                            printf "# ${file}_reverse\n" | gzip -c >> concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                            gzip -dc $global_condition.inputs[$file]['reverse'] | $concat_command | gzip -c
+                            >> concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                        #else:
+                            printf "# ${file}_forward\n" > concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                            $concat_command $global_condition.inputs[$file]['forward']
+                            >> concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                            printf "# ${file}_reverse\n" >> concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                            $concat_command $global_condition.inputs[$file]['reverse']
+                            >> concatenated/'${file}.listed.${global_condition.inputs[$file]['reverse'].ext}.listed' &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                    sleep 1
+                #end if
+            #else if $global_condition.paired_cat_type == "all":
+                mkdir concatenated &&
+                #set $base_name=$global_condition.inputs.element_identifier
+                #set $extention=$global_condition.inputs[$global_condition.inputs.keys()[0]]['forward'].ext
+                #if $dataset_names == "No":
+                    #for $file in $global_condition.inputs.keys():
+                        printf "$file - forward and reverse..." &&
+                        #if $global_condition.inputs[$file]['forward'].ext[-2:] == "gz" and $headers != 0:
+                            gzip -dc $global_condition.inputs[$file]['forward'] | $concat_command | gzip -c >> c'$paired_out_file' &&
+                            gzip -dc $global_condition.inputs[$file]['reverse'] | $concat_command | gzip -c >> '$paired_out_file' &&
+                        #else:
+                            $concat_command
+                            $global_condition.inputs[$file]['forward']
+                            >> '$paired_out_file' &&
+                            $concat_command
+                            $global_condition.inputs[$file]['reverse']
+                            >> '$paired_out_file' &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                    sleep 1
+                #else:
+                    #for $file in $global_condition.inputs.keys():
+                        printf "$file - forward and reverse..." &&
+                        #if $global_condition.inputs[$file]['forward'].ext[-2:] == "gz" and $headers != 0:
+                            printf "# ${file}_forward\n" | gzip -c > '$paired_out_file' &&
+                            gzip -dc $global_condition.inputs[$file]['forward'] | $concat_command | gzip -c >> '$paired_out_file' &&
+                            printf "# ${file}_reverse\n" | gzip -c >> '$paired_out_file' &&
+                            gzip -dc $global_condition.inputs[$file]['reverse'] | $concat_command | gzip -c >> '$paired_out_file' &&
+                        #else:
+                            printf "# ${file}_forward\n" > '$paired_out_file' &&
+                            $concat_command
+                            $global_condition.inputs[$file]['forward']
+                            >> '$paired_out_file' &&
+                            printf "# ${file}_reverse\n" >> '$paired_out_file' &&
+                            $concat_command
+                            $global_condition.inputs[$file]['reverse']
+                            >> '$paired_out_file' &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                    sleep 1
+                #end if
+            #end if
+        #else if $global_condition.input_type == "nested_collection":
+            mkdir concatenated &&
+            #if $dataset_names == "No":
+                #for $sub_list in $global_condition.inputs:
+                    #set $file_base_name=$sub_list.element_identifier
+                    #for $sub_list_element in $sub_list:
+                        printf "${file_base_name} - ${sub_list_element.element_identifier}..." &&
+                        #if $sub_list_element.ext[-2:] == "gz" and $headers != 0:
+                            gzip -dc ${sub_list_element} | $concat_command | gzip -c >> concatenated/'${file_base_name}.listed.${sub_list_element.ext}.listed' &&
+                        #else:
+                            $concat_command ${sub_list_element} >> concatenated/'${file_base_name}.listed.${sub_list_element.ext}.listed' &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                #end for
+                sleep 1
+            #else:
+                #for $sub_list in $global_condition.inputs:
+                    #set $file_base_name=$sub_list.element_identifier
+                    #for $sub_list_element in $sub_list:
+                        printf "${file_base_name} - ${sub_list_element.element_identifier}..." &&
+                        #if $sub_list_element.ext[-2:] == "gz" and $headers != 0:
+                            printf "# ${sub_list_element.element_identifier}\n" | gzip -c >> concatenated/'${file_base_name}.listed.${sub_list_element.ext}.listed' &&
+                            gzip -dc ${sub_list_element} | $concat_command | gzip -c >> concatenated/'${file_base_name}.listed.${sub_list_element.ext}.listed' &&
+                        #else:
+                            printf "# ${sub_list_element.element_identifier}\n" >> concatenated/'${file_base_name}.listed.${sub_list_element.ext}.listed' &&
+                            $concat_command ${sub_list_element} >> concatenated/'${file_base_name}.listed.${sub_list_element.ext}.listed' &&
+                        #end if
+                        printf "Done\n" &&
+                    #end for
+                #end for
+                sleep 1
+            #end if
+        #end if
+        ]]>
+    </command>
+    <inputs>
+        <conditional name="global_condition">
+            <param name="input_type" type="select" label="What type of data do you wish to concatenate?" help="Depending on the type of input selected the concatenation options will differ">
+                <option value="singles">Single datasets</option>
+                <option value="simple_collections">2 Collections</option>
+                <option value="paired_collection">Paired collection</option>
+                <option value="nested_collection">Nested collection</option>
+            </param>
+            <when value="singles">
+                <param name="inputs" type="data" label="Concatenate Datasets" multiple="True" help="All inputed datasets will be concatenated tail-to-head."/>
+            </when>
+            <when value="paired_collection">
+                <param name="inputs" type="data_collection" collection_type="list:paired" label="Input paired collection to concatenate"/>
+                <param name="paired_cat_type" type="select" label="What type of concatenation do you wish to perform?">
+                    <option value="by_strand">Concatenate all datsets of same strand (outputs a single pair of datasets)</option>
+                    <option value="by_pair">Concatenate pairs of datasets (outputs an unpaired collection of datasets)</option>
+                    <option value="all">Concatenate all datasets into a single file regardless of strand (outputs a single file)</option>
+                </param>
+            </when>
+            <when value="simple_collections">
+                <param name="input_1" type="data_collection" collection_type="list" label="Input first collection" help="The first collection contains the datasets that will be written first in the concatenated file" />
+                <param name="input_2" type="data_collection" collection_type="list" label="Input second collection" help="The second collection contains  the datasets that will be written last in the concatenated file" />
+            </when>
+            <when value="nested_collection">
+                <param name="inputs" type="data_collection" collection_type="list:list" label="Input nested collection" help="The Nested collection which items you want to concatenate." />
+            </when>
+        </conditional>
+        <param name="dataset_names" type="boolean" label="Include dataset names?" truevalue="Yes" falsevalue="No" checked="false" help="If 'Yes' is selected '#name of dataset' will be added when concatenating."/>
+        <param name="headers" type="integer" label="Number of lines to skip at the beginning of each concatenation:" value="0" help="This paremeter exists so as to not concatenate comments or headers contained at the start of the files."/>
+    </inputs>
+    <outputs>
+        <data name="out_file1" format_source="inputs" metadata_source="inputs" label="Concatenated datasets">
+            <filter>global_condition['input_type'] == 'singles'</filter>
+        </data>
+        <data name="paired_out_file" label="${global_condition.inputs.element_identifier}" auto_format="true">
+            <filter>global_condition['input_type'] == 'paired_collection' and global_condition['paired_cat_type'] == 'all'</filter>
+        </data>
+        <collection name="paired_output" type="paired" label="Concatenation by strtand">
+            <discover_datasets pattern="(?P&lt;name&gt;.*)\.listed\.(?P&lt;ext&gt;.*)\.listed" visible="false" directory="concatenated"/>
+            <filter>global_condition['input_type'] == 'paired_collection' and global_condition['paired_cat_type'] == 'by_strand'</filter>
+        </collection>
+        <collection name="list_output" type="list" label="Concatenation by pairs">
+            <discover_datasets pattern="(?P&lt;identifier_0&gt;.*)\.listed\.(?P&lt;ext&gt;.*)\.listed" visible="false" directory="concatenated"/>
+            <filter>(global_condition['input_type'] == 'paired_collection' and global_condition['paired_cat_type'] == 'by_pair') or (global_condition['input_type'] == 'simple_collections') or (global_condition['input_type'] == 'nested_collection')</filter>
+        </collection>
+    </outputs>
+    <tests>
+        <!-- Single files concatenation -->
+        <test> <!-- Test 2 single files concatenation with no other option -->
+            <param name="input_type" value="singles" />
+            <param name="inputs" value="1.bed,2.bed"/>
+            <param name="dataset_names" value="No" />
+            <param name="headers" value="0" />
+            <output name="out_file1" file="cat_wrapper_out1.bed"/>
+        </test>
+        <test> <!-- Test 2 single files concatenation with dataset names activated -->
+            <param name="input_type" value="singles" />
+            <param name="inputs" value="1.bed,2.bed"/>
+            <param name="dataset_names" value="Yes" />
+            <param name="headers" value="0" />
+            <output name="out_file1" file="cat_wrapper_out2.bed"/>
+        </test>
+        <test> <!-- Test 2 single files concatenation skipping 1 line -->
+            <param name="input_type" value="singles" />
+            <param name="inputs" value="1.bed,2.bed"/>
+            <param name="dataset_names" value="No" />
+            <param name="headers" value="1" />
+            <output name="out_file1" file="cat_wrapper_out3.bed"/>
+        </test>
+        <test> <!-- Test gz handling with no options -->
+            <param name="input_type" value="singles" />
+            <param name="inputs" value="1_f.fastq.gz,1_r.fastq.gz"/>
+            <param name="dataset_names" value="No" />
+            <param name="headers" value="0" />
+            <output name="out_file1" file="1.fastq.gz" decompress="True"/>
+        </test>
+        <test> <!-- Test gz handling with options -->
+            <param name="input_type" value="singles" />
+            <param name="inputs" value="1_f.fastq.gz,1_r.fastq.gz"/>
+            <param name="dataset_names" value="Yes" />
+            <param name="headers" value="4" />
+            <output name="out_file1" file="1_options.fastq.gz" decompress="True"/>
+        </test>
+        <!-- Test paired options -->
+        <test> <!-- Test paired collection concatenation by_pair with no other option -->
+            <param name="input_type" value="paired_collection" />
+            <param name="paired_cat_type" value="by_pair"/>
+            <param name="inputs">
+                <collection type="list:paired">
+                    <element name="2">
+                        <collection type="paired">
+                            <element name="forward" value="2_f.fastq"/>
+                            <element name="reverse" value="2_r.fastq"/>
+                        </collection>
+                    </element>
+                    <element name="3">
+                        <collection type="paired">
+                            <element name="forward" value="3_f.fastq"/>
+                            <element name="reverse" value="3_r.fastq"/>
+                        </collection>
+                    </element>
+                    <element name="4">
+                        <collection type="paired">
+                            <element name="forward" value="4_f.fastq"/>
+                            <element name="reverse" value="4_r.fastq"/>
+                        </collection>
+                    </element>
+                </collection>
+            </param>
+            <param name="dataset_names" value="No" />
+            <param name="headers" value="0" />
+            <output_collection name="list_output" type="list" >
+                <element name="2" file="2.fastq"/>
+                <element name="3" file="3.fastq"/>
+                <element name="4" file="4.fastq"/>
+            </output_collection>
+        </test>
+        <test> <!-- Test paired collection concatenation by_strand with no other option -->
+            <param name="input_type" value="paired_collection" />
+            <param name="paired_cat_type" value="by_strand"/>
+            <param name="inputs">
+                <collection type="list:paired">
+                    <element name="2">
+                        <collection type="paired">
+                            <element name="forward" value="2_f.fastq"/>
+                            <element name="reverse" value="2_r.fastq"/>
+                        </collection>
+                    </element>
+                    <element name="3">
+                        <collection type="paired">
+                            <element name="forward" value="3_f.fastq"/>
+                            <element name="reverse" value="3_r.fastq"/>
+                        </collection>
+                    </element>
+                    <element name="4">
+                        <collection type="paired">
+                            <element name="forward" value="4_f.fastq"/>
+                            <element name="reverse" value="4_r.fastq"/>
+                        </collection>
+                    </element>
+                </collection>
+            </param>
+            <param name="dataset_names" value="No" />
+            <param name="headers" value="0" />
+            <output_collection name="paired_output" type="paired" >
+                <element name="forward" file="f.fastq"/>
+                <element name="reverse" file="r.fastq"/>
+            </output_collection>
+        </test>
+        <test> <!-- Test 2 collections concatenation -->
+            <param name="input_type" value="simple_collections" />
+            <param name="collection_cat_type" value="two_collections"/>
+            <param name="input_1">
+                <collection type="list">
+                    <element name="2" value="2_f.fastq"/>
+                    <element name="3" value="3_f.fastq"/>
+                    <element name="4" value="4_f.fastq"/>
+                </collection>
+            </param>
+            <param name="input_2">
+                <collection type="list">
+                    <element name="2" value="2_r.fastq"/>
+                    <element name="3" value="3_r.fastq"/>
+                    <element name="4" value="4_r.fastq"/>
+                </collection>
+            </param>
+            <param name="dataset_names" value="No" />
+            <param name="headers" value="0" />
+            <output_collection name="list_output" type="list" count="3" >
+                <element name="2" file="2.fastq"/>
+                <element name="3" file="3.fastq"/>
+                <element name="4" file="4.fastq"/>
+            </output_collection>
+        </test>
+        <test> <!-- Test 2 collections concatenation with other options-->
+            <param name="input_type" value="simple_collections" />
+            <param name="collection_cat_type" value="two_collections"/>
+            <param name="input_1">
+                <collection type="list">
+                    <element name="1_f.fastq.gz" value="1_f.fastq.gz"/>
+                </collection>
+            </param>
+            <param name="input_2">
+                <collection type="list">
+                    <element name="1_r.fastq.gz" value="1_r.fastq.gz"/>
+                </collection>
+            </param>
+            <param name="dataset_names" value="Yes" />
+            <param name="headers" value="4" />
+            <output_collection name="list_output" type="list" count="1" >
+                <element name="1_f.fastq.gz_1_r.fastq.gz" file="1_options.fastq.gz" decompress="True"/>
+            </output_collection>
+        </test>
+        <test> <!-- Test nested collections concatenation -->
+            <param name="input_type" value="nested_collection" />
+            <param name="inputs">
+                <collection type="list:list">
+                    <element name="2">
+                        <collection type="list">
+                            <element name="2_f" value="2_f.fastq" ftype="fastq"/>
+                            <element name="2_r" value="2_r.fastq" ftype="fastq"/>
+                        </collection>
+                    </element>
+                    <element name="3">
+                        <collection type="list">
+                            <element name="3" value="3.fastq" ftype="fastq"/>
+                        </collection>
+                    </element>
+                </collection>
+            </param>
+            <param name="dataset_names" value="No" />
+            <param name="headers" value="0" />
+            <output_collection name="list_output" type="list" count="2" >
+                <element name="2" file="2.fastq"/>
+                <element name="3" file="3.fastq"/>
+            </output_collection>
+        </test>
+        <test> <!-- Test nested collections concatenation with options and gzip-->
+            <param name="input_type" value="nested_collection" />
+            <param name="inputs">
+                <collection type="list:list">
+                    <element name="1">
+                        <collection type="list">
+                            <element name="1_f.fastq.gz" value="1_f.fastq.gz" ftype="fastq.gz"/>
+                            <element name="1_r.fastq.gz" value="1_r.fastq.gz" ftype="fastq.gz"/>
+                        </collection>
+                    </element>
+                </collection>
+            </param>
+            <param name="dataset_names" value="Yes" />
+            <param name="headers" value="4" />
+            <output_collection name="list_output" type="list" count="1" >
+                <element name="1" file="1_options.fastq.gz" decompress="True"/>
+            </output_collection>
+        </test>
+    </tests>
+    <help>
+
+.. class:: warningmark
+
+**WARNINGS:**
+
+- This tool does not check if the datasets being concatenated are in the same format.
+- When concatenating 2 collections make sure the first collection is the one with the most items.
+- This tool can't handle nested collection deeper than list:list.
+
+-----
+
+**What it does**
+
+Concatenates datasets and paired collections with multiple options:
+
+ - When the input is a paired collection:
+
+   - concatenation by strand : forward and reverse datasets are concatenated separately and a list with a single forward - reverse dataset pair is returned
+
+   - concatenation by pair : forward - reverse dataset pairs are concatenated and a simple dataset collection is returned
+
+   - whole collection concatenation : all datasets in the collection are concatenated and a single dataset is returned
+
+ - When the inputs are 2 collections: datasets are concatenated in a pairwise combination and a single dataset collection is returned
+
+ - When nested collection concatenation: datasets in each sub-collection are concatenated and a simple dataset collection is returned
+
+ - Skipping lines before concatenation to avoid headers
+
+ - Add the name of the concatenated files as separator
+
+-----
+
+**Single datasets concatenation example**
+
+Concatenating Dataset::
+
+    chrX  151087187  151087355  A  0  -
+    chrX  151572400  151572481  B  0  +
+
+with Dataset1::
+
+    chr1  151242630  151242955  X  0  +
+    chr1  151271715  151271999  Y  0  +
+    chr1  151278832  151279227  Z  0  -
+
+and with Dataset2::
+
+    chr2  100000030  200000955  P  0  +
+    chr2  100000015  200000999  Q  0  +
+
+will result in the following::
+
+    chrX  151087187  151087355  A  0  -
+    chrX  151572400  151572481  B  0  +
+    chr1  151242630  151242955  X  0  +
+    chr1  151271715  151271999  Y  0  +
+    chr1  151278832  151279227  Z  0  -
+    chr2  100000030  200000955  P  0  +
+    chr2  100000015  200000999  Q  0  +
+
+-----
+
+**2 Collections concatenation**
+
+1rst collection::
+
+    a
+    b
+    c
+    d
+
+2nd collection::
+
+    1
+    2
+    3
+    4
+
+Concatenation result::
+
+    A single collection containing:
+
+    a concatenated with 1
+    b concatenated with 2
+    c concatenated with 3
+    d concatenated with 4
+
+-----
+
+**Paired collection concatenation example**
+
+1rst pair::
+
+    forward - reverse
+
+2nd pair::
+
+    forward - reverse
+
+- Concatenation by strand::
+
+    concatenates:
+
+    1rst forward + 2nd forward
+    1rst reverse + 2nd reverse
+
+    outputs:
+
+    1 pair
+
+- Concatenation by pair::
+
+    concatenates:
+
+    1rst forward + 1rst reverse
+    2nd forward + 2nd reverse
+
+    outputs:
+
+    2 datasets
+
+- Concatenate all::
+
+    concatenates:
+
+    1rst forward + 1rst reverse + 2nd forward + 2nd reverse
+
+    outputs:
+
+    1 dataset
+
+-----
+
+**Nested collection concatenation example**
+
+Nested collection:
+
+    - Experiment
+
+        - Sample_1
+
+            - Sample_1_file_1
+            - Sample_1_file_2
+
+        - Sample_2
+
+            - Sample_2_file_1
+            - Sample_2_file_2
+            - Sample_2_file_3
+
+Concatenation result::
+
+    A single collection containing:
+
+        - Sample_1: (Sample_1_file_1 + Sample_1_file_2)
+        - Sample_2: (Sample_2_file_1 + Sample_2_file_2 + Sample_2_file_3)
+
+-----
+
+**When selecting "Include dataset names" when concatenating files**:
+
+1rst file name="first_tabular"::
+
+    chrX  151087187  151087355  A  0  -
+    chrX  151572400  151572481  B  0  +
+
+2nd file name="second_tabular"::
+
+    chr1  151242630  151242955  X  0  +
+    chr1  151271715  151271999  Y  0  +
+    chr1  151278832  151279227  Z  0  -
+
+output::
+
+    # first_tabular
+    chrX  151087187  151087355  A  0  -
+    chrX  151572400  151572481  B  0  +
+    # second_tabular
+    chr1  151242630  151242955  X  0  +
+    chr1  151271715  151271999  Y  0  +
+    chr1  151278832  151279227  Z  0  -
+
+-----
+
+**Skiping lines**
+
+1rst file::
+
+    chrX  151087187  151087355  A  0  -
+    chrX  151572400  151572481  B  0  +
+
+2nd file::
+
+    chr1  151242630  151242955  X  0  +
+    chr1  151271715  151271999  Y  0  +
+    chr1  151278832  151279227  Z  0  -
+
+skipping 1 line
+
+output::
+
+    chrX  151572400  151572481  B  0  +
+    chr1  151271715  151271999  Y  0  +
+    chr1  151278832  151279227  Z  0  -
+
+-----
+
+Adapted from galaxy's catWrapper.xml to allow multiple input files.
+
+    </help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1.bed	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,65 @@
+chr1	147962192	147962580	CCDS989.1_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	CCDS990.1_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	CCDS993.1_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	CCDS996.1_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	CCDS7248.1_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	CCDS8374.1_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	CCDS8377.1_cds_0_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	CCDS8378.1_cds_0_0_chr11_116211734_r	0	-
+chr11	1812377	1812407	CCDS7726.1_cds_0_0_chr11_1812378_f	0	+
+chr12	38440094	38440321	CCDS8736.1_cds_0_0_chr12_38440095_r	0	-
+chr13	112381694	112381953	CCDS9526.1_cds_0_0_chr13_112381695_f	0	+
+chr14	98710240	98712285	CCDS9949.1_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	CCDS10096.1_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	CCDS10097.1_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	CCDS10098.1_cds_0_0_chr15_41679162_r	0	-
+chr15	41826029	41826196	CCDS10101.1_cds_0_0_chr15_41826030_f	0	+
+chr16	142908	143003	CCDS10397.1_cds_0_0_chr16_142909_f	0	+
+chr16	179963	180135	CCDS10401.1_cds_0_0_chr16_179964_r	0	-
+chr16	244413	244681	CCDS10402.1_cds_0_0_chr16_244414_f	0	+
+chr16	259268	259383	CCDS10403.1_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	CCDS11891.1_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	CCDS11985.1_cds_0_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	CCDS11986.1_cds_0_0_chr18_59455933_r	0	-
+chr18	59600586	59600754	CCDS11988.1_cds_0_0_chr18_59600587_f	0	+
+chr19	59068595	59069564	CCDS12866.1_cds_0_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	CCDS12872.1_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	CCDS12877.1_cds_0_0_chr19_59297999_f	0	+
+chr19	59302168	59302288	CCDS12878.1_cds_0_0_chr19_59302169_r	0	-
+chr2	118288583	118288668	CCDS2120.1_cds_0_0_chr2_118288584_f	0	+
+chr2	118394148	118394202	CCDS2121.1_cds_0_0_chr2_118394149_r	0	-
+chr2	220190202	220190242	CCDS2441.1_cds_0_0_chr2_220190203_f	0	+
+chr2	220229609	220230869	CCDS2443.1_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	CCDS13249.1_cds_0_0_chr20_33330414_r	0	-
+chr20	33513606	33513792	CCDS13255.1_cds_0_0_chr20_33513607_f	0	+
+chr20	33579500	33579527	CCDS13256.1_cds_0_0_chr20_33579501_r	0	-
+chr20	33593260	33593348	CCDS13257.1_cds_0_0_chr20_33593261_f	0	+
+chr21	32707032	32707192	CCDS13614.1_cds_0_0_chr21_32707033_f	0	+
+chr21	32869641	32870022	CCDS13615.1_cds_0_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	CCDS13620.1_cds_0_0_chr21_33321041_f	0	+
+chr21	33744994	33745040	CCDS13625.1_cds_0_0_chr21_33744995_r	0	-
+chr22	30120223	30120265	CCDS13897.1_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	CCDS13898.1_cds_0_0_chr22_30160420_r	0	-
+chr22	30665273	30665360	CCDS13901.1_cds_0_0_chr22_30665274_f	0	+
+chr22	30939054	30939266	CCDS13903.1_cds_0_0_chr22_30939055_r	0	-
+chr5	131424298	131424460	CCDS4149.1_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	CCDS4151.1_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	CCDS4152.1_cds_0_0_chr5_131621327_f	0	+
+chr5	131847541	131847666	CCDS4155.1_cds_0_0_chr5_131847542_r	0	-
+chr6	108299600	108299744	CCDS5061.1_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	CCDS5063.1_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	CCDS5064.1_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	CCDS5067.1_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	CCDS5760.1_cds_0_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	CCDS5771.1_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	CCDS5773.1_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	CCDS5774.1_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	CCDS6324.1_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	CCDS6914.1_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	CCDS6915.1_cds_0_0_chr9_128787520_r	0	-
+chr9	128882427	128882523	CCDS6917.1_cds_0_0_chr9_128882428_f	0	+
+chr9	128937229	128937445	CCDS6919.1_cds_0_0_chr9_128937230_r	0	-
+chrX	122745047	122745924	CCDS14606.1_cds_0_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	CCDS14733.1_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	CCDS14735.1_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	CCDS14736.1_cds_0_0_chrX_152694030_r	0	-
Binary file test-data/1.fastq.gz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1_f.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,12 @@
+@NS500801:189:HWGFJBGX5:1:11101:18757:1118 1:N:0:GCCAAT
+CACCGTTACATCACACCAACCAAGATTACATCACACCACTCAGGATGACAGACAGTAATCCTGTTTGTTATATANG
++
+AAAAAEEEEEEEEEEEEAEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEE<EEEEEEEEE#A
+@NS500801:189:HWGFJBGX5:1:11101:21956:1118 1:N:0:GCCAAT
+CTTACAACCAACTTGATATCACATTCAGCCTGAGGATTTGTTGCTTCATCTTCAGTTCTGTAACATTAAATGGANT
++
+AAAAAAEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEAEEEEEEEEE#E
+@NS500801:189:HWGFJBGX5:1:11101:17695:1118 1:N:0:GCCAAT
+GGGTAATTGATCATCTGTCATGCCAACAGCAAGCAAGGTCTTCCCAGTGCAGCAACAACGTTCAGAATGGATACNG
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEAEE/AEE/EEEEEEAEEEEE#E
Binary file test-data/1_f.fastq.gz has changed
Binary file test-data/1_options.fastq.gz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/1_r.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,12 @@
+@NS500801:189:HWGFJBGX5:1:11101:18757:1118 2:N:0:GCCAAT
+CCAAAATCTGNTTNNNNNNNNNNNNNNNNNNNNNNNNNNNNTGGAGAAGCTGCAGCTCGAGNNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE############################EEEEEEEEEEEEEEEEEE<E###############
+@NS500801:189:HWGFJBGX5:1:11101:21956:1118 2:N:0:GCCAAT
+ATTTAAGATTNTTNNNNNNNNNNNNNNNNNNNNNNNNNNNNAGCTTTGGGAGGATTATTTTNNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE############################EEEEEEEEEEEEEEEEEEEE###############
+@NS500801:189:HWGFJBGX5:1:11101:17695:1118 2:N:0:GCCAAT
+AACTTGCATGNTTNNNNNNNNNNNNNNNNNNNNNNNNNNNNACGTTGTTGCTGCACTGGGANNNNNNNNNNNNNNN
++
+AAAAAEEAEE#EE############################EAEEEEEEEEEEAAEEEEEE###############
Binary file test-data/1_r.fastq.gz has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/2.bed	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,68 @@
+chr1	147962192	147962580	NM_005997_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	BC007833_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	AJ011123_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	NM_002796_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	AY029205_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	AK057832_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	NM_000040_cds_1_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	BC005380_cds_0_0_chr11_116211734_r	0	-
+chr11	130745911	130745993	AY358331_cds_0_0_chr11_130745912_f	0	+
+chr12	38440094	38440321	NM_052885_cds_0_0_chr12_38440095_r	0	-
+chr12	38905200	38905351	AY792511_cds_0_0_chr12_38905201_f	0	+
+chr13	112381694	112381953	NM_207440_cds_1_0_chr13_112381695_f	0	+
+chr13	29680676	29680875	NM_032116_cds_0_0_chr13_29680677_r	0	-
+chr14	98521864	98521922	U88895_cds_0_0_chr14_98521865_f	0	+
+chr14	98710240	98712285	NM_022898_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	BX537418_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	AK223365_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	NM_153700_cds_0_0_chr15_41679162_r	0	-
+chr15	41773540	41773689	AK223365_cds_0_0_chr15_41773541_f	0	+
+chr16	142908	143003	NM_005332_cds_0_0_chr16_142909_f	0	+
+chr16	179197	179339	BC065198_cds_0_0_chr16_179198_r	0	-
+chr16	244413	244681	AK057165_cds_2_0_chr16_244414_f	0	+
+chr16	259268	259383	AB016929_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	NM_001792_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	NM_012397_cds_1_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	AB046400_cds_0_0_chr18_59455933_r	0	-
+chr18	59528407	59528575	AY792326_cds_0_0_chr18_59528408_f	0	+
+chr19	59068595	59069564	BC013995_cds_1_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	NM_198481_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	NM_004542_cds_0_0_chr19_59297999_f	0	+
+chr19	59318205	59318718	AK128544_cds_3_0_chr19_59318206_r	0	-
+chr2	118288583	118288668	NM_006773_cds_0_0_chr2_118288584_f	0	+
+chr2	118390395	118390500	BC005078_cds_0_0_chr2_118390396_r	0	-
+chr2	220108689	220109267	AY125465_cds_0_0_chr2_220108690_f	0	+
+chr2	220229609	220230869	NM_024536_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	NM_181466_cds_0_0_chr20_33330414_r	0	-
+chr20	33485370	33486123	BC085019_cds_1_0_chr20_33485371_f	0	+
+chr20	33488491	33489122	NM_000557_cds_1_0_chr20_33488492_r	0	-
+chr20	33513606	33513792	AF022655_cds_1_0_chr20_33513607_f	0	+
+chr21	32687402	32687588	NM_032910_cds_0_0_chr21_32687403_f	0	+
+chr21	32869641	32870022	NM_018277_cds_3_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	NM_005806_cds_1_0_chr21_33321041_f	0	+
+chr21	33728358	33728724	AK129657_cds_0_0_chr21_33728359_r	0	-
+chr22	30120223	30120265	NM_004147_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	BC032941_cds_0_0_chr22_30160420_r	0	-
+chr22	30228824	30228916	NM_001007467_cds_1_0_chr22_30228825_f	0	+
+chr22	30340151	30340376	CR456540_cds_0_0_chr22_30340152_r	0	-
+chr5	131311206	131311254	AF099740_cds_11_0_chr5_131311207_r	0	-
+chr5	131424298	131424460	NM_000588_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	BC035813_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	BC003096_cds_0_0_chr5_131621327_f	0	+
+chr6	108299600	108299744	NM_007214_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	NM_003269_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	NM_003795_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	NM_145315_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	AF467257_cds_1_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	NM_003391_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	NM_000492_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	AF377960_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	NM_000127_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	BC051300_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	NM_014908_cds_0_0_chr9_128787520_r	0	-
+chr9	128789552	128789584	NM_015354_cds_0_0_chr9_128789553_f	0	+
+chr9	128850516	128850624	AB058751_cds_0_0_chr9_128850517_r	0	-
+chrX	122745047	122745924	NM_001167_cds_1_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	NM_000425_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	AF101728_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	BC052303_cds_0_0_chrX_152694030_r	0	-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/2.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,24 @@
+@NS500801:189:HWGFJBGX5:1:11101:3766:1118 1:N:0:ACAGTG
+ATCCCATACTGCTCAAAATAATCTCGTAGGTGATGTTCTTCAGTGTCTTCTTTAATACCACCAACAAAGATCTTNT
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEE6EEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEE#E
+@NS500801:189:HWGFJBGX5:1:11101:25700:1118 1:N:0:ACAGTG
+GTGCCGTTGAATTTGCCGTGAGTGGAGTCATACTGGAACATGTAGACCATGTAGTTGAGGTCAATGAAGGGGTCNT
++
+AAAAAAAEAEEAEEEEAE/</EEEEAEEEEAAEEEEEEEEEEE6EE<6EEEEEEEEAEEE///EAEEEE<AEEE#E
+@NS500801:189:HWGFJBGX5:1:11101:24308:1119 1:N:0:ACAGTG
+CACTACTGATCAGCACGGGAGTTTTGACCTGCTCCGTTTCCGACCTGGGGCGGTTCACCCCTCCTTAGGCAACCNG
++
+AAAAAEAAEE/EAA/AE//EE6/EEAEEEEE<EE<EEEEEEEEE6<E/////E/E//E</A<EEEE6E6EEEEE#A
+@NS500801:189:HWGFJBGX5:1:11101:3766:1118 2:N:0:ACAGTG
+ACCACACCTTNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNAACTGAAGTCATTTTTCCTTNNNNNNNNNNNNNNN
++
+/AAAAEEE6E#EE############################EEEEEEEEEEEEAEEEEEAE###############
+@NS500801:189:HWGFJBGX5:1:11101:25700:1118 2:N:0:ACAGTG
+GCCGCATCTTNTTNNNNNNNNNNNNNNNNNNNNNNNNNNNNGAATGGTGAAGGTCGGTGTGNNNNNNNNNNNNNNN
++
+AAAAAEEEE6#E/############################/EEA/EE6/EEEEE6E/AEE###############
+@NS500801:189:HWGFJBGX5:1:11101:24308:1119 2:N:0:ACAGTG
+GGAGGATCGCNTGNNNNNNNNNNNNNNNNNNNNNNNNNNNCTATGCCGATCGGGTGTCCGCNNNNNNNNNNNNNNN
++
+A//AA/EEEE#EE###########################/E//AAEAEE//EEEE<EA/E###############
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/2_f.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,12 @@
+@NS500801:189:HWGFJBGX5:1:11101:3766:1118 1:N:0:ACAGTG
+ATCCCATACTGCTCAAAATAATCTCGTAGGTGATGTTCTTCAGTGTCTTCTTTAATACCACCAACAAAGATCTTNT
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEE6EEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEE#E
+@NS500801:189:HWGFJBGX5:1:11101:25700:1118 1:N:0:ACAGTG
+GTGCCGTTGAATTTGCCGTGAGTGGAGTCATACTGGAACATGTAGACCATGTAGTTGAGGTCAATGAAGGGGTCNT
++
+AAAAAAAEAEEAEEEEAE/</EEEEAEEEEAAEEEEEEEEEEE6EE<6EEEEEEEEAEEE///EAEEEE<AEEE#E
+@NS500801:189:HWGFJBGX5:1:11101:24308:1119 1:N:0:ACAGTG
+CACTACTGATCAGCACGGGAGTTTTGACCTGCTCCGTTTCCGACCTGGGGCGGTTCACCCCTCCTTAGGCAACCNG
++
+AAAAAEAAEE/EAA/AE//EE6/EEAEEEEE<EE<EEEEEEEEE6<E/////E/E//E</A<EEEE6E6EEEEE#A
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/2_r.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,12 @@
+@NS500801:189:HWGFJBGX5:1:11101:3766:1118 2:N:0:ACAGTG
+ACCACACCTTNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNAACTGAAGTCATTTTTCCTTNNNNNNNNNNNNNNN
++
+/AAAAEEE6E#EE############################EEEEEEEEEEEEAEEEEEAE###############
+@NS500801:189:HWGFJBGX5:1:11101:25700:1118 2:N:0:ACAGTG
+GCCGCATCTTNTTNNNNNNNNNNNNNNNNNNNNNNNNNNNNGAATGGTGAAGGTCGGTGTGNNNNNNNNNNNNNNN
++
+AAAAAEEEE6#E/############################/EEA/EE6/EEEEE6E/AEE###############
+@NS500801:189:HWGFJBGX5:1:11101:24308:1119 2:N:0:ACAGTG
+GGAGGATCGCNTGNNNNNNNNNNNNNNNNNNNNNNNNNNNCTATGCCGATCGGGTGTCCGCNNNNNNNNNNNNNNN
++
+A//AA/EEEE#EE###########################/E//AAEAEE//EEEE<EA/E###############
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/3.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,24 @@
+@NS500801:189:HWGFJBGX5:1:11101:15584:1117 1:N:0:TGACCA
+GTTGATTCATAAAATTGTTTTTAGGTAGCTCGTTTGGTTTCGGGGTTTCTAGCTGTAATTCTTTTAGTTAGAAGNT
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEAEEEA#E
+@NS500801:189:HWGFJBGX5:1:11101:26457:1117 1:N:0:TGACCA
+CTTTTACAGTAACTCCGGGCATCGTGCGGCCTCCGCGCTGCCAGCCAGGGGAAAGGGAACGACGGGGTTTCCCGNG
++
+/AAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEEE/EEEEE6EEEEEEEEEEEEEEEEEEEAE#E
+@NS500801:189:HWGFJBGX5:1:11101:25352:1117 1:N:0:TGACCA
+GTCCAGGCTGGAGTGCAGTGGCTATTCACAGGCGCGATCCCACTACTGATCAGCACGGGAGTTTTGACCTGCTCNG
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEE<EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEA#E
+@NS500801:189:HWGFJBGX5:1:11101:15584:1117 2:N:0:TGACCA
+GTAAGAACAANCANNNNNNNNNNNNNNNNNNNNNNNNNNNNTGAACTAACTAGAAAACTTCNNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE############################EEEEEEEEEEAEEEEEEEEE###############
+@NS500801:189:HWGFJBGX5:1:11101:26457:1117 2:N:0:TGACCA
+GCGAGACTCGNNGNNNNNNNNNNNNNNNNNNNNNNNNNNNNCGTTCCCTTTCCCCTGGCTGNNNNNNNNNNNNNNN
++
+AAAAAEEEEE##E############################EEEE/EEEEEEEEEEEEAAE###############
+@NS500801:189:HWGFJBGX5:1:11101:25352:1117 2:N:0:TGACCA
+GGGGGACCACNAGNNNNNNNNNNNNNNNNNNNNNNNNNNNNGGTCGGAAACGGAGCAGGTCNNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE############################EEEEEEEEEEAEEEEEEEEA###############
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/3_f.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,12 @@
+@NS500801:189:HWGFJBGX5:1:11101:15584:1117 1:N:0:TGACCA
+GTTGATTCATAAAATTGTTTTTAGGTAGCTCGTTTGGTTTCGGGGTTTCTAGCTGTAATTCTTTTAGTTAGAAGNT
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEAEEEA#E
+@NS500801:189:HWGFJBGX5:1:11101:26457:1117 1:N:0:TGACCA
+CTTTTACAGTAACTCCGGGCATCGTGCGGCCTCCGCGCTGCCAGCCAGGGGAAAGGGAACGACGGGGTTTCCCGNG
++
+/AAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEEE/EEEEE6EEEEEEEEEEEEEEEEEEEAE#E
+@NS500801:189:HWGFJBGX5:1:11101:25352:1117 1:N:0:TGACCA
+GTCCAGGCTGGAGTGCAGTGGCTATTCACAGGCGCGATCCCACTACTGATCAGCACGGGAGTTTTGACCTGCTCNG
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEE<EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEA#E
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/3_r.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,12 @@
+@NS500801:189:HWGFJBGX5:1:11101:15584:1117 2:N:0:TGACCA
+GTAAGAACAANCANNNNNNNNNNNNNNNNNNNNNNNNNNNNTGAACTAACTAGAAAACTTCNNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE############################EEEEEEEEEEAEEEEEEEEE###############
+@NS500801:189:HWGFJBGX5:1:11101:26457:1117 2:N:0:TGACCA
+GCGAGACTCGNNGNNNNNNNNNNNNNNNNNNNNNNNNNNNNCGTTCCCTTTCCCCTGGCTGNNNNNNNNNNNNNNN
++
+AAAAAEEEEE##E############################EEEE/EEEEEEEEEEEEAAE###############
+@NS500801:189:HWGFJBGX5:1:11101:25352:1117 2:N:0:TGACCA
+GGGGGACCACNAGNNNNNNNNNNNNNNNNNNNNNNNNNNNNGGTCGGAAACGGAGCAGGTCNNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE############################EEEEEEEEEEAEEEEEEEEA###############
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/4.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,24 @@
+@NS500801:189:HWGFJBGX5:1:11101:7257:1118 1:N:0:GATCAG
+CCTAATAAAACTATAGAGCATTATCCCACCATGGTAGCAAATATGGCCCACAAAGGGATAAAAACTTCAATCACNC
++
+AA/AAAEE66EEEAEEEA/EEAEEE<EEEEEE/EEEAEEEEEEEEEEEEEEEEEE/<E/EAEEEAAEAEAEEEA#<
+@NS500801:189:HWGFJBGX5:1:11101:6563:1118 1:N:0:GATCAG
+CCAGCTTTTTCACACGAAGTTTGTGATTTCTGGCCTGGCGAAGAATGGTATTCCTGCGCATAGTCTTGGCGTAANG
++
+AAAAAEEEEEEAEE/EEEAEAEEEEEEEEEEEEE<EEEEEEEAEEEEAEEEEEEEE/EEEEEEEEEA/AEA/EE#A
+@NS500801:189:HWGFJBGX5:1:11101:14965:1119 1:N:0:GATCAG
+CGATCTTGAGCATTTTCCAGGCCAGTTTTAGGAGCAAAGCCATTTTCAACTAATGGAGGACCTAGGAGCTCTTTNT
++
+AAAAAEEEEEEEEEEEEEEEEEEEE/EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAA/E6#E
+@NS500801:189:HWGFJBGX5:1:11101:7257:1118 2:N:0:GATCAG
+ATAAAATGTANTANNNNNNNNNNNNNNNNNNNNNNNNNNNNTAAACCAGAATAACTGCATCNNNNNNNNNNNNNNN
++
+AAAAAE66AA#EE############################EEEEEE/<AE/EEE/AAEEE###############
+@NS500801:189:HWGFJBGX5:1:11101:6563:1118 2:N:0:GATCAG
+GAAGAAGAATNCANNNNNNNNNNNNNNNNNNNNNNNNNNNNTGAACCCTTACGCCAAGACTNNNNNNNNNNNNNNN
++
+AAAA/EE/EE#/A############################EEA/EEEEEEEE/EAE</EE###############
+@NS500801:189:HWGFJBGX5:1:11101:14965:1119 2:N:0:GATCAG
+GCCTTACTGGNATNNNNNNNNNNNNNNNNNNNNNNNNNNNGCAACTGCTAAGAAATGTGTANNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE###########################EEEEEEEEEEEEEEEEEEEEE###############
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/4_f.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,12 @@
+@NS500801:189:HWGFJBGX5:1:11101:7257:1118 1:N:0:GATCAG
+CCTAATAAAACTATAGAGCATTATCCCACCATGGTAGCAAATATGGCCCACAAAGGGATAAAAACTTCAATCACNC
++
+AA/AAAEE66EEEAEEEA/EEAEEE<EEEEEE/EEEAEEEEEEEEEEEEEEEEEE/<E/EAEEEAAEAEAEEEA#<
+@NS500801:189:HWGFJBGX5:1:11101:6563:1118 1:N:0:GATCAG
+CCAGCTTTTTCACACGAAGTTTGTGATTTCTGGCCTGGCGAAGAATGGTATTCCTGCGCATAGTCTTGGCGTAANG
++
+AAAAAEEEEEEAEE/EEEAEAEEEEEEEEEEEEE<EEEEEEEAEEEEAEEEEEEEE/EEEEEEEEEA/AEA/EE#A
+@NS500801:189:HWGFJBGX5:1:11101:14965:1119 1:N:0:GATCAG
+CGATCTTGAGCATTTTCCAGGCCAGTTTTAGGAGCAAAGCCATTTTCAACTAATGGAGGACCTAGGAGCTCTTTNT
++
+AAAAAEEEEEEEEEEEEEEEEEEEE/EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAA/E6#E
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/4_r.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,12 @@
+@NS500801:189:HWGFJBGX5:1:11101:7257:1118 2:N:0:GATCAG
+ATAAAATGTANTANNNNNNNNNNNNNNNNNNNNNNNNNNNNTAAACCAGAATAACTGCATCNNNNNNNNNNNNNNN
++
+AAAAAE66AA#EE############################EEEEEE/<AE/EEE/AAEEE###############
+@NS500801:189:HWGFJBGX5:1:11101:6563:1118 2:N:0:GATCAG
+GAAGAAGAATNCANNNNNNNNNNNNNNNNNNNNNNNNNNNNTGAACCCTTACGCCAAGACTNNNNNNNNNNNNNNN
++
+AAAA/EE/EE#/A############################EEA/EEEEEEEE/EAE</EE###############
+@NS500801:189:HWGFJBGX5:1:11101:14965:1119 2:N:0:GATCAG
+GCCTTACTGGNATNNNNNNNNNNNNNNNNNNNNNNNNNNNGCAACTGCTAAGAAATGTGTANNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE###########################EEEEEEEEEEEEEEEEEEEEE###############
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cat_wrapper_out1.bed	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,133 @@
+chr1	147962192	147962580	CCDS989.1_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	CCDS990.1_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	CCDS993.1_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	CCDS996.1_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	CCDS7248.1_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	CCDS8374.1_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	CCDS8377.1_cds_0_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	CCDS8378.1_cds_0_0_chr11_116211734_r	0	-
+chr11	1812377	1812407	CCDS7726.1_cds_0_0_chr11_1812378_f	0	+
+chr12	38440094	38440321	CCDS8736.1_cds_0_0_chr12_38440095_r	0	-
+chr13	112381694	112381953	CCDS9526.1_cds_0_0_chr13_112381695_f	0	+
+chr14	98710240	98712285	CCDS9949.1_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	CCDS10096.1_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	CCDS10097.1_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	CCDS10098.1_cds_0_0_chr15_41679162_r	0	-
+chr15	41826029	41826196	CCDS10101.1_cds_0_0_chr15_41826030_f	0	+
+chr16	142908	143003	CCDS10397.1_cds_0_0_chr16_142909_f	0	+
+chr16	179963	180135	CCDS10401.1_cds_0_0_chr16_179964_r	0	-
+chr16	244413	244681	CCDS10402.1_cds_0_0_chr16_244414_f	0	+
+chr16	259268	259383	CCDS10403.1_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	CCDS11891.1_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	CCDS11985.1_cds_0_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	CCDS11986.1_cds_0_0_chr18_59455933_r	0	-
+chr18	59600586	59600754	CCDS11988.1_cds_0_0_chr18_59600587_f	0	+
+chr19	59068595	59069564	CCDS12866.1_cds_0_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	CCDS12872.1_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	CCDS12877.1_cds_0_0_chr19_59297999_f	0	+
+chr19	59302168	59302288	CCDS12878.1_cds_0_0_chr19_59302169_r	0	-
+chr2	118288583	118288668	CCDS2120.1_cds_0_0_chr2_118288584_f	0	+
+chr2	118394148	118394202	CCDS2121.1_cds_0_0_chr2_118394149_r	0	-
+chr2	220190202	220190242	CCDS2441.1_cds_0_0_chr2_220190203_f	0	+
+chr2	220229609	220230869	CCDS2443.1_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	CCDS13249.1_cds_0_0_chr20_33330414_r	0	-
+chr20	33513606	33513792	CCDS13255.1_cds_0_0_chr20_33513607_f	0	+
+chr20	33579500	33579527	CCDS13256.1_cds_0_0_chr20_33579501_r	0	-
+chr20	33593260	33593348	CCDS13257.1_cds_0_0_chr20_33593261_f	0	+
+chr21	32707032	32707192	CCDS13614.1_cds_0_0_chr21_32707033_f	0	+
+chr21	32869641	32870022	CCDS13615.1_cds_0_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	CCDS13620.1_cds_0_0_chr21_33321041_f	0	+
+chr21	33744994	33745040	CCDS13625.1_cds_0_0_chr21_33744995_r	0	-
+chr22	30120223	30120265	CCDS13897.1_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	CCDS13898.1_cds_0_0_chr22_30160420_r	0	-
+chr22	30665273	30665360	CCDS13901.1_cds_0_0_chr22_30665274_f	0	+
+chr22	30939054	30939266	CCDS13903.1_cds_0_0_chr22_30939055_r	0	-
+chr5	131424298	131424460	CCDS4149.1_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	CCDS4151.1_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	CCDS4152.1_cds_0_0_chr5_131621327_f	0	+
+chr5	131847541	131847666	CCDS4155.1_cds_0_0_chr5_131847542_r	0	-
+chr6	108299600	108299744	CCDS5061.1_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	CCDS5063.1_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	CCDS5064.1_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	CCDS5067.1_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	CCDS5760.1_cds_0_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	CCDS5771.1_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	CCDS5773.1_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	CCDS5774.1_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	CCDS6324.1_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	CCDS6914.1_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	CCDS6915.1_cds_0_0_chr9_128787520_r	0	-
+chr9	128882427	128882523	CCDS6917.1_cds_0_0_chr9_128882428_f	0	+
+chr9	128937229	128937445	CCDS6919.1_cds_0_0_chr9_128937230_r	0	-
+chrX	122745047	122745924	CCDS14606.1_cds_0_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	CCDS14733.1_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	CCDS14735.1_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	CCDS14736.1_cds_0_0_chrX_152694030_r	0	-
+chr1	147962192	147962580	NM_005997_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	BC007833_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	AJ011123_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	NM_002796_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	AY029205_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	AK057832_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	NM_000040_cds_1_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	BC005380_cds_0_0_chr11_116211734_r	0	-
+chr11	130745911	130745993	AY358331_cds_0_0_chr11_130745912_f	0	+
+chr12	38440094	38440321	NM_052885_cds_0_0_chr12_38440095_r	0	-
+chr12	38905200	38905351	AY792511_cds_0_0_chr12_38905201_f	0	+
+chr13	112381694	112381953	NM_207440_cds_1_0_chr13_112381695_f	0	+
+chr13	29680676	29680875	NM_032116_cds_0_0_chr13_29680677_r	0	-
+chr14	98521864	98521922	U88895_cds_0_0_chr14_98521865_f	0	+
+chr14	98710240	98712285	NM_022898_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	BX537418_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	AK223365_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	NM_153700_cds_0_0_chr15_41679162_r	0	-
+chr15	41773540	41773689	AK223365_cds_0_0_chr15_41773541_f	0	+
+chr16	142908	143003	NM_005332_cds_0_0_chr16_142909_f	0	+
+chr16	179197	179339	BC065198_cds_0_0_chr16_179198_r	0	-
+chr16	244413	244681	AK057165_cds_2_0_chr16_244414_f	0	+
+chr16	259268	259383	AB016929_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	NM_001792_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	NM_012397_cds_1_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	AB046400_cds_0_0_chr18_59455933_r	0	-
+chr18	59528407	59528575	AY792326_cds_0_0_chr18_59528408_f	0	+
+chr19	59068595	59069564	BC013995_cds_1_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	NM_198481_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	NM_004542_cds_0_0_chr19_59297999_f	0	+
+chr19	59318205	59318718	AK128544_cds_3_0_chr19_59318206_r	0	-
+chr2	118288583	118288668	NM_006773_cds_0_0_chr2_118288584_f	0	+
+chr2	118390395	118390500	BC005078_cds_0_0_chr2_118390396_r	0	-
+chr2	220108689	220109267	AY125465_cds_0_0_chr2_220108690_f	0	+
+chr2	220229609	220230869	NM_024536_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	NM_181466_cds_0_0_chr20_33330414_r	0	-
+chr20	33485370	33486123	BC085019_cds_1_0_chr20_33485371_f	0	+
+chr20	33488491	33489122	NM_000557_cds_1_0_chr20_33488492_r	0	-
+chr20	33513606	33513792	AF022655_cds_1_0_chr20_33513607_f	0	+
+chr21	32687402	32687588	NM_032910_cds_0_0_chr21_32687403_f	0	+
+chr21	32869641	32870022	NM_018277_cds_3_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	NM_005806_cds_1_0_chr21_33321041_f	0	+
+chr21	33728358	33728724	AK129657_cds_0_0_chr21_33728359_r	0	-
+chr22	30120223	30120265	NM_004147_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	BC032941_cds_0_0_chr22_30160420_r	0	-
+chr22	30228824	30228916	NM_001007467_cds_1_0_chr22_30228825_f	0	+
+chr22	30340151	30340376	CR456540_cds_0_0_chr22_30340152_r	0	-
+chr5	131311206	131311254	AF099740_cds_11_0_chr5_131311207_r	0	-
+chr5	131424298	131424460	NM_000588_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	BC035813_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	BC003096_cds_0_0_chr5_131621327_f	0	+
+chr6	108299600	108299744	NM_007214_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	NM_003269_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	NM_003795_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	NM_145315_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	AF467257_cds_1_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	NM_003391_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	NM_000492_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	AF377960_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	NM_000127_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	BC051300_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	NM_014908_cds_0_0_chr9_128787520_r	0	-
+chr9	128789552	128789584	NM_015354_cds_0_0_chr9_128789553_f	0	+
+chr9	128850516	128850624	AB058751_cds_0_0_chr9_128850517_r	0	-
+chrX	122745047	122745924	NM_001167_cds_1_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	NM_000425_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	AF101728_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	BC052303_cds_0_0_chrX_152694030_r	0	-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cat_wrapper_out2.bed	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,135 @@
+# 1.bed
+chr1	147962192	147962580	CCDS989.1_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	CCDS990.1_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	CCDS993.1_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	CCDS996.1_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	CCDS7248.1_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	CCDS8374.1_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	CCDS8377.1_cds_0_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	CCDS8378.1_cds_0_0_chr11_116211734_r	0	-
+chr11	1812377	1812407	CCDS7726.1_cds_0_0_chr11_1812378_f	0	+
+chr12	38440094	38440321	CCDS8736.1_cds_0_0_chr12_38440095_r	0	-
+chr13	112381694	112381953	CCDS9526.1_cds_0_0_chr13_112381695_f	0	+
+chr14	98710240	98712285	CCDS9949.1_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	CCDS10096.1_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	CCDS10097.1_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	CCDS10098.1_cds_0_0_chr15_41679162_r	0	-
+chr15	41826029	41826196	CCDS10101.1_cds_0_0_chr15_41826030_f	0	+
+chr16	142908	143003	CCDS10397.1_cds_0_0_chr16_142909_f	0	+
+chr16	179963	180135	CCDS10401.1_cds_0_0_chr16_179964_r	0	-
+chr16	244413	244681	CCDS10402.1_cds_0_0_chr16_244414_f	0	+
+chr16	259268	259383	CCDS10403.1_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	CCDS11891.1_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	CCDS11985.1_cds_0_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	CCDS11986.1_cds_0_0_chr18_59455933_r	0	-
+chr18	59600586	59600754	CCDS11988.1_cds_0_0_chr18_59600587_f	0	+
+chr19	59068595	59069564	CCDS12866.1_cds_0_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	CCDS12872.1_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	CCDS12877.1_cds_0_0_chr19_59297999_f	0	+
+chr19	59302168	59302288	CCDS12878.1_cds_0_0_chr19_59302169_r	0	-
+chr2	118288583	118288668	CCDS2120.1_cds_0_0_chr2_118288584_f	0	+
+chr2	118394148	118394202	CCDS2121.1_cds_0_0_chr2_118394149_r	0	-
+chr2	220190202	220190242	CCDS2441.1_cds_0_0_chr2_220190203_f	0	+
+chr2	220229609	220230869	CCDS2443.1_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	CCDS13249.1_cds_0_0_chr20_33330414_r	0	-
+chr20	33513606	33513792	CCDS13255.1_cds_0_0_chr20_33513607_f	0	+
+chr20	33579500	33579527	CCDS13256.1_cds_0_0_chr20_33579501_r	0	-
+chr20	33593260	33593348	CCDS13257.1_cds_0_0_chr20_33593261_f	0	+
+chr21	32707032	32707192	CCDS13614.1_cds_0_0_chr21_32707033_f	0	+
+chr21	32869641	32870022	CCDS13615.1_cds_0_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	CCDS13620.1_cds_0_0_chr21_33321041_f	0	+
+chr21	33744994	33745040	CCDS13625.1_cds_0_0_chr21_33744995_r	0	-
+chr22	30120223	30120265	CCDS13897.1_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	CCDS13898.1_cds_0_0_chr22_30160420_r	0	-
+chr22	30665273	30665360	CCDS13901.1_cds_0_0_chr22_30665274_f	0	+
+chr22	30939054	30939266	CCDS13903.1_cds_0_0_chr22_30939055_r	0	-
+chr5	131424298	131424460	CCDS4149.1_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	CCDS4151.1_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	CCDS4152.1_cds_0_0_chr5_131621327_f	0	+
+chr5	131847541	131847666	CCDS4155.1_cds_0_0_chr5_131847542_r	0	-
+chr6	108299600	108299744	CCDS5061.1_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	CCDS5063.1_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	CCDS5064.1_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	CCDS5067.1_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	CCDS5760.1_cds_0_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	CCDS5771.1_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	CCDS5773.1_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	CCDS5774.1_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	CCDS6324.1_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	CCDS6914.1_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	CCDS6915.1_cds_0_0_chr9_128787520_r	0	-
+chr9	128882427	128882523	CCDS6917.1_cds_0_0_chr9_128882428_f	0	+
+chr9	128937229	128937445	CCDS6919.1_cds_0_0_chr9_128937230_r	0	-
+chrX	122745047	122745924	CCDS14606.1_cds_0_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	CCDS14733.1_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	CCDS14735.1_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	CCDS14736.1_cds_0_0_chrX_152694030_r	0	-
+# 2.bed
+chr1	147962192	147962580	NM_005997_cds_0_0_chr1_147962193_r	0	-
+chr1	147984545	147984630	BC007833_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	AJ011123_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	NM_002796_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	AY029205_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	AK057832_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	NM_000040_cds_1_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	BC005380_cds_0_0_chr11_116211734_r	0	-
+chr11	130745911	130745993	AY358331_cds_0_0_chr11_130745912_f	0	+
+chr12	38440094	38440321	NM_052885_cds_0_0_chr12_38440095_r	0	-
+chr12	38905200	38905351	AY792511_cds_0_0_chr12_38905201_f	0	+
+chr13	112381694	112381953	NM_207440_cds_1_0_chr13_112381695_f	0	+
+chr13	29680676	29680875	NM_032116_cds_0_0_chr13_29680677_r	0	-
+chr14	98521864	98521922	U88895_cds_0_0_chr14_98521865_f	0	+
+chr14	98710240	98712285	NM_022898_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	BX537418_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	AK223365_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	NM_153700_cds_0_0_chr15_41679162_r	0	-
+chr15	41773540	41773689	AK223365_cds_0_0_chr15_41773541_f	0	+
+chr16	142908	143003	NM_005332_cds_0_0_chr16_142909_f	0	+
+chr16	179197	179339	BC065198_cds_0_0_chr16_179198_r	0	-
+chr16	244413	244681	AK057165_cds_2_0_chr16_244414_f	0	+
+chr16	259268	259383	AB016929_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	NM_001792_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	NM_012397_cds_1_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	AB046400_cds_0_0_chr18_59455933_r	0	-
+chr18	59528407	59528575	AY792326_cds_0_0_chr18_59528408_f	0	+
+chr19	59068595	59069564	BC013995_cds_1_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	NM_198481_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	NM_004542_cds_0_0_chr19_59297999_f	0	+
+chr19	59318205	59318718	AK128544_cds_3_0_chr19_59318206_r	0	-
+chr2	118288583	118288668	NM_006773_cds_0_0_chr2_118288584_f	0	+
+chr2	118390395	118390500	BC005078_cds_0_0_chr2_118390396_r	0	-
+chr2	220108689	220109267	AY125465_cds_0_0_chr2_220108690_f	0	+
+chr2	220229609	220230869	NM_024536_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	NM_181466_cds_0_0_chr20_33330414_r	0	-
+chr20	33485370	33486123	BC085019_cds_1_0_chr20_33485371_f	0	+
+chr20	33488491	33489122	NM_000557_cds_1_0_chr20_33488492_r	0	-
+chr20	33513606	33513792	AF022655_cds_1_0_chr20_33513607_f	0	+
+chr21	32687402	32687588	NM_032910_cds_0_0_chr21_32687403_f	0	+
+chr21	32869641	32870022	NM_018277_cds_3_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	NM_005806_cds_1_0_chr21_33321041_f	0	+
+chr21	33728358	33728724	AK129657_cds_0_0_chr21_33728359_r	0	-
+chr22	30120223	30120265	NM_004147_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	BC032941_cds_0_0_chr22_30160420_r	0	-
+chr22	30228824	30228916	NM_001007467_cds_1_0_chr22_30228825_f	0	+
+chr22	30340151	30340376	CR456540_cds_0_0_chr22_30340152_r	0	-
+chr5	131311206	131311254	AF099740_cds_11_0_chr5_131311207_r	0	-
+chr5	131424298	131424460	NM_000588_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	BC035813_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	BC003096_cds_0_0_chr5_131621327_f	0	+
+chr6	108299600	108299744	NM_007214_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	NM_003269_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	NM_003795_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	NM_145315_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	AF467257_cds_1_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	NM_003391_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	NM_000492_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	AF377960_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	NM_000127_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	BC051300_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	NM_014908_cds_0_0_chr9_128787520_r	0	-
+chr9	128789552	128789584	NM_015354_cds_0_0_chr9_128789553_f	0	+
+chr9	128850516	128850624	AB058751_cds_0_0_chr9_128850517_r	0	-
+chrX	122745047	122745924	NM_001167_cds_1_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	NM_000425_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	AF101728_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	BC052303_cds_0_0_chrX_152694030_r	0	-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cat_wrapper_out3.bed	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,131 @@
+chr1	147984545	147984630	CCDS990.1_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	CCDS993.1_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	CCDS996.1_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	CCDS7248.1_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	CCDS8374.1_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	CCDS8377.1_cds_0_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	CCDS8378.1_cds_0_0_chr11_116211734_r	0	-
+chr11	1812377	1812407	CCDS7726.1_cds_0_0_chr11_1812378_f	0	+
+chr12	38440094	38440321	CCDS8736.1_cds_0_0_chr12_38440095_r	0	-
+chr13	112381694	112381953	CCDS9526.1_cds_0_0_chr13_112381695_f	0	+
+chr14	98710240	98712285	CCDS9949.1_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	CCDS10096.1_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	CCDS10097.1_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	CCDS10098.1_cds_0_0_chr15_41679162_r	0	-
+chr15	41826029	41826196	CCDS10101.1_cds_0_0_chr15_41826030_f	0	+
+chr16	142908	143003	CCDS10397.1_cds_0_0_chr16_142909_f	0	+
+chr16	179963	180135	CCDS10401.1_cds_0_0_chr16_179964_r	0	-
+chr16	244413	244681	CCDS10402.1_cds_0_0_chr16_244414_f	0	+
+chr16	259268	259383	CCDS10403.1_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	CCDS11891.1_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	CCDS11985.1_cds_0_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	CCDS11986.1_cds_0_0_chr18_59455933_r	0	-
+chr18	59600586	59600754	CCDS11988.1_cds_0_0_chr18_59600587_f	0	+
+chr19	59068595	59069564	CCDS12866.1_cds_0_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	CCDS12872.1_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	CCDS12877.1_cds_0_0_chr19_59297999_f	0	+
+chr19	59302168	59302288	CCDS12878.1_cds_0_0_chr19_59302169_r	0	-
+chr2	118288583	118288668	CCDS2120.1_cds_0_0_chr2_118288584_f	0	+
+chr2	118394148	118394202	CCDS2121.1_cds_0_0_chr2_118394149_r	0	-
+chr2	220190202	220190242	CCDS2441.1_cds_0_0_chr2_220190203_f	0	+
+chr2	220229609	220230869	CCDS2443.1_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	CCDS13249.1_cds_0_0_chr20_33330414_r	0	-
+chr20	33513606	33513792	CCDS13255.1_cds_0_0_chr20_33513607_f	0	+
+chr20	33579500	33579527	CCDS13256.1_cds_0_0_chr20_33579501_r	0	-
+chr20	33593260	33593348	CCDS13257.1_cds_0_0_chr20_33593261_f	0	+
+chr21	32707032	32707192	CCDS13614.1_cds_0_0_chr21_32707033_f	0	+
+chr21	32869641	32870022	CCDS13615.1_cds_0_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	CCDS13620.1_cds_0_0_chr21_33321041_f	0	+
+chr21	33744994	33745040	CCDS13625.1_cds_0_0_chr21_33744995_r	0	-
+chr22	30120223	30120265	CCDS13897.1_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	CCDS13898.1_cds_0_0_chr22_30160420_r	0	-
+chr22	30665273	30665360	CCDS13901.1_cds_0_0_chr22_30665274_f	0	+
+chr22	30939054	30939266	CCDS13903.1_cds_0_0_chr22_30939055_r	0	-
+chr5	131424298	131424460	CCDS4149.1_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	CCDS4151.1_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	CCDS4152.1_cds_0_0_chr5_131621327_f	0	+
+chr5	131847541	131847666	CCDS4155.1_cds_0_0_chr5_131847542_r	0	-
+chr6	108299600	108299744	CCDS5061.1_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	CCDS5063.1_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	CCDS5064.1_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	CCDS5067.1_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	CCDS5760.1_cds_0_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	CCDS5771.1_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	CCDS5773.1_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	CCDS5774.1_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	CCDS6324.1_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	CCDS6914.1_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	CCDS6915.1_cds_0_0_chr9_128787520_r	0	-
+chr9	128882427	128882523	CCDS6917.1_cds_0_0_chr9_128882428_f	0	+
+chr9	128937229	128937445	CCDS6919.1_cds_0_0_chr9_128937230_r	0	-
+chrX	122745047	122745924	CCDS14606.1_cds_0_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	CCDS14733.1_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	CCDS14735.1_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	CCDS14736.1_cds_0_0_chrX_152694030_r	0	-
+chr1	147984545	147984630	BC007833_cds_0_0_chr1_147984546_f	0	+
+chr1	148078400	148078582	AJ011123_cds_0_0_chr1_148078401_r	0	-
+chr1	148185136	148185276	NM_002796_cds_0_0_chr1_148185137_f	0	+
+chr10	55251623	55253124	AY029205_cds_0_0_chr10_55251624_r	0	-
+chr11	116124407	116124501	AK057832_cds_0_0_chr11_116124408_r	0	-
+chr11	116206508	116206563	NM_000040_cds_1_0_chr11_116206509_f	0	+
+chr11	116211733	116212337	BC005380_cds_0_0_chr11_116211734_r	0	-
+chr11	130745911	130745993	AY358331_cds_0_0_chr11_130745912_f	0	+
+chr12	38440094	38440321	NM_052885_cds_0_0_chr12_38440095_r	0	-
+chr12	38905200	38905351	AY792511_cds_0_0_chr12_38905201_f	0	+
+chr13	112381694	112381953	NM_207440_cds_1_0_chr13_112381695_f	0	+
+chr13	29680676	29680875	NM_032116_cds_0_0_chr13_29680677_r	0	-
+chr14	98521864	98521922	U88895_cds_0_0_chr14_98521865_f	0	+
+chr14	98710240	98712285	NM_022898_cds_0_0_chr14_98710241_r	0	-
+chr15	41486872	41487060	BX537418_cds_0_0_chr15_41486873_r	0	-
+chr15	41673708	41673857	AK223365_cds_0_0_chr15_41673709_f	0	+
+chr15	41679161	41679250	NM_153700_cds_0_0_chr15_41679162_r	0	-
+chr15	41773540	41773689	AK223365_cds_0_0_chr15_41773541_f	0	+
+chr16	142908	143003	NM_005332_cds_0_0_chr16_142909_f	0	+
+chr16	179197	179339	BC065198_cds_0_0_chr16_179198_r	0	-
+chr16	244413	244681	AK057165_cds_2_0_chr16_244414_f	0	+
+chr16	259268	259383	AB016929_cds_0_0_chr16_259269_r	0	-
+chr18	23786114	23786321	NM_001792_cds_0_0_chr18_23786115_r	0	-
+chr18	59406881	59407046	NM_012397_cds_1_0_chr18_59406882_f	0	+
+chr18	59455932	59456337	AB046400_cds_0_0_chr18_59455933_r	0	-
+chr18	59528407	59528575	AY792326_cds_0_0_chr18_59528408_f	0	+
+chr19	59068595	59069564	BC013995_cds_1_0_chr19_59068596_f	0	+
+chr19	59236026	59236146	NM_198481_cds_0_0_chr19_59236027_r	0	-
+chr19	59297998	59298008	NM_004542_cds_0_0_chr19_59297999_f	0	+
+chr19	59318205	59318718	AK128544_cds_3_0_chr19_59318206_r	0	-
+chr2	118288583	118288668	NM_006773_cds_0_0_chr2_118288584_f	0	+
+chr2	118390395	118390500	BC005078_cds_0_0_chr2_118390396_r	0	-
+chr2	220108689	220109267	AY125465_cds_0_0_chr2_220108690_f	0	+
+chr2	220229609	220230869	NM_024536_cds_0_0_chr2_220229610_r	0	-
+chr20	33330413	33330423	NM_181466_cds_0_0_chr20_33330414_r	0	-
+chr20	33485370	33486123	BC085019_cds_1_0_chr20_33485371_f	0	+
+chr20	33488491	33489122	NM_000557_cds_1_0_chr20_33488492_r	0	-
+chr20	33513606	33513792	AF022655_cds_1_0_chr20_33513607_f	0	+
+chr21	32687402	32687588	NM_032910_cds_0_0_chr21_32687403_f	0	+
+chr21	32869641	32870022	NM_018277_cds_3_0_chr21_32869642_r	0	-
+chr21	33321040	33322012	NM_005806_cds_1_0_chr21_33321041_f	0	+
+chr21	33728358	33728724	AK129657_cds_0_0_chr21_33728359_r	0	-
+chr22	30120223	30120265	NM_004147_cds_0_0_chr22_30120224_f	0	+
+chr22	30160419	30160661	BC032941_cds_0_0_chr22_30160420_r	0	-
+chr22	30228824	30228916	NM_001007467_cds_1_0_chr22_30228825_f	0	+
+chr22	30340151	30340376	CR456540_cds_0_0_chr22_30340152_r	0	-
+chr5	131311206	131311254	AF099740_cds_11_0_chr5_131311207_r	0	-
+chr5	131424298	131424460	NM_000588_cds_0_0_chr5_131424299_f	0	+
+chr5	131556601	131556672	BC035813_cds_0_0_chr5_131556602_r	0	-
+chr5	131621326	131621419	BC003096_cds_0_0_chr5_131621327_f	0	+
+chr6	108299600	108299744	NM_007214_cds_0_0_chr6_108299601_r	0	-
+chr6	108594662	108594687	NM_003269_cds_0_0_chr6_108594663_f	0	+
+chr6	108640045	108640151	NM_003795_cds_0_0_chr6_108640046_r	0	-
+chr6	108722976	108723115	NM_145315_cds_0_0_chr6_108722977_f	0	+
+chr7	113660517	113660685	AF467257_cds_1_0_chr7_113660518_f	0	+
+chr7	116512159	116512389	NM_003391_cds_0_0_chr7_116512160_r	0	-
+chr7	116714099	116714152	NM_000492_cds_0_0_chr7_116714100_f	0	+
+chr7	116945541	116945787	AF377960_cds_0_0_chr7_116945542_r	0	-
+chr8	118881131	118881317	NM_000127_cds_0_0_chr8_118881132_r	0	-
+chr9	128764156	128764189	BC051300_cds_0_0_chr9_128764157_f	0	+
+chr9	128787519	128789136	NM_014908_cds_0_0_chr9_128787520_r	0	-
+chr9	128789552	128789584	NM_015354_cds_0_0_chr9_128789553_f	0	+
+chr9	128850516	128850624	AB058751_cds_0_0_chr9_128850517_r	0	-
+chrX	122745047	122745924	NM_001167_cds_1_0_chrX_122745048_f	0	+
+chrX	152648964	152649196	NM_000425_cds_0_0_chrX_152648965_r	0	-
+chrX	152691446	152691471	AF101728_cds_0_0_chrX_152691447_f	0	+
+chrX	152694029	152694263	BC052303_cds_0_0_chrX_152694030_r	0	-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/f.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,36 @@
+@NS500801:189:HWGFJBGX5:1:11101:3766:1118 1:N:0:ACAGTG
+ATCCCATACTGCTCAAAATAATCTCGTAGGTGATGTTCTTCAGTGTCTTCTTTAATACCACCAACAAAGATCTTNT
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEE6EEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEE#E
+@NS500801:189:HWGFJBGX5:1:11101:25700:1118 1:N:0:ACAGTG
+GTGCCGTTGAATTTGCCGTGAGTGGAGTCATACTGGAACATGTAGACCATGTAGTTGAGGTCAATGAAGGGGTCNT
++
+AAAAAAAEAEEAEEEEAE/</EEEEAEEEEAAEEEEEEEEEEE6EE<6EEEEEEEEAEEE///EAEEEE<AEEE#E
+@NS500801:189:HWGFJBGX5:1:11101:24308:1119 1:N:0:ACAGTG
+CACTACTGATCAGCACGGGAGTTTTGACCTGCTCCGTTTCCGACCTGGGGCGGTTCACCCCTCCTTAGGCAACCNG
++
+AAAAAEAAEE/EAA/AE//EE6/EEAEEEEE<EE<EEEEEEEEE6<E/////E/E//E</A<EEEE6E6EEEEE#A
+@NS500801:189:HWGFJBGX5:1:11101:15584:1117 1:N:0:TGACCA
+GTTGATTCATAAAATTGTTTTTAGGTAGCTCGTTTGGTTTCGGGGTTTCTAGCTGTAATTCTTTTAGTTAGAAGNT
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEAEEEA#E
+@NS500801:189:HWGFJBGX5:1:11101:26457:1117 1:N:0:TGACCA
+CTTTTACAGTAACTCCGGGCATCGTGCGGCCTCCGCGCTGCCAGCCAGGGGAAAGGGAACGACGGGGTTTCCCGNG
++
+/AAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAEEEEE/EEEEE6EEEEEEEEEEEEEEEEEEEAE#E
+@NS500801:189:HWGFJBGX5:1:11101:25352:1117 1:N:0:TGACCA
+GTCCAGGCTGGAGTGCAGTGGCTATTCACAGGCGCGATCCCACTACTGATCAGCACGGGAGTTTTGACCTGCTCNG
++
+AAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEE<EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEA#E
+@NS500801:189:HWGFJBGX5:1:11101:7257:1118 1:N:0:GATCAG
+CCTAATAAAACTATAGAGCATTATCCCACCATGGTAGCAAATATGGCCCACAAAGGGATAAAAACTTCAATCACNC
++
+AA/AAAEE66EEEAEEEA/EEAEEE<EEEEEE/EEEAEEEEEEEEEEEEEEEEEE/<E/EAEEEAAEAEAEEEA#<
+@NS500801:189:HWGFJBGX5:1:11101:6563:1118 1:N:0:GATCAG
+CCAGCTTTTTCACACGAAGTTTGTGATTTCTGGCCTGGCGAAGAATGGTATTCCTGCGCATAGTCTTGGCGTAANG
++
+AAAAAEEEEEEAEE/EEEAEAEEEEEEEEEEEEE<EEEEEEEAEEEEAEEEEEEEE/EEEEEEEEEA/AEA/EE#A
+@NS500801:189:HWGFJBGX5:1:11101:14965:1119 1:N:0:GATCAG
+CGATCTTGAGCATTTTCCAGGCCAGTTTTAGGAGCAAAGCCATTTTCAACTAATGGAGGACCTAGGAGCTCTTTNT
++
+AAAAAEEEEEEEEEEEEEEEEEEEE/EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAA/E6#E
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/r.fastq	Tue Jul 09 09:51:52 2019 -0400
@@ -0,0 +1,36 @@
+@NS500801:189:HWGFJBGX5:1:11101:3766:1118 2:N:0:ACAGTG
+ACCACACCTTNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNAACTGAAGTCATTTTTCCTTNNNNNNNNNNNNNNN
++
+/AAAAEEE6E#EE############################EEEEEEEEEEEEAEEEEEAE###############
+@NS500801:189:HWGFJBGX5:1:11101:25700:1118 2:N:0:ACAGTG
+GCCGCATCTTNTTNNNNNNNNNNNNNNNNNNNNNNNNNNNNGAATGGTGAAGGTCGGTGTGNNNNNNNNNNNNNNN
++
+AAAAAEEEE6#E/############################/EEA/EE6/EEEEE6E/AEE###############
+@NS500801:189:HWGFJBGX5:1:11101:24308:1119 2:N:0:ACAGTG
+GGAGGATCGCNTGNNNNNNNNNNNNNNNNNNNNNNNNNNNCTATGCCGATCGGGTGTCCGCNNNNNNNNNNNNNNN
++
+A//AA/EEEE#EE###########################/E//AAEAEE//EEEE<EA/E###############
+@NS500801:189:HWGFJBGX5:1:11101:15584:1117 2:N:0:TGACCA
+GTAAGAACAANCANNNNNNNNNNNNNNNNNNNNNNNNNNNNTGAACTAACTAGAAAACTTCNNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE############################EEEEEEEEEEAEEEEEEEEE###############
+@NS500801:189:HWGFJBGX5:1:11101:26457:1117 2:N:0:TGACCA
+GCGAGACTCGNNGNNNNNNNNNNNNNNNNNNNNNNNNNNNNCGTTCCCTTTCCCCTGGCTGNNNNNNNNNNNNNNN
++
+AAAAAEEEEE##E############################EEEE/EEEEEEEEEEEEAAE###############
+@NS500801:189:HWGFJBGX5:1:11101:25352:1117 2:N:0:TGACCA
+GGGGGACCACNAGNNNNNNNNNNNNNNNNNNNNNNNNNNNNGGTCGGAAACGGAGCAGGTCNNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE############################EEEEEEEEEEAEEEEEEEEA###############
+@NS500801:189:HWGFJBGX5:1:11101:7257:1118 2:N:0:GATCAG
+ATAAAATGTANTANNNNNNNNNNNNNNNNNNNNNNNNNNNNTAAACCAGAATAACTGCATCNNNNNNNNNNNNNNN
++
+AAAAAE66AA#EE############################EEEEEE/<AE/EEE/AAEEE###############
+@NS500801:189:HWGFJBGX5:1:11101:6563:1118 2:N:0:GATCAG
+GAAGAAGAATNCANNNNNNNNNNNNNNNNNNNNNNNNNNNNTGAACCCTTACGCCAAGACTNNNNNNNNNNNNNNN
++
+AAAA/EE/EE#/A############################EEA/EEEEEEEE/EAE</EE###############
+@NS500801:189:HWGFJBGX5:1:11101:14965:1119 2:N:0:GATCAG
+GCCTTACTGGNATNNNNNNNNNNNNNNNNNNNNNNNNNNNGCAACTGCTAAGAAATGTGTANNNNNNNNNNNNNNN
++
+AAAAAEEEEE#EE###########################EEEEEEEEEEEEEEEEEEEEE###############