changeset 0:1298445c852b draft

Imported from capsule None
author devteam
date Mon, 27 Jan 2014 09:27:58 -0500
parents
children e4d28c94242d
files fastq_groomer.py fastq_groomer.xml test-data/illumina_full_range_as_cssanger.fastqcssanger test-data/illumina_full_range_as_sanger.fastqsanger test-data/illumina_full_range_as_solexa.fastqsolexa test-data/illumina_full_range_original_illumina.fastqillumina test-data/sanger_full_range_as_cssanger.fastqcssanger test-data/sanger_full_range_as_cssanger_adapter_base_with_quality_score.fastqcssanger_fake_score test-data/sanger_full_range_as_decimal_sanger.fastqsanger test-data/sanger_full_range_as_illumina.fastqillumina test-data/sanger_full_range_as_solexa.fastqsolexa test-data/sanger_full_range_as_tab_decimal_sanger.fastqsanger test-data/sanger_full_range_original_sanger.fastqsanger test-data/solexa_full_range_as_cssanger.fastqcssanger test-data/solexa_full_range_as_decimal_solexa.fastqsolexa test-data/solexa_full_range_as_illumina.fastqillumina test-data/solexa_full_range_as_sanger.fastqsanger test-data/solexa_full_range_original_solexa.fastqsolexa test-data/wrapping_as_illumina.fastqillumina test-data/wrapping_as_sanger.fastqsanger test-data/wrapping_as_solexa.fastqsolexa test-data/wrapping_original_sanger.fastqsanger tool_dependencies.xml
diffstat 23 files changed, 614 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastq_groomer.py	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,42 @@
+#Dan Blankenberg
+import sys
+from galaxy_utils.sequence.fastq import fastqReader, fastqVerboseErrorReader, fastqAggregator, fastqWriter
+
+def main():
+    input_filename = sys.argv[1]
+    input_type = sys.argv[2]
+    output_filename = sys.argv[3]
+    output_type = sys.argv[4]
+    force_quality_encoding = sys.argv[5]
+    summarize_input = sys.argv[6] == 'summarize_input'
+    if force_quality_encoding == 'None':
+        force_quality_encoding = None
+    
+    aggregator = fastqAggregator()
+    out = fastqWriter( open( output_filename, 'wb' ), format = output_type, force_quality_encoding = force_quality_encoding )
+    read_count = None
+    if summarize_input:
+        reader = fastqVerboseErrorReader
+    else:
+        reader = fastqReader
+    for read_count, fastq_read in enumerate( reader( open( input_filename ), format = input_type, apply_galaxy_conventions = True ) ):
+        if summarize_input:
+            aggregator.consume_read( fastq_read )
+        out.write( fastq_read )
+    out.close()
+    
+    if read_count is not None:
+        print "Groomed %i %s reads into %s reads." % ( read_count + 1, input_type, output_type )
+        if input_type != output_type and 'solexa' in [ input_type, output_type ]:
+            print "Converted between Solexa and PHRED scores."
+        if summarize_input:
+            print "Based upon quality and sequence, the input data is valid for: %s" % ( ", ".join( aggregator.get_valid_formats() )  or "None" )
+            ascii_range = aggregator.get_ascii_range()
+            decimal_range =  aggregator.get_decimal_range()
+            print "Input ASCII range: %s(%i) - %s(%i)" % ( repr( ascii_range[0] ), ord( ascii_range[0] ), repr( ascii_range[1] ), ord( ascii_range[1] ) ) #print using repr, since \x00 (null) causes info truncation in galaxy when printed
+            print "Input decimal range: %i - %i" % ( decimal_range[0], decimal_range[1] )        
+    else:
+        print "No valid FASTQ reads were provided."
+
+
+if __name__ == "__main__": main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastq_groomer.xml	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,378 @@
+<tool id="fastq_groomer" name="FASTQ Groomer" version="1.0.4">
+  <description>convert between various FASTQ quality formats</description>
+  <requirements>
+    <requirement type="package" version="1.0.0">galaxy_sequence_utils</requirement>
+  </requirements>
+  <command interpreter="python">fastq_groomer.py '$input_file' '$input_type' '$output_file'
+#if str( $options_type['options_type_selector'] ) == 'basic':
+#if str( $input_type ) == 'cssanger':
+'cssanger'
+#else:
+'sanger'
+#end if
+'ascii' 'summarize_input'
+#else:
+'${options_type.output_type}' '${options_type.force_quality_encoding}' '${options_type.summarize_input}'
+#end if
+</command>
+  <inputs>
+    <param name="input_file" type="data" format="fastq" label="File to groom" />
+    <param name="input_type" type="select" label="Input FASTQ quality scores type">
+      <option value="solexa">Solexa</option>
+      <option value="illumina">Illumina 1.3-1.7</option>
+      <option value="sanger" selected="True">Sanger &amp; Illumina 1.8+</option>
+      <option value="cssanger">Color Space Sanger</option>
+    </param>
+    <conditional name="options_type">
+    <param name="options_type_selector" type="select" label="Advanced Options">
+      <option value="basic" selected="True">Hide Advanced Options</option>
+      <option value="advanced">Show Advanced Options</option>
+    </param>
+    <when value="basic">
+      <!-- no options -->
+    </when>
+    <when value="advanced">
+      <param name="output_type" type="select" label="Output FASTQ quality scores type" help="Galaxy tools are designed to work with the Sanger Quality score format.">
+        <option value="solexa">Solexa</option>
+        <option value="illumina">Illumina 1.3-1.7</option>
+        <option value="sanger" selected="True">Sanger (recommended)</option>
+        <option value="cssanger">Color Space Sanger</option>
+      </param>
+      <param name="force_quality_encoding" type="select" label="Force Quality Score encoding">
+        <option value="None">Use Source Encoding</option>
+        <option value="ascii" selected="True">ASCII</option>
+        <option value="decimal">Decimal</option>
+      </param>
+      <param name="summarize_input" type="select" label="Summarize input data">
+        <option value="summarize_input" selected="True">Summarize Input</option>
+        <option value="dont_summarize_input">Do not Summarize Input (faster)</option>
+      </param>
+    </when>
+  </conditional>
+  </inputs>
+  <outputs>
+    <data name="output_file" format="fastqsanger">
+      <change_format>
+        <when input="input_type" value="cssanger" format="fastqcssanger" />
+        <when input="options_type.output_type" value="solexa" format="fastqsolexa" />
+        <when input="options_type.output_type" value="illumina" format="fastqillumina" />
+        <when input="options_type.output_type" value="sanger" format="fastqsanger" />
+        <when input="options_type.output_type" value="cssanger" format="fastqcssanger" />
+      </change_format>
+    </data>
+  </outputs>
+  <tests>
+    <!-- These tests include test files adapted from supplemental material in Cock PJ, Fields CJ, Goto N, Heuer ML, Rice PM. The Sanger FASTQ file format for sequences with quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids Res. 2009 Dec 16. -->
+    <!-- Unfortunately, cannot test for expected failures -->
+    <!-- Test basic options -->
+    <test>
+      <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="basic" />
+      <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_as_cssanger.fastqcssanger" ftype="fastq" />
+      <param name="input_type" value="cssanger" />
+      <param name="options_type_selector" value="basic" />
+      <output name="output_file" file="sanger_full_range_as_cssanger.fastqcssanger" />
+    </test>
+    <test>
+      <param name="input_file" value="illumina_full_range_original_illumina.fastqillumina" ftype="fastq" />
+      <param name="input_type" value="illumina" />
+      <param name="options_type_selector" value="basic" />
+      <output name="output_file" file="illumina_full_range_as_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="solexa_full_range_original_solexa.fastqsolexa" ftype="fastq" />
+      <param name="input_type" value="solexa" />
+      <param name="options_type_selector" value="basic" />
+      <output name="output_file" file="solexa_full_range_as_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_as_illumina.fastqillumina" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="basic" />
+      <output name="output_file" file="sanger_full_range_as_illumina.fastqillumina" />
+    </test>
+    <!-- Test grooming from illumina -->
+    <test>
+      <param name="input_file" value="illumina_full_range_original_illumina.fastqillumina" ftype="fastq" />
+      <param name="input_type" value="illumina" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="illumina" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="illumina_full_range_original_illumina.fastqillumina" />
+    </test>
+    <test>
+      <param name="input_file" value="illumina_full_range_original_illumina.fastqillumina" ftype="fastq" />
+      <param name="input_type" value="illumina" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="sanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="illumina_full_range_as_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="illumina_full_range_original_illumina.fastqillumina" ftype="fastq" />
+      <param name="input_type" value="illumina" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="solexa" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="illumina_full_range_as_solexa.fastqsolexa" />
+    </test>
+    <test>
+      <param name="input_file" value="illumina_full_range_original_illumina.fastqillumina" ftype="fastq" />
+      <param name="input_type" value="illumina" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="cssanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="illumina_full_range_as_cssanger.fastqcssanger" />
+    </test>
+    <!-- Test grooming from sanger -->
+    <test>
+      <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="sanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="illumina" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_as_illumina.fastqillumina" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="solexa" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_as_solexa.fastqsolexa" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="cssanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_as_cssanger.fastqcssanger" />
+    </test>
+    <!-- Test grooming from solexa -->
+    <test>
+      <param name="input_file" value="solexa_full_range_original_solexa.fastqsolexa" ftype="fastq" />
+      <param name="input_type" value="solexa" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="solexa" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="solexa_full_range_original_solexa.fastqsolexa" />
+    </test>
+    <test>
+      <param name="input_file" value="solexa_full_range_original_solexa.fastqsolexa" ftype="fastq" />
+      <param name="input_type" value="solexa" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="illumina" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="solexa_full_range_as_illumina.fastqillumina" />
+    </test>
+    <test>
+      <param name="input_file" value="solexa_full_range_original_solexa.fastqsolexa" ftype="fastq" />
+      <param name="input_type" value="solexa" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="sanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="solexa_full_range_as_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="solexa_full_range_original_solexa.fastqsolexa" ftype="fastq" />
+      <param name="input_type" value="solexa" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="cssanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="solexa_full_range_as_cssanger.fastqcssanger" />
+    </test>
+    <!-- Test grooming from cssanger -->
+    <test>
+      <param name="input_file" value="sanger_full_range_as_cssanger.fastqcssanger" ftype="fastq" />
+      <param name="input_type" value="cssanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="cssanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_as_cssanger.fastqcssanger" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_as_cssanger.fastqcssanger" ftype="fastq" />
+      <param name="input_type" value="cssanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="sanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_as_cssanger.fastqcssanger" ftype="fastq" />
+      <param name="input_type" value="cssanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="illumina" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_as_illumina.fastqillumina" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_as_cssanger.fastqcssanger" ftype="fastq" />
+      <param name="input_type" value="cssanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="solexa" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_as_solexa.fastqsolexa" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_as_cssanger_adapter_base_with_quality_score.fastqcssanger_fake_score" ftype="fastq" />
+      <param name="input_type" value="cssanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="cssanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_as_cssanger.fastqcssanger" />
+    </test>
+    <!-- Test fastq with line wrapping -->
+    <test>
+      <param name="input_file" value="wrapping_original_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="sanger" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="wrapping_as_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="wrapping_original_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="illumina" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="wrapping_as_illumina.fastqillumina" />
+    </test>
+    <test>
+      <param name="input_file" value="wrapping_original_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="solexa" />
+      <param name="force_quality_encoding" value="None" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="wrapping_as_solexa.fastqsolexa" />
+    </test>
+    <!-- Test forcing quality score encoding -->
+    <!-- Sanger, range 0 - 93 -->
+    <test>
+      <param name="input_file" value="sanger_full_range_as_decimal_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="sanger" />
+      <param name="force_quality_encoding" value="ascii" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_original_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="sanger" />
+      <param name="force_quality_encoding" value="decimal" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_as_decimal_sanger.fastqsanger" />
+    </test>
+    <test>
+      <param name="input_file" value="sanger_full_range_as_tab_decimal_sanger.fastqsanger" ftype="fastq" />
+      <param name="input_type" value="sanger" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="sanger" />
+      <param name="force_quality_encoding" value="ascii" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="sanger_full_range_original_sanger.fastqsanger" />
+    </test>
+    <!-- Solexa, range -5 - 62 -->
+    <test>
+      <param name="input_file" value="solexa_full_range_as_decimal_solexa.fastqsolexa" ftype="fastq" />
+      <param name="input_type" value="solexa" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="solexa" />
+      <param name="force_quality_encoding" value="ascii" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="solexa_full_range_original_solexa.fastqsolexa" />
+    </test>
+    <test>
+      <param name="input_file" value="solexa_full_range_original_solexa.fastqsolexa" ftype="fastq" />
+      <param name="input_type" value="solexa" />
+      <param name="options_type_selector" value="advanced" />
+      <param name="output_type" value="solexa" />
+      <param name="force_quality_encoding" value="decimal" />
+      <param name="summarize_input" value="summarize_input" />
+      <output name="output_file" file="solexa_full_range_as_decimal_solexa.fastqsolexa" />
+    </test>
+  </tests>
+  <help>
+**What it does**
+
+This tool offers several conversions options relating to the FASTQ format.
+
+When using *Basic* options, the output will be *sanger* formatted or *cssanger* formatted (when the input is Color Space Sanger).
+
+When converting, if a quality score falls outside of the target score range, it will be coerced to the closest available value (i.e. the minimum or maximum). 
+
+When converting between Solexa and the other formats, quality scores are mapped between Solexa and PHRED scales using the equations found in `Cock PJ, Fields CJ, Goto N, Heuer ML, Rice PM. The Sanger FASTQ file format for sequences with quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids Res. 2009 Dec 16.`_
+
+When converting between color space (csSanger) and base/sequence space (Sanger, Illumina, Solexa) formats, adapter bases are lost or gained; if gained, the base 'G' is used as the adapter. You cannot convert a color space read to base space if there is no adapter present in the color space sequence. Any masked or ambiguous nucleotides in base space will be converted to 'N's when determining color space encoding.
+
+-----
+
+**Quality Score Comparison**
+
+::
+
+    SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
+    ...............................IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
+    ..........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    !"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+    |                         |    |        |                              |                     |
+   33                        59   64       73                            104                   126
+  
+   S - Sanger       Phred+33,  93 values  (0, 93) (0 to 60 expected in raw reads)
+   I - Illumina 1.3 Phred+64,  62 values  (0, 62) (0 to 40 expected in raw reads)
+   X - Solexa       Solexa+64, 67 values (-5, 62) (-5 to 40 expected in raw reads)
+
+Diagram adapted from http://en.wikipedia.org/wiki/FASTQ_format
+
+.. class:: infomark
+
+Output from Illumina 1.8+ pipelines are Sanger encoded.
+
+------
+
+**Citation**
+
+If you use this tool, please cite `Blankenberg D, Gordon A, Von Kuster G, Coraor N, Taylor J, Nekrutenko A; Galaxy Team. Manipulation of FASTQ data with Galaxy. Bioinformatics. 2010 Jul 15;26(14):1783-5. &lt;http://www.ncbi.nlm.nih.gov/pubmed/20562416&gt;`_
+
+
+.. _Cock PJ, Fields CJ, Goto N, Heuer ML, Rice PM. The Sanger FASTQ file format for sequences with quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids Res. 2009 Dec 16.: http://www.ncbi.nlm.nih.gov/pubmed/20015970
+
+  </help>
+</tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/illumina_full_range_as_cssanger.fastqcssanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0005 Original version has PHRED scores from 0 to 62 inclusive (in that order)
+G213131313131313131313131313131313131313131313131313131313131313
++
+!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
+@FAKE0006 Original version has PHRED scores from 62 to 0 inclusive (in that order)
+G031313131313131313131313131313131313131313131313131313131313131
++
+_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/illumina_full_range_as_sanger.fastqsanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0005 Original version has PHRED scores from 0 to 62 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACG
++
+!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
+@FAKE0006 Original version has PHRED scores from 62 to 0 inclusive (in that order)
+GCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/illumina_full_range_as_solexa.fastqsolexa	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0005 Original version has PHRED scores from 0 to 62 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACG
++
+;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+@FAKE0006 Original version has PHRED scores from 62 to 0 inclusive (in that order)
+GCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJHGFECB@>;;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/illumina_full_range_original_illumina.fastqillumina	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0005 Original version has PHRED scores from 0 to 62 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACG
++
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+@FAKE0006 Original version has PHRED scores from 62 to 0 inclusive (in that order)
+GCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sanger_full_range_as_cssanger.fastqcssanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0001 Original version has PHRED scores from 0 to 93 inclusive (in that order)
+G2131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131
++
+!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+@FAKE0002 Original version has PHRED scores from 93 to 0 inclusive (in that order)
+G3131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131
++
+~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sanger_full_range_as_cssanger_adapter_base_with_quality_score.fastqcssanger_fake_score	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0001 Original version has PHRED scores from 0 to 93 inclusive (in that order)
+G2131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131
++
+!!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+@FAKE0002 Original version has PHRED scores from 93 to 0 inclusive (in that order)
+G3131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131
++
+!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sanger_full_range_as_decimal_sanger.fastqsanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0001 Original version has PHRED scores from 0 to 93 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC
++
+0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 
+@FAKE0002 Original version has PHRED scores from 93 to 0 inclusive (in that order)
+CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sanger_full_range_as_illumina.fastqillumina	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0001 Original version has PHRED scores from 0 to 93 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC
++
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+@FAKE0002 Original version has PHRED scores from 93 to 0 inclusive (in that order)
+CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sanger_full_range_as_solexa.fastqsolexa	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0001 Original version has PHRED scores from 0 to 93 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC
++
+;;>@BCEFGHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+@FAKE0002 Original version has PHRED scores from 93 to 0 inclusive (in that order)
+CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJHGFECB@>;;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sanger_full_range_as_tab_decimal_sanger.fastqsanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0001 Original version has PHRED scores from 0 to 93 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC
++
+0	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16	17	18	19	20	21	22	23	24	25	26	27	28	29	30	31	32	33	34	35	36	37	38	39	40	41	42	43	44	45	46	47	48	49	50	51	52	53	54	55	56	57	58	59	60	61	62	63	64	65	66	67	68	69	70	71	72	73	74	75	76	77	78	79	80	81	82	83	84	85	86	87	88	89	90	91	92	93	
+@FAKE0002 Original version has PHRED scores from 93 to 0 inclusive (in that order)
+CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+93	92	91	90	89	88	87	86	85	84	83	82	81	80	79	78	77	76	75	74	73	72	71	70	69	68	67	66	65	64	63	62	61	60	59	58	57	56	55	54	53	52	51	50	49	48	47	46	45	44	43	42	41	40	39	38	37	36	35	34	33	32	31	30	29	28	27	26	25	24	23	22	21	20	19	18	17	16	15	14	13	12	11	10	9	8	7	6	5	4	3	2	1	0	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/sanger_full_range_original_sanger.fastqsanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0001 Original version has PHRED scores from 0 to 93 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC
++
+!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+@FAKE0002 Original version has PHRED scores from 93 to 0 inclusive (in that order)
+CATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/solexa_full_range_as_cssanger.fastqcssanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0003 Original version has Solexa scores from -5 to 62 inclusive (in that order)
+G21313131313131313131313131313131313131313131313131313131313131313131
++
+""##$$%%&&'()*++,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
+@FAKE0004 Original version has Solexa scores from 62 to -5 inclusive (in that order)
+G11313131313131313131313131313131313131313131313131313131313131313131
++
+_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,++*)('&&%%$$##""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/solexa_full_range_as_decimal_solexa.fastqsolexa	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0003 Original version has Solexa scores from -5 to 62 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
++
+-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 
+@FAKE0004 Original version has Solexa scores from 62 to -5 inclusive (in that order)
+TGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/solexa_full_range_as_illumina.fastqillumina	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0003 Original version has Solexa scores from -5 to 62 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
++
+AABBCCDDEEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+@FAKE0004 Original version has Solexa scores from 62 to -5 inclusive (in that order)
+TGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJJIHGFEEDDCCBBAA
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/solexa_full_range_as_sanger.fastqsanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0003 Original version has Solexa scores from -5 to 62 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
++
+""##$$%%&&'()*++,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
+@FAKE0004 Original version has Solexa scores from 62 to -5 inclusive (in that order)
+TGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,++*)('&&%%$$##""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/solexa_full_range_original_solexa.fastqsolexa	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,8 @@
+@FAKE0003 Original version has Solexa scores from -5 to 62 inclusive (in that order)
+ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
++
+;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
+@FAKE0004 Original version has Solexa scores from 62 to -5 inclusive (in that order)
+TGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCA
++
+~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/wrapping_as_illumina.fastqillumina	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,12 @@
+@SRR014849.50939 EIXKN4201BA2EC length=135
+GAAATTTCAGGGCCACCTTTTTTTTGATAGAATAATGGAGAAAATTAAAAGCTGTACATATACCAATGAACAATAAATCAATACATAAAAAAGGAGAAGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTCGG
++
+Zb^Ld`N\[d`NaZ[aZc]UOKHDA[\YT[_W[aZ\aZ[Zd`SF_WeaUI[Y\[[\\\[\Z\aY`X[[aZ\aZ\d`OY[aY[[\[[e`WPJC^UZ[`X\[R]T_V_W[`[Ga\I`\H[[Q^TVa\Ia\Ic^LY\S
+@SRR014849.110027 EIXKN4201APUB0 length=131
+CTTCAAATGATTCCGGGACTGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTTCGGTTCCAACTCGCCGTCCGAATAATCCGTTCAAAATCTTGGCCTGTCAAAACGACTTTACGACCAGAACGATCCG
++
+\aYY_[FY\T`X^Vd`OY\[[^U_V[R^T[_ZDc^La\HYYO\S[c^Ld`Nc_QAZaZaYaY`XZZ\[aZZ[aZ[aZ[aZY`Z[`ZWeaVJ\[aZaY`X[PY\eaUG[\[[d`OXTUZ[Q\\`W\\\Y_W\
+@SRR014849.203935 EIXKN4201B4HU6 length=144
+AACCCGTCCCATCAAAGATTTTGGTTGGAACCCGAAAGGGTTTTGAATTCAAACCCCTTTCGGTTCCAACTATTCAATTGTTTAACTTTTTTTAAATTGATGGTCTGTTGGACCATTTGTAATAATCCCCATCGGAATTTCTTT
++
+`Z_ZDVT^YB[[Xd`PZ\d`RDaZaZ`ZaZ_ZDXd`Pd`Pd`RD[aZ`ZWd`Oc_RCd`P\aZ`ZaZaZY\YaZYaY`XYd`O`X[e`WPJEAc^LaZS[YYN[Z\Y`XWLT^U\b]JW[[RZ\SYc`RD[Z\WLXM`\HYa\I
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/wrapping_as_sanger.fastqsanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,12 @@
+@SRR014849.50939 EIXKN4201BA2EC length=135
+GAAATTTCAGGGCCACCTTTTTTTTGATAGAATAATGGAGAAAATTAAAAGCTGTACATATACCAATGAACAATAAATCAATACATAAAAAAGGAGAAGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTCGG
++
+;C?-EA/=<EA/B;<B;D>60,)%"<=:5<@8<B;=B;<;EA4'@8FB6*<:=<<===<=;=B:A9<<B;=B;=EA0:<B:<<=<<FA81+$?6;<A9=<3>5@7@8<A<(B=*A=)<<2?57B=*B=*D?-:=4
+@SRR014849.110027 EIXKN4201APUB0 length=131
+CTTCAAATGATTCCGGGACTGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTTCGGTTCCAACTCGCCGTCCGAATAATCCGTTCAAAATCTTGGCCTGTCAAAACGACTTTACGACCAGAACGATCCG
++
+=B::@<':=5A9?7EA0:=<<?6@7<3?5<@;%D?-B=)::0=4<D?-EA/D@2";B;B:B:A9;;=<B;;<B;<B;<B;:A;<A;8FB7+=<B;B:A9<1:=FB6(<=<<EA0956;<2==A8===:@8=
+@SRR014849.203935 EIXKN4201B4HU6 length=144
+AACCCGTCCCATCAAAGATTTTGGTTGGAACCCGAAAGGGTTTTGAATTCAAACCCCTTTCGGTTCCAACTATTCAATTGTTTAACTTTTTTTAAATTGATGGTCTGTTGGACCATTTGTAATAATCCCCATCGGAATTTCTTT
++
+A;@;%75?:#<<9EA1;=EA3%B;B;A;B;@;%9EA1EA1EA3%<B;A;8EA0D@3$EA1=B;A;B;B;:=:B;:B:A9:EA0A9<FA81+&"D?-B;4<::/<;=:A98-5?6=C>+8<<3;=4:DA3%<;=8-9.A=):B=*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/wrapping_as_solexa.fastqsolexa	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,12 @@
+@SRR014849.50939 EIXKN4201BA2EC length=135
+GAAATTTCAGGGCCACCTTTTTTTTGATAGAATAATGGAGAAAATTAAAAGCTGTACATATACCAATGAACAATAAATCAATACATAAAAAAGGAGAAGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTCGG
++
+Zb^Ld`N\[d`NaZ[aZc]UOKGB;[\YT[_W[aZ\aZ[Zd`SE_WeaUH[Y\[[\\\[\Z\aY`X[[aZ\aZ\d`OY[aY[[\[[e`WPJ@^UZ[`X\[R]T_V_W[`[Fa\H`\G[[Q^TVa\Ha\Hc^LY\S
+@SRR014849.110027 EIXKN4201APUB0 length=131
+CTTCAAATGATTCCGGGACTGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTTCGGTTCCAACTCGCCGTCCGAATAATCCGTTCAAAATCTTGGCCTGTCAAAACGACTTTACGACCAGAACGATCCG
++
+\aYY_[EY\T`X^Vd`OY\[[^U_V[R^T[_ZBc^La\GYYO\S[c^Ld`Nc_Q;ZaZaYaY`XZZ\[aZZ[aZ[aZ[aZY`Z[`ZWeaVJ\[aZaY`X[PY\eaUF[\[[d`OXTUZ[Q\\`W\\\Y_W\
+@SRR014849.203935 EIXKN4201B4HU6 length=144
+AACCCGTCCCATCAAAGATTTTGGTTGGAACCCGAAAGGGTTTTGAATTCAAACCCCTTTCGGTTCCAACTATTCAATTGTTTAACTTTTTTTAAATTGATGGTCTGTTGGACCATTTGTAATAATCCCCATCGGAATTTCTTT
++
+`Z_ZBVT^Y>[[Xd`PZ\d`RBaZaZ`ZaZ_ZBXd`Pd`Pd`RB[aZ`ZWd`Oc_R@d`P\aZ`ZaZaZY\YaZYaY`XYd`O`X[e`WPJC;c^LaZS[YYN[Z\Y`XWLT^U\b]JW[[RZ\SYc`RB[Z\WLXM`\GYa\H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/wrapping_original_sanger.fastqsanger	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,24 @@
+@SRR014849.50939 EIXKN4201BA2EC length=135
+GAAATTTCAGGGCCACCTTTTTTTTGATAGAATAATGGAGAAAATTAAAAGCTGTACATATACCAATGAACAATAAATCAATACATAAAAAAGGAGAAGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTCGG
++
+;C?-EA/=<EA/B;<B;D>60,)%"<=:5<
+@8<B;=B;<;EA4'@8FB6*<:=<<===<=
+;=B:A9<<B;=B;=EA0:<B:<<=<<FA81
++$?6;<A9=<3>5@7@8<A<(B=*A=)<<2
+?57B=*B=*D?-:=4
+@SRR014849.110027 EIXKN4201APUB0 length=131
+CTTCAAATGATTCCGGGACTGTTGGAACCGAAAGGGTTTGAATTCAAACCCTTTTCGGTTCCAACTCGCCGTCCGAATAATCCGTTCAAAATCTTGGCCTGTCAAAACGACTTTACGACCAGAACGATCCG
++
+=B::@<':=5A9?7EA0:=<<?6@7<3?5<
+@;%D?-B=)::0=4<D?-EA/D@2";B;B:
+B:A9;;=<B;;<B;<B;<B;:A;<A;8FB7
++=<B;B:A9<1:=FB6(<=<<EA0956;<2
+==A8===:@8=
+@SRR014849.203935 EIXKN4201B4HU6 length=144
+AACCCGTCCCATCAAAGATTTTGGTTGGAACCCGAAAGGGTTTTGAATTCAAACCCCTTTCGGTTCCAACTATTCAATTGTTTAACTTTTTTTAAATTGATGGTCTGTTGGACCATTTGTAATAATCCCCATCGGAATTTCTTT
++
+A;@;%75?:#<<9EA1;=EA3%B;B;A;B;
+@;%9EA1EA1EA3%<B;A;8EA0D@3$EA1
+=B;A;B;B;:=:B;:B:A9:EA0A9<FA81
++&"D?-B;4<::/<;=:A98-5?6=C>+8<
+<3;=4:DA3%<;=8-9.A=):B=*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_dependencies.xml	Mon Jan 27 09:27:58 2014 -0500
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<tool_dependency>
+  <package name="galaxy_sequence_utils" version="1.0.0">
+      <repository changeset_revision="0643676ad5f7" name="package_galaxy_utils_1_0" owner="devteam" prior_installation_required="False" toolshed="http://toolshed.g2.bx.psu.edu" />
+    </package>
+</tool_dependency>