[DRE-commits] [transrate] 01/03: Imported Upstream version 1.0.1

Michael Crusoe misterc-guest at moszumanska.debian.org
Sat Oct 3 04:51:48 UTC 2015


This is an automated email from the git hooks/post-receive script.

misterc-guest pushed a commit to branch master
in repository transrate.

commit fc9b0974342bb535ee8fbb48d98a7f7ef530ab7e
Author: Michael R. Crusoe <michael.crusoe at gmail.com>
Date:   Sat Sep 19 22:20:06 2015 -0700

    Imported Upstream version 1.0.1
---
 .gitignore                                |  72 +++
 .travis.yml                               |  17 +
 CITATION                                  |   3 +
 Gemfile                                   |   3 +
 LICENSE                                   |  24 +
 README.md                                 |  48 ++
 Rakefile                                  | 177 ++++++
 bin/transrate                             |  23 +
 deps/blast.yaml                           |  27 +
 deps/deps.yaml                            |  49 ++
 docs/transrate_logo_full.png              | Bin 0 -> 14912 bytes
 ext/transrate/extconf.rb                  |  13 +
 ext/transrate/transrate.c                 | 266 +++++++++
 files.txt                                 |  78 +++
 lib/transrate.rb                          |  41 ++
 lib/transrate/assembly.rb                 | 235 ++++++++
 lib/transrate/cmd.rb                      |  23 +
 lib/transrate/cmdline.rb                  | 543 ++++++++++++++++++
 lib/transrate/comparative_metrics.rb      | 160 ++++++
 lib/transrate/contig.rb                   | 266 +++++++++
 lib/transrate/contig_metrics.rb           |  75 +++
 lib/transrate/read_metrics.rb             | 237 ++++++++
 lib/transrate/salmon.rb                   |  79 +++
 lib/transrate/score_optimiser.rb          |  71 +++
 lib/transrate/snap.rb                     | 161 ++++++
 lib/transrate/transrater.rb               | 119 ++++
 lib/transrate/version.rb                  |  19 +
 lib/transrate/writer.rb                   |  18 +
 metadata.yml                              | 417 ++++++++++++++
 packaging/build_deps_linux.sh             |  57 ++
 packaging/build_deps_macosx.sh            |  55 ++
 packaging/bundler-config                  |   3 +
 packaging/minify.sh                       |  43 ++
 packaging/transrate                       |  20 +
 test/data/150uncovered.l.fq               | 892 ++++++++++++++++++++++++++++++
 test/data/150uncovered.r.fq               | 892 ++++++++++++++++++++++++++++++
 test/data/Os.protein.2.fa                 |  95 ++++
 test/data/Os.protein.fa                   | 199 +++++++
 test/data/assembly.2.fa                   |  26 +
 test/data/assembly.fasta                  |   8 +
 test/data/bridging_reads.l.fastq          |  40 ++
 test/data/bridging_reads.r.fastq          |  40 ++
 test/data/sorghum_100.fa                  | 200 +++++++
 test/data/sorghum_transcript.fa           |   4 +
 test/data/test.sf                         |  30 +
 test/data/test_contig_nc1.fa              |   2 +
 test/data/test_contig_nc2.fa              |   4 +
 test/data/test_contig_nc3.fa              |   6 +
 test/data/test_contig_nc4.fa              |   4 +
 test/data/test_contig_nc5.fa              |   6 +
 test/data/test_contig_nc6.fa              |   2 +
 test/data/test_contig_nc7.fa              |   2 +
 test/data/test_reference_aa1.fa           |   2 +
 test/data/test_reference_nc1.fa           |   2 +
 test/data/tiny.sam                        |   4 +
 test/helper.rb                            |  60 ++
 test/test_assembly.rb                     |  54 ++
 test/test_cmd.rb                          |  20 +
 test/test_cmdline.rb                      | 114 ++++
 test/test_comp_metrics.rb                 | 381 +++++++++++++
 test/test_contig.rb                       | 120 ++++
 test/test_contig_metrics.rb               |  50 ++
 test/test_inline.rb                       |  31 ++
 test/test_optimiser.rb                    |  27 +
 test/test_read_metrics.rb                 | 181 ++++++
 test/test_salmon.rb                       |  45 ++
 test/test_snap.rb                         |  27 +
 test/test_transrate.rb                    |  40 ++
 test/test_transrater.rb                   |  68 +++
 test/vagrant/centos_6.5_64/Vagrantfile    | 122 ++++
 test/vagrant/debian_7.4_64/Vagrantfile    | 126 +++++
 test/vagrant/debian_7.4_64/provision.sh   |  28 +
 test/vagrant/fedora_20_64/Vagrantfile     | 122 ++++
 test/vagrant/fedora_20_64/provision.sh    |  16 +
 test/vagrant/linux-x86_64/Vagrantfile     |  10 +
 test/vagrant/osx/Vagrantfile              |  18 +
 test/vagrant/ubuntu_12.04_64/Vagrantfile  | 126 +++++
 test/vagrant/ubuntu_12.04_64/provision.sh |  24 +
 transrate.gemspec                         |  36 ++
 79 files changed, 7748 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4af9af6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,72 @@
+*.gem
+*.rbc
+*.so
+.bundle
+.config
+Gemfile.lock
+coverage
+test_data
+InstalledFiles
+lib/bundler/man
+pkg
+rdoc
+spec/reports
+test/tmp
+test/version_tmp
+tmp
+*~
+.#*
+\#*
+*so
+dryrun
+.DS_Store
+
+# YARD artifacts
+.yardoc
+_yardoc
+doc/
+.ruby-version
+
+# large test files not for repo
+dryrun
+*.blast
+*.phr
+*.pin
+*.psq
+*.nhr
+*.nin
+*.nsq
+*.bt2
+*.fai
+*.bam
+*.csv
+*.coverage
+
+# c extension build artefacts
+# note that we manually add these in a release,
+# but don't want them updated in general
+Makefile
+transrate.bundle
+transrate.o
+.RUBYARCHDIR.time
+
+# vagrant stuff
+.vagrant
+
+# large test files
+test/data/sorghum_100.1.fastq
+test/data/sorghum_100.2.fastq
+
+# packaging stuff
+*.tar.gz
+transrate-*
+packaging/bindeps
+packaging/vendor
+packaging/packaging
+traveling-ruby*
+*box
+libruby.so*
+libruby*dylib
+
+# example data
+example_data*
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..1b9d30a
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,17 @@
+language: ruby
+rvm:
+  - "2.0.0"
+  - "2.1.0"
+  - "2.2.0"
+before_script:
+  - gem install bindeps
+  - bundle install
+  - bundle exec rake compile
+  - bundle exec bin/transrate --install-deps all
+os:
+  - linux
+  - osx
+matrix:
+  allow_failures:
+    - os: osx
+    - rvm: "2.2.0"
diff --git a/CITATION b/CITATION
new file mode 100644
index 0000000..d4371cd
--- /dev/null
+++ b/CITATION
@@ -0,0 +1,3 @@
+To cite transrate in publications, please use:
+
+Smith-Unna, Richard D.; Boursnell, Chris M.; Hibberd, Julian M. and Kelly, Steven (2014). Transrate: v1.0.0 beta 1. Github: https://github.com/Blahah/transrate. 10.5281/zenodo.13161
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..896d547
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gemspec
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..42ee507
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,24 @@
+## Summary
+
+Transrate is released under the MIT license.
+
+## The MIT License (MIT)
+
+Copyright (c) 2014 Richard Smith-Unna & Chris Boursnell
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..49b3aa9
--- /dev/null
+++ b/README.md
@@ -0,0 +1,48 @@
+<p align="center">
+  <img alt="Transrate - understand your transcriptome assembly" src="https://github.com/Blahah/transrate/raw/master/docs/transrate_logo_full.png">
+</p>
+
+Download latest binaries: [![Download](https://api.bintray.com/packages/blahah/generic/transrate/images/download.svg)][bintray]
+
+Need help? Chat to us live: [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/Blahah/transrate?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+
+
+## Development status
+
+[![Gem Version](http://img.shields.io/gem/v/transrate.svg)][gem]
+![Downloads](http://img.shields.io/gem/dtv/transrate.svg)
+![Total Downloads](http://img.shields.io/gem/dt/transrate.svg)
+[![Build Status](http://img.shields.io/travis/Blahah/transrate/master.svg)][travis]
+[![Dependency Status](http://img.shields.io/gemnasium/Blahah/transrate.svg)][gemnasium]
+[![Code Climate](http://img.shields.io/codeclimate/github/Blahah/transrate.svg)][codeclimate]
+[![Coverage Status](http://img.shields.io/coveralls/Blahah/transrate.svg)][coveralls]
+
+[gem]: https://badge.fury.io/rb/transrate
+[travis]: https://travis-ci.org/Blahah/transrate
+[gemnasium]: https://gemnasium.com/Blahah/transrate
+[codeclimate]: https://codeclimate.com/github/Blahah/transrate
+[coveralls]: https://coveralls.io/r/Blahah/transrate
+[bintray]: https://bintray.com/blahah/generic/transrate/_latestVersion
+
+This software is being actively developed. Please be aware that there may be bugs. If you find any, please report them on the [issue tracker](https://github.com/Blahah/transrate/issues).
+
+## Citation
+
+Transrate is pre-publication academic software. If you use it, please cite [the preprint on biorXiv](http://dx.doi.org/10.1101/021626).
+
+## Documentation
+
+**transrate** is documented [on the website](http://hibberdlab.com/transrate).
+
+## Contributing
+
+Interested in helping? Great! We particularly would like help with the following:
+
+- code review
+- documentation review
+- adding features that are already discussed and approved on the issue tracker
+- tackling bugs
+
+For any of these, please just pick an appropriate issue [on the tracker](https://github.com/Blahah/transrate/issues) and make a pull request.
+
+If you want to suggest, and maybe implement, a new feature, please suggest it on the tracker first. This allows us to give feedback on whether it makes sense given the scope of the software, and for the community to discuss requirements for the feature. *Don't* just implement the feature and make a pull request before dicussing it, because you'll probably find your PR waiting a very long time for review.
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..376f020
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,177 @@
+require 'rake/testtask'
+require 'rake/extensiontask'
+require 'bundler/setup'
+
+Rake::ExtensionTask.new('transrate') do |ext|
+  ext.lib_dir = "lib/transrate"
+end
+
+Rake::TestTask.new do |t|
+  t.libs << 'test'
+end
+
+Rake::TestTask.new do |t|
+  t.name = :recip
+  t.libs << 'test'
+  t.test_files = ['test/test_reciprocal.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :comp
+  t.libs << 'test'
+  t.test_files = ['test/test_comp_metrics.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :contig_metrics
+  t.libs << 'test'
+  t.test_files = ['test/test_contig_metrics.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :read
+  t.libs << 'test'
+  t.test_files = ['test/test_read_metrics.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :bowtie
+  t.libs << 'test'
+  t.test_files = ['test/test_bowtie.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :rater
+  t.libs << 'test'
+  t.test_files = ['test/test_transrater.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :bin
+  t.libs << 'test'
+  t.test_files = ['test/test_bin.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :contig
+  t.libs << 'test'
+  t.test_files = ['test/test_contig.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :assembly
+  t.libs << 'test'
+  t.test_files = ['test/test_assembly.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :snap
+  t.libs << 'test'
+  t.test_files = ['test/test_snap.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :salmon
+  t.libs << 'test'
+  t.test_files = ['test/test_salmon.rb']
+end
+
+Rake::TestTask.new do |t|
+  t.name = :optimiser
+  t.libs << 'test'
+  t.test_files = ['test/test_optimiser.rb']
+end
+
+
+
+desc "Run tests"
+task :default => :test
+
+# PACKAGING
+
+PACKAGE_NAME = "transrate"
+VERSION = "1.0.1"
+TRAVELING_RUBY_VERSION = "20150210-2.2.0"
+
+desc "Package your app"
+task :package => ['package:linux', 'package:osx']
+
+namespace :package do
+  desc "Package your app for Linux x86_64"
+  task :linux => [:bundle_install, "packaging/packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz"] do
+    create_package("linux-x86_64")
+  end
+
+  desc "Package your app for OS X"
+  task :osx => [:bundle_install, "packaging/packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz"] do
+    create_package("osx")
+  end
+end
+
+file "packaging/packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-linux-x86_64.tar.gz" do
+  download_runtime("linux-x86_64")
+end
+
+file "packaging/packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-osx.tar.gz" do
+  download_runtime("osx")
+end
+
+desc "Install gems to local directory"
+task :bundle_install do
+  if RUBY_VERSION !~ /^2\.2\./
+    abort "You can only 'bundle install' using Ruby 2.2, because that's what Traveling Ruby uses."
+  end
+  Bundler.with_clean_env do
+    sh "env BUNDLE_IGNORE_CONFIG=1 bundle install --path packaging/vendor --without development"
+  end
+  sh "rm -f packaging/vendor/*/*/cache/*"
+end
+
+def create_package(target)
+  package_pref = "#{PACKAGE_NAME}-#{VERSION}-#{target}"
+  package_dir = "packaging/#{package_pref}"
+  sh "rm -rf #{package_dir}"
+  sh "mkdir -p #{package_dir}/lib/app"
+  # copy transrate gem to destination
+  sh "cp -r lib bin deps ext files.txt #{package_dir}/lib/app/"
+  # install travelling ruby
+  sh "mkdir #{package_dir}/lib/app/ruby"
+  sh "tar -xzf packaging/packaging/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz -C #{package_dir}/lib/app/ruby"
+  # install loading script for transrate
+  sh "cp packaging/transrate #{package_dir}/transrate"
+  # install bundled gem dependencies
+  sh "cp -pR packaging/vendor #{package_dir}/lib/"
+  sh "cd #{package_dir} && ../minify.sh"
+  sh "cp -r #{package_dir}/lib/vendor/* #{package_dir}/lib/app/"
+  sh "cp Gemfile Gemfile.lock transrate.gemspec #{package_dir}/lib/app/"
+  sh "mkdir #{package_dir}/lib/app/.bundle"
+  sh "cp packaging/bundler-config #{package_dir}/lib/app/.bundle/config"
+  # free up some more space in the package dir
+  sh "rm -rf #{package_dir}/lib/vendor"
+  sh "rm -rf #{package_dir}/lib/app/ruby/*/gems/*/test"
+  # install binary dependencies
+  sh "mkdir -p packaging/bindeps/#{target}"
+  sh "rm -rf packaging/bindeps/#{target}/*"
+  sh "cp test/vagrant/#{target}/*.tar.gz packaging/bindeps/#{target}"
+  sh "mkdir packaging/bindeps/#{target}/{bin,lib}"
+  sh "cd packaging/bindeps/#{target} && " +
+     "find . -maxdepth 1 -name '*.tar.gz' -exec tar -xzf '{}' \\; && " +
+     "mv snap-aligner bam-read bin/ && cp -r ./*/{bin,lib} ."
+  sh "cp -r packaging/bindeps/#{target}/{bin,lib} #{package_dir}/"
+  # install c extension
+  sh "cp test/vagrant/#{target}/libruby.* #{package_dir}/lib/"
+  sh "cp test/vagrant/#{target}/transrate.* #{package_dir}/lib/app/ext/transrate/"
+  # create package
+  if !ENV['DIR_ONLY']
+    sh "cd packaging && tar -czf #{package_pref}.tar.gz #{package_pref}"
+    sh "rm -rf #{package_dir}"
+  end
+  # cleanup
+  sh "rm -rf packaging/vendor packaging/bindeps .bundle"
+end
+
+def download_runtime(target)
+  sh "mkdir -p packaging/packaging &&" +
+  "cd packaging/packaging && curl -L -O --fail " +
+  "http://d6r77u77i8pq3.cloudfront.net/releases/traveling-ruby-#{TRAVELING_RUBY_VERSION}-#{target}.tar.gz"
+end
diff --git a/bin/transrate b/bin/transrate
new file mode 100755
index 0000000..cd32916
--- /dev/null
+++ b/bin/transrate
@@ -0,0 +1,23 @@
+#!/usr/bin/env ruby
+require 'transrate'
+include Transrate
+
+# We want clean error messages through the logger, no ugly backtraces
+# because the user doesn't care about them, unless they specifically ask for
+# them with --loglevel debug
+module Kernel
+  alias _raise raise
+
+  def raise(*a)
+    begin
+      _raise(*a)
+    rescue TransrateError => e
+      logger.error e.message
+      logger.debug e.backtrace unless e.backtrace.nil?
+      exit 1
+    end
+  end
+end
+
+cmdline = Cmdline.new ARGV
+cmdline.run
diff --git a/deps/blast.yaml b/deps/blast.yaml
new file mode 100644
index 0000000..f453503
--- /dev/null
+++ b/deps/blast.yaml
@@ -0,0 +1,27 @@
+blastplus:
+  binaries:
+    - makeblastdb
+    - blastn
+    - tblastn
+    - blastp
+    - blastx
+    - tblastx
+    - makembindex
+    - psiblast
+    - rpsblast
+    - blastdbcmd
+    - segmasker
+    - dustmasker
+    - blast_formatter
+    - windowmasker
+    - blastdb_aliastool
+    - deltablast
+    - rpstblastn
+    - blastdbcheck
+  version:
+    number: '2.2.[0-9]'
+    command: 'blastx -version'
+  url:
+    64bit:
+      macosx: ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.29/ncbi-blast-2.2.29+-universal-macosx.tar.gz
+      linux: ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.29/ncbi-blast-2.2.29+-x64-linux.tar.gz
diff --git a/deps/deps.yaml b/deps/deps.yaml
new file mode 100644
index 0000000..be6e811
--- /dev/null
+++ b/deps/deps.yaml
@@ -0,0 +1,49 @@
+snap:
+  binaries:
+    - snap-aligner
+  version:
+    number: '1.0beta.18'
+    command: 'snap-aligner'
+  url:
+    64bit:
+      linux: https://github.com/Blahah/snap/releases/download/v1.0beta.18/snap_v1.0beta.18_linux.tar.gz
+      macosx: https://github.com/Blahah/snap/releases/download/v1.0beta.18/snap_v1.0beta.18_osx.tar.gz
+bam-read:
+  binaries:
+   - bam-read
+  version:
+    number: '1.0.0'
+    command: 'bam-read'
+  url:
+    64bit:
+      linux: https://github.com/Blahah/transrate-tools/releases/download/v1.0.0/bam-read_v1.0.0_linux.tar.gz
+      macosx: https://github.com/Blahah/transrate-tools/releases/download/v1.0.0/bam-read_v1.0.0_osx.tar.gz
+  unpack: true
+salmon:
+  binaries:
+    - salmon
+  libraries:
+    - libgcc_s.so.1
+    - libgomp.so.1
+    - libm.so.6
+    - librt.so.1
+    - libstdc++.so.6
+    - libtbb.so
+    - libtbb.so.2
+    - libtbbmalloc.so
+    - libtbbmalloc.so.2
+    - libtbbmalloc_proxy.so
+    - libtbbmalloc_proxy.so.2
+    - libcmph.0.dylib
+    - libcmph.dylib
+    - libtbb.dylib
+    - libtbbmalloc.dylib
+    - libtbbmalloc_proxy.dylib
+    - libsalmon_core.a
+  version:
+    number: '0.4'
+    command: 'salmon -v'
+  url:
+    64bit:
+      linux: https://github.com/COMBINE-lab/salmon/releases/download/v0.4.2/SalmonBeta-0.4.2_DebianSqueeze.tar.gz
+      macosx: https://github.com/COMBINE-lab/salmon/releases/download/v0.4.2/SalmonBeta-0.4.2_OSX-10.10.tar.gz
diff --git a/docs/transrate_logo_full.png b/docs/transrate_logo_full.png
new file mode 100644
index 0000000..8d78619
Binary files /dev/null and b/docs/transrate_logo_full.png differ
diff --git a/ext/transrate/extconf.rb b/ext/transrate/extconf.rb
new file mode 100644
index 0000000..fbcfeb7
--- /dev/null
+++ b/ext/transrate/extconf.rb
@@ -0,0 +1,13 @@
+# Loads mkmf which is used to make makefiles for Ruby extensions
+require 'mkmf'
+
+# Give it a name
+extension_name = 'transrate/transrate'
+
+$CFLAGS = '-Wall -O3' # O for optimise
+
+# The destination
+dir_config(extension_name)
+
+# Do the work
+create_makefile(extension_name)
\ No newline at end of file
diff --git a/ext/transrate/transrate.c b/ext/transrate/transrate.c
new file mode 100644
index 0000000..b6f9efc
--- /dev/null
+++ b/ext/transrate/transrate.c
@@ -0,0 +1,266 @@
+#include "ruby.h"
+#include <stdlib.h>
+#include <math.h>
+
+// Defining a space for information and references about the module to be
+// stored internally
+VALUE Contig = Qnil;
+VALUE ReadMetrics = Qnil;
+VALUE Transrate = Qnil;
+
+// Prototype for the initialization method - Ruby calls this, not you
+void Init_transrate();
+
+// methods are prefixed by 'method_' here
+// contig
+VALUE method_composition(VALUE, VALUE);
+VALUE method_base_count(VALUE,VALUE);
+VALUE method_dibase_count(VALUE,VALUE);
+VALUE method_kmer_count(VALUE,VALUE,VALUE);
+VALUE method_longest_orf(VALUE, VALUE);
+// read_metrics
+
+int * base_counts;
+int * dibase_counts;
+
+// The initialization method for this module
+void Init_transrate() {
+  Transrate = rb_define_module("Transrate");
+  Contig = rb_define_class_under(Transrate, "Contig", rb_cObject);
+  ReadMetrics = rb_define_class_under(Transrate, "ReadMetrics", rb_cObject);
+  // contig
+  rb_define_method(Contig, "composition", method_composition, 1);
+  rb_define_method(Contig, "base_count", method_base_count, 1);
+  rb_define_method(Contig, "dibase_count", method_dibase_count, 1);
+  rb_define_method(Contig, "kmer_count", method_kmer_count, 2);
+  rb_define_method(Contig, "longest_orf", method_longest_orf, 1);
+  // ReadMetrics
+}
+
+VALUE method_composition(VALUE self, VALUE _seq) {
+  int i, len, idx;
+  char * seq;
+  char base;
+  char prevbase;
+  seq = StringValueCStr(_seq);
+  len = RSTRING_LEN(_seq);
+  base_counts = malloc(5 * sizeof(int));
+  dibase_counts = malloc(25 * sizeof(int));
+
+  for (i=0; i < 5; i++) {
+    base_counts[i]=0;
+  }
+  for (i=0; i < 25; i++) {
+    dibase_counts[i]=0;
+  }
+  for (i=0; i < len; i++) {
+    base = seq[i];
+    if (base > 90) {
+      base -= 32;
+    }
+    switch (base) {
+      case 'A': {
+        idx=0;
+        break;
+      }
+      case 'C': {
+        idx=1;
+        break;
+      }
+      case 'G': {
+        idx=2;
+        break;
+      }
+      case 'T': {
+        idx=3;
+        break;
+      }
+      default: {
+        idx=4;
+        break;
+      }
+    }
+    base_counts[idx]++;
+
+    if (i > 0) {
+      prevbase = seq[i-1];
+      if (prevbase > 90) {
+        prevbase -= 32;
+      }
+      switch (prevbase) {
+        case 'A': {
+          idx=idx;
+          break;
+        }
+        case 'C': {
+          idx=idx+5;
+          break;
+        }
+        case 'G': {
+          idx=idx+10;
+          break;
+        }
+        case 'T': {
+          idx=idx+15;
+          break;
+        }
+        default: {
+          idx=idx+20;
+          break;
+        }
+      }
+      dibase_counts[idx]++;
+    }
+  }
+  return INT2NUM(0);
+}
+
+VALUE method_dibase_count(VALUE self, VALUE idx) {
+  return INT2NUM(dibase_counts[NUM2INT(idx)]);
+}
+
+VALUE method_base_count(VALUE self, VALUE idx) {
+  return INT2NUM(base_counts[NUM2INT(idx)]);
+}
+
+VALUE method_kmer_count(VALUE self, VALUE _k, VALUE _s) {
+  int n, i, start, k, len, h, size = 0;
+  char * c_str;
+  char base;
+  len = RSTRING_LEN(_s);
+  c_str = StringValueCStr(_s);
+  k = NUM2INT(_k);
+  size = 1;
+  for(h=0;h<k;h++) {
+      size *= 4;
+  }
+  short set[size];
+  for(start=0;start<size;start++) {
+      set[start]=0;
+  }
+  for(start=0; start<len-k+1; start++) {
+    i = 0;
+    h = 0;
+    n = 0;
+    for(i = start; i < start+k; i++) {
+      base = c_str[i];
+      if (base > 90) {
+        base -= 32;
+      }
+      switch (base) {
+        case 'A': {
+          h = h << 2;
+          h += 0;
+          break;
+        }
+        case 'C': {
+          h = h << 2;
+          h += 1;
+          break;
+        }
+        case 'G': {
+          h = h << 2;
+          h += 2;
+          break;
+        }
+        case 'T': {
+          h = h << 2;
+          h += 3;
+          break;
+        }
+        default: {
+          n++;
+          break;
+        }
+      }
+    }
+    if (n==0) {
+      set[h] += 1;
+    }
+  }
+  i = 0; // count how many in array are set //
+  for(start = 0; start < size; start++) {
+    if (set[start]>0) {
+      i++;
+    }
+  }
+  return INT2NUM(i);
+}
+
+// takes in a string and calculates the longest open reading frame
+// in any of the 6 frames
+// an open reading frame is defined as the number of bases between
+// either the start of the sequence or a start codon and either the
+// end of the sequence or a stop codon
+
+VALUE method_longest_orf(VALUE self, VALUE _str) {
+  int i,sl,longest=0;
+  int len[3];
+  char * str;
+  sl = RSTRING_LEN(_str);
+  str = StringValueCStr(_str);
+  for (i=0;i<3;i++) {
+    len[i]=0;
+  }
+  for(i=0;i<sl-2;i++) {
+    if (str[i]=='A' && str[i+1]=='T' && str[i+2]=='G') { //Methionine
+      if (len[i%3]>=0) {
+        len[i%3]++;
+      } else {
+        len[i%3]=1;
+      }
+    } else {
+      if (str[i]=='T' &&
+        ((str[i+1]=='A' && str[i+2]=='G') ||   //amber
+        (str[i+1]=='A' && str[i+2]=='A') ||    //ochre   stops
+        (str[i+1]=='G' && str[i+2]=='A'))) {   //umber
+        if (len[i%3]>longest) {
+          longest = len[i%3];
+        }
+        len[i%3]=-1;
+      } else { // any other codon
+        if (len[i%3]>=0) {
+          len[i%3]++;
+        }
+      }
+    }
+  }
+  for(i=0;i<3;i++) {
+    if (len[i%3] > longest) {
+      longest = len[i%3];
+    }
+  }
+  for (i=0;i<3;i++) {
+    len[i]=0;
+  }
+  for(i=sl-1;i>=2;i--) {
+    if (str[i]=='T' && str[i-1]=='A' && str[i-2]=='C') { //Methionine
+      if (len[i%3]>=0) {
+        len[i%3]++;
+      } else {
+        len[i%3]=1;
+      }
+    } else {
+      if (str[i]=='A' &&
+        ((str[i-1]=='T' && str[i-2]=='C') ||   //amber
+        (str[i-1]=='T' && str[i-2]=='T') ||    //ochre   stops
+        (str[i-1]=='C' && str[i-2]=='T'))) {   //umber
+        if (len[i%3]>longest) {
+          longest = len[i%3];
+        }
+        len[i%3]=-1;
+      } else { // any other codon
+        if (len[i%3]>=0) {
+          len[i%3]++;
+        }
+      }
+    }
+  }
+  for(i=0;i<3;i++) {
+    if (len[i%3] > longest) {
+      longest = len[i%3];
+    }
+  }
+  return INT2NUM(longest);
+}
+
diff --git a/files.txt b/files.txt
new file mode 100644
index 0000000..55d11be
--- /dev/null
+++ b/files.txt
@@ -0,0 +1,78 @@
+.gitignore
+.travis.yml
+CITATION
+Gemfile
+LICENSE
+README.md
+Rakefile
+bin/transrate
+deps/blast.yaml
+deps/deps.yaml
+docs/transrate_logo_full.png
+ext/transrate/extconf.rb
+ext/transrate/transrate.c
+files.txt
+lib/transrate.rb
+lib/transrate/assembly.rb
+lib/transrate/cmd.rb
+lib/transrate/cmdline.rb
+lib/transrate/comparative_metrics.rb
+lib/transrate/contig.rb
+lib/transrate/contig_metrics.rb
+lib/transrate/read_metrics.rb
+lib/transrate/salmon.rb
+lib/transrate/score_optimiser.rb
+lib/transrate/snap.rb
+lib/transrate/transrater.rb
+lib/transrate/version.rb
+lib/transrate/writer.rb
+packaging/build_deps_linux.sh
+packaging/build_deps_macosx.sh
+packaging/bundler-config
+packaging/minify.sh
+packaging/transrate
+test/data/150uncovered.l.fq
+test/data/150uncovered.r.fq
+test/data/Os.protein.2.fa
+test/data/Os.protein.fa
+test/data/assembly.2.fa
+test/data/assembly.fasta
+test/data/bridging_reads.l.fastq
+test/data/bridging_reads.r.fastq
+test/data/sorghum_100.fa
+test/data/sorghum_transcript.fa
+test/data/test.sf
+test/data/test_contig_nc1.fa
+test/data/test_contig_nc2.fa
+test/data/test_contig_nc3.fa
+test/data/test_contig_nc4.fa
+test/data/test_contig_nc5.fa
+test/data/test_contig_nc6.fa
+test/data/test_contig_nc7.fa
+test/data/test_reference_aa1.fa
+test/data/test_reference_nc1.fa
+test/data/tiny.sam
+test/helper.rb
+test/test_assembly.rb
+test/test_cmd.rb
+test/test_cmdline.rb
+test/test_comp_metrics.rb
+test/test_contig.rb
+test/test_contig_metrics.rb
+test/test_inline.rb
+test/test_optimiser.rb
+test/test_read_metrics.rb
+test/test_salmon.rb
+test/test_snap.rb
+test/test_transrate.rb
+test/test_transrater.rb
+test/vagrant/centos_6.5_64/Vagrantfile
+test/vagrant/debian_7.4_64/Vagrantfile
+test/vagrant/debian_7.4_64/provision.sh
+test/vagrant/fedora_20_64/Vagrantfile
+test/vagrant/fedora_20_64/provision.sh
+test/vagrant/linux-x86_64/Vagrantfile
+test/vagrant/osx/Vagrantfile
+test/vagrant/ubuntu_12.04_64/Vagrantfile
+test/vagrant/ubuntu_12.04_64/provision.sh
+transrate.gemspec
diff --git a/lib/transrate.rb b/lib/transrate.rb
new file mode 100644
index 0000000..eec895c
--- /dev/null
+++ b/lib/transrate.rb
@@ -0,0 +1,41 @@
+# before the
+require 'rbconfig'
+require 'yell'
+RbConfig::CONFIG['CFLAGS'] = ''
+
+# Transrate is a comprehensive transcriptome assembly
+# quality assessment tool.
+module Transrate
+
+  # Our own set of errors to allow nice custom error handling
+  class TransrateError < StandardError; end
+  class TransrateIOError < TransrateError; end
+  class TransrateArgError < TransrateError; end
+
+  # Create the universal logger and include it in Object
+  # making the logger object available everywhere
+  format = Yell::Formatter.new("[%5L] %d : %m", "%Y-%m-%d %H:%M:%S")
+  # http://xkcd.com/1179/
+  Yell.new(:format => format) do |l|
+    l.level = :info
+    l.name = Object
+    l.adapter STDOUT, level: [:debug, :info, :warn]
+    l.adapter STDERR, level: [:error, :fatal]
+  end
+  Object.send :include, Yell::Loggable
+
+end # Transrate
+
+require 'transrate/transrate'
+require 'transrate/transrater'
+require 'transrate/version'
+require 'transrate/contig'
+require 'transrate/assembly'
+require 'transrate/snap'
+require 'transrate/score_optimiser'
+require 'transrate/salmon'
+require 'transrate/read_metrics'
+require 'transrate/comparative_metrics'
+require 'transrate/contig_metrics'
+require 'transrate/cmd'
+require 'transrate/cmdline'
diff --git a/lib/transrate/assembly.rb b/lib/transrate/assembly.rb
new file mode 100644
index 0000000..fcd720b
--- /dev/null
+++ b/lib/transrate/assembly.rb
@@ -0,0 +1,235 @@
+require 'bio'
+require 'csv'
+require 'forwardable'
+
+module Transrate
+
+  class AssemblyError < TransrateError; end
+
+  # Container for a transcriptome assembly and its associated
+  # metadata.
+  #
+  # @!attribute [rw] ublast_db
+  #   @return [String] path to a ublast database generated from this assembly
+  # @!attribute [rw] orss_ublast_db
+  #   @return [String] path to a ublast database generated from the orfs
+  #     extracted from this assembly
+  # @!attribute [r] assembly
+  #   @return [Array<Bio::FastaFormat>] the assembly
+  # @!attribute [r] has_run
+  #   @return [BOOL] whether the basic metrics have been generated
+  # @!attribute [w] n_bases
+  #   @return [Integer] the number of bases in the assembly
+  # @!attribute [rw] file
+  #   @return [String] path to the assembly FASTA file
+  # @!attribute [r] n50
+  #   @return [Integer] assembly n50
+  class Assembly
+
+    include Enumerable
+    extend Forwardable
+    def_delegators :@assembly, :each, :each_value, :<<, :size, :length, :[]
+
+    attr_accessor :file
+    attr_reader :assembly
+    attr_reader :has_run
+    attr_accessor :n_bases
+    attr_reader :n50
+    attr_accessor :contig_metrics
+
+    # Create a new Assembly.
+    #
+    # @param file [String] path to the assembly FASTA file
+    def initialize file
+      @file = File.expand_path file
+      unless File.exist? @file
+        raise TransrateIOError.new "Assembly file doesn't exist: #{@file}"
+      end
+      @assembly = {}
+      @n_bases = 0
+      Bio::FastaFormat.open(file).each do |entry|
+        if entry.seq.length == 0
+          logger.error "Entry found with no sequence #{entry.entry_id}"
+          raise AssemblyError
+        end
+        @n_bases += entry.length
+        contig = Contig.new(entry)
+        if @assembly.key?(contig.name)
+          logger.error "Non unique fasta identifier found"
+          logger.error ">#{contig.name}"
+          logger.error "Please make sure there are no duplicate entries in the assembly"
+          logger.error "Contig name is taken from before the first | or space"
+          logger.error "If you used Trinity, there is a known bug that breaks" +
+                       "contig names to make them non-unique."
+          logger.error "You can fix your Trinity assembly by replacing | with _"
+          logger.error "e.g. `sed 's/\\|/_/' Trinity.fa > Trinity.fixed.fa`"
+          raise AssemblyError
+        end
+        @assembly[contig.name] = contig
+      end
+      @contig_metrics = ContigMetrics.new self
+    end
+
+    # Generate and store the basic statistics for this assembly
+    #
+    # @param threads [Integer] number of threads to use
+    def run threads=8
+      stats = self.basic_stats threads
+      stats.each_pair do |key, value|
+        ivar = "@#{key.gsub(/\ /, '_')}".to_sym
+        attr_ivar = "#{key.gsub(/\ /, '_')}".to_sym
+        # creates accessors for the variables in stats
+        singleton_class.class_eval { attr_accessor attr_ivar }
+        self.instance_variable_set(ivar, value)
+      end
+      @contig_metrics.run
+      @has_run = true
+    end
+
+    # Return a hash of statistics about this assembly. Stats are
+    # calculated in parallel by splitting the assembly into
+    # equal-sized bins and calling Assembly#basic_bin_stat on each
+    # bin in a separate thread.
+    #
+    # @param threads [Integer] number of threads to use
+    #
+    # @return [Hash] basic statistics about the assembly
+    def basic_stats threads=1
+      return @basic_stats if @basic_stats
+      bin = @assembly.values
+      @basic_stats = basic_bin_stats bin
+      @basic_stats
+    end # basic_stats
+
+
+    # Calculate basic statistics in an single thread for a bin
+    # of contigs.
+    #
+    # Basic statistics are:
+    #
+    # - N10, N30, N50, N70, N90
+    # - number of contigs >= 1,000 base pairs long
+    # - number of contigs >= 10,000 base pairs long
+    # - length of the shortest contig
+    # - length of the longest contig
+    # - number of contigs in the bin
+    # - mean contig length
+    # - total number of nucleotides in the bin
+    # - mean % of contig length covered by the longest ORF
+    #
+    # @param [Array] bin An array of Bio::Sequence objects
+    # representing contigs in the assembly
+
+    def basic_bin_stats bin
+
+      # cumulative length is a float so we can divide it
+      # accurately later to get the mean length
+      cumulative_length = 0.0
+
+      # we'll calculate Nx for x in [10, 30, 50, 70, 90]
+      # to do this we create a stack of the x values and
+      # pop the first one to set the first cutoff. when
+      # the cutoff is reached we store the nucleotide length and pop
+      # the next value to set the next cutoff. we take a copy
+      # of the Array so we can use the intact original to collect
+      # the results later
+      x = [90, 70, 50, 30, 10]
+      x2 = x.clone
+      cutoff = x2.pop / 100.0
+      res = []
+      n_under_200, n_over_1k, n_over_10k, n_with_orf, orf_length_sum = 0,0,0,0,0
+      # sort the contigs in ascending length order
+      # and iterate over them
+      bin.sort_by! { |c| c.seq.length }
+      bin.each do |contig|
+        # increment our long contig counters if this
+        # contig is above the thresholds
+        if contig.length < 200
+          # ignore contigs less than 200 bases,
+          # but record how many there are
+          n_under_200 += 1
+          next
+        end
+        n_over_1k += 1 if contig.length > 1_000
+        n_over_10k += 1 if contig.length > 10_000
+
+        # add the length of the longest orf to the
+        # running total
+        orf_length = contig.orf_length
+        orf_length_sum += orf_length
+        # only consider orfs that are realistic length
+        # (here we set minimum amino acid length as 50)
+        n_with_orf += 1 if orf_length > 149
+
+        # increment the cumulative length and check whether the Nx
+        # cutoff has been reached. if it has, store the Nx value and
+        # get the next cutoff
+        cumulative_length += contig.length
+        if cumulative_length >= @n_bases * cutoff
+          res << contig.length
+          if x2.empty?
+            cutoff = 1
+          else
+            cutoff = x2.pop / 100.0
+          end
+        end
+      end
+
+      # if there aren't enough sequences we might have no value for some
+      # of the Nx. Fill the empty ones in with the longest contig length.
+      while res.length < x.length do
+        res << bin.last.length
+      end
+
+      # calculate and return the statistics as a hash
+      mean = cumulative_length / @assembly.size
+      if @assembly.size * mean == 0
+        mean_orf_percent = 0
+      else
+        mean_orf_percent = 300 * orf_length_sum / (@assembly.size * mean)
+      end
+      ns = Hash[x.map { |n| "n#{n}" }.zip(res)]
+      {
+        'n_seqs' => bin.size,
+        'smallest' => bin.first.length,
+        'largest' => bin.last.length,
+        'n_bases' => n_bases,
+        'mean_len' => mean,
+        'n_under_200' => n_under_200,
+        'n_over_1k' => n_over_1k,
+        'n_over_10k' => n_over_10k,
+        'n_with_orf' => n_with_orf,
+        'mean_orf_percent' => mean_orf_percent
+      }.merge ns
+
+    end # basic_bin_stats
+
+    def classify_contigs cutoff
+      # create hash of file handles for each output
+      base = File.basename @file
+      files = {}
+      %w(good bad).each do |type|
+        files[type.to_sym] = File.open("#{type}.#{base}", "wb")
+      end
+      # loop through contigs writing them out to the appropriate file
+      @assembly.each_pair do |name, contig|
+        handle = files[contig.classify(cutoff)]
+        handle.write contig.to_fasta
+      end
+      # close all the file handles
+      files.each do |type, handle|
+        handle.close
+      end
+    end
+
+    def good_contigs
+      good = 0
+      @assembly.each do |name, contig|
+        good += 1 if contig.classification == :good
+      end
+      good
+    end
+
+  end # Assembly
+
+end # Transrate
diff --git a/lib/transrate/cmd.rb b/lib/transrate/cmd.rb
new file mode 100644
index 0000000..692f5da
--- /dev/null
+++ b/lib/transrate/cmd.rb
@@ -0,0 +1,23 @@
+require 'open3'
+
+module Transrate
+
+  class Cmd
+
+    attr_accessor :cmd, :stdout, :stderr, :status
+
+    def initialize cmd
+      @cmd = cmd
+    end
+
+    def run
+      @stdout, @stderr, @status = Open3.capture3 @cmd
+    end
+
+    def to_s
+      @cmd
+    end
+
+  end
+
+end
diff --git a/lib/transrate/cmdline.rb b/lib/transrate/cmdline.rb
new file mode 100644
index 0000000..2f1d48b
--- /dev/null
+++ b/lib/transrate/cmdline.rb
@@ -0,0 +1,543 @@
+module Transrate
+
+class Cmdline
+
+  require 'trollop'
+  require 'csv'
+  require 'bindeps'
+  require 'colorize'
+  require 'pathname'
+
+  def initialize args
+    @opts = parse_arguments args
+    if @opts.examples
+      print_examples
+    end
+    @report_width = 35
+    check_arguments
+  end
+
+  def run
+    results = []
+
+    assemblies = @opts.assembly.split(',')
+    result_paths = assembly_result_paths assemblies
+
+    r = @opts.reference ? Assembly.new(File.expand_path @opts.reference) : nil
+
+    @opts.output = File.expand_path @opts.output
+    FileUtils.mkdir_p @opts.output
+
+    Dir.chdir @opts.output do
+      if @opts.merge_assemblies
+        assemblies = concatenate_assemblies assemblies
+      end
+
+      assemblies.zip(result_paths) do |assembly, result_path|
+        results << analyse_assembly(assembly, r, result_path)
+      end
+
+      write_assembly_csv results
+    end
+
+  end
+
+  def parse_arguments args
+    Trollop::with_standard_exception_handling argument_parser do
+      if args.empty? || args.include?("-h") || args.include?("--help")
+        transrate_banner
+        raise Trollop::HelpNeeded
+      end
+
+      argument_parser.parse args
+    end
+  end
+
+  def argument_parser
+    cmdline = self
+    Trollop::Parser.new do
+      version Transrate::VERSION::STRING.dup
+      banner cmdline.help_message
+      opt :assembly, "Assembly file(s) in FASTA format, comma-separated",
+          :type => String
+      opt :left, "Left reads file(s) in FASTQ format, comma-separated",
+          :type => String
+      opt :right, "Right reads file(s) in FASTQ format, comma-separated",
+          :type => String
+      opt :reference,
+          "Reference proteome or transcriptome file in FASTA format",
+          :type => String
+      opt :threads, "Number of threads to use",
+          :default => 8,
+          :type => Integer
+      opt :merge_assemblies,
+          "Merge best contigs from multiple assemblies into file",
+          :type => String
+      opt :output, "Directory where results are output (will be created)",
+          :default => 'transrate_results'
+      opt :loglevel,
+          "Log level. One of [error, info, warn, debug]",
+          :default => 'info'
+      opt :install_deps,
+          "Install any missing dependencies. One of " +
+          "[#{cmdline.allowed_deps.join(', ')}]",
+          :type => String, :default => nil
+      opt :examples, "Show some example commands with explanations"
+    end
+  end
+
+  def terminal_columns
+    require 'io/console'
+    IO.console.winsize.last
+  end
+
+  def help_message
+  <<-EOS
+
+Transrate v#{Transrate::VERSION::STRING.dup}
+by Richard Smith-Unna, Chris Boursnell, Rob Patro,
+   Julian Hibberd, and Steve Kelly
+
+DESCRIPTION:
+Analyse a de-novo transcriptome assembly using three kinds of metrics:
+
+1. sequence based (if --assembly is given)
+2. read mapping based (if --left and --right are given)
+3. reference based (if --reference is given)
+
+Documentation at http://hibberdlab.com/transrate
+
+USAGE:
+transrate <options>
+
+OPTIONS:
+
+    EOS
+  end
+
+  def transrate_banner
+    if terminal_columns > 70
+      txp = '░▓▓▓^▓▓▓░'
+      toptxp = txp.green
+      midtxp = txp.yellow
+      bottxp = txp.red
+      puts <<-EOS
+           _                                        _
+          | |_  _ __  __ _  _ __   ___  _ __  __ _ | |_  ___
+#{toptxp} | __|| '__|/ _` || '_ \\ / __|| '__|/ _` || __|/ _ \\ #{toptxp}
+#{midtxp} | |_ | |  | (_| || | | |\\__ \\| |  | (_| || |_|  __/ #{midtxp}
+#{bottxp}  \\__||_|   \\__,_||_| |_||___/|_|   \\__,_| \\__|\\___| #{bottxp}
+      EOS
+    end
+    ""
+  end
+
+  def print_examples
+    msg = <<-EOS
+
+    Transrate v#{Transrate::VERSION::STRING.dup}
+
+    EXAMPLE COMMANDS:
+
+    # check dependencies and install any that are missing
+    transrate --install-deps all
+
+    # get the transrate score for the assembly and each contig
+    transrate --assembly contigs.fa --left left.fq --right right.fq
+
+    # basic assembly metrics only
+    transrate --assembly contigs.fa
+
+    # basic and reference-based metrics with 8 threads
+    transrate --assembly contigs.fa --reference ref.fa --threads 8
+
+    # contig and read-based metrics for two assemblies with 32 threads
+    transrate --assembly one.fa,two.fa --left l.fq --right r.fq --threads 32
+
+    EOS
+    puts msg.split("\n").map{ |line| line.lstrip }.join("\n")
+    exit(0)
+  end
+
+  def check_arguments
+    check_dependencies
+    check_loglevel
+    check_assembly
+    check_reference
+    check_reads
+  end
+
+  def check_loglevel
+    unless %w[error info warn debug].include? @opts.loglevel
+      raise TransrateError.new "Loglevel #{@opts.loglevel} is not valid. " +
+      "It must be one of: error, info, warn, debug."
+    end
+
+    logger.level = Yell::Level.new @opts.loglevel.to_sym
+  end
+
+  def check_assembly
+    if @opts.assembly
+      @opts[:assembly] = @opts.assembly.split(',').map do |a|
+        File.expand_path a
+      end.join(',')
+      @opts.assembly.split(',').each do |assembly_file|
+        unless File.exist?(assembly_file)
+          raise TransrateIOError.new "Assembly fasta file does not exist: " +
+                                     " #{assembly_file}"
+        end
+      end
+    else
+      raise TransrateArgError.new "Option --assembly must be specified. " +
+                                  "Try --help for help."
+    end
+  end
+
+  def check_reference
+    if @opts.reference
+      @opts[:reference] = File.expand_path @opts.reference
+      if !File.exist?(@opts.reference)
+        raise TransrateIOError.new "Reference fasta file does not exist: " +
+                                 " #{@opts.reference}"
+      end
+    end
+  end
+
+  def check_reads
+    if @opts.left and @opts.right
+      if @opts.left.split(",").length != @opts.right.split(",").length
+        msg = "Please provide the same number of left reads as right reads"
+        raise TransrateArgError.new msg
+      end
+      @opts[:left] = @opts.left.split(',').map { |f|
+        File.expand_path f
+      }.join(',')
+      @opts[:right] = @opts.right.split(',').map { |f|
+        File.expand_path f
+      }.join(',')
+      @opts.left.split(",").zip(@opts.right.split(",")).each do |left,right|
+        if !File.exist?(left)
+          raise TransrateIOError.new "Left read fastq file does not exist: #{left}"
+        end
+        if !File.exist?(right)
+          raise TransrateIOError.new "Right read fastq file does not exist: #{right}"
+        end
+      end
+    end
+  end
+
+  def check_dependencies
+    # Check dependencies if they are relevant to the command issued,
+    # and handle any commands to install missing ones
+    gem_dir = Gem.loaded_specs['transrate'].full_gem_path
+    gem_deps = File.join(gem_dir, 'deps', 'deps.yaml')
+    blast_dep = File.join(gem_dir, 'deps', 'blast.yaml')
+
+    deps, read_deps, ref_deps = nil
+    unless @opts.install_deps.nil?
+      check_install_command
+
+      deps = @opts.install_deps == 'all'
+      read_deps = @opts.install_deps == 'read'
+      ref_deps = @opts.install_deps == 'ref'
+    end
+
+    if deps || read_deps || ref_deps
+      # user has requested dependency installation
+      puts "Checking dependencies"
+      install_missing_dependencies(deps, read_deps, ref_deps,
+                                   gem_deps, blast_dep)
+    else
+      # no dependency installation requested, but check dependencies
+      # for the commands provided are installed
+      missing = []
+      missing = Bindeps.missing gem_deps if @opts.left
+      blast_missing = []
+      blast_missing = Bindeps.missing blast_dep if @opts.reference
+      print_missing_dependencies(missing, blast_missing)
+    end
+
+  end # check_dependencies
+
+  def allowed_deps
+    binkey = 'TRANSRATE_PACKAGED_BINARY'
+    if ENV.has_key?(binkey) && ENV[binkey] == 'true'
+      return ['read']
+    else
+      return ['read', 'ref', 'all']
+    end
+  end
+
+  def check_install_command
+    unless allowed_deps.include? @opts.install_deps
+      msg = "install-deps #{@opts.install_deps} is not valid. " +
+            "You must specify one of: #{allowed_deps.join(', ')}."
+      raise TransrateError.new(msg)
+    end
+  end
+
+  def install_missing_dependencies(deps, read_deps, ref_deps,
+                                   gem_deps, blast_dep)
+    missing = []
+    if deps || read_deps
+      Bindeps.require gem_deps
+      missing += Bindeps.missing gem_deps
+    end
+
+    if deps || ref_deps
+      Bindeps.require blast_dep
+      missing += Bindeps.missing blast_dep
+    end
+
+    unless missing.empty?
+      list = missing.collect {|i| "#{i.name}:#{i.version}"}.join("\n - ")
+      msg = "Failed to install: \n - #{list}"
+      raise TransrateError.new msg
+    end
+
+    puts "All dependencies installed"
+    exit
+  end # install_missing_dependencies
+
+  def print_missing_dependencies(missing, blast_missing)
+    if missing.length + blast_missing.length > 0
+      puts "Dependencies are missing:"
+
+      missing.each do |dep|
+        puts "  - #{dep.name} (#{dep.version})"
+      end
+
+      blast_missing.each do |dep|
+        puts "  - #{dep.name} (#{dep.version})"
+      end
+
+      puts "To install all missing dependencies, run:"
+      puts "  transrate --install-deps all"
+      puts "If you only want the read-metrics dependencies:"
+      puts "  transrate --install-deps read"
+      puts "Or if you only want the reference-metrics dependencies: "
+      puts "  transrate --install-deps ref"
+
+      exit 1
+    end
+  end
+
+  def pretty_print_hash(hash, width, round=2)
+    hash.map do |k, v|
+      # show as float if there are any decimal places
+      if v.to_f.round(round).to_s.split('.').last.to_i > 0
+        v = v.to_f.round(round)
+      end
+      if v.is_a? Float
+        v = v.round(round)
+      end
+      pad = (width - (k.to_s.length + v.to_s.length))
+      pad = [pad, 0].max
+      logger.info "#{k.to_s.split('_').join(' ')}" +
+      "#{" " * pad}" +
+      "#{v}"
+    end
+  end
+
+  def concatenate_assemblies assemblies
+    merged_file = @opts.merge_assemblies
+    merged = {}
+    assemblies.each do |file|
+      Bio::FastaFormat.open(file).each do |entry|
+        contig_name = "#{File.basename(file,File.extname(file))}:"
+        contig_name << "#{entry.entry_id}"
+        merged[contig_name] = entry.seq
+      end
+    end
+    logger.info "Merging assemblies into one file...'#{merged_file}'"
+    File.open(merged_file, "wb") do |out|
+      merged.each do |name, seq|
+        out.write ">#{name}\n"
+        out.write "#{seq}\n"
+      end
+    end
+    merged_file
+  end
+
+  def analyse_assembly(assembly, r, result_path)
+    logger.info "Loading assembly: #{assembly}"
+    a = Assembly.new assembly
+
+    logger.info "Analysing assembly: #{assembly}"
+    logger.info "Results will be saved in #{File.expand_path result_path}"
+
+    contig_results = {}
+    read_results = {}
+    comparative_results = {}
+    score, optimal, cutoff = ["NA", "NA", "NA"]
+
+    FileUtils.mkdir_p result_path
+    Dir.chdir result_path do
+      transrater = Transrater.new(a, r, threads: @opts.threads)
+
+      contig_results = contig_metrics transrater
+      read_results = read_metrics transrater
+      comparative_results = comparative_metrics transrater
+      if (@opts.left && @opts.right)
+        score, optimal, cutoff = assembly_score(assembly, transrater)
+      end
+
+      write_contig_csv a
+    end
+
+    contig_results.merge(read_results)
+                  .merge(comparative_results)
+                  .merge({ :assembly => assembly })
+                  .merge({ :score => score })
+                  .merge({ :optimal_score => optimal })
+                  .merge({ :cutoff => cutoff })
+
+  end # analyse_assembly
+
+  def assembly_result_paths assemblies
+    if (assemblies.length == 1)
+      return [File.basename(assemblies.first, File.extname(assemblies.first))]
+    end
+    paths = assemblies.map { |a| File.expand_path a }
+    common_prefix = common_directory_path paths
+    paths.map! { |p| p.to_path.gsub(common_prefix, "").gsub(/^\//, "") }
+    paths.map { |p| assembly_result_path p }
+  end
+
+  def assembly_result_path assembly
+    path = assembly.gsub(File::SEPARATOR, '_')
+    File.basename(path, File.extname(path))
+  end
+
+  def common_directory_path(dirs)
+    separator = File::SEPARATOR
+    dir1, dir2 = dirs.minmax.map{ |dir| dir.split(separator) }
+    dir1.zip(dir2).take_while{ |dn1,dn2| dn1==dn2 }.map(&:first).join(separator)
+  end
+
+  def write_assembly_csv results
+    outfile = "assemblies.csv"
+    logger.info "Writing analysis results to #{outfile}"
+
+    CSV.open(outfile, 'wb') do |file|
+
+      keys = results[0].keys
+      keys.delete(:assembly)
+      head = [:assembly] + keys
+      file << head
+      results.each do |row|
+        file << head.map { |x|
+          entry = row[x]
+          entry.is_a?(Float) ? entry.round(5) : entry
+        }
+      end
+
+    end
+
+  end # write_assembly_csv
+
+  def contig_metrics transrater
+    logger.info "Calculating contig metrics..."
+    t0 = Time.now
+    contig_results = transrater.assembly_metrics.basic_stats
+    contig_results.merge! transrater.assembly.contig_metrics.results
+
+    if contig_results
+      logger.info "Contig metrics:"
+      logger.info "-" *  @report_width
+      pretty_print_hash(contig_results, @report_width)
+    end
+
+    logger.info "Contig metrics done in #{(Time.now - t0).round} seconds"
+    contig_results
+  end
+
+  def read_metrics transrater
+    read_results = {}
+    if (@opts.left && @opts.right)
+      logger.info "Calculating read diagnostics..."
+      t0 = Time.now
+      read_results = transrater.read_metrics(@opts.left, @opts.right).read_stats
+
+      if read_results
+        logger.info "Read mapping metrics:"
+        logger.info "-" *  @report_width
+        pretty_print_hash(read_results, @report_width)
+      end
+
+      logger.info "Read metrics done in #{(Time.now - t0).round} seconds"
+    else
+      logger.info "No reads provided, skipping read diagnostics"
+    end
+    read_results
+  end
+
+  def comparative_metrics transrater
+    comparative_results = {}
+    if @opts.reference
+      logger.info "Calculating comparative metrics..."
+      t0 = Time.now
+      comparative_results = transrater.comparative_metrics.comp_stats
+
+      if comparative_results
+        logger.info "Comparative metrics:"
+        logger.info "-" *  @report_width
+        pretty_print_hash(comparative_results, @report_width)
+      end
+
+      logger.info "Comparative metrics done in #{(Time.now - t0).round} seconds"
+
+      logger.info "-" * @report_width
+    else
+      logger.info "No reference provided, skipping comparative diagnostics"
+    end
+    comparative_results
+  end
+
+  def assembly_score(assembly, transrater)
+    score = transrater.assembly_score
+
+    prefix = File.basename(assembly)
+    optimal, cutoff = transrater.assembly_optimal_score prefix
+    unless score.nil?
+      pretty_print_hash({:TRANSRATE_ASSEMBLY_SCORE => score},
+                        @report_width, 4)
+      logger.info "-" * @report_width
+      pretty_print_hash({:TRANSRATE_OPTIMAL_SCORE => optimal},
+                        @report_width, 4)
+      pretty_print_hash({:TRANSRATE_OPTIMAL_CUTOFF => cutoff},
+                        @report_width, 4)
+      pretty_print_hash(transrater.good_contigs, @report_width)
+    end
+    [score, optimal, cutoff]
+  end
+
+  def write_contig_csv a
+    # write contig metrics to file for each contig
+    outfile = File.expand_path "contigs.csv"
+    logger.info "Writing contig metrics for each contig to #{outfile}"
+    # have option to turn off, default on
+    first=true
+    CSV.open(outfile, 'wb') do |csv|
+      a.each do |name, contig|
+        basic_metrics = {:contig_name => name}.merge(contig.basic_metrics)
+        if @opts.reference
+          comp_metrics = contig.comparative_metrics
+          basic_metrics.merge!(comp_metrics)
+        end
+        if @opts.left and @opts.right
+          read_metrics = contig.read_metrics
+          basic_metrics.merge!(read_metrics)
+        end
+        if first
+          csv << basic_metrics.keys
+          first = false
+        end
+        csv << basic_metrics.values.map{ |x| x.is_a?(Float) ? x.round(6) : x }
+      end
+    end
+  end
+
+end # Cmdline
+
+end # Transrate
diff --git a/lib/transrate/comparative_metrics.rb b/lib/transrate/comparative_metrics.rb
new file mode 100644
index 0000000..babc064
--- /dev/null
+++ b/lib/transrate/comparative_metrics.rb
@@ -0,0 +1,160 @@
+require 'set'
+require 'crb-blast'
+
+module Transrate
+
+  class ComparativeMetrics
+
+    attr_reader :rbh_per_contig
+    attr_reader :rbh_per_reference
+    attr_reader :reciprocal_hits
+    attr_reader :has_run
+    attr_reader :reference_coverage
+    attr_reader :comp_stats
+
+    def initialize assembly, reference, threads
+      @assembly = assembly
+      @reference = reference
+      @threads = threads
+      @comp_stats = Hash.new
+    end
+
+    def run
+      crbblast = run_crb_blast
+      calculate_reference_coverage crbblast
+      @has_run = true
+    end
+
+    def calculate_reference_coverage crbblast
+      # The reciprocals hash in crb blast has contig names as the key.
+      # In order to look up by the reference name we need to reverse this.
+      # Scan through the reciprocals and get this Hit objects and add them to
+      #   the @reference object for each reference sequence
+      get_reference_hits crbblast
+      per_query_contig_reference_coverage
+      per_target_contig_reference_coverage crbblast
+    end
+
+    def get_reference_hits crbblast
+      @reference.each do |name, contig|
+        contig.hits = []
+      end
+      crbblast.reciprocals.each do |query_id, list|
+        list.each do |hit|
+          unless @reference.assembly.key? hit.target
+            raise TransrateError.new "#{hit.target} not in reference"
+          end
+          @reference[hit.target].hits << hit
+        end
+      end
+      @comp_stats[:CRBB_hits] = crbblast.size
+      @comp_stats[:n_contigs_with_CRBB] = crbblast.reciprocals.size
+      @comp_stats[:p_contigs_with_CRBB] = crbblast.reciprocals.size/@assembly.size.to_f
+    end
+
+    def per_query_contig_reference_coverage
+      # for each query contig in the @assembly find out how much it covers
+      # the reference
+      n_refs_with_recip = 0
+      total_crbb_hits = 0
+      @reference.each do |ref_contig_name, ref_contig|
+        ref_contig.hits.each do |hit| # a Hit from query to target
+          query_contig_name = hit.query
+          unless @assembly.assembly.key? query_contig_name
+            raise TransrateError.new "#{query_contig_name} not in assembly"
+          end
+          @assembly[query_contig_name].has_crb = true
+          @assembly[query_contig_name].hits << hit
+          raise TransrateError.new "query should not be protein" if hit.qprot
+          if hit.tprot
+            coverage = 3*hit.alnlen+2 - 3*hit.mismatches - 3*hit.gaps
+            coverage /= 3.0*hit.tlen
+          else
+            coverage = hit.alnlen - hit.mismatches - hit.gaps
+            coverage /= hit.tlen.to_f
+          end
+          @assembly[query_contig_name].reference_coverage = coverage
+        end
+
+        if ref_contig.hits.size > 0 # this reference has a crbblast hit
+          n_refs_with_recip += 1
+        end
+        total_crbb_hits += ref_contig.hits.size
+      end
+      @comp_stats[:rbh_per_reference] = total_crbb_hits / @reference.size.to_f
+      @comp_stats[:n_refs_with_CRBB] = n_refs_with_recip
+      @comp_stats[:p_refs_with_CRBB] = n_refs_with_recip / @reference.size.to_f
+    end
+
+    def per_target_contig_reference_coverage crbblast
+      # each target sequence in the reference can have multiple query contigs
+      # hit it. to calculate the reference coverage you can't just add up the
+      # alignment lengths. you have to make sure that overlaps are taken into
+      # account
+      coverage_thresholds = [0.25, 0.5, 0.75, 0.85, 0.95]
+      coverage_totals = [0, 0, 0, 0, 0]
+      prot = crbblast.target_is_prot
+      total_coverage = 0
+      total_length = 0
+      @reference.each do |ref_contig_name, ref_contig|
+        if prot
+          covered = Array.new(ref_contig.length*3, false)
+        else
+          covered = Array.new(ref_contig.length, false)
+        end
+        ref_contig.hits.each_with_index do |hit, i| # a Hit from query to target
+          if prot
+            if hit.qstart % 3 == 0
+              tstart = 3*hit.tstart-4
+              tend = 3*hit.tend
+            elsif hit.qstart % 3 == 1
+              tstart = 3*hit.tstart-2
+              tend = 3*hit.tend
+            elsif hit.qstart % 3 == 2
+              tstart = 3*hit.tstart-3
+              tend = 3*hit.tend-1
+            end
+            if hit.qlen % 3 == 1
+              tend += 1
+            elsif hit.qlen % 3 == 2
+              tend += 2
+            end
+          else
+            tstart = hit.tstart
+            tend = hit.tend
+          end
+          (tstart..tend).each do |b|
+            covered[b-1] = true # blast coords are 1 indexed
+          end
+        end
+        coverage = covered.reduce(0) { |sum, v| v ? sum + 1 : sum }
+        ref_p = coverage / covered.length.to_f
+        ref_contig.reference_coverage = ref_p
+        coverage_thresholds.each_with_index do |n, index|
+          if ref_p >= n
+            coverage_totals[index] += 1
+          end
+        end
+
+        total_coverage += coverage
+        total_length += covered.length
+      end
+
+      # calculate proportion of ref sequences with coveragre over thresholds
+      coverage_thresholds.each_with_index do |p, i|
+        @comp_stats["cov#{(100*p).to_i}".to_sym] = coverage_totals[i]
+        @comp_stats["p_cov#{(100*p).to_i}".to_sym] =
+                                        coverage_totals[i]/@reference.size.to_f
+      end
+      @comp_stats[:reference_coverage] = total_coverage / total_length.to_f
+    end
+
+    def run_crb_blast
+      crbblast = CRB_Blast::CRB_Blast.new @assembly.file, @reference.file
+      crbblast.run(1e-5, @threads, true)
+      crbblast
+    end
+
+  end # ComparativeMetrics
+
+end # Transrate
diff --git a/lib/transrate/contig.rb b/lib/transrate/contig.rb
new file mode 100644
index 0000000..8dd8fac
--- /dev/null
+++ b/lib/transrate/contig.rb
@@ -0,0 +1,266 @@
+require 'forwardable'
+
+module Transrate
+
+  # A contig in a transcriptome assembly.
+  class Contig
+
+    include Enumerable
+    extend Forwardable
+    def_delegators :@seq, :size, :length
+    attr_accessor :seq, :name
+    # read-based metrics
+    attr_accessor :eff_length, :eff_count, :tpm
+    attr_accessor :coverage, :uncovered_bases, :p_uncovered_bases
+    attr_accessor :p_seq_true
+    attr_accessor :low_uniqueness_bases, :in_bridges
+    attr_accessor :p_good, :p_not_segmented, :good, :classification
+    # reference-based metrics
+    attr_accessor :has_crb, :reference_coverage
+    attr_accessor :hits
+
+    def initialize(seq, name: nil)
+      # fix null bytes in the nucleotide sequence
+      seq.seq.gsub!("\0", "")
+      # trim trailing semicolons (because BLAST strips them)
+      if seq.respond_to?(:entry_id)
+        seq.entry_id.gsub!(/;$/, '')
+      end
+      @seq = seq
+      @seq.data = nil # no need to store raw fasta string
+      @name = seq.respond_to?(:entry_id) ? seq.entry_id : name
+      @hits = []
+      @reference_coverage = 0
+      @has_crb = false
+      @in_bridges = 0
+      @p_good = 0
+      @p_seq_true = 0
+      @uncovered_bases = length
+      @p_uncovered_bases = 1
+      @p_not_segmented = 1
+      @score = -1
+      @good = 0
+      @coverage = 0
+      @classification = :unknown
+    end
+
+    def each &block
+      @seq.seq.each_char &block
+    end
+
+    # Get all metrics available for this contig
+    def basic_metrics
+      basic = {
+        :length => length,
+        :prop_gc => prop_gc,
+        :gc_skew => gc_skew,
+        :at_skew => at_skew,
+        :cpg_count => cpg_count,
+        :cpg_ratio => cpg_ratio,
+        :orf_length => orf_length,
+        :linguistic_complexity_6 => linguistic_complexity(6),
+      }
+    end
+
+    def read_metrics
+      {
+        :in_bridges => in_bridges,
+        :p_good => p_good,
+        :p_bases_covered => p_bases_covered,
+        :p_seq_true => p_seq_true,
+        :score => score,
+        :p_not_segmented => p_not_segmented,
+        :eff_length => eff_length,
+        :eff_count => eff_count,
+        :tpm => tpm,
+        :coverage => coverage
+      }
+    end
+
+    def comparative_metrics
+      reference = @has_crb ? {
+        :has_crb => has_crb,
+        :reference_coverage => reference_coverage,
+        :hits => hits.map{ |h| h.target }.join(";")
+      } : {
+        :has_crb => false,
+        :reference_coverage => "NA",
+        :hits => "NA"
+      }
+    end
+
+    # Base composition of the contig
+    #
+    # If called and the instance variable @base_composition is nil
+    # then call the c method to count the bases and dibases in the sequence
+    # then get the info out of the c array and store it in the hash
+    # then if it is called again just return the hash as before
+    def base_composition
+      if @base_composition
+        return @base_composition
+      end
+      # else run the C method
+      composition(@seq.seq)
+      alphabet = ['a', 'c', 'g', 't', 'n']
+      @base_composition = {}
+      @dibase_composition = {}
+      bases = []
+      dibases = []
+      alphabet.each do |c|
+        bases << "#{c}".to_sym
+      end
+      alphabet.each do |c|
+        alphabet.each do |d|
+          dibases << "#{c}#{d}".to_sym
+        end
+      end
+      bases.each_with_index do |a,i|
+        @base_composition[a] = base_count(i)
+      end
+      dibases.each_with_index do |a,i|
+        @dibase_composition[a] = dibase_count(i)
+      end
+      return @base_composition
+    end
+
+    # Dibase composition of the contig
+    def dibase_composition
+      if @dibase_composition
+        return @dibase_composition
+      end
+      base_composition
+      @dibase_composition
+    end
+
+    # Number of bases that are C
+    def bases_c
+      base_composition[:c]
+    end
+
+    # Proportion of bases that are C
+    def prop_c
+      bases_c / length.to_f
+    end
+
+    # Number of bases that are G
+    def bases_g
+      base_composition[:g]
+    end
+
+    # Proportion of bases that are G
+    def prop_g
+      bases_g / length.to_f
+    end
+
+    # Number of bases that are A
+    def bases_a
+      base_composition[:a]
+    end
+
+    # Proportion of bases that are A
+    def prop_a
+      bases_a / length.to_f
+    end
+
+    # Number of bases that are T
+    def bases_t
+      base_composition[:t]
+    end
+
+    # Proportion of bases that are T
+    def prop_t
+      bases_t / length.to_f
+    end
+
+    def bases_n
+      base_composition[:n]
+    end
+
+    def prop_n
+      bases_n / length.to_f
+    end
+
+    # GC
+    def bases_gc
+      bases_g + bases_c
+    end
+
+    def prop_gc
+      prop_g + prop_c
+    end
+
+    # GC skew
+    def gc_skew
+      (bases_g - bases_c) / (bases_g + bases_c).to_f
+    end
+
+    # AT skew
+    def at_skew
+      (bases_a - bases_t) / (bases_a + bases_t).to_f
+    end
+
+    # CpG count
+    def cpg_count
+      dibase_composition[:cg] + dibase_composition[:gc]
+    end
+
+    # observed-to-expected CpG (C-phosphate-G) ratio
+    def cpg_ratio
+      r = dibase_composition[:cg] + dibase_composition[:gc]
+      r /= (bases_c * bases_g).to_f
+      r *= (length - bases_n)
+      return r
+    end
+
+    # Find the longest orf in the contig
+    def orf_length
+      return @orf_length if @orf_length
+      @orf_length = longest_orf(@seq.seq) # call to C
+      return @orf_length
+    end
+
+    def linguistic_complexity k
+      return kmer_count(k, @seq.seq)/(4**k).to_f # call to C
+    end
+
+    def p_bases_covered
+      1 - p_uncovered_bases
+    end
+
+    def uncovered_bases= n
+      @uncovered_bases = n
+      @p_uncovered_bases = n / length.to_f
+    end
+
+    # Contig score (product of all score components)
+    def score
+      return @score if @score != -1
+      prod =
+        [p_bases_covered, 0.01].max.to_f * # proportion of bases covered
+        [p_not_segmented, 0.01].max.to_f * # prob contig has 0 changepoints
+        [p_good, 0.01].max.to_f * # proportion of reads that mapped good
+        [p_seq_true, 0.01].max.to_f # scaled 1 - mean per-base edit distance
+      @score = [prod, 0.01].max
+    end
+
+    # Classify the contig into one of the following classes:
+    # - good (score >= 0.5)
+    # - fragmented (in_bridges > 0) and no other problems
+    # - chimeric (p_not_segmented < 0.25) and no other problems
+    # - bad (score < 0.5 and not in any other category)
+    def classify cutoff
+      if score >= cutoff
+        @classification = :good
+      else
+        @classification = :bad
+      end
+      return @classification
+    end
+
+    def to_fasta
+      @seq.seq.to_fasta(@name)
+    end
+
+  end
+
+end
diff --git a/lib/transrate/contig_metrics.rb b/lib/transrate/contig_metrics.rb
new file mode 100644
index 0000000..1877be8
--- /dev/null
+++ b/lib/transrate/contig_metrics.rb
@@ -0,0 +1,75 @@
+require 'set'
+
+module Transrate
+
+  class ContigMetrics
+
+    attr_reader :gc_prop, :gc_skew, :at_skew, :cpg_ratio
+    attr_reader :linguistic_complexity, :wootton_federhen, :shannon, :zlib_comp
+    attr_reader :bases_n, :proportion_n
+    attr_reader :has_run
+
+    def initialize assembly
+      @assembly = assembly
+      self.initial_values
+      @has_run = false
+    end
+
+    def initial_values
+      @gc_prop = -1
+      @gc_skew = -1
+      @at_skew = -1
+      @cpg = -1
+      @bases_n = -1
+      @proportion_n = -1
+      @linguistic_complexity = -1
+    end
+
+    def run
+      calculate
+      @has_run = true
+    end
+
+    def calculate
+      total = 0
+      a = 0
+      c = 0
+      g = 0
+      t = 0
+      @bases_n = 0
+      cpg_count = 0
+      lc = 0
+      k = 6
+      @assembly.assembly.each_value do |contig|
+        total += contig.length
+        a += contig.bases_a
+        c += contig.bases_c
+        g += contig.bases_g
+        t += contig.bases_t
+        @bases_n += contig.bases_n
+        cpg_count += contig.cpg_count
+        lc += contig.linguistic_complexity k
+      end
+      @gc_prop = (g + c) / (a + c + g + t).to_f
+      @gc_skew = (g - c) / (g + c).to_f
+      @at_skew = (a - t) / (a + t).to_f
+      @cpg_ratio = cpg_count.to_f / (c * g) * total
+      @linguistic_complexity = lc / @assembly.assembly.size.to_f
+      @proportion_n = @bases_n / total.to_f
+    end
+
+    def results
+      return if !@has_run
+      return {'gc' => @gc_prop,
+              'gc_skew' => @gc_skew,
+              'at_skew' => @at_skew,
+              'cpg_ratio' => @cpg_ratio,
+              'bases_n' => @bases_n,
+              'proportion_n' => @proportion_n,
+              'linguistic_complexity' => @linguistic_complexity
+             }
+    end
+
+  end
+
+end
diff --git a/lib/transrate/read_metrics.rb b/lib/transrate/read_metrics.rb
new file mode 100644
index 0000000..5e8d212
--- /dev/null
+++ b/lib/transrate/read_metrics.rb
@@ -0,0 +1,237 @@
+module Transrate
+
+  class ReadMetricsError < TransrateError; end
+
+  class ReadMetrics
+
+    attr_reader :fragments, :fragments_mapping, :p_good_mapping
+    attr_reader :good, :bad
+    attr_reader :supported_bridges
+    attr_reader :has_run
+    attr_reader :read_length
+
+    def initialize assembly
+      @assembly = assembly # Transrate::Assembly
+      @mapper = Snap.new
+      @salmon = Salmon.new
+      self.initial_values
+
+      load_executables
+      @read_length = 100
+    end
+
+    def load_executables
+      @bam_reader = get_bin_path 'bam-read'
+    end
+
+    def get_bin_path bin
+      which_bin = Cmd.new("which #{bin}")
+      which_bin.run
+      if !which_bin.status.success?
+        raise TransrateIOError.new("ReadMetrics: could not find #{bin} in path")
+      end
+      which_bin.stdout.split("\n").first
+    end
+
+    def run left, right, threads:8
+      # check all read files exist
+      [left, right].each do |readfile|
+        raise TransrateIOError.new "Read file is nil" if readfile.nil?
+        readfile.split(",").each do |file|
+          unless File.exist? file
+            raise TransrateIOError.new "ReadMetrics: read file does not " +
+                                       "exist: #{file}"
+          end
+        end
+      end
+
+      # estimate max read length
+      @read_length = get_read_length(left, right)
+
+      # map reads
+      @mapper.build_index(@assembly.file, threads)
+      bamfile = @mapper.map_reads(@assembly.file, left, right,
+                                  threads: threads)
+      @fragments = @mapper.read_count
+
+      assigned_bam = "postSample.bam"
+      final_bam = "#{File.basename(bamfile, '.bam')}.assigned.bam"
+
+      # check for latest files first and create what is needed
+      if !File.exist?(final_bam)
+        if !File.exist?(assigned_bam)
+          assigned_bam = assign_and_quantify(bamfile, threads)
+        end
+        if File.exist?(assigned_bam)
+          File.rename(assigned_bam, final_bam)
+        else
+          logger.error "Couldn't find #{assigned_bam} to rename"
+          raise ReadMetricsError
+        end
+      end
+      # analyse the final mappings
+      analyse_read_mappings final_bam
+
+      @has_run = true
+    end
+
+    def read_stats
+      {
+        :fragments => @fragments,
+        :fragments_mapped => @fragments_mapped,
+        :p_fragments_mapped => @p_fragments_mapped,
+        :good_mappings => @good,
+        :p_good_mapping => @p_good_mapping,
+        :bad_mappings => @bad,
+        :potential_bridges => @potential_bridges,
+        :bases_uncovered => @bases_uncovered,
+        :p_bases_uncovered => @p_bases_uncovered,
+        :contigs_uncovbase => @contigs_uncovbase,
+        :p_contigs_uncovbase => @p_contigs_uncovbase,
+        :contigs_uncovered => @contigs_uncovered,
+        :p_contigs_uncovered => @p_contigs_uncovered,
+        :contigs_lowcovered => @contigs_lowcovered,
+        :p_contigs_lowcovered => @p_contigs_lowcovered,
+        :contigs_segmented => @contigs_segmented,
+        :p_contigs_segmented => @p_contigs_segmented
+      }
+    end
+
+    def get_read_length(left, right)
+      count=0
+      file = File.open(left.split(",").first)
+      name = file.readline.chomp
+      seq = file.readline.chomp
+      na = file.readline.chomp
+      qual = file.readline.chomp
+      read_length = 0
+      while name and count < 5000 # get max read length from first 5000 reads
+        read_length = [read_length, seq.length].max
+        name = file.readline.chomp rescue nil
+        seq = file.readline.chomp rescue nil
+        na = file.readline.chomp rescue nil
+        qual = file.readline.chomp rescue nil
+        count+=1
+      end
+      read_length
+    end
+
+    def assign_and_quantify(bamfile, threads)
+      @salmon.run(@assembly, bamfile, threads)
+    end
+
+    def analyse_expression salmon_output
+      salmon_output.each_pair do |name, expr|
+        contig_name = Bio::FastaDefline.new(name.to_s).entry_id
+        contig_name.gsub!(/;$/, '') # trim trailing semicolon
+        contig = @assembly[contig_name]
+        if expr[:eff_len]==0
+          coverage = 0
+        else
+          coverage = expr[:eff_count] * @read_length / expr[:eff_len]
+        end
+        @contigs_uncovered += 1 if coverage < 1
+        @contigs_lowcovered += 1 if coverage < 10
+        contig.coverage = coverage.round(2)
+        contig.eff_length = expr[:eff_len]
+        contig.eff_count = expr[:eff_count]
+        contig.tpm = expr[:tpm]
+      end
+    end
+
+    def analyse_read_mappings bamfile
+      if File.exist?(bamfile) && File.size(bamfile) > 0
+        csv_output = "#{File.basename(@assembly.file)}_bam_info.csv"
+        csv_output = File.expand_path(csv_output)
+
+        analyse_bam bamfile, csv_output
+        # open output csv file
+        @potential_bridges = 0
+
+        CSV.foreach(csv_output, :headers => true,
+                                :header_converters => :symbol,
+                                :converters => :all) do |row|
+          populate_contig_data row
+        end
+        @bad = @fragments_mapped - @good
+      else
+        raise TransrateError.new "couldn't find bamfile: #{bamfile}"
+      end
+      salmon_results = "#{File.basename @assembly.file}_quant.sf"
+
+      if File.exist?(salmon_results)
+        analyse_expression(@salmon.load_expression(salmon_results))
+      else
+        abort "Can't find #{salmon_results}"
+      end
+      update_proportions
+    end
+
+    def update_proportions
+      nbases = @assembly.n_bases.to_f
+      ncontigs = @assembly.size.to_f
+
+      @p_bases_uncovered = @bases_uncovered / nbases
+      @p_contigs_uncovbase = @contigs_uncovbase / ncontigs
+      @p_contigs_uncovered = @contigs_uncovered / ncontigs
+      @p_contigs_lowcovered = @contigs_lowcovered / ncontigs
+      @p_contigs_segmented = @contigs_segmented / ncontigs
+
+      @p_good_mapping = @good.to_f / @fragments.to_f
+      @p_fragments_mapped = @fragments_mapped / @fragments.to_f
+    end
+
+    def analyse_bam bamfile, csv_output
+      if !File.exist?(csv_output)
+        cmd = "#{@bam_reader} #{bamfile} #{csv_output} 0.7"
+        reader = Cmd.new cmd
+        reader.run
+        if !reader.status.success?
+          msg = "Couldn't get information from bam file: #{bamfile}\n"
+          msg << "#{reader.stdout}\n#{reader.stderr}"
+          raise TransrateError.new msg
+        end
+      end
+    end
+
+    def populate_contig_data row
+      name = Bio::FastaDefline.new(row[:name].to_s).entry_id
+      name.gsub!(/;$/, '') # trim trailing semicolon
+      contig = @assembly[name]
+      contig.p_seq_true = row[:p_seq_true]
+      contig.uncovered_bases = row[:bases_uncovered]
+      @bases_uncovered += contig.uncovered_bases
+      if row[:fragments_mapped] and row[:fragments_mapped] > 1
+        contig.p_good = row[:good]/row[:fragments_mapped].to_f
+      end
+      contig.p_not_segmented = row[:p_not_segmented]
+      if contig.p_not_segmented < 0.5
+        @contigs_segmented += 1
+      end
+      contig.in_bridges = row[:bridges]
+      if row[:bridges] > 1
+        @potential_bridges += 1
+      end
+      @fragments_mapped += row[:fragments_mapped]
+      contig.good = row[:good]
+      @good += row[:good]
+      if row[:bases_uncovered] > 0
+        @contigs_uncovbase += 1
+      end
+    end
+
+    def initial_values
+      @fragments = 0
+      @fragments_mapped = 0
+      @good = 0
+      @bad = 0
+      @bases_uncovered = 0
+      @contigs_uncovbase = 0 # any base cov < 1
+      @contigs_uncovered = 0 # mean cov < 1
+      @contigs_lowcovered = 0 # mean cov < 10
+      @contigs_segmented = 0 # p_not_segmented < 0.5
+    end
+
+  end # ReadMetrics
+
+end # Transrate
diff --git a/lib/transrate/salmon.rb b/lib/transrate/salmon.rb
new file mode 100644
index 0000000..655582a
--- /dev/null
+++ b/lib/transrate/salmon.rb
@@ -0,0 +1,79 @@
+module Transrate
+
+  class SalmonError < TransrateError
+  end
+
+  class Salmon
+
+    def initialize
+      which = Cmd.new('which salmon')
+      which.run
+      if !which.status.success?
+        raise SalmonError.new("could not find salmon in the path")
+      end
+      @salmon = which.stdout.split("\n").first
+    end
+
+    def run assembly, bamfile, threads=8
+      assembly = assembly.file if assembly.is_a? Assembly
+      output = "quant.sf"
+      sampled_bam = "postSample.bam"
+      @fin_output = "#{File.basename assembly}_#{output}"
+      unless File.exist? @fin_output
+        salmon = Cmd.new build_command(assembly, bamfile, threads)
+        salmon.run
+        unless salmon.status.success?
+          logger.error salmon.stderr
+          raise SalmonError.new("Salmon failed")
+        end
+        unless File.exist?(sampled_bam)
+          logger.error salmon.stderr
+          raise SalmonError.new("#{sampled_bam} not created")
+        end
+        File.rename(output, @fin_output)
+      end
+      return sampled_bam
+    end
+
+    def build_command assembly, bamfile, threads=4
+      cmd = "#{@salmon} quant"
+      cmd << " --libType IU"
+      cmd << " --alignments #{bamfile}"
+      cmd << " --targets #{assembly}"
+      cmd << " --threads #{threads}"
+      cmd << " --sampleOut"
+      cmd << " --sampleUnaligned" # thanks Rob!
+      cmd << " --output ."
+      cmd << " --useVBOpt"
+      cmd << " --useErrorModel"
+      cmd
+    end
+
+    def load_expression file
+      expression = {}
+      File.open(file).each do |line|
+        if line !~ /^#/
+          line = line.chomp.split("\t")
+          unless line.length == 4
+            raise SalmonError.new("Salmon output file should have 4 columns " +
+              "but it had #{line.length}\n" +
+              "Please check you are using the correct version of Salmon")
+          end
+          target = line[0]
+          effective_length = line[1]
+          effective_count = line[3]
+          tpm = line[2]
+          expression[target] = {
+            :eff_len => effective_length.to_i,
+            :eff_count => effective_count.to_f,
+            :tpm => tpm.to_f
+          }
+        end
+      end
+      expression
+    end
+
+
+  end
+
+end
diff --git a/lib/transrate/score_optimiser.rb b/lib/transrate/score_optimiser.rb
new file mode 100644
index 0000000..a241bdd
--- /dev/null
+++ b/lib/transrate/score_optimiser.rb
@@ -0,0 +1,71 @@
+module Transrate
+
+  # This class is used to calculate the basic transrate score.
+  # It is also used to automatically optimise the score by
+  # calculating a cutoff that maximises the number of reads that map
+  # while also minimising the number of low scoring contigs.
+  class ScoreOptimiser
+
+    require 'csv'
+
+    def initialize assembly, read_metrics
+      @assembly = assembly
+      @fragments = read_metrics.fragments
+      read_stats = read_metrics.read_stats
+      @total = read_stats[:fragments]
+      @good = read_stats[:good_mappings]
+    end
+
+    def raw_score
+      scores = @assembly.assembly.values.map{ |c| c.score }
+      @contig_score = geomean scores
+      @contig_score * (@good / @total.to_f)
+    end
+
+    def optimal_score(prefix='assembly')
+      return [@optimal, @cutoff] unless @optimal.nil?
+      product = 0
+      good = 0
+      @assembly.assembly.each do |key, contig|
+        product += Math.log(contig.score)
+        good += contig.good
+      end
+      count = @assembly.size
+      cutoffscores = {}
+      contigs_sorted = {}
+      @assembly.assembly.sort_by { |k,v| v.score }.each do |a,b|
+        contigs_sorted[a] = b
+      end
+
+      contigs_sorted.each do |key, contig|
+        product -= Math.log(contig.score)
+        good -= contig.good
+        count -= 1
+        score = Math.exp(product / count) * (good/@fragments.to_f)
+        cutoffscores[contig.score] = score
+      end
+      @optimal = 0
+      @cutoff = 0
+      out = CSV.open("#{prefix}_score_optimisation.csv", 'w')
+      out << %w[cutoff assembly_score]
+      cutoffscores.each do |c, score|
+        out << [c.round(5), score.round(5)]
+        if score > @optimal
+          @optimal = score
+          @cutoff = c
+        end
+      end
+      return [@optimal, @cutoff]
+    end
+
+    # Calculate the geometric mean of an array of numbers
+    def geomean x
+      sum = 0.0
+      x.each{ |v| sum += Math.log(v) }
+      sum /= x.size
+      Math.exp sum
+    end
+
+  end # ScoreOptimiser
+
+end
diff --git a/lib/transrate/snap.rb b/lib/transrate/snap.rb
new file mode 100644
index 0000000..5ff5080
--- /dev/null
+++ b/lib/transrate/snap.rb
@@ -0,0 +1,161 @@
+module Transrate
+
+  class SnapError < TransrateError
+  end
+
+  class Snap
+
+    require 'fix-trinity-output'
+    require 'bio'
+
+    attr_reader :index_name, :bam, :read_count
+
+    def initialize
+      which_snap = Cmd.new('which snap-aligner')
+      which_snap.run
+      if !which_snap.status.success?
+        raise SnapError.new("could not find snap in the path")
+      end
+      @snap = which_snap.stdout.split("\n").first
+
+      @index_built = false
+      @index_name = ""
+    end
+
+    def build_paired_cmd l, r, threads
+      cmd = "#{@snap} paired #{@index_name}"
+      l.split(",").zip(r.split(",")).each do |left, right|
+        cmd << " #{left} #{right}"
+      end
+      cmd << " -o #{@bam}"
+      cmd << " -s 0 1000" # min and max distance between paired-read starts
+      cmd << " -H 300000" # max seed hits to consider in paired mode
+      cmd << " -h 2000" # max seed hits to consider when reverting to single
+      cmd << " -d 30" # max edit distance (function of read length?)
+      cmd << " -t #{threads}"
+      cmd << " -b" # bind threads to cores
+      cmd << " -M"  # format cigar string
+      cmd << " -D 5" # extra edit distance to search. needed for -om
+      cmd << " -om 5" # Output multiple alignments. extra edit distance
+      cmd << " -omax 10" # max alignments per pair/read
+      cmd
+    end
+
+    def map_reads(file, left, right, outputname: nil, threads: 8)
+      raise SnapError.new("Index not built") if !@index_built
+
+      lbase = File.basename(left.split(",").first)
+      rbase = File.basename(right.split(",").first)
+      index = File.basename(@index_name)
+      @bam = File.expand_path("#{lbase}.#{rbase}.#{index}.bam")
+      @read_count_file = "#{lbase}-#{rbase}-read_count.txt"
+
+      @fixer = Fixer.new # from the fix-trinity-output gem
+      unless File.exists? @bam
+        snapcmd = build_paired_cmd(left, right, threads)
+        runner = Cmd.new snapcmd
+        runner.run
+        save_readcount runner.stdout
+        save_logs(runner.stdout, runner.stderr)
+        unless runner.status.success?
+          if runner.stderr=~/Unmatched\sread\sIDs/
+            logger.warn runner.stderr
+            logger.warn "Unmatched read IDs. Fixing input files..."
+            remap_reads(left, right, threads)
+          else
+            raise SnapError.new("Snap failed\n#{runner.stderr}")
+          end
+        end
+      else
+        load_readcount left
+      end
+      @bam
+    end
+
+    def save_logs(stdout, stderr)
+      FileUtils.mkdir_p 'logs'
+      File.open('logs/snap.log', 'a') do |f|
+        f.write stdout
+        f.write stderr
+      end
+    end
+
+    def remap_reads(left, right, threads)
+      fixedleft = []
+      fixedright = []
+      i = 0
+      left.split(",").zip(right.split(",")).each do |l, r|
+        prefix = "reads-#{i}"
+        @fixer.run(l, r, "#{prefix}")
+        fixedleft << "#{prefix}-fixed.1.fastq"
+        fixedright << "#{prefix}-fixed.2.fastq"
+        i+=1
+      end
+      left = fixedleft.join(",")
+      right = fixedright.join(",")
+      File.delete(@bam)
+      logger.info "Fixed input files"
+      snapcmd = build_paired_cmd(left, right, threads)
+      runner = Cmd.new snapcmd
+      runner.run
+      save_readcount runner.stdout
+      save_logs(runner.stdout, runner.stderr)
+      unless runner.status.success?
+        raise SnapError.new("Snap failed\n#{runner.stderr}")
+      end
+    end
+
+    def save_readcount stdout
+      stdout.split("\n").each do |line|
+        cols = line.split(/\s+/)
+        if cols.size > 5 and cols[0]=~/[0-9\,]+/
+          @read_count = cols[0].gsub(",", "").to_i / 2
+          File.open("#{@read_count_file}", "wb") do |out|
+            out.write("#{@read_count}\n")
+          end
+        end
+      end
+    end
+
+    def load_readcount reads
+      @read_count = 0
+      if File.exist?("#{@read_count_file}")
+        @read_count = File.open("#{@read_count_file}").readlines.join.to_i
+      else
+        reads.split(",").each do |l|
+          cmd = "wc -l #{l}"
+          count = Cmd.new(cmd)
+          count.run
+          if count.status.success?
+            @read_count += count.stdout.strip.split(/\s+/).first.to_i/4
+            File.open("#{@read_count_file}", "wb") do |out|
+              out.write("#{@read_count}\n")
+            end
+          else
+            logger.warn "couldn't get number of reads from #{l}"
+          end
+        end
+      end
+    end
+
+    def build_index file, threads
+      @index_name = File.basename(file, File.extname(file))
+      unless Dir.exists?(@index_name)
+        cmd = "#{@snap} index #{file} #{@index_name}"
+        cmd << " -s 23"
+        cmd << " -t#{threads}"
+        cmd << " -bSpace" # contig name terminates with space char
+        runner = Cmd.new cmd
+        runner.run
+        if !runner.status.success?
+          err = runner.stderr
+          msg = "Failed to build Snap index\n#{runner.stderr}"
+          raise SnapError.new(msg)
+        end
+      end
+      @index_built = true
+    end
+
+  end # Snap
+
+end # Transrate
diff --git a/lib/transrate/transrater.rb b/lib/transrate/transrater.rb
new file mode 100644
index 0000000..a699616
--- /dev/null
+++ b/lib/transrate/transrater.rb
@@ -0,0 +1,119 @@
+module Transrate
+
+  # A transrater runs all types of metrics on an assembly.
+  #
+  # @!attribute [r] assembly
+  #   @return [Assembly, String] an Assembly or the path to an assembly
+  # @!attribute [r] read_metrics
+  #   @return [Hash] the read metrics if they have been calculated
+  # @!attribute [r] comparative_metrics
+  #   @return [hash] the comparative metrics if they have been calculated
+  class Transrater
+
+    attr_reader :assembly
+    attr_reader :read_metrics
+
+    # A new Transrater
+    #
+    # @param assembly [Assembly, String] the Assembly or path to the FASTA
+    # @param reference [Assembly, String] the reference Assembly or
+    #   path to the FASTA
+    # @param left [String] path to the left reads
+    # @param right [String] path to the right reads
+    def initialize(assembly, reference, threads: 1)
+      if assembly
+        if assembly.is_a?(Assembly)
+          @assembly = assembly
+        else
+          @assembly = Assembly.new(assembly)
+        end
+        @read_metrics = ReadMetrics.new @assembly
+      else
+        raise TransrateError.new("assembly is nil")
+      end
+
+      if reference
+        if reference.is_a?(Assembly)
+          @reference = reference
+        else
+          @reference = Assembly.new(reference)
+        end
+        @comparative_metrics = ComparativeMetrics.new(@assembly,
+                                                      @reference,
+                                                      threads)
+      end
+      @threads = threads
+    end
+
+    # Run all analyses
+    #
+    # @param left [String] path to the left reads
+    # @param right [String] path to the right reads
+    def run left=nil, right=nil
+      assembly_metrics
+      if left && right
+        read_metrics left, right
+      end
+      comparative_metrics
+    end
+
+    # Reduce all metrics for the assembly to a single quality score
+    # by taking the geometric mean of the scores for all contigs
+    # and multiplying it by the proportion of fragments whose most likely
+    # mapping is consistent with the assembly
+    # @return [Integer] the assembly score
+    def assembly_score
+      if !@score_optimiser
+        @score_optimiser = ScoreOptimiser.new(@assembly, @read_metrics)
+      end
+      return @score_optimiser.raw_score
+    end
+
+    def assembly_optimal_score prefix
+      if !@score_optimiser
+        @score_optimiser = ScoreOptimiser.new(@assembly, @read_metrics)
+      end
+      return @score_optimiser.optimal_score prefix
+    end
+
+    def assembly_metrics
+      @assembly.run unless @assembly.has_run
+      @assembly
+    end
+
+    def read_metrics(left, right)
+      unless @read_metrics.has_run
+        @read_metrics.run(left, right, threads: @threads)
+      end
+      if !@score_optimiser
+        @score_optimiser = ScoreOptimiser.new(@assembly, @read_metrics)
+      end
+      score, cutoff = @score_optimiser.optimal_score
+      @assembly.classify_contigs cutoff
+      @read_metrics
+    end
+
+    def good_contigs
+      {
+        :good_contigs => @assembly.good_contigs,
+        :p_good_contigs => @assembly.good_contigs/@assembly.size.to_f
+      }
+    end
+
+    def comparative_metrics
+      @comparative_metrics.run unless @comparative_metrics.has_run
+      @comparative_metrics
+    end
+
+    def all_metrics left, right
+      self.run(left, right)
+      all = @assembly.basic_stats
+      all.merge!(@read_metrics.read_stats)
+      all.merge!(@comparative_metrics.comp_stats)
+      all[:score] = @score
+      all
+    end
+
+  end # Transrater
+
+end # Transrate
diff --git a/lib/transrate/version.rb b/lib/transrate/version.rb
new file mode 100644
index 0000000..2e8efac
--- /dev/null
+++ b/lib/transrate/version.rb
@@ -0,0 +1,19 @@
+# encoding: utf-8
+
+module Transrate
+
+  # Defines the version of this codebase.
+  #
+  # This module is used in help messages and in generating
+  # the Gem. Versions must be incremented in accordance with
+  # Semantic Versioning 2.0 (http://semver.org/).
+  module VERSION
+    MAJOR = 1
+    MINOR = 0
+    PATCH = 1
+    BUILD = nil
+
+    STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
+  end
+
+end # Transrate
diff --git a/lib/transrate/writer.rb b/lib/transrate/writer.rb
new file mode 100644
index 0000000..876b2bd
--- /dev/null
+++ b/lib/transrate/writer.rb
@@ -0,0 +1,18 @@
+module Transrate
+
+	class Writer
+
+		require 'csv'
+
+		def self.write name, data
+			CSV.open(name, 'wb') do |csv|
+				csv << ["metric", "value"]
+				data.each_pair do |k, v|
+					csv << [k, v]
+				end
+			end
+		end
+
+	end # Writer
+
+end # Transrate
diff --git a/metadata.yml b/metadata.yml
new file mode 100644
index 0000000..13306f7
--- /dev/null
+++ b/metadata.yml
@@ -0,0 +1,417 @@
+--- !ruby/object:Gem::Specification
+name: transrate
+version: !ruby/object:Gem::Version
+  version: 1.0.1
+platform: ruby
+authors:
+- Richard Smith-Unna
+- Chris Boursnell
+- Rob Patro
+- Julian Hibberd
+- Steven Kelly
+autorequire: 
+bindir: bin
+cert_chain: []
+date: 2015-07-07 00:00:00.000000000 Z
+dependencies:
+- !ruby/object:Gem::Dependency
+  name: yell
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '2.0'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 2.0.4
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '2.0'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 2.0.4
+- !ruby/object:Gem::Dependency
+  name: trollop
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '2.0'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 2.0.0
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '2.0'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 2.0.0
+- !ruby/object:Gem::Dependency
+  name: bindeps
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1.1'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 1.1.2
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1.1'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 1.1.2
+- !ruby/object:Gem::Dependency
+  name: bio
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1.4'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 1.4.3
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1.4'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 1.4.3
+- !ruby/object:Gem::Dependency
+  name: crb-blast
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.6'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.6.4
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.6'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.6.4
+- !ruby/object:Gem::Dependency
+  name: fix-trinity-output
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1.0'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: '1.0'
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1.0'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: '1.0'
+- !ruby/object:Gem::Dependency
+  name: colorize
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.7'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.7.7
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.7'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.7.7
+- !ruby/object:Gem::Dependency
+  name: test-unit
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '3.0'
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '3.0'
+- !ruby/object:Gem::Dependency
+  name: rake
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '10.3'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 10.3.2
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '10.3'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 10.3.2
+- !ruby/object:Gem::Dependency
+  name: rake-compiler
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.9'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.9.2
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.9'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.9.2
+- !ruby/object:Gem::Dependency
+  name: minitest
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '5'
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '5'
+- !ruby/object:Gem::Dependency
+  name: minitest-reporters
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 1.0.17
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '1'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 1.0.17
+- !ruby/object:Gem::Dependency
+  name: simplecov
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.8'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.8.2
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.8'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.8.2
+- !ruby/object:Gem::Dependency
+  name: shoulda
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '3.5'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 3.5.0
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '3.5'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 3.5.0
+- !ruby/object:Gem::Dependency
+  name: coveralls
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.7'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.7.2
+  type: :development
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - "~>"
+      - !ruby/object:Gem::Version
+        version: '0.7'
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 0.7.2
+description: " a library and command-line tool for quality assessment of de-novo transcriptome
+  assemblies "
+email: rds45 at cam.ac.uk
+executables:
+- transrate
+extensions:
+- ext/transrate/extconf.rb
+extra_rdoc_files: []
+files:
+- ".gitignore"
+- ".travis.yml"
+- CITATION
+- Gemfile
+- LICENSE
+- README.md
+- Rakefile
+- bin/transrate
+- deps/blast.yaml
+- deps/deps.yaml
+- docs/transrate_logo_full.png
+- ext/transrate/extconf.rb
+- ext/transrate/transrate.c
+- files.txt
+- lib/transrate.rb
+- lib/transrate/assembly.rb
+- lib/transrate/cmd.rb
+- lib/transrate/cmdline.rb
+- lib/transrate/comparative_metrics.rb
+- lib/transrate/contig.rb
+- lib/transrate/contig_metrics.rb
+- lib/transrate/read_metrics.rb
+- lib/transrate/salmon.rb
+- lib/transrate/score_optimiser.rb
+- lib/transrate/snap.rb
+- lib/transrate/transrater.rb
+- lib/transrate/version.rb
+- lib/transrate/writer.rb
+- packaging/build_deps_linux.sh
+- packaging/build_deps_macosx.sh
+- packaging/bundler-config
+- packaging/minify.sh
+- packaging/transrate
+- test/data/150uncovered.l.fq
+- test/data/150uncovered.r.fq
+- test/data/Os.protein.2.fa
+- test/data/Os.protein.fa
+- test/data/assembly.2.fa
+- test/data/assembly.fasta
+- test/data/bridging_reads.l.fastq
+- test/data/bridging_reads.r.fastq
+- test/data/sorghum_100.fa
+- test/data/sorghum_transcript.fa
+- test/data/test.sf
+- test/data/test_contig_nc1.fa
+- test/data/test_contig_nc2.fa
+- test/data/test_contig_nc3.fa
+- test/data/test_contig_nc4.fa
+- test/data/test_contig_nc5.fa
+- test/data/test_contig_nc6.fa
+- test/data/test_contig_nc7.fa
+- test/data/test_reference_aa1.fa
+- test/data/test_reference_nc1.fa
+- test/data/tiny.sam
+- test/helper.rb
+- test/test_assembly.rb
+- test/test_cmd.rb
+- test/test_cmdline.rb
+- test/test_comp_metrics.rb
+- test/test_contig.rb
+- test/test_contig_metrics.rb
+- test/test_inline.rb
+- test/test_optimiser.rb
+- test/test_read_metrics.rb
+- test/test_salmon.rb
+- test/test_snap.rb
+- test/test_transrate.rb
+- test/test_transrater.rb
+- test/vagrant/centos_6.5_64/Vagrantfile
+- test/vagrant/debian_7.4_64/Vagrantfile
+- test/vagrant/debian_7.4_64/provision.sh
+- test/vagrant/fedora_20_64/Vagrantfile
+- test/vagrant/fedora_20_64/provision.sh
+- test/vagrant/linux-x86_64/Vagrantfile
+- test/vagrant/osx/Vagrantfile
+- test/vagrant/ubuntu_12.04_64/Vagrantfile
+- test/vagrant/ubuntu_12.04_64/provision.sh
+- transrate.gemspec
+homepage: https://github.com/Blahah/transrate
+licenses:
+- MIT
+metadata: {}
+post_install_message: 
+rdoc_options: []
+require_paths:
+- lib
+- ext
+required_ruby_version: !ruby/object:Gem::Requirement
+  requirements:
+  - - ">="
+    - !ruby/object:Gem::Version
+      version: '0'
+required_rubygems_version: !ruby/object:Gem::Requirement
+  requirements:
+  - - ">="
+    - !ruby/object:Gem::Version
+      version: '0'
+requirements: []
+rubyforge_project: 
+rubygems_version: 2.4.6
+signing_key: 
+specification_version: 4
+summary: quality assessment of de-novo transcriptome assemblies
+test_files: []
diff --git a/packaging/build_deps_linux.sh b/packaging/build_deps_linux.sh
new file mode 100644
index 0000000..ce06b89
--- /dev/null
+++ b/packaging/build_deps_linux.sh
@@ -0,0 +1,57 @@
+export PATH=~/gcc-4.8.4/bin:~/cmake-3.1.3-Linux-x86_64/bin:$PATH
+
+cd ~
+
+# transrate-tools
+git clone --recursive https://github.com/Blahah/transrate-tools.git
+cd transrate-tools/bamtools
+mkdir build
+cd build
+cmake ..
+make
+cd ../..
+cmake .
+make
+## package it up
+cd src
+tar zcvf bam-read_v1.0.0.beta4_linux.tar.gz bam-read
+cp bam-read_v1.0.0.beta4_linux.tar.gz /vagrant/
+
+# snap
+git clone https://github.com/Blahah/snap.git
+cd snap
+git fetch
+git checkout dev
+make
+# package it up
+tar zcvf snap_v1.0dev.67.trfix1.tar.gz snap
+cp snap_v1.0dev.67.trfix1.tar.gz /vagrant/
+
+# salmon
+git clone https://github.com/kingsfordgroup/sailfish.git
+cd sailfish
+git fetch
+git checkout develop
+mkdir build
+cd build
+cmake -DFETCH_BOOST=TRUE -DCMAKE_INSTALL_PREFIX=~/sailfish/ ..
+make
+make install
+# collect libs for packaging
+cd ..
+scripts/cpld.bash bin/salmon lib
+rm lib/libc.so.6
+rm lib/ld-linux-x86-64l.so.2
+rm lib/libdl.so.2
+rm lib/libstdc++.so.6
+rm lib/libgcc_s.so.1
+rm lib/libpthread.so.0
+
+# package it up
+tar zcvf salmon_v0.3.0.tar.gz bin/salmon lib/
+cp salmon_v0.3.0.tar.gz /vagrant/
+
+# ruby 2.2 (for libruby)
+
+
+# transrate (for the c extension)
diff --git a/packaging/build_deps_macosx.sh b/packaging/build_deps_macosx.sh
new file mode 100644
index 0000000..1782450
--- /dev/null
+++ b/packaging/build_deps_macosx.sh
@@ -0,0 +1,55 @@
+brew tap homebrew/dupes
+brew tap homebrew/versions
+brew install cmake zlib gcc49 autoconf
+
+cd ~
+
+
+# transrate-tools
+git clone --recursive https://github.com/Blahah/transrate-tools.git
+## build bamtools
+cd transrate-tools/bamtools
+mkdir build
+cd build
+cmake ..
+make
+cd ../..
+## build transrate-tools, directly specifying the static LIBZ location
+cmake -DZLIB_LIBRARY=/usr/local/opt/zlib/lib/libz.a .
+make
+## package it up
+cd src
+tar zcvf bam-read_v1.0.0.beta4_osx.tar.gz bam-read
+cp bam-read_v1.0.0.beta4_osx.tar.gz /vagrant/
+
+
+# snap
+cd ~
+git clone https://github.com/Blahah/snap.git
+cd snap
+git fetch
+git checkout dev
+mv Makefile Makefile.old
+# make sure snap uses gcc
+sed 's/g\+\+/g\+\+-4\.9/g' Makefile.old > Makefile
+make
+# package it up
+tar zcvf snap_v1.0dev.67.trfix1.tar.gz snap
+cp snap_v1.0dev.67.trfix1.tar.gz /vagrant/
+
+
+# salmon
+git clone https://github.com/kingsfordgroup/sailfish.git
+cd sailfish
+git fetch
+git checkout develop
+mkdir build
+cd build
+cmake -DFETCH_BOOST=TRUE ..
+make
+make install
+cd ..
+# package it up
+install_name_tool -add_rpath ../lib bin/salmon
+tar zcvf salmon_v0.3.0.tar.gz bin/salmon lib/
+cp salmon_v0.3.0.tar.gz /vagrant/
diff --git a/packaging/bundler-config b/packaging/bundler-config
new file mode 100644
index 0000000..81c0a8c
--- /dev/null
+++ b/packaging/bundler-config
@@ -0,0 +1,3 @@
+BUNDLE_PATH: .
+BUNDLE_WITHOUT: development
+BUNDLE_DISABLE_SHARED_GEMS: '1'
diff --git a/packaging/minify.sh b/packaging/minify.sh
new file mode 100755
index 0000000..2ca81b6
--- /dev/null
+++ b/packaging/minify.sh
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Remove tests
+rm -rf lib/app/ruby/*/gems/*/test
+rm -rf lib/app/ruby/*/gems/*/tests
+rm -rf lib/app/ruby/*/gems/*/spec
+rm -rf lib/app/ruby/*/gems/*/features
+rm -rf lib/app/ruby/*/gems/*/benchmark
+
+# Remove documentation
+rm -f lib/app/ruby/*/gems/*/README*
+rm -f lib/app/ruby/*/gems/*/CHANGE*
+rm -f lib/app/ruby/*/gems/*/Change*
+rm -f lib/app/ruby/*/gems/*/COPYING*
+rm -f lib/app/ruby/*/gems/*/LICENSE*
+rm -f lib/app/ruby/*/gems/*/MIT-LICENSE*
+rm -f lib/app/ruby/*/gems/*/*.txt
+rm -f lib/app/ruby/*/gems/*/*.md
+rm -f lib/app/ruby/*/gems/*/*.rdoc
+rm -rf lib/app/ruby/*/gems/*/doc
+rm -rf lib/app/ruby/*/gems/*/docs
+rm -rf lib/app/ruby/*/gems/*/example
+rm -rf lib/app/ruby/*/gems/*/examples
+rm -rf lib/app/ruby/*/gems/*/sample
+rm -rf lib/app/ruby/*/gems/*/doc-api
+find lib/app/ruby -name '*.md' | xargs rm -f
+
+# Remove misc unnecessary files
+rm -rf lib/app/ruby/*/gems/*/.gitignore
+rm -rf lib/app/ruby/*/gems/*/.travis.yml
+
+# Remove leftover native extension sources
+rm -f lib/app/ruby/*/gems/*/ext/Makefile
+rm -f lib/app/ruby/*/gems/*/ext/*/Makefile
+find lib/app/ruby -name '*.c' | xargs rm -f
+find lib/app/ruby -name '*.cpp' | xargs rm -f
+find lib/app/ruby -name '*.h' | xargs rm -f
+find lib/app/ruby -name '*.rl' | xargs rm -f
+find lib/app/ruby -name 'extconf.rb' | xargs rm -f
+
+# Remove Java files. They're only used for JRuby support
+find lib/app/ruby -name '*.java' | xargs rm -f
+find lib/app/ruby -name '*.class' | xargs rm -f
diff --git a/packaging/transrate b/packaging/transrate
new file mode 100755
index 0000000..89825b8
--- /dev/null
+++ b/packaging/transrate
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -e
+
+# Figure out where this script is located.
+SELFDIR="`dirname \"$0\"`"
+SELFDIR="`cd \"$SELFDIR\" && pwd`"
+
+# Temporarily set PATH and LD_LIBRARY_PATH
+export PATH=$SELFDIR/bin:$PATH
+export LD_LIBRARY_PATH=$SELFDIR/lib:$LD_LIBRARY_PATH
+export DYLD_FALLBACK_LIBRARY_PATH=$SELFDIR/lib:$DYLD_FALLBACK_LIBRARY_PATH
+# Tell Bundler where the Gemfile and gems are.
+export BUNDLE_GEMFILE="$SELFDIR/lib/app/Gemfile"
+unset BUNDLE_IGNORE_CONFIG
+
+# Tell transrate this is the packaged version
+export TRANSRATE_PACKAGED_BINARY=true
+
+# Run the actual app using the bundled Ruby interpreter, with Bundler activated.
+exec "$SELFDIR/lib/app/ruby/bin/ruby" -rbundler/setup "$SELFDIR/lib/app/bin/transrate" $@
diff --git a/test/data/150uncovered.l.fq b/test/data/150uncovered.l.fq
new file mode 100644
index 0000000..b1ee5bf
--- /dev/null
+++ b/test/data/150uncovered.l.fq
@@ -0,0 +1,892 @@
+ at FCC2HFRACXX:7:1101:2015:1981#TGACCAAT/1
+GTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCG
++
+_[_eeeeegebe`efddgaeehhhhfgfQ^eb`adfgfffhZ_db\adb`aaabaWQT]`b_b]Y_b`cbbb`]`][]^]aaX^bbdbbY^[_a_[[O][
+ at FCC2HFRACXX:7:1101:7968:3054#TGACCAAT/1
+GGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTC
++
+bbbeeeeef`gcghcegdghfhfdfdfdghhfgfhhhhhgG_Z`__`c[_RZa^baX^aaZ_a
+ at FCC2HFRACXX:7:1101:18523:3712#TGACCAAT/1
+CTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTT
++
+__^cc`\cecabcdea_d[`b^[abaUeW^a_e[S^afS^^Y^acbfedeb]^cacefh_V\W\efbddYcd`deV\aRV^ccc
+ at FCC2HFRACXX:7:1101:6215:4551#TGACCAAT/1
+TATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGC
++
+__[cccceggbeeddghhdhhhhhdhhfbfhhhhhhhhhhhhhghfefg_fdcgbdaabaaa_[]LEO^^^``[X_^^`ab`]]_bbac_X]XEYR_b]_
+ at FCC2HFRACXX:7:1101:9701:4567#TGACCAAT/1
+GTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTA
++
+b_beeeeeggggfiihhihihifhiiiiiiihfhefhiihiiiiigeedcdcca^cacccacccccc_acbbbS]][_[ab_`X`]`bcc[[X_a^b
+ at FCC2HFRACXX:7:1101:20111:6108#TGACCAAT/1
+GTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTGGTTTATCATG
++
+_bbeceeegggegihhiiidghhiiffhhfhhfhhihighhiihhfgfhhiffhhihdfegbgifbbfghf]bdffbRcgddgfdeee]^^GZ^]_]bbZ
+ at FCC2HFRACXX:7:1101:2825:6457#TGACCAAT/1
+CGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCCGCCCTGCGAGCGGATGTCGGCG
++
+bbbeeeeeggfggiiiiiigffhbfgiiihfhdaggdgeeeeaecaaccc_b[^aUYXT[V[ZaV_`bL[XZ_TXX]a[[aaOW`a]_]OXXXa]]^[X_
+ at FCC2HFRACXX:7:1101:7858:6597#TGACCAAT/1
+GGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAGAAGACACAAAAATAAAGAGGTTCTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAG
++
+bbbeeeeegfggeiiiiiiihifhhhhhiiiiihhhihhhhhhihhhhhiiiih_efg`fghhffhhggfgggfeceeeeddddddcccbcccccdcdcb
+ at FCC2HFRACXX:7:1101:5948:9388#TGACCAAT/1
+CCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGATGCA
++
+_b_eeeceefgeafdhifffbbggdbgh_cfgfgha_]eghfchhffhdefebffhghh[efffffb`b]dd`dgdgR^ccYZ]`a\XXa^GOYQXRS]`
+ at FCC2HFRACXX:7:1101:1327:10285#TGACCAAT/1
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
++
+bbbeeeeegggggihicghihiiiiihaaghegaeehhgecaaaacc_cbaaaaU_cb`b[acaccOTVZETZ
+ at FCC2HFRACXX:7:1101:8651:10922#TGACCAAT/1
+CCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCATCGTCATCTTCTCTCATATATTTGTATCACCCA
++
+bbbeeeeegggfgiiiibghfhcgffhfhiiiiiiiagggdeeccdddddccccbcbc^accccbaccbcW^[``S]_bbccccb_cdcdccccbcbccc
+ at FCC2HFRACXX:7:1101:20856:13766#TGACCAAT/1
+CATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTA
++
+bbbeeeeeggggfiiiiigfihffhhfghfhhhhffiffhibefhhhfg_cccdd_]`g[^dcebb]__dZYUZ__`bbca_^YRKT[]_bY]bbSY]bS
+ at FCC2HFRACXX:7:1101:1878:16590#TGACCAAT/1
+CTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAA
++
+__bcceeeegfgggef_fg[hddgbfhghfffgfdhhhhhfg[_efghhhhhhhdfg[cfgch]ffhfbfg_fgf^dgeggeeeeceddd_`]Z`_Z]TZ
+ at FCC2HFRACXX:7:1101:14970:16874#TGACCAAT/1
+ATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTG
++
+_bbeeeeeggfggdgiiiiidgfhfhfdggfhhhhehhffihihfiidgfhcghhghihhihhiifhghh_cdgdb`]_ac]ca_bbbdc__aaca_aOW
+ at FCC2HFRACXX:7:1101:19160:19344#TGACCAAT/1
+CCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACT
++
+___eeeeegcccghfhhhhcbfffhdfe`__cffchhhb]``g[^bddbbbb^`bU^^\Zaaaaac_Zac]ZETO
+ at FCC2HFRACXX:7:1101:20663:24038#TGACCAAT/1
+GGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAG
++
+__bccccaegggeghiaeagfhchhhfhiXcaefffb_eg\_fhfaadeccc_c^ccca^YJY^aa
+ at FCC2HFRACXX:7:1101:8756:24567#TGACCAAT/1
+CCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGG
++
+bbbeeeeefgefghiihiiiiihifiiiiifdfgeaccdccc`acaaccca[a_ac^WY^Y_bccTT]a[`O[YYW`a]aaa]_WW[X_]_ac[a
+ at FCC2HFRACXX:7:1101:15803:25761#TGACCAAT/1
+ATCGTCATCTTCTCTCATATATTTGTATCACCCATCCATCCATCTGCCTTCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTT
++
+bbbcceeegffgghfhfhhehhhi]ghhhhihihf_e`ghfhdgfdgfhhhighhfhihhfhifffdXedffd[NRZ^]bb]_bbbccbcbcRR]_RSYb
+ at FCC2HFRACXX:7:1101:5766:26080#TGACCAAT/1
+TGGAGATGCATATCGAAGGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATC
++
+___ccaccggeggfhfdfhded`aggZ[ef]_eghbce_eggcfhdcdfggf``eefdfff__b`cg\^dZZbbcc_c`baYX\F[RRY_`[^[a_
+ at FCC2HFRACXX:7:1101:7987:27278#TGACCAAT/1
+GTTCACTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGATGCCGACCATGGCCTCCCCGAGTCCGGCGCTGACGTCGGCGAGGATGG
++
+babeeeeegggggihhhiihicffhifhicdfeggeeee^b`X_^accY[[^bR]baOZacccb`b_`acaTTX[bcaaaaXRX[ba^aaVOXX_aER]_
+ at FCC2HFRACXX:7:1101:17662:30576#TGACCAAT/1
+ATTGATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCG
++
+___eeeeegceegihhhffhehhigdfhhihifffghhhfhhiefhhagddcfbgaaefbegdffhihfhiefeeddgcdeeeeedddbcbbbbaacac
+ at FCC2HFRACXX:7:1101:4976:31550#TGACCAAT/1
+CTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGGTG
++
+_bbeeeeeggg`ehfge[dfhhfffgfcdaNZdfgdhddg_gcebaRZ[[TTY__aWaLVZLZaQ]]SY``acEOT
+ at FCC2HFRACXX:7:1101:8850:31628#TGACCAAT/1
+CTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAA
++
+bb_eeeeeggggghhhhiiiiiiiiiiff`egffgihiihggX]aaW\WEV
+ at FCC2HFRACXX:7:1101:6311:33629#TGACCAAT/1
+GTCTGCATCACCAAATCATACGGCGCGGCGATGCGCTTAGCATACGCGAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGG
++
+_bbecacecgg`ghhfhhfghihgghhhffdgggeebcc`bbccccbaccccRQ]^]b`bbcbY`bRS]`bbbccaaccaaccccccbb_aacabbbb[a
+ at FCC2HFRACXX:7:1101:16617:35398#TGACCAAT/1
+GAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGATG
++
+aabeeecegggg`fgdgfhihiiighhihhhiidgacc`bc`acN^a\b]`bcR]aTY^[YbRQRGSY
+ at FCC2HFRACXX:7:1101:5129:41564#TGACCAAT/1
+GGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCAAGCAG
++
+bbbeeeeeggggeh`fhhiiiiiii_fgicfhhiiiiihgi_egfghiegecddddcdccccca_ccccccac]a^b`ccbbb^_bcbcccccabccccb
+ at FCC2HFRACXX:7:1101:10393:43005#TGACCAAT/1
+CGCCGATCCATTCCATTCCATTCCAACTCAATCCCCCCCCCACCCAGCCCAAACAATGGCGTCGGACGGGAGCGGCGTGGTGACGGGGTACGGGAACAAC
++
+bbbeeeeeggggeiiiiihiiihhihdgihiifdgfhhihgfeeec^`bacccccbbbbccZ_a]_aaccaacccacLX[GWSY^aLXOT]T]aOTWW`W
+ at FCC2HFRACXX:7:1101:10247:49111#TGACCAAT/1
+AGTCGGACGGGAGCGGCGTGGTGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCC
++
+_b_eeeeegggcgiiihiehiQ_bfgi\d`bbcecbcccccacaacacacc^bbc`b_]b^a`c[Y__bbbW^aQW[]bacca]a[^b_b`b
+ at FCC2HFRACXX:7:1101:16334:49689#TGACCAAT/1
+CCGGTGGAGTGGAGATGCATATCGAAGGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGT
++
+_abeccecgbcgehififhihiiiihihhfhghfhffhhgdfgiX__edgfffffhfhiffghhe``Y^bdea\``GZ^\`\\_YLTX```
+ at FCC2HFRACXX:7:1101:4903:52289#TGACCAAT/1
+GGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCAAGCAG
++
+^__eecceggggghhifiiihiffhghhifhefghhihhhibghhiiheddeccdcddbcaaac_accccccc]aab`cdccbaa_bccccbcccccccc
+ at FCC2HFRACXX:7:1101:7290:52681#TGACCAAT/1
+TCCTGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGATG
++
+bbbeeeeegggggifiiiiiiiiiiiiiiiiiiiiiiiihiiiiighiigiiiiihhhiiihiiihhiffhhhhhcgegfeeeeeccccc_a_aa`a`bb
+ at FCC2HFRACXX:7:1101:15630:52667#TGACCAAT/1
+CCACGGACCCTCCGGAGCGCCTCACCAAGGTCACGGCAGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGG
++
+bbbeeeeeggegghghiefcgfhiifiifg^egb`g_dgeefgeeee^X]TW]aFR^`acLWVY]_GQSY]_W_[GY_cbb
+ at FCC2HFRACXX:7:1101:2561:53863#TGACCAAT/1
+CTAGTCTAACTTAATACAGTAGCTAATAAGAAGACACAAAAATAAAGAGGTTCTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAGTCCCGTTA
++
+bbbeeeeegggggiiihiiffhhhhhhihhihhiihihiifbghhhdhihafggifghifhgfhiihihhdghcfbfghggffggeeedceedddbcac^
+ at FCC2HFRACXX:7:1101:3406:56187#TGACCAAT/1
+CGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCC
++
+___ccccc^cgcJ`bffdhffghdfhfhhdccbggeggU^b``aaaaa\Waaaaaaaa[aaaaaaa[]W[_ZXZ[[_TOX_abb[]a_]_O[T[a
+ at FCC2HFRACXX:7:1101:1778:57411#TGACCAAT/1
+CAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCG
++
+_bbeec^cgegeghhfhhg_eedg_affbd\edd]Pa]ehdfaPcZaU`UN\`W^[X^WTY^aTWT[^^LT
+ at FCC2HFRACXX:7:1101:7177:57638#TGACCAAT/1
+CGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACACCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCA
++
+bbbeeeeefggggihhihiiiiifhfhihiiiiiiiiggggeeccccccc_bccc^__accccbcaaac^_bbaa]^abccccccaacbb`acccacccW
+ at FCC2HFRACXX:7:1101:18318:59298#TGACCAAT/1
+CTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGT
++
+___cccccSbc[`[[dg_^e^[befgh_gghbddddg[[a^dfd]ce`cacaXIXSXRaea\GaMWVM\bfhdc```YRH\Z_cZ^_b_`
+ at FCC2HFRACXX:7:1101:10947:60766#TGACCAAT/1
+GGGTCGTTGAGGTTGATGCCGACCATGGCCTCCCCGAGTCCGGCGCTGACGTCGGCGAGGATGGTAGGGGCGCTGTAGTGGGGG
++
+abbeeeeegggggfhhiihihghhiiiihihhhiiihifbfhihgcccccaacccccTVVOGY_S]`acEOXXLTT]``bacEX
+ at FCC2HFRACXX:7:1101:6033:61578#TGACCAAT/1
+GGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGGCGACTTGGGCTGCTTTGAGGGTTCCAGAAGGGCTGCGCCGTTGTTCCC
++
+_b^ce^ceggfgghghhhhhdhhhhhhhhhfhWbghZcgggbNZWWbba_^aaXbbbbaba[^WYGYSX]`a^W[WX_[XOT[W`S_`
+ at FCC2HFRACXX:7:1101:9064:63291#TGACCAAT/1
+CATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTGCCGGTCCCGGCCTCCCCC
++
+_[_ceeceggcgcghhfUedghffhhgghhhcgghhef`gfffedebbaa]_bbbbbbaaZaR`V]aaaa_`]_bSXaOT[a_VXTOW`aab
+ at FCC2HFRACXX:7:1101:13801:64275#TGACCAAT/1
+GTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTT
++
+bbbeeeeefggggiiiiiiiiihehhhiffiidbcghhhhhhhhhhhhfecccccQVV^aaabc_]a_ac`__bbbbaaaa]a_bc]bcc``_R_
+ at FCC2HFRACXX:7:1101:15417:65582#TGACCAAT/1
+ACTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCC
++
+bb_e^ccegeggghiifhiififhihhhhiibcgffhcgfhghhhiiihiiiihfhfefdgfhhhhhdhhihhhhfffd_dd]dddbddeecd[bbbacc
+ at FCC2HFRACXX:7:1101:8403:66552#TGACCAAT/1
+CGGGGTGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGGCTGCTTTGAGGGTTCCAGA
++
+abbeecceggggghfhhiiiiiiiiiihhighihfhihhggggeea`acacc[_aabbbbcaacV``b`baccaXX_acc^W^_abbccbcbaW[``ccR
+ at FCC2HFRACXX:7:1101:10617:71584#TGACCAAT/1
+CGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGA
++
+bbbeeeeegfgggiiiiiiiiefhiYcScghfgfhgeeedddddcccaZ_ab_`[_c[_[HOV_O
+ at FCC2HFRACXX:7:1101:12027:71848#TGACCAAT/1
+GCTTATTTTGTCTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTC
++
+_bbeeeeeggeggihihhhhfhhiiiiihdeghdfeiihfhgihhhhhiihiaeghfhhhihiiifhdhhcdgggdgcbb]ceeebdddddcddcY`bcc
+ at FCC2HFRACXX:7:1101:3054:72468#TGACCAAT/1
+CCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCGATGCGCTTAGCATACGCGAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATC
++
+bbbeeeeeggggehhiiiiihiiiiihhiiiiiiihihidgabcaccccccccdccccccccaccccbccbccccccccbbbccaa_accc]accaaccc
+ at FCC2HFRACXX:7:1101:14667:72258#TGACCAAT/1
+CGGGAATCTTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCT
++
+abbeeeeeggggghiccghhfhhhibeceXeghghgh[]`W^^aX`c^^aabccccaW_]`bc^a^X^]YYTZacTX[`^Y]ba_
+ at FCC2HFRACXX:7:1101:1773:75211#TGACCAAT/1
+CTAGTCTAACTTAATACAGTAGCTAATAAGAAGACACAAAAATAAAGAGGTTCTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAGTCCCGTTA
++
+bbbeeeeegggggihiiiihhiiiiiiiiiiiiiifhiiiiiiiiiiiiiffhiiiiiiiiiifhiiihiihhgfcghiggfggfeceeeeeddbdbccc
+ at FCC2HFRACXX:7:1101:9079:79829#TGACCAAT/1
+GCTACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGAT
++
+bbbeeeeegggggiiiiiiiiiiihhihiiiafhfffhhffhafgaeg`f_dg]cgeadccV_`ba^ZET[^GQ[[TT__L]SGS[JXTTTXQSXGQRX`
+ at FCC2HFRACXX:7:1101:5691:80221#TGACCAAT/1
+GTGCGGATCATGGCGGCGCCCTCACGGACCCTCCGGAGCGCCTCACCAAGGTCACGGCAGCCAC
++
+bbbeeeeegggggiiiffhgifgghhiageecac`__aacacccbacbcacX`bbacaZT[aW`
+ at FCC2HFRACXX:7:1101:12818:82404#TGACCAAT/1
+CGGCGATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGT
++
+bbbeeeeegggggiiiiiiiihifhiihiiiiiiiiiiiiiiiiihiiihiihfhhhhhhiihhiihifgede_a_bdbbdbcbcbbbcc_acbccbcc`
+ at FCC2HFRACXX:7:1101:11453:83437#TGACCAAT/1
+CGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCC
++
+abbeeeeegecgfhihfhiiiihhifihiefhacabddccc]acQWY_TaTX_bN^[_aTZTT^
+ at FCC2HFRACXX:7:1101:2741:85193#TGACCAAT/1
+CCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGTGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGG
++
+bbbeeeeefgggcghhhhhiiifffiigggeec_accbcbcbcccccbcccaccccaccaac[abcccacaaa_c[a[aa]T[_
+ at FCC2HFRACXX:7:1101:11726:85018#TGACCAAT/1
+AAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGATGCATATCGAAGGCAGATGGATGGATGGGTG
++
+_bbeeeeegggggihihhhiiffhiiiiiiiihii_gZbdbggfeeeeeebccc__a\_^R_b]_b_`Y`^cGO
+ at FCC2HFRACXX:7:1101:19534:85665#TGACCAAT/1
+TGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCT
++
+__beccc^eege`ef]dcghhhhfcg]ggfgeghhhhccgcgdd_e[^c`Y`edagfdH^WX^VZUUUZ\N^_b
+ at FCC2HFRACXX:7:1101:5108:90121#TGACCAAT/1
+CATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTA
++
+bbbeeeeegggfgiiifgihhiiiihhhiiiiihiiiihfhhihhiiihiiiiiiiifgiiiihhiiihffddgggeeeeeeab_bddcccbccdcccbc
+ at FCC2HFRACXX:7:1101:18115:92647#TGACCAAT/1
+CGACACAAAAATAAAGAGGTTCTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAG
++
+bb_eeeeeggggghiihefegfhiiihiehhiffgghhgfheghihhiiifceggbhfhfhhidhehfaghfhggebgbdebecddcb_b_bbccccb``
+ at FCC2HFRACXX:7:1101:2344:93442#TGACCAAT/1
+CAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTGGTTTA
++
+bbbeeeeegggggiiiiiiihiiigihihiiiiiiiihiiiiifhihiiihiiiiihihhiihihihiiighiiddfhhcggggggceeecccdcc`bc^
+ at FCC2HFRACXX:7:1101:6031:96678#TGACCAAT/1
+TACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAGAAGACACAAAAATAAAGAGGTTCTGCATAGTACCATAGCTTTGTTTCTT
++
+___eecc`g^eegfhhhidgdfhhcebhghdffdfhhiihcaegfhdghdfghhdhhihfic`dh]cggeg\Z]a^abbbcdcdbbbcb`_]Z_bccccb
+ at FCC2HFRACXX:7:1101:15323:98549#TGACCAAT/1
+CAGGCGTGGCCACACCCCCGGCCGCGAACTGCACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCGATGCGCTTAGC
++
+bbbeeeeeggggghiiiiifgfhhhhhfeeeeedddccccccccbcccccccccccccbc_b`bbbcbccbc^ab]b`_b[_[]aXa]_]__^_aV_R`b
+ at FCC2HFRACXX:7:1101:5063:100089#TGACCAAT/1
+TACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCCTATCGCTCGACCTTAGGGTCGTTGAGG
++
+bbbeeeeegggggihiihihiiiiihheffghhiiiifegfhiaffghfhffdghffeeeeeccaWW^bGWW`a___aX_Y_`aJX_LXXP_`
+ at FCC2HFRACXX:7:1101:16571:100277#TGACCAAT/1
+GCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCCGCCCTGCGAGCGGATGTCGGCG
++
+bbbeeeeeggggfhfhegbbfgifggV^_ffcUbdgaG\``^aaaaacccWaccacccccZZR_aa_a
+ at FCC2HFRACXX:7:1102:8089:2409#TGACCAAT/1
+CAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCGCGCAGATGCTCCGTGGCGGGG
++
+bbbeeeeeggfggihiiiiiiiiiifghhhfhhiiifghihigggeeccca`bcccccacccccac
+ at FCC2HFRACXX:7:1102:10502:4703#TGACCAAT/1
+ATCCATTCCATTCCATTCCAACTCAATCCCCCCCCACCCAGCCCAAACAATGGCGTCGGACGGGAGCGGCGTGGTGACGGTGTACGGGAACAACGGCGCA
++
+bbbeeeeegggggiiiiiiihiihiiihhiihhiiiiiihfghidggggggedccccacccaccV]aac]aTX_GQY]_aT^O_bacc]a^`bQT]]ac]
+ at FCC2HFRACXX:7:1102:12414:5238#TGACCAAT/1
+CGTACCATAGCTTTGTTTCTTACCATTGATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTA
++
+bbaeeeeegfgggiihiihiiiiiiihhhiihfihhihigfhiihhiiihiehigghiiihbgdhidgfhihhggdgdggeeeeededcdddcccbcddd
+ at FCC2HFRACXX:7:1102:20475:6595#TGACCAAT/1
+CGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGGCTGCTTTGAGGGTTCCAGAAGGGCTGCGCC
++
+bbaeeeeegggggihiiiiiiiiiihiiiiiiiiihihfggecccbbbcccccaccc]_^_ccacaacbccbacb_bb_acc_a^`bbcb]^aac]_caa
+ at FCC2HFRACXX:7:1102:1964:7116#TGACCAAT/1
+GTCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACCTCCGCT
++
+bbbeeeeefeegfgghgibghiifgcgffhfggifhfhhiige[^acccccaaccccaacV[aZ_cOW]bccaaccccbXaaaaaacLX_[XaEO]`]aT
+ at FCC2HFRACXX:7:1102:10385:11914#TGACCAAT/1
+TACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAG
++
+bbbeeeeegggfgiiihiiiihhhhdhh`gfhdghdecccccccccTaaV^`bcc`b[aaaccb]babccbca[[T][^bbbYbXET
+ at FCC2HFRACXX:7:1102:2463:14194#TGACCAAT/1
+GACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCATCG
++
+__beeeeegcgfehhhfhdghiiihiiiiihhihihhihhggggeZadcccc^accacccccc_^bccccc^^]`_```ac_bbbccccccbbaabb^
+ at FCC2HFRACXX:7:1102:6606:14993#TGACCAAT/1
+CCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCG
++
+bbbeeeeegggfghiiihiiiiiiihiiegfgiiihihihhiiifggcecdddcbccbdcccccccY^Y^baccX]acccbbbRT]aaacccaccccc
+ at FCC2HFRACXX:7:1102:13232:17115#TGACCAAT/1
+GGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTGGTTTATCATGTACTCAATCAAATGTTG
++
+_b^ceeeeggggghhihiiihghihiihfcghhdgiiihhgffhhfhheghhdgfaehi]ecbZbg`bbgf]_\\_b]ddgea_cddbabbbdbd]]TZ]
+ at FCC2HFRACXX:7:1102:15049:17175#TGACCAAT/1
+CCCAAACAATGGCGTCGGACGGGAGCGGCGTGGTGACGGGGTACGGGAACAACGG
++
+___eeeecgggfehgfhihihihffghhedcbbU\`baaFRW_]XWWV[^_bGHO
+ at FCC2HFRACXX:7:1102:12312:17759#TGACCAAT/1
+CGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTC
++
+_baeeeeegggggiiihhhiiiiiiihihhighigeeccccccccccccccccacaaccOY[Y`b_aOW]LJ[[[__a[_[]_cba^P^_ca]_
+ at FCC2HFRACXX:7:1102:10932:21174#TGACCAAT/1
+GGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCATCGTCATCTT
++
+bbbeeeeeggfggehiiiiiiiiiiiiihiihiiiiiiiighiiigeeebcccccccccacccccc^acdbcccccacccccccccccccbccW`W```b
+ at FCC2HFRACXX:7:1102:14942:21184#TGACCAAT/1
+TCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTGGTTTATCATGTACTCAATCAAATGTTGAACG
++
+^__ccccaec[`edfbcgfcdfeeb_gcaebf]_dfeceg_I^cf[eg_f^aXaceRcg_f]bc\bc\\__
+ at FCC2HFRACXX:7:1102:10572:23384#TGACCAAT/1
+CTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCA
++
+_bbeecacgffceghhfhffhgWcfeffaegf`__acccccbbbccac^YaccccccaV__^acccc]a]Xaaaa[bb[Q[ETOXaaaX[^
+ at FCC2HFRACXX:7:1102:4715:26873#TGACCAAT/1
+GCGCTTAGCATACGCGAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTG
++
+bbbeeeeeggggfihiiiiiiiihhiiihiiiiiiiiiiichiiihggeeccccccbacccccbb_acccccccc_bcbccc`bcccacccccc[^a`b`
+ at FCC2HFRACXX:7:1102:13003:30444#TGACCAAT/1
+GTCGGACATCCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCAAGCGCGCCGTCACCATCCCC
++
+___\accceggccfg`gheffbff_TX]b`UU\\_OXJWW[a_ab_aTWTW^__]]U_TTZTVY`bbb^]TTXaTO[_bbbbaaa
+ at FCC2HFRACXX:7:1102:5899:31890#TGACCAAT/1
+CGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCAAGCGCGCCGTCACCATCCCCGTCATGGCCAAAGCGCGCATCGGCC
++
+bbbeeecegggfghfhfhieefeaaacbb_^\aacaccaccccbcccaaccTTbcc`b^aaaccZ_acbGGX^[^XX^aWGRWb]a^[`_]a_a_aTXT[
+ at FCC2HFRACXX:7:1102:4199:33606#TGACCAAT/1
+GGTGCATATCGAAGGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGG
++
+ab^ceeeegggggiihgiefgheghi]feghYbbffhihf[chhfhhighhhifhihif\egi_fgU`dab]_abZ^K[\W^Y`b__^aTW[b_b
+ at FCC2HFRACXX:7:1102:17457:38411#TGACCAAT/1
+CCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGC
++
+bbbeeeeegfgggiiifhh\effacefff_d_cdfgfhhZafgfifdfggffgdbcV\`ddggeeeeeaba\`aWZ^ab]bY_bbbccccbccbcc__bc
+ at FCC2HFRACXX:7:1102:10935:40565#TGACCAAT/1
+CGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCCCAG
++
+__bee`c`bege^faghhhhihhihhhffhXcefhhfgffga_UZ[_baa[^aT^^abbbb`_bbY]`__bZ]Z[[[X_LT[a]]EOTXOXXOXaa^E[[
+ at FCC2HFRACXX:7:1102:3735:42907#TGACCAAT/1
+TACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGA
++
+_bbceeeeggggfihhhghiihdffhichhggggeaaa^acccc`b^acc_bbccccb``baaccc[bbccbccc_ac]`cc[__[_a[_`Y]baaaQ^b
+ at FCC2HFRACXX:7:1102:3825:46331#TGACCAAT/1
+CCGGAGCGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTGCCGGTCCCGGCCTCCCCCTT
++
+bbbeeeeegggggiiihhiiiigf]fgfhdfhiaddgeceead`baca_cccccacacccccc_aEW]a]]]a]cW_cc[`
+ at FCC2HFRACXX:7:1102:1738:46716#TGACCAAT/1
+GGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAGAAG
++
+__beeeeegfgeghihhihiihhiihdghegbdffhiiiihhiihdebgfhihiiiiiiiigfdcab`bbb`bcc`bcdcccdccccdccccccbbbY]b
+ at FCC2HFRACXX:7:1102:3022:48676#TGACCAAT/1
+CGAGCCGACGAAGACGCCGTCGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCGGC
++
+___cccccgeegghaffff^^YcFZeefg\dR_Z^dedd]^]RXR]WFTT^bXGY^^OTETVV^GW^aaaaaaaa
+ at FCC2HFRACXX:7:1102:20821:54221#TGACCAAT/1
+GGCCCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCGATGCGCTTAGCATACGCGAACACCTCATCATCATCCATGTTCC
++
+_bbccccegfeegehgffgf]g`egcfgbgeeffh`baggafdaUZaGRW_aa]bcccbcaaacaV^_^a_]_bc``_YGSY__`Y`
+ at FCC2HFRACXX:7:1102:16360:55497#TGACCAAT/1
+GCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGATGCATATCGAAGGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGA
++
+bbbeeeeegggggihhhhhihhiigffhibbcgiiii`gT^dgdccbc_bbdbbaccacca[]bb`]Y^^YbccXTWYa`bbbb`b`_]`b`b^bbb]Y`
+ at FCC2HFRACXX:7:1102:5441:56789#TGACCAAT/1
+GTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTC
++
+babeeeeegfgfgiiiiihhfhihhiiiegiiggeeeeedddddccccccccccc]`[_ccaaacaccaccZT]cbbbacc[abcccccccabbcccc_a
+ at FCC2HFRACXX:7:1102:1305:59122#TGACCAAT/1
+CTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAA
++
+bbbeeeeeggggfiiiiihihhiiiiihhihiiiiiiiiihihhifhhiiiihihiiihifhfhiiiiihiiiiigdggeeeecedcdddddddcccbcc
+ at FCC2HFRACXX:7:1102:1972:61139#TGACCAAT/1
+CCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGGTGAGGCCC
++
+___eeceefgcggihifed[cbead_ghefdgH\cddgfgg^`bcZ]Z_\_^aacaEVWW`bb]Q^acETXQW^WQ^
+ at FCC2HFRACXX:7:1102:8085:62091#TGACCAAT/1
+TTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCG
++
+_bbeeeeegfgfgifiiifhhifhhdghaegd^bcabdccaaccbccaa`bcc`acca]bbcccaccccbc^]Yb[bccccaaccXRGT`aca_]aa[b_
+ at FCC2HFRACXX:7:1102:6045:62449#TGACCAAT/1
+ATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAA
++
+bbbeeeeegfgggiihiiiiihihihfhhfdhfiihihiiiiiiiiiihhhiii_ddgcddgeecZ_ddddc`dbdbbccaaaaaaccbcccdccbbccc
+ at FCC2HFRACXX:7:1102:14153:62735#TGACCAAT/1
+CACCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGAT
++
+___acc_cc^egeheafhdfgbfffdghhhfhhdaghhhfhdgbgh]cdfcfffh\dgfhhdfhhfghhfff`g^\bcebRZbb[__aaac[_WWWG[]^
+ at FCC2HFRACXX:7:1102:6103:62753#TGACCAAT/1
+CCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTT
++
+bbbeeeeegggeghhiifiifiiefghihiihiihiiiiihiiiiiiiigecccc\^abbcedcb^abcccb`YW[`accccabbccac_accacc[b_b
+ at FCC2HFRACXX:7:1102:18321:62766#TGACCAAT/1
+CCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGATGC
++
+bbbeeeeegggggiiihhihdfhiiiiihiiiiihiiiiiiiiifhiifgiiiiiifhdgfiihihihiiehihfdggceeeeeccccc[]Q[[Y`b`b_
+ at FCC2HFRACXX:7:1102:6465:65486#TGACCAAT/1
+TACTGCATCACCAAATCATACGGCGCGGCGATGCGCTTAGCATACGCGAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGG
++
+bbbeeeeefggegiiihiihiiihiiiiUedggfeecccbccdccccaccccccccbbccb`bcbbccccdccccc]accacccccc`bccccccbbcaa
+ at FCC2HFRACXX:7:1102:15835:67354#TGACCAAT/1
+CTGCCTTCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCTCATGTCTCTCCAT
++
+_b_c^cdccggcghihhfhhegdgdeghffa]aeegdcedfbfgf]`gd``ffdcgfhfdbdggabdea\abdc_Z_bb`cccbabcc_ZY]``]]`bcc
+ at FCC2HFRACXX:7:1102:6768:67967#TGACCAAT/1
+ACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAGAAGACACAAAAATAAAGAGGTTCTGCATAGTACCATAGCTTTGTTTCTTA
++
+bbbeeeeefgggghiihiiiihiiiiihhghhhiiiiiieghiiiiiiiihhiiiiihhiiifdfhiggg`cceebcdddbbdcdccccccccccbcccc
+ at FCC2HFRACXX:7:1102:15827:67868#TGACCAAT/1
+GCCTGACGGCCTCGACGATGTTGCCGGTCCCGGCCTCCCCCTTGGTGCGGATCATGGCGGCG
++
+bbbeeeeegggggiiihihhgdghiihfffh`ghhfhiiggac_a^adccU\accb`[acZa
+ at FCC2HFRACXX:7:1102:1446:69132#TGACCAAT/1
+CAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAGAAGACACAAAAATAAAG
++
+bbbeeeeegggggiihiihiiiiiihfhihiiffihiiiiiiiiffhiiiihiiiihfhiiiiiiegggggedeecdecddddddccccccccccabccb
+ at FCC2HFRACXX:7:1102:1236:70725#TGACCAAT/1
+GGCGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGGCTGCTTTGAGGGTTCCAGAAGGGC
++
+bbb`eeeeggfggiiiiiiiiiiiihiihhifhiiiihhg[ceccccccccccaaU`b]]_aacc_aa__bcc_a_bcb`_^baW[`b_bbbcc]^
+ at FCC2HFRACXX:7:1102:9825:72205#TGACCAAT/1
+CCGACCCCGGAACAAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCGCGCAGATGCTCCGTGGCGGGG
++
+___cccecffegghihiiiihiiiifhfiihheghfhhfhiifgf_dfgacU^a__bccc\X^^Zbb]`acacXacXXaacT`bbcccc`^a][__a
+ at FCC2HFRACXX:7:1102:6738:74232#TGACCAAT/1
+CTGGAGATGCATATCGAAGGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGG
++
+bbbeeeeegggggiiiiiiieiefhhifgiigfhiicfefhiihihhiihiiihiihiiiihffcgfd^`b^cca]NZ_bccY^a]^Y`bc`[^OWT]Y_
+ at FCC2HFRACXX:7:1102:3542:76333#TGACCAAT/1
+CCTCGACGAAGTGGCCGATGCACGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCC
++
+bbbeeeeefgfeghiiihhffbgffghiddghfiihiiiii_`gg__]adcca\__ac_`b_RY`aacTZa`bb^W^T[aET[XO[_]Y][aR[_ETX]a
+ at FCC2HFRACXX:7:1102:8808:79183#TGACCAAT/1
+GGGCTTGTTCCGGGGTGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGGCTGCTTTGA
++
+_bbeeeeeggggghhdeghiiiifgihf_ggffhihiiiggeeebcccccccbcccacccccaacacbccacca_^b`Y`[aaaccccbcca[X^b`bYS
+ at FCC2HFRACXX:7:1102:19068:80610#TGACCAAT/1
+ATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGC
++
+___eeeacccggcdghdhieghhfbgfdeefhdgiiiiihhfhehffgggdcbae]bcgcgbg]Ze`d`ffdbggb^`ceeee__bbb]b`Z_^
+ at FCC2HFRACXX:7:1102:4722:82132#TGACCAAT/1
+TGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAACTGCACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCAT
++
+bbbeeeeegggggiiiiiihiiiihiiiiiiiiiiiiiiihiggggeedccc]_acccZZa[acccccca^W`cacaaccaca^[`_bc]bY^]_]bbb`
+ at FCC2HFRACXX:7:1102:14968:85934#TGACCAAT/1
+ATCTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTT
++
+b__eeceeggggghhd_eefhidhe]dgfcgfafh`dggeddabecccFW^aY_Y`acT[V_VLO
+ at FCC2HFRACXX:7:1102:17287:86478#TGACCAAT/1
+ACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGCCGC
++
+bbbeeeeegggggiiiiiiiihifiiiiiiiiiiiiigeccccccccccccccabcc]bacZaccbccaccbbbc[]acb^^bbY_aaccca^acca[T[
+ at FCC2HFRACXX:7:1102:9089:87630#TGACCAAT/1
+GGTCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCC
++
+bb_eeeeeggggchi`cfghffhiiihfhhfaffhhiiiiiigdccaccaba_JRVV__Zbbb`]`bb__R]aba]X_ac_ccaTQTXTLXTTX[]][_^
+ at FCC2HFRACXX:7:1102:16408:97070#TGACCAAT/1
+CGAGGATGGTAGGGTCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAG
++
+_a^ceceefceggicfgfhhfghedbgH_^egfbddbcdfhihhfehhhhge^_accaT[LTXa]RRZVa_c`bb]Y]]b
+ at FCC2HFRACXX:7:1102:12915:100079#TGACCAAT/1
+GCCCAAACAATGGCGTCGGACGGGAGCGGCGTGGTGACGGTGTACGGGAACAACGGCGCAG
++
+bbbceeeefgegaafehhhhiiihdfagfge]`b`abcca\aZb`cacaT[`bcaUaaLHO
+ at FCC2HFRACXX:7:1102:8912:100688#TGACCAAT/1
+GCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGT
++
+bbbeeeeeggfgfiiiihiiiiffhhihfhhihfbdgbbcec`bcc`ac`bbaX_Xa_[]a[WOT]aZ]ZXZOOX^]bb]Y_bdbb`Y]`bX[_^baT]T
+ at FCC2HFRACXX:7:1103:9482:4541#TGACCAAT/1
+TGGAGCGGCGTGGTGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCG
++
+bbbeeeeegggggegdhiicffgiiiihifhifddgccccccccccccccbcccccabcbbcb_acaca_baccca_cccbcbcccacab`_bLXaccaa
+ at FCC2HFRACXX:7:1103:4835:5055#TGACCAAT/1
+ATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCT
++
+a_beeeccgggggiiiihiiiiiiiiiihiiiihiiiiighhiiiihiiiihgeccccbccTZZ_ca^ccc_a`a^`b``bccccccac_b`_bcc``cb
+ at FCC2HFRACXX:7:1103:16692:6719#TGACCAAT/1
+GGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATG
++
+__beeeeeggggghiiiiiiiiehghiih`ghiggecacccccccccccccccWaacca_aacb^W]`YYYT]OXXaaaGW]baacLHT
+ at FCC2HFRACXX:7:1103:6301:12756#TGACCAAT/1
+CCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGC
++
+___ceeeeggfggihhdhhgdhichffhhifddeegdfdaaaaaccccaaaaca^_cbcb]__c]_a]Y`ba`bb_baccccc^^bb]`a[aX]_a_a[a
+ at FCC2HFRACXX:7:1103:18555:25778#TGACCAAT/1
+CTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACAT
++
+___eeccefef^efhhhfgiiieggf_c`eghdfdgecb]a`b`bcacaaaWW^accccaccccccZ]a]_cc]WW^
+ at FCC2HFRACXX:7:1103:11828:26565#TGACCAAT/1
+CGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGATGCCGACCATGGCCTCCC
++
+_bbeeeccgceggiaghiiiegafgifihfhi`dgdfhdfhU`^__a^[^aZOV_T__]`aRROT]^Q]^X^^GSSY`LHO]TYRRW^Y[`_
+ at FCC2HFRACXX:7:1103:11304:31167#TGATCAAT/1
+TGGGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTC
++
+bbbeeeeegfgggiiiiiiiiiiihiiiiihiiiiiiiiihih_dgadgdccc\accbcb^aca^_
+ at FCC2HFRACXX:7:1103:16017:31664#TGACCAAT/1
+GTCTTCGTCGGCTCGGGAATCTTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTG
++
+bbbeeeeeggggghgiidfdcfg]cf[ecIXcaffagh]\`XZLYaFRRZRXWLTT`b]]QW^[XY`^PQ
+ at FCC2HFRACXX:7:1103:1830:33244#TGACCAAT/1
+CACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCG
++
+^^_^acc^ee`c`edWccfaGaRaed]ae\eeeeedhe]`RMG\dec]ac\_aaaW[a
+ at FCC2HFRACXX:7:1103:10914:36685#TGACCAAT/1
+TGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGG
++
+abbeeeeefggggiiiihiicfghegfhihhhhgfeccccccccccccccaccccccccccccccaccccc_cab`a`aaaaccccX_OTb[^`aY]YX[
+ at FCC2HFRACXX:7:1103:8436:37721#TGACCAAT/1
+CGGCGTGGTGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGAGACTTTCTCCGTC
++
+_^_ccW_c`ecgeg^dfgff`f[e`e]Z__U_e_``ZZdc]__bbbbbaaa^b_`[bbaQ[[[^`bWVET_^`_`bRY_TGQ
+ at FCC2HFRACXX:7:1103:3640:39304#TGACCAAT/1
+TGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCGCGCA
++
+_bbeeeeegggggiiifgifhhdgfhhiiifhhihffhhifgggcccce`db`aaa`Z[^_aTTVabbY_RXW`[[`b]`aT[_[`X[[[a
+ at FCC2HFRACXX:7:1103:20809:40434#TGACCAAT/1
+CTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGA
++
+___ec`ccggggghiiihg]gheceac_VbffegU\]]`^abbbbR^^ZWVWW[_^a_[acW[_a]LOQTXXLHQ[RY^aW[T
+ at FCC2HFRACXX:7:1103:10701:49554#TGACCAAT/1
+CTCCGCGATGCGGGCTTGTTCCGGGGTGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTG
++
+_bbeeeeccegggfheg[aecccghcZ``fddeeX]a^cccbccccc__aaaaaa[aa[_bbbbcacaacccc]_aabbbb]a]aX[bb_]^X_aMX__R
+ at FCC2HFRACXX:7:1103:18885:50545#TGACCAAT/1
+CAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTGGTTTA
++
+bbbeeeedggggghihhiiiihhidggbghiiiiiihhhihiiifhiihgdgghihhfhiiiiiagdbhieghiicgghifggggddeaccabbac`Z^]
+ at FCC2HFRACXX:7:1103:5631:52141#TGACCAAT/1
+CCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCAAGCGCGCCGTCACCATCCCCGTCATGGCCAAAGCGC
++
+___ec_cegggcghhffghf[dd^`ZU\b]b^_aaaaY_TYW^`_b_WaXETX[b]bb][RVVaaWZ^a]bbbP[_XEWQ[bb^b`GX[XX_
+ at FCC2HFRACXX:7:1103:2625:53946#TGACCAAT/1
+CCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTT
++
+a__eeeecg`egghfghhihhiihihgS\Z_aaac___ccaccccbb_baaacccW`bbccccb_]``aa^]WTT[[XTXXXX_
+ at FCC2HFRACXX:7:1103:7468:59032#TGACCAAT/1
+GCTGCTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGATGCATATCGAAGGCAGATGGATGGATGGGTGATACAAATA
++
+bbbeeeeeggggehiiihiiiihifgffhhhiihiiiiiiiiiihhhfiihgX`Z]ababb_bbcbbcccccbcc_ac__]bc[^b`acRX[]Y]`b]_Y
+ at FCC2HFRACXX:7:1103:2609:67593#TGACCAAT/1
+CAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCGCGCAGATGCTCCGTGGCGGGG
++
+abbeeeeegggggiihiiiihiiihiihiiihhfiiiiiifghhgecccccccccc`cccccbcccaccccccc]_Xbcbbcccccaccccc
+ at FCC2HFRACXX:7:1103:8738:68263#TGACCAAT/1
+CGAGGATCTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCC
++
+bbbeeeeegggggihiiiiiiiighghfhgafhhhhicggeeeecddddccccZ^acY_`bac[aaca]]^^bbY]`^]aOT[_bbO^^
+ at FCC2HFRACXX:7:1103:9120:68970#TGACCAAT/1
+GCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCG
++
+bbbeeeeegggggiiiihihihhiiii`ghiiiggecccacccccccacccccccccXaccccabcccbcaXX_X^`ac`b_P]XX_`bb^GQXT_]_aa
+ at FCC2HFRACXX:7:1103:20269:70791#TGACCAAT/1
+GTATTAAGTTAGACTAGGCTCCCCTGGTTTATCATGTACTCAATCAAATGTTGAACGGTTTGTATGTCTGTCGCTCTGCCAGCCCTGCTTATGGCTTATG
++
+_bbeceeegggggiiidghhfiiihih[ef`ecfhifhhegiiiihdfdf^cedce^daefbfghfddfbg_gdd^`^ceb_bcb_`abc[_]bKTQY_R
+ at FCC2HFRACXX:7:1103:10802:71133#TGACCAAT/1
+GTGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCT
++
+a__eccecgegfgiiihhhihhfhifghiehfffdcghhiif_eZ_fgccb^^accbab_Za[_
+ at FCC2HFRACXX:7:1103:2290:74271#TGACCAAT/1
+GTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCCAAGCTGCATC
++
+_bbeeeeegeefgiiiffcgXafddgiihihifhgccccccccW`accccbcccccbccccbcbW]]cccccaccaa`X_aaXaacc]_caGGW]S]bbc
+ at FCC2HFRACXX:7:1103:6528:76684#TGACCAAT/1
+TCGACGCCGACGGCCTCGAGGATCTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGG
++
+bbbeeeeeggfeghiiighihihihihiiiigggedcWa\bbccc\ZYVOOT[LYaR]bbbb__baccc
+ at FCC2HFRACXX:7:1103:7705:81342#TGACCAAT/1
+CAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAG
++
+bbbeeeeegggggihiiihhihihhhiihiiighigihhhiihhhihiifhhiihhhhiiggfgeeeccccccc`]bccccdccccccccdccccbbbbb
+ at FCC2HFRACXX:7:1103:17079:81373#TGACCAAT/1
+CCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCAAGCGCGCCGTCACCATCCCCGTCATGGCCAAAGCGCGCATCGGC
++
+bbbeeeeeggfgfiihihiiegeeccccbceaacccccacccccbcccccacaccc_bb_caccaaacccccccc^XO^^[b`accccc^]aacXX[_aa
+ at FCC2HFRACXX:7:1103:15390:86731#TGACCAAT/1
+GCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCC
++
+bbbeeeeegggegfhiihiiiiiiiihiiiiiiehiiiigec\a_cbac[ba_[QYbb_`Y]b`_bcccccTX_acca]T[WTGOX[XXX]aRX[_
+ at FCC2HFRACXX:7:1103:11631:90555#TGACCAAT/1
+CCGGCGCTGACGTCGGCGAGGATGGTAGGGTCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTC
++
+bbbeeeeegggfgiihiifgiZ_eg\bbggHV_abcbbc_bac^a`bccaabcccccWa_Z`bbaccca]_a]aTX[T[^[RX[]WV]_bb]]SYb___R
+ at FCC2HFRACXX:7:1103:9768:91822#TGACCAAT/1
+GTCGACGAGAGCGAGGTCCTCACACCCGCCGACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCG
++
+___eeeeegfffggfhfff`ghfhiiiffhf`ffee`bccccccccbcbbccab[`bc[_b`bcV_aaaY_abW^^b_aacb^a`aO^X
+ at FCC2HFRACXX:7:1103:10253:96457#TGACCAAT/1
+AAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAACTTAGACTAGGCTCCCC
++
+___cccccggee^dcffQ[b`ac]`c^[bbbgfbfdgeXceg]gfd^f_ed_efhc^_[e\ae\ebbfbHW\VVb\\bHVVZ`PTS
+ at FCC2HFRACXX:7:1103:17931:96785#TGACCAAT/1
+GTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCCGCCCTGCGAGCGGATGTCGGCGGGG
++
+_a_eeeecgfggghghhhiffffh`d[bcdddgU`bX]\a^\L]bbXaccaW[[[cTTZaLW^[OWWTVOTXS]POXX]aa
+ at FCC2HFRACXX:7:1104:12013:3094#TGACCAAT/1
+CCACACCCCCGGCCGCGAACTGCACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCGATGCGCTTAGCATACGCGAA
++
+__[ccc^c`eceYbe^eU_eQ_\be`bdeeee^[c^^^aV_QQWW``a[]^X_a^]R]YY`^]^^_]RY`YW^XaX[_T]X]a_a_T[]aYGS]`aaaRT
+ at FCC2HFRACXX:7:1104:7657:9443#TGACCAAT/1
+ATTCCATTCCATTCCAACTCAATCCCCCCCTACCCAGCCCAAACAATGGCGTCGGACGGGAGCGGCGTGGTGACGGTGTACGGGAACAACGGCGCAGCCC
++
+bbbeeeeegggggiiiiiihiiiiiiiiiiifhiiiiihiiiiiifhhhhiggecccccc_acccacacc^_]b^]T`[bccacT]^acc_caccR]X`a
+ at FCC2HFRACXX:7:1104:18693:12541#TGACCATC/1
+GCCGTCGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAACTGCCCAACAGGGCGGCGGC
++
+[__ea_`cegfgfhhhhhhhhehhhhhhhhgfhhhhhhfffddcdN\acbcac^_caTTZ[V_acVV^`_GW``^^GWWGTT[_c_
+ at FCC2HFRACXX:7:1104:1737:13058#TGACCAAT/1
+CCTCACCAAGGTCACGGCAGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGG
++
+bbbeceeeggggfhffiagffhaedbffgegfggh[eg_ffffd\b^\P^_daad_U]`U]`T^_WQZWX_OWXXTT[_
+ at FCC2HFRACXX:7:1104:9247:13508#TGACCAAT/1
+GGTCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGA
++
+bbbeeeeegggaghi_eegfhiihiiiihhhhhihiiihhhifecaaaW_baa^baacccbcbccbbbccbc`b[]]aa__ca_EQO
+ at FCC2HFRACXX:7:1104:19057:13842#TGACCAAT/1
+GGTCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCC
++
+bbbeeeeeggfegiiffhiiiiiifhiihhhhihiiifhhghWN]aYaacbc_XX_[a^acbbcbbY]__]`cca_aa]a__aaR^]b]aaXOX]]XR[^
+ at FCC2HFRACXX:7:1104:6652:34019#TGACCAAT/1
+GTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTG
++
+_abeeeeegggggiihhiifhiffffhhiiiagdgbdgeee^cdbbdcdcacccca`bcbcbacccccccccccYYbbacccbbc_accccaccccX_TW
+ at FCC2HFRACXX:7:1104:9656:40471#TGACCAAT/1
+CGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCCAAGCTGCATCATTAGAGC
++
+__[ace`ccg^egffffhffgcdd_ffdefeefZeU`_`aW^cbbbaXKZ`bbbbb_bGZYGKT
+ at FCC2HFRACXX:7:1104:4882:43361#TGACCAAT/1
+CCGCGACATCAAGCGCGCCGTCACCATCCCCGTCATGGCCAAAGCGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACT
++
+bbbeeeeegggggfhegihiihiiiiiiiihiiiiigggggeeeebcccccccc_aa^bbca^^aa]_]acc__`^bbb_aa__a_Xa]XXTET[T[a
+ at FCC2HFRACXX:7:1104:1688:50861#TGACCAAT/1
+GTCTGCATCACCAAATCATACGGCGCGGCGATGCGCTTAGCATACGCGAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGG
++
+___ee`cegffefhihd`gfffggiihiaefgegeeccbbcbccccaccccccccccccccccccbbbbc_bcccR[aaacccccacccccccccb]bW]
+ at FCC2HFRACXX:7:1104:1814:55634#TGACCAAT/1
+CTCGAGGATCTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGGATGGTGAC
++
+_bbeeeeeegcceegfdgghfhiigfhibfgUV_e_fgedeabbb``]b_b^^\aUX_VRYGY
+ at FCC2HFRACXX:7:1104:13964:57743#TGACCAAT/1
+GTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGCCAGG
++
+bbbeeeeegggegiiafgiihiiiiihaegifhiihfiggecaca__bbccccacccccccaaa]aaaccacX_RX]aaPPXSWWQ[XOTXWX[][X^
+ at FCC2HFRACXX:7:1104:15970:65750#TGACCAAT/1
+CCACCATCGTCATCTTCTCTCATATATTTGTATCACCCATCCATCCATCTGCCTTCGCTATGCATCTCCACTCCGCCGGCT
++
+^__cPccc^YQQ`bcfhh][eXg``aad__[bgdcI^Y^ceeRa^aeacc[e[aeebGVbObehbfSbdS\V\^P\^[KFR
+ at FCC2HFRACXX:7:1104:5753:69503#TGACCAAT/1
+TGCTAAGCGCATCGCCGCGCCGTATGGTTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCT
++
+bbbeeeeegggggiiiifiiihghhiRefhhicfgiiiigggggeeeeddbdccccccccccccccccc^`bbbbbccccccaccacHTT^a`abacac`
+ at FCC2HFRACXX:7:1104:8594:70272#TGACCAAT/1
+CGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCAAGCGCGCCGTCACCATCCCCGTCATGGCCAAAGCGCGAATC
++
+___cee`ceccecf[``fheddcaRRZ_bcaaa_VXOROV_`b]`]T^a[aaaX]b_baaaZRTT_W^bbbbW[^XX[JQYY[XXQ[^RXXaEOT^
+ at FCC2HFRACXX:7:1104:6170:79864#TGACCAAT/1
+GGCCGATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGG
++
+__beee`caecgghfhfhefhh[^cccghOFZeM_eggdda`a\\^a^`b]X`aaW
+ at FCC2HFRACXX:7:1104:12071:82778#TGACCAAT/1
+GTGAGGACCTCGCTCTCGTCGACGTAGTCGACGCCGACGGCCTCGAGGATCTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGG
++
+b_beeeeegggffhiiihhhhiihfgihiiiiiiihagcbccacccccaccbccca_[_a_caZ_a^bcaaaLTX^LOT[]]aGXY]GXYY_^_a
+ at FCC2HFRACXX:7:1104:20929:87203#TGACCAAT/1
+ATCTGCCTTCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCTCATGTCTCTCC
++
+bbbeeeeegggggihihhhhhiiihiihidffhfhhcghcghbghfffhhiffdZbcg`dgd^cbaZ^_]_`b_Z]Z]_bbb_``Z[]`bb_]ZGZ]``b
+ at FCC2HFRACXX:7:1104:5982:97045#TGACCAAT/1
+GGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGG
++
+bbbeeeeegfgggiifdhiiaghhhfffegUaecccdccacZ^_accaccT[_`[[_aaLT[_accca]aR]_][WX]X]aa[_aca
+ at FCC2HFRACXX:7:1104:19682:99500#TGACCAAT/1
+GCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTGGTTTATCAT
++
+b__eeeeegeggghihdehfdca_ggdgibgiffihihihihcfhgfhhhgf[XcR^egfhaacdgbf]\_V\b
+ at FCC2HFRACXX:7:1105:7757:3083#TGACCAAT/1
+CCGACATCCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCAAGCGCGCCGTCACCATCCCCGTCATG
++
+b__eeeeefggecceefhhaefhdUacb[^^_UETWW][PaaaRYWV_^a`_]`N^_T[[abbbbR[LWZ]TTZ^W]Y_baaa][aOGR
+ at FCC2HFRACXX:7:1105:5894:5164#TGACCAAT/1
+CCCCAACCCTCCTCTTCTCCCTCCCCTGACTGGAGAGAGAGAACCTGAACCTTCCCGAGAGGATAGATAGGGGGGACGGAAGGCACCCGCATCGAGG
++
+b__ceeeeggggghhhhihhhgfhihbhfhiiifhfhieffgiffihihihfhihfhadad^adbdb]_]bZ]Y[T[_LO^T^W`GW[aaLXR]baa
+ at FCC2HFRACXX:7:1105:7646:10607#TGACCAAT/1
+CCGGGCCTCATCCGCGACATCAAGCGCGCCGTCACCATCCCCGTCATGGCCAAAGCGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCG
++
+bbbeeeeeggggghiiiiiiiiihiiihiiihggggeeeeeccccccccccccccbcccccccccccccbccccaa_accccccccccccaa[]M^_X_]
+ at FCC2HFRACXX:7:1105:1938:27512#TGACCAAT/1
+GTGCGGATCATGGCGGCGCCCTCACGGACCCTCCGGAGCGCCTCACCAAGGTCACGGCAGCCACAGACGAAGGGGACAC
++
+babeeeeegggggihihihiifhhhhhgdee_ab`a^_caaccccccbWW^R_bc_aNT_G[G[`[^`LTZQX]cXX^^
+ at FCC2HFRACXX:7:1105:3028:31211#TGACCAAT/1
+CCGTCACCATCCCCGTCATGGCCAAAGCGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTC
++
+bbbeeeeegggggiiiihiiiiiiiihhhhiiihiihiiiiigggggeccc]accaacccccccaccccaacaXX_[XOXW[^WW`
+ at FCC2HFRACXX:7:1105:8571:43765#TGACCAAT/1
+AGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCG
++
+bb_eeeeegfgfgihhihihceghfhihhiffgggeeccccccaacccccbcccccccZa_[accc_a]]_acccaTT[[Y_ca]_acXXXX_aab]Y`T
+ at FCC2HFRACXX:7:1105:12879:48945#TGACCAAT/1
+TGAGGACCTCGCTCTCGTCGACGTAGTCGACGCCGACGGCCTCGAGGATCTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGG
++
+bbbeeeeegggggiiiiiiiiiifhfhiihiiiiiffecccccacccaccccbaccccccccacccccaacRX]^]a_]]acbbbcbbbRSQ[_a
+ at FCC2HFRACXX:7:1105:20628:62425#TGACCAAT/1
+CATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCT
++
+_^_eaccaeacagcghdfggfdfffffgdgcf\ceggee`fcgddghhf`efbcbgdg`db]_VZZ^ZZMG]`ZUUTZ]`T\^QT\aaa]^]R^GSY
+ at FCC2HFRACXX:7:1105:3594:73851#TGACCAAT/1
+CGAGAGCGAGGTCCTCACACCCGCCGACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTG
++
+_bbeeeeeeegggihiihifiiiiihecfhfhgdccc_aaabcc]^bcc^`X[`a_bc]a]W^ab```acc[__c_]ba^a^`aET
+ at FCC2HFRACXX:7:1105:19869:79727#TGACCAAT/1
+GTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCACACCCGCCGACGACGCGCACCACATCAACAAACACAACTTCC
++
+__beeeecegeeedegcdcfg_efaYefg_dFV^bedGVZ\`]aca^XVOTTY_cQaaW^^Y`Y]bbcGWWGW^^]]GS
+ at FCC2HFRACXX:7:1105:6280:84664#TGACCAAT/1
+CGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCC
++
+bb_eeeeeggfggiihhfiiiihfhiiiiiihhhiiiiiihiihhihgegggeeaa^\ZZ^bGZ_bY^]X[^]Z_aT]aTaacWX^][_GW`_]a[a[T[
+ at FCC2HFRACXX:7:1105:10628:85592#TGACCAAT/1
+CGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCACACCCGCCGACGACGCGCACCACATCA
++
+bbbeeeeegggfgiiiiiiiiiiihifhhighfgigggeccaccccaac^`aWaaU[UV[`[ZZaT[bbcbabbca]aca_aaL[Xaa_aac[`^]b`
+ at FCC2HFRACXX:7:1106:10519:3964#TGACCAAT/1
+CCTCGATGCGGGTGCCTTCCGTCCCCCCTATCTATCCTCTCGGGAAGGTTCAGGTTCTCTCTCTCCAGTCAGGGGAGGGAGAAGAGGAGGGTTGGGGGGG
++
+bbbeeeeeggggeghihiiidghiiiiihhihihiiiiiihghf`ceebdddddbbcccccccccb_bbbbbccaa_caT_T`bbaaW[_aGW]acccca
+ at FCC2HFRACXX:7:1106:15104:10717#TGACCAAT/1
+CCCCCTTGGTGCGGATCATGGCGGCGCCCTCACGGACCCTCCGGAGCGCCTCACCAAGGTCACGG
++
+_b_eeeeegggcgfghiifffdafdagdgaddaccbbaabaaUWQRV__aTW_a^baacGRYYTZ
+ at FCC2HFRACXX:7:1106:4831:14328#TGACCAAT/1
+CGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCACACCCGCC
++
+bb_eeeeegggggiihhifhifhihfhdhfffhhiiaggdbcbcac_\[accL[ac^Q^_VV[[ZTZ^]LZZEJY]``^bbacT[_
+ at FCC2HFRACXX:7:1106:15276:33344#TGACCAAT/1
+CCTTAGGGTCGTTGAGGTTGATGCCGACCATGGCCTCCCCGAGTCCGGCGCTGACGTCGGCGAGGATGGTAGGGTCGCTGTAGTGGGTGACAGCCTGAAC
++
+bbbeeeeeeggggifiiegfhhihiifhifhhhhhihiihgfffhhigccaaccc_TZ_caaZacT``aSYG[_]^[X]aT]_]^aaHTWY_b`^X[^Y`
+ at FCC2HFRACXX:7:1106:19852:34786#TGACCAAT/1
+CCCGGCCTCCCCCTTGGTGCGGATCATGGCGGCGCCCTCACGGACCCTCCGGAGCGCCTCACCAAGGT
++
+bbbeeeeeggfggiiiighiiihiiiiihiiiegecc^`aa^accccbaaT_Xaac_a_a`aa``GWS
+ at FCC2HFRACXX:7:1106:14122:44676#TGACCAAT/1
+CCTCTCTTTTGGTTTCCTCGATGCGGGTGCCTTCCGTCCCCCCTATCTATCCTCTCGGGAAGGTTCAGGTTCTCTCTCTCCAGTCAGGGGAGGGAGAAGA
++
+bbbeeeeegggfgiiiiiiiiiiiiiifgfhfhffhhihhiiifgfeeeeeeeddcacc_accbb`bbc__bcccbccccc_bcc_bcccR]aaOXXW`b
+ at FCC2HFRACXX:7:1106:6845:47466#TGACCAAT/1
+CCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCC
++
+bbbeeeeegggggiifhgfiiihfgihfggeecaccccccccccccccccccccccaccaaaccbbZaacaccaca_acca_cccX][_TX]Y]b^___a
+ at FCC2HFRACXX:7:1106:10406:50210#TGACCAAT/1
+CCGACCATGGCCTCCCCGAGTCCGGCGCTGACGTCGGCGAGGATGGGAGGGTCGCTGTAGTGGGGGACAGCCTGAACGATGGCACGCGCGCGG
++
+_bbeeeeeggeggiiiiiPd^ddffe_c_ffghefgfabW^^U^bcQRW[aQXTUUXO_`]`aaLV_a^[`^[`XY]`XGQX^X]]_[XXX[_
+ at FCC2HFRACXX:7:1106:17718:58447#TGACCAAT/1
+CGCCTCACCAAGGTCACGGCAGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGG
++
+_bbeeeccegfgedfghdfdghhhbeda_ghfgbghh`ghhhh_bd^d_Z^VZ_]`b]GZ`b]`Z^_\_cXZaX_acaacc
+ at FCC2HFRACXX:7:1106:9381:61139#TGACCAAT/1
+GGCAGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGG
++
+bbbeeeeegggggihiiiiighihiifgheffefhhiihhhbghffd_eggddabaacacaV_a
+ at FCC2HFRACXX:7:1106:18984:61293#TGACCAAT/1
+ATGGCGGCGCCCTCACGGACCCTCCGGAGCGCCTCACCAAGGTCACGGCAGCCACAGAC
++
+___eeeeee_ggcgfhgihhiifhifha`a`abW_bac`aacY`bbW[TT[V^WX[WJQ
+ at FCC2HFRACXX:7:1106:12518:64250#TGACCAAT/1
+GCCTTCCCGAGTCCGGCGCTGACGTCGGCGAGGATGGTAGGGTCGCTGTAGTGGGGG
++
+bbbeeeeefggcghhhiiifdheheghihf\`a[bbcU]_aa]`aacc[`bccacET
+ at FCC2HFRACXX:7:1106:4033:64596#TGACCAAT/1
+CGCGCCGTCACCATCCCCGTCATGGCCAAAGCGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCG
++
+bbbeeeeegfggfiiiiiihiiiiiiihihhdfhihiiigggeecdcd\baccacccccccbcccccVWZaccac[_aaX_[__W[b[[^]aaaRTX[^_
+ at FCC2HFRACXX:7:1106:5545:68939#TGACCAAT/1
+CCTCCACGATGTTGCCGGTCCCGGCCTCCCCCTTGGTGCGGATCATGGCGGCGCCCTCACGGACCCTCCGGAGCGC
++
+___eeeeeegfgghiihhe``efhhifhdfhffcefbffgaddd_cceZ]____aaTW[`^[VV_a[^_ETXTEOT
+ at FCC2HFRACXX:7:1106:13935:76457#TGACCAAT/1
+GTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCACACCCGCCGACGACGCGCACCACATCAACAAGCACAACT
++
+bbbeeeeegggeghiiiihiiiiihghhfaa`cbccaccc^acccaT_W_^TTXaV^bbb`ac`accaccZa_ETX_OT[_c[``]_bcbY^^^^bbccb
+ at FCC2HFRACXX:7:1106:10384:82155#TGACCAAT/1
+TGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGGCG
++
+___ccc`ceYb^ceYeeg_effcggfffffFWSYN^cd\``_^^FHT
+ at FCC2HFRACXX:7:1106:12148:94474#TGACCAAT/1
+TGCGCGTCGTCGGCGGGTGTGAGGACCTCGCTCTCGTCGACGTAGTCGACGCCGACGGCCTCGAGGATCTGCGCCTCGACGA
++
+_bbeeeceggggghhhhLXX\_bb_`aR]\^[^[_Z^a_VaUVa[W_a[_aacWLX_WT[TWV[a_ZXX`YGTO]OTTT[_O
+ at FCC2HFRACXX:7:1107:12148:13865#TGACCAAT/1
+CTCCGGAGCGCCTCACCAAGGTCACGGCAGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCG
++
+bbbeeeeegggggiihihiiiiiefghH^e^f]eghhffghedde]b\`[^NZ^T]b]^b_bc^`^R]bSS_R[YTTXT[_
+ at FCC2HFRACXX:7:1107:12090:73635#TGACCAAT/1
+CCTTGGTGCGGATCATGGCGGCGCCCTCACGGACCCTCCGGAGCGCCTCACCAAGGTCACGGCAGCCAGAGACGAAGGGG
++
+_bbeecdeggfggffffhfcdfegghSbM\`dN\]bdcc^aW^\_TYWW_aab^[^RYbbZaaaaW`W[GW[^QT[Q[_a
+ at FCC2HFRACXX:7:1107:5346:89535#TGACCAAT/1
+GTCACCATCCCCGTCATGGCCAAAGCGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCC
++
+bbbeeeeegfgggfhhhhihiiiihfhifehhhdfhhihiiihgfgdebaaacacccccbcaZacccac_acaOTOX][XJ[``aT]_aEOX`XT[aOX`
+ at FCC2HFRACXX:7:1109:6882:8797#TGACCAAT/1
+GCGGGGTCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCC
++
+___eeeceggggfd_ffhiffghhiiihfhffggggdgeab`aaccccccW^a`accaccZaa_a_T]aTX[`Yb`a_aa_[^b]_TTT[aa
+ at FCC2HFRACXX:7:1110:1464:36301#TGACCAAT/1
+CTCCGGAGCGCCTCACCAAGGTCACGGCAGCCACAGACGAAGGGGACACGGAAGGTGTGCTTGTTGGTGTGGTGCGCGTCGTCGGCGGGGG
++
+bbbeeeeegggfgihiiihiihhdhehffgfgfhhiiihfheggeW`^abaW^aGY`]^`bbcabWGW[WO[R[STT_T[aX^acacacXa
+ at FCC2HFRACXX:7:1113:17227:7535#TGACCAAT/1
+CGTTGAGGTTGATGCCGACCATGGCCTCCCCGAGTCCGGCGCTGACGTCGGCGAGGATGGTAGGGTCGCTGTAGTGGGTGA
++
+aa_eeeeeegggghifhfhiiiiihihhiiiihhdgfdghiggeeeccacc^aT[aV]]^GR]^cX]aaZ_a_`GGQ^OTP
+ at FCC2HFRACXX:7:1113:2047:83280#TGACCAAT/1
+CTTCTCTTTTGGTTTCCTCGATGCGGGTGCCTTCCGTCCCCCCTATCTATCCTCTCGGGAAGGTTCAGGTTCTCTCTCTCCAGTCAGGGGAGGG
++
+___eeecdggffeeehhdhfhhiiii`ccghSccdgffhffhigddgbceeccbbbW^_NQ[_TRGYYYTGS]`b_`SY_bY_Y]Y]RPTT[[_
+ at FCC2HFRACXX:7:1114:6393:73852#TGACCAAT/1
+GTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGG
++
+__beecccefgg^gf_`fc_\_edfghffdP^b[`cRRFR
+ at FCC2HFRACXX:7:1114:9800:90016#TGACCAAT/1
+CGCAGATGCTCCGTGGCGGGGGCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCG
++
+bbbeeeeegggggghihiiiiFXZ^`]]`bY`^UVVV^QW_acV_T_aacb^ac[aLOTV^T_RW]^a^W[TTLTTTOW^_[]O
+ at FCC2HFRACXX:7:1115:10995:43390#TGACCAAT/1
+GGCGGGGACGCGCTCCAGCGCCATGACGGCGCAGGCGCCGGCTTCCTCCGCGATGCGGGCTTGTTCCGGGGTGACGACGTCCATGATGACCCC
++
+bbbeeeeegfggfhiicdgedeaccddac\a_accacaa_aUR_^b`]`[_WTXWaaaa[[`Z[b]bLTZ]TXQ_[W[_[]aGS]_RY]Y_aa
+ at FCC2HFRACXX:7:1115:3865:85768#TGACCAAT/1
+TTTTTTTTGAAGAACATGTGATTCATTCATTGATTCATCATTCATAAGCCATAAGCAGGGCTGG
++
+Z^^ac_ccb^`S[^X^df[bbg_ab[afghfcg[^aX_c_aegbgbfhhf`ed]S_\bfNP^FT
+ at FCC2HFRACXX:7:1116:2899:50522#TGNCCANT/1
+CCGGCGGGGACGCGCTCCAGCGCCATGACGGCGCAGGCGCCGGCTTCCTCCG
++
+__becee]`gg`U^abcc`bb^aca__`b^aaa_ccaaPU_TRYTYWWR]XO
+ at FCC2HFRACXX:7:1116:14958:80448#TGNCCANT/1
+TCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGAC
++
+Z_^cce`ccaeS`a`dghdf_g`YYffXZaef_defhO^`e_[`S^^[b[UX^FKO
+ at FCC2HFRACXX:7:1204:5783:11609#TGACCAAT/1
+CTCCGCGATGCGGGCTTGTTCCGGGGGGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGC
++
+_bbee`cefefggfdfgecgbgfh]_FOUX_U_OEO[Wa__b`_bc[^[ac[cccWa_^bbcbbccaTZaa
+ at FCC2HFRACXX:7:1208:15273:53625#TGACCAAT/1
+CCTCTCTTTTGGTTTCCTCGATGCGGGTGCCTTCCGTCCCCCCTATCTATCCTCTCGGGAAGGTTCAGGTTCTCTCTCTCCAGTCAGGGGAGG
++
+bbbeeeeegggggiihiihihiiiiii^eggghfhhiihiiiigggeeeeceeddccacX^acR_bbbc]`_bcccbcccc_bccbbbccaca
+ at FCC2HFRACXX:7:1208:4746:76848#TGACCAAT/1
+GCCGCGATGCGGGCTTGTTCCGGGGTGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGATGGAGAAAGTCGCCGACTTGG
++
+_bbeeeccggcgfhhiY^ffhffhifffefZa]]`^P_bcbb`_`acccc_aaa_ccab`bbbaaZOV_]aa_aaa``bGY]X`bWX_SJ[[^[RT[abb
+ at FCC2HFRACXX:7:1210:20434:50036#TGACCAAT/1
+CATTCATTGATTCATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACA
++
+\^W`accc^YbcY`ba]dedc_YY`ded]^bdehh_dd]c^caacc`c_YY`dhh`Ybdcb\b`Z^_R^cR
+ at FCC2HFRACXX:7:1212:13462:36526#TGACCAAT/1
+CTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGGACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATT
++
+^[^^ccZaeYQ[beehh]Ueeedb[_IYbYXdPYXYI^a^afd_bXcabeGXXWaaebceW\__cbZc_bZ`d]daac_]_a`U]]]a__GLZ`aaZ]ZT
+ at FCC2HFRACXX:7:1214:12805:78804#TGACCAAT/1
+ATCAAATGTTGAACGGTTTGTATGTCTGTCGCTCTGCCAGCCCTGCTTATGGCTTATGAATGATGAATCAATGAATGAATCACATGTTCTTCATCCGGTC
++
+bbbeeeeeggffgiiifgiegfgfgfhghhhiifgihiihiihihihihiihihgdhbfge]cg_`d_bbgd`bgb]acecddbbddd_bb_`c`b_a\\
+ at FCC2HFRACXX:7:2110:7919:15273#TGACAATC/1
+CGGGGACGCGCTCCAGCGTCATGACGGCGCAGGCGCCGGCTTCCTCCGCGATGCGGGCTTGTTCCGGGG
++
+aa_eeeeeggggfiiihiYcghihhhidggggeecccccccabcbbcaWXT[WaWaa_aaLJ]Y]LOZa
+ at FCC2HFRACXX:7:2113:10117:75866#TGACCATC/1
+CTACTGTATTAAGTTAGACTAGGCTCCCCTGGGTTATCATGTACTCAATCAAAAGTTGAACGGTTTGTATGTCTGTCGCTCTGCCAGCCCTGCTTATGGC
++
+_V^ccdacgcccceffihfigfhiifhdggbfH^bfhfhbghaecdcfghii_OIOX^^bggfT_`cbfZ_ddddg``aa\^`Z`bb^^^^`^bc``]RX
+ at FCC2HFRACXX:7:2115:7974:84543#TGACCAAT/1
+CGATGCGCTTAGCATACGCGAACACCT
++
+^PY`cce`cgfggfdf`e_`fg`aeHO
+ at FCC2HFRACXX:7:2116:16331:24258#TGNCCANT/1
+TGATGCCGACCATGGCCTCCCCGAGTCCGGCGCTGACGTCGGCGAGGATGGGAGGGTCGCTATAGTGGGTG
++
+___eeceeceggghhiiiiiiifcfZeegf_agdWdbddeecccZ_WO]`^GRWYL[b[_VOOR_]``^EO
+ at FCC2HFRACXX:7:2208:20999:62970#TGACCAAT/1
+CGTCGGACGGGAGCGGCGTGGTGGCGGTGTACGGGAACAACG
++
+^^Zccc`YcccYcccc`c_ccU_G\NUFXU]]]^^KRW\^[V
+ at FCC2HFRACXX:7:2213:20934:38627#TGACCAAT/1
+GTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGCC
++
+___ee`cc[aegfdgfc``gbgghfZaRbe]Rbeff`e`dacghghcfhhdWa`]aTZb_aaTVEO
+ at FCC2HFRACXX:7:2311:18581:78965#TGACCAAT/1
+CCGTTCAACATTTGATTGAGTACATGATAAAACAGGGGAGCCTAGTCTAACTTAAT
++
+^^_Y`^cW`cZbafSb^`ceJYY^agbeeeeJQbdXHYbaddd_ZcecXc_`_ce[
+ at FCC2HFRACXX:7:2314:7565:4236#TGACCAAT/1
+GACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCTAC
++
+___ccccc^egcc_deee]d_g^ZXYaXSYcbXc[afga``_\a]aWVEOT[^aGY^
+ at FCC2HFRACXX:7:2316:14788:22713#TGNCCAAT/1
+CATGTACTCAATCAAATGTTGAACGGTTTGTATGTCTGTCGCTCTGCCAGCCCTGCTTATGGCTTATGAATGATGAATCAATGAATGAATCACATGTTCT
++
+_bbecdeeggcgghhfhhhghfhggicgfhhhefhihigfbgfhhhhfbI^cfghhhhdffhghefhbbgdbgeedd_acaabdcb[`]`bcc`cc`b`b
diff --git a/test/data/150uncovered.r.fq b/test/data/150uncovered.r.fq
new file mode 100644
index 0000000..e7ac28d
--- /dev/null
+++ b/test/data/150uncovered.r.fq
@@ -0,0 +1,892 @@
+ at FCC2HFRACXX:7:1101:2015:1981#TGACCAAT/2
+CCCGGCCGCGAACTGCACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCGATGCGCT
++
+___cccecec`eghfRc`efgfhaeefgiicccc^aX_]Y`bbcYbW`_XX]bbbbccccb`bbaa]_TTXTZTXT^[[_
+ at FCC2HFRACXX:7:1101:7968:3054#TGACCAAT/2
+TCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAG
++
+___ea`e`cgegf^b`bbdgfffhdhhfhgheihfhihhiS\[RKWTL[`YX^_acccccccbcccbbc_abcR]]aXT[_]EQ
+ at FCC2HFRACXX:7:1101:18523:3712#TGACCAAT/2
+CATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCT
++
+^_accacagggabbfa]_f`Z_cgfYcZ_[aeggiihaeaeggghgdg_g__gghVb^``d`bdcaced^`__RW^^bbbcbcc]_]]b[]c]_`SY`YY
+ at FCC2HFRACXX:7:1101:6215:4551#TGACCAAT/2
+GTTGATGCCGACCATGGCCTCCCCGAGTCCGGCGCTGACGTCGGCGAGGATGG
++
+_a_e`ccaeeegeafffhh[ffghd_cY^XZefff_d[`gGXKXW]_aaTX_^
+ at FCC2HFRACXX:7:1101:9701:4567#TGACCAAT/2
+GGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGC
++
+a_beeceegggggfghih`ffbgghhhffbffbfgfgfhdfdffghfghigegdgfhi_addeeZabbbbcbcbcaZ^ac[bbacXaTT^^a_
+ at FCC2HFRACXX:7:1101:20111:6108#TGACCAAT/2
+CAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAGAAGACACAAAAATAAAG
++
+bbbeeeeeggfggiiiihiiiiiihhffi_ffeghhihfhfhfiiihiffedgfhhbfghiihiifeggcgeceeeeedcddddd`bcccccaac^bbc]
+ at FCC2HFRACXX:7:1101:2825:6457#TGACCAAT/2
+CGGCCTCGCGCAGATGCTCCGTGGCGGGGTCATCATGGACGTCG
++
+b_beeeeegggggghiiiiiighhiiiicFXZZ]___bGYZKUV
+ at FCC2HFRACXX:7:1101:7858:6597#TGACCAAT/2
+TTATTTTGTCTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTT
++
+bbbeeeeegggggiiihhiiiighhiiifghhhhhiighiihhhhiiihhhhhifhihhihhihiihi`fhiiiggggggeeeeddddddddcaabbbcb
+ at FCC2HFRACXX:7:1101:5948:9388#TGACCAAT/2
+GAGTGAACAACCCTATCCGCTCCACCATCGTCATCTTCTCTCATATATTTGTATCACCCATCCATCCATCTGCCTTCGATATGCATCTCCACTCCGCCGG
++
+abbcceeeggggefaffggfhiaafghabeffedeaebgfhfdddgafffegfhhhfghgfbdggbbdgdb^d_adcd^cca__b]]_b]_bb^b[_aac
+ at FCC2HFRACXX:7:1101:1327:10285#TGACCAAT/2
+CCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGG
++
+a_beeee_eeggcghfhfdfhicffhdddeadb_accbb`a_\_cccbcaY[_aacccc[_caabccccZ_accccccccc_c_[accc
+ at FCC2HFRACXX:7:1101:8651:10922#TGACCAAT/2
+ATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGATGCATATCG
++
+bbbeeeeegggggiihiiiiihihhihiiihhhiiihidghhefgfhifhghhihhihhhighhghgiihfhhigggeedcccR[Q^abcbbcccccbba
+ at FCC2HFRACXX:7:1101:20856:13766#TGACCAAT/2
+ATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTGGTT
++
+___eceeeeeggfhfbfhfhiiihhi`_gfghiicgfhihhhhhihhiihfghhghhceghefhehhiifhhfghfdgfb_VMM\HZ]b[bb`cbbac]_
+ at FCC2HFRACXX:7:1101:1878:16590#TGACCAAT/2
+ATCCATCTGCCTTCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCTCATGTCT
++
+abbeeeeeWegegihagfhidagdghdgcfgdgfhafO_`_bf_eecgdgefhfdgicgdddgggccdeebcY_bca^`c`bbbbcbcd_[bb`b`YYY_
+ at FCC2HFRACXX:7:1101:14970:16874#TGACCAAT/2
+TCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCTCATGTCTCTCCATCAGTAA
++
+__aeeeeeggggghhhiihidghhidfggdfghfihhffhfghfbegdfhbfgfhhfgcbd]bdea]adedddcdcdbcccccdbbbcbc`b]`b[`bcb
+ at FCC2HFRACXX:7:1101:19160:19344#TGACCAAT/2
+GGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGATGCCGACCATGGCCTCCCC
++
+_baecee`eggggbed^fefhfhhhadfh[eeggd[X\a_P^Z^a^c__c]`ba]baU[[WR[JWXR_bY]ZOXaL_RRQ]b`^_c
+ at FCC2HFRACXX:7:1101:20663:24038#TGACCAAT/2
+TGGATGGATGGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGG
++
+___^Ycccegg`beZ_edfddffhJWRbegbgbgfhdcdg]^c_agecgfacdgdhW_d^gV_dX[``bdZ`WW^]b`]_T^
+ at FCC2HFRACXX:7:1101:8756:24567#TGACCAAT/2
+CAGGCGTGGCCACACCCCCGGCCGCGAACTGCACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCG
++
+___eeeeegggggiifhiffhihihhfU[^_dbddb^b^aaaaacccT_c^`accbcc`_RYbbccbbccc]`[_Y`b`]aaX[[aXEO
+ at FCC2HFRACXX:7:1101:15803:25761#TGACCAAT/2
+CGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGATGCAT
++
+_b_cceeefffgfiihdhhegfihcgghhiihhfgbggfhhhhhhhecedfffffgfgffbfgfhhgfhfdgghggdgfgde]`]acaa[^VGQX^bYYR
+ at FCC2HFRACXX:7:1101:5766:26080#TGACCAAT/2
+CTTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCC
++
+^__`ced]cK`c^fgH_ee^\cdg_aedffd[`FXXZ]_b^\QXG]`b^_`_bb_`OW^^bcbYT]TZabcc[bcb^bb[aX]EO[Xaacbaca
+ at FCC2HFRACXX:7:1101:7987:27278#TGACCAAT/2
+CACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTCGGGGATCTT
++
+bbbeeeeeffggfhhhhhfiiiihhiiddhiihihii\eghfh`g]a]^a^]`^a_a_caZaaETOWbb
+ at FCC2HFRACXX:7:1101:17662:30576#TGACCAAT/2
+CTTCTCTCATATATTTGTATCACCCATCCATCCATCTGCCTTCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTTTTGCATTA
++
+_a_ceeeefegfgihhieihfhhihfghhfghh_ghiiiighiiihiiiiefhiiiiiiiiiiiiggccdbdcbbbcbb``bbbbcd_bcddbcY_Y_cb
+ at FCC2HFRACXX:7:1101:4976:31550#TGACCAAT/2
+TGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCAAGCGCGCCGTCACCAT
++
+aZ^c`c[YYcRbegfgfgidfgegfcfgf_adgeccU^aaVZY_a_acca[aaT_WY]baVTVaZ]]_TW`]Y`_aa]cc]abb]]_^]XXX]HT^_bcY
+ at FCC2HFRACXX:7:1101:8850:31628#TGACCAAT/2
+GTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGGGTG
++
+b_beeeeegggggiiihihiiiihifhhiiifgggeegeeeccbddddbcacccccccccccccccccccccccbccccb]_bbcccccaccccccETOX
+ at FCC2HFRACXX:7:1101:6311:33629#TGACCAAT/2
+AAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGG
++
+_b_eeeccgegefihhhhfhiiihhhha_`FX\``aaac[_b^`ba_WX[YT[aaaacacbaaaRZV^bba^accacaaX[TT]W`bb_bYGS]Y]]Y_b
+ at FCC2HFRACXX:7:1101:16617:35398#TGACCAAT/2
+CTTCGTCGGCTCGGGAATCTTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCC
++
+bbbeeceeggggfiifheffhhhifg`Xacbfgfgh`XbdfZ`gU]^aW\OTVXabbba^a_b]bccaabccccac[^`Y]b]XEOXXR[aR]]abb[[a
+ at FCC2HFRACXX:7:1101:5129:41564#TGACCAAT/2
+CGCGGCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAACTGCACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCG
++
+___ecceegggggihihiiiiihiiihhiifhhhgebaaacbbbbbaa``W_accacccccaaccb`bcb[Y_bbbcbbbccbccbS__Y`aa]__aca]
+ at FCC2HFRACXX:7:1101:10393:43005#TGACCAAT/2
+GTGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGGCTGCTTTGAGGGTTCCAGAAGGG
++
+a__eeeeegggggiiihhiiiiiiiiiiiihiiiiiiiiihegecaca^cacccbccccaccccY`^a[aacccbcccbcccccb_^b_W``bcbccbca
+ at FCC2HFRACXX:7:1101:10247:49111#TGACCAAT/2
+CCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGGCTGCTTTGAGGGTTCCAGAAGGGCTGCGCCGTT
++
+bbbeeeeeggfggiiihiiihiiiiiihiiihiihhhggeccddcccccccccc`bcccccccacccccZa`bcb`aca[a_bbbbcccccacac]__T]
+ at FCC2HFRACXX:7:1101:16334:49689#TGACCAAT/2
+CGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCATCGTCATCT
++
+bb_eeeeegggfgiefhhihiiiiiihiifffhhhihhiihVbgggcebc\aa^accccacccccccW^bc]b^`^[abcbc^[][[]X`W]]WWW[W_b
+ at FCC2HFRACXX:7:1101:4903:52289#TGACCAAT/2
+CTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAACTGCACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCATCACCAAA
++
+bbbeeeeeggggghfihfhihiiiiiiffgggdhiiihiggg^`]a^___VX`cbbcccca``cccc__]]aa[`abbbbc[VS]_bbbbbbc[GQ^
+ at FCC2HFRACXX:7:1101:7290:52681#TGACCAAT/2
+CCCATCCATCCATCTGCCTTCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCT
++
+bbbeeeeegggggiiiiiiiiiiiiiiihihihiiihhhhiiiihiifhifgfiiiggggegeeeeeeedddbcdddccbbccabbc`bbcY_bcccabb
+ at FCC2HFRACXX:7:1101:15630:52667#TGACCAAT/2
+CGCGGAGCAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTC
++
+_abeeeeegggeghdcgghagfhiiiigegggeeecccccbccaccaccc_cccccabbaaccZacaca_ZaccX]aaacccV]XY]acX_acL[XT][[
+ at FCC2HFRACXX:7:1101:2561:53863#TGACCAAT/2
+CTTATTTTGTCTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCT
++
+_bbeeeeeggffgiiiggihiiifhhhhggghgfhhddfggfdefbffgiifghhhhdghhhhhhiiiicdghfgggfggceadbbdd`bbddc^`bcbc
+ at FCC2HFRACXX:7:1101:3406:56187#TGACCAAT/2
+GAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTGCCGGTCCCGGCCTCC
++
+___eecacgeegcegfffhfh_ghehii_ffhhhhhieafdhf^ghhfdgbccabbca^c^bbccccccca]aaccLX_R[aac]b_HXT[]a_a_TT^a
+ at FCC2HFRACXX:7:1101:1778:57411#TGACCAAT/2
+CTCCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTGCCGGTCCCGGCCTCCCCC
++
+Z_^cccee]beSbffhfgXhf[degdhWcdf`efceghdbcfdggcgg`dX^`]aaFZ]bY`Y`bb]aTXTPXacccc^[Y_`b_aaLT^OXaa_a_^aa
+ at FCC2HFRACXX:7:1101:7177:57638#TGACCAAT/2
+CGAAGGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGTGTAT
++
+_b_eeeeegegggghgighiih`ffhiiiiiifhihhfhhihihiiiiiihhhihhifhhhgddedcd_baaab`bbbac\_]YY`bccLXOS_
+ at FCC2HFRACXX:7:1101:18318:59298#TGACCAAT/2
+ATCCATCTGCCTTCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCTCATGTCT
++
+Z\^c`cedggf`eb^`afeg_a`bdegaf_fg`egfaYcfe`egd]`Z_bZ_cfghZ_RR\^d`dUaZ_c_b`bbUTTT_YbbbT]bc_]^bbRGZTY_c
+ at FCC2HFRACXX:7:1101:10947:60766#TGACCAAT/2
+TACGGCGTCTTCGTCGGCTCGGGAATCTTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCA
++
+abbeeeeegggggihiiihifhi_ecefgfdfhfh\_cfgcaccRU\Z_a^_\a[aTQZZa[ab`b[^aa^Y`b^^`bbb`a[a`]`b]`O[accRX^`b
+ at FCC2HFRACXX:7:1101:6033:61578#TGACCAAT/2
+CCCAAACAATGGCGTCGGACGGGAGCGGCGTGGTGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGCCG
++
+_bbeeeeecgegehffhfhhfgh__`gffd\`bMZZ]_aNXFY_X__ET^^^^acW___cZ`abbbbb_Y`bacaaW]`bccb^aa[`aY_O[_a
+ at FCC2HFRACXX:7:1101:9064:63291#TGACCAAT/2
+GAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCG
++
+____aceegegcgfhf^egf^_cghfafdfhfecbdbdccccccc[^acc[aP[aacaZaca[[]]T][[bcaaa[]XT[_aT]GT^b[_^SYYT]ETX_
+ at FCC2HFRACXX:7:1101:13801:64275#TGACCAAT/2
+GTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCC
++
+b_beeeeeggggghhiiiiiiiihiiiiiifhdfghifihggee[]aacaacbcccbbccccccccccacccccccca[THT_Xabcaa_cc
+ at FCC2HFRACXX:7:1101:15417:65582#TGACCAAT/2
+GCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAG
++
+bbbeadceggggfihhfag^efXegdghiiffgXegfWcdPZbghcV_egdb_gbdgggggb`bc_a]]RZU\^aY__^bbcbbbbbc_`bbccbbbS]]
+ at FCC2HFRACXX:7:1101:8403:66552#TGACCAAT/2
+TGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCGCGCAGATGCTCCG
++
+abbeeeeeeggggiiihfhhdgfegfhhhiiiiiiihihiggdgdeeacd`bbcccbcac_cacccccccc_accccbbcccaa_c__T]]a[__]bbb]
+ at FCC2HFRACXX:7:1101:10617:71584#TGACCAAT/2
+CTCGCGCAGATGCTCCGTGGCGGGGTCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGC
++
+bbbeeeeegggggiiiiegiiiiieKX`bbbb`bZ`ZZ^_^[`ab_aT[VY_W`RW^a_c__aa_Z]Zac^`[P^X[RXR]T`^[ac]LXGQY_`
+ at FCC2HFRACXX:7:1101:12027:71848#TGACCAAT/2
+GGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAGAAGACACAAAAATAAAGAGGTTCTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAGT
++
+_bbeeeeegfgcefhhiihiiihiiiiidhiiiihhihfhdhhfhhfhiighfhhihghhihhffhhdghiiiggfgggeeeeeddddccdcbbcceccb
+ at FCC2HFRACXX:7:1101:3054:72468#TGACCAAT/2
+CGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCC
++
+bb_eeeeegfggghhhiiiifhhiifhiihiiiihhhhiegdggg^a]bc^acccaacccccbbcbdcccbcccbccccccc[_abcccccbcc_aaa^_
+ at FCC2HFRACXX:7:1101:14667:72258#TGACCAAT/2
+GTTGTTCACTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGATGCCGACCATGGCCTCCCCGAGTCCGGCGCTGACGT
++
+__[cccecgfggfggiiihhfhcaY_bfhdZ`d`ddadecebZ]ZRX^T_[TXX]__TYVZ[[abccabR[W_aa[a[`][_]aXXXLX[^
+ at FCC2HFRACXX:7:1101:1773:75211#TGACCAAT/2
+GCTTATTTTGTCTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTC
++
+bbbeeeeegggggiiiiiiiiiiiiihiihdghghiiiieghiiifhhiihhfhhiihiiiiihihifiighigggggggeeeeeddddddcddca`bbb
+ at FCC2HFRACXX:7:1101:9079:79829#TGACCAAT/2
+CCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTC
++
+_abeeeeeggcggiiiiiiiiiifiiiiigU]^aaccccc^acccccbbcbbcccacccccccbccccccbcc[]_aa]acccT[T^``^^X]]_a
+ at FCC2HFRACXX:7:1101:5691:80221#TGACCAAT/2
+AGGTCCTCACACCCGCCGACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGC
++
+__beceeegggfgiiiiidghihhdgffgfdceecbdddcbcccccccccba]^aabbccccaX^aa]bbaac_a[X_G[bbbbcY[Y[[GHT
+ at FCC2HFRACXX:7:1101:12818:82404#TGACCAAT/2
+CAAAAATAAAGAGGTTCTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACT
++
+bbbeeeeegggggighiiiiiiiighihiiihiiiiighiiiidhhfhihfhhiihiiihighiiiiiihhiihhhiggggeeeeeddcccccbcbcccc
+ at FCC2HFRACXX:7:1101:11453:83437#TGACCAAT/2
+CGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGGATG
++
+bbbeeeeeggggehiiiiiichiiafafggeccc``b\^acccccccccc[acccccc_aT[ccacccV]a_accacca_acRTXX]EO[
+ at FCC2HFRACXX:7:1101:2741:85193#TGACCAAT/2
+CGCCTCACCAAGGTCACGGCAGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGG
++
+bbbeeeeegggcgdghifgHbeghfdeffghehfhih_Wef`g_dgV^_ZZ_cdb]``_bb]bbZ^_aac_acaaaaaa]c
+ at FCC2HFRACXX:7:1101:11726:85018#TGACCAAT/2
+GAACAACCCTATCCGCTCCACCATCGTCATCTTCTCTCATATATTTGTATCACCCATCCATCCATCTGCCTTCGATATGCATCTCCACTCCGCCGGCTT
++
+bbbeeeeeggggghiiihhhiihihihihihhihihfgghghfhiiihihefhhiiidhfhhiihddgdgegfeeeecdbddbbcbbcccccaa_]_c_
+ at FCC2HFRACXX:7:1101:19534:85665#TGACCAAT/2
+CCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCAT
++
+[[_ceeeegcacUfgfgacdg`]dX^^fghOGZe_d_Z`g]^a^W\^^_Z[TTT^GJR
+ at FCC2HFRACXX:7:1101:5108:90121#TGACCAAT/2
+TGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATA
++
+abbeeeeegggggihihhhiiiiiiiihiidhiiffhifhihhihhfghhe_cdfghhdggefgeeeca`caccccccdccccccbdcbb`bccccdccc
+ at FCC2HFRACXX:7:1101:18115:92647#TGACCAAT/2
+ATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGTACTAT
++
+_abeeeeeggggghhiiiihiighihiihhhiihiiihhifgghhifffibfghghibghhiifhfhdhhhffgdgbbgeeec_Z`dbbdcbbc__bbcd
+ at FCC2HFRACXX:7:1101:2344:93442#TGACCAAT/2
+GGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATA
++
+bbbeeeeegggggiihhhfhihihhhhhiiihihghffifdggihaggdebfgfhigfgggggedecccaaccbccccdccccdcccc_bccccbcdccc
+ at FCC2HFRACXX:7:1101:6031:96678#TGACCAAT/2
+TCTCTTCTTAATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAA
++
+___cccceggcgghhhhiedffhdgihfiffigeffceghfhhiffgdfhhhhhhiihgfgghgfgdbfYbgcaadgded`ced]_^bbbbdbb^a^
+ at FCC2HFRACXX:7:1101:15323:98549#TGACCAAT/2
+CGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCC
++
+aa_ePcceggggehiiiiihiihiifdhchiehghiiiihiihiiiiifggeeccccccccccaccccddccc`ccbbccccccccccccccccccccac
+ at FCC2HFRACXX:7:1101:5063:100089#TGACCAAT/2
+AGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATAGGCCGCCAGAT
++
+_abeeeeegggggiiihhigfhhiiiihiiiiiigecccaccc^acacccbcbcccaccccccccccbbaacccbbccc_baccaaaaaR`bccac[]__
+ at FCC2HFRACXX:7:1101:16571:100277#TGACCAAT/2
+GTGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCGCGCAGATGCTCC
++
+__ZcceccggfegffW_aa]cfhUc]`eghdhhiihihihfdZacb[]]ZZ_acc^^bba_ac[]aaccc`_a``acbb`bcca[aaXT[]LTX_`Yb`b
+ at FCC2HFRACXX:7:1102:8089:2409#TGACCAAT/2
+CGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCCGCCCTGCGAGCGGATGTCGGCGGGGACGCGCTCCAGCGCCATGAC
++
+bbbeeeeeggfggiiiihhiheihhiiii`egiefeeecccccccccccaaccccccacccccccbccccccacTETXaRTX[YS]T[[TOYS_
+ at FCC2HFRACXX:7:1102:10502:4703#TGACCAAT/2
+GCTGCTTTGAGGGTTCCAGAAGGGCTGCGCCGTTGTTCCCGTACACCGTCACCACGCCGCTCCCGTCCGACGCCATTGTTTGGGCTGGGTGGGGGGGG
++
+bbbeeeeegfgggeghiiiiiiiiiiihhihihihceegifghihhehig`geeeeccccccccccccccccccaccc`bbccaccaccXT_cccccc
+ at FCC2HFRACXX:7:1102:12414:5238#TGACCAAT/2
+TCTTCTCTCATATATTTGTATCACCCATCCATCCATCTGCCTTCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTTTTGCATT
++
+bbbeeeeeggggghiiiiihihhiiiiiihhihiiiiiiiiiihihihhhghhiiiihiiiiihhigeebdddddcccbbccbbccbcbb`ccccU_bcc
+ at FCC2HFRACXX:7:1102:20475:6595#TGACCAAT/2
+CAAACAATGGCGTCGGACGGGAGCGGCGTGGTGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCT
++
+bbbeeeeegggfgiiihiiiihihhihgaecZ`bbcc_aZ_baccXW[`caccaccaaaccbcbc_b]]^aaacacc_bcbcccac[SS[a[]X]aabY]
+ at FCC2HFRACXX:7:1102:1964:7116#TGACCAAT/2
+CGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCCGCCCTGCGAGCGGATGTCGGCGGGG
++
+abbeeeeegceeggfggiiiihfdgehihhhiddebdcbcaN^aQ\TX_a[bccccaccLZaac]aacc[`]]aa_cccc`b^]acccc
+ at FCC2HFRACXX:7:1102:10385:11914#TGACCAAT/2
+GTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGATGCCGACCATGGCCTCCCCGAGTCCGGCGC
++
+_aaeceeef`gggiibffghiihiiihhhfhhiiihieR]b^_^X^_\aaabccccX]aZab^bcX`b`b`_`XXX]LY`bcbb`acc[LXW^b[]aac
+ at FCC2HFRACXX:7:1102:2463:14194#TGACCAAT/2
+CAAAAATAAAGAGGTTCTGCATAGTACCATAGCTTTGTTTCTTACCATTGATTCAGTCCCGTTATTACTGATGGAGAGACATGAGACAAAATAAGCTACT
++
+bbbeeceefggcggdZdfghcbfg[ghfii_fgdghhhhiehhdfhhihihgdhhifhhfhgfbddY_eb]\cg_cfgPV\a_]Z]]_bdbYb`bZZ_b`
+ at FCC2HFRACXX:7:1102:6606:14993#TGACCAAT/2
+TGGGTCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGC
++
+abbeceeefggggghiighiihhiiiiiiiiiihffhihiiiigecccccaab`a`baccccccbcbbbcb`bb`bc[_a_[aa]acccREO
+ at FCC2HFRACXX:7:1102:13232:17115#TGACCAAT/2
+ATTCATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCT
++
+bbbeeeeegggfghiiiiiiihhhiiiiiiiiag\fdfghhfdhf\egdhfghiighgegegcdeeeeeddb]bddcbcbbbcbb^^^aaT[aaX_bbb]
+ at FCC2HFRACXX:7:1102:15049:17175#TGACCAAT/2
+GTCCGGGGTGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGGCTGCTTTGAGGGTTCC
++
+_^_c`cecegf`efbegdf\ghdfecfggf`egffdg\ceXR]bG]]acaZ_cca[EHV`bc`V]]aZ`bGY]GT[_[_]acccW^[QY]bb[WX[JW[b
+ at FCC2HFRACXX:7:1102:12312:17759#TGACCAAT/2
+CACCAAATCATACGGCGCGGCGATGCGCTTAGCATACGCGAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGGACCGCACA
++
+bbbeeeeegggggiifiiei]fghehiegeeeecddddcccccabcbccc]bcccccccccdddacccccccaccccccccaccccccccaaaacca]]a
+ at FCC2HFRACXX:7:1102:10932:21174#TGACCAAT/2
+ATCGAAGGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGCT
++
+bbbeeeeeggggghidghidhhiibefghiihiiehfhhghffgihhhhifgffih_ef`ghggabcbdcR\^\a_`bccaa^aabcbbccTX[T[`a_a
+ at FCC2HFRACXX:7:1102:14942:21184#TGACCAAT/2
+CAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAG
++
+_[_`cceeceececgg_eedgR^cehbXa_a_fgRacSeafg_]beH\ZVWbgX_Zbgf`bg\`^aa`YW^]RRY_bb_b_c`]]Z]Y`b_b_YRY_bbb
+ at FCC2HFRACXX:7:1102:10572:23384#TGACCAAT/2
+CACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTGCCGGTCCCGGCCTCCCCC
++
+_^_ececce`eecfgaeefghgdfgdfdfgfaageffhhggfhihhd_dd][`^Y^acccccbcbccaV_aacZaaX^aab_]`[[TTTW_a_[_ccccc
+ at FCC2HFRACXX:7:1102:4715:26873#TGACCAAT/2
+GTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCG
++
+___eeeeegfgcgd_dghidghi[eghhafghhifhO`fgZ^d`^cceccccaaccccccbbbcaccccccccccc_ccccccaaaaacccc^[^]_Q[]
+ at FCC2HFRACXX:7:1102:13003:30444#TGACCAAT/2
+ATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCC
++
+[__ceeeeeggggiihfhffcdhg^_cgeghhbfhigecccc\b]b``a_XT[_`bX_ccVTZHW]VOWXR]`EQTT]LXX__
+ at FCC2HFRACXX:7:1102:5899:31890#TGACCAAT/2
+CGAGGATCTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCC
++
+__beceeeggagfifhfhhhhgeZegfhif[ccgffd`dgeebd_bbZbb]ac\__^Y]bb_aZ__]accaQYS_S^`ac]]RGS]W^a
+ at FCC2HFRACXX:7:1102:4199:33606#TGACCAAT/2
+CGGCGTCTTCGTCGGCTCGGGAATCTTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACA
++
+bbbeeceegggggiifhiagiiiffhhahfedgedffff_dg]V^_RZ`aZ^\_ca[[_Z^]_`_^aQGJ]RGW[]bbbcWW^^^b
+ at FCC2HFRACXX:7:1102:17457:38411#TGACCAAT/2
+AAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTGGTTTATCCTGTACTC
++
+_b_eeeedggfggifhiihiiigihiiidghhffhiiiigdgcghihihhffhfhihihigfhhgddaeehhhhdhighgfdgb^aV_a_b]GTTT]_ab
+ at FCC2HFRACXX:7:1102:10935:40565#TGACCAAT/2
+GGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTC
++
+abaeceeeggfffhhhiiihihhiiiaghhhiiihhihihbgfiiT`bg`a]a]^W\_ccaccaca^_
+ at FCC2HFRACXX:7:1102:3735:42907#TGACCAAT/2
+GGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGCTCGACCT
++
+_bbeeeeeggggghiiihbfedghfhiffffhihihffhhhhhhihhiiihdg\efhi`dggeeZ_a]bbccccaaNW\bbcY[aR[EO[^^_[^aTTXT
+ at FCC2HFRACXX:7:1102:3825:46331#TGACCAAT/2
+CGCCGACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTG
++
+___eeeeefggfgfhhidcfffghbgiifffffgggfeecacdddcbcccbaacbccccca^[OW
+ at FCC2HFRACXX:7:1102:1738:46716#TGACCAAT/2
+CTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCT
++
+bbbeeeeegggc[da`efgffgdZb[d^e_[ed_^daa^^c_f`a^eg_caehh`_ac^WdbYaaMaed__\\_c`d]b_d`\bddabHVZ_]`bdcaab
+ at FCC2HFRACXX:7:1102:3022:48676#TGACCAAT/2
+GGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTG
++
+___eeeeeceeggihiihYcgfhhfhgiifegcecbccccccccbccccX[acaacc_baacV[a^bcacaaaccac_cX]]acb[SGSRY]YY___`RQ
+ at FCC2HFRACXX:7:1102:20821:54221#TGACCAAT/2
+GTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCG
++
+_^_ccceegegggiiffceegbagdaghdgg]aIG\efNN_ZZ^``a]`c^]a_Z^aabbbbbccb_RYS]`b]^`^YO
+ at FCC2HFRACXX:7:1102:16360:55497#TGACCAAT/2
+GTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCATCGTCATCTTCTCTCATATATT
++
+__aeeeeefcegfiihfffdgihffghicddgfffgffh`f`dadccdc`]acaW[]`bccc[_ccbcc^aX_OGX^`_RWJW`^bbc`bcbbY_bcc`c
+ at FCC2HFRACXX:7:1102:5441:56789#TGACCAAT/2
+GGATGAAGCCGGCGGAGTGGAGATGCATATCGAAGGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGG
++
+bb_eceeeggggfiidfcegfhhfhhehhhiiihihg_g^ccdZac^]bdaaZ]`bcccccccdddccccc_bcbY]`baa[^aR_^G[`acLXTbbc
+ at FCC2HFRACXX:7:1102:1305:59122#TGACCAAT/2
+TACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCATCGTCATCTTCTCTCATATATTTGTATCACCCATCCATCCATCTGCCTTCGATATGCA
++
+bbbeeeeeggggghiiiicfgiiihiihiiiihihiihiiihhfddgdggdbdeeeecddddddddcdddcccccccccccccccccccbbc`acac]Y_
+ at FCC2HFRACXX:7:1102:1972:61139#TGACCAAT/2
+GACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGC
++
+aaaeceeeggfggiiiiiihhgiiihiiihfhfhgeecdbcc^a_^WcWaaa_aa[__acbccaaccc_bac_Z]accccc_R[[]bcccaa_aXTX[^
+ at FCC2HFRACXX:7:1102:8085:62091#TGACCAAT/2
+GCTACTGTTTGTAATGCAAAAATTATTAAGAAGAGAAGGATGAAGCCGGCGGAGTGGAGATGCATATCGAAGGCAGATGGATGGATGGGTGATACAAATA
++
+bbbeeeecgggeghfiiiihiiiieiigdhhhidgfhhhegfhihhhffhgg\`Z_b`accccbbbbba^bacccc^Y`bb_baX]__aJOQ]_`_`bc_
+ at FCC2HFRACXX:7:1102:6045:62449#TGACCAAT/2
+AAACAGTAGCTTATTTTGTCTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATT
++
+bbbeeeeeggggfhiihgghhiiihgiihihhfhiiififhiihihifhhghhhhfhhihggfgdhihihefiggggfR`bdeceeY]]`bc^^bbbbbb
+ at FCC2HFRACXX:7:1102:14153:62735#TGACCAAT/2
+CCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCATCGTCATCTTCTCTCATATATTTGTATCACCCA
++
+_bbeeeeefggfgfddfeghagfhiiicggihhdhhgegefce^`]bbbd`acab_bb^a\accb_^_^aac_a`bbb]_b]`c]abcccccbb`_bcac
+ at FCC2HFRACXX:7:1102:6103:62753#TGACCAAT/2
+GCCGACGAAGACGCCGTCGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAACTGCACAACAGGGAGGCGGCCC
++
+bbbeeeeegggeghhighhiiihihififhhiiihhihgedebcacccccbbccac[acccbcacccccLTZaa][LT[`bcbb]`acaac^[TW[][_[
+ at FCC2HFRACXX:7:1102:18321:62766#TGACCAAT/2
+CCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCATCGTCATCTTCTCTCATATATTTGTATCACCCA
++
+bbbeeeeegggggihhieghihhfgghhhhhihhiig_ddgee^`ddbd`^acaccccacaacccccbcc^^^[bcbdcb_bb__bbcb`Y_`cbc`bc^
+ at FCC2HFRACXX:7:1102:6465:65486#TGACCAAT/2
+CCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAA
++
+bbbeeeeeeggfehhihhiihfhiiiihihceghihhihhiggegeee[`]`ceccacc^accccccccbccbbcbbbcdcdccR[]_baac]_acc_`b
+ at FCC2HFRACXX:7:1102:15835:67354#TGACCAAT/2
+TGACACAAAAATAAAGAGGTTCTGCATAGTACATA
++
+___ceeecgcgfgififefbdbghihffi_afIIP
+ at FCC2HFRACXX:7:1102:6768:67967#TGACCAAT/2
+GCCGGCTTCATCCTTCTCTTCTTAATAATTTTTGCATTACAAACAGTAGCTTATTTTGTCTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGG
++
+bbbeeeeegggfghihihhhhiihhhhhhihiihihiifhhiiaac^efhdgffiiichcefcgffdg_fdfa_]]`\^bggda\c]`]a^bbbbbbY`Y
+ at FCC2HFRACXX:7:1102:15827:67868#TGACCAAT/2
+CACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCC
++
+bbbeeeeegggggfghiiiiiiiiiibffhiiihiiigiifhihihhfhdadfhhfheh`gebda`accccc_accW^a[W_W^acacaa_[a[[_b]]b
+ at FCC2HFRACXX:7:1102:1446:69132#TGACCAAT/2
+CTGAATCAATGGTAAGAAACAAGCTATGGTACTATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTG
++
+bbbeeeeeggfgeghiiiiiiiiiiihhiehhihiiiiiihihiiiiiihfhiiiiiiiiiiiiiiihfiiiiiihhhifgfgfggceeeeecdbaccba
+ at FCC2HFRACXX:7:1102:1236:70725#TGACCAAT/2
+GGGAGCGGCGTGGTGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCG
++
+bbbeeeeegggggcfeghi_c^cegiiffeffgadgccca\accccbbcb]bccccccccbbcaccccc_bcc_aX_ccbccccaccccccbbcccaaac
+ at FCC2HFRACXX:7:1102:9825:72205#TGACCAAT/2
+GTTCCGGGGTGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGGCTGCTTTGAGGGTTC
++
+_[_eeeeeg_eeghfda_fgdbeefffihiidgg`gg[`adcdccbdcccaa_a[T[acc]b`ba]V_VQ^b]Y^a^[aa[a]`a[XX^b]YYJW[aW`^
+ at FCC2HFRACXX:7:1102:6738:74232#TGACCAAT/2
+CAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGG
++
+abbeeeccgggggiiidhgihiieffcafgceccddbcccccbcbca`bcbcccccccbbccc[ccccccbcccbbaac[aacXacccccc_[X]_b[^a
+ at FCC2HFRACXX:7:1102:3542:76333#TGACCAAT/2
+CCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGC
++
+b_beeeeegggfehhiiibgii]ghhfgg`U^a^^aaR_^a_aac^abcaYW_cacaccaZ_aabcaaZXTZac[]GTTO
+ at FCC2HFRACXX:7:1102:8808:79183#TGACCAAT/2
+CCGGAACAAGCCCGCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCGCGCAGATGCTCCGTGGCGGGG
++
+bbbeeeeegfggghiiiiiiiihiiiihiiiiihiiiiiiiihhhihiae`adddcccccccccbcacccaca_accc_bcbbcca`__ccacc
+ at FCC2HFRACXX:7:1102:19068:80610#TGACCAAT/2
+TCATCTTCTCTCATATATTTGTATCACCCATCCATCCATCTGCCTTCGATATGCATCTCCACTCCGCCGGCTTCATCCTTCTCTTCTTAATAATTTTT
++
+aacc^aee[bcaa`c`bgc`]`daghh]ag]g`badgb]gfd^faf]fb^ccggff[e_b]\[bg\egUXa\`b]ZbbbYT_bccb]_KZ]`Z]T]_]
+ at FCC2HFRACXX:7:1102:4722:82132#TGACCAAT/2
+CCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTG
++
+abbeeeccgggggiiiiiihhiicghgcgfhhihiggeccccccccccccaccccccccaccccccccccccccccccccaccac_aacTX^]bcaccbb
+ at FCC2HFRACXX:7:1102:14968:85934#TGACCAAT/2
+GGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGAC
++
+_bbeeeeeggegghhfaa\\ee[aggde`aaccc`bccacaU
+ at FCC2HFRACXX:7:1102:17287:86478#TGACCAAT/2
+AGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGATGCCGACCATGGCCTCCCCG
++
+Z^^ccececgc[`ebdafhdeg`YfffcabgfY`TY\aaZ`^N]aaW`_b]^TYOXa`GY^^aX]_]]ba]aa]bbb`bb^ccaO
+ at FCC2HFRACXX:7:1102:9089:87630#TGACCAAT/2
+ATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCT
++
+___ceeccgfgggiiiiihhiihfhihhiiifhhiiiiifhbfbghh_egdggecccc^acTV_^aa^bcaZa^acccbbbb]]_XX_a[bcbcbcbbb[
+ at FCC2HFRACXX:7:1102:16408:97070#TGACCAAT/2
+TATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGC
++
+___eeeeeggaegiiiiifiiiihiiiihiii^ghhiiiiihighhhfdheghicggecccccacTTO^a^[b^accacacbYbbbc_[]R]_X_bRY`Y
+ at FCC2HFRACXX:7:1102:12915:100079#TGACCAAT/2
+CGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGGCTGCTTTGAGGGTTCCAGAAGGGCTGCGCCGTTGTTCCC
++
+__aeeeeegfefggfgha`bcgce_fgghghaddee_Zbbcacccac_T_GRWT[aa^YYW[`a_bR]SS[R^QWW]`_bcc_aVW__aaccacaaa_``
+ at FCC2HFRACXX:7:1102:8912:100688#TGACCAAT/2
+TGCATCACCAAATCATACGGCGCGGCGATGCGCTTAGCATACGCGAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGGACC
++
+___ceeeeggfggifdghhf]fhfh]e_aagdddcacddcbcccc_TT[b^^ab_bbcccbccc`cb`ccccccccccccccacccccccccbbcaccca
+ at FCC2HFRACXX:7:1103:9482:4541#TGACCAAT/2
+CGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCCGCCCTGCGAGCGGATGTCGGCGGGG
++
+abbeeeeefggggiiiiihiiiihihhiiiiieeec`baccaacaaacWaVbccaaacccccacaZaccaac_acaa_a]bccaccccc
+ at FCC2HFRACXX:7:1103:4835:5055#TGACCAAT/2
+TGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAACTGCACAAC
++
+bbbeeeeegggggiiiiiihiiheghiiiiiiifggeeecbddddccbcc`bcccccccccbccccccc_acaacca_ccccT[aa_ca_aaabb_```a
+ at FCC2HFRACXX:7:1103:16692:6719#TGACCAAT/2
+TCGCGAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTGCCGGTCCCGGC
++
+b_beeceefgeggiihiiiiiifhihiiihiihhiiiiiiigggeeeeccacccccccccccccccccccc_baacccccaccX_ccccaccc_cccaa_
+ at FCC2HFRACXX:7:1103:6301:12756#TGACCAAT/2
+ATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGAT
++
+___eacc^Yb^cRba[YbJ`bgQ[W^YdegOcccceaaU[\\b\_V_ZFLY\ddH\`W\V_[WW[`acZEOO]]S_aRX[O[RJYbRWXGS
+ at FCC2HFRACXX:7:1103:18555:25778#TGACCAAT/2
+GTTCCGGAGCGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTGCCGGTCCCGGCCTCCCCCTTG
++
+_\[ac``eeeUPbffaggfdXadaa^^^[bgfeZ`Wa]W^]_b_]b^bWZW\^`\aaccac^bY`bZ]T]aa]ZX]a`a^[]X^b
+ at FCC2HFRACXX:7:1103:11828:26565#TGACCAAT/2
+CGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTC
++
+__aeeecegfgggifhihgiiiifhiiihiiiifigiiihhhfehfgggggecebcccc\a_accccccacccW^_aacccccccc]baaT__bbbGWXb
+ at FCC2HFRACXX:7:1103:11304:31167#TGATCAAT/2
+GGTCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCC
++
+bbaeeeeegggggifiiiiiiiiiiiiiiiiiiiihiiihihgeccaacW[aa[`aacccccccbcccccbbdc]acccaccccc_ab_[_ccaccV_cc
+ at FCC2HFRACXX:7:1103:16017:31664#TGACCAAT/2
+CTCGGATCTGGCGGCGTATCGCTCGACCTTAGGGTCGTTGAGGTTGATGCCGACCATGGCCTCCCCGAGTCCGGCGCTGACGTCGGCGAGGATGGTAGGG
++
+bbbeeeeegggcghgicfhhdhiifhihiihgcg^ceccb`bc]abbbbcbaaccacccacbaccca_a^`baacacacabT^aaaacT[_ER]^YY_^a
+ at FCC2HFRACXX:7:1103:1830:33244#TGACCAAT/2
+GTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCA
++
+a__ccccccg[eegh_dbd]fe^c`eefcg^edhdfh_eb_Z_eghV_dd^^`c``^bbcbcbRZac\]caccccc_c_cccb_cccRQWSY_]__]``[
+ at FCC2HFRACXX:7:1103:10914:36685#TGACCAAT/2
+GCCGTCGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCCGCCGCGAACTGCACAACAGGGAGGCGGCCCA
++
+___ccc`ccgegcgdgffhhhhi[[^be_^_e]fgf_\bfbga[^ab[`b_aaccccETT[TZTTZ]`_]_]S[WWGW^WT[[O[T]aQ
+ at FCC2HFRACXX:7:1103:8436:37721#TGACCAAT/2
+CGGGCTTGTTCCGGGGTGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACCTTGACGGAGAAAGTCGCCGACTTGGG
++
+aJY\`c^ceg`cPbWbHYWIYac^^_GZWa\Wa____``[a[aWRFXWTZY`b_^\Y[VT[aaRZ]ab`bbT]aa[ab``_aEWXTX]OY``
+ at FCC2HFRACXX:7:1103:3640:39304#TGACCAAT/2
+GGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACA
++
+^_ae`Y^c`ca[PWYe_fcOecf`aefeQ`fFYXVH^GZ`aaca\acLOO
+ at FCC2HFRACXX:7:1103:20809:40434#TGACCAAT/2
+AACACCTCATCATCATCCATGTTCCGGAGAGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTGCCGGTCCCGGCCTC
++
+[a_\ccde]eJ`^ddbXddcgdf_[beY^HPY^bcfgfddegg`Oaefgfcfggeec[^abY`bcYbb\aac]`[acaaaccYS_Y]a_XRW_[TX]a
+ at FCC2HFRACXX:7:1103:10701:49554#TGACCAAT/2
+CTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCGCGCAGATGCTCCGTGGCGGGG
++
+___eeeeegggggiicdcgffhhfghhigh[efhifbdgfegghhffdgeedcdcacc^accccccca`[]acca_
+ at FCC2HFRACXX:7:1103:18885:50545#TGACCAAT/2
+CATTGATTCATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCT
++
+__beeeeeggggcghhhiiiiiiiihiiiiiiihhfhiffdfhhiiiefdcefhifhdffggeeedeeec`bbdbdb__`bbbbccccb^^`aacac]_b
+ at FCC2HFRACXX:7:1103:5631:52141#TGACCAAT/2
+CTCCGGAGCGCCTCACCAAGGTCACGGCAGCCACAGACGAAGGGG
++
+a^aecc_`P_^_^egfghdhf^ggRU_H^__eWba]bd]ggfad]
+ at FCC2HFRACXX:7:1103:2625:53946#TGACCAAT/2
+CGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAG
++
+__becceceggeehfgf]ggde_cbccaac_bcb_]_bbccccaTTYaWa_acaaW`aZaaV[Zaa]ac[`[^`b`bcbbccRYY]a]a]LO^Y]_`a
+ at FCC2HFRACXX:7:1103:7468:59032#TGACCAAT/2
+ATCCGAGTGAACAACCCTATCCGCTCCACCATCGTCATCTTCTCTCATATATTTGTATCACCCATCCATCCATCTGCCTTCGATATGCATCTCCACTCCG
++
+P^aceeecgcgeghiihhiihifhhhihihhhhhiihhfhhhifidgfhhfghihhiihhhfhiigggggeeeeeddbbdba\bcccacdccb`bccccc
+ at FCC2HFRACXX:7:1103:2609:67593#TGACCAAT/2
+TGGCCGATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGATGAGGCCCGGGTCGGACATCCGCGCCACGCCGCCCTGCGAGC
++
+bbbeeeeegegggiiiiihhhiiiiihiiifhhicghegggccccccacc`ccccccaccccccccaccZ__aXXX_bcccc_accc]^XX[[[`a_T[_
+ at FCC2HFRACXX:7:1103:8738:68263#TGACCAAT/2
+TGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCAAGCGCGCCGTCACCAT
++
+___aceeegggggiiiiihiiiiihihhhigggecccccc__cac_aaWaV[a[_c`bdcaccccccccccc`bccccccccc_bbb^a[aa[[a[_bb`
+ at FCC2HFRACXX:7:1103:9120:68970#TGACCAAT/2
+GGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCGATGGGCTTAGCATACGCGAACACCTCATCATCATCCATGTTCCGGAGCGCACGGACATCGC
++
+bbbeeeeegggggiihiihihiiihfhhiihiiihihieccbbbccccbc`ccccccccccccccbbccbbcccb`bb`ccccccbcccccccccab_^_
+ at FCC2HFRACXX:7:1103:20269:70791#TGACCAAT/2
+ATTCATTCATTGATTCATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGG
++
+___cedeegfge`egihfihiihdbiihhgiihhgfhhiibfghiihhhheegh[eeghih]cfb\d^adcdbY_bdccccccc`bccd[_bcc``^a^a
+ at FCC2HFRACXX:7:1103:10802:71133#TGACCAAT/2
+CCCCGAGTCCGGCGCTGACGTCGGCGAGGATGGTAGGGTCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCC
++
+bbbeeeeefgfggiihiffhfhiiff`d[U^aeMU]bbT]^\^aY]__bc`T_`bbb^`babcb^]^_c^`baaX[acccca__[a^`aJX_[O
+ at FCC2HFRACXX:7:1103:2290:74271#TGACCAAT/2
+CTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCTGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCT
++
+_bbeeeecgggggffhhhiiiiiihhiigRZ^ccccccca_`^accc`bcbcbcaWT[bcbRY]YY`^]G[[GOW[ROTXT]TX_c`[^^T]T^
+ at FCC2HFRACXX:7:1103:6528:76684#TGACCAAT/2
+GCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCAAGCGCGC
++
+bbbeeeeeggggcfghiiihhhfhgfhhiiiifacccccccccacWcccccaccWacacccc_aabbb^Z_ccaca_a[abbbb_^aac]]bccY`aa[_
+ at FCC2HFRACXX:7:1103:7705:81342#TGACCAAT/2
+ATGCAGAACCTCTTTATTTTTGTGTCTTCTTATTAGCTACTGTATTAAGTTAGACTAGGCTCCCCTGGTTTATCATGTACTCAATCAAATGTTGAACGGT
++
+bbbeeeeegggggiihihiiihhiiiiifhihiifhiihhfifghhfhihgfhhiiihhhiiiihffh_fgcgd`dbbddgbceeeceddbcb__bbac^
+ at FCC2HFRACXX:7:1103:17079:81373#TGACCAAT/2
+GGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGGGGTGAGGACCTCGCTCTCGTCGACGTAG
++
+bbbeeeeegggggiigihiihhhihhidffafhiiighifhiifeccETOTW[a]^`bb^_V^`_VW^VLX]OW`
+ at FCC2HFRACXX:7:1103:15390:86731#TGACCAAT/2
+GCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTCGGGAATCTTCAAGAGTGGCGACCCTGCTCGCCGCGCGC
++
+bbbeeeeegggggiiihiihhhihhiihhiihiiiihii[egh[d\abcaZ\accccaccacOOZOW^_bbYR]YYWJY^^]OX[]RXWS]_ccTTOXT[
+ at FCC2HFRACXX:7:1103:11631:90555#TGACCAAT/2
+CCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGAC
++
+_bbceeeegggggiefghihihihiiiiihiiiiiidfffhhgda\bd\bdggeeccccbcdbbbbccacc_accccccca]ab]cddccaacccbbbba
+ at FCC2HFRACXX:7:1103:9768:91822#TGACCAAT/2
+CTCGACGATGTTGCCGGTCCCGGCCTCCCCCTTGGTGCGGATCATGGCGGCGCCCTCACGGACCCTCCGGAGCGCCTCACCAAGGTCACGGCAGCC
++
+__aeeeecggegfhiihfghffghhfghhiifhiifffggd`cebeb``]W[LV_U`ac`aTZac[`a]]Za]TT]]_Y^aR^^abY_]EXR[TW`
+ at FCC2HFRACXX:7:1103:10253:96457#TGACCAAT/2
+GGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCTAATAAGAA
++
+^^acc_`aRcceg]Yb_egfhXIYbedgg^UcfZaeedaa^_bfX\bW\b_ZW_fV_`_db\\daa`aac_\bbcbbT]`RY`Z_b`_b_`cb`b`bbSY
+ at FCC2HFRACXX:7:1103:17931:96785#TGACCAAT/2
+CCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGG
++
+__beeeeegcccghhhiiiihiffhgfhhiehfaab_aaa_cWVaQ^W`^[_aaaaacc[acccccaccaaaacbb]^ac]aLOT]a][_aTLXM]aca
+ at FCC2HFRACXX:7:1104:12013:3094#TGACCAAT/2
+TGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCAAGCAGCTGGGC
++
+_a_accaZ^ee`ghWdegf_Sbc_cf^[ac^c_e_ZZcefhh[STZ`dgRMV_c^X`acc_aaaacaZV^bYSY`Y]`WY`bbY`b^`bcc_abaRYR^a
+ at FCC2HFRACXX:7:1104:7657:9443#TGACCAAT/2
+CCAGAAGGGCTGCGCCGTTGTTCCCGTACACCGTCACCACGCCGCTCCCGTCCGACGCCATTGTTTGGGCTGGGTAGGGGGGGATTGAGTTGGAATGGAA
++
+bbbeeeeegggggiiiihiihiiiiiefhhiiiiiihiiiiiifeeeccccccccccccacccdccccacbcccR]^^accccLO^bY`bcbbY`bcbY_
+ at FCC2HFRACXX:7:1104:18693:12541#TGACCATC/2
+ATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGC
++
+__beeeccgegfcff`gfdffffggffgfghhhhagfaghigfcabbcccZbbcaacY_bbbccc^`aaaba`bbacacccaccc^bccbbac___YR^a
+ at FCC2HFRACXX:7:1104:1737:13058#TGACCAAT/2
+CGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCACACCCGCCGACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGC
++
+a_aeeeccee`gghhhhgdcdgddf`fbfhag[X_Zab``bacZ^caLX[YWT_OVT[[Q[WR]b_^babPQ[``^bbbb_YOGWY_abc[PR^WWSY[`
+ at FCC2HFRACXX:7:1104:9247:13508#TGACCAAT/2
+ATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCT
++
+___eeecceefgefhhhhhiiiigdfhaefgffffhidfagfghfhhhffdagecccccacV__a^`acac_a^aabbbbbbbaacaacL]bcbbb]Y_]
+ at FCC2HFRACXX:7:1104:19057:13842#TGACCAAT/2
+GCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTCGGGAATCTTCAAGAGTGGCGACCCTGCTCGCC
++
+b_beeeeegggggiihiiiiiiiicgfihhhihidgeeeedccccaaZ\_OV[__b__bYY^Y]^W]ZTXZRJW]YWXa
+ at FCC2HFRACXX:7:1104:6652:34019#TGACCAAT/2
+CCGAGCCGACGAAGACGCCGTCGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAACTGCACAACAGGGAGGCG
++
+b_beeeeeggegffhhfhhicffdgiiifbdggggfeeeeeeebcacccWYbbccca_acT[aZaccacccccT[___aaXaX^_bR]ba_^W^_^X[WX
+ at FCC2HFRACXX:7:1104:9656:40471#TGACCAAT/2
+GCCGTATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATG
++
+___eccdeggfgcfdagf[bgfbghhh_gcef`]Xbfgghihhffgh_fZa_fghdd`\aabccc_V]_Z_aW^^`bc]X[`^abbbb]_`X_c_acTY`
+ at FCC2HFRACXX:7:1104:4882:43361#TGACCAAT/2
+TCACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGGGGTGAGGACCTCGCTCTCGTCGACGTAGTCGACGCCGACGG
++
+abbeeeeegcecehhiihghhcfhefhegefdgeghfhhfffccETOTQ[[]W^[`^[_^a`RQWLT]_TW`WSTOX]_ccTXET
+ at FCC2HFRACXX:7:1104:1688:50861#TGACCAAT/2
+CCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGGAGGCCGGGACCGGCAACAT
++
+abbeeccc[ccecfhgfhg_fddfbfghYbccffhfhhe`gW`gfT^cc^^Z^accaaaccaacccbccc_aaa``accca[_aGWT]][X^[]XO[[WR
+ at FCC2HFRACXX:7:1104:1814:55634#TGACCAAT/2
+GCGGGGTCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGG
++
+_a_ece[`e^eeghaefa^feceegif[fffhifggcdcda`]acaccaWV^aac^TYHOTVEWQWTZVXZ^Q_b
+ at FCC2HFRACXX:7:1104:13964:57743#TGACCAAT/2
+GCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAACTGCACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGG
++
+__beeeeeeeeefgiiiihiifiihihhdhgha[abacb]Z`a_caccacccaWY_ccGQ]R]]`bcYSY^`bb_bcb[`a]__]bc^a[_aaa
+ at FCC2HFRACXX:7:1104:15970:65750#TGACCAAT/2
+CCCGTTATTACTGATGGAGAGACATAAGACAAAATAAGCTACTGTTTGTAATGCAACAATTATTAAGAAGAGAAGGATGAAGCCGGCGG
++
+Z^ZaJJQ\Y[aK[d[a`ffYJ`bZdJ[^S[bfd_[b`I^IOY^^Xa`_HOX^[a_aIX\egh[fhH\beg_bbge]`ddc_b]]`a^ac
+ at FCC2HFRACXX:7:1104:5753:69503#TGACCAAT/2
+CCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGTCGCACCCAAGCTGCATCATGAGCGCGGCATCAGCAGGCGTGGCCACACCCCCGGCCGCGAACT
++
+_bbeeeeegggfgiiiiiihiiiiiiiiihhhiiihghffeeecccacccbbcbccccccccccccccccccccccacc_``^`_acccX]_aaccR]a^
+ at FCC2HFRACXX:7:1104:8594:70272#TGACCAAT/2
+CCGATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGGA
++
+__^aacccggfggiifaggfhdgfffh_efg[aae_gWW\[W]\TX`ZT]X`[WO
+ at FCC2HFRACXX:7:1104:6170:79864#TGACCAAT/2
+CCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGG
++
+_a_eceeegeggehhdhZacghUeag`dddaa`WU\\]bX\^WT[^ab_TVW[VaacW__LTT[bcaccaca_Z[a^Xacc_ET
+ at FCC2HFRACXX:7:1104:12071:82778#TGACCAAT/2
+CAGGCGCCGGCTTCCTCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGC
++
+_b_ceecegggggiiiiiihihhidfaghdhhhiihggeeebbccccccaacccccccccccacacaccccccccX_aabc_ccaac_abaaaT[acccc
+ at FCC2HFRACXX:7:1104:20929:87203#TGACCAAT/2
+TTCATTCATTGATTCATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATT
++
+a_^ceedegggfgifhhgghiifghhiiehihhbhhfhicghfdgbc\eaggcafdggff]bgegfde__bd`bddb_]b
+ at FCC2HFRACXX:7:1104:5982:97045#TGACCAAT/2
+CCGACGGCCTCGAGGATCTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGGATGGTGACGGCGCGCTTGATGTCGCGG
++
+bb_eececgeec`ef_cghhceUceaeeggafgh_gddgcea^XZaccccbcbcbbbcb_acaac^^_bR]__ETO[[[T^[bGYYWPT_
+ at FCC2HFRACXX:7:1104:19682:99500#TGACCAAT/2
+CATTGATTCATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGG
++
+a__eccdeegeefffdhhiihhhhiiidcegfhihaffgfghiiagY`edb_f\efghiUZbdeddadce_]bd]bcZ`]bcGLZ`]_][aaac_
+ at FCC2HFRACXX:7:1105:7757:3083#TGACCAAT/2
+CCAACGGCCTCGAGGATCTGCGCCTCGACGAAGTGGCCGATGCGCGCTTTGGCCATGACGGGGATGG
++
+_a_ecec`cgeeegffedhfhc_efga[ccfecghfdg`YLYaWab]FWWY^Y_]bccc[T[aOEQW
+ at FCC2HFRACXX:7:1105:5894:5164#TGACCAAT/2
+GAGGGAGGTGGAAGAGAGGGTTCTAGAGATTGCCTCTCTTTTGGTTTCCTCGATGCGGGTGCCTTCCGTCCCCCCTATCTATCCTCTCGGG
++
+_bbeecee`eggeifagdggdfgdfgiiidf`fghhiiihhihfcghhhifgfhhhiddX[Z`bbbbcccccccc_abcbacbbcbbba_a
+ at FCC2HFRACXX:7:1105:7646:10607#TGACCAAT/2
+CGGCAGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGGTG
++
+___J`ceeggfggiiihihiihhhihheffeghgfhhhfefgbgfcghghggdecccccccccccET
+ at FCC2HFRACXX:7:1105:1938:27512#TGACCAAT/2
+GTCACCATCCCCGTCATGGCCAAAGCGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGAC
++
+_abeeeeegfgggehhhfghiiiiiiheihhhifihiihihffggeeecc_ccccccccccc_ccccacccacTX[Xa[[XWQ[[[a
+ at FCC2HFRACXX:7:1105:3028:31211#TGACCAAT/2
+GGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGGGGTGAGGACCTCGCTCTCGTCGACGTAGTCGACGCCGACGGCCTCGAGGATCTG
++
+_baeeeeeegegghgfhiiighiddffhibghhiihiifdhiigccETOT[`a`acbccaaccbaa_ZZaaZ``ac]W_[]]XEOXaa]X[XEXaERXY_
+ at FCC2HFRACXX:7:1105:8571:43765#TGACCAAT/2
+GTGGTGCGCGTCGTCGGCGGGTGTGAGGACCTCGCTCTCGTCGACGTAGTCGACGCCGACGGCCTCGAGGATCTG
++
+bb_ecceeggggghffhhiigFXX\]`a]```b^^aaa`YW^YUa_Yac[]___aLVTZaZV[aR^_TW_X]`]]
+ at FCC2HFRACXX:7:1105:12879:48945#TGACCAAT/2
+CCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGG
++
+bbbeeeeegggggiiiiihiiiihiiiiiiiiigecc_a_accccccccccaccccccbcccacccccccccaccccccccV][aaccca]_O[a]acca
+ at FCC2HFRACXX:7:1105:20628:62425#TGACCAAT/2
+ATTAAGTTAGACTAGGCTCCCCTGGTTTATCATGTACTCAATCAAATGTTGAACGGTTTGTATGTCTGTCGCTCTGCCAGCCCTGCTT
++
+Z^_ceecce^eeYdJ`adefghhfb[`ebegggf[cgbfdffdghb]_eff]fcegcefgghhbeZeddddfaU\^ba_cdbcbb^Z`
+ at FCC2HFRACXX:7:1105:3594:73851#TGACCAAT/2
+TCCGGAGCGCACGGACATCGCCCATGACGGACCGCACATGCCTGACGGCCTCGACGATGTTGCCGGTCCCGGCCTCCCCCTTGGTGCGGATCATGGCGGC
++
+_^_cacecgfcgfhhifcegfghihfffhehihhdgfeeeeebbd]a^aa_acW\a[acccbcbcbc_accccaccccca]`bcY^`aa_]]W_`YQTX_
+ at FCC2HFRACXX:7:1105:19869:79727#TGACCAAT/2
+CTCCGGAGCGCCTCACCAAGGTCACGGCAGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGG
++
+bb_eeeeecgccgihiihhiibefgf[Ucffhhhgbfa`df^`WaXX`b]ZW^Z]]b_ab_b]^]`Ybb]Y`[[YX_]OT[aa]_a[]a
+ at FCC2HFRACXX:7:1105:6280:84664#TGACCAAT/2
+GCCGGTCCCGGCCTCCCCCTTGGTGCGGATCATGGCGGCGCCCTCACGGACCCTCCGGAGCGCCTCACCAAGGTCAC
++
+_bbee`eegggggiihiiihihibghhifhhhihihif[^W^a\^G[^a[T_a[`a_aR[RVVZZab^aRWW_S]bb
+ at FCC2HFRACXX:7:1105:10628:85592#TGACCAAT/2
+GCGGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGGTG
++
+bbbeeeeegfgggiiiiiiiiiiiicfghhhfgiiihiiihihfhh_dhggebccacccccccET
+ at FCC2HFRACXX:7:1106:10519:3964#TGACCAAT/2
+GCCGCCGCCACCCCCCCAACCCTCCTCTTCTCCCTCCCCTGACTGGAGAGAGAGAACCTGAACCTTCCCGAGAGGATAGATAGGGGGGACGGAAGG
++
+bbbeeeeegggggiiiiihiiihhifhghffhggfgeeebbddddcbcccaacccccccccccccccccc]accccccccddcbccacXT[[T[X^
+ at FCC2HFRACXX:7:1106:15104:10717#TGACCAAT/2
+GTCGACTACGTCGACGAGAGCGAGGTCCTCACACCCGCCGACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCC
++
+_^_cceccgeegY^b__Wccbghhhgfefhiiiiiffagddbaa__^aacTV`ccbcbbbccccc^XQW`_b`_YQWW`bcbWRPR[QWJYba^^O^
+ at FCC2HFRACXX:7:1106:4831:14328#TGACCAAT/2
+CACCAAGGTCACGGCAGCCACAGACGAAGGGGACACGGAAGTTGTGCTTGTTGATGTGGTGCGCGTCGTCGGCGGG
++
+abbeeeeeegggghPdfhhfghfgfhfhiiiighiidh[fgV_Z_bgdgcacabe`cbbZ^baca^aV]a]acccc
+ at FCC2HFRACXX:7:1106:15276:33344#TGACCAAT/2
+GTCGGCTCGGGAATCTTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCC
++
+babeeeeegfgcefgggffgeeebff`fdghia\ee_Z_fZa^`WZWTXaWX_`OW^^`bcbcaac[_bcW[^``]`baaaaa^XW`YSX`JYT[a
+ at FCC2HFRACXX:7:1106:19852:34786#TGACCAAT/2
+TCTCACACCCGCCGACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGGGAGGCGCTCCGGAGGG
++
+abbeeeeegggggihfgiiiiiiiihggggdeeeecdc`bbaccccccbccabcccccc`accbbbacc[aXOX[^bY`_`GOWT[^TOXX]EXMXaa
+ at FCC2HFRACXX:7:1106:14122:44676#TGACCAAT/2
+CCCCAACCCTCCTCTTCTCCCTCCCCTGACTGGAGAGAGAGAACCTGAACCTTCCCGAGAGGATAGATAGGGGGGACGGAAGGCACCCGCATCGAGGAAA
++
+bbbeeeeegggfgiiiiiiiiiiiiiiihiiiihhehhiiiiiiiiiiiheghiiiifggeeeddddddcccccc_cccaaccaccccccacccbaaaac
+ at FCC2HFRACXX:7:1106:6845:47466#TGACCAAT/2
+CTTGTTGATGTGGTGCGCGTCGTCGGCGGGTGTGAGGACCTCGCTCTCGTCGACGTAGTCGACGCCGACGGCCTCGAGGATCTGCGCCTCGACGAAGTGG
++
+bbbeeeeegggggghhiiihiihiihhiicKXR[_bab^abcaa_aQWT[^TT_a[aa_baaacaca]V]a]]T`XLX_]b`YY]]]a[_XT_aXa^_Y`
+ at FCC2HFRACXX:7:1106:10406:50210#TGACCAAT/2
+TTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCG
++
+ab_eecacbeecghhhieghiihhfff__NagU[`^`b`^T\^b]bX[X`]]]ba[^a`X`bcca_aV[R^``b`[S_T]_TEX_T_^a]T_XOT[[T]W
+ at FCC2HFRACXX:7:1106:17718:58447#TGACCAAT/2
+CCATCCCCGTCATGGCCAAAGCGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTC
++
+_b_eeceefgecgihhdhhcfgihiihiidgfiiiiihifhgfecaac\a\bcccccccccaacccca_acc]]^ab^[`aL[[TX[_aaXX]TGSY_
+ at FCC2HFRACXX:7:1106:9381:61139#TGACCAAT/2
+GCCAAAGCGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCACACCCGCCGACGACG
++
+bbbeeeeegggggiiiiiiiiiiiihiihiiigggeedddddcccccccc_ccccaccccccccaacccccc]accccc[bbbcccccccacccT_[ac_
+ at FCC2HFRACXX:7:1106:18984:61293#TGACCAAT/2
+CGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCACACCCGCCGACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGC
++
+bbbeeeeegggggihiihhhhfhfhhagheghiiiggggeaccaY__acaY_ccccccccccbbcab`ccca_bbccccc[abbcbacccccabcbccc^
+ at FCC2HFRACXX:7:1106:12518:64250#TGACCAAT/2
+GCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTCGGGAATCTTCAAGAGTGGCGACCCTGCTCGCCGCGCGC
++
+___eeeeegf^eghiihi]ggfghhiiifihig`ccU]_``b`Z_`][TY[[_T[[_^XW]]VTWOLT]]_
+ at FCC2HFRACXX:7:1106:4033:64596#TGACCAAT/2
+TGTTGATGTGGTGCGCGTCGTCGGCGGGTGTGAGGACCTCGCTCTCGTCGACGTAGTCGACGCCGACGGCCTCGAGGATCTGCGCCTCGACGAAGTGGCC
++
+aaaceeeeggggghiiihiiiiiiiiicRZZ^`bc]`c^b^ccaabT^ca__aWaaacc_acaccT]_a_caaaXacX]bc`b_[_a]_EOXX[_[bb_`
+ at FCC2HFRACXX:7:1106:5545:68939#TGACCAAT/2
+CATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACC
++
+__beeeeeegggfhfhhhihfdfhfiiffgfhhhfhihidgfcha_ZPacc_bfH__gfgacc_aa_UW^]GR[[`^GQ^a]]_a[TXXW_RS_``a]a_
+ at FCC2HFRACXX:7:1106:13935:76457#TGACCAAT/2
+CCTCGACGATGTTGCCGGTCCCGGCCTCCCCCTTGGTGCGGATCATGGCGGCGCCCTCACGGACCCTCCGGAGCGCCTCACC
++
+__beeeeeggcgehiiiiiiiihiihhiiiiihhhibffhgdcdedbddccY[Ta[[^`aW[TTZa^`a]aOZZaaaXTGJW
+ at FCC2HFRACXX:7:1106:10384:82155#TGACCAAT/2
+GCGGGGTCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCC
++
+^_aeec_cecgc`ffaeh`fgefhiffh___dhid]^`a]`bcZaacaOVV^^aacc[_aaca[acccaZXW`]]`RTTLLW^^X]TXX[X`TXa
+ at FCC2HFRACXX:7:1106:12148:94474#TGACCAAT/2
+CTCGCGCAGATGCTCCGTGGCGGGGTCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCG
++
+bbbeeeeegggggiiiihihhiiieKX__]]`bcZZ\_a^Z^WW`aaTXTTT`b[G[`_aZ[RV^TZTV]QWQW[O
+ at FCC2HFRACXX:7:1107:12148:13865#TGACCAAT/2
+CCATCCCCGTCATGGCCAAAGCGCGCATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCAC
++
+bbbeeeeegggggiihiihhhhhihiihiiiiiihgiiifgggeeccaacacccbccccccccaccccc_acac^acc_cc_aaRT]_`_LOTOXb``b`
+ at FCC2HFRACXX:7:1107:12090:73635#TGACCAAT/2
+CTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCACACCCGCCGACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCG
++
+_bbeacceggggehhh_fhdfhhbb_e`ggaaaU\Z]ZZ^WX]]YYTW`WTTXW_WXUaZVa_ZTTZ^`ab`YY`_`XQQX[`[Y]bYEGW[W]bab^bc
+ at FCC2HFRACXX:7:1107:5346:89535#TGACCAAT/2
+GTGGTGCGCGTCGTCGGCGGGTGTGAGGACCTCGCTCTCGTCGACGTAGTCGACGCCGACGGCCTCGAGGATCTGCGCCTCGACGAAGTGG
++
+___e^ceeggggfghhhfhigU\X_T]abaa`_[ZW[``aW^UOT_TW^^][ac_T[TTZ__acZaW__a]bbbb_X]_T]TOX[ET^JYb
+ at FCC2HFRACXX:7:1109:6882:8797#TGACCAAT/2
+CCCGGGTCGGACATCCGCGCCACGCCGCCCTGCGAGCGGATGTCGGCGGGGACGCGCTCCCGCGCCATGAC
++
+_bbeeeeeggggfhhiihihhhihiihiffggfeeccaccU__`^aaccaVWTV_[TUacOOVZT]TGSYb
+ at FCC2HFRACXX:7:1110:1464:36301#TGACCAAT/2
+ATCGGCCACTTCGTCGAGGCGCAGATCCTCGAGGCCGTCGGCGTCGACTACGTCGACGAGAGCGAGGTCCTCACACCC
++
+___eeeecgegggffgaghhhhcffhdh`fgaghefgdadbX]FW\V_ac`GW[XTXWVVVVWZV_aO[b_b`WS]_a
+ at FCC2HFRACXX:7:1113:17227:7535#TGACCAAT/2
+CATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTCGGGAATCTTCAAGAGGG
++
+___ceceefggfeXdfbeghhfeOcgcdgffdVbaddgg]aaRRTTT]]b_`b[GR
+ at FCC2HFRACXX:7:1113:2047:83280#TGACCAAT/2
+ACCCCCCCAACCCTCCTCTTCTCCCTCCCCTGACTGGAGAGAGAGAACCTGAACCTTCCCGAGAGGATAGATAGGGGGGACGGAAGGCACC
++
+^__ccccecggeehhihhfffdfgh^ffhgffXaefh`ehbbgfdeegce[HZ_ab_`bcaZ__a[^^bbbccb^a]]_HT][OWT^`a^_
+ at FCC2HFRACXX:7:1114:6393:73852#TGACCAAT/2
+CATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAG
++
+a^Zc`Q`OO_ceeagaghfhiiidfbedef``gagbad[`^_aaaa^\QVVTEQ[[W_cZ[^Q]`[Zaccc^`^aaaTX]a^]aVXOTLT]^ac]aaR_X
+ at FCC2HFRACXX:7:1114:9800:90016#TGACCAAT/2
+CCCGGGTCGGACATCCGCGCCACGCCGCCCTGCGAGCGGATGTCGGCGGGGACGCGCTCCAGCGCCATGACGGCGCAGGCGCCGG
++
+bbbeeeeegggggiiifhiihfhihihihigggeecccccccccacccccaTV_aaaWV_Y_bZ]aLW]]__ZTX[LXaT[X_Xa
+ at FCC2HFRACXX:7:1115:10995:43390#TGACCAAT/2
+GTCGGCCTCGCGCAGATGCTCCGTGGCGGGGTCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCG
++
+bbbeeeeeggggghihihiiiiighihhigcRV^b`bb]bY_YVTWL[`^]`cWc[WT[`X`acacca_aac]X]a^c^[aX_[]R][^[_
+ at FCC2HFRACXX:7:1115:3865:85768#TGACCAAT/2
+CATGTACTCAATCAAATGTTGAACGGATTGTATGTCTGTCGCTCTGCCAGCCCTGCTTATGGCTTATGAATGATGAATCAATGAATGAATCACATGTTCT
++
+^^Zccacccggaace]c^b^ac[dgfJ_^bYX^e^^e^^ScW_gdegbgfaed`Z\ecc[_bXbU_c``dgaddg^db^V^^cbc_RUZZGGT]R]___c
+ at FCC2HFRACXX:7:1116:2899:50522#TGNCCANT/2
+GTCGGCCTCGCGCAGATGCTCCGTGGCGGGGTCATCATGGACG
++
+[^[c^[c`^cgg`efffgbfh_ee^`efhdaaU^]Y`Y]]GKO
+ at FCC2HFRACXX:7:1116:14958:80448#TGNCCANT/2
+GCCGGCGGAGAGGAGATGCATATCGAAGGCAGATGGATGGATGGGTGA
++
+YYa`ceU`^^HYaaH^X^[^[aScebbbUb]_fXbfd]X\`HZa\GKZ
+ at FCC2HFRACXX:7:1204:5783:11609#TGACCAAT/2
+GTCGGACGGGAGCGGCGTGGTGACGGTGTACGGGAACAAAGGCGC
++
+___eeceegg`ccfcdgcfaGZH_ddZ^\d]^]U\]\^bGLT^^a
+ at FCC2HFRACXX:7:1208:15273:53625#TGACCAAT/2
+CCGCCGCCGCCACCCCCCCAACCCTCCTCTTCTCCCTCCCCTGACTGGAGAGAGAGAACCTGAACCTTCCCGAGAGGATAGATAGGGGGGACGGAAGGCA
++
+bbbeeeeegggggifhhiiiiiihiggfggeeeecdbdccccabcbbc``]^[aaaacccbaccccccccccTZ[[[[bb]_b]bbca[_LT[_T^_aP^
+ at FCC2HFRACXX:7:1208:4746:76848#TGACCAAT/2
+CTCAAAGCAGCCCAAGTCGGCGACTTTCTCCATCAAGGTCGGCCTCGCGCAGATGCTCCGTGGCGGGGTCATCAT
++
+___eceeeagegeh^fa`eghi]ffhhdffiI^aebegef_eghfhddec[__bbcccc\`a_ca_aaETP]___
+ at FCC2HFRACXX:7:1210:20434:50036#TGACCAAT/2
+CTAGGCTCCCCTGGTTTATCATGTACTCAATCAAATGTTGAACGGTTTGTATGTCTGTCGCTCTGCCAGCCCTGCTTATGGCTT
++
+aV[Vc`cegfggggY`cf]eY[ebbeb[ggcad[P^e[^acbeefO^ceXXXWX^eW\bcbfebfbfhfdddbdeeec_`R\_^
+ at FCC2HFRACXX:7:1212:13462:36526#TGACCAAT/2
+CATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACCGA
++
+__Z^ccZcegc]b^f[bfb_J[e__cegdZeZ^H^HV[
+ at FCC2HFRACXX:7:1214:12805:78804#TGACCAAT/2
+GACCGGATGAAGAACATGTGATTCATTCATTGATTCATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGAT
++
+bbbeeeeegggggiihiighhhihehihhghihiihdhidghhhiiiihheghhhhhhiiiiiiiiiggggcecc^accccccccccccbccccbbdcbb
+ at FCC2HFRACXX:7:2110:7919:15273#TGACAATC/2
+CGGCCTCGCGCAGATGCTCCGTGGCGGGGTCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGC
++
+b_beeeeeggggghhiiiiiidhiiiiicRZ\b`bbbbT]\WVYX[GW`a[TYT[acc[[_c[_a_ZZ^ZaTX_[^^W^O][[T[X^`
+ at FCC2HFRACXX:7:2113:10117:75866#TGACCATC/2
+TGAAGAACATGTGATTCATTCATTGATTCATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGA
++
+[__eceecgcgeghfhhif_efhhd_e_ggchgfhfhibgafg_^ea_fdcZcdW_Yef\bZaaggdg`b]Zabccb``]T\\bcc_b_b]R]`]b
+ at FCC2HFRACXX:7:2115:7974:84543#TGACCAAT/2
+CCGTGACCTTGGTGAGGCGCTCCGGAGGG
++
+\__`SQ`cJJ[^`efRYZacfUc^U^^_U
+ at FCC2HFRACXX:7:2116:16331:24258#TGNCCANT/2
+CGGCGTCTTCGTCGGCTCGGGAATCTTCAAGAGTGGCG
++
+a^_cccc`ageeggef\bbfhf]c^X^W^^_efW\a\W
+ at FCC2HFRACXX:7:2208:20999:62970#TGACCAAT/2
+CCCGGCTTCCTCCGCGATGCGGGCTTGTTCCGGGGTGACGACGTCCATGATGACCCCGCCACGGAGCATCTGCGCGAGGCCGACC
++
+[__eeeeeegcbcegdedfdadfO_cgQ__fffggFRZ]\^^acc[PR]RJXR]G[^a_[T[aVOWTQ]bbYbac_X_ac^O[[_
+ at FCC2HFRACXX:7:2213:20934:38627#TGACCAAT/2
+GGAGGATGAAGCCGGCGGAGTGGAGATGCATATCGAAGGCAGATGGATGGATGGGGGATACAAATATATGAGAGAAGATGAC
++
+__[caacceegaeh_ege_edcgRa\H\bcgcfafXZ^d^U^Z^]b]b`b`]]^aGW\[[bb]b_GS_bYY_GSW^^bRS]_
+ at FCC2HFRACXX:7:2311:18581:78965#TGACCAAT/2
+CATGTCTATCCATCAGTAATAACGGGACTGAATCAATGGTAAGGAACACAGCTATGGTACT
++
+a[^Z\a`\`KQbc^`_fea]K^RbeP_H^dI^^]XY^IYO^c`IO^Q^H^^WaH\aa\HMV
+ at FCC2HFRACXX:7:2314:7565:4236#TGACCAAT/2
+CCTGGACGATGGCACGCGCGCGGCGAACAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAGACGCCGCCGCACCCAAGCTGCATCATGAGC
++
+_[^ccWcccccgehffhhehc_^_`accX\`\KY^a^^X`W]b]bcb]]bbbbcLTVT_aOTTTOW]]ZacET]RT[X_OGQ[]_GRS]Y]R_bc
+ at FCC2HFRACXX:7:2316:14788:22713#TGNCCAAT/2
+TTTTTTTTGAAGAACATGTGATTCATTCATTGATTCATCATTCATAAGCCATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGAT
++
+^_aeeeeeegaeegffgaghdfffhhiihchbbfgbfhhfhhihhffhihfhhhffbfghfeeged\Z`ba_acaccacbccbbcccccbbc__`bcb]`
diff --git a/test/data/Os.protein.2.fa b/test/data/Os.protein.2.fa
new file mode 100644
index 0000000..c164b59
--- /dev/null
+++ b/test/data/Os.protein.2.fa
@@ -0,0 +1,95 @@
+>LOC_Os03g60760.1|PACid:24121828
+MEVEMGHGEEVAAAMEEEELQGWETPRREECRIPVVPPQCPAPPRKRPVALPELGKERREPPKGGYFQPPDLESLFVLAP
+PRRQASSCA
+>LOC_Os03g08270.3|PACid:24121831
+MSIEERTLSLINKTTALNPNAQEFVPSSLRSINDVSNRSDTSRISVSGSSKDTIADQQDPVIPSNPDEEAHRYWQEQLPD
+DITPDFKVLGQDEMPGPDNISLTGLSINDSIGASLFSPNQTSNLQHRASPFIRDTLSTRSKIEFPSPTYVEEQSRATIMS
+PTASAMSPTAAPWVKTVRNGVQYNANRRDASHYNGDSSIGAPVQNLTDAYFGSRRSFSSTMDIMSQLENKVDGRFNQNLR
+SLSFGHSSPPSPASYGQNGLANYNKEAFGLANNTYRSHSAVLADDILSPSAGREHISLDAPRGRYNTTNLPVSGLGSSRG
+SQFMASSFNGNHDIVSNNTLQNIAGVQTGPAWLEADTAANMFLESKDEAHDFASLRHALLEQDRQVLLTGANPLAKELNI
+KELYNLQSRLAQEKARDVYRQRFQMPEFQGLVQEQNTPIDLCGLHVSEAIHALNYELNNRRKIARSTGRRLQVIIISSTR
+TPARLTAAVEQYLLEHGIQYTQAQPGLFRVLLQ
+>LOC_Os10g39590.1|PACid:24095156
+MSMITVKVKTLTGKEVEVSIEATETVARIKEQVEAAEGIPPPQQTLIYGGRQLADDMTAEMCDLRHGSELHLVLALRGGL
+L*
+>LOC_Os10g41970.1|PACid:24095158
+MRGSRMNPGDRRTRSTMSIVIVMSLCCFFYILGAWQKSGTGRGDSIALRVTKETDCTILPNLHFETHHSLGGVNPLVMTD
+KVFEPCHIRYSDYTPCQDQNRAMNFPRENMNYRERHCPTETKKLRCLIPAPKGYVTPFPWPKSRDYVPYANAPYKNLTVE
+KAVQNWVQFEGDVFRFPGGGTMFPNGANAYIDELASVIPFTDGTIRTALDTGCGVASWGAYLMDRNVLTMSFAPRDSHEA
+QVQFALERGVPAVIGVLGTIKLPYPSGSFDMAHCSRCLISWKSNDAMYMFEVDRVLRPGGYWILSGPPINWKTNHQAWKR
+SKEDLEAEQNVIEKIAEMLCWGKIHEKGDTVIWRKKADSNECHNKDDHPSKMCKIQDADDVWYKKMEGCITPFPEEAQLR
+KFPERLFAAPPRILQGRTPGVTEEIFEEDNKLWKKYVSTYKRINKLIGSLRYRNIMDMNAGLGSFAAIIDSPISWVMNVV
+PTISEKNTLGIIYERGLIGIYHDWCEAFSTYPRTYDLIHANGLFSLYQNKCNMEDILLEMDRILRPEGAVILRDNVEVLN
+KVRRTVMGMRWKSKLLDHEDGPHIPEKILVSVKKYWVGNEEENSS*
+>LOC_Os09g38670.1|PACid:24136581
+MPFASCLLASSSSTMMARPGAVKNIESWDEFTKHFVKSEDKLVVLVFMAPWSEPWKLMRPAVEKMASGLKSEEAEVCTIS
+VDRFNTLGRLLRVEALPTFVLVKRHRAVARVVGVNRDDLHSSINKHLAPPSSSPQPINIS*
+>LOC_Os09g26780.1|PACid:24136584
+MAGRATATATAAGKDRSSFAVTCSLLSQFLKEKKGGGGGLQGLGLGLRPAPAAPPAAGAGGAFRPPPTTMNLLSGLDAPA
+VEVEPNTAETAADELPLIKAPADQQSDESASEAAGEKAQQLTIFYGGKVVVFENFPSTKVKDLLQIVSTGDGVDKNTGTA
+ATQSLPRPAHNSLPDLPIARRNSLHRFLEKRKGRMNANAPYQANCTAAPSKQANGDKSWLGFGQEMTIKQEI*
+>LOC_Os12g21920.1|PACid:24147808
+MPTPSTATRRPSTVTRFALCLSSPPSTPLPTPVAAAHADADAAAAVIGRPKGEGREWEERSRSQRTPSPPNSESPPKANW
+GIASNNCYSRMIIASAALTSDRRMSNACDRMLAAVIPSPTAQPHAGHKGRDVCVLGYASPCPCPHLAGATAMNAT*
+>LOC_Os12g24659.1|PACid:24147809
+MADDKVISAIGPYFGKKLDLELIYGKKWQCSKEAALDSSTWQLNHQFMLI*
+>LOC_Os01g36294.1|PACid:24116931
+MAKVHELSTKGMAVDMTELFSTFSNDLICRLVSGKNFQGEGRNKLFRQLFKANSVLLAGFNLKDYYPGLARLKAVSMVMC
+AKARNTRKLWDELLDEIIDERMSKQQCEHDEGNDQDEMNFVNVLLLQEQGITREHLKAILVDMYQAGTETSSVVLVFAMA
+ELMQKPHLMAKLQAELRTTIPKQGHELITERDLTDMTYLKAVIKETLRLHPPTPLLLPHLAMADCNIDGYTVRSGTRVIV
+NAWAIGRNSESWEAAEEFLPERFVDDGSAANVDFIGTDFQFLPFGAGRRICPGINFASASMEIILANLLYHFDWDVSAEA
+AIDKDGIDMAEAFGLSVQLKEKLLLVPVDYKDGMQDSAVILL*
+>LOC_Os01g36410.1|PACid:24116932
+MAGVGGRLGTATARVVRRMMTRLKDGGAPWDYEEAYPVLYLGGGEGGAGDRQWEPGAVGLALSLRASALAGGGGYGLATA
+AAVVGFAGGRHGGRGVCFADAGQWLSRRRQQRSGSSRLVAPGRGAASVGRGGCEGSAGRGRASGRGGAEASSALHSLAAR
+FAGRGGMGGLGATTFGSHPMCSMKCLQGKRWERGERDGVLGHWQVGSRVLGPTDQRSTGIGEMRNISSQGFFFREG*
+>LOC_Os12g22750.1|PACid:24148077
+MSGVPPAAAGGDGTGGAPPGAGAGGGAPGAGAANNNINGGNSASQSSGGPFSRCILLLFPLLALSLYCHVRYVPVPDLHD
+ASSMLLSYCNVSVPDIHDAHRKENGAFNTRKRRAFSAASLYVRPCSGMLRPPLSSELGGGGSEEEEGEPRGERE*
+>LOC_Os12g22780.1|PACid:24148079
+MEDLHDWECRFTPRKLASLNKWSSRAGLSPMELQSCAGEVTDKVTAIAWGGRIRYLHLAFGGSSCWRYVVGLREGNKNVG
+AIVKGFHDGVAMGVFSLVDSREAAEAPTASHGDGLESQCGGSHAAVQGEHNLEPWAEACVCSIAF*
+>LOC_Os02g55190.1|PACid:24133604
+MAMERNAAPRVSASSSAAASPSTVGALLSKASVAAAPAREIPSPRSLLSRILHRSGGGGGFGCRLRLPRYCSSGAAAKED
+AAAEYVEVEVEAEAAAPKVVGRQAVDRESPRSSLGKKAAEEVSPASLGLGASLMLLLSKSAAELNRMAELRAQMERLVLD
+TKGEEEARSSNHPNASDDHADITKEEPTAFSGGALSRCSRTAAAPGNAGHHAAVPMDQMEAELEAELTLLQCATPRRDRQ
+LEIGDDEEESTDTHAATFADADDDTDGADDEEEEEEESGAAAQGGVSARELERRLHELLQWRHEERIAELETALERARKR
+LQEKEREVCWWRNTAKLVTRHKDDSRLR*
+>LOC_Os02g56470.1|PACid:24133605
+MVPQSGVGTKAVDYEVEQRDGGRVVKRKEAGLTRGSHGGVPVATSSVGRDMLAVSDIQAETPYAQLNAASVPGEAGRQGR
+WGSLPTARTLCRPCLLAADLSDELALTPIHQLRRLTSCT*
+>LOC_Os03g56500.1|PACid:24123297
+MSGEAESREASRQRRRRERAAAVERFVGVPLADVVRENSLVHLPPAAAARLRVVHPSWASHMSSPLFAVAHAAAPRRVSG
+VFVPSAGFLPFDGDDDAVPSPSLSFVPASSELVVLSSSRGVACCFSPADDAYAVCNPATASWTAVPSPPWRSWPRPAIVV
+LFDTSAYNFRGDFTLVCPFESEPGSSGAYCFQVFTSGTGAWWVTDAMSPAEGLVAASGVAAGATAWWRTSIGTAVGYTPV
+TGRVDLVTCPGDSDQWEIGLAAGMLHCAVIDGGDVVVFRLHEHGIWEVTTRVAVAEILQPSQPPPPARATTSTEIVASQQ
+HDESGAEEEEGSRAVVAAANAPLRLDDGVRLLGFQGAEVEVVVLAGRRLVAFDARTRRRREVAVPDEVDAAWDGAEHAAH
+INTLALIAPAALAAEPPLAKPPADP*
+>LOC_Os03g30530.1|PACid:24123298
+MPSRMMQAFAQEASDFDRQMGCMAGMFQIFDRRRLLTARQRGGARGTAPPGSHVLPNSNSNVSIQNPVASNNTLDKTFSK
+SMTENSSLSMESSRASSSSSSCSSFSSTDINRPIQQELSYINKERFAGKPPRSSQTKSVKCSKTEAKTKDPHTGFRDIVK
+ESINRETHGMTIKTSTKESRKGLHKDSPRPLLISKSTDGTYVIGIDRSTGVPGYVHESSRPPRFSCDDRQLLRSVEAQDS
+KKPSAKLKELPRLSLDSRKESMNPCSRLKNSGYIRTDDNLLDVLKHQESPSHQRASSVVAKLMGLEGTTPDIHETARSPT
+PVHGTQIDQPSHCQRIKNQDHSVPVQKNHSPVLKTNPSPRIIPEAAPWRQNERAVTGRAAEVKPRTASIYADIQRRLRGL
+ELSECNKELRALRILSTLHKKDGPSQSDNNPELTAIQKKASEQIVDSENFQSPIVIMKPARCITKPDASDTLVAPLSRPK
+GIRRLRHEETSFTRKNENSDSKRNHSPNESAHSSGEEPVNSARSPRLSSSLSPRLAQKKADSERRSRPPVLPTSPGKKSK
+ETVSPRGRLRSRHSQTKSNSDNDNVLHIPETKINLAKQIDVGVVDHPNPLNANSPYIHQSKIASTPNREEMPTILPADKK
+>LOC_Os03g56724.1|PACid:24125111
+MSCEKLSRQSLHLVLNEGRGLFSLRHMDVSKLFYPSTAEALEAEAKAKKKKNGTNKIGSIGRLPTPSIHYQPYTWSASNP
+YSSLCALALFGERSKNKILCTDMAGHTSIYNPELRSFMRMPDLNSPKRYNSCVAVSIPGASAHAMSNFDIDTDHSLYIMD
+IDPTYWCSSEVLAYDPVEECWCWGPLPQPPFFQDREYKVPLKPRFMVVDSTKICVSTTTATYSFDMVTRDWNKVGDWVLP
+FNAEYVPELGHCLGMSDGGPFDLCILDNLSTAAGSPPPVVRHVGMEFELPENWSQVYRDLVNLGSLRFCIVNGYTIENER
+YECDFNPVTVFTGVEVLPTSSEQGLLMIKHKSKCIMTYIMFVL*
+>LOC_Os03g49850.1|PACid:24125112
+MTPGLEGVDPAVLDSGAADSPLLTSVTSTMRMTVVARATATIATSHARVDLAAPDSGAADPPPPSSAMMMTIMTTRARMT
+TMTMASRARADPSGAELGRGRFANVGLRSCGDCCGDRVP*
+>LOC_Os01g11360.1|PACid:24119702
+MAARGSRSCAWPCGLGMAGGGQEGSGNRQGVGDGVPPDGGRDSEARRKMVTALGGYGSPRGCGVPRQWQSEHCESDKVEA
+DPIEQIQRGFSIYRANTEGKGVVDGGFTCFAMGIGRVVSAGTAAASAESRLRRLLEMLLVVVSNIGTYQTRGILVKDLLK
+*
+>LOC_Os01g44140.1|PACid:24119703
+MTVAAAAAAAADDAGRPGAAAARLRVMWRVVRAAEALALAVLLSRSLPLLPVAAGAAGAVLRVGASFLLHPCSVFLLANG
+IVVLLVALSRRDRPSSSSSSSSSSSCSDDHDDVHDQFLSFAGAHLPPLPAAITGAAAADQEEGAVFEDKQAVHVTPARAA
+PRRSRSEKVGRGRRPTRAASPELRRSESERCRRRRRSLSSSSASLADWGMEEDDGGEKEEEEFRRAVEAFIAKQQTRFHR
+EESFVLVAGAGAGDETSAAAAAVEVK*
+
diff --git a/test/data/Os.protein.fa b/test/data/Os.protein.fa
new file mode 100644
index 0000000..000f57b
--- /dev/null
+++ b/test/data/Os.protein.fa
@@ -0,0 +1,199 @@
+>ChrUn.fgenesh.mRNA.8|PACid:24093257
+MSHSSGASDASSTSDEEPVPAPSTSVLQTVNIRSHVPVVLDLDVSNYSQWRCSFESVLGKFGLEAHVQEPPALDLRTAEW
+RRADHCVVNWLHNSIAKNVFDVVYKPRASAFTVWSDIEGVFRDNAVQRSVYLETEFRSINQGDMTITQYTAKLKQLADGL
+RDINMPVSEPSQVLNLLRGLNTKFRSLRASIADRNPPHTFMTARSYLLLAELQMQHDAKAEAGEALYAGTGSSSGTSDTT
+GQPRPKGRGKRRGRGGGAPPGGAPSTPGGGAGAGHDGQPRPPAPWGYNPWTGFVQAWPFPFRAPGAGVLGPRPPFQAQQA
+MTAQHLLPALPPASPGVQSTGAWDNSALYSALQSAGVATTTPPSAADWFLISSSHVRLLHLPRRLPHLLVVQAADDRLEA
+TIAYCDNISSVYMSKNPVHHKRTKHIELDIHFVREKVALGELRVLPIPSAHQFADVFTKGLPSSMFNEFRASLCVDRRST
+AGSGALTSSTTEYSPTMLSISEFRYGSLASVARLIDRSSCTCTYLVLGNAPMALESSKVFAKAAVFAMCMIVALTSPSNH
+FCPSQELSSAVTDVLTCAYAVLLSALRRSWSRDNWRTNRHCPQCDNIPHPLAHSYARSGGISNNVEVGEVMGPSESVRSA
+RGEVAVVARLALWLRRDKKKHARPRGKRIGASTIKGTSSSADARFDTQIPGSSTHKYQRGVCGDFINLKIYRSNLSEVSI
+GPFRGWALDFTGQIYPSSSKGHWFVLVAMDYFTKWAEAVPPENITCTEANG*
+>ChrUn.fgenesh.mRNA.7|PACid:24093258
+MDRRSRHWRDGGRGRTGGGSAGVIEVEDGLTPGGGGAMEVDGRSAESRGGAVEAEGGAAEVHGGCGKAESAWWRRKAEAP
+WKRRRCIGGGRRRRRDRAQRNAMGRGGAAFVACGLVGGRYHVSVMVKTTNGSRDSNNASGSEEQINGPRASGASDNSPSP
+PHENPTIDQVLDNQTQMMTMMMQQMQQQYHQVLQQSKLLKFLRVKPPTFSGTTNPIEANDWLHAIEKKLNLLQCNDQEKV
+AFATHQLQGPVSVWWDNYMVTRPAGTEVTWSEFCQSFNKAQVPEGIVAQKKREFRSLQQGTKTVIEYLHEFNRLARYAPE
+DVRTDAERQEKFLSGLDDELINQLISRDYEDFEKLHCPYHPGSFNKNYNSGSHSNKEAQSAPEVILGTFPINWTPAVILF
+DSGATHSFISKRFAGAHGLSLVKLKIPMRVHTPGGGMTTTHYCPSVTVEIQGLIFLANLILLESKDLDVILGMDWLTRHR
+GATGEEQEVVVEKTTKKLEDITIVREYPEVFPDDLTTMPPKRDIEFRIDLAPGTAPIHKRPYRMGANELAEVKKQVDEQL
+QKGYIRSSTSPWGAPLRIREEDIPKTAFITRYGLFECTIMSFGLTNAPAFFMNLMNKVFMEFLDKFVVVFINDILIYSKF
+EEEHEQHLRLVLEKLKEHQLYAKFSKCDFWLKKVQFLGHVISAQGVAVDPANVESVTKWTPPRTVTQGLRCVLMQDGKVV
+AYASRKLRPHEGNYLTHDLELATVVHALKIWRHYLIGNRCERRWLELIKDYDMGIHYHPGKANVVADALSRKSYCNVAWV
+EELCCEAQPTLVEQVRIAQASDPEIAKLKKNMRVGKARGFTEDEHETIWMGERLCVPENKELKDLILIEAHQTQYSIHPG
+STKMYQDLKEKFWWVSMRREIAEFIALCGVCQRVKAEHQRPAGLLQPLQIPEWKWEEIGMDFITGLPRTSSGHNSIWVVI
+DRLTKVAHFIPVHTTYSGKRLAELYLARIMCLHGVVGNFL*
+>ChrUn.fgenesh.mRNA.71|PACid:24093259
+MAVRRRGSVAGDSNQAAREVAAHGAKGGGVGQRRLRTRERRVRGGGPHQRAWRPAQRMKAAVTTGDAEARTADGDT*
+>ChrUn.fgenesh.mRNA.11|PACid:24093260
+MTWRKFRTDRAGKAVMAIEEVQALRKEFDAQQASNYQQPVHKKVRKDLYYAFHGRSSHTTEQCRNIRQRGNVQDPRPQQG
+ATVEAPREAVQEQAPPAEQRQDAQRRVIQVITRADPPSQLSKRQKKMQIRTVHSITSAGEGAPQYLNQLISFGPEDAEGV
+MFPHQDPLVILAEIAGFEVRRILVDGGSSADVIFAEAYAKMGLPTQALTPAPASLRRFGGEAVEVLGQALLLIAFGSGEN
+RREVQLQRHLRPCNPEQVRSHFPPQLSQAQDARPDRSDSARITGGDMGEEEAESILEVLKKNIDIFAWSPDEVGGVSTDL
+IIHHLAVKPDGKPRKQKLRKMSADRQEVAKAEVQKLLRAGVIQESNHPEWLANPMLVRKSNDKWRMCVDFTDLNKACPKD
+DFPLPRIDQLVDSIAGCELMSFLDAYSGYHQIHMNPPDIPKTAFITPFGTFCHLRMPFGLRNAGATFARQVYKVLCKQLG
+RNVEAYVDDIVVKSRKAFDHTSDLQETFDNLRAADIKLNPEKCVFGIRAGKLLGFLVSERGIEANPEKIDAILQMKPPSS
+VHEIQKLAGRIAALSQFLSKAAERGLPFFKTLRGAGKFNWTPECQAVFDELKQYLQSPPALISPAPGSELLQYLAASPVA
+ISAVLIQETEFGQKPVYFVSEALQGVKTRYIEMEKLAYALVMASRKLKHYFQAHKVIVPSQYSLGEILRGKEVTSRLSKW
+AAELSPFDLHFVARTAVKSQVLADFVAEWTPVFAPEPEPVEQLWVMCSDGSWSHKGAGIAAVLISPNGVPIRYAARLQFD
+TTNNTAEYEAILLGLRKAKVLGVRRFLIQTDSKLVAGHVDKSFEAKEEGMKRYLEAVRSMEKCFTGITVEHLPRGQNEEA
+DALAKSAACGGPHSPGILFEVLHAPSVPMDSLEVMAIDQVKLGEDPYDWRIPFVKHLETGWLLEDEAEAKRLQLRATKYK
+MVSGQLYRSGVLQPLLRCISFAEGEEMAKEIHQGLCGAHQAARTVASKVFRQGVYWPTVLKVCVEQIKKCESCQRHGRTQ
+TAPQYDLQPIAPIWPFARWGLDIIGPFPVARNGYKFAIVAVEYFSRWIEAEPLGAITSAAVQKFVWKNIVCRFGVPKEFI
+TDNGKQFDSDKFREMCEGLNLEIRFASVAHP*
+>ChrUn.fgenesh.mRNA.52|PACid:24093261
+MDGRDRTGPRRLTGEGLDDASDDVTDDGGGSAEETARTAHARRRTAARGRKRRTPGRSGQHGEHTDDQSDGGGGTNDDGD
+EERAAATFGLSTATMLRRVPTAAKGRTRTATTWRPRRRSSRATATTGATAELGWSGGGDGEARAHGARTIPATRGKGEGC
+DNYGTYTCPDGEESATLMHAVHMLSAMDAVSVERDKAAHDRENWNGGKICKLESKVYRLQKELAELKGETPPPAPKLRLT
+ARKRTCPPPRLQLASKIRVIGEAVPDRAEPMVNTRTGSGSGSGSGATNNEGDPTLAQILAQQTQLINLLVQQAQNQQANN
+QNQNPPPPPQNKLADFLHLHGPAAEWWDHFRQGRAEGEPITWQEFTAAFKKTHIPTGVVALKKREFRALNQGSRSVTEYL
+HDFNRLARYAPEDVRSDEERQEKFLEGLNDELSYALMSTDFRDFQQLVDKAIRQEDKYNRMEQKKRRAAQFKAQQGSNQR
+PCLVTGPQAPSYPQGGSSSVVRPQRQFYNNNTGNRGNDNRNMVARPAATPAQNQPVRKEQGSKPVVCFNCGDPGHYADKC
+PKPRRVKNAPASNNSNVPAPKARVNHVAAAEAQNAPDVVLGTFPVNSIPATVLFDSGATHSFLSKSFASNHGMEVISLGR
+PLLVNTPGNQVFSTQYCLSVTIEIEEVPFPSSLILLESKDLDVILGMDWLSRHRGVIDCANRKVTLTNSNGETISFFASS
+LKSHGVILNQVVLQEIPIVQDYPDVFPEDLPGMPPKRDIEFRIDLVPGTNPIHKRPYRMAANELAEVKRQVDDLLQKGYI
+RPNTSPWGAPVIFVEKKDHTQRMCVDYRALNEVTIKNKYPLPRIDDLFDQLEGATVFSKIDLRSGYHQLRIREEDIPKTA
+FTTRYGLFECTVMSFGLTNAPAFFMNLMNKVFMEYLDKFVVVFIDDILIYSKTKEEHEEHLRLALEKLREHQLYAKFSKC
+EFWLSEVKFLCHVISSGGVAVDPSNVESVLSWKQPKTVSEIRSFLGLAGYYRRFIENFSKIARPMTRLLQKEVKYKWTED
+CERSFQELKKRLVTAPVLILPDSRKGFQVYCDASRLGLGCVLMQEGKVVAYASRQLRPHENNYPTHDLELAAVVHALKIW
+RHYLFGNRTEIYTDHKSLKYIFTQPDLNMRQRRWLELIKDYDMEIHYHPGKANVVADALSRKSYCNMSEGRRLPWELCQE
+FERLNLGIVSKGFVAALEAKPTLFD*
+>ChrUn.fgenesh.mRNA.61|PACid:24093262
+MKEMRVTKDDTDYAPADEIGLSQLADAPEATKPSQSPRQIN*
+>ChrUn.fgenesh.mRNA.67|PACid:24093263
+MTTASLVHPSASSSSSSTRAEVEVVGGVFVCSDSCSGDIVRNLIVDYGSGKITLTAACIQFCVPCTRPQPLLPPLCHSGP
+INTCFATADDRGRSRFRHYH*
+>ChrUn.fgenesh.mRNA.75|PACid:24093264
+MSSKVTFQIVHGEGNIRFGPDGVDLSDFVMTSKGIDRPAERTFQSIYSWLLRGFRIDQEVYTMSVSVVVSRAIEGYFWEL
+MPMDSTTAWRRYVEMAFERSWPLVIFVSVQEKDTNVSMRTEDVEGPSNAGDVVGPSMENEENQPREEQAMGMADEGERVG
+IIVDEMEREDSDNEQAEDDASSDEEGDVMATDWANEDFSGLVISEGDHVPWEYKENEVIEGARYAHKDEMKEAVKHWAVS
+LQREFRVVKHIENKFKYTISYAKAWRAKQKIIEMRYGTFEASYDNLPRLLATIAQRNNNTYYDLHTFTSVDDRTKSVLQR
+AFFSLGACINAFVHCRPVLCIDGTFMTGKYRGQILTAIGCDGNNQVLPMAFAFVESENTESWYWFLERVHIAVVRMRPNV
+CLIHDRHAGMLRAIDYLQNGWDEKGLPAKWPDVRSRWCMRHMGANFYKQFKNKHLMDLFKRLCAQNQEKKFNELWDKLDE
+LTTKQTDEQSRRPQVEGEEPPIPLGALHDDPPTMRRRSGSSIRNFSQWIENEPKEKWSLLFDTDGSRYGIMTTNLAEVYN
+WVMRGVRVLPLVAIVEFILHGTQAYFRDRYKKIGPSMADNNIVFGNVVTKYMEDKIKKARRHRVVAQGTQVRRYEIMCVD
+RSRRGIYRKQAIQECVLKADGGCTCSCMKPKLRHLPCSHVLAAAGDCGISPNVYVSNYFRKEAIFHTWSEEIYGFGISGS
+YTTLSAQVFYIPDPSKLRVKKGRRQTRRIRNDMDESEAGGRTLRCSKCDLRGHTYKKCPKNAEVPSGADASPSGQASDGM
+AYDTPALLNRGIDRNHRSFLSAVEGAQLGTFRPRTSREWLRVDPRHVPWLRAAGLLPLCRLVEAAADDRDPAKRWDADRS
+LLAALVDRWRPETHTFHLPCGEMAPTLQDVSYLLGLPLAGAPVGPVAGVVGWKEDITARFEQVMRLPHLGPTNTLPPYST
+VGPSKAWLLQFTADLLHPDADDYSVRRSLEAYLLWLFGWVMFTSTHGHAVDFRLVHYARSIADAQPQDVPQWSWGSAVLA
+ATYRALCEACTKTDAGAIIAGCPMLLQLWAAERFAIGRPVVDSAPYGVGRSAQWPEDGPTMGTYWCRRGRRYAHVQVRRG
+YPDFVFEFDRLQPSDVIWEPYTEEVVAARAPLGLSSLCTRDQAYWLTILPMVFDIFVEPHCPQRVMRQFGLRQVFPGNVQ
+PTVPPADHSLTRRGQLAGALWAPRVQQYVDDWVLATEEVINELFPHTEENYRDYLRWYLPRTRARVTFTPDAPEPHVAAV
+TDAYPTHRDRDYFVAADAARDISADITAVQVRLNRGLHLTDVEQRATFDRMQEKMRAVMRVFSCRSAVDVVPPAGPDLVC
+LRARSQARPGASASSAGAFATSSGAFASSSSHGASIPRPHAGYAAGIFGTGASSSHAGRTGPTSQFYDDDLHGADHQDVL
+GSSQLGGAPEAHTQEQPEVTPVQAGRVGRAVPPDRLTYSQGHIRAQGRRDRVIFIHMVLEQLMLTTTHFRRFTVVPYPVA
+RTVHNSTHEKRQLELSLSTFGVAC*
+>ChrUn.fgenesh.mRNA.32|PACid:24093265
+MEFCSKIFKSYYKYEGIVRHYTVPHKPQQNGVAERFPKQFWAEAVSTACYLINQSPIYTIDKKTHFEVWSSSPANYSDLR
+VFGCTAYAHIDNGKLKPRAIKCIFHGYLSGVKGYKLWCPETKKIQVATVEQSPKCSIAKDKPKGNTKPPQRYIEETNIIA
+YALSVVEEIEEQMDVKTAFLHGGLEEDIYMEQPEGFVVPRKDNLVCRLKKSLYGLKQSPRQWYMRFDSFMIPQKFRRSNF
+YSCVYLKVVDGSAIYLFLYVNDMLIAAKDKSKIAKLKAQLSSEFEMKDLGAAKQILVSTPLAAHFRLSSNLYPQSDYDIE
+FIPRVPYSSAVGSLMYAIVYSRPNLSHALSVVSRYMANPGKEHWKAVQWIFIYLHGTSSGCLQFGGSRDGLVGCKDLDFA
+GDLDRRRSLTGYVFTIGGCAVSWKASLQAAIALSTTEAEYMAISKACNEAIWFRALYTQLCEVTSCINIFCDSQSAICLI
+KYQMFHERTKYIDVRYHFIRGVNA*
+>ChrUn.fgenesh.mRNA.29|PACid:24093266
+MAEGIVGLLITKLSAVLARDATTLLGASQLLKEVSALRGLFSEIHDVKEELESMQAFLQGAELFRDTDKTTSVFVKKIRD
+LAFEIEDVVDEFTYKLDDKHGGFVDRVKKRIKHVKTWHRLAHKLQEIKRRLEAADRRNVRYGMRGIQMKGGCSDAHSKSA
+GQTSYFAREEDLVGIKENKEKLIQWLTGDRELGSKITTIWGMGGVGKTTLVQHVYNTIKVEFDAAAWIAVSKSYDVEDLM
+KKMAKDFGLRIDIVNMENRSLIEMMHRYLQGKRYIVIMDDVWGVDVWFKVRHVFPTNCISRFIITSRIHEVALLATRNSV
+IQLEPLHEHHSWELFCKEAFWNNDNKTCPLELKYLAQKFVEKCNGLPIAIACIGRLLSCKQLTYSEWENMYKQLEIQLTN
+NAIFDVSNILKLSLEDLPYNLKNCLMYCTIFPEDYLIHRRKIIRHWITAGFIQEIGNKTLEQVAEGYLNELVNRSLLQVV
+RRNEFGRLRQCQMHDIIHLLALNKSNEERFCQIYNGSRKVLVAGTRRLSIQNENVEQLDRSGATYLRALHVFKSHINIDL
+LRPILKSSNMLSTLDLENVQINMLPNEVFDLFNLRYLGLHNTNIETLPESLGRLQNLEVLDAFETNLSYLPKHVVKLEKL
+RYLYAGTFFRDHEIIGAFGGIEMPNGLRHLTGLQALQCVKASSEILHEVGALRELRTLGVANVKSEYSADLCAAITKLSH
+LIHLEITAPGEMEVLHLEGLHLPMTVSWLGIEGILEKTSMPQVLSSWSHVSTLTRLRLAFCRLDEDSFSSLLVLHGLYCL
+EISTKGFIGKRLKFSAGSFPNLRTLIVGGAPELNQVDIENGAMQSLDYLLFIECPNLRDLPHGIEHLTVLEKLCLLEASE
+ELIQRLRKMRDSDECDEDLMKISHIRNVTVGQIQKQIWERIR*
+>ChrUn.fgenesh.mRNA.15|PACid:24093267
+MSWHRAGVLLLGAQSCLPVPGVPAVGGIGSVLLSMARMGWKLCHVFRPYTVVMAGSVTRRGLDMTGFVLELRGMCVVLGY
+PHGVDYQARPLPEQEGDDAEPHAAWEVTAVILAGSPERTSLAVTAGGDSFPAACQNAALLAIGTLHQRYPDELQHSPYRY
+HPRRGGARDYATFRDASSEDDATIVHLARMVEVYDAARIDFHQMVRRGMVENNLKILELRQENLQLKKDLDAVEAQLHQL
+KIAQGEVCRPKRRRVCRSQKITARKSTSRPELVRQSLAWTCFVETPRAEPAPVVPQEGEASGFGSTEDALLLTFRPGPSQ
+RRNAATGDGNQPEGSNHNHQGNPPPPPPPPPPPPPDTNAILTQILAQQANMMTAFLYHLQNPPQHNAPPPPPQHSKLAEF
+LRIRPPTFSSSNNPVDALDWLHAVGKKLDTVQCSDEEKVIFAAHQLQGPASLWWDHFQATQPEGQPITWARFTAAFRRTH
+VPAGVVALKKREFRELKQGNRSVMEYLHEFNNLARYASEDVREDEEKQEKFLAGMDPELSVRLVSGDYPDFQRLVDKSIR
+LEAKHKELESHKRRLANFRNQQGANQRVRYTNPYPGGSSSQQQQQQQQPRSTPRPQFVVRVPQPQQQQSQQGTRAPRPPT
+PTVQPGQGRRDAQGPQRLCFNCFEPGHFADKCPKPRRQQGQAPPRSNNGGKDVIRGRVNHVTAEDVLTTPDVIVGTFLIH
+SIPATILFDSGASHSFISVPFVGRNQLGVERLRNPLLITTPGGVMTAKYYSPAVPIEIQGIPFPSDLILLDTKNLDVILG
+MNWLAQFQGVVDCARRTVTLYRGPEQPVLFFAPPTSVSSSELHQIGLSEISIVREFGDVFPEELPGMPPKREIEFRIDLA
+PGTTPLYKRPYRMAANELAEVKKQLEELKEKGYIRPSTSPWGAPVIFVEKKDKTKRMCVDYRALNEVTIKNKYPLPRIDD
+LFDQLKGATVFSKIDLRSGYHQLRIREEDIPKTAFTTRYGLYEFTVMSFGLTNAPAFFMNLMNKVFMEYLDKFVVVFIDD
+ILIYSQSEEDHQHHLRLVLGKLREHQLYAKLSKCEFWLSEVKFLGHVISVKGVAVDPETVTAVTDWKQPKTVTQVRSFLG
+LAGYYRRFIENFSKIARPMTQLLKKEEKFVWSPQCEKAFQTLKEKLVSLPVLILPDTRKDFMVYCDASRQGLGCVLMQDG
+HVVAYASRQLRPHEGNYPTHDLELAAVVHALKIWRHYLIGNRCEIYTDHKSLKYIFTQSDLNLRQRRWLELIKDYDVGIH
+YHPGKANVVADALSRKSHCNTLNVRGIPPEFNQQMEALNLSIVGRGFLAALEAKPTLLDQIREAQKNDPDMHGLLKNMKQ
+GKAAGFTEDEHGTLWNGNRVCVPDNRELKQLILQEAHESPYSIHPGSTKMYLDLKEKYWWVSMKREIAEFVALCDVCQRV
+KAEHQRPAGLLQPLQVPEWKWDEIGMDFITGLPKTQGGYDSIWVVVDRLTKVARFIPVKTTYGGNKLAELYFARIVSLHG
+IPKKIVSDRGSQFTSHFWKKLQEELGTRLNFSTAYHPQTDGQTERLNQILEDMLRACVLDFGKTWDKSLPYAEFSYNNSW
+HFMKRCMGANAGHRYCGTKLGKAKFQTKGKLAPRFVGPFRIIARRGEVAYQLELPASLGNVHDVFHVSQLKKCLRVPSEQ
+ADSEHIEVREDLTYVERPVKILDTMERRTRNRVIRFCKVQWSNHAEEEATWEREDELKAAHPDLFASSSESRGRDSV*
+>ChrUn.fgenesh.mRNA.65|PACid:24093268
+MATWRRGTGREADGTGPRRRDVGGDGQRQRAARERRWNVMVTAARGGATARGGDSSAGREAAAAERGDGDGDGPRRRGAR
+GRLGAVWQRRGKG*
+>ChrUn.fgenesh.mRNA.80|PACid:24093269
+MRLEEEVEREDDRRQDSRPLDQTAAVLGTARSRVLLLRPPSSPLLWPDLGGREGGEESVAGCCAVLRAAGYCVVFHAARS
+PPGLHAPPRRRLLWPLPPPSMSLAGSKRRGEEVKGEGRGRDEGCYERTNKCNNYEELRNWDFYKSTLVQKKKARQVVVLF
+RMSYPSSELNFEAAIVIRASWLKGSRRYLITEGMSAFIVYFGEGEILENESGVDLSNFRQCTLHHPNPDTLTMPEVWRRG
+YEYVMLVQACQGRVPTESAAGQSSNREELGSSSHEEDEVVAPHRGGDVGPDIQNLSIQGDEVVNHHPTGEADEGEDIPAI
+VEEIERVDRHAIEDEENLAAEENDDEDEQQVEEVPMPASWNQEDPGYIAENSCHDSIWFYGDGQINLGAMFRDKTGLQDV
+VKSWSFKTQRQFRVVKSNKTEYTVVCETEGCTFRLHGHVPKYESYWIVSKLHEHSCLIRNTRESHRNLTAAYVANKYYKE
+IIEGDDLPVRHIIKLVEKACIHAFQCPRPVLCVDGTFLTGKYRGQILTAVGADANNQIIPVAFAFVESENYESWLWFLQH
+LKWGVVQKRTSICIIHDRNAGLLKAIKELQEDGDGAYYWPDMHSRWCMRHMGANFFKQFNSRRLMNMFKWLCKANQSTKF
+DELWKQLDEATRTHTRSKQTNSNPKDVHVPQALEPMDDLIPSNGKKRRSSKNIKCFTHWIECKPNDKWALLHDTNGARHG
+IMTTNLAEAYNAVLCKLRPLSLTAIVEGIMHRTTMWMRTRRAAALQQMSNAQTPFCKKMAEYLQEKANKARFHTVITTGN
+VRRRWEVTCRTKGGFGSSTGVITHEVTLGHESDNTCSCSCNKPKLLHKPCSHVLAACAKIKLDSTSYVSTFYLKDRVLNA
+WSAEILGWRSLQHLVETGGDNRIYVPDLDLLKAGKGRRQTRRLRNDMDASEAGGPVRRCEECLQYGHRTRDCKNNKEGTS
+SPVEPRQQRARRNRRGSQDIEEEWPYPLLSKEIDARHRAKKIYDGNSCSSLAVLIPRTAGLLSAAGLLTFVQMTQARMHY
+DAREPKQKLMGAHSKRRQNIDKSLLMALVDRWRPETHTFHLPCGEMTITLQDVSMLTGLPLAGQAIVLPDPPEDWRDDIV
+SRYACILSRYAIGDTDDDEDKIFFSEKETHGPTLKWLSQFEVRYMPDDVQEYQLTLYLEAYLLWLFGWVLFTGSHGNTVD
+ARLIPLARQIAEGNISPSAQFSWGSAILAATYRGFCDACIKTGQREAIFTGCPLLVMLWSYERFSFGRPYMSVVVAHKDD
+YTDAVDDRPTFGTRWCYGPPQWARIQVHNVYEYFTEAFESLRENEVRWTPYTNEEAILRAPHGVSILCYRDEAYWMTRKM
+LVYDIFVEGQNRQADNRYRRSMHSRMTPWIEAWSQALNDVVHETRAYDHNTYKQYMAWYTSQTRIRLLAPEDPDERGPPT
+IDQIYDMQLAPPAHLTTDIAGELVKEAKTLWEKLRDGMAGTNQEVMAAVDSLRRKGKRIMRLASCRHSSDIYNPATSRRT
+FEPMRERPSTSSRPSTSSRPSASARRSSDGRVGVRSTSFREPPTIPTIPEITEISERLGGFGSTQEGTRMVRPVPHMPPA
+RPQMIRQMAPDVPTSHWQGGFAPFAGPTQPVPLHAPTYGTNPWQGQSMDYGGTSFGGGVQGYMDLLQQGDWLFGQYSSHP
+NEIRYMQAPSTGSFRPELMSGFRPYTTSYGDMSSFGGGSSSVPNELRTSQTDDAPQVTQPTQPEVGEGNDNDPRRSNRER
+HEPNRLSLSGPRHAARQRKKTTKKRGGTSTTTTDHDDDDEYN*
+>ChrUn.fgenesh.mRNA.70|PACid:24093270
+MSSKVTFQIVHGEGNIRFGPDGVDLSDFVMTSKGIDRPAERTFQSIYSWLLRGFRIDQEVYTMSVSVVVSRAIEGYFWEL
+MPMDSTTAWRRYVEMAFERSWPLVIFVSVQEKDTNVSMRTEDVEGPSNAGDVVGPSMENEENQPREEQAMGMADEGERVG
+IIVDEMEREDSDNEQAEDDASSDEEGDVMATDWANEDFSGLVISEGDHVPWEYKENEVIEGARYAHKDEMKEAVKHWAVS
+LQREFRVVKHIENKFKYTISYAKAWRAKQKIIEMRYGTFEASYDNLPRLLATIAQRNNNTYYDLHTFTSVDDRTKSVLQR
+AFFSLGACINAFVHCRPVLCIDGTFMTGKYRGQILTAIGCDGNNQVLPMAFAFVESENTESWYWFLERVHIAVVRMRPNV
+CLIHDRHAGMLRAIDYLQNGWDEKGLPAKWPDVRSRWCMRHMGANFYKQFKNKHLMDLFKRLCAQNQEKKFNELWDKLDE
+LTTKQTDEQSRRPQVEGEEPPIPLGALHDDPPTMRRRSKVEARHRCPLSVTGTNFRPD*
+>ChrUn.fgenesh.mRNA.17|PACid:24093271
+MWDALETKFGVSNAGNELYVMEQFYDYKMVDDRSVVEQAHEIQILAKELENNSSKLPDKFVAGGIIAKLPHSWSDFVTSL
+KHKRRRRQRTTTTKRSREVLAPIWCRRRTLMHLITITRRSNQMPNPRQQLILRRKGKERQMTTALCAVGRGSSLLMGNGL
+LVVVHGVGTVTLEFTSRKIAQLKNM*
+>ChrUn.fgenesh.mRNA.68|PACid:24093272
+MGSCCCMGCNDDDGGSGGGDGGLDPKGFLLALMIALVLFMICHRPQPRRNNYVVYRCY*
+>ChrUn.fgenesh.mRNA.47|PACid:24093273
+MVNTRASGSGNNNNEGNPTLAQVLAQQTQLMNMMIQQMQNQLNQGNNNAPPAQNKLADFLRVRPPTFSSTTNPVEAGDWL
+HTIEMKLELLQCTDQEKVVFASHQLQGPASEWWDHFWMNRAEGQPITWADFTEAFKKTHIPTGVVSLKKREFRALKQKDQ
+TVAEYLHEFNRLARYAPEDVRTDEERQEKFLEGLKDELSVTLISHDYADFQQLVDKAIRLEDKKNRMDNRKRKMTVFQEA
+QGSSQRQRIEPLQIGESFSAGQGQSQQLNIGGEIKLETNENTEVNIEQANQPVPVQQDQSQENNNSGRKQQVCFNCYKPG
+HFARECPKPKHQQQQGQVNNIVVTGANAVPVASSRVVSSSVTAQPPVSKQQ*
+>ChrUn.fgenesh.mRNA.56|PACid:24093274
+MAPIATPSRSHIAGPTEHHKLQSSLAPPDCRRYAGPPIIATAIEVRSSPDPGLDTPDLDPEGQIRPFPILHHRRRPAFRV
+GTRGKPRSSPTHSPHSRCRRAPQSPDPTGDTLDLDLGRSDPVVPLAACPREGGGHWRRTWRRRNQAQAQCLPRSLKPGEE
+EREEGERKREGEKREGEEEEEEAAPPLPACGGVAGGSEAGEAQRGWS*
+>ChrUn.fgenesh.mRNA.72|PACid:24093275
+MTTASLVHPSASSSSSSTRAEVEVVGGVFVCSDSCSGDIVRNLIVDYGSGKITLTAACIQFCVPCTRPQPLLPPLCHSGP
+INTCFATADDRGRSRFRHYH*
+>ChrUn.fgenesh.mRNA.81|PACid:24093276
+MAALTGEWRGVGSGSGIRRKRGGRGGPYDGKRGGVVGAARRGG*
+>ChrUn.fgenesh.mRNA.62|PACid:24093277
+MGTYLVIMLISNMAPLYSGSYFYVLAQEATIAAKGNFNHYHVQMQEMSDWILLFKRYCIYVNERYVISPAFSRRVGFVLL
+DIYGVISMYGENDSLEQYLLHVAPNQKMMLYKTFMMSNSILRRNVVHDINSAKVSYFATHQSTGPNENYYGLRATMDVYG
+HELKPGQLSGGALWVSHFGDDGKLSSYNAVSAGWHIDPQRYGDSRPHFYTSWTRDGYATTGCYNMDCPGFERANGAAVGP
+GASIDPVSDDKSLQSITVEVPLDRTSGDWWVYYGFNSVPTGVGSYPKSLFTNMAEKANAIAFGGYVVTRRALPTPPMGSG
+SHPHTNKSRAASLTNLGVINQDGNTNPINADLPTYMGNEQCYSITPVAQAECFYGGPGGCMP*
+>ChrUn.fgenesh.mRNA.45|PACid:24093278
+MAWPTGSGDDRRSERETATNWGRGRLFLRVLLLLVLLVGLTFHGARFDVAATAAKGSDLLLLLLYSLPTLPLPRTHNWKR
+GREGQKNWTIEIESPPCPSPKMDRQWMYADQRSKEFIEGVHYFLRVAEANRQRGFICCPCNKCKNQKEYSASRTIHFHLF
+ESGFMPSYNCWTSHGEQGVEMEEDEVEDDNIPDFAQYVGFEGNQTGEEEIAADGNDVADDLGQMLQDAREVCKSEKEAHK
+LDKMLEDHRTSLYPGCEQGHKKLDTTLELLQWKAKNGVSDKAFGNLLKLVKNILPGGNKLPETTYEAKKIVCPLGLEVHK
+IHACPNDCILYRGEEYENLEACPVCKALRYKIRRDDPGEVDGQLTKKRIPAKVMWYFPIIARLRRLFRNKGNARMLRWHA
+EERQQDGMLRHPADGSQWRNIDRKFKEFGKDALSRPEFLSKIPNAYMCVKPSSRNQPRHTMTI*
diff --git a/test/data/assembly.2.fa b/test/data/assembly.2.fa
new file mode 100644
index 0000000..c2d0d49
--- /dev/null
+++ b/test/data/assembly.2.fa
@@ -0,0 +1,26 @@
+>scaf_Os03g60760.1
+ATGGAGGTGGAGATGGGGCACGGAGAGGAGGTGGCGGCGGCGATGGAGGAGGAGGAGCTGCAGGGGTGGGAGACGCCGAGGAGGGAGGAGTGCCGCATCCCGGTGGTGCCGCCGCAGTGCCCGGCGCCGCCGAGGAAGAGGCCGGTGGCGCTGCCGGAGCTGGGGAAGGAGCGGCGGGAGCCGCCCAAGGGCGGGTACTTCCAGCCGCCGGACCTCGAGTCGCTCTTCGTGCTCGCGCCGCCGCGGAGGC
+>scaf_Os03g60760.2
+ATCGAGGTGGAGATGCACGGAGAGGAGGTGGCGGCGGCGATGGAGGAGGAGGAGCTGCAGGGGTGGGAGACGCCGAGGAGGGAGGAGTGCCGCATCCCGGTGGTGCCGCCGCAGTGCCCGGCGCCGCCGAGGAAGAGGCCGGTGGCGCTGCGGGAAGGAGCGGCGGGAGCCGCCCAAGGGCGGGTACTTCCAGCCCGCGCGGCCGGACCTCGAGTCGCTCTTCGTGCTCGCGCCGCGGTGGC
+>scaf_Os10g39590.1
+ATGAGCATGATAACGGTGAAGGTGAAGACGCTGACGGGGAAGGAGGTGGAGGTGAGCATCGAGGCGACGGAGACGGTGGCGAGGATCAAGGAGCAGGTGGAGGCGGCGGAGGGGATCCCGCCGCCGCAGCAGACGCTGATCTACGGCGGCAGGCAGCTCGCCGACGACATGACCGCCGAGATGTGCGACCTCAGGCATGGCT
+>scaf_Os10g39590.2
+CATCGAGGCGACGGAGACGGTGGCGAGGATCAAGGAGCAGGTGGAGGCGGCGGAGGGGATCCCGCCGCCGCAGCAGACGCTGATCTACGGCGGCAGGCAGCTCGCCGACGACATGACCGCCGAGATGTGCGACCTCAGGCATGGCTCCGAGCTGCACCTCGTTCTTGCTCTCAGGGGTGGACTACTTTGA
+>scaf_Os09g38670.1
+CCGCAAGGAATTGCAGTCCTGCAGATAAGAGATGCCATTTGCTAGTTGCCTCCTTGCATCTTCGAGCTCTACCATGATGGCAAGGCCCGGCGCTGTGAAGAATATTGAAAGCTGGGACGAGTTTACAAAGCATTTTGTGAAATCAGAGGACAAGCTGGTGGTGCTGGTATTCATGGCGCCGTGGTCGGAGCCGTGGAAGCTGATGAGGCCGGCGGTGGAGAAGATGGCGTCGGGGCTGAAGAGCGAGGAGGCCGAGGTGTGCACGATCAGCGTCGACCGGTTCAACACGCTGGGGCGGCTGCTGCGGGTGGAGGCGCTGCCGACGTTCGTGCTGGTGAAGAGGCACCGGGCGGTGGCTCGCGTCGTCGGCGTCAACCGGGACGATCTTCACAGCAGCATCAACAAGCACCTCGCACCACCCTCTTCTTCTCCACAACCCATTAATATTTCTTAGTGCTGTTGATGATTCTTGGTTGATTGCATGATATAATC [...]
+>scaf_Os12g21920.1
+ATGCCGACGCCCTCCACCGCCACGCGCCGCCCATCGACCGTCACACGCTTCGCTCTCTGCCTGTCGTCGCCGCCGTCGACGCCGCTGCCGACACCCGTCGCTGCCGCCCACGCCGATGCCGACGCTGCCGCTGCTGTTATCGGGAGGCCGAAAGGGGAGGGGAGAGAATGGGAGGAGAGGAGTCGTTCCCAACGAACACCATCACCACCCAACTCAGAGTCGCCGCCAAAAGCCAACTGGGGTATTGCCAGCAACAACTGCTACTCAAGAATGATCATTGCGTCGGCTGCCTTAACAAGCGATCGCCGAATGAGTAATGCCTGCGACCGCATGCTCGCGGCGGTCATACCCTCGCCCACGGCGCAACCACATGCTGGCCATAAAGGACGGGATGTTTGCGTCCTTGGTTACGCCTCACCCTGCCCTTGCCCACACCTCGCCGGCGCCACGGCCATGAATGCCACATAG
+>scaf_Os01g36294.1
+GTTGCACTGCAACTCTGCAAGTAGCCATGGAACAAGCAGCTGGACTAGTGTACCAACTCTTCCAACACGAAATGTTTCCCTGGACCTTCTCTGTCCTAGCCTTGTTCCCTTTCCTTCTCCTAGTGCTGCACTACTTGGCAACAAATCATAGAACACCAACAACCTGCAAGGAAACGAAGAATCATCATCCTCCCCCACCTTCACCTCCGAGGCTGCCCATCATAGGGCACCTGCACCTCATCGGTGGCCTCCTGCACGTCTCTCTTCGTGAGCTCGCTCATCGGTACGGCCCCGACCTCATGCTCCTCCACCTCGGCCAAGTCCCGAACCTCATTGTCTCCTCCCCGCGCGCCGCAGAGGCTGTCTTGCGCACGCACGACCTTGTCTTCGCGTCACGGCCATACTCCTTGATCGCCGACATACTCCTTTACGGCCCGTCTGATGTCGGGCTTTCGCCTTACGGCGAGTAGTGGCGGAGGAGGATCATCACAA [...]
+>scaf_Os12g22750.1
+ATGTCTGGAGTTCCCCCCGCCGCTGCTGGAGGAGATGGCACAGGTGGTGCGCCGCCAGGAGCTGGAGCCGGCGGTGGTGCGCCAGGAGCCGGTGCCGCGAACAACAACATCAACGGAGGCAATTCTGCCTCACAATCCAGTGGAGGGCCATTCTCGAGGTGTATCCTTCTTCTGTTCCCTTTGTTAGCGCTATCGCTTTACTGTCATGTGCGCTATGTTCCTGTTCCTGACCTTCATGATGCCTCAAGCATGTTATTGAGTTACTGTAATGTTTCTGTTCCTGACATTCATGATGCGCATAGAAAGGAAAATGGCGCCTTCAACACGCGGAAGCGGCGAGCCTTCTCGGCGGCGTCCTTGTACGTGCGCCCGTGCTCCGGCATGCTTCGGCCGCCGTTGTCGTCGGAGCTTGGAGGCGGCGGGAGTGAGGAAGAAGAGGGAGAGCCGAGAGGGGAGAGGGAATGA
+>scaf_Os02g55190.1
+TGGGCCACAAAATTTCTCCAAATTTTGAATTCCAGAGGCGACCAGTCCGGCTCGAAATCCCCGCCTTATAAATTACGCACGCCGACACGATACGCCCCCATCGAATTCAGGCGCAAAAACCTCCAAAACCTTTGCAATATTCCTCGTAAATCGTAATTCCCCCTCGCGATCGAGCTCGCGACGCCCATGGCGATGGAGAGAAACGCGGCGCCGCGCGTCTCGGCCTCGTCGTCGGCGGCGGCGTCGCCCTCCACCGTCGGTGCGCTCCTCTCGAAGGCCTCGGTGGCTGCCGCTCCCGCACGCGAGATCCCCTCGCCGCGGTCGCTGCTGTCGCGCATCCTCCATAGGAGTGGCGGCGGCGGCGGCTTCGGGTGTCGCCTTCGCCTCCCCCGATACTGCTCCAGCGGCGCGGCCGCCAAGGAGGACGCCGCCGCCGAGTACGTGGAGGTTGAGGTTGAGGCGGAGGCTGCGGCGCCGAAGGTGGTGGGCCGC [...]
+>scaf_Os03g56500.1
+ATCAAGCCGTCCACTTCCCCCACGACCACCAGCGTCCGAGCGGGTCGAGGAGGCCATGTCCGGCGAAGCAGAGTCCCGCGAGGCGTCGCGGCAGCGGCGGCGGCGGGAGCGGGCTGCGGCGGTCGAGCGATTCGTCGGGGTGCCGCTCGCCGACGTGGTCAGGGAGAACTCGCTCGTGCACCTCCCGCCGGCGGCGGCGGCGCGCCTCCGCGTCGTGCACCCGTCGTGGGCGAGCCACATGTCGTCCCCGCTCTTCGCCGTCGCGCACGCGGCCGCCCCGAGGCGGGTCTCCGGGGTGTTCGTCCCATCAGCGGGGTTCCTCCCCTTCGACGGCGACGACGACGCCGTGCCGTCCCCGTCGCTCTCGTTCGTGCCGGCCTCGTCGGAGCTCGTCGTGCTGTCGTCGTCGCGCGGGGTCGCCTGCTGCTTCTCCCCCGCCGACGACGCGTACGCCGTGTGCAACCCGGCTACGGCGTCGTGGACGGCCGTCCC [...]
+>scaf_Os03g56500.2
+ATCAAGCCGTCCACTTCCCCCACGACCACCAGCGTCCGAGCGGGTCGAGGAGGCCATGTCCGGCGAAGCAGAGTCCCGCGAGGCGTCGCGGCAGCGGCGGCGGCGGGAGCGGGCTGCGGCGGTCGAGCGATTCGTCGGGGTGCCGCTCGCCGACGTGGTCAGGGAGAACTCGCTCGTGCACCTCCCGCCGGCGGCGGCGGCGCGCCTCCGCGTCGTGCACCCGTCGTGGGCGAGCCACATGTCGTCCCCGCTCTTCGCCGTCGCGCACGCGGCCGCCCCGAGGCGGGTCTCCGGGGTGTTCGTCCCATCAGCGGGGTTCCTCCCCTTCGACGGCGACGACGACGCCGTGCCGTCCCCGTCGCTCTCGTTCGTGCCGGCCTCGTCGGAGCTCGTCGTGCTGTCGTCGTCGCGCGGGGTCGCCTGCTGCTTCTCCCCCGCCGACGACGCGTACGCCGTGTGCAACCCGGCTACGGCGTCGTGGACGGCCGTCCC [...]
+>scaf_Os03g56724.1
+ATGAGCTGCGAGAAGTTGAGCCGTCAGTCTCTGCATTTGGTGTTGAACGAGGGTCGCGGCTTGTTCTCGCTAAGGCACATGGACGTATCAAAGCTCTTCTACCCATCAACGGCAGAAGCACTGGAAGCAGAGGCTAAAGCTAAGAAGAAGAAGAATGGCACCAACAAAATTGGGAGCATCGGCCGTTTGCCAACACCGAGCATACACTACCAGCCATATACGTGGTCTGCGTCTAATCCCTACAGTTCACTGTGTGCACTTGCTCTCTTTGGTGAGAGGAGCAAGAACAAGATCCTCTGCACGGACATGGCAGGCCACACCAGCATCTACAACCCCGAGTTGCGCTCATTCATGAGAATGCCTGATCTGAATTCGCCCAAGAGATACAATAGTTGTGTGGCTGTCTCCATCCCAGGTGCTTCTGCCCATGCCATGTCCAACTTTGACATCGACACAGACCACAGCCTGTACATCATGGATATCGATCCTACC [...]
+>scaf_Os01g11360.1
+ATGGCGGCCAGAGGCAGCCGGTCCTGCGCCTGGCCGTGTGGGTTGGGGATGGCTGGAGGTGGTCAGGAGGGCAGCGGGAACCGGCAAGGAGTCGGCGATGGAGTCCCTCCGGACGGCGGTAGGGACAGCGAAGCACGGCGGAAGATGGTGACGGCGCTCGGCGGCTACGGCAGCCCTAGGGGCTGCGGCGTCCCAAGACAGTGGCAGTCTGAGCACTGTGAATCCGATAAAGTGGAAGCTGATCCCATCGAGCAAATACAGAGGGGATTTTCGATCTACAGAGCCAATACAGAGGGGAAAGGAGTGGTGGATGGGGGTTTTACCTGCTTTGCTATGGGCATCGGCAGGGTGGTCTCAGCAGGGACGGCGGCGGCCTCAGCAGAGAGTAGACTAAGGAGGCTGTTGGAGATGCTCTTAGTAGTAGTATCGAACATCGGGACATACCAAACGAGAGGGATTTTGGTCAAGGATTTACTAAAGTAG
diff --git a/test/data/assembly.fasta b/test/data/assembly.fasta
new file mode 100644
index 0000000..32302e4
--- /dev/null
+++ b/test/data/assembly.fasta
@@ -0,0 +1,8 @@
+>scaffold1
+TTTCAGTTGATGAAGAAAAAACTAGAGTGTGTGGATTGCATGAAATGAGCTGGGGCTTGTTGAAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGATAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGAATTTTGATTCCAAACACCATCTCTTAGGAATTCAGTTGGTTTTCTGGTGATAAACACTTCAATTTGACTATGGACTCTGTGTATTGTAAAGAACATGATGACAGAATTGCTTCGAATCCGGTGGGTTTACAGTCATCCGGGTCGGGTCCTTGGTGGGGTGGGCTCGTGACTCAATCGGGTTTTGAAGAATCCATGGGGAGATTGAAGAATTCATCAATGGAACCACTCGTGCGAATAGCCCCTAAACTGTCGATTTCTGCTGCAGATCAATCAATGGCAAAAGGGGATACGACTTCTTTTGATATCTTTCATGGTGACTCCAAGAGTTCGTCAAATGGTCAA [...]
+>scaffold2
+AAAAGGCATATATGACAAATCCTCCTTTCAAGTCGAACAACATTAGAGTTTTGTACAGATTTAAGACCAAAGCATTACTCGTTTCTATTCTCTCTTTAAATGTGAAATTTACCATCATAGTATTACATAATCTTATACGCGATATCATTTTAAAAAGATTATTGTTTTCATCGTCTTAACAGATTGTATGCTGGTAACTCTTTCACACATGTGACATCTTCGATCGCAAGCTCCCTCTCTAGCTGCATTCTTGTGGATTTTATAACCTCATTGAATTCCATATATGAAGCACGCCTCGCAAGCCAATGAGCATCCATGAGTTTGAAAGCAACACAATATAGCTCATCAAAAGCCGATTCATCATTACTAAGAAATTGCAAGAACCGCACCCCTGACGAAGACGTTGGTAATCCTGACTGAATATCCAACATCTGCACCAACATGAAAGAAATATTGATGCCAGCTACAGCAAAAGGATATTCCCATTCAGCT [...]
+>scaffold3
+AAAAGGCATATATGACAAATCCTCCTTTCAAGTCGAACAACATTAGAGTTTTGTACAGATTTAAGACCAAAGCATTACTCGTTTCTATTCTCTCTTTAAATGTGAAATTTACCATCATAGTATTACATAATCTTATACGCGATATCATTTTAAAAAGATTATTGTTTTCATCGTCTTAACAGATTGTATGCTGGTAACTCTTTCACACATGTGACATCTTCGATCGCAAGCTCCCTCTCTAGCTGCATTCTTGTGGATTTTATAACCTCATTGAATTCCATATATGAAGCACGCCTCGCAAGCCAATGAGCATCCATGAGTTTGAAAGCAACACAATATAGCTCATCAAAAGCCGATTCATCATTACTAAGAAATTGCAAGAACCGCACCCCTGACGAAGACGTTGGTAATCCTGACTGAATATCCAACATCTGCACCAACATGAAAGAAATATTGATGCCAGCTACAGCAAAAGGATATTCCCATTCAGCT [...]
+>scaffold5
+CATCGATTTCATTTAGTGGCTAACCAGACCAGTCCTTCCGGTTCGATACGTGTGGAGATGAGAAGAACCCAACAGGAGTTCTGGAGGAAATTTGCCTGATTAAACAGACTCTACAGTTGATTTGGAGAGGTTGAAGATGGATGGAATTGAAGAACATGGAGATTGCACTTCTAGGTGCTGCTAGACAAGCTCAGAGAAAATCAAATGCTGATATATATTGAGTCTCTACTGGAAGTCTGGAAGAGTATCATCTAAGGGTATCGGCCCTCGAAAGAAAGACTTATCCTAATCCATTGCGTTCCAATCCTGCATATTCGGTTGTGAAGTAAGTTACATTTGAGTGACTGCATCTACTTTTCTTCAAGAACTACTTCTAATTTTTTTTATTAAGTGAACTAATCAGATCAGAAACTGTATCCAAACTTAAAAGGTTAAAACTTGATTATTACATTTTAAAACAACTTCAAGATTGAAGAGAACAATTTGGTGAGT [...]
diff --git a/test/data/bridging_reads.l.fastq b/test/data/bridging_reads.l.fastq
new file mode 100644
index 0000000..2800841
--- /dev/null
+++ b/test/data/bridging_reads.l.fastq
@@ -0,0 +1,40 @@
+ at read1/1
+AAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGGGG
++
+gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at read2/1
+CACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCA
++
+gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at read3/1
+CACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCA
++
+gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at read4/1
+CTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGCCATGATCCGCACCAAGGG
++
+gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at read5/1
+ACGACGCGCACCACATCAACAAGCACAACTTCCGTGTCCCCTTCGTCTGTGGCTGCCGTGACCTTGGTGAGGCGCTCCGGAGGGTCCGTGAGGGCGCCGC
++
+gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at FCC2HFRACXX:7:1101:2015:1981#TGACCAAT/1
+GTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCG
++
+_[_eeeeegebe`efddgaeehhhhfgfQ^eb`adfgfffhZ_db\adb`aaabaWQT]`b_b]Y_b`cbbb`]`][]^]aaX^bbdbbY^[_a_[[O][
+ at FCC2HFRACXX:7:1101:7968:3054#TGACCAAT/1
+GGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTC
++
+bbbeeeeef`gcghcegdghfhfdfdfdghhfgfhhhhhgG_Z`__`c[_RZa^baX^aaZ_a
+ at FCC2HFRACXX:7:1101:18523:3712#TGACCAAT/1
+CTCATGTCTCTCCATCAGTAATAACGGGACTGAATCAATGGTAAGAAACAAAGCTATGGTACTATGCAGAACCTCTTTATTTTT
++
+__^cc`\cecabcdea_d[`b^[abaUeW^a_e[S^afS^^Y^acbfedeb]^cacefh_V\W\efbddYcd`deV\aRV^ccc
+ at FCC2HFRACXX:7:1101:6215:4551#TGACCAAT/1
+TATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGC
++
+__[cccceggbeeddghhdhhhhhdhhfbfhhhhhhhhhhhhhghfefg_fdcgbdaabaaa_[]LEO^^^``[X_^^`ab`]]_bbac_X]XEYR_b]_
+ at FCC2HFRACXX:7:1101:9701:4567#TGACCAAT/1
+GTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTA
++
+b_beeeeeggggfiihhihihifhiiiiiiihfhefhiihiiiiigeedcdcca^cacccacccccc_acbbbS]][_[ab_`X`]`bcc[[X_a^b
diff --git a/test/data/bridging_reads.r.fastq b/test/data/bridging_reads.r.fastq
new file mode 100644
index 0000000..984453a
--- /dev/null
+++ b/test/data/bridging_reads.r.fastq
@@ -0,0 +1,40 @@
+ at read1/2
+AGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGC
++
+gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at read2/2
+GGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGT
++
+ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at read3/2
+CGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTAT
++
+gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at read4/2
+ACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAG
++
+ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at read5/2
+GGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGC
++
+gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
+ at FCC2HFRACXX:7:1101:2015:1981#TGACCAAT/2
+CCCGGCCGCGAACTGCACAACAGGGAGGCGGCCCAGCTGCTTGGTCTGCATCACCAAATCATACGGCGCGGCGATGCGCT
++
+___cccecec`eghfRc`efgfhaeefgiicccc^aX_]Y`bbcYbW`_XX]bbbbccccb`bbaa]_TTXTZTXT^[[_
+ at FCC2HFRACXX:7:1101:7968:3054#TGACCAAT/2
+TCGCTGTAGTGGGTGACAGCCTGAACGATGGCACGCGCGCGGCGAGCAGGGTCGCCACTCTTGAAGATTCCCGAGCCGACGAAG
++
+___ea`e`cgegf^b`bbdgfffhdhhfhgheihfhihhiS\[RKWTL[`YX^_acccccccbcccbbc_abcR]]aXT[_]EQ
+ at FCC2HFRACXX:7:1101:18523:3712#TGACCAAT/2
+CATAAGCAGGGCTGGCAGAGCGACAGACATACAAACCGTTCAACATTTGATTGAGTACATGATAAACCAGGGGAGCCTAGTCTAACTTAATACAGTAGCT
++
+^_accacagggabbfa]_f`Z_cgfYcZ_[aeggiihaeaeggghgdg_g__gghVb^``d`bdcaced^`__RW^^bbbcbcc]_]]b[]c]_`SY`YY
+ at FCC2HFRACXX:7:1101:6215:4551#TGACCAAT/2
+GTTGATGCCGACCATGGCCTCCCCGAGTCCGGCGCTGACGTCGGCGAGGATGG
++
+_a_e`ccaeeegeafffhh[ffghd_cY^XZefff_d[`gGXKXW]_aaTX_^
+ at FCC2HFRACXX:7:1101:9701:4567#TGACCAAT/2
+GGCAGATGGATGGATGGGTGATACAAATATATGAGAGAAGATGACGATGGTGGAGCGGATAGGGTTGTTCACTCGGATCTGGCGGCGTATCGC
++
+a_beeceegggggfghih`ffbgghhhffbffbfgfgfhdfdffghfghigegdgfhi_addeeZabbbbcbcbcaZ^ac[bbacXaTT^^a_
diff --git a/test/data/sorghum_100.fa b/test/data/sorghum_100.fa
new file mode 100644
index 0000000..40d02b3
--- /dev/null
+++ b/test/data/sorghum_100.fa
@@ -0,0 +1,200 @@
+>Sb09g017110.1
+AGCGTGGGAAGGGAGATCACTGGAAGGGAGAAAGAAATGGAGCATGAAGAAGAGCTGCCTTCATCTTCTTCCTCCTTGGGTTACCTGATGCAGTGTAGGATCTGCCACGAGGAAGAGAACGAAGGGCGCGCGATCATGGAGTCTCCTTGTGGATGCTCCGGCTCTCTCAAGTATGCTCACAGGGGATGTGTGCAGAGATGGTGTGATGAGAAGGGGAGCACCCTCTGTGAGATTTGCCTTCAGAATTTCGAGCCAGGCTACACAATGCCTCCAAAGAAAACTCCGGCGATTGAAACTGCGGTCACTATCAGTGAACATGAGGACATGCAACCTTTGGAATCTCCGGAGGGCTCCATTGACGGTGCAGATTACACCAGGTGCTCCTACGCCGCAGATCAATGCGCCACATGGTGCCGGTCGCTGGCGATCACGTTCACCATTATGCTGTTGGCATGGCATCTGGTTGCAGTAGTGACGGTTGAAGCAGCAGAT [...]
+>Sb02g028080.1;
+ATGGGGACCCCTCTCCTCTTCCCCCTTCTCGTCACCCTCCAGCTGTTCACCGCCGCCTCCCCCGCGGTCGCGTCGTCGCACATCTCCGTCGTCATCTCGCAGTCGGGCCTCGACTTCGCCAAGGACCTGCTCGTGTCCCGTGCCGTCGCGACCCTCACGCCCCTGAACGTGCCGGACATCCAGAAGACCATGAGCACCGTCGTGGGCACCGTCCGCGTGGCCGCATCCGGGATTGTGCTCAACGGCCTCGCCGTCACCAACTCCACCGTCGCTATCGGGGACACGGGTGTTGTCGTGGCCGCCTCGTTGGCCAGAGCGAACCTCACCATGGAGTGGAACTACTCGTACAGCGCCTGGATTGTGACCATATCCGACAGCGGGAATGCTTCGATCCAGGTTGAAGGAATGGAGGTTGGTGTTTCCATGGTCATGAAGAATCAGAATGGATCTATCAAGCTGTCTGTTACAGAATGTAGCTGTAATATGGAGGAC [...]
+>Sb03g034100.1
+CTCACTCTCACACTACTCCTCCCCTCTCCGGCTCTCTGCCTCTGACGTCTGACCTCTCCTCCCCAACGGTGAGGCCGGCGCATTGCCGTTTCGAGCGCGGACACCGAGGGCTAGAACTAGAAGTGGCGGCGGTGCCAGGGCTCGGCGCTCGGTCGGCAATGGCGGGGCGGCTTATGCTGGCGGCGCTCCCTATTCTCCTCTTCTTATTGCTCGTCGGGCAATGCCACGGCGGCAAGATTGGCGTCTGCTACGGCCGCAACGCCGACGACCTGCCGGCGCCGGACAAGGTGGCGCAGCTAATCCAGCAGCAATCCATCAAGTACGTGCGCATCTACGACACCAACATCGACGTCATCAAGGCCTTCGCCAACACCGGCGTCGAGCTCATGGTCGGCGTCCCCAACTCCGACCTCCTCGCCTTCGCGCAGTACCAGTCCAACGTCGACACATGGCTCAAGAACAGCATTCTCCCCTACTACCCGGCCACCATGA [...]
+>Sb01g013980.1
+CTTGTACCCGCTCTCGCGCAACCACAGCAGCGCCCGCCTCACCCAGCCCTGCACACTGCCGACCTAGAGCGCGGGGGAGCTCAGGAACGCATTGGATTTGTGGAGATTTGCGGGAGAAGAAGCGAGGGGGAGAGAGCTAAACTAGGGTTCAGGGAATTCGGGGCCGAGAGGAGCGATGAGCATTGTGCCCAAGGAGACGATTGAGGTCATCGCTCAGAGCGTCGGCATCCCCAGCCTCGGCGCCGATGTCGCCGTCGCGCTCGCCCCTGACGTCGAATACCGCCTCCGCGAGATCATGCAGGAATCCATTAAATGTATGCGGCATGCAAAGCGGACTGTTCTGACGGCGGATGATGTTGACAGTGCCCTGGGCCTCAGGAATGTTGAGCCTGTGTATGGATTTGCTTCTGGTGATCCATTGCGTTTTAAGAGAGCTGTTGGGCATAAGGATCTCTTCTATCTTGATGATCGGGAGGTAGACTTCAAAGAGAT [...]
+>Sb01g048760.1
+CTCTCGCGCGTCGTCCTCGCGTGTCGCGGCACACGCTCGCCTAACTTCCCTTCCTCTTCCTGTGAGACTGTGACCTCCTCCACTCCTCACTCCCTCCCTGCTCGTCTTCTCTTCTCGGCCGTCGCCTGACCCGCCGCGTCGAGACATGTCCAACTCCAAGAAAATCGTGGTGAAGCTGGACTTGCATGACAACAAGGACAAGCAGAAGGCGCTCAAGGCCGTCTCCGTGCTCGTCGGCATCGACGCCATATCGGTGGACATGGCGGCGCACAAGATGACGGTGATCGGGACGGTGGACCCGGTGCAGGTGGTGAGCAAGCTGCGCAGCAAGTCGTGGGCGGCGCACCTCGACTCCATCGGCCCGGCCAAGGAGCCCGAGAAGAAGGAGGAGAAGAAGGAGGAGAAGAAAGAGGAGAAGAAGGACGGCGACGGGAAGAAGGAGGAAGGGGACGGCAAGAAGGACGGCGGCGACGGGAAGAAGGAGGAAGGCGG [...]
+>Sb01g008410.1
+ATGAAATGGTCCACATTGCTCAGTAAGGTCGTCTTCGCCGCCGGCCAGCAGCAGGAGCAGCAGCCGCCGCCGCCCCCGCCGCCGCCGCCGGGGTCGCCGTTACACCGCCAGCAGGCGGTCCAGGACCTCGCCACCCCGAGGCTCAGCTCCGCCTCCACCGGCGGGGACGAGGGCGGCTTCGACGCGGCGGCCGGGAGCTCGCCCTCTGCCGCCGCGTCCCCTGCCAGGGGCAAAAATGAATTGGAGTCAGACTTTAGGAGATTATGGGAAGAATTTCGCTCTTCCAGCTCTGAAAAGGAGAAAGAAAGGGCCTTAAATTTGGCTGTAGATGTCTTCTGTAGGCTAGTGAAGCAATATTCTAGTGTAGCTCAATTAGTTACAAAGTTAGTAGAAGGACATGTTTTTTCTTTTGTTATTGGAAGAGCTTTTGTTACTGATTTGGAGAAACTAAGAATCCATAGCAAAGGAAGATCACTGCGTGTGGCTGATGTT [...]
+>Sb02g038680.1
+TGAGGGACTCGGATCAGCAGCAGTCGATCAGGAGGCCGGCCGGCCATGGAGGAGGGAGGCGAGCACACGAGTCTTCTGGTCAAGGATGATGCATCATGTCATGGCGAGGAAACACAAAGTATATTGGAAGCAAATCTAGGGCCACAGCTGAAAAGTAAATGCTCTGACTGGAGAGCACCGGCACTCATCCTGGGATTGGAATGCTTGGAGAGCATGGCTTTTAATGGCATTGCCACAAACCTAGTCGTGTATCTCCGTTCGGTCCTCCATGGTGGTATTGCTTCCAGTGCATCAACAGTATCTCTTTGGTACGGGACAAGCTTCTTTGTGCCAATGCTTGGAGCCGCCATAGCAGATACTTGCTTGGGAAATTATAAGACCATCCTGATCTCCCTTATCATGTACCTAATTGGAATGGTACTGATTACAGTTGCAACATTTCTGCCTTCTACTTCAATCTTATGCGACGCCAGCTCATGCTTGTCATCAAAT [...]
+>Sb01g008960.1
+ATGGCCACCATCAAAGCTTGCTCTTCCAGACTTGTTCCAGTGGCTCTCCTGCTGTGTGGGCTCATAGTGATGGGCTCCATTTCGGGATTGGAAGCAAAGGACAAGGACGGGAAGGTGTGCATCGAGACCTGCCAGGAAGCGTACTACATGACGTGCCCGTCCACAGGCAACGCGAAGCTCAACCCGGCGTGCAACTGCTGCCTGGCCTCCTTGAAGGAGGACGGCTGCACCATCTACTTGAAGGACGGGACAGTGGAGAAATGCCCAAGAACCTGA
+>Sb09g028810.1
+CCATTTCAACGGGACGACGGTTCCATTTCGCATCGATCGTTGTCCGCTGCTCTTCTTCCTCCTTCAGGCCAGCGGGCAAGAAGAAGAAGAAAAATCAAAGCTTGCGGGCGAGAGGCGGTGCCCGGCCGGCAAGCGAGCGAAGCCATGGGTGGCGGCGGCAGCAACAGAGGCGGCGCCGGCGAGGAGAGCGGCAGCGACCACGACGGCGGGCTGCGGAAGCCGCTGCTCCACACGGGCAGCTGGTACCGGATGAGCTCGCGGCAGTCCAGCGTCGCCCCCGGGGCCTCCTCCATGGCCGTCCTGCGGGAGTCCCACGTCTCCGCCTTCCTCTGCACACTCATCGTCGCGCTCGGCCCCATTCAGTTCGGCTTCACCAGCGGCTTCTCCTCCCCGACCCAGGACACCATGGTCCGGGACCTCAACCTCTCCATCTCCGAGTTCTCGGCGTTCGGCTCGCTGTCCAACGTCGGCGCCATGGTCGGGGCGATCGCC [...]
+>Sb01g047000.1
+ATGGCTTCCTCGGGCACCAGCGGCGGCGGCGGCTCTCCGGGGTCGCCGTGTGGCGCCTGCAAGTTCCTGCGGCGCAAGTGCGCGGCGGAGTGCGTGTTCGCTCCCCACTTCTGCGCCGAGGACGGGGCGGCGCAGTTCGCGGCCATCCACAAGGTGTTCGGCGCCAGCAACGCGGCCAAGCTGCTGCAGCAGGTGCCCCCCGCCGACCGGAGCGAGGCGGCGGCCACCGTCACCTACGAGGCGCAGGCCAGGCTGCGCGACCCCATCTACGGCTGCGTCGCCCACATCTTCGCGCTCCAGCAGCAGGTTGCGAGCTTGCAGATGCAGGTGCTGCAGGCGAAGGCGCAGGTGGCGCAGACGATGGCGGCGGCCGGGCCACAGGGGACGAACCCTCTTCTGCAGCGGTGGCCGCTGGAGCCCGAATCGCTGTCGACGCAGAGCTCCGGGTGCTACAGCGACATGTACTGCGGATTCGGCGACCAGGAGGAAGGC [...]
+>Sb10g029050.1
+ATGGAGGAGTACCAGCAAGTGCAGCAGCAGCATCAGGGTGGTGGCCGGGGGAGCAACAAGATCCGGGACATCGTGCGGCTGCAGCAGCTGCTGAAGAAGTGGAAGAAGCTGGCGACGGTGACGCCGTCGGCGGCGTCGGGCGGCAAGGGCGGCGGGAGGAGCAGCGTGCCGAGGGGCTCCTTCGCGGTGTACGTGGGCGAGGAGATGCGGCGGTTCGTGATCCCCACCGAGTACCTGGGCCACTGGGCATTCGCGGAGCTGCTCCGGGAGGCCGAGGAGGAGTTCGGGTTCCGGCACGAGGGCGCGCTCCGGATCCCCTGCGACGTCGAGTCCTTCGAGGCCATCCTCCGCCTCGTGCAGCAGGGCGGCGGCAGGAAGAAGGAGCCCACTGCCGCCATGTGCGACTGCTCCTCCGAGACCGAGATCCTCTGCAGATGA
+>Sb04g027760.1
+AGATCCTCTCCCTCCATCCACCGCACCGCATTACCCTGAGATCCACCCCGCGAGCTCATTTCAGATCCGCCCATGCGCCTCCCGGTCCTTTTCGCCCTCCAGCTGGTCGCCGTGGCGGCGGCAGCATCGGTGGCCGAGGCCGCGGCGACGCTCTCTTCGAGGATGGTGCACCGTCTGTCCGACGAGGCCCGGCTGGAGGCGGGCCCGCGTGCGGGGTGGTGGCCGCAGCGCGGAAGTGGGGAGTACTACCGCGCGCTGGTGAGGAGCGATCTCCAGCGGCAGAAGCGGCGGCTCGCGGGCAAGTACCAGCTTCTCTCGCTCTCAAAGGGCGGCAGCACCTTCTCCCCCGGCAACGACTTAGGCTGGTTATATTACGCTTGGGTGGATGTTGGGACGCCTACTACCTCCTTTTTGGTTGCATTGGATACTGGAAGTGACCTGTTCTGGGTACCCTGTGACTGTATCGAGTGTGCCCCTTTGGCTGGCTACCGT [...]
+>Sb02g030610.1
+ATGGGCCTAAAGGTGTTTCATTGGCTGAATTGGAGGATGCATCCTAATACTGAGTACTGCACCATCCATGGTAACAAGGCCATGGAGGATAGGGAGGACTCTGTGCCTCATAGTGTGGTTGAGAAAGACACTGAAGCCCTTTTGCTCCGTGATGTGCTTCTTAATGGTATACTTGCAATTGGCACACTTGGACATCACGTAGACTCATTTTGTCCTGAGGCTTGCATTGAAGAAGAAGATCTCCTCGTCATGGGTGATGAGAGAGTAATTGAGGAAGATATAGATGATGAGGAACCCAGGAATGATCAGGTGAAAGAAGACGTTGCATTGGAAACAGAGCCATGTGAACCAGTATTGCCTATTGTTGAGCCTGCTAAGATGCATTCATTGTCAATGAAAGAAGACAACTTTACATGCTTTGTAACAGAAGAAATCCTGATGCGTGAGGTGGAAGATGGGGGAGCTGTTAATATCCAGGAGCGACCACTTCTG [...]
+>Sb03g039620.1
+ATGGTTGTGCAGAAGAAGCCATGGCTGCCCGTCGACCTTCGGCTGCCGGCGGGGCCGCAGGCGTCGCTGGGGATCCTGGCGTTCGAGGCGGCGGCGGCCATGTCCAAGCTGCTGTCGCTGCACCGCTCATTGTCGGACCAGGAGGTCTCCAGGCTGCGCTCCGACGCCATGCGCTCGCCGGGCGTGGCGTACCTCAACTCCACCGACCAGGTGTTCCTCCTCAGGCTGGCCTGCGCCGAGCTGGTCGTGTCGCTGGACGCCGCGGCGGCCGCCGTCGCGCGCCTCGGCCTGCGCTGCGGCATCGACTTCGGCGGCGTGTACGCCTGCCTCAAGGCCGGCGCCCCCGACGCGCGCCTCGACCCGCTTGTGGCTAAGGGCCTCAAGGTGAAGGCCAAGAAGATGGAGCGCCTCGTCGCCGCCACGGCCAGGCTCTGCTCCGAGATGGAGGCGCTCGACGAGCTGGAGTCCGCCGAGCGGAAGTTGAGCGTCCGG [...]
+>Sb06g016800.1
+AGGGTTCTTCGTTCCTCCCACTCGCCGCCGCCGCCGCCGCCTCCCCAGCACCAGGCGCTCCAGCACCCGGAGCTCGCCCTCCCGCCGCCCACCATGATCATCCCCAAGAAGAACCGCAATGAGATCTGCAAGTACCTCTTCAAGGAGGGCGTGCTCTATGCCAAGAAGGACTACAACCTGGCGAAGCACCCGCAGATTGATGTGCCCAACCTCCAGGTGATCAAGCTCATGCAGAGCTTCAAGTCCAAGGAGTACGTCAGGGAGACCTTCTCCTGGCAGTACTACTACTGGTACCTCACCAACGATGGCATTGAGCACCTCCGCAACTACCTGAACCTCCCGTCTGAGATCGTGCCTGCCACGCTCAAGAAGTCTGCCAGGCCACCGGGCCGCCCATTCGGCTCTGGCCCTCCTGGTGACCGCCCACCAAGGGGCCCAGGTCGTTTTGAAGGCGACAGGCCAAGGTTTGGTGACAGGGATGGGTACCGTGGT [...]
+>Sb09g029123.1
+TCTGGTCAACCGATATTCTATCCATATCAAGGCACTACCTTTAACTCCTTTGAAGAAGCGAAAGAGTTTTATAACCTCTATTCCTGGGAAATTGGGTTCGGGATTCGAGTTTCTAGAGCAAGGCAAAACGGCAATGAGTGCACAACAAGGCGGGATCTCGTATGCTGCTGCGAGGGATTCTGCAAAAATCCTCTAGCTGCATCTTTCAGGATTGGGTGCAAGGCAATGCTACGCCTGCATCGAACTGAAAGCCATGGATGGATTGTGACCAAGATAATTCCAGACCACAACCACCCGCTTTCTGATAGCTATGGTCAAAAGAATCAGTGGGGATCCCATGGTGCCATAGACCCACTAACAAAGGATTTCATAAAGAAGCTGCGGGAGAACAATGTTATGTTGGGTCGTGTCTGCAGCATAATTGGAGATCAGTGCCAAGCAATGGCGGTAGCAATCAAGAGCACCCTAAAAAAATCAAGGCACAGGTGGTGT [...]
+>Sb01g012810.1
+ATGAGGGACGCGGTGGTGGTGATGGCGGTGCCCGGAGCCGCTGCCGGGGCCGGAGGAGGGAAGTCGGGGAGCGGCGGCGGCGCAGGCGGAGCGGCCTCGGCGGCGCCGTGCGCGGCGTGCAAGCTGCTGCGGCGCCGGTGCGCGGCCGGCTGCGTCTTCGCGCCCTACTTCCCGCCCGGGGAGCCGCACAAGTTCGCCAACGTGCACAAGGTCTTCGGCGCCAGCAATGTCAGCAAGCTGCTCCAGGAGATCCCGGTGCAGCACCGAGGGGACGCGGTGAGCAGCCTGGTGTACGAGGCCAACGCGCGCGTCAGGGACCCCGTGTACGGCTGCGTGGGCGCCATCTCGTCGCTGCAGCAGCAGGTGGAGACGCTCCAGGCGCAGCTGGCGCTGGCGCAGGCCGAGATGGTCAGGCTCAGGATGAGCAACGACTACATCCTGCACCGGCTCAAGGCGGCCAGCAGGGCCAACGGCGGCGGGGGCAGCAGCTAC [...]
+>Sb09g003390.1
+ATGGATCCCAACTTCAATAGTGTGTGGAGCACCTCTGAGATCAATATGGCAAAGTCACTCATCACTAGTCACATCACCAACAACACCTACACAAGTAGTGCCCATGTCAACAATAACTTTGGGATGCCAATGGAGGCTCCACTCGTAGACAACATGGGCATGTTGAAATGTTGTCTAATGGATGAGACTAGAGCAATGAGGTGTAGAGAGGGACAACAACATATGCCAAATGTTGTTCCTAAGCAAAGGAGACATGCAGTGAGGTTTTGGACTACACACGAGCATAGGAATTTCCTCCATGGACTAGAAGTGTTTGGGCGTGGTAAATGGAAGAACATCTCCAAGTACTTCGTCCCCACAAGGACACCGGTGCAGATCTCAAGCCATGCACAAAAGTATTTCCATAGGCAGGAGTGCACCACCAAAAAACAACACTTCAGCATCAATGATGTGAGCCTCTATGACACACAACCATGGGTGCAGAACAACTCT [...]
+>Sb10g022320.1
+ATGGTGCAGCTAGAGCGCGTCTTCCGCCGCATAGATGACGTCGAAAAGCGCATCCGCTACAGCTTCGACCCTGTCGAGCAGCACCTCGACGACGCGCTCCAGCACGAGCAACCGGCCGACGCAGCGCAAATCCACGCCAGGCTGCTCGTTGTCGACGCCGGCATCGGCTCCATCAAGGCCGCCATTCGAGAGTCCTACAACATCCGCAGCGAGTGCGGCGATGATGATGGTGGTTGGGCAGGGGGTGAAGGTGAACCTTCCACTGCATCTCCCTCACGGTCACAGGTGTCTTGTGCGACGATGGTGATGACGACCAACAGGATGGGCGAGATCCGCCATGGCCCGCAGATGAGCCACCTGAGGCTCGCTGTGGGCAGCTTCGAGGCCCGCCTTCGCGGCTGCGTTCTCTGCCTCGCCGCTTTCCCTGAGGGCGCCGTCATCAAGAAGCGGATGCTTCTCCACTGGTGGGTCGCCGAGGGCTTCGTCCGCTCC [...]
+>Sb07g023110.1
+GACGCGCAGCCACATCACATCCGCGGCGGCGGCAGCACAGTGCGCGGTCACTCCACTCGTGGCTGCCAGTCACCGCGCACACATCGTGGTGGCCATGGCTGCTTCCCCTGTCCTGCTCGTCGCCGCCGCGCTCTGCCTCTGCGCGTTGTTGTTCGGAGCAGGGGAGGCGGCGACGAAGGGGGGAGCAGCAGCGTCGTCGGCATTCCGCAGCAGGGCGACTGACCCAAACATGGAGGTGAAGTTCGACTTCTCGCCGTTCCTCATCCAGTACAAGAGCGGCCGCGTGCAGCGGTTCATGGGCACGACGTTCGTCCCGGCGTCCATGGACTCGCGCACCGGGGTGGCCTCCAGGGACGTGGTCGTGGACCACGGGACGGGGCTCGCGGTGCGCCTGTACCGGCCGAGCCGCCGCGCCGTGGCCGCCGGTGCCGGAGGCGGGAGGAGGCTCCCCGTGCTCGTCTACTTCCACGGCGGCGCGTTCGTGGTGGAGTC [...]
+>Sb08g020610.1
+GCCTGCTGCCTCCGTCTTTCTGTTTCTCTGTGCGTCTCGGAGAAGGGAGAACCTCCCTCCCACTCGCCTCGCAGATCCGCGGCGGCCTGCTTCGCTGCTGCCTTGCCTGCAAGCGTCAGCGGCAGGGGCGGCCCTTCTCCCGTGACCCACTTCGGTGCCAGCGGCTGCTCCCGTGGGTGCCGCCGCCTCGTCTCCCTCCTCCTTCCAGATCCATCCCCGTGCCCCGCGGCAGGGACCAGATCCACCACCGCGCCACGAGCTCCGGCAGGCGGCATCCGCTCGCCGCGGACGTCCCAGGAGTCCCGTTTGCCAGCGACGCCTGCACGCGCGCGGGCGCGCTACGAGCTCTCCGCCACCTGCCGGACGGCGTGAATCAGCGACTTGACAGCAAAAGGACCCTTTCAATCAAAGAGAAGTTTGTCACTGAGGCTGAAGAAAATCTGGATGTGTTTAACTTTTAGGGCTTACTATTTTTGAGAGGTGGTCTGACAT [...]
+>Sb04g028510.1
+ATGTCGTCGGCGGCAGCCATGGAGGCAATCGACGAGCTCGTCCAGCTCTCCGAGTCCATGAGGCAGGCCGCCTCGCTCCTTGCGGACGATGACCCCTCCGACGAGACCGCCTCGCGCCGCCCCTCCACCTTTCTCAACGCCGTCGCGCTCGGCAACGTCGGAGCTGGCAAGTCGGCTGTGCTGAACAGCCTCATCGGCCACCCTGTGCTGCCCACGGGGGAGAACGGCGCGACGCGGGCGCCGATAGTGGTCGACCTGGCGAGGGATCCGGGGCTCAGCACCAAGTCCATCGTCCTACAGATCGACAGCAAGTCCCAGCAGGTGTCGGCAAGTGCACTCCGTCATTCACTGCAGGATAGGCTTAGCAAAGGGGCATCCAGTGGATCTGGGAGAAGCCGAAGCGATGAGATTTACCTTAAGTTGCGGACAAGTACAGCTCCTCCGCTGAAATTGATTGATTTACCTGGCATAGACCAACGGGTTATGGACGAT [...]
+>Sb04g004940.1
+CCCTCTCCTCCTCTCTTCGATCCCCAAATCCGGAATTGACCAGCCCAAATCGTCGTCGCCCCGGCCGCATGGAGTGGACGGCCCCGAAGCCCGCCTCCTCGCCCTCCTCGCCTCCCCTTCTCTGGGACTGGGGAGACCACGCCGCCACGGGCTCGGGCTCCTCCTCCGGCGACGCCCCGGCGCGGCGCGGTGCTGGGAAGGAGCGGGAGGCGAAGCGTGCCAGGGGCGAGGACGGCGGCGGGGGAGCTGAGGTGAGGTGTCAGGTCGAGGGGTGCGGATTGGACCTCACCAGGGTCAAGGACTACCACCGGAAGCACCGCGTCTGCGAGGCCCACACCAAGTCCCCCCGCGTCATCGTCGCCGGCCAGGAGCGCCGCTTCTGCCAGCAGTGCAGCCGATTCCATGCCCTGTCAGAGTTTGATCAGAAGAAGAGGAGCTGCAGGAGGCGTCTGTCTGATCATAATGCCCGCCGCCGGAAGCCTCAGCCAGATG [...]
+>Sb08g002430.1
+ATGGAGCGGCAAGCTCGATTCGTCGTCCTGCTCGTCTTCGTCTTCTTTGCCGCCGGGGCGGTCCTCGCCAGCAGCTCCGGCGCCGCCGCCGCGGCCGCCGACTTGTCAGCTGGTGCTCATCGGGCCGCCATGCCGTCGTCGTCCCTGCACGCGCTGCGGCGCGTGGAGGACGACGCGAGCAGCTTGGTGGAGGAAGAGGAGGCAGCGTACCCGCGGAGGAGGGCGCTCTACGGTGGCGGGTCCATCGGCTACGCGGCGCTCGCCGCGAGCAAGGCCGCCTGCTACGGGCCGTGCCCCGCTCGTGGGCAGGCCTATAGCCGCGGCTGCCTGGCCATCTACCAGTGCCGAGGTTAG
+>Sb04g024230.1
+ATGAGGACGGAGATATTGATCCGGATGGAGGGGGGCACGGAGAAGGGCCACGCCGCCAAGGCGATGAAGGTGGCGGCGGCGATGCAGGGGGTGGAGTCGGTGACGCTGTCGGGGAAGGACAAGAGCCTGCTGCGGGTGGTCGGCGACGGGCTCGACTGCAACCACCTCACCACCCGCCTGCGCCGGAAGGTCGGCCACGCCGACGTCGTCGAGCTGCGCACCCTCCACGCCGGCGCCGGCGCCTACGGATACGGGTCCGGGTCCCGGACCGGCGGCAGCCTCTCGCGCGACGCCGCCGCCGCCGCCGCGTACGGCAACGGGAGCCGAGGAGGCGGGAGCTACTACGGCGGCTACCCCTACTCGACGACGACGGCGGCGGATTCCGACTACTACTACAACGGCCAGCAGCAGCCGTCGTTCCAGTACAGCTACCAGCCGCCGTACCGGTACGCCGCGGCGCCCGCCGCCGTGCACTACGAGTACTACCCGGCC [...]
+>Sb07g023320.1
+CACCAGGCCATCCCCCCGTATACCCATTTCCTTGTTCGGTCGGAACGCGGCGGCGGCGGCGGCGGCGAGAGGGAGAGAGAGGGGAGAGTCGGCAGGCCCCGAGGGAGGAGGCAGCGGCGGGCCGGACAATATGAGCGGCAACGGCGCGAAGAAGGTGGTGGATGTGGCCGTGAAGGCCGCCAAGGCGATCGATTGGGACGGCATGGCCAAGATGCTCGTCTCCGACGAGGCGCGCAAGGAGTTCGCCACGCTCCGCCGCACCTTTGAGGACGTCAACCACCAGCTCCAGACCAAGTTCTCCCAGGAACCCCAACCGATTGATTGGGAGTACTACAGAAAAGGAATTGGATCAAAAGTGGTGGATATGTACAAAGAGGCTTATGAAAGCATCGAGATCCCGAAGTACGTCGACACAGTTACTCCCGAGTACAAGCCGAAGTTTGATGCTCTGGTTGTTGAATTGAAGGAGGCTGAGAAAGCGTCTCTGAAGGA [...]
+>Sb03g001010.1
+ATGGCCGAGAGCCTCCTCTACGGCCGCGACGTCGCGTTCGCGCCCTACGGCGAGTACTGGCGCCAGGCGCGCCGCGTCAGCGTCGTCCACCTCCTCAGCGCGCGCCGCGTCGGGTCCTTCCGCCGCGTCCGGGAGCAGGAGGCCACCGCGCTGGCCGCCCGGGCCAGCACCGGCGCCGGAGGCGCGGCGGTCGACCTCAGCGAACTCCTCACCGAGTACGCCAACGCCGTCGTGTCGCGCGCCGCGTTCGGTGACGAGAGCGCGCGCGGGCTGTTCGACGAGTTTCAGTCCGGCCGTCGGCAGAGGAAGGTGTTCACCGACTTCCAGAAGCTCATCGGGACGGTGCCGGTCGGGGAGCTGCTGCCGTGGCTGGGCTGGGTGGACGCCATCACCGGGCTGGAGGGGAAGATCAGGCGGACGTTCGAGGCGCTCGACGGGCTGCTCGAGAAGGTGATTGACGACCACCGCCGGCGGCCTCGCGGAGAGGGTGAC [...]
+>Sb08g015916.1
+TTTCTAACTTGTCGTTTATTTTGGGACAATCAAGGTTTTTGGAGTGAGCTGAGTGACGAAGCTGCATCAAAGTTGTCCAAAAGTGTTGTCTCAATTGCTTTGACCCATGGTGATCTTGTAGGACAAAATGTGCTATTTGCATCCTGTGGCATAGCTATAGAATGCCAGCCTAACTTCACAAAGTTCGTGACATCAGCAATTTTGGTTAGAGCTTTAAATACTGAAAGAAATGGCCATGACAACATTAAGATTGAAGTATGCCATAAAGGAAATGTTGCCATAGGGACTGTGGTAGAATGTGACCTGGATCATGTAATTGCTGTTGTCGAAGTCACGTCCGCCCTTGACGTTTGTTGCGTACCTCTCAGTCATGCGGAGAAATTGATGCCTGATACAAAGGTTGTAGCAGTAGGGCGTGACATCTCTGGCAAATTAATGGCCACAAGTGGGACACTTGCTAATTCAGGCCGACCTGAAGATCGTGGACATCTT [...]
+>Sb09g019750.2
+AAAGTCTACACCGCGACGCGCAACCCGCGTCTCGTGCGAAGAATCCGCATTTCCCTTTCCCCGCACCGCACCCAATCCCATCCCCGTCGGAGTGCGAGACAGAGAGAGGGAGAGGGAGATGGCGTCGGTGGCGGAGATGCAGCCCCTCGCGCCAGCGGGGTACCGCCGTTCGCCGGAGATGAAGGAGAAGGTGGAGGCGTCGGAGGTGGACCTGGAGGCCGGGACCGGGGAGACGCTGTACCCGGGGATCTCGCGCGGGGAGAGCGCCCTCCGCTGGGGCTTCGTCCGCAAGGTCTACGGCATCCTCGCCGCGCAGCTGCTCCTCACCACCGCCGTCTCCGCCCTCACCGTCCTCCACCCCACCCTCAACGCCACGCTCTCCGACTCCGCGGGCCTCGCGCTCGTGCTCGCCGTCCTGCCCTTCATCCTGATGATCCCATTGTATCATTATCAGCACAAGCACCCACACAATTTCGTTTTCCTGGGTCTGTT [...]
+>Sb09g025100.1
+ATGGGAGCTCAGCAGAGCGTCAACGCAGGGAAAGCCAAGGTGGATATGCAAGTCGACCTCACCCATATGCTGTGCGAGGCGCTGCTGCTGCCGCCCCTAAGAAGCTCTGGTGTCACTTTATCGCAAATCGTTGGAAGGATCTCTCTCAAACACCCAAACCTCTTTGGGAGAAGTGAGAAGTTGGATGTGATATTGGATAAAGGAATCAATGACTCCAATGTTGTTGTTGCCTATAGACGCCCAAGGCCTGAGTGGTTATCACAGCAATCATTTGTAATTCAGCACTCAATGACACCAGAAGTTGCCGTCCATGGATTCCCGGCTGATAACTTCACACGATCAGGGAGCAGAGGGATAAACCTTAGTCGATTATCATTTGGTTTGGAGCTTAATGAACCAGCCACATCAAACTGGACGTCGGGAACTAGTGTTAAATTTGAGCATATCCGTCCTATTAATAATCAGGGCCACTCCATTGCCAGAGACCATGAC [...]
+>Sb03g007880.1
+ATCTTCAGTCTTCCGAGCGTCTCGCGCGTTTGATTTGAACCACTTGGCGCTGCCTGACGGTACTCCTCACCCCAACCCGAGTTTCCCTGTCACCGGCGGGGCGGCGAGGCGATCACTGCGAGTCTCCCACCACCGCCTCCACGTTAACATGGCGCAGCAGGCTGCTGCACCGGCGAGGCCTGCGGGCCCCACCAGGCTTGTCTACTTCGATGATATGGGAGCGCTCCGCTACTCCGCCACCGTCCTCTCCGTCCACCAGGAGGACGGCGGCCGGGTAGCGGTGGTGCTGGACGCCACAGTCTTCCACCCGCAGGGCGGCGGCCAACCGGCGGACACGGGCGTCATCTCCGCCGGCGGAGCCAGGTTCCTCGTCGAGGATGTGCGGGCGAAGGACGGAGTGGTTTTCCACTATGGAAGATTTGAGGGCACGGAACAAGGATGTGGGATTGGATTTAAAGAGGGTGAAACCGTTAGCTTGGAGGTCGACGCAGA [...]
+>Sb02g022080.1
+TTCCCACACACACACGTAAACGTAATATTCGATCCCATGGCTGAATCCAAGTGGAATGGCGGCGGTGTCGATGCGACGGCAGCGATGATGCTCCACGGCCGCGTAGCCATTGTCACCGGTGGTGCCGGCGGCATCGGCTCGGCCGTGTCGAAGCACCTGGCGTCGCTCGGCGCGCGCGTCGTGGTGGCGTACATCGGCGACCCGGCGCCTGCTCTGTCGCTGGTGAGCGGCATCAACTCCAGCCACCCCGGCGAGAGCCTCAGCCAGCAGCCGCGTGCCATCGCGGTGGAGGCGGACGTGTCGGACGCGGCGCAGGTAAAGGCGCTGTTCGACGCGGCGGCGGCGGCCTTCGGCGAGGAGCTCCACATCCTGGTGACGCTGGCGGCGGTGCTGGACTACTCCTACCCGCCGCTGGCGGAGACCAGCGAGGCGACGTTCGACGCCACGTTCGGCACCAACACGCGCGGCACCTTCCTGTGCTGCCGCGAGGCG [...]
+>Sb04g034480.1
+GGACGCCACCGCCACCGCCACCGCCTCTGCCTCCACTGCCGCCGCCTGCGCCATGGGCGACTCCTCGGTGGCCGGCGCGCTCGTGCCGTCCGTGCCCAAGCCGGAGCCCGCGCGGTCCGGTGACACCTCCGTGGCGGCCGCGGCGACCACGGCGGCGCTGGCGCTGGCGCTGCCGGAGGAGGCGGGGACGCGCGCGGCGTCGGCGTCGCCGCAGGGGCCGCCGGCGGAGGACGAGGGCCCCGCCGATAGGGACCTCCTCTGCCCGATCTGCATGGCCCTCATCAAGGACGCCTTCCTCACCGCCTGCGGCCACAGCTTCTGCTACATGTGCATCGTCACGCACCTCAGCAACAAGAGCGACTGCCCCTGCTGCGGGCACTACCTCACCAAGGCCCAGCTCTACCCCAACTTTCTCCTTGACAAGGTTCTGAAGAAAATATCTGCCCGGCAAATTGCAAAAACAGCATCACCGATCGATCAATTTCGATGCGC [...]
+>Sb0183s002020.1
+ATGGATTACCTAGCTGCTCCTGTGTTTGTGACTTTGGCTCTCGCAACCTTGCTGCTCCGCTTGGTCTTGAGATGGAGGGTCGGCGAGCTTTGCCATCCAAGGCTACCGCCGGGATCGAGGGGCTTGCCGCTCTTCGGAGAGACGCTCGAGTTCTTCACCGCGTCCCCGACCCTCGAGCTGTTGCCCTTCTTCAAGCGACGGTTGGAGAGGTACGGGCCGATCTTCCGGACGAGCCTTGTCGGCGAGGACCTGATCGTGTCGCTCGACCCGGAGCTGAGCACGCGCGTGCTGCAGGAAGAGGAGCGCGCCTTCCAGATATGGTACCCGCCGTCCTTCATGCGCGTCCTGGGCGCCGACAGCATCATCGCCGCGCTGGGTCCTCTCCACCGCCACATCAGGGCGCTCATGCTCCGCCTCTTCGGCCCCGAGAGCCTCCGTCTGGTCCTTCTACCTGACGTGCAGCGGAGCGCGCGCGCCGAGCTGAGGTCCTGG [...]
+>Sb01g030785.1
+ATTTGTAAGGAATCATTGTACAACCATGAAAATTTAATACTCAGGAAGGGAATGCTTTTCAATACGATGTCTGAGATGAAGTTGTTCCTTCAGGACTATGCTGTGTATCATCATAGGCCGTACACGGTTCGGCATTCCGACAAGGAGGTAAAATTTCAAATAGTATGCAAGGCAGGGTTCCCGTGCACGTGGAAGTTGAATGCACGGAAACGTTCGAGTGATGGGAAGTGGAAGAAGAGCTTCGAGCCGTACCTTGACGAGTCGCAGTGGCCTCCATATTATGGTGAGGACTACGTGCCTTATCCGGACCTAAGAAAGGTAGGGAACAGAAGGAGGAAGAAGAAGCGACTGAAAGGCGATATGGACAATATGAAAGGTTATGGCGATGACATGCGGGCTACGATGGCGGCGCGGGCACCTCATCCCCGCTTTAGCCTCATTGAGGCGGACTACGACAAGGACCACCGGGCCAAGGCCTTGTCGGAGCAGCAG [...]
+>Sb07g026000.1
+ATGGCGCTCCCGGGCTCGGCGGGAACCCGCGCGGCGGTCGGCCTCTGCCGGATCGCGGCGAGCGCGTCCTCGTCAGCGGCGGCCGGACTCTGCCGGATCGCGGCGAGCGCGTCGTCGCCTTCGCCGTCTGCGGCGGCCGGCGGGAGGAGGGAATGGGAGCTGCCGTTCGCGCTGGTGGCGGAGCGGGGGATGGTGGTGGGCGGCCACCGCGGGATGGGGATGAACGCGGTGGGGGCGCCGCCAGGGGCGCGCGTCGGGGCCGCCAGGGAGCGGGAGAACACGCTGCTCTCCTTCGGCCGCGCCGCCGCGCACGCCGCCGTCGCCTTCGTCGAGTTCGACGTGCAGGTCACTAAAGATGGCTGCCCAATAATCTTCCATGATGACTTCATCCTAACACAGGGGATTGGAGCTGTATATGAAAGGCGTGTTACTGATCTTCTCTTGGAAGATTTCCTCTCTTATGGTACACAAAAAGAATCTCGCAAGGTTTCC [...]
+>Sb02g011320.1
+ATGGCCGCCGCCGCCGCGCCGCTCCGCCGGCTGCTCCTCCGCGTCCGCGACCCGCCGCCGCTGCCCTTTAACACGCTCCTCTCCAACATCACGCCGCACCTGCAGCAGGGCCCCACCCCGGCCCCTGCTCCTCCACTCCCGGCCTCGACGCCGGCCCAGACGCCACCCGGGACTCTCCGCGACGCCCTCTTCTCGTTCCACCCGGGCCTCCAGATACACCCGTGCCTAGATCCGGCTGGGAGTGCCCCCGCATGGGAGGAGGTCGGCGGAGGGGCCGCGGAGGTGTGGGCGGACAGCGTGAAGAAGAAGCGCAAGCGTAAGATGAACAAGCACAAGCTCCGCAAGCTCCGGAAGCGACTTCGCCGCCAGACATGA
+>Sb09g000230.1
+GCGATGGCTATGACGACACCAGTACCAAGGCTTCCAAAGGGGGCGGATGGGTTCCTGGACGGCGCACCTGGGCTGGAGCTGGACGACTTGTTGGAACTTGGGTTCTTGCCGGCGCCGGAGTGGGTCGGGTCAACTGCAATGGCAGGCGTAGGCAATGGCCTGTGTCTAGTGGGTGGTGGTGCTGATGGCGGAGGAGCGTTGGATGCAGGGGCCGGGGACGCTGGCGGAGAGAGCGAAGGCGTCGGAGCGGCAGATGGCGTCGGGGACGTTGGAGGGGGCGAGAGCAGCGGTGGCCTTGGAGGAGGAGGAGCCGTATGTCGAGGAGGCCCAGGCGGCTGCAAGTGGGAGGAGGGTGGAGGAGCGGCGGGTGGGGGAGAGGTGAGGGGCGGGGGCGCGGCCGGTGGCGTGGCAGCGGTGTCGGCCGGTGTGGCAGTGGGCCGCGAGGACGCCGGTGATGGGGAAGAGGCGGCCCGGGCCCCGGCGGTGGTGGGG [...]
+>Sb01g042850.1
+ATGGACATGGTTTCGCAGTCCGAGCACCTGTGCTACGTCCGCTGCACCTACTGCAACACCGTGCTCGCGGTTGGGGTTCCATGCAAGAGGCTGATGGACACGGTGACTGTCAAGTGCGGCCACTGCAACAACCTCTCCTACCTCAGTCCACGGCCCCCCATGGTGCAGCCGCTCTCGCCGACTGATCACCCCTTGGGGCCATTCCAGTGTCAGGGACCCTGCAATGACTGCAGGAGGAACCAACCGCTGCCGCTGGCCTCGCCGACATCAACTGAGCTCAGCCCGAGAATGCCTTTCGTTGTCAAGCCCCCGGAGAAGAAACACCGCCTCCCATCTGCTTACAATCGCTTCATGAGGGAGGAGATTCAGCGCATCAAAGCTGCGAAGCCAGATATCCCTCACAGGGAGGCCTTCAGCATGGCTGCCAAGAATTGGGCGAAGTGCGACCCGCGCTGCTCGACGACTGCCTCTACTGCCACTTCCAACAGCGCT [...]
+>Sb01g002430.1
+CACCACTACCAGGAGGGGTTTCCGGGGCAGGAGAAGAATCAGCGGAAGGTTCTAGCAGGTTCCACTCGAAGTGGTGGGCGTTCCCTCTCGCCGTCCACGGTGATGGCGATCCTCGAGAGGTCGTCGTCCCCCGCCGCGGCCTCCGTCGCCGTCGCGGCCCTGATCGCGCTCGCGTCCGTCGCCGGCGTCGCCGGCGAGGTCTTCTTCCAGGAGAAGTTTGACGATGGATGGGAGGATCGATGGGTCAAGTCCGACTGGAAGAAGGACGACAACACGGCAGGCGAGTGGAACCACACATCTGGCAAATGGAACGGAGATGCCGACGACAAAGGAATCCAGACCTCTGAAGACTACAGGTTCTACGCCATTTCAGCGCAGTACCCTGAGTTCAGCAACAAGGATAAGACCCTGGTGCTGCAGTTCTCGGTGAAGCATGAGCAGAAGCTCGACTGTGGCGGTGGCTATTTGAAATTGCTTGGGTCTGATGTTGAT [...]
+>Sb07g023170.1
+ATGCTGAGGTCAGTGTCCGGCTCCAACTCCTCGAGGGGCATCGCCGCCGTGGTCGGCGTCGGGCCCCGGCTCGGCTCCGCGGTGGCGCGCAAGTTCGCCTCCGAGGGCTACACCATCGCCATCCTCTCCCGCGACCTCGAGAAGCTGTCGCAGCTGGCGGAGGAGATCGCGCAGGAGGCCAAGGCGCAGGTGTTCGCGCTGCGGGTGGACTGCGCCGACGCCCGCTCCGTGCGCGAGGCCTTCGAGGGCGTCCTCTCCCTCGGCCCCGTCGAGGTGCTCGTCTACAACGCCTGCGAGCCGCCGGCGGCCAACGGCGACGACGCCGCGGCCGCGCGACCCACGCCCTTCCTCGCCGTCACCCCCGACGCTTTCCACCGCGCTCTCGCCGTCTCCGCCGGAGGGGCCTTCCACTGCGCGCAACAGGTCATCCCGGGCATGGTGGAGAGGGGCAGGGGCACCATCATCTTCACGGGCTCCTCGGCGTCGGTCACC [...]
+>Sb03g002120.1
+ATGGAACCGTCTCTGTGCACTCCGCACGCCACGGTGACCGCAGGAGCAAATGCCGCTCCGCTGCTATCATCCGTGCGCCACCGCGGCGCGCACAGGGGTGGCGGCGCCGTGCGCGCCCACCGCCACCACAAGGGGACGGCGGGGGAGACGGGCGATCTCCACCAGAACCAGCAGGCGGTCTCGGCGACGGGACGAGGCCCGCGGGCGACGCCCAACGCCGCGCTGAAGGTGGGCGCCGGCGTGGCGCTGGCGCTGGCGCTAGGCGGCGTCTCGTGGACGGCGCGCGGCGGGAGCGCCGGCGCCGGCCCCGTCACGCAGCCGGCCATGGTGTGCGCCCTCAACGCCGTCACCGACGCCGCGCTCCGCGCCTCCACGGAGCAGCGCGGCGCGGCTACCATGAAGACCAGCGTGGACGCGCTCTCGGACTCTCTGTTCCGGCGCGAGGACTCGCCCAGGGACCGTGCCACGCTCATGGACCTCGTCTTTGAGCAA [...]
+>Sb01g019690.1
+ATGCTGCGACGCCGCCGTCGCCGGCCGACGCGCTGCTGGCGTGGAAGTCGAACCTGGGCGATCCGGCGGCGCTGTCCACGTGGACGAACGCCACCCAGGTCTCCATCTGCACCACCTGGCGCGGTGTCGCCTGCGACGCCGCCGGCCGCGTCGTGTCGCTCCGTCTGCGCGGGCTCGGCCTCACGGGCGGCCTGGACGAGCTCGACCCGGCCGCGTTCCCGAGCCTCACCTCGCTCGACCTCAAGGACAACAACCTCGCCGGCGCCATCCCGGCGTCGTTCTCGCAGCTGCCCGCTCTGTCCACGCTCGACCTGGGCAGCAACGGGCTCAACGGCACCATCCCGCCGCAGCTGGGCGACCTCTCGGGCCTCGTCGAGCTCCGCCTGTTCAACAACAACCTCGTCGGCGCGATCCCGCACCAGCTGA
+>Sb05g024450.1
+ATGGCCATCAGCAGGTCCCCCGGCGAATACTACTCTCCATGGCGCGCCGCGACGACAACGCTCCTCCTAGCACTAGCCGCCGTCGTCAGCCTCCTCCTGCCGGCACTGGCACAAGGGTCCTCCGAGGACGACCGGATTCTGGCCATGCCAGGGCAGCCCAACGACGTGGCGTTCGACATGTACGGTGGCTACATCACCGTCGACGAGCAAGCTGGCCGCGCGCTCTTCTACTGGTTCCAAGAGGCCGACCAGACGGCGGTCAAGGACCCCGACGACGCGGCGCCGCTCGTCCTCTGGCTCAATGGCGGTCCTGGGTGCTCCTCCATTGGCGGCGGCGCGCTCGAGGAGCTCGGCGCCTTCCGCGTCCACAAGGATGGCGAGAGGCTGCTGCTCAACGAGTATGCATGGAACAAAGCGGCGAACGTACTGTTCTTGGAGTCGCCGGCCGGCGTGGGGTTCTCTTACAGCAACACCAGCTCCGACCTAATCGTC [...]
+>Sb01g040470.1
+ATGGCCTCCGATCTCCCGCTCCCTCTCTTCGTGCTCCTCTTCCTCGTCCTCCTACCGACGCCGTGCTCCTCGTGGCGACCGGCCGACGACGACGACGCGTCGGTCTCGAGGTCGGTCTTCCCCATGGACGGTGACGTGGCTTGGGTGGTGCAGGTCAGCGACCTGCATATCAGCACCTACAACCCTGAGCGTGCCGCCGAACTGGCCCTCCTCGGCACCGCGCTGCGCGCAATCCGGCCTCACCTTCTCCTCGTCACCGGTGACATCACTGATGCTAAGAATCAGCAAAGAACTACTTCAAGGCAGGATGAATACGAATGGGTTACCTACAAGAAAACTATTGATGCAATTGTTGGACAAGGTGGCATTGATAAGAGCAGGATATTTGATATTAGAGGCAATCATGACACATATGGAGTGCCCTATAGAGGAGGAAAATTGGACTTCTTTTCAACGTACAGTGTTAACTCACAGTTTAAGCGATTAAGCACC [...]
+>Sb01g017430.1
+CAGTGCGGCACCGGCCACCTTTACACCTCATTCCCACCGCCGCCACCACCACCACCTCCACCTCCACGCTCCACCGTTGCCACCCCAGCACGCTCTCGCCGTCGCCACGCCCTATATCTCGCGCCTCTCGCCTCCCACTCTTTCTCCATCCGCCCGCTCGCCTCCCTGCTACGCTTCGTGCCGCCGCCGCAACCTCCTCCTTCCCGTCCCGTTCCAGAATTGCAGATTACAGGTCATTTAACATAAATGGCTGACGCAGAGGACATTCAGCCCCTCGTCTGTGACAATGGAACTGGAATGGTCAAGGCTGGCTTTGCTGGAGATGATGCTCCCCGTGCTGTTTTCCCAAGTATAGTTGGTCGTCCACGCCACACTGGTGTCATGGTTGGGATGGGACAGAAGGATGCTTATGTTGGTGACGAGGCCCAATCCAAGAGGGGTATCCTGACTTTGAAGTACCCCATCGAGCATGGAATCGTAAGCAACTGGGAT [...]
+>Sb03g038320.1
+ATGACCAAGCCGGCGGCGAAGAGGGAGCCCGACGTGTGCCAGCTCGTGGACAAGCACATCGACGTCCTCGCACACGCGACACGACGAGCCTCGCCTGTCGTCCCCGAACAGAGCAAGCTCAAGCCGCCGAGGCGGTCCGTGTCGTCGTCGTCGGCGCGCCGCCTCAAGACGCGCGCCAACACCCCGCGCTTAGCATCGTCCAAGAAGTGCAGGTCACCCACGACGACGACGACGACCGCGCGCTCTCCTGCGCGGACCAAGCCGCCGCCGCCGCCGCCTCTGGCTGAGAGCTTCGCGGTGGTGAAGTCGTCGCGGGACCCGAGGCGGGACTTCCGGGAGTCCATGGAGGAGATGATCACCGAGAACGGCATCCGCACCGCCGCCGACCTCGAGGACCTCCTCGCGTGCTACCTGTCCCTCAACGCCGCCGAGTACCACGACCTCATCGTCGAGGTGTTCGAGCATATCTGGGTCACGCTCTCTGACGTCAAGGTGTAG
+>Sb02g001350.1
+ATGAAGCTGGGCTCGCAGGGGCTGGAGGTCTCGGCGCAGGGCCTGGGCTGCATGGGCATGTCGGCGGCGTACGGCGAGCGCAAGCCCGAGGCCGACATGGTGGCGCTGCTCCGCCACGCCGTCGCGTCCGGGGTCACCTTCCTCGACACCTCCGACGCCTACGGCCCTCACACCAACGAGGTCCTCATCGGCAAGGCACTCCATGGCACGCCGGAGAAGAAGAAGGTGCAGGTGGCCACCAAGTTCGGCATCACGCCTGACATCAGGGGAGTCAGAGGCGAGCTGAAGAAGCTGGTTGAGGAAGGCAAGATCAAGTACATCGGGCTGTCCGAAGCGTCGGCGTCCACGATCAGAAGAGCCCACGCAGTCCATCCGATCACCGCCGTCCAACTAGAGTGGTCTCTCTGGACAAGAGATGCTGAACAAGATATAATCCCAACTTGCAGAGAACTTGGAATTGGGATTGTAGCATACAGTCCGCTGGGCAGAGGA [...]
+>Sb02g031230.1
+ATGGCTTGCAAGCCGTACTACAGCACCAACAGCTGCACAGGCCGCCAAGCTACTACGAACGCGCCGTCATTTCCACGACCGCCGGCGCCACCCCAGCCTGGGCTCCTGCCGCTGCCAGCTCAGCCCTCGCCGCTGTACTCCTTCGAGCCAGCGAGCCGCCGGCCGGCTCCGCGTGCCAACAAGAAGCCACGCGGCTACGACGCCGCGCCAGCTGGGGCCTCGGCGCCGATCGCCGTCGCCGAACCGTCCAAGAAGAGGGTGGCGCCGGCGCCGGCGACTGGGCTGGAGGAGGAGGAGTTACTGGAGTGGACGGAGACGGCGGCGGACTCGCTGTACTCCGTGTCCCCACCGCCGAGCAGCGTGCCGATGCCTACGTCCCTGTTGCTCACTGTCGCGGCGGCCAGGAAGGCGCCCACGGCCTGCGCCGTGGAAGTGGCGACCGGCGCCGGCAGCGGCGGCGTGGATGTCGGCGCCACCGACGAGCTCCGACGG [...]
+>Sb01g022350.1
+ATGCCTTTTCTTGTAGATATCAAAATGTATGCTAGAGAAGATACACACTATCTGCTGTACATATATTCCTATGACTTAATGAGACAGAGACTACAGAGGGAGTCAACATTTGAAAATGATCTTCTTCTAGAGGTCCATAAGCGCAGTAATGAAATTTGCTTACAGTTCTATGAGAAGGAGCTTCTGACAGATACGTCCTATCTCCACATATACGGGTTGCAGGAACATGAACTGGATGCAAAACAGCTGGCTGTTGTTGCTGCTCTACATGAGTGGAGAGATAGTATAGCTCGTCAGGAAGACGAAAGTACTGGTTATATACTGCCAAATAAGGCTTTTTTGTTATTATGGTGCAAAATTAGATATGCGACTTCGCTGACTCCGCCACCCCTTTTTTTTAATTCAAAAGCAAAGCAGATGCCTACAGATGTTGGACATTTGAAAAGAATTGTGAAATCAAAATGTCCATATGTTGAGAGCAATCTTGAGCTA [...]
+>Sb03g005170.1
+ATGACTATGGACCCTGCTCCGGCGGCGAACGGCGCCGCGGCCGTAGCCGGAGGAGGCATGAAGCGGCAGGGCGGTAGATGGTGGTACGCGGCGGCCGGTGCCCTCATTGTGGCGCTCCTCGCCGTGGCCGTGAGCTTTTACAGCTTCCGGGGCATCCCCTCCTCTCCACCAGGAGGCTGCGGCTGCCCTGCTGCAAGGAAGTACACCGGAATGGTGGAGGACTGCTGCTGCGACTATGAGACGGTGGACGCCATCAATGAGGAGGTTCTGCATCCGATCCTACAGGAACTTGTTAAGTTGCCGTTCTTCAGGTACTTCAAGGTTAAATTGTGGTGTGATTGCCCTTTTTGGCCTGATGATGGAATGTGCAAGCTTAGAGATTGTAGTGTCTGTGAGTGCCCAGAGAATGAGATCCCTGAACCATTCAAGAAACCTTACAGTGGACTTTCTCCAGATAGTATGATATGCCAAGAAGGAAAACCACAGGCTACC [...]
+>Sb05g000870.1
+GTCGATCCGCCGCAGCAGCAGCAGCAGCCATGGCGACCTCCACCACCACCACCACTCCACTCGTCGTCTCCTTCTCCCGCAGCTGCCGCTGCCCCTATCCACACCGCCACTCCCCCGGCAAGCCCAAGCCCAAGCTGCCCCCTCTCCGCTCCCTCTCCCTCTCCCTCTCCCTCCGTACCGGCCCCCTCGCCGTCCTACCGCGGCGCCGGCGCGACGTGTCGGCGGCGTACGGCGATGGCGACATGGACGACGACTTCGGCGACTTCGACCCGGACGACGCGGACGGGGTCAGCGAGGACGACGACGTCGACAACGAGCAGGACTACGACGTCGACTACGACCGCCTCCTCGCCCCCGTCGTCAAGCCGCCGTTGGGGCCAGCGGCGGCAGAGGAGGGCGACATCGCCATGGTCGCCGCCGACAGCTTCGTCTCCACCCGGGAATCCGCGTCCGATACCGTTGTTGACTACACTGTGGATGAGGACGAGTTCC [...]
+>Sb03g041780.1
+ATGTACGCTGTAATTTCCCGAATATACTCGGCGGCGCGTAGACGCCTCGAGGCCTTCATAACCGCGATTCCGGGCGGCCACGATGGCTGCGGCGGCAGCAGGAGGGGCTTGCATCGGCATCGGCATAGCAAGCGGCGGCGGTGGACCAGCCCCTTCAGGACCCCGCTGGGGTCGCCTATGTCGATGTCCTCCATCATCGGCGCCGGGGACGACCAGCCCACCCCCGCGTCGTCGGGGGCGGCCTACGCCACCCCCCAGGGCGAGGACGCGACGCCGTCCGTGATGGCGTCGCCGCTGCCGCCGCCACAGATGGTCGTGGTGGCGCTAGACGCCACGCGGGACCACCGGGATGACGAGATCAAAACGGCGTTCAAGAATTTGGTCGTCGAGCGAGGAGACATACTCCGTGCGAGCGATTCGCTGCTCGTGCTCGGCGTGCTTCACTCCATCACCCATCCATGTGAGGATCATCTCTGGGATATCACACCCTTG [...]
+>Sb06g015405.1
+CGCACCGTGATCTGTGTGGGCGACGTCCACGGCTACGTCACGAAGCTGGAGAGCCTCTGGTCCAACCTCGAGGCCGCGCTCCCCGCCGACGCCTTCGCCACCGCGCTGGTCATCTTCCTCGGCGACTACAACGACCGCGGCCCGGACACCCGCAGGGTCCTCGACTTCCTCCTCGCGCTCCCGACGCGCCACCCCGCGCAGCGCCACGTCTTCCTCTGCGGCAACCACGACCTCGCCTTCGCGGCGTTCGTCGGGGCGCTGCCGCCGCCGCCCGACGGCTCCCCGTTCTCGGCCACCTGGGACGAGTACATCCACTACGAGGAGCACGAGGGGTGGTTCCGCGGGCCG
+>Sb05g023960.1
+GCAGATCTTCTGCTCCTTCCCACACTCGCGCTCCTCGGTCCCAAGGACCGGATCTTCCGCGCGTCGGCGGCTCCCCCTCGGCGGCGTCCAGCGAGGAGGGGCAGTCCCAGGCTCGGCGGCGGCGTCGGCGGCTCCCCCCACCTTCTCTCGCCAGTCGCCTCGCGCCCTCGCCTGCGTCCTCCGAGCACCGGCCGACGACCCTGCGATCAGAGGAGCAAAGACCATTACTTATCATAAGAAAGATTCTAGTTGGTGGAAGCTTTTATCTGTAGTTGGACTGTGATGAATTTACTGGTCTTGAGTATAGAGTAGGCAATCTGCAGTTTAGTGGAACTCAATGGGTTCTTCTCCTTCCAAAGCCACTGGAGAGGATGCCCTTGTTCTGTGCAAGGATCGGATGCGCCATATCAGACAAACCATTGACTCAAGGGATGCACTGTCAGCAGCGCACTTATCTTACACACAATCCCTCCGCACTGTGGGTACTGCACT [...]
+>Sb01g046590.1
+CTCCATTCCGTCCCAGCCCCAAATTCCCCACCGCTCCGCTCTGCTCCAGCGCGGCGGCGACCATGGAGGAGCAGCAGTTTCTCACGAGCATGGGCGTCAGAGTGAGCAGCGCGCAGAGCAACCTGCGGCGCGACCCGCAGCGCGACGGCATCGACGTTCCCGACCCGCTGATGCAGGGCGCGGCCATGTTTCTCACGTATGCGTACGACGCCATCCCCGACCCACCCGTGTCTCCCGCCGCGCCCCTCGCCTCCGCCGTCGCCGCGCGGGCCCCAACCGACGGTGTCGACCGCATCAGCCTCCTCCCCGACGCACTGCTCCGGAACGTCGTGTCGCGCCTCCCCGCAAAGGACGCCGCGCGCACCGCCGCGCTCGCCACGCGCTGGCGCGGCCTCTGGCGCTCCGTGCCCCTCACCCTCGTCGACGCCCACATCCTCCCGGCCTGCGTCCGGGCCGACCACAGGATGCCCGGAGGCGAAGACGCCCTGTCCA [...]
+>Sb03g035970.1
+GTAGGCTGTAGCTCTTGATTCATTTTGTTCTGCGTATTGCTCTTTGTTCAACTCTTCGCAGCACACTTTCTCAGCAAGAGCTCTGCGTCGAAATTTAGGGAGGAGCATTGAGTAGTAATCGTCTCCCTCTGCCTGCCCTTTTTACCGCGGCCATTGGGTGCCCCCATACCTCTAGTGTTCCTTCCGAAAGCACCACGCTCGCCTACAAATCACGGCGCCGTGACCACGCGCCGCTGCTCTCTCCCCAGTCCTCCACCTCGCACCGCCGTTCCCATTTCCGGCCTCGCCGGTGCGTGCATGCGCGCGCGAGGGACGGCAAGTGAGCTCAGCTCCAGCACGCAATCGGCAGCAGAGTGAGCTCACCCTCTCCCTCCGTCGCTGCTCCGCGGCCTATTGAATTATGTTCACAGTTCGGGGATCAAGACCATCGGGCCAAACTATTCCAAAGAAATTTTCAGACATGAGATACTCCAATGTTTCCTGGACATTCCT [...]
+>Sb06g032320.1
+AACCCACAACCAGAAAACCAAAATCCAAAAGATAGCAACAGGAAAAGAAAAAGCGTAGAGACACAAACGATAGAAAGGGACGCTCGTCTCGTCACGTCCCCCACCGCCGCCGCCGCCATGGCTGCTCTGGGCCGGGGCATCGGCCTCCTCTTCCTCGGCGTCCTCCTCTTGGCCGTCGCCGGTGCCGCCTCCGCGGCGCCCGGCGGCATGTCCATCATCTCGTACAACGAGGAGCACGGCGCGCGGGGGCTGGAGCGGACGGAGGCGGAGGTCCGGGCGATGTACGAGCTCTGGCTCGTTGAGCACGGCCGCCGCGTCTCCAACGTACTCGGCGAGCACGACAGCCGCTTCCGCGTGTTCTGGGACAACCTCCGCTTCGTCGACGCCCATAACGAGCGCGCCGGGGAGCACGGATTCCGCCTCGGGATGAACCAGTTCGCGGATCTCACCAACGACGAGTTCCGCGCCGCCTACCTCGGCGCCAGGATCCCC [...]
+>Sb10g028800.1
+ATGGCTCCCTCCCTCGCCGCCCTCCACTCCGCCGCCGCCAGCCACCTCCCACACCCTCGACGTCAGAGGACCACCGCCCTCGCGCGCGCCTCCTCCGTCCTCCGCCTGCCACTCCGCCGCCGCTCCCGTTGGGTCGCCGCCGAGGTACGCACAACCTCGCAGTTCGCGACCGGCGGCGCTGGGGGCACGGCCACCGGCGGCGGCAGCGGCAGCGGCAGGGCGAGGCGAGGCCTGGGCATCGACGTCGCCGCGGTCGGCGCGGCGCTGCGCGACGCCAGAACGGCCGACGACGTGGAGTCCGTGGTGAATGCCTTCTTGAACCACGACAACGCCGCCGCCGCCGGCGAGGCTCACCTCCTGCCCCTCCAGGTGTACACGTGCGTCATCCGGGGGCTCGGCAAGGACAACCGCCCGGACGCCGCGTTCGCCGTCGTGGAGCACCTCAAGCGGAGAGGAGCCGTGCTGAACCAGTTCGTGTACAACTGCCTCCTC [...]
+>Sb09g007220.1
+ATGTACAGGCACAACACTATTTCTCAGATTATTGATGATGATGGCAGAGTGGTCACAGAGCATTTTGAAAAGGTTGCACTCTTTTGGAATGAGTTCAAAAGTAGGATGGGAGTTTCTGTTAGTCCCCAAATGCAATTTGATCTTGATACCTTGTTTGATCCAGTTGACCTCCAAAGCTTAGTGGATCCTGTTTCCAATGATGAGATGGATAACATTATCAGGAGTTTGACAAATGACAAGGCCCCGGGTCCAGATGGATTTAATGGACACTTCTTCAAAAGATGTTGGAATTTGATAAATTTGAAGCTCCCAGTTACTGTGGTTGAAATGATTGATAAATTTAGAAAGAGATGCTTGTGGAGAGGAAGTGATCTAAATTCTAAGGGTTATAATCTTGCAGCTTGGGACAAGCTGCAAGATGGTTTGCTCTAG
+>Sb02g041860.1
+GTTCCTCGCTGTGAGGGAAGATATCCCGTGCTCTCGCCGTCGCCGACCTACCACTCCCGGTCCCGGAGGAGAGAGAGGGCGGGGGCAAGGGGATGGCAAAGCGCCGTCATCACGCGTTGGCGCCGGTGGTGGAGGAGCTGATCTCGCCGATGAACAGCCTGGACGACGGCTGCCTCATGCACATCTTCAGCTTCCTTAGCCCAATCCCAGATAGGTATAACACCGCCCTCGTTTGCCACAGATGGCGCTTCCTTGCATGCCACCCTCGGCTATGGCTGCGTGTCGAGAGGCCAATCAGAGATGTGATGGAGCCTGGAGTTTATCCAAATCTTGAGGCCGCCGTTTCTGCTGCTAGGCCTGGTGACACCATTCTTATTGCGGCTGGTGGTTCCCATGTTGCGTGTAACATCCAAATAAAGAAGCCTATTTGCATAATTGGTGGGGGTGATCTTCCTGATGACACTGTACTAACCTGCTCACGTGGCTTCGACA [...]
+>Sb01g018395.2
+GCCGTTTCCCGTTTCTTCTTCCAAGCATGCCGTCGCTGCCGACCTAGGTACGCCGGGTGCCGACTGCCCAGGTCTTCTTGGGGCCTTCACCGGGGACGGCCACCACCAGAATGTATATGTAGCATATGCTTCAAGCGAACAAGGACAAAATGAGTTCATCTGAGGATGACTTCACCGCACTGTCTGAGGGTTCATCTGAGGATGACTTCACCGCTCTGTCTGAGGGTTCATCTGAGGATAACTTAACCTCACTGTCTGAGCATTCATCTGAGGATGACTTCACCCGACTGTCTGAGTTGACCGTCGGAAAGAACAAATGTAGAGTCCGGGTGCGCGTCTCACGGCTGTGGGAATCCTTCAATCCGAAAAATGACATATCATTTGGCCTTGACTGTCTTCTGATTGATGATGAGGGTGAAACTATGCAGGCACGTGTACTTCCTGACGATATAGACCAGTTTGAAGAGCAGCTAACTGAAGGGAAGGTCTATG [...]
+>Sb06g019630.1
+CGCTCGAACCGCCTCCCACCCGTCGGCCAGATCAGCCTTCAAACTAGGGTTTACTCCTCCCGCTCCGAGAAAGCAAACAAGCGTCCGCTCCGCCGGCTGCCTCCGCGCTTTCGCCCCGCCGCCGCTCCTTCCCTACGCCTTGCCCGCCAAGATGAAGCTCGTCAGGTTCCTTATGAAGCTGAACAATGAGACGGTCACCATCGAGCTCAAGAACGGCACGGTTGTACACGGCACCATCACCGGTGTTGATATAAGCATGAACACTCATCTGAAGACAGTGAAGCTTACACTGAAAGGGAAGAACCCTGTAACACTTGACCACCTCAGCGTGCGAGGAAACAACATTCGCTATTACATTCTTCCTGACAGCCTGAACTTGGAAACTTTGCTGGTAGAGGAAACCCCTAAGGAAAGCCTTTGGGGCGTGGTCGCGGCCGTGGTCGTGGACGTGGTCGGGGCCGGGGGCCACGCTGAGCTTTACTGTTCCCTGCT [...]
+>Sb02g004950.1
+ATGGAGGATCGCCCCGACGCCAATAGGGGTGCCGCGGCGGCCAGGCTCCCAGACGAACTCATTCTGGAGATCCTCTGTCGCGTGCCCGCGAGGTCCATGCACCGATTCAAGTGCGTCTCGAAGCGCTGGCGCGATCTAATCGCCGATCCCCTCAACCAGAAACGGCTCCCCCAGACCCTACAAGGCTTCTTCTGCAGCGACGGAGCCAGATCCTACGGGCGCTTCATCAGCCTGCCGGGGAGACCGGCGCCTCTCGTCGACCTTTCCTTCTCCTTCCTGACGAAGCAGCCCGAGATGAGTAACATAAAGCTCTTGGGTTCCTGCAATGGTCTCGTCCTCTTCGAGCACCGCTCGGGTTCGGCCAGCACACCGTCCTACGCCGTGTGCAACCCCGCCACCGAGCAATGGGTGGCCGTGCCCAGCTCCGGCGTCACCTCTCATGTTGGCGGTGAAATTTACTTGCTTTTTGATCCGGCCGCGTCGACGCACTTC [...]
+>Sb02g029510.1
+ATGAGCTACCAGAAGGTCCCGGAGTCCTATCCTCCACCAGGGTACGCGCAGCCGTACCCGCCGCCGCAGGCTCCACCGCAGGGGCCTTTCTACCCGCCGCCGCAGCAGCCGCCGCCTCCGGGGTACCAGGGCTACTTTAACAACGGCCAGCAGCCCTACGGGTACCCGCCGCCGCGCGATGGACATCACCATCACGGCCACCATCACCACCATGACGACCACCATCACCATCACCACCACCACCACCACGAAGACGATGACTGCTGCCTTGGCTTCCTGAAAGGATGGCTGGCTGCTCTTTGCTGCTGCTGCATGCTGGATGAGTGTTGCTGCTGCTTCTGA
+>Sb03g038960.3
+GGGGTCGCCGGCCGGGCGGTGGGGTGGGCGAATCGATTCTGCGTGCGCGGCTGGGCAAGCCGATAAAAGGGGGCGCCTTTGGACTGGTGAGGAAAGCGAGAGAAAAAAGGTTTTGGGCTGCTTGCCCTTGCCCTTCCACTTCCCATCCTCGCCTTCTACTTTCCTTTTCGCCCCCGGTTTATTTTTTTTTTCTTCGTCCTGGATGCGTTGGTCGCGTGTTTGATCTGACTATAAGCCGCCGTAGAGGAGGAGGAGGAGGAGGTGATATATGTTCGTGCGGTGGGCGGTGGCTTCCGAGGGCGACCAGAGTTAGGTCCTTGGCGCCTTCAGTGCGGTGAGGAAGCTAGACATTGAAGGCGCAGTAAAAGAACCCAAAGAATGGGTAAGAAAGGAAAGTGGTTTAGTGCGGTGAAGAAAGTCTTCAGCTCCTCTGGTACAGATGGAAAGGAAGCAAAGGCTGAGAAAGCAGACAAGTCAAAATCCAAGAGGAGA [...]
+>Sb08g000210.1
+ACAGTAGCTGGGTTTCACTTCACCATCGGGATCGACCTAGCCTCGGATCGGAGTTAACAATATTCTTCATATAATAATTTTGGTGGCAAAACATGGGAGGAGGAAAGGACAACCATCATGTTGACAAAGGATGCTATCCCCCTATTGGCTATCCTCCAGTACATTCAACTGGATCATATGTATCTGCACCTCCAATTGCATATCCATATCCATATGCACAACATGGATCTATATGTCCACCATCAATTGGATCATATCCATATCCTTCACCTATGTACTCTTCGCACAATGGTTACCCACCATCTGGATATCCATCATACAATCAAAGTGCTTACCCATCGATGGGTGGCTATCCTGGTGCTAGTTTATATGCTACTCAACATCATGGTCATGGATCTAACATGGGGACAACACTTGTCGGTGGAGCAGCAGCCGCTGCTGCCGCTGCCTATGGTGTGCATCACTTAACCCATGGCCATCACCCTCATGGTC [...]
+>Sb04g009860.1
+ATGGAGCCGCTGTGTCCCAGTGCCAAGAGGAGGAGATCCGAGGACCTCGCAGCCGGTGAGCCCCCGCCACGGGCGACGGAAGCCACGGAGGCGGCCAATCTCGCACCTACAACCCACAGCATGGAATCGCCGCCGCCGCCTGATGCTGGTGGCGGCGGTGGCGTCGACCGCATCAGCGATCTCCCCGACGCCGTCCTCGTGGACGGCGCAGACCTCGCCTCCATGACGAGAAAATGGCAATTCTGCCATTATGAAAACTGGGCTTCGCAATTTTGCCATCGCGCAAACGCGTCCACCTGCGCGCCGTCCGCGTCGTTCCGCGCCACCACCTCTCGCAGCTCTGCGGCACGGCGCCTCGACACAGACCTCTGGACCAAGCCCAAGGACGATAAGATGTTTACCGCCACCAACGAGGCCCTCGCCAACGCGGTCTCCCTCATCCTCTCCGCCCACCCGGGCCCCGGCCGCCGCTTGTGCGTCCCGCCGCACTAT [...]
+>Sb01g009740.1
+ATGGCGTACATGTGCGCCGACAGCGGCAACCTCATGGCCATCGCGCAGCAGGTGATTCAGCAGCAGCAGCAACAGCAGCAGCACCAGAGGCACCACCTGCCGCCGCCGCCGATGCCGCTCCCGCTCCCGCCGCGCCAGGCGCCGCCGATGCCGCCGTCCCCGGCGCCCCCGCACGGCCAGATCCCGGCGGCATCCCTCCCCTACGGCGGCGGCGCGTGGCCCCAGGCGGACCATTTCTTCCCCGACGCCTTCGTCGGCACGTCCGCGGCCGACGCGGTGTTCTCGGACCTCGCCGGCGCCGCGGACTTCGACTCCGATGTGTGGATGGACAGCCTCATCGGGGACGCACCGGTCTTCGCGGACTCCGACCTCGAGCGCCTCATCTTCACCACCCCGCCGCCGCCCGTCGACGCGGCGGCCCAGCCAGAGGCCGCCACTCCGGCGTCGCTTCCCCAGCCTGCCGCCGTCGCTACCCCGGCAGCGTGTTCCTCT [...]
+>Sb04g037280.1
+AAGCAATCAATTCTCCGGAACAGCCTCCCCCGCAACGACTTCCGCTTCCGCTTCCTTGGATAACCACACCACCTGCCCCGACCGCCCTCAGCCATGGAGAAGGCGATCGATCGGCAGCGGGTCCTCCTGGCGCACCTCCTCCCCTCCGCCTCCGCCTCCGCCTCCTCCGCGCAGCCTCAGCTTGCGGCGTCGGCGTGCGCGGCCGGGGACAGCGCCGCCTACCAGAGGACCTCCTCCTTCGGGGACGATGTCGTCGTCGTCGCTGCGTACCGGACGCCCATATGCAAGGCCAAGCGAGGAGGCTTCAAGGACACCTACCCAGAGGACCTCCTCACTGTTGTTCTCAAGGCTGTTCTGGACAACACTAGAATCAATCCAGCTGACATTGGTGACATTGTGGTTGGTACGGTGCTTGGTCCTGGTTCCCAGCGTGCAATCGAGTGCAGGACGGCTGCGTTGTTTGCTGGATTCCCTGAAACCGTTCCTGTTAGA [...]
+>Sb01g029280.1
+AACACAAGCAGCTAGCCAGCAAACGCACATACTACAAGGTTTCTTGTTAGCTTCTGCCGCTGGTACTACATTGTGTGACGCGATCGAGCTGAGATAATGGCCGCCGCCGGAGCAGCTGCACTTCTTGCCCTCCTCGCCGCGCTTGTTGTCGTCGTCACGCATTCCGGCGCAAGCGCACTGCCGGCGGTGGTGAACAACCACACCTCCGCCGCCCGCCAACTCCGCGGTCGTTCCGGCGGCTGGCAGATGGCCAAGGCCACCTGGTACGGCGCGCCCTACGGCGCCGGCCCCGACGACAACGGCGGCGCGTGCGGGTTCAAGAACACCAACCAGTACCCGTTCATGTCCATGACGTCGTGCGGCAACCAGCCCTTGTTCCAGGACGGCCAGGGCTGCGGCGCATGCTACCAGATCAGGTGCACCGCTAAAAACAACCCAGCCTGCTCCGGCGAGGTGAAGACGGTGATGATCACGGACATGAACTACTACCCG [...]
+>Sb03g036100.1
+ATGGATCCGTTCTACTTCGGCCCGGACCAGCAGCTGGACGCCGCCGCTGCCGCCGTCGTCGACGAGGACTACTACCTGCAGGCGAGCCTAGGCCTGGTCCTCTCGCCGCCGGCGCCGCCACCACCAGCGGCGTTGTCCTTGCCAGGCAGCGCATTTGAGGCGTACCACCAGCAGCGGCGTGTGCCGGCGTTGCTGGAGCACTACTCCCTGACGATGAGTGCGCGCGGCCGGCGGTACAGTGGAGAGCAGAACTTGCACCGGAGGATGTTCAGTTACCTGAGACGCGTCGTCGCTCATGGTCATGGCGCCGCCGCGGCCTCCACGGGGGGCGCCGACGTGGTGCCCCCAGCGTTCCCGGCGCCCGCGGACGAGACGACGACCACCGGTGGGGTTGGGCCGTCGTCGCAGGCGCCGCGAAGCTCGCGGTTCCGGCACATCATGCGCGAGCGGCTGCGGCGGGAGCGCCTCAGCCAGGGATTCGCCGACCTCCAC [...]
+>Sb06g021050.1
+ATGCGTGCTTGCATACCATCCCTTGGTGGAGATCAATTCAGCAATAGTGACCCAAAGAAATCACAGCTCCAGAGTATGTTCTTGACCAGGCTTAAGTTTACAAACTCTCTTGGAGCTATTATTGGATTGGCCTTCTTAGTGTGGATTGAGAATAACTTGGGTTGGGACATCGGATTTATGATGTGTGCCCTTATTGTTCTTGTTGGGCTGCTTGTGGCAGCCAGTGGATATCCTTTCTATCGCATGCAGAAGCCTAGTGGAAGTCCTCTAACTAGAACATTGCAGGTTCTTATCATTTCATCAAATAAGAAGGCAGTTGCCAATGTAGATGTCATTGAGCTACAAGAAACCAATACACAAGATCATGTTTTCAAATTTGGAACCAATCAAGCTGATGAAACCAAGGTCCTCATTCAGATGCTTCCAGTTTTCATTAGTTGCTTTCTTGTCTACTTGCCATTCACGCTGCTAATGACATTATCCATACAAGTT [...]
+>Sb01g031380.1
+ATGCCCATCGTTCTCGCGTTCCTCCTCGTCGTGGCTGCAGCATGCCAGCCGGCAGCCTCCGCATCGTCGTCGGCGCCGGCGAGTAGTCTTGCTCTACCAGCACCAGCGCCAGCGCCGGTGCCGGACGCCAGCGGCCACGGAAGCCGCAGAGCGGCGCAGGCGGAGGCGGAGGCGGCGGAGTTCGTGCGCGCCAGCTGCGGGCGCACGCTGTACCCGCGGCTCTGCTACGCGGGGCTGGCCCCGTACGCGGCCTCCGTCCGCTCCAGCCACGCGCGCCTCGCGCTCGCCTCCGCCAACCTCACGCTGGCCGCCCTCGACGCGCTGGCCGCGCGCATACCGTCTCCCTCTCCCGGCTCCGGCTCCGGCTCCGGCGCGCTCAGCGACTGCGCGGACGCCGTGGCGTCGGCGGAGGACCAGGCGGCGCGCGCGGCCGAGCGGCTGGGCGGCGTCGAGCAGGCCGTCGGCGGGCGGCCCGAGCTGCTCTGGCGCGTG [...]
+>Sb05g009350.1
+AGGCATTCTCGCTTAGTCCTAGACCACTATATATACAGTACTCGTCCCCGCTTTCTTCCTCGCCAACTTCTCATCATCAGCCAAGTGTAAAGGGTGCGAAGAAACAGCAGCAAAAGGATTCCATTCTCGTGTTCTTGGAGTGGTCCATCGAGCTTCGTCAGGGAGAGCTATTGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGCAAGCAATGGCGACCGCAGGGAAAGTGATCAAGTGCAAAGCCGCCGTGGCGTGGGAGGCCAGCAAGCCGCTGTCGATCGAGGAGGTGGAGGTGGCGCCGCCGCAGGCCATGGAGGTGCGCGTCAAGATCCTCTACACCGCGCTCTGCCACACCGACGTCTACTTCTGGGAGGCCAAGGGCCAAACTCCGGTGTTCCCCAGGATCTTAGGACACGAAGCGGGAGGCATCGTGGAGAGCGTTGGGGAGGGTGTGACCGAGCTCGCACCAGGCGACCATGTCCTCCCGGT [...]
+>Sb01g009390.1
+AGCAGGGCACCACTCGCCCGCTCCAGCAGTCCAGCTCCTCCGACGCGCGACCAGACGCTCGCCCTCGCCAGTCCCAGTCGCCATACCCAGAGGCCCAGACCCCGTCCGGCGCCCGCCGATTCGACGCGAGTACGCGACGCGCCGCGCCGGCCGCCGGCGGCTTCCCCAGATCCACGCGCCGCTCGGCGACCCGGCCGCTCGGAGCTCGCTCCGGCCGTCCGCCCGCAGCCCGCCAAAAATCATCCTCGGATCGGAATCAGCGGAGCGACGGCGGAGATGGGCGCGGATTGCCGGTACGAGCTGGCGCAGGCGGCGTACGTCAAGCTGGCGCTGCACGCACTGAAGCACCCAGCGACCGCCGTCAACGGCCTCCTCGTCGGCCGCCTCGTCGAGCCTTCGTCCTCACCGGCCGTCGTCTCGGTCATCGACGCCGTGCCGCTGTCTCACCACCCGCACCACCTGCCGCTGCTCCCCACGCTCGAGCTCGCGCTC [...]
+>Sb03g035580.1
+ATGAGGCCTGGAGCAGCAAGGGGGGCCGACGAGAACACAAGCCCTAAGCATCTCGTGGCGGTGGGGGCCGCGTCCTCGCAGAGGAAGAAGGTGCTCGGGGAGAGGAACGACGGCGGCGTCGGGGTCATGAAGGGCGCCACAGCGCCGCCAGTGCAGCAGCCAAAGCCCGCGCCGAGCCCCCCGACGCTCGCGGGCCACGGCGCGGGGCCGTACGACCCGAAGACGAACTACACCATGCAGCGGCCGACGTTCCGGTGCTACGACCCCGAACGGCGCCGCGAGATCCTCCTCCGGGTGTCACGCGCGGCAGACGTGATGCACGACGACTGCTCCAGCACGACCTCGGGTACTGCGGCCTCGGAGGAGGACGGTGATTCCTTGGCCTCGGACGCGGCGGCAGCGTCGCCTATCTCGTCGGCGCCAAGGAGCGACTCCGAGGCCGAGCTTGACGACGGCGAGGAGGAGGAGGAGGAGGAGGAGGTAGTCCCAGCG [...]
+>Sb03g028240.1
+ATGCAGAAACAGTTCACAAATTTCACGCTTAAGACCTTCCTCTTCAGCAAAAGCAGTAGTGAAGAAATCATTGATGAGTTTGAGTTGCTAACGCGTGATGCTAAACGCGTGCAGCAGGATACATTGAGAAAGATTCTTGAACTGAATGGTGATGCTGAGTATCTGAATCGCTTCAATCTTGGAAGGAGAACAGATTCAAAGAGCTTTAAATCCTGCATTCCTCTATGTGTGCATAGTGACATAGAGTCCTACATCCAGAGGATAGCCGATGGAGATGACTCACTGGTGCTAACTGGGAAGCCCATCACTTCCCTCTCCGTAAGTTCTGGTACGACGCAGGGAAAACCCAAGTTTTTGCCATTCAATGATGAATTGCTTGAGAGTACAGTTCAAATATTCCGAACCTCATATGCTTTTAGAAATCGCGTTATCATCCAGAGTTCCAAAATAATGTTTGAGCATACTTGCAGTGAATATCCTATTGGCAATGGA [...]
+>Sb01g005820.2
+GTTTCAACAAAAAACCCCCCCACCCTATTATTCAAAAAAAATCCAGCCACCAATTCGAAACCCTAGATCTGTTTTGGTTCCTCGAATCGGGAAGCCGCCGCATCGCCGGAGCCTCTACCGCACGCCTCTTGCCGCCTCCCCTCCTCTCTTCTCGACGGCCGGCAGCTGCCTACTTCTCCGTGGGTCGCCATGTCCGCGGCCATGTCTGCCGCCGCCGCCTCTGCCGCCGCCTCCCCCCCCAAGTGGGTGATGCTGGAGCGCTTCGTCTTCCGCATGGACGAGGCCTTCCCGGACGAGGACAAGTTGCCCATCAGGGCTTCCGGCATCACCCGGTGGGAGGCCCCCTTCGACATCGCCTTCGAGCTCGCCGAGCCCCCGGCGATCTCCCGCCTCTACGCGCGGCTGCCGGGCTTTCCGGATCCCTTAAAACAGGTGCCCTTAGCCATCCTGGCGAGCCACCAACATCTCGTCCTGTTTCGCGTCTGTATCGAG [...]
+>Sb01g048650.1
+ATGAGTGCTGGTGGTGCTTTTGGTGGAAATAGGGGGGTGAGGCCTGTACCTCCTGAAAAAGGTGTGTTCCCATTGGATCACTTACATGAGTGTGACTTGGAGAAGAAAGACTATCTTGCCTGCCTGAAATCTACAGGGTTCCAATCTGAAAAATGTCGGCAGTTCTCAAAGAAGTATCTGGAATGTCGAATGGAGAGAAACCTGATGGCGAAGCAAGACATGTCAGAGCTTGGGTTCAGAAATATGGACGAAGCGGATACATCTCATGACATGAACAGGCAACTGGAGAGCCCTCCTAATGAGCAAAAGGAGAACAAAATAGCCGTTTGATTTTGATGTAGCTTTTGTATGTTTCTGCATCCAGGAGATCTGTATGAGAACGAATAAATAATGAAAACGGTACTAATTAGTAACTAATGCTGAGACTT
+>Sb09g023770.1
+ATGGCGACGACGACGCGCGCTGCCGCCGCCGCCGGCGTCCTGCTGCTGGTGCTGTCGGCGCTGGCCTTGGTGGCGCGGGCCGAGGACCCGTACCTGTTCTTCGAGTGGAAGGTGACGTACGGGACCAAGTCCCTGCTGGGCGTGCCCCAGAAGGTCATCCTCATCAACGGCGAGTTCCCCGGACCCAGGATCAACTGCACCTCCAACAACAACATCGTCATCAACGTCTTCAACCAGCTCGACCACCCGCTCCTCTTCACCTGGAACGGGATGCAGCACCGGAAGAACTCGTGGATGGACGGGATGCCAGGGACGCAGTGCCCGATCTTGCCCAACACCAACTTCATGTACAAGTGGCAGCCCAAGGACCAGATCGGCAGCTTCTACTACTTCCCGTCCATGGGCATGCAGCGTGCGGTGGGCGGCTACGGCGGCATCAGCGTGTACAGCCGCCTCCTCATCCCGGTCCCCTTCGACCAGCCGCCGCCGGAG [...]
+>Sb10g028790.1
+ATGCCGACGCTGAACCTGCGCACCAACGTGCCGGTGGACGCGGTGGTAGCCGCCGACATCCTCAAGGACTGCTCCAAGGCCGTCGCCAGGATCATCGGCAAGCCCGAATCCTACGTCATGGTGTCGATCAACGGGTCGGTGCCGATGTCGTTCGCGGGCAGCGAAGAGCCGGCGGCGTACGGCGAGCTCGTGTCCATCGGTGGCATCGGCCCCGGCGTCAATGGGAAGCTGAGCGCCGCCGTCGCTGAGGTCCTCGAGACCAAGCTCTCCGTCAGCAGGTCCAGATTCTACATCAAATTCGATGACGTGCAGAGATCCAACTTTGGCTTCAACGGATCCACATTCTGA
+>Sb03g037700.1
+ATGCAGATTGATTCCCTCGAGGAGCAGCCGATGATGCACGGCGGGAACGGCCACGGCCACGGCCGTGTCCACCCGGCGTCCTCCAGCTCCGACTTCTCCGGCGAGATGAACCAGTCCGTGTCCGACCCCTCCTCCAGCCCGCTCTACAGCTTCCACTTCGAGAAGCCCGTCCCGCAGCATCATCCGCCGCCGGGCGCGTACGTGGTGCAGGTGCCCAAGGACAAGGTCTTCCGCGTCCCGCCGCCCGAGAACGCGCGCCTCTTCGACCACTACACCCGCCGCGCCAAGCGCCGCCGCGGCCGCTCCTGCGCCCGCGTCTGCGCGTGCATGCTGGCCGGGGCCGTCGCCCTCGCCGTCCTCGCCGCGGCCCTCGCCGGCGTCGCGTACCTCGTCCTCAGGCCGAAGCAGCCGGCGTACACGGTCCAGGCGCTCGCCGTGTCCGGCCTCGCCGGGCTCGGCAACGCCTCCTCCTCCTCCTCCTCCTCCTCCCCG [...]
+>Sb02g041790.1
+ATGCCGGGCAACGGCGGCGTGCTGCGGCGGTGGCTTGTTAACTGCGTGCGCCCGGCGGCGCGGCGCGAGGCGCGACTGGTGTTGTGGGGCGGGGCCACGCGGGCCGCGAAGCCCGGGCAGGCGGCGGGGGAAGTGATGGCGGAACACCCGGGCCACGTCGTGTGCCGCGCCGACGGTTTCCGCGTCGGCCGCCCCGCGCCGGTGCTCGGCGTCGGGGACCGCCTCGAGCCAGGCCGCACGTACCTCGTTGTCCCCGTCGACCGCCTGCCCTGCGGCGGCGACGGGGTCGTCACCGCGGCATCGCTCGCGGCGCTCTCGTCGTCGCACTCACGCGGCGGCAAGGCGGCGACGTCGCTGGCGGCAGGACGGAAGAGCCCGTTCGAGTACGCCAAGGACGGCGACGGGCGCACCGTGATCAGGGTCGTGGAGGAGTTCATCGTCAGGGCCGTAGCGGGTGACGGCGGTGGGGGCCGCGGCGACGGCGACGGCGGC [...]
+>Sb03g000782.1
+GGATCAGTTCGTCGAAATAAGGTGGCCTCATTTGTGATGGAAGGGCCACAAGGATCAAGCAATGTGACAAAACACAATAAAAGAAAGTCTCCTGTGCAGAGATGGAGGCCGGCTTCAACAGAAGCAGTTCCCCAGAAAGATGACATTACAGAGACATCAAATTCTGAAAGCAAGAAAATTATAGAGGTTTGCATAGCTTCTAGTGAGAGTTTGGCATCAGATGGAACAACCAATGTTGTTGTTGAAGTTACCACCAACGATGCTTCATCGTCAAAATATAACTTAAGTTTGGAATACAGTTCAACTAAAGTAGTTATAGAAGACAATGTGGAGGTATCTGGCTTCAATAAGGATCTAGTTGTATCCAATGTCTCCGGGACGTATTCCTCCTCTATTGAGGTAGATGCTCCTTTGATACGCTTTGTGAAAGGAAAGGGTGGGTCTACGCAGAAGCAGATTGAAGAGGGTGCTGGAGTTAAAATTATCTTCCCA [...]
+>Sb10g012770.1
+TTCCGTGCACGCACACGGCATACGACAGCGCCATCCCTCCATAAAAGGATCCGGCGCAGCGCCACCGCCGGATCCGACGGCCTCCGAGGCGGGGCCGAACCGCCGAGGTAGCCAAGACAACACGAGCAACGAAACGCCATCCCTGCCGGATTAGTGAGTCTGCTCTAGTCCCGACTCTGCTCCAGCTCCGGGCCGCCGCCGAGATGGGCGCAGATGGCGGGCTGAACCGGGCGGCGGAGAAGCCCCGGGATGGGGAGGGCGGGGAAGCGAGGGTGTTCCGGTGCACGGACTACTCGCTGCCGCGGACGACGCTGGCGCTGACGCTCTGGCTGGGCGGCATCCACTTCAACGTCCTTCTTGTTCTTGCGTCGCTCTTCCTCCTCTCCCGCCGCGCCGCTGCCATAGTGGTGGCGTTCCAGCTCTTCTTCATGTTCGCGCCCGTCAACGACAGGGACAAATGGGGCCGGAGCGTCGCCAGGTTCATATGCAGAC [...]
+>Sb01g033440.1
+ATGGACTTCTCCGCGGGCGGGAGCGGGAGCGGCGGCGGCGGCGGAGGCGGAGACTCCGGCGACGGCCAGCCGCAGGCGGAGCGCTGGCTGGAGATCGCCGAGAAGCTCCTCTCGGCGCGCGACCTCGTCGGCTGCAAGCGCTTCGCGGAGCGGGCGGTGGAGGCGGACCCGCTCCTCCCGGGCGCCGACGAGCTCCTCGCCGTCGCCGACGTCCTCCTCGCCTCCCAGTTCATGGCCCCCTCGGGCCACCCGGACCCGCTCGCCATCCTCCAGCTGCCGCCCGGGGCCATCCCCGACCACGCTACGGTGACCCGCGCCTTCCGCCGCCTCGCGCTCCTCCTCGGGCAACAGAACCCGCACCCGGGCGCCGAGATGGCGCTCCGCCTCGTCAACGACGCCTACGCCGTCCTCTCCGATCCGTCCCGCCGGGCCCCGCAGTACGCCAATCCCGCCACTGGTATCCCTTCCTCCTCCCAGTACGCCGCCGCGCCC [...]
+>Sb09g017210.1
+ATGGACGGTCACGCGGCCGTCCATGAGCCGCTGCTCCCGTCGCCGCCGCTGCAGGGCAAGGCGGCGTCGGCGGAGTCGAAGCGGCTGATGCGGCTGGCGGGGCCGATCGTCGCCAGCTGCGTGCTGCAGAACGTCGTCAACATGGCCTCCGTCATGTTCGTTGGCCACCTCGGCGAGCTCCCCCTCGCCGGCGCTTCCCTCGCCACCTCCCTCGCCAATGTCACGGGCTACAGCCTTCTCACCGGCATGGCGACGGCGCTGGACACGCTGTGCGGCCAGGCGTTCGGCGCGCGGCAGCACCGCCTCCTCGGCGTCTACAAGCAGCGCGCGATGGTCGTGCTCGGGCTCGCCTGCGTCCCCATCGCGCTCGTCTGGGCGTGCGCCGGCCGGATCCTGCTCTTCCTCGGCCAGGACCCGGAGATCGCCGCGGAGGCCGGCGCGTACGCGCGCTGGCTCATCCCGTCGCTCGCCGCCTACGTGCCGCTGCAGTGC [...]
+>Sb02g039400.1
+ATGATGGAGGAGGGGGCGCCCGATCTGCGAGACCTCGTGCGCCTGCCGGATGTTCTCGTGGTATGCTCATCTACTGGATGGACAGATGAAAAGCACATGCTTTATCTTCAATTATTGGAAGAAACATTTGTGCGCCAATTACATGAAAGTGGTTGCAGTTTTAAGGGACTGTTCAATCGCTCTCCAAGATATTGTAGGCGTATGATATCATCTAAGGAAATTGTTAAATACACTACAGCTGATCAGCAGGGATGTTGTGCCATAGTTGAGGGTGACAAAGTCAAGTCCTGCATAAAGGCTGAGAATGTTGAGTCACCTTCCTGTTGTGGAAATCAGCAAGATGAAAAAGTTCGTTCCATGGAAGATAATGCATCAACCACTGAGCCTGTGGAAGAAGCCACTTCCCATGCAAGGGCAGCAAGCCCAGGACAAGCTTCCACGTGCTATGTTGGCAAACACAGACATTCACCTTCCAGAAGCGCAGAGGGGTCG [...]
+>Sb04g021170.2
+CACGCTGCCCCTGCCTCCGCGTCGGCGTCTCCTCCCTGCCTGAGGCCCCGAATCCATCTCCCCCACCAAACCGGAGCATTCCATCCTCGGAGGCCGGACCCGGCGAGAAGCGAGCGACTGCAGCCAGCTCACGTCCCCTCTCGATCCACCATGCTCAGGGTCGCGGGCAGGCGCCTCTCGTCCGCTCTCTCCTGGCGCCCCGCCACCGCCGCCGCCGGCACCCGGGGCCCTCTCGCCGGCACGCTACCCGGCCGCGACGACGACGACACGCGCGACCGCAGGGCGCGTTTCGCCATCGACTCTCCCTTCTTCGCCGCCGCCAGAGCGGAAACTCTTGTTCCAAGGAACCAGGATGTGGGCTTAGCTGAGCTCCCACCAACTGTGGCCGCTGTGAAGAATCCTAGTGGAAAAATCGTGTATGATGAGTCTAACCATGAGCGCTACCCGCCTGGGGACCCCAGCAAGCGTGCATTTGCCTACTTTGTGCTGAGT [...]
+>Sb02g029670.1
+GGTCAGCTCATCGCGCACGCGTCCAGGCTCCAACAGCGCGACGCAACCGACCCCACCGCCCCCTTTACGCGAAGCTTCACCGCGGAATCTAAAACTCGCCGCTGATCCGCGAGTCGTCCTCTTCGTCTTCGCTCGGCGATCAATCGAAGAGTGGGGAGGGAGAGATGGCGGAGAATCCGCAGCTGTTTGGGAACGGGATGCCGGTGCCGTTCTACGGCGAGATGTTCGTCCTCGCCCGGGACGGCGTCGAGTTCCACGTCGACAAGATCCCGTCAGCTCCTGGCGGTCATGTGAAAACAAAAGGCACAATTTACCTGTCTAATATAAGGATGGTGTTTGTTGCCAACAAGCCTGTTGGCAACTTCTTTGCTTTTGATATGCCACTGTTGTTTGTGCACGGTGAGAAGTTCAACCAGCCCATATTTCACTGCAACAACATCTCTGGATTCGTTGAACCAGTTGTTCCAGACAATCAGAACAGGGCCCTGTACT [...]
+>Sb04g002500.1
+CAAAAAGGGAAAAGAAGGGTTCGGGGGAACGCCGCTCGAATCCGTAACCCTAAACCTCCCCAAAACCCTCCTCGCCTCCCTCCCCTCCATCCAATCCTCGAGACGAGCGCGCGTGCGAGGAGGAACCCCACGGAGATGGCGGCGGTGGCAAGGGTTTTCCGCGGGTCCCTCTTCCTCATGTCCCCGGCGGCGGGCACGGGCAAGGCGGCGGGAGCCAAGGCGGCGGCGGCGGCGGCGACCAAGAAGCGGACCAAGGCGCCGTCCACGGAGCCGAGGGTGCCGACCGGGATCTCGAAGCCGATACCGGTGTCCGCTGAGTTGAGCAGGTTCGCCGGCGGCGCGCCCGAGGTCGCGCGCTCCCAGGCCGTGAAGCTCATCTGGGCCCACATCAAGGCTCACGGCCTGCAGGACCCAGCCAAGAAAACTGAGATCAACTGTGATGCAACACTCAAAAGCTTGTTTGGTGGGAGGGACAGGATTGGAATGCTGGAG [...]
+>Sb02g039750.1
+GGAAGCAGGGCTAGACGCGGAGCGGCGAGCATGAGGGGCGGCGGCGGCGGGATGATGGACGATGAAGAGCGGGTGGGCCACGCGGAGATCCCGACCAGCTTCGGCCCGGAGCTGCGCGCCTGCCTCCGATGCCGCCTCGTCAAGACCTACGACCAGTTCAGGCAGAACGGCTGCGAGAACTGCCCGTTCCTGGAGATGGAGAGGGAGCACGACAACGTCGTCAACTGCACCACCCCTAACTTCACCGGAATTATCTCTCTGATGGATCCCAGCAGGAGTTGGGCAGCTCGTTGGTTGAGAATTGGCAGGTTCATTCCGGGGTGCTATACACTTGCTGTCTCGGAGGAGCTTCCAGAAGAGTATCAGGGGATTTGTCAAGAGAACAATGTTCAGTATGTGCCGCCCAAGCGTGTCTAAGGCGAGATGGCCATGATGTATTGGTCCTGAAGCAGTATAGACAATTAGGTAGAAGTGCCTGTGCTTGTTGTCAAG [...]
+>Sb06g018390.1
+ATGGCCGCGCTCGGTTCTTCTATTACCTCCAGAGGCTTGGCACTTCATACATCTGTGGTTTTTCATCGTCACCACGGGAATCCAGTGATCTCCACATCTTCTCATCGCCAGCGAAATCTTACTGGTTTATCGATGAATTCTTCAGGCATGAACAATGCCTTCCCTATCAGAGGAACTACACGAATTCCTGCAGTTGGTCCTGGCCCTGCCAATCCGGCAGGAGGAAACCTCCCAATAGCCAGCATGCCTCCATGGGCCAAGTGGTTGGTTGGTGCTGTCATAGTTGCGATACCTATCTACAGGAGGTTCAGAACATTAGAAGATAAGATAGAGAAGACGGCAGAGGTGGCGATCGAGGTGATCGACACGGTGGCGGAGGCGACGGAGAAGGTCGCCGGCGAGGTCGCCGACGCATTCCCCGGCAACGAAAATCTCAAGGAAGCAGCCTCGAGGATTAAGACGGTCACGGATGCGATCGAGGAAGACGCCGAG [...]
+>Sb01g048700.1
+ACGAACTCCACAGCCCGCGCGCACTCACAGGAGAGGAGACAGGACTCGGTGCGCGCCGTCCCCGTGCGTGAGCGTGGCGCCGTCCACCAAACGCTTCCACCACCCGCCAGTTTCCCTTCCGTCCGCTTCCCGCTCGGCCGTTCCTCCTCCCCGCCACGGCGCGCGCCCCGGCAGCGGGAGGCGGGGCACTCTGCGCTCGCGCGATGGCGCCGGACCCGTGCGCCGACCTCGCGGTGACGCCCAAGACGGCCGCCAAGGACGAGGCGTCCTGCTCCATGGCCACGCCGCCCAAGGTCACTCCCGACGAGGTGCGCGCGGTAGCGCAAAAGTTCGCGAACCAGCCTATCCAGGAGACGGAGCCCGGCGTCTGGGCCGTCCTCACCGCCATCTCCAAGAAGGCCCGCCTCCGGCCCCAGGGAATGAACATTCTTTTGAGTGCTGATGAGCACTGCCTAGGACGCACTGTTGAGGAGCGGTTTCAGATTTTTGCCC [...]
+>Sb09g025360.2
+GAGACCCAGCTCAGGCTCGCAGCTCGACAGCGGCCTAAGCTCGCCCGCGCCTCCCCGTTGTCCGCCCTAACCCCCGCCGTCGTTGCGTCATCTCCGGCCGCTCCCCCGCTCCCACCTCCATGGCGTCGAAGCAGGCGGTGGCGAGCGAAGCCCTTGCGGCCCAAATCTACGGCATGTCTCGCTCCGAGATGTACGACATGATGTCCAAGATGAAGACCATGATCGACCACGACCAGGAGACGGTGCGCCGCATGCTCGTCAACAACCCGGATGTCACCCGAGCGCTCTTTCGGGCGCAAGTGGTCCTTGGAATGGTGAAAACACCAAAAACTGCACAATCTTCAGACATGGTCCCACCCACAGCAGTGGCAACAGCACCTCCCTCAGTCAAAACTACTGCACCAGATCATGTCAGCTTGCCTCCGCCCCCATTACCTGCTAACCAGCAGAGTGTTGCTCAACTTTCTGCCCCGTTTCCATCTGGCTTGTCTA [...]
+>Sb01g049670.1
+CTGTCCTCTCCCTGTGCAAGCCGTCGCTAGCGCCTGCCGCCGGCGAAGCTTCTGCGGGTCCTCGTCGTCGGCCAGGTGCTGGATCCGTGGCAGCGGCGGCCATGGACAAGAGCATGCTCGGCGACCTGGACGGCCTCCCCGAGGAGGACAAGATGCGGATGGCCGGCATGATCGACCAGCTCCAGATCCGCGACAGTCTAAGAATGTACAATTCCCTGGTGGAGAGGTGCTTCACAGACTGTGTGGACACATTCCGCCGCAAGACCCTGGACAAGCAAGAGGAGTCATGCGTCCGCCGCTGCGCAGAGAAGTTCCTGAAGCACTCCATGAGGGTTGGCATGAGATTCGCCGAGCTTAACCAGGGTGTGGCCACGCCTGACTAATAGTCCCATGCTGGTTTCATTGCACCTGCCAAGTTTCTAACCTTGGGGATTTTGTTAGCACAGATTTGTAATCCAAAAATGATTTCGGCACTTCACTACCTGAGATATG [...]
+>Sb07g021490.1
+CCGTTCCGGCGTTCCCCAATCCGTACCAAAACCAAATCCAAGCCTCGGCGGGCCGCCATGGCGCCGCCGCCGGATCTAGTAGACGACGCCACCGCCGAGATCCTCCTCCGCTTCCCACCGGATGACCCAGCGTGCCTCGTGCGCGCCTCCGTCGTCTGCAAGGCCTGGCGCGAGCTCCTCTCTAGCCCCGCCTTCCTCCGCCGCTACCGCGCGTTCCACGGCGCGCCGCCCCTGCTTGGCTTCCTCCACAACATCTACGACGAAGGCCCATGCGCTCGATTCGTCGCCGTCGCCGCCGCCGACGCCACCGCCACCACCTTCCCCTTCTCTGGACCGGCGTTCGACCGCTTCGGTTGGTGGTTCGTCGAGTGCCGCCACGGGCGCGCGCTGCTCCAAACTTTCGAGCGGCATGCGCCCGCGCGCCTCGTCGTCTGGGATCCCATCACCGGCGACCAGCAGTACCTACCAATGCCCGTCTCTGGGCACCCTTAC [...]
+>Sb03g045360.1
+GGAAGAGAGAGAGCCACCACCAGCAGCTGGGCCGACCGCACCCACCCACTCAGCGGCGGCAATGGCGGGGCGCCCCCTCACCCCTCGCTCGTCGGCGGCGGCCGGCCGGTATGCGTGAGATCGCGGCGCCGGATGGGGAAGGACGCCGGCGAGGCGCAGCAGCCGCCGGACGGGGCGGGCGGCGGCGCAGGCGGAGGCGCAGGAGGAAGCAGGGCCGGTAGCGCCCGCCGCTTCTGCTGCTGCGGAGGCGGAGGAGGAGCGGCGGCGAGGGTGGTTCGGCTGCAATGCGTGGCGGCGCTCGTGCTCGGGGTGGCCGTGCTGCTGTCGGCGCTCTTCTGGCTCCCGCCCTTCGCGGGGCGGGGCGGCGCCAAGGAGGGCCCGGATCCGGGCGACGAGTTCGGAGCTGCTATAGTGGCAAGCTTTAGGCTACACAAGACAGTTCCTGAGCTGAGTGGAAATAAATCCCAGCTTGAACTGGATATATATGAGGAA [...]
+>Sb05g008360.1
+ATGCCGCGCGCCGAGAGGCGTCGGCCTGCGCCGGTGACCCTGGCTTCGCGCCTCAGCGCGGCGGCCCCTGCAGGGGCCGCACGGCACGGCCGCATAGCACCCCTGCCCCGGAGTGACCGAGACACGGAGTCCCCAGTCTCGTACAGTCTCGCAGCAAGTCAAGTCAACGATTCACACGGGCATTATTGGAAGAGTTACAGTTGCTTCTGCGGATCAGCTTCTCCCATCCTCCCCCAAAACCTACAGCCCTTCGTCTCCCACTCACATCTCCAGGCTGTGTCCGATCACCAGTATTCTCCTGATCAATCTTCAGAATTTGATTGGCCCATGCGCTTCAAAATAATCTTGGGGATATGCAATGGGTTACATTTTCTGCATGAGGAGCGAAGTGAAGCCATAGTTCACTTGAATCTTAAACCTAGCAACATAATTTTGGGTGACGACATGGTGCCGAAAATTGCAGATTTTGGACTTTCAAGGTTGTTTGGTGAA [...]
diff --git a/test/data/sorghum_transcript.fa b/test/data/sorghum_transcript.fa
new file mode 100644
index 0000000..cff3e0d
--- /dev/null
+++ b/test/data/sorghum_transcript.fa
@@ -0,0 +1,4 @@
+>Sb02g000720.1a
+CCCCAACCCTCCTCTTCTCCCTCCCCTGACTGGAGAGAGAGAACCTGAACCTTCCCGAGAGGATAGATAGGGGGGACGGAAGGCACCCGCATCGAGGAAACCAAAAGAGAGGCAATCTCTAGAACCCTCTCTTCCACCTCCCTCTCTCCCTCCCGCGCCGATCCATTCCATTCCATTCCAACTCAATCCCCCCCCACCCAGCCCAAACAATGGCGTCGGACGGGAGCGGCGTGGTGACGGTGTACGGGAACAACGGCGCAGCCCTTCTGGAACCCTCAAAGCAGCCCAAGTCGGCGACTTTCTCCGTCAAGGTCGGCCTCGCGCAGATGCTCCGTGGCGGGGTCATCATGGACGTCGTCACCCCGGAACAAGCCCGCATCGCGGAGGAAGCCGGCGCCTGCGCCGTCATGGCGCTGGAGCGCGTCCCCGCCGACATCCGCTCGCAGGGCGGCGTGGCGCGGATGTCCGACCCGGGCCTCATCCGCGACATCA [...]
+>Sb02g000720.1b
+AGGCCGGGACCGGCAACATCGTCGAGGCCGTCAGGCATGTGCGGTCCGTCATGGGCGATGTCCGTGCGCTCCGGAACATGGATGATGATGAGGTGTTCGCGTATGCTAAGCGCATCGCCGCGCCGTATGATTTGGTGATGCAGACCAAGCAGCTGGGCCGCCTCCCTGTTGTGCAGTTCGCGGCCGGGGGTGTGGCCACGCCTGCTGATGCCGCGCTCATGATGCAGCTTGGGTGCGACGGCGTCTTCGTCGGCTCGGGAATCTTCAAGAGTGGCGACCCTGCTCGCCGCGCGCGTGCCATCGTTCAGGCTGTCACCCACTACAGCGACCCTACCATCCTCGCCGACGTCAGCGCCGGACTCGGGGAGGCCATGGTCGGCATCAACCTCAACGACCCTAAGGTCGAGCGATACGCCGCCAGATCCGAGTGAACAACCCTATCCGCTCCACCATCGTCATCTTCTCTCATATATTTGTATCACCCATCCATCC [...]
diff --git a/test/data/test.sf b/test/data/test.sf
new file mode 100644
index 0000000..fe8cb0c
--- /dev/null
+++ b/test/data/test.sf
@@ -0,0 +1,30 @@
+# salmon (alignment-based) v0.2.2
+# [ program ] => salmon 
+# [ command ] => quant 
+# [ libtype ] => { IU }
+# [ alignments ] => { /local_data/cmb211/salmon/SRR037735_1.fastq.SRR037735_2.fastq.transcripts.bam }
+# [ targets ] => { /local_data/cmb211/salmon/transcripts.fa }
+# [ threads ] => { 8 }
+# [ output ] => { rice-salmon }
+# [ sampleOut ] => { }
+# [ useFragLenDist ] => { }
+# [ sampleUnaligned ] => { }
+# Name	Length	TPM	NumReads
+scaffold1	1016	549.279	20690
+scaffold2	1439	598.782	31945
+scaffold3	783	408.072	11846
+scaffold4	893	441.382	14613
+scaffold5	622	494.487	11403
+scaffold6	2073	4.77214	366.764
+scaffold7	1291	4.288	205.236
+scaffold8	1355	17.9155	900
+scaffold9	258	15.891	152
+scaffold10	1934	104.823	7516
+scaffold11	1922	23.9916	1709.57
+scaffold12	1651	136.498	8355
+scaffold13	1834	360.757	24529.4
+scaffold14	580	6.13864	132
+scaffold15	1539	4.8197	275
+scaffold16	2302	26.1878	2235
+scaffold17	543	1.98695	40
+scaffold18	4121	25.4151	3883
diff --git a/test/data/test_contig_nc1.fa b/test/data/test_contig_nc1.fa
new file mode 100644
index 0000000..41ef661
--- /dev/null
+++ b/test/data/test_contig_nc1.fa
@@ -0,0 +1,2 @@
+>contig1
+TTTCAGTTGATGAAGAAAAAACTAGAGTGTGTGGATTGCATGAAATGGGCTGGGGCTTGTTGGAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGATAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGA
\ No newline at end of file
diff --git a/test/data/test_contig_nc2.fa b/test/data/test_contig_nc2.fa
new file mode 100644
index 0000000..21102ab
--- /dev/null
+++ b/test/data/test_contig_nc2.fa
@@ -0,0 +1,4 @@
+>contig1
+GTTGATGAAGAAAAAACTAGAGTGTGTGGATTGCATGAAATGGGCTGGGGCTTGTTGGAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGATAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGA
+>contig2
+TAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGATAAACACTTCAATTTGACTATGGACTCTGTGTATTGTAAAGAACATGATGACAGAATTGCTTCGAATCCGGTGGGTTTACAGTCATCCGGGTCGG
\ No newline at end of file
diff --git a/test/data/test_contig_nc3.fa b/test/data/test_contig_nc3.fa
new file mode 100644
index 0000000..7d02a43
--- /dev/null
+++ b/test/data/test_contig_nc3.fa
@@ -0,0 +1,6 @@
+>contig1
+TTTCAGTTGATGAAGAAAAAACTAGAGTGTGTGGATTGCATGAAATGGGCTGGGGCTTGTTGGAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGA
+>contig2
+TAAACACTTCAATTTGACTATGGACTCTGTGTATTGTAAAGAACATGATGACAGAATTGCTTCGAATCCGGTGGGTTTACAGTCATCCGGGTCGGGTCCT
+>contig3
+TGGGGCTTGTTGGAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGATAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGATAAACACTTCAATTTGACTATGGACTCTGTGTATTGTAAAGAACATGATG
diff --git a/test/data/test_contig_nc4.fa b/test/data/test_contig_nc4.fa
new file mode 100644
index 0000000..67f282a
--- /dev/null
+++ b/test/data/test_contig_nc4.fa
@@ -0,0 +1,4 @@
+>contig1
+TGCATGAAATGGGCTGGGGCTTGTTGGAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGATAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGT
+>contig2
+TGCATGAAATGGGCTGGGGCTTGTTGGAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGATAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGT
\ No newline at end of file
diff --git a/test/data/test_contig_nc5.fa b/test/data/test_contig_nc5.fa
new file mode 100644
index 0000000..d8279a4
--- /dev/null
+++ b/test/data/test_contig_nc5.fa
@@ -0,0 +1,6 @@
+>contig1
+TGGGGCTTGTTGGAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGATAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGATAAACACTTCAATTTGACTATGGACTCTGTGTATTGTAAAGAACATGATG
+>contig2
+TAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGA
+>contig3
+TTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGATAAACA
\ No newline at end of file
diff --git a/test/data/test_contig_nc6.fa b/test/data/test_contig_nc6.fa
new file mode 100644
index 0000000..51cfebd
--- /dev/null
+++ b/test/data/test_contig_nc6.fa
@@ -0,0 +1,2 @@
+>contig1
+AGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGAT
\ No newline at end of file
diff --git a/test/data/test_contig_nc7.fa b/test/data/test_contig_nc7.fa
new file mode 100644
index 0000000..0ba99db
--- /dev/null
+++ b/test/data/test_contig_nc7.fa
@@ -0,0 +1,2 @@
+>contig1
+GGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGATA
\ No newline at end of file
diff --git a/test/data/test_reference_aa1.fa b/test/data/test_reference_aa1.fa
new file mode 100644
index 0000000..78ce455
--- /dev/null
+++ b/test/data/test_reference_aa1.fa
@@ -0,0 +1,2 @@
+>reference2
+FQLMKKKLECVDCMKWAGACWNFAIETNVYFKLIGIQLVFWWXLFLLHNWILIPNTISWEFSWFSGDKHFNLTMDSVYCKEHDDRIASNPVGLQSSGSGP
\ No newline at end of file
diff --git a/test/data/test_reference_nc1.fa b/test/data/test_reference_nc1.fa
new file mode 100644
index 0000000..ae08a67
--- /dev/null
+++ b/test/data/test_reference_nc1.fa
@@ -0,0 +1,2 @@
+>reference1
+TTTCAGTTGATGAAGAAAAAACTAGAGTGTGTGGATTGCATGAAATGGGCTGGGGCTTGTTGGAATTTTGCTATTGAAACTAATGTTTACTTCAAATTGATAGGAATTCAGTTGGTTTTCTGGTGGTNTCTCTTTCTTCTTCACAATTGGATTTTGATTCCAAACACCATCTCTTGGGAATTCAGTTGGTTTTCTGGTGATAAACACTTCAATTTGACTATGGACTCTGTGTATTGTAAAGAACATGATGACAGAATTGCTTCGAATCCGGTGGGTTTACAGTCATCCGGGTCGGGTCCT
diff --git a/test/data/tiny.sam b/test/data/tiny.sam
new file mode 100644
index 0000000..5128cd0
--- /dev/null
+++ b/test/data/tiny.sam
@@ -0,0 +1,4 @@
+ at HD	VN:1.0	SO:unsorted
+ at SQ	SN:NM_014620	LN:2300
+ at PG	ID:bowtie2	PN:bowtie2	VN:2.2.3	CL:"/Users/rds45/.rvm/gems/ruby-2.0.0-p247/bin/bowtie2-align-s --wrapper basic-0 --very-sensitive -p 8 -X 350 --quiet --seed 1337 -x transcripts --passthrough -1 /Users/rds45/code/eXpress/sample_data/reads_1.fastq -2 /Users/rds45/code/eXpress/sample_data/reads_2.fastq"
+2:NM_014620:1094:172	99	NM_014620	1095	1	50M	=	1217	172	ATGAAAAAAATTCACGTTAGCACGGTGAACCCCAATTATAACGGAGGGGA	IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII	AS:i:0	XS:i:0	XN:i:0	XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:50	YS:i:0	YT:Z:CP
diff --git a/test/helper.rb b/test/helper.rb
new file mode 100644
index 0000000..123ddf2
--- /dev/null
+++ b/test/helper.rb
@@ -0,0 +1,60 @@
+require 'simplecov'
+require 'coveralls'
+
+SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
+  SimpleCov::Formatter::HTMLFormatter,
+  Coveralls::SimpleCov::Formatter
+]
+SimpleCov.start
+
+require "stringio"
+
+require 'minitest/autorun'
+require "minitest/reporters"
+Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
+
+require 'shoulda/context'
+require 'transrate'
+
+# download large fastq files into test/data/.
+path = "https://github.com/HibberdLab/transrate-test-files/raw/master"
+test_files = []
+test_files << File.join(File.dirname(__FILE__), "data", "sorghum_100.1.fastq")
+test_files << File.join(File.dirname(__FILE__), "data", "sorghum_100.2.fastq")
+test_files.each do |file|
+  if !File.exist?(file)
+    wget_cmd = "wget #{path}/#{File.basename(file)} --output-document #{file}"
+    cmd = Transrate::Cmd.new(wget_cmd)
+    cmd.run
+  end
+end
+
+def capture_stderr
+  real_stderr, $stderr = $stderr, StringIO.new
+  yield
+  $stderr.string
+ensure
+  $stderr = real_stderr
+end
+
+def capture_stdout
+  real_stdout, $stdout = $stdout, StringIO.new
+  yield
+  $stdout.string
+ensure
+  $stdout = real_stdout
+end
+
+# use within an at_exit block, exploits the capture of last exception in
+# the global var $!
+def last_exit_successful?
+  $!.nil? || $!.is_a?(SystemExit) && $!.success?
+end
+
+def sorghum_data
+  assembly = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.fa')
+  reference = File.join(File.dirname(__FILE__), 'data', 'Os.protein.2.fa')
+  left = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.1.fastq')
+  right = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.2.fastq')
+  [assembly, reference, left, right]
+end
diff --git a/test/test_assembly.rb b/test/test_assembly.rb
new file mode 100644
index 0000000..5c99b5b
--- /dev/null
+++ b/test/test_assembly.rb
@@ -0,0 +1,54 @@
+require 'helper'
+require 'bio'
+require 'tmpdir'
+
+class TestAssembly < MiniTest::Test
+
+  context "Assembly" do
+
+    setup do
+      a = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.fa')
+      @assembly = Transrate::Assembly.new(a)
+    end
+
+    should "run" do
+      @assembly.run 1
+      assert_equal true, @assembly.has_run
+    end
+
+    should "classify contigs" do
+      @assembly.run 1
+      read_metrics = Transrate::ReadMetrics.new(@assembly)
+      left = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.1.fastq')
+      right = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.2.fastq')
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          read_metrics.run(left, right)
+          @assembly.classify_contigs 0.5
+          assert File.exist?("good.sorghum_100.fa"), "good output exists"
+          assert File.exist?("bad.sorghum_100.fa"), "bad output"
+          file_size = File.stat("good.sorghum_100.fa").size
+          assert_in_delta 86_119, file_size, 5000, "good file size"
+          file_size = File.stat("bad.sorghum_100.fa").size
+          assert_in_delta 53_000, file_size, 5000, "bad file size"
+        end
+      end
+    end
+
+    should "capture error with multiple identical named contigs" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          ref = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.fa')
+          cmd = Transrate::Cmd.new("cat #{ref} #{ref} > tmp.fa")
+          cmd.run
+          capture_stderr do
+            assert_raises Transrate::AssemblyError do
+              assembly = Transrate::Assembly.new("tmp.fa")
+            end
+          end
+        end
+      end
+    end
+
+  end
+end
diff --git a/test/test_cmd.rb b/test/test_cmd.rb
new file mode 100644
index 0000000..43e9aa2
--- /dev/null
+++ b/test/test_cmd.rb
@@ -0,0 +1,20 @@
+require 'helper'
+
+class TestCmd < MiniTest::Test
+
+  context "Cmd" do
+
+    should "run commands" do
+      cmd = Transrate::Cmd.new 'echo "success"'
+      cmd.run
+      assert_equal "success", cmd.stdout.chomp, 'run echo command'
+    end
+
+    should "get the string of a command" do
+      cmd = Transrate::Cmd.new "echo success"
+      assert_equal "echo success", cmd.to_s, 'cmd to string'
+    end
+
+  end
+
+end
diff --git a/test/test_cmdline.rb b/test/test_cmdline.rb
new file mode 100644
index 0000000..666afef
--- /dev/null
+++ b/test/test_cmdline.rb
@@ -0,0 +1,114 @@
+require 'helper'
+require 'csv'
+
+class TestCmdline < MiniTest::Test
+
+  context "Transrate" do
+
+    teardown do
+      `rm -rf transrate_results`
+    end
+
+    should "fail nicely on non existent assembly files" do
+      assert_raises Transrate::TransrateIOError do
+        Transrate::Cmdline.new("--assembly foo.fasta".split)
+      end
+    end
+
+    should "fail nicely when assembly is not provided" do
+      assert_raises Transrate::TransrateArgError do
+        Transrate::Cmdline.new("--left left.fq".split)
+      end
+    end
+
+    should "fail on non existent reference files" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          assembly, reference, left, right = sorghum_data
+          assert_raises Transrate::TransrateIOError do
+            Transrate::Cmdline.new("--assembly #{assembly} --reference foo.fasta".split)
+          end
+        end
+      end
+    end
+
+    should "run on test data" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          captured_stdout = capture_stdout do
+            assembly, reference, left, right = sorghum_data
+            cmd = "--assembly #{assembly}"
+            cmd << " --reference #{reference}"
+            cmd << " --left #{left}"
+            cmd << " --right #{right}"
+            c = Transrate::Cmdline.new(cmd.split)
+            c.run
+          end
+          assert File.exist?("transrate_results/assemblies.csv"), "csv file doesn't exist"
+          assert File.exist?("transrate_results/sorghum_100/contigs.csv"),
+                 "contig csv file doesn't exist"
+          hash = {}
+          CSV.foreach("transrate_results/assemblies.csv", :headers => true,
+                                       :header_converters => :symbol,
+                                       :converters => :all) do |row|
+            row.headers
+            row.fields
+            row.headers.zip(row.fields).each do |header, field|
+              hash[header]=field
+            end
+          end
+          assert_in_delta 137748, hash[:n_bases], 1000, "number of bases"
+          assert_equal 1692, hash[:n50], "n50"
+          assert_equal 2, hash[:n_refs_with_crbb], "number of crb hits"
+          assert_equal 2, hash[:n_contigs_with_crbb], "number of contigs with hits"
+        end
+      end
+    end
+
+    should "run on test data with comma separated list of fastq files" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          captured_stdout = capture_stdout do
+            assembly, reference, left, right = sorghum_data
+            left = [left]
+            left << File.join(File.dirname(__FILE__), 'data', '150uncovered.l.fq')
+            right = [right]
+            right << File.join(File.dirname(__FILE__), 'data', '150uncovered.r.fq')
+            cmd = "--assembly #{assembly}"
+            cmd << " --left #{left.join(",")}"
+            cmd << " --right #{right.join(",")}"
+            c = Transrate::Cmdline.new(cmd.split)
+            c.run
+          end
+          assert File.exist?("transrate_results/assemblies.csv")
+          assert File.exist?("transrate_results/sorghum_100/contigs.csv"),
+                 "contig csv file doesn't exist"
+          hash = {}
+          CSV.foreach("transrate_results/assemblies.csv", :headers => true,
+                                       :header_converters => :symbol,
+                                       :converters => :all) do |row|
+            row.headers.zip(row.fields).each do |header, field|
+              hash[header]=field
+            end
+          end
+          assert_in_delta 137748, hash[:n_bases], 1000, "number of bases"
+          assert_equal 1692, hash[:n50], "n50"
+          assert_equal 25006 + 223, hash[:fragments], "number of reads"
+        end
+      end
+    end
+
+    should "fail when one of multiple assemblies is missing" do
+      assembly, reference, left, right = sorghum_data
+      assembly2 = "does_not_exist.fa"
+      cmd = " --assembly #{assembly},#{assembly2}"
+      cmd << " --reference #{reference}"
+      cmd << " --left #{left}"
+      cmd << " --right #{right}"
+      assert_raises Transrate::TransrateIOError do
+        Transrate::Cmdline.new(cmd.split)
+      end
+    end
+
+  end
+end
diff --git a/test/test_comp_metrics.rb b/test/test_comp_metrics.rb
new file mode 100644
index 0000000..f28dd31
--- /dev/null
+++ b/test/test_comp_metrics.rb
@@ -0,0 +1,381 @@
+require 'helper'
+require 'crb-blast'
+
+module Transrate
+  class ComparativeMetrics
+    attr_reader :assembly
+    attr_reader :reference
+    attr_reader :crbblast
+  end
+end
+
+module CRB_Blast
+  class CRB_Blast
+    def add_missing
+      @missed.each do |query_id, missed|
+        missed.each do |hit|
+          @reciprocals[hit.query] ||= []
+          @reciprocals[hit.query] << hit
+        end
+      end
+    end
+  end
+end
+
+class Tester
+  def self.testpath file
+    return File.join(File.dirname(__FILE__), 'data', file)
+  end
+
+  def self.run_comp_metrics(query, target)
+    querypath = testpath(query)
+    targetpath = testpath(target)
+    @assembly = Transrate::Assembly.new(querypath)
+    @reference = Transrate::Assembly.new(targetpath)
+    @comp = Transrate::ComparativeMetrics.new(@assembly, @reference, 1)
+    @comp.run
+    return @comp
+  end
+end
+
+class TestCompMetrics2 < MiniTest::Test
+
+
+  context "ComparativeMetrics" do
+
+    setup do
+    end
+
+    should "01 should run" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          comp = Tester.run_comp_metrics("test_contig_nc1.fa", "test_reference_nc1.fa")
+          assert comp.has_run
+        end
+      end
+    end
+
+    should "01-1n should get reference hits" do
+      # The reciprocals hash in crb blast has contig names as the key.
+      # In order to look up by the reference name we need to reverse this.
+      # Scan through the reciprocals and get this Hit objects and add them to
+      #   the @reference object for each reference sequence
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc1.fa")
+          target = Tester.testpath("test_reference_nc1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          assert_equal 1, comp.reference["reference1"].hits.size, "size of reference hits list"
+          assert_equal "contig1", comp.reference["reference1"].hits[0].query
+          assert_equal "reference1", comp.reference["reference1"].hits[0].target
+        end
+      end
+    end
+
+    should "01-1n get per contig reference coverage" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc1.fa")
+          target = Tester.testpath("test_reference_nc1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          assert_equal (2/3.0), comp.assembly["contig1"].reference_coverage
+        end
+      end
+    end
+
+    should "01-1a get per contig reference coverage on protein" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc1.fa")
+          target = Tester.testpath("test_reference_aa1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          assert_equal (2/3.0), comp.assembly["contig1"].reference_coverage
+        end
+      end
+    end
+
+    should "01e raise error because you can't have protein queries" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_reference_aa1.fa")
+          target = Tester.testpath("test_contig_nc1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          assert_raises Transrate::TransrateError do
+            comp.per_query_contig_reference_coverage
+          end
+        end
+      end
+    end
+
+    should "02-2n calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+      # tmpdir = Dir.mktmpdir
+      # puts tmpdir
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc2.fa")
+          target = Tester.testpath("test_reference_nc1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          # answer should be 290/300.0
+          assert_equal 29/30.0, comp.reference["reference1"].reference_coverage
+        end
+      end
+    end
+
+    should "02-3n calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc3.fa")
+          target = Tester.testpath("test_reference_nc1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          crbblast.add_missing
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          # answer should be 1.0000
+          assert_equal 1.00, comp.reference["reference1"].reference_coverage
+        end
+      end
+    end
+
+    should "02-3a calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc3.fa")
+          target = Tester.testpath("test_reference_aa1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          crbblast.add_missing
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          # answer should be 1.0000
+          assert_equal 1.00, comp.reference["reference2"].reference_coverage
+        end
+      end
+    end
+
+    should "02-4n calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc4.fa")
+          target = Tester.testpath("test_reference_nc1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          assert_equal 0.5, comp.reference["reference1"].reference_coverage
+        end
+      end
+    end
+
+    should "02-4a calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc4.fa")
+          target = Tester.testpath("test_reference_aa1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          assert_equal 0.5, comp.reference["reference2"].reference_coverage
+        end
+      end
+    end
+
+    should "02-5a calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc5.fa")
+          target = Tester.testpath("test_reference_aa1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          crbblast.add_missing
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          assert_equal (2/3.0), comp.reference["reference2"].reference_coverage
+        end
+      end
+    end
+
+    should "02-5n calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc5.fa")
+          target = Tester.testpath("test_reference_nc1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          crbblast.add_missing
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          assert_equal (2/3.0), comp.reference["reference1"].reference_coverage
+        end
+      end
+    end
+
+    should "02-6a calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc6.fa")
+          target = Tester.testpath("test_reference_aa1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          crbblast.add_missing
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          assert_equal (1/3.0), comp.reference["reference2"].reference_coverage
+        end
+      end
+    end
+
+    should "02-6n calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc6.fa")
+          target = Tester.testpath("test_reference_nc1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          crbblast.add_missing
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          assert_equal (1/3.0), comp.reference["reference1"].reference_coverage
+        end
+      end
+    end
+
+    should "02-7a calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc7.fa")
+          target = Tester.testpath("test_reference_aa1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          crbblast.add_missing
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          assert_equal (1/3.0), comp.reference["reference2"].reference_coverage
+        end
+      end
+    end
+
+    should "02-7n calculate coverage for each reference sequence" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("test_contig_nc7.fa")
+          target = Tester.testpath("test_reference_nc1.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          crbblast.add_missing
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          assert_equal (1/3.0), comp.reference["reference1"].reference_coverage
+        end
+      end
+    end
+
+    should "03 calculate all metrics" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          query = Tester.testpath("assembly.2.fa")
+          target = Tester.testpath("Os.protein.2.fa")
+          crbblast = CRB_Blast::CRB_Blast.new query, target
+          crbblast.run(1e-5, 1, true)
+          assembly = Transrate::Assembly.new(query)
+          reference = Transrate::Assembly.new(target)
+          comp = Transrate::ComparativeMetrics.new(assembly, reference, 1)
+          comp.get_reference_hits crbblast
+          comp.per_query_contig_reference_coverage
+          comp.per_target_contig_reference_coverage crbblast
+          assert_equal 11, comp.comp_stats[:CRBB_hits], "CRBB hits"
+          assert_equal 11, comp.comp_stats[:n_contigs_with_CRBB], "n_contigs_with_CRBB"
+          assert_equal 0.84615, comp.comp_stats[:p_contigs_with_CRBB].round(5), "p_contigs_with_CRBB"
+          assert_equal 0.55, comp.comp_stats[:rbh_per_reference], "rbh_per_reference"
+          assert_equal 10, comp.comp_stats[:n_refs_with_CRBB], "n_refs_with_CRBB"
+          assert_equal 0.5, comp.comp_stats[:p_refs_with_CRBB], "p_refs_with_CRBB"
+          assert_equal 10, comp.comp_stats[:cov25], "cov25"
+          assert_equal 10, comp.comp_stats[:cov50], "cov50"
+          assert_equal 7, comp.comp_stats[:cov75], "cov75"
+          assert_equal 6, comp.comp_stats[:cov85], "cov85"
+          assert_equal 3, comp.comp_stats[:cov95], "cov95"
+          assert_equal 0.5, comp.comp_stats[:p_cov25], "p_cov25"
+          assert_equal 0.5, comp.comp_stats[:p_cov50], "p_cov50"
+          assert_equal 0.35, comp.comp_stats[:p_cov75], "p_cov75"
+          assert_equal 0.3, comp.comp_stats[:p_cov85], "p_cov85"
+          assert_equal 0.15, comp.comp_stats[:p_cov95], "p_cov95"
+          assert_equal 0.37261, comp.comp_stats[:reference_coverage].round(5), "reference_coverage"
+
+        end
+      end
+    end
+
+
+
+  end
+end
diff --git a/test/test_contig.rb b/test/test_contig.rb
new file mode 100644
index 0000000..24349ac
--- /dev/null
+++ b/test/test_contig.rb
@@ -0,0 +1,120 @@
+require 'helper'
+require 'bio'
+require 'benchmark'
+
+class TestContig < MiniTest::Test
+
+  context "Contig" do
+
+    setup do
+      seq = Bio::FastaFormat.new ">test;\nATGCGTGTATATACGCGTAG" # cg=3, gc=2, c*g=20
+      @contig = Transrate::Contig.new seq
+    end
+
+    should "know the number and proportion of each base it contains" do
+      assert_equal 5, @contig.bases_a, "count of base a"
+      assert_equal 0.25, @contig.prop_a, "proportion of base a"
+      assert_equal 3, @contig.bases_c, "count of base c"
+      assert_equal 0.15, @contig.prop_c, "proportion of base c"
+      assert_equal 6, @contig.bases_g, "count of base g"
+      assert_equal 0.3, @contig.prop_g, "proportion of base g"
+      assert_equal 6, @contig.bases_t, "count of base t"
+      assert_equal 0.3, @contig.prop_t, "proportion of base t"
+      assert_equal 0, @contig.bases_n, "count of base n"
+      assert_equal 0.0, @contig.prop_n, "proportion of base n"
+    end
+
+    should "calculate dibase composition with ambiguous bases" do
+      seq = Bio::FastaFormat.new ">test\nATGGGNCRYTAG"
+      contig = Transrate::Contig.new seq
+      assert_equal 1, contig.dibase_composition[:at]
+      assert_equal 1, contig.dibase_composition[:nn]
+      assert_equal 1, contig.dibase_composition[:gn]
+    end
+
+    should "know how many of each two-base pair it contains" do
+      assert_equal 3, @contig.dibase_composition[:cg], "cg count"
+      assert_equal 3, @contig.dibase_composition[:at], "at count"
+      assert_equal 2, @contig.dibase_composition[:tg], "tg count"
+    end
+
+    should "know its own gc content" do
+      assert_equal 9, @contig.bases_gc, "count of bases that are c or g"
+      assert_equal 0.45, @contig.prop_gc.round(2),
+                   "proportion of bases that are c or g"
+    end
+
+    should "know its own base-pair skew" do
+      assert_equal 0.33, @contig.gc_skew.round(2), "gc skew"
+      assert_equal -0.09, @contig.at_skew.round(2), "at skew"
+    end
+
+    should "know its own CpG count and ratio" do
+      assert_equal 5, @contig.cpg_count, "cpg count"
+      assert_equal 5.56, @contig.cpg_ratio.round(2), "cpg ratio"
+    end
+
+    should "calculate the CpG ratio" do
+      seq = Bio::FastaFormat.new ">test\nAAACGAAA"
+      contig = Transrate::Contig.new seq
+      assert_equal 8, contig.cpg_ratio, "cpg ratio"
+    end
+
+    should "know the length of its own longest orf" do
+      assert_equal 6, @contig.orf_length, "orf length"
+    end
+
+    should "not break when there is a null byte in the sequence" do
+      seq = Bio::FastaFormat.new ">test\nAAAAAAAAAAAA\0AAAAAAAAAAA"
+      contig = Transrate::Contig.new seq
+      assert_equal 7, contig.orf_length, "orf length"
+    end
+
+    should "get orf length from ATG to stop" do
+      s = "AAATAGATAGATAGAATGAATCAACTAACTAAATAA"
+      # seq = Bio::FastaFormat.new ">test\n#{s}\n>test_r\n#{s.reverse}\n"
+      seq = Bio::FastaFormat.new ">test\n#{s}\n>test_r"
+      contig = Transrate::Contig.new seq
+      assert_equal 6, contig.orf_length, "orf length"
+    end
+
+    should "not fail on bases that aren't ACGTN" do
+      seq = Bio::FastaFormat.new ">test\nATGCGTGTARATACGCGTAG"
+      contig = Transrate::Contig.new seq
+      assert_equal 1, contig.base_composition[:n]
+    end
+
+    should "get kmer count with non ACGTN bases" do
+      seq = Bio::FastaFormat.new ">test\nATGCGTGTARATACGCGTAG"
+      contig = Transrate::Contig.new seq
+      assert_equal 0, contig.kmer_count(6, "RRRRRRRRRRRRRRRR")
+    end
+
+    should "calculate linguistic complexity for a long sequence" do
+      alphabet = ["A", "C", "G", "T"]
+      seq = ""
+      50000.times do
+        seq << alphabet.sample
+      end
+      seq = Bio::FastaFormat.new ">test\n"+seq
+      contig = Transrate::Contig.new seq
+      assert contig.linguistic_complexity(6) > 0.98, "linguistic complexity"
+    end
+
+    should "know its own linguistic complexity" do
+      assert_equal 0.0586, @contig.linguistic_complexity(4).round(4),
+                   "linguistic complexity k=4"
+      assert_equal 0.0037, @contig.linguistic_complexity(6).round(4),
+                   "linguistic complexity k=6"
+    end
+
+    should "classify contig" do
+      assert_equal :bad, @contig.classify(0.5), "contig is not bad"
+    end
+
+    should "strip trailing semicolons from FASTA entry IDs" do
+      assert_equal "test", @contig.name, "trailing semicolon was not stripped"
+    end
+
+  end
+end
diff --git a/test/test_contig_metrics.rb b/test/test_contig_metrics.rb
new file mode 100644
index 0000000..f7261c1
--- /dev/null
+++ b/test/test_contig_metrics.rb
@@ -0,0 +1,50 @@
+require 'helper'
+
+class TestContigMetrics < MiniTest::Test
+
+  context "transrate" do
+
+    setup do
+      querypath = File.join(File.dirname(__FILE__), 'data',
+                            'assembly.fasta')
+      assembly = Transrate::Assembly.new(querypath)
+      @contig_metrics = Transrate::ContigMetrics.new(assembly)
+    end
+
+    should "run metrics on assembly" do
+      @contig_metrics.run
+      assert @contig_metrics.has_run
+    end
+
+    should "get gc content" do
+      @contig_metrics.run
+      assert_equal 0.37672, @contig_metrics.gc_prop.round(5)
+    end
+
+    should "get gc skew" do
+      @contig_metrics.run
+      assert_equal 0.00440, @contig_metrics.gc_skew.round(5)
+    end
+
+    should "get at skew" do
+      @contig_metrics.run
+      assert_equal -0.00718, @contig_metrics.at_skew.round(5)
+    end
+
+    should "get CpG density" do
+      @contig_metrics.run
+      assert_equal 1.51939, @contig_metrics.cpg_ratio.round(5)
+    end
+
+    should "get linguistic complexity" do
+      @contig_metrics.run
+      assert_equal 0.26526, @contig_metrics.linguistic_complexity.round(5)
+    end
+
+    should "get the number and proportion of Ns" do
+      @contig_metrics.run
+      assert_equal 2, @contig_metrics.bases_n
+      assert_equal 0.00033, @contig_metrics.proportion_n.round(5)
+    end
+  end
+end
diff --git a/test/test_inline.rb b/test/test_inline.rb
new file mode 100644
index 0000000..553a7a9
--- /dev/null
+++ b/test/test_inline.rb
@@ -0,0 +1,31 @@
+#!/usr/bin/env  ruby
+
+require 'helper'
+require 'bio'
+
+class TestInline < MiniTest::Test
+
+  context 'transrate' do
+
+    setup do
+      filepath = File.join(File.dirname(__FILE__), 'data', 'assembly.fasta')
+      @a = Transrate::Assembly.new(filepath)
+    end
+
+    should 'find longest orf in file' do
+      orfs = []
+      @a.assembly.each_value do |contig|
+        orfs << contig.orf_length
+      end
+      assert_equal 4, orfs.length
+      assert_equal [319, 321, 95, 71], orfs
+    end
+
+    should 'find longest orf in sequence' do
+      seq = Bio::FastaFormat.new ">test\nATGCCCCTAGGGTAG"
+      contig = Transrate::Contig.new seq
+      assert_equal 4, contig.orf_length
+    end
+
+  end
+end
diff --git a/test/test_optimiser.rb b/test/test_optimiser.rb
new file mode 100644
index 0000000..dd4b9dc
--- /dev/null
+++ b/test/test_optimiser.rb
@@ -0,0 +1,27 @@
+require 'helper'
+require 'tmpdir'
+
+class TestOptimiser < MiniTest::Test
+
+  context "Optimiser" do
+
+    should "get optimal score" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          @reference = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.fa')
+          left = File.join(File.dirname(__FILE__), "data", "sorghum_100.1.fastq")
+          right = File.join(File.dirname(__FILE__), "data", "sorghum_100.2.fastq")
+          @assembly = Transrate::Assembly.new @reference
+          @readmetrics = Transrate::ReadMetrics.new @assembly
+          @readmetrics.run(left, right)
+          optimiser = Transrate::ScoreOptimiser.new(@assembly, @readmetrics)
+          assert_in_delta 0.1507, optimiser.raw_score.round(4), 0.005
+          optimal, cutoff = optimiser.optimal_score
+          assert_in_delta 0.4529, optimal.round(4), 0.05
+          assert_in_delta 0.5638, cutoff.round(4), 0.04
+        end
+      end
+    end
+
+  end
+end
diff --git a/test/test_read_metrics.rb b/test/test_read_metrics.rb
new file mode 100644
index 0000000..7abd8c8
--- /dev/null
+++ b/test/test_read_metrics.rb
@@ -0,0 +1,181 @@
+require 'helper'
+require 'tmpdir'
+
+class TestReadMetrics < MiniTest::Test
+
+  context "ReadMetrics" do
+
+    setup do
+      query = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.fa')
+      @assembly = Transrate::Assembly.new(query)
+      @read_metrics = Transrate::ReadMetrics.new(@assembly)
+    end
+
+    teardown do
+      if File.exist?("test/data/sorghum_100.fa.fai")
+        rm = "rm test/data/sorghum_100.fa.fai"
+        `#{rm}`
+      end
+    end
+
+    should "setup correctly" do
+      assert @read_metrics
+    end
+
+    should "calculate read mapping statistics" do
+      left = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.1.fastq')
+      right = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.2.fastq')
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          @read_metrics.run(left, right)
+          stats = @read_metrics.read_stats
+          assert @read_metrics.has_run, "has run"
+          assert_equal 25006,    stats[:fragments], 'number of read pairs'
+          assert_in_delta 21732, stats[:fragments_mapped], 10, 'number mapping'
+          assert_in_delta 0.84,  stats[:p_fragments_mapped].round(4), 0.05
+                       'proportion mapping'
+          assert_in_delta 17983, stats[:good_mappings], 50, 'good mapping'
+          assert_in_delta 0.719,stats[:p_good_mapping].round(3), 0.005,
+                       'percent good mapping'
+          assert_in_delta 3761,  stats[:bad_mappings], 50, 'bad mapping'
+          assert_in_delta 2,  stats[:potential_bridges], 1, 'bridges'
+          assert_equal 93, stats[:contigs_uncovbase], 'uncovered base contig'
+          assert_equal 28, stats[:contigs_uncovered], 'uncovered contig'
+          assert_equal 71, stats[:contigs_lowcovered], 'lowcovered contig'
+        end
+      end
+    end
+
+    should "get metrics for individual contigs" do
+      left = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.1.fastq')
+      right = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.2.fastq')
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          @read_metrics.run(left, right)
+          contigs = []
+          @assembly.each do |name, contig|
+            contigs << contig
+          end
+          a = contigs[0].read_metrics
+          b = contigs[1].read_metrics
+
+          edit_a = a[:p_seq_true].round(5)
+          edit_b = b[:p_seq_true].round(5)
+          assert_in_delta 0.7086, edit_a.round(4), 0.01, "edit distance 1"
+          assert_in_delta 0.9364, edit_b.round(4), 0.01, "edit distance 2"
+
+          assert_in_delta 0.5714, a[:p_good].round(4), 0.01, "prop of good mappings"
+          assert_in_delta 0.8421, b[:p_good].round(4), 0.01, "prop of good mappings"
+
+          # uncovered bases
+          unc_a = contigs[0].uncovered_bases
+          unc_b = contigs[1].uncovered_bases
+          assert_in_delta 366, unc_a, 20, "uncovered bases"
+          assert_in_delta 64,  unc_b, 20, "uncovered bases"
+
+          prop_unc_a = a[:p_bases_covered]
+          prop_unc_b = b[:p_bases_covered]
+          assert_in_delta 0.5622, prop_unc_a.round(4), 0.05, "proportion covered bases"
+          assert_in_delta 0.9964, prop_unc_b.round(4), 0.05, "proportion covered bases"
+
+        end
+      end
+    end
+
+    should "classify individual contigs" do
+      left = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.1.fastq')
+      right = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.2.fastq')
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          @read_metrics.run(left, right)
+          contigs = []
+          @assembly.each do |name, contig|
+            contigs << contig
+          end
+          assert_equal :bad,  contigs[0].classify(0.5)
+          assert_equal :good, contigs[1].classify(0.5)
+          assert_equal :bad,  contigs[2].classify(0.5)
+          assert_equal :good, contigs[3].classify(0.5)
+        end
+      end
+
+    end
+
+    should "get segmentation probability for individual contigs" do
+      left = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.1.fastq')
+      right = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.2.fastq')
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          @read_metrics.run(left, right)
+          contigs = []
+          @assembly.each do |name, contig|
+            contigs << contig
+          end
+          a = contigs[0].read_metrics
+          b = contigs[1].read_metrics
+
+          edit_a = a[:p_not_segmented].round(5)
+          edit_b = b[:p_not_segmented].round(5)
+          assert_in_delta 0.9965, edit_a.round(4), 0.05, "probability not segmented 1"
+          assert_in_delta 0.9644, edit_b.round(4), 0.05, "probability not segmented 2"
+
+        end
+      end
+    end
+
+    should "find read pairs that support scaffolding" do
+      left = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.1.fastq')
+      right = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.2.fastq')
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          @read_metrics.run(left, right)
+          contigs = []
+          @assembly.each do |name, contig|
+            if contig.in_bridges > 0
+              contigs << contig
+            end
+          end
+          stats = @read_metrics.read_stats
+          assert @read_metrics.has_run, "has run"
+          assert_equal 1,  stats[:potential_bridges], "bridges"
+          assert_in_delta 2, contigs.length, 1, "number of bridging contigs found"
+          assert_equal "Sb01g002430.1", contigs[0].name
+        end
+      end
+    end
+
+    should "run on a list of input fastq files" do
+      left = []
+      right = []
+      left << File.join(File.dirname(__FILE__), 'data', '150uncovered.l.fq')
+      right << File.join(File.dirname(__FILE__), 'data', '150uncovered.r.fq')
+
+      left << File.join(File.dirname(__FILE__), 'data', 'sorghum_100.1.fastq')
+      right << File.join(File.dirname(__FILE__), 'data', 'sorghum_100.2.fastq')
+
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          @read_metrics.run(left.join(","), right.join(","))
+          stats = @read_metrics.read_stats
+          assert_equal 25229, stats[:fragments], 'number of read pairs'
+        end
+      end
+
+    end
+
+    should "calculate read length by scanning fastq files" do
+      left = []
+      right = []
+      left << File.join(File.dirname(__FILE__), 'data', '150uncovered.l.fq')
+      right << File.join(File.dirname(__FILE__), 'data', '150uncovered.r.fq')
+      left << File.join(File.dirname(__FILE__),
+                       'data', 'bridging_reads.l.fastq')
+      right << File.join(File.dirname(__FILE__),
+                        'data', 'bridging_reads.r.fastq')
+      @read_metrics.get_read_length(left.join(","), right.join(","))
+      assert_equal 100, @read_metrics.read_length
+    end
+
+  end
+
+end
diff --git a/test/test_salmon.rb b/test/test_salmon.rb
new file mode 100644
index 0000000..87fcc46
--- /dev/null
+++ b/test/test_salmon.rb
@@ -0,0 +1,45 @@
+require 'helper'
+require 'tmpdir'
+
+class TestSalmon < MiniTest::Test
+
+  context "Salmon" do
+
+    setup do
+      @salmon = Transrate::Salmon.new
+    end
+
+    should "load an expression file" do
+      file = File.join(File.dirname(__FILE__), 'data', 'test.sf')
+      results = @salmon.load_expression file
+      assert_equal 18, results.size, "should be 18 results loaded"
+      assert_equal 1016, results['scaffold1'][:eff_len], "eff length is wrong"
+      assert_equal 20690, results['scaffold1'][:eff_count],
+                   "eff count is wrong"
+      assert_equal 549.279, results['scaffold1'][:tpm], "tpm is wrong"
+    end
+
+    should "detect wrong number of columns in the expression file" do
+      file = File.join(File.dirname(__FILE__), 'data', 'test.sf')
+      Dir.mktmpdir do |dir|
+        Dir.chdir dir do
+          `cut -f1,2,3 #{file} > broken.sf`
+          assert_raises(Transrate::SalmonError) do
+            @salmon.load_expression 'broken.sf'
+          end
+        end
+      end
+    end
+
+    should "build a command to run salmon" do
+      cmd = @salmon.build_command "assembly.fa", "alignments.bam"
+      cmd = cmd.split(" ")[1..-1].join(" ") # remove command so test is portabl
+      test = "quant --libType IU --alignments alignments.bam "
+      test << "--targets assembly.fa --threads 4 --sampleOut "
+      test << "--sampleUnaligned --output . --useVBOpt --useErrorModel"
+      assert_equal test, cmd, "cmd is wrong"
+    end
+
+  end
+
+end
diff --git a/test/test_snap.rb b/test/test_snap.rb
new file mode 100644
index 0000000..d8bd048
--- /dev/null
+++ b/test/test_snap.rb
@@ -0,0 +1,27 @@
+require 'helper'
+require 'tmpdir'
+
+class TestSnap < MiniTest::Test
+
+  context "Snap" do
+
+    setup do
+      @reference = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.fa')
+      @left = File.join(File.dirname(__FILE__), "data", "sorghum_100.1.fastq")
+      @right = File.join(File.dirname(__FILE__), "data", "sorghum_100.2.fastq")
+    end
+
+    should "map reads" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir(tmpdir) do
+          snap = Transrate::Snap.new
+          snap.build_index(@reference, 4)
+          snap.map_reads(@reference, @left, @right)
+          assert File.exist?(snap.bam), "bam file not found"
+          assert_equal 25006, snap.read_count, "read count"
+        end
+      end
+    end
+
+  end
+end
diff --git a/test/test_transrate.rb b/test/test_transrate.rb
new file mode 100644
index 0000000..f7d08fa
--- /dev/null
+++ b/test/test_transrate.rb
@@ -0,0 +1,40 @@
+#!/usr/bin/env	ruby
+
+require 'helper'
+
+class TestTransrate < MiniTest::Test
+
+  context "transrate" do
+
+    setup do
+      filepath = File.join(File.dirname(__FILE__), 'data', 'assembly.fasta')
+      @a = Transrate::Assembly.new(filepath)
+    end
+
+    should "create assembly object" do
+      assert @a
+      assert_equal @a.assembly.size, 4
+    end
+
+    should "run basic stats" do
+      stats = @a.basic_stats
+      assert_equal stats["n_seqs"], 4
+      assert_equal stats["smallest"], 1409
+      assert_equal stats["largest"], 1630
+      assert_equal stats["mean_len"], 1508.25
+    end
+
+    should "run metrics on assembly" do
+      ans = @a.run(2) # using 2 threads
+      assert_equal ans, true, "should run but returned #{ans}"
+    end
+
+    should "find the mean length" do
+      ans = @a.run(2)
+      mean = @a.mean_len
+      n_bases = @a.n_bases
+      assert_equal mean, 1508.25
+      assert_equal n_bases, 6033
+    end
+  end
+end
diff --git a/test/test_transrater.rb b/test/test_transrater.rb
new file mode 100644
index 0000000..a49a850
--- /dev/null
+++ b/test/test_transrater.rb
@@ -0,0 +1,68 @@
+#!/usr/bin/env	ruby
+
+require 'helper'
+require 'tmpdir'
+
+class TestTransrater < MiniTest::Test
+
+  context "transrater" do
+
+    setup do
+      @assembly = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.fa')
+      @reference = File.join(File.dirname(__FILE__), 'data', 'Os.protein.2.fa')
+      @rater = Transrate::Transrater.new(@assembly, @reference)
+      @left = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.1.fastq')
+      @right = File.join(File.dirname(__FILE__), 'data', 'sorghum_100.2.fastq')
+    end
+
+    should "create transrater object" do
+      assert @rater
+    end
+
+    should "raise error when assembly input is nil" do
+      assert_raises Transrate::TransrateError do
+        rater = Transrate::Transrater.new(nil, @reference)
+      end
+    end
+
+    should "handle assembly as an assembly object" do
+      assembly_object = Transrate::Assembly.new(@assembly)
+      rater = Transrate::Transrater.new(assembly_object, @reference)
+    end
+
+    should "handle reference as an assembly object" do
+      reference_object = Transrate::Assembly.new(@reference)
+      rater = Transrate::Transrater.new(@assembly, reference_object)
+    end
+
+    should "run assembly metrics without input fastq files" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          stats = @rater.assembly_metrics
+          assert_equal 1692, stats.n50
+          assert_equal 137748, stats.n_bases
+        end
+      end
+    end
+
+    should "run read metrics with input fastq files" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          stats = @rater.read_metrics(@left, @right)
+          assert_equal 25006, stats.read_stats[:fragments]
+        end
+      end
+    end
+
+    should "get assembly score" do
+      Dir.mktmpdir do |tmpdir|
+        Dir.chdir tmpdir do
+          all = @rater.all_metrics(@left, @right)
+          score = @rater.assembly_score
+          assert_equal 0.154, score.round(3) # regression test
+        end
+      end
+    end
+
+  end
+end
diff --git a/test/vagrant/centos_6.5_64/Vagrantfile b/test/vagrant/centos_6.5_64/Vagrantfile
new file mode 100644
index 0000000..c07ee5c
--- /dev/null
+++ b/test/vagrant/centos_6.5_64/Vagrantfile
@@ -0,0 +1,122 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "chef/centos-6.5"
+
+  # Disable automatic box update checking. If you disable this, then
+  # boxes will only be checked for updates when the user runs
+  # `vagrant box outdated`. This is not recommended.
+  # config.vm.box_check_update = false
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network "forwarded_port", guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network "private_network", ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network "public_network"
+
+  # If true, then any SSH connections made will enable agent forwarding.
+  # Default value: false
+  # config.ssh.forward_agent = true
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  # config.vm.synced_folder "../data", "/vagrant_data"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider "virtualbox" do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  # Enable provisioning with CFEngine. CFEngine Community packages are
+  # automatically installed. For example, configure the host as a
+  # policy server and optionally a policy file to run:
+  #
+  # config.vm.provision "cfengine" do |cf|
+  #   cf.am_policy_hub = true
+  #   # cf.run_file = "motd.cf"
+  # end
+  #
+  # You can also configure and bootstrap a client to an existing
+  # policy server:
+  #
+  # config.vm.provision "cfengine" do |cf|
+  #   cf.policy_server_address = "10.0.2.15"
+  # end
+
+  # Enable provisioning with Puppet stand alone.  Puppet manifests
+  # are contained in a directory path relative to this Vagrantfile.
+  # You will need to create the manifests directory and a manifest in
+  # the file default.pp in the manifests_path directory.
+  #
+  # config.vm.provision "puppet" do |puppet|
+  #   puppet.manifests_path = "manifests"
+  #   puppet.manifest_file  = "site.pp"
+  # end
+
+  # Enable provisioning with chef solo, specifying a cookbooks path, roles
+  # path, and data_bags path (all relative to this Vagrantfile), and adding
+  # some recipes and/or roles.
+  #
+  # config.vm.provision "chef_solo" do |chef|
+  #   chef.cookbooks_path = "../my-recipes/cookbooks"
+  #   chef.roles_path = "../my-recipes/roles"
+  #   chef.data_bags_path = "../my-recipes/data_bags"
+  #   chef.add_recipe "mysql"
+  #   chef.add_role "web"
+  #
+  #   # You may also specify custom JSON attributes:
+  #   chef.json = { mysql_password: "foo" }
+  # end
+
+  # Enable provisioning with chef server, specifying the chef server URL,
+  # and the path to the validation key (relative to this Vagrantfile).
+  #
+  # The Opscode Platform uses HTTPS. Substitute your organization for
+  # ORGNAME in the URL and validation key.
+  #
+  # If you have your own Chef Server, use the appropriate URL, which may be
+  # HTTP instead of HTTPS depending on your configuration. Also change the
+  # validation key to validation.pem.
+  #
+  # config.vm.provision "chef_client" do |chef|
+  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+  #   chef.validation_key_path = "ORGNAME-validator.pem"
+  # end
+  #
+  # If you're using the Opscode platform, your validator client is
+  # ORGNAME-validator, replacing ORGNAME with your organization name.
+  #
+  # If you have your own Chef Server, the default validation client name is
+  # chef-validator, unless you changed the configuration.
+  #
+  #   chef.validation_client_name = "ORGNAME-validator"
+end
diff --git a/test/vagrant/debian_7.4_64/Vagrantfile b/test/vagrant/debian_7.4_64/Vagrantfile
new file mode 100644
index 0000000..2685af6
--- /dev/null
+++ b/test/vagrant/debian_7.4_64/Vagrantfile
@@ -0,0 +1,126 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "chef/debian-7.4"
+
+  # Provision the virtual machine with a local script, provision.sh,
+  # in the same directory as the Vagrantfile
+  config.vm.provision "shell", path: "provision.sh"	
+
+  # Disable automatic box update checking. If you disable this, then
+  # boxes will only be checked for updates when the user runs
+  # `vagrant box outdated`. This is not recommended.
+  # config.vm.box_check_update = false
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network "forwarded_port", guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network "private_network", ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network "public_network"
+
+  # If true, then any SSH connections made will enable agent forwarding.
+  # Default value: false
+  # config.ssh.forward_agent = true
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  # config.vm.synced_folder "../data", "/vagrant_data"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider "virtualbox" do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  # Enable provisioning with CFEngine. CFEngine Community packages are
+  # automatically installed. For example, configure the host as a
+  # policy server and optionally a policy file to run:
+  #
+  # config.vm.provision "cfengine" do |cf|
+  #   cf.am_policy_hub = true
+  #   # cf.run_file = "motd.cf"
+  # end
+  #
+  # You can also configure and bootstrap a client to an existing
+  # policy server:
+  #
+  # config.vm.provision "cfengine" do |cf|
+  #   cf.policy_server_address = "10.0.2.15"
+  # end
+
+  # Enable provisioning with Puppet stand alone.  Puppet manifests
+  # are contained in a directory path relative to this Vagrantfile.
+  # You will need to create the manifests directory and a manifest in
+  # the file default.pp in the manifests_path directory.
+  #
+  # config.vm.provision "puppet" do |puppet|
+  #   puppet.manifests_path = "manifests"
+  #   puppet.manifest_file  = "site.pp"
+  # end
+
+  # Enable provisioning with chef solo, specifying a cookbooks path, roles
+  # path, and data_bags path (all relative to this Vagrantfile), and adding
+  # some recipes and/or roles.
+  #
+  # config.vm.provision "chef_solo" do |chef|
+  #   chef.cookbooks_path = "../my-recipes/cookbooks"
+  #   chef.roles_path = "../my-recipes/roles"
+  #   chef.data_bags_path = "../my-recipes/data_bags"
+  #   chef.add_recipe "mysql"
+  #   chef.add_role "web"
+  #
+  #   # You may also specify custom JSON attributes:
+  #   chef.json = { mysql_password: "foo" }
+  # end
+
+  # Enable provisioning with chef server, specifying the chef server URL,
+  # and the path to the validation key (relative to this Vagrantfile).
+  #
+  # The Opscode Platform uses HTTPS. Substitute your organization for
+  # ORGNAME in the URL and validation key.
+  #
+  # If you have your own Chef Server, use the appropriate URL, which may be
+  # HTTP instead of HTTPS depending on your configuration. Also change the
+  # validation key to validation.pem.
+  #
+  # config.vm.provision "chef_client" do |chef|
+  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+  #   chef.validation_key_path = "ORGNAME-validator.pem"
+  # end
+  #
+  # If you're using the Opscode platform, your validator client is
+  # ORGNAME-validator, replacing ORGNAME with your organization name.
+  #
+  # If you have your own Chef Server, the default validation client name is
+  # chef-validator, unless you changed the configuration.
+  #
+  #   chef.validation_client_name = "ORGNAME-validator"
+end
diff --git a/test/vagrant/debian_7.4_64/provision.sh b/test/vagrant/debian_7.4_64/provision.sh
new file mode 100644
index 0000000..c753137
--- /dev/null
+++ b/test/vagrant/debian_7.4_64/provision.sh
@@ -0,0 +1,28 @@
+su vagrant
+
+# Setup
+sudo apt-get update -y
+sudo apt-get install -y curl build-essential git zlib1g zlib1g-dev cmake
+
+# Install a multi-user RVM install with the latest ruby
+sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
+\curl -sSL https://get.rvm.io | bash -s stable --ruby
+source /usr/local/rvm/scripts/rvm
+
+# Add user to RVM group
+sudo usermod -a -G rvm vagrant
+
+# Install transrate
+git clone https://github.com/Blahah/transrate.git
+cd transrate
+sudo chmod -R 777 .
+
+# Install transrate-tools
+cd ..
+git clone https://github.com/Blahah/transrate-tools.git
+
+# Install dependencies
+gem install bundler rake
+bundle install
+bundle exec rake compile
+bundle exec bin/transrate --install-deps
diff --git a/test/vagrant/fedora_20_64/Vagrantfile b/test/vagrant/fedora_20_64/Vagrantfile
new file mode 100644
index 0000000..be2aab5
--- /dev/null
+++ b/test/vagrant/fedora_20_64/Vagrantfile
@@ -0,0 +1,122 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "box-cutter/fedora20"
+
+  # Disable automatic box update checking. If you disable this, then
+  # boxes will only be checked for updates when the user runs
+  # `vagrant box outdated`. This is not recommended.
+  # config.vm.box_check_update = false
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network "forwarded_port", guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network "private_network", ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network "public_network"
+
+  # If true, then any SSH connections made will enable agent forwarding.
+  # Default value: false
+  # config.ssh.forward_agent = true
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  # config.vm.synced_folder "../data", "/vagrant_data"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider "virtualbox" do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  # Enable provisioning with CFEngine. CFEngine Community packages are
+  # automatically installed. For example, configure the host as a
+  # policy server and optionally a policy file to run:
+  #
+  # config.vm.provision "cfengine" do |cf|
+  #   cf.am_policy_hub = true
+  #   # cf.run_file = "motd.cf"
+  # end
+  #
+  # You can also configure and bootstrap a client to an existing
+  # policy server:
+  #
+  # config.vm.provision "cfengine" do |cf|
+  #   cf.policy_server_address = "10.0.2.15"
+  # end
+
+  # Enable provisioning with Puppet stand alone.  Puppet manifests
+  # are contained in a directory path relative to this Vagrantfile.
+  # You will need to create the manifests directory and a manifest in
+  # the file default.pp in the manifests_path directory.
+  #
+  # config.vm.provision "puppet" do |puppet|
+  #   puppet.manifests_path = "manifests"
+  #   puppet.manifest_file  = "site.pp"
+  # end
+
+  # Enable provisioning with chef solo, specifying a cookbooks path, roles
+  # path, and data_bags path (all relative to this Vagrantfile), and adding
+  # some recipes and/or roles.
+  #
+  # config.vm.provision "chef_solo" do |chef|
+  #   chef.cookbooks_path = "../my-recipes/cookbooks"
+  #   chef.roles_path = "../my-recipes/roles"
+  #   chef.data_bags_path = "../my-recipes/data_bags"
+  #   chef.add_recipe "mysql"
+  #   chef.add_role "web"
+  #
+  #   # You may also specify custom JSON attributes:
+  #   chef.json = { mysql_password: "foo" }
+  # end
+
+  # Enable provisioning with chef server, specifying the chef server URL,
+  # and the path to the validation key (relative to this Vagrantfile).
+  #
+  # The Opscode Platform uses HTTPS. Substitute your organization for
+  # ORGNAME in the URL and validation key.
+  #
+  # If you have your own Chef Server, use the appropriate URL, which may be
+  # HTTP instead of HTTPS depending on your configuration. Also change the
+  # validation key to validation.pem.
+  #
+  # config.vm.provision "chef_client" do |chef|
+  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+  #   chef.validation_key_path = "ORGNAME-validator.pem"
+  # end
+  #
+  # If you're using the Opscode platform, your validator client is
+  # ORGNAME-validator, replacing ORGNAME with your organization name.
+  #
+  # If you have your own Chef Server, the default validation client name is
+  # chef-validator, unless you changed the configuration.
+  #
+  #   chef.validation_client_name = "ORGNAME-validator"
+end
diff --git a/test/vagrant/fedora_20_64/provision.sh b/test/vagrant/fedora_20_64/provision.sh
new file mode 100644
index 0000000..73d846c
--- /dev/null
+++ b/test/vagrant/fedora_20_64/provision.sh
@@ -0,0 +1,16 @@
+# Setup
+sudo yum install curl
+
+# Install a multi-user RVM install with the latest ruby`
+\curl -sSL https://get.rvm.io | sudo bash -s stable --ruby
+source /etc/profile.d/rvm.sh
+
+  # Add user to RVM group
+sudo usermod -a -G rvm vagrant
+su vagrant
+
+# Install transrate
+gem install transrate --pre
+
+# Install dependencies
+transrate --install-deps
diff --git a/test/vagrant/linux-x86_64/Vagrantfile b/test/vagrant/linux-x86_64/Vagrantfile
new file mode 100644
index 0000000..21e4341
--- /dev/null
+++ b/test/vagrant/linux-x86_64/Vagrantfile
@@ -0,0 +1,10 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  config.vm.box = "andy_b_84/debian-squeeze64-vanilla"
+  config.vm.network :forwarded_port, guest: 22, host: 18723
+end
diff --git a/test/vagrant/osx/Vagrantfile b/test/vagrant/osx/Vagrantfile
new file mode 100644
index 0000000..8b599cf
--- /dev/null
+++ b/test/vagrant/osx/Vagrantfile
@@ -0,0 +1,18 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "http://files.dryga.com/boxes/osx-yosemite-0.2.0.box"
+
+  # config.vm.synced_folder "../data", "/vagrant_data"
+  config.vm.provider "virtualbox" do |vb|
+    config.vm.synced_folder ".", "/vagrant", type: "nfs"
+  end
+
+  config.vm.provision "shell", path: "../../../packaging/build_deps_macosx.sh"
+
+end
diff --git a/test/vagrant/ubuntu_12.04_64/Vagrantfile b/test/vagrant/ubuntu_12.04_64/Vagrantfile
new file mode 100644
index 0000000..e5f7a8a
--- /dev/null
+++ b/test/vagrant/ubuntu_12.04_64/Vagrantfile
@@ -0,0 +1,126 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "hashicorp/precise64"
+
+  # Provision the virtual machine with a local script, provision.sh,
+  # in the same directory as the Vagrantfile
+  config.vm.provision "shell", path: "provision.sh"
+
+  # Disable automatic box update checking. If you disable this, then
+  # boxes will only be checked for updates when the user runs
+  # `vagrant box outdated`. This is not recommended.
+  # config.vm.box_check_update = false
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network "forwarded_port", guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network "private_network", ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network "public_network"
+
+  # If true, then any SSH connections made will enable agent forwarding.
+  # Default value: false
+  # config.ssh.forward_agent = true
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  # config.vm.synced_folder "../data", "/vagrant_data"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider "virtualbox" do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  # Enable provisioning with CFEngine. CFEngine Community packages are
+  # automatically installed. For example, configure the host as a
+  # policy server and optionally a policy file to run:
+  #
+  # config.vm.provision "cfengine" do |cf|
+  #   cf.am_policy_hub = true
+  #   # cf.run_file = "motd.cf"
+  # end
+  #
+  # You can also configure and bootstrap a client to an existing
+  # policy server:
+  #
+  # config.vm.provision "cfengine" do |cf|
+  #   cf.policy_server_address = "10.0.2.15"
+  # end
+
+  # Enable provisioning with Puppet stand alone.  Puppet manifests
+  # are contained in a directory path relative to this Vagrantfile.
+  # You will need to create the manifests directory and a manifest in
+  # the file default.pp in the manifests_path directory.
+  #
+  # config.vm.provision "puppet" do |puppet|
+  #   puppet.manifests_path = "manifests"
+  #   puppet.manifest_file  = "site.pp"
+  # end
+
+  # Enable provisioning with chef solo, specifying a cookbooks path, roles
+  # path, and data_bags path (all relative to this Vagrantfile), and adding
+  # some recipes and/or roles.
+  #
+  # config.vm.provision "chef_solo" do |chef|
+  #   chef.cookbooks_path = "../my-recipes/cookbooks"
+  #   chef.roles_path = "../my-recipes/roles"
+  #   chef.data_bags_path = "../my-recipes/data_bags"
+  #   chef.add_recipe "mysql"
+  #   chef.add_role "web"
+  #
+  #   # You may also specify custom JSON attributes:
+  #   chef.json = { mysql_password: "foo" }
+  # end
+
+  # Enable provisioning with chef server, specifying the chef server URL,
+  # and the path to the validation key (relative to this Vagrantfile).
+  #
+  # The Opscode Platform uses HTTPS. Substitute your organization for
+  # ORGNAME in the URL and validation key.
+  #
+  # If you have your own Chef Server, use the appropriate URL, which may be
+  # HTTP instead of HTTPS depending on your configuration. Also change the
+  # validation key to validation.pem.
+  #
+  # config.vm.provision "chef_client" do |chef|
+  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+  #   chef.validation_key_path = "ORGNAME-validator.pem"
+  # end
+  #
+  # If you're using the Opscode platform, your validator client is
+  # ORGNAME-validator, replacing ORGNAME with your organization name.
+  #
+  # If you have your own Chef Server, the default validation client name is
+  # chef-validator, unless you changed the configuration.
+  #
+  #   chef.validation_client_name = "ORGNAME-validator"
+end
diff --git a/test/vagrant/ubuntu_12.04_64/provision.sh b/test/vagrant/ubuntu_12.04_64/provision.sh
new file mode 100644
index 0000000..eda18bc
--- /dev/null
+++ b/test/vagrant/ubuntu_12.04_64/provision.sh
@@ -0,0 +1,24 @@
+su vagrant
+
+# Setup
+sudo apt-get update -y
+sudo apt-get install -y curl build-essential git
+
+# Install a multi-user RVM install with the latest ruby
+sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
+\curl -sSL https://get.rvm.io | bash -s stable --ruby
+source /usr/local/rvm/scripts/rvm
+
+# Add user to RVM group
+sudo usermod -a -G rvm vagrant
+
+# Install transrate
+git clone https://github.com/Blahah/transrate.git
+cd transrate
+sudo chmod -R 777 .
+
+# Install dependencies
+gem install bundler rake
+bundle install
+bundle exec rake compile
+bundle exec bin/transrate --install-deps
diff --git a/transrate.gemspec b/transrate.gemspec
new file mode 100644
index 0000000..41743ce
--- /dev/null
+++ b/transrate.gemspec
@@ -0,0 +1,36 @@
+# -*- encoding: utf-8 -*-
+$:.push File.expand_path("../lib", __FILE__)
+require File.expand_path('../lib/transrate/version', __FILE__)
+
+Gem::Specification.new do |gem|
+  gem.name          = 'transrate'
+  gem.authors       = [ "Richard Smith-Unna", "Chris Boursnell", "Rob Patro", "Julian Hibberd", "Steven Kelly" ]
+  gem.email         = "rds45 at cam.ac.uk"
+  gem.licenses      = ["MIT"]
+  gem.homepage      = 'https://github.com/Blahah/transrate'
+  gem.summary       = %q{ quality assessment of de-novo transcriptome assemblies }
+  gem.description   = %q{ a library and command-line tool for quality assessment of de-novo transcriptome assemblies }
+  gem.version       = Transrate::VERSION::STRING.dup
+
+  gem.files = File.readlines('files.txt').map { |f| f.chomp }
+  gem.executables = ["transrate"]
+  gem.require_paths = %w( lib ext )
+  gem.extensions  = ["ext/transrate/extconf.rb"]
+
+  gem.add_dependency 'yell', '~> 2.0', '>= 2.0.4'
+  gem.add_dependency 'trollop', '~> 2.0', '>= 2.0.0'
+  gem.add_dependency 'bindeps', '~> 1.1', '>= 1.1.2'
+  gem.add_dependency 'bio', '~> 1.4', '>= 1.4.3'
+  gem.add_dependency 'crb-blast', '~> 0.6', '>= 0.6.4'
+  gem.add_dependency 'fix-trinity-output', '~> 1.0', '>= 1.0'
+  gem.add_dependency 'colorize', '~> 0.7', '>= 0.7.7'
+
+  gem.add_development_dependency 'test-unit', '~> 3.0'
+  gem.add_development_dependency 'rake', '~> 10.3', '>= 10.3.2'
+  gem.add_development_dependency 'rake-compiler', '~> 0.9', '>= 0.9.2'
+  gem.add_development_dependency 'minitest', '~> 5'
+  gem.add_development_dependency 'minitest-reporters', '~> 1', '>= 1.0.17'
+  gem.add_development_dependency 'simplecov', '~> 0.8', '>= 0.8.2'
+  gem.add_development_dependency 'shoulda', '~> 3.5', '>= 3.5.0'
+  gem.add_development_dependency 'coveralls', '~> 0.7', '>= 0.7.2'
+end

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/transrate.git



More information about the Pkg-ruby-extras-commits mailing list