From 1d3dfd91b50bbfee0f25b1243a834f7f222c6d97 Mon Sep 17 00:00:00 2001 From: "Ben J. Ward" Date: Sat, 10 Aug 2019 14:07:40 +0100 Subject: [PATCH] Long read datastrore (#2) Add basic functionality for building, loading, and retrieving sequences from a datastore of long reads. --- .github/CODEOWNERS | 2 + README.md | 2 +- src/ReadDatastores.jl | 26 ++++- src/long-reads.jl | 164 ++++++++++++++++++++++++++++ src/paired-reads.jl | 31 +++--- test/human_nanopore_tester_2D.fastq | 40 +++++++ test/long-reads.jl | 38 +++++++ test/runtests.jl | 1 + 8 files changed, 287 insertions(+), 17 deletions(-) create mode 100644 .github/CODEOWNERS create mode 100644 src/long-reads.jl create mode 100644 test/human_nanopore_tester_2D.fastq create mode 100644 test/long-reads.jl diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..6cd0864 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,2 @@ +# These owners are the default owners for everything in the repo. +* benjward@protonmail.com \ No newline at end of file diff --git a/README.md b/README.md index 699bb0b..0aae453 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![MIT license](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/BioJulia/ReadDatastores.jl/blob/master/LICENSE) [![Stable documentation](https://img.shields.io/badge/docs-stable-blue.svg)](https://biojulia.github.io/ReadDatastores.jl/stable) [![Latest documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://biojulia.github.io/ReadDatastores.jl/latest/) -![Lifecycle](https://img.shields.io/badge/lifecycle-stable-brightgreen.svg) +[![Lifecycle](https://www.repostatus.org/badges/latest/wip.svg)](https://www.repostatus.org/#wi) [![Chat](https://img.shields.io/gitter/room/BioJulia/ReadDatastores.svg)](https://gitter.im/BioJulia/ReadDatastores.jl) diff --git a/src/ReadDatastores.jl b/src/ReadDatastores.jl index 599eaa2..eb53ef1 100644 --- a/src/ReadDatastores.jl +++ b/src/ReadDatastores.jl @@ -4,7 +4,8 @@ export PairedReadDatastore, PairedReadOrientation, FwRv, - RvFw + RvFw, + LongReadDatastore using BioSequences, FASTX @@ -12,6 +13,7 @@ const SeqDataStoreMAGIC = 0x05D5 @enum Filetype::UInt16 begin PairedDS = 1 + LongDS = 2 end ### @@ -22,6 +24,28 @@ end write(fd, s) + write(fd, '\0') end +@inline function write_flat_vector(fd::IO, v::Vector{T}) where {T} + n = UInt64(length(v)) + write(fd, n) + write(fd, v) +end + +@inline function read_flat_vector!(fd::IO, v::Vector{T}) where {T} + n = read(fd, UInt64) + v = resize!(n) + unsafe_read(fd, pointer(v), n * sizeof(T)) + return v +end + +@inline function read_flat_vector(fd::IO, ::Type{T}) where {T} + n = read(fd, UInt64) + v = Vector{T}(undef, n) + unsafe_read(fd, pointer(v), n * sizeof(T)) + return v +end + + include("paired-reads.jl") +include("long-reads.jl") end # module diff --git a/src/long-reads.jl b/src/long-reads.jl new file mode 100644 index 0000000..4fa2b80 --- /dev/null +++ b/src/long-reads.jl @@ -0,0 +1,164 @@ +struct ReadPosSize + offset::UInt64 + sequence_size::UInt64 +end + +Base.:(==)(x::ReadPosSize, y::ReadPosSize) = x.offset == y.offset && x.sequence_size == y.sequence_size + +struct LongReadDatastore + filename::String + name::String + default_name::String + read_to_file_positions::Vector{ReadPosSize} + stream::IO +end + +const LRDS = LongReadDatastore + +index(lrds::LRDS) = lrds.read_to_file_positions + +const LongDS_Version = 0x0001 + +### +### LongReadDatastore Header +### + +# | Field | Value | Type | +# |:-----------------------------:|:------:|:-----------:| +# | Magic number | 0x05D5 | UInt16 | 2 +# | Datastore type | 0x0002 | UInt16 | 2 +# | Version number | 0x0001 | UInt16 | 2 +# | Index position in file | N/A | UInt64 | 8 +# | Default name of the datastore | N/A | String | N + +function LongReadDatastore(rdr::FASTQ.Reader, outfile::String, name::String, min_size::UInt64) + discarded = 0 + + read_to_file_position = Vector{ReadPosSize}() + ofs = open(outfile, "w") + + write(ofs, SeqDataStoreMAGIC, LongDS, LongDS_Version, zero(UInt64)) + + writestring(ofs, name) + + record = FASTQ.Record() + seq = LongSequence{DNAAlphabet{4}}(min_size) + + @info "Building long read datastore from FASTQ file" + + @info "Writing long reads to datastore" + + while !eof(rdr) + read!(rdr, record) + seq_len = FASTQ.seqlen(record) + if seq_len < min_size + discarded = discarded + 1 + continue + end + offset = position(ofs) + resize!(seq, seq_len) + copyto!(seq, record) + push!(read_to_file_position, ReadPosSize(offset, seq_len)) + write(ofs, seq.data) + end + + @info "Done writing paired read sequences to datastore" + @info string(discarded, " reads were discarded due to a too short sequence") + + fpos = UInt64(position(ofs)) + + @info "Writing index to datastore" + + write_flat_vector(ofs, read_to_file_position) + + # Go to the top and dump the number of reads and the position of the index. + seek(ofs, sizeof(SeqDataStoreMAGIC) + sizeof(Filetype) + sizeof(LongDS_Version)) + write(ofs, fpos) + close(ofs) + + @info string("Built long read datastore with ", length(read_to_file_position), " reads") + + stream = open(outfile, "r+") + return LongReadDatastore(outfile, name, name, read_to_file_position, stream) +end + +function Base.open(::Type{LongReadDatastore}, filename::String) + fd = open(filename, "r") + magic = read(fd, UInt16) + dstype = reinterpret(Filetype, read(fd, UInt16)) + version = read(fd, UInt16) + + @assert magic == SeqDataStoreMAGIC + @assert dstype == LongDS + @assert version == LongDS_Version + + fpos = read(fd, UInt64) + + default_name = readuntil(fd, '\0') + + seek(fd, fpos) + + read_to_file_position = read_flat_vector(fd, ReadPosSize) + + return LongReadDatastore(filename, default_name, default_name, read_to_file_position, fd) +end + +### +### Getting a sequence +### + +Base.length(lrds::LRDS) = length(lrds.read_to_file_positions) + +Base.firstindex(lrds::LRDS) = 1 +Base.lastindex(lrds::LRDS) = length(lrds) +Base.eachindex(lrds::LRDS) = Base.OneTo(lastindex(lrds)) + +@inline function Base.checkbounds(lrds::LRDS, i::Integer) + if firstindex(lrds) ≤ i ≤ lastindex(lrds) + return true + end + throw(BoundsError(lrds, i)) +end + +@inbounds inbounds_position_and_size(lrds::LRDS, idx::Integer) = @inbounds lrds.read_to_file_positions[idx] + +@inbounds function position_and_size(lrds::LRDS, idx::Integer) + checkbounds(lrds, idx) + return inbounds_position_and_size(lrds, idx) +end + +@inline function unsafe_load_read!(lrds::LRDS, pos_size::ReadPosSize, seq::LongSequence{DNAAlphabet{4}}) + seek(lrds.stream, pos_size.offset) + resize!(seq, pos_size.sequence_size) + unsafe_read(lrds.stream, pointer(seq.data), length(seq.data) * sizeof(UInt64)) + return seq +end + +@inline function inbounds_load_read!(lrds::LRDS, idx::Integer, seq::LongSequence{DNAAlphabet{4}}) + pos_size = inbounds_position_and_size(lrds, idx) + return unsafe_load_read!(lrds, pos_size, seq) +end + +@inline function load_read!(lrds::LRDS, idx::Integer, seq::LongSequence{DNAAlphabet{4}}) + checkbounds(lrds, idx) + return inbounds_load_read!(lrds, idx, seq) +end + +@inline function Base.getindex(lrds::LRDS, idx::Integer) + @boundscheck checkbounds(lrds, idx) + pos_size = inbounds_position_and_size(lrds, idx) + seq = LongDNASeq(pos_size.sequence_size) + return unsafe_load_read!(lrds, pos_size, seq) +end + +Base.IteratorSize(lrds::LRDS) = Base.HasLength() +Base.IteratorEltype(lrds::LRDS) = Base.HasEltype() +Base.eltype(lrds::LRDS) = LongSequence{DNAAlphabet{4}} + +@inline function Base.iterate(lrds::LRDS, state = 1) + @inbounds if firstindex(lrds) ≤ state ≤ lastindex(lrds) + return lrds[state], state + 1 + else + return nothing + end +end \ No newline at end of file diff --git a/src/paired-reads.jl b/src/paired-reads.jl index 22a17b8..c8f4856 100644 --- a/src/paired-reads.jl +++ b/src/paired-reads.jl @@ -64,7 +64,8 @@ function PairedReadDatastore(rdrx::FASTQ.Reader, rdry::FASTQ.Reader, pairs = discarded = truncated = 0 - @info "Starting datastore build from FASTQ files" sizepos readpos + @info "Building paired read datastore from FASTQ files" + @info "Writing paired reads to datastore" while !eof(rdrx) && !eof(rdry) # Read in the two records. @@ -117,10 +118,10 @@ function PairedReadDatastore(rdrx::FASTQ.Reader, rdry::FASTQ.Reader, close(fd) - @info "Done writing paired read sequences to datastore." - @info string(discarded, " read pairs were discarded due to a too short sequence.") - @info string(truncated, " reads were truncated to ", maxsize, " base pairs.") - @info string("Created paired sequence datastore with ", pairs, " sequence pairs.") + @info "Done writing paired read sequences to datastore" + @info string(discarded, " read pairs were discarded due to a too short sequence") + @info string(truncated, " reads were truncated to ", maxsize, " base pairs") + @info string("Created paired sequence datastore with ", pairs, " sequence pairs") stream = open(outfile, "r+") return PairedReadDatastore(outfile, name, name, @@ -171,19 +172,19 @@ function Base.show(io::IO, prds::PairedReadDatastore) end bytes_per_read(prds::PRDS) = (prds.chunksize + 1) * sizeof(UInt64) -read_offset_in_file(prds::PRDS, idx::Integer) = prds.readpos_offset + (bytes_per_read(prds) * (idx - 1)) +@inline unsafe_read_offset_in_file(prds::PRDS, idx::Integer) = prds.readpos_offset + (bytes_per_read(prds) * (idx - 1)) -function load_read!(prds::PRDS, seq::LongSequence{DNAAlphabet{4}}) +@inline function inbounds_load_read!(prds::PRDS, idx::Integer, seq::LongSequence{DNAAlphabet{4}}) + seek(prds.stream, unsafe_read_offset_in_file(prds, idx)) seqlen = read(prds.stream, UInt64) resize!(seq, seqlen) unsafe_read(prds.stream, pointer(seq.data), length(seq.data) * sizeof(UInt64)) return seq end -function load_read!(prds::PRDS, idx::Integer, seq::LongSequence{DNAAlphabet{4}}) - seek(prds.stream, read_offset_in_file(prds, idx)) - load_read!(prds, seq) - return seq +@inline function load_read!(prds::PRDS, idx::Integer, seq::LongSequence{DNAAlphabet{4}}) + checkbounds(prds, idx) + return inbounds_load_read!(prds, idx, seq) end @inline function Base.checkbounds(prds::PRDS, i::Integer) @@ -193,14 +194,14 @@ end throw(BoundsError(prds, i)) end -firstindex(prds::PRDS) = 1 -lastindex(prds::PRDS) = length(prds) -eachindex(prds::PRDS) = Base.OneTo(lastindex(prds)) +Base.firstindex(prds::PRDS) = 1 +Base.lastindex(prds::PRDS) = length(prds) +Base.eachindex(prds::PRDS) = Base.OneTo(lastindex(prds)) @inline function Base.getindex(prds::PRDS, idx::Integer) @boundscheck checkbounds(prds, idx) seq = LongDNASeq(prds.readsize) - return load_read!(prds, idx, seq) + return inbounds_load_read!(prds, idx, seq) end Base.IteratorSize(prds::PRDS) = Base.HasLength() diff --git a/test/human_nanopore_tester_2D.fastq b/test/human_nanopore_tester_2D.fastq new file mode 100644 index 0000000..4b28744 --- /dev/null +++ b/test/human_nanopore_tester_2D.fastq @@ -0,0 +1,40 @@ +@channel_346_read_183-2D +AGCGCAGGACTCAGGCAGACAGTGACAAAGAGGCTGCGTAGGAGACAGGGATCAGGACGAAGTCCCGATTAGCGACGCGGCTCAGGGTCTCAGGCTCCGAGGGCGCGTCTGCATGGGGGAGGCGCAGCGTTGGGGAATTCCCCACTCCTAACCATTCATTCTTCTCCCAACTTGTTAGGTCCTTCTTCCAGGATAATCGCATCCCCTATTTCCCACTCCCATTGGTAGTCGGGTGTAGAAACGAGACATCAGTCGCCGCGGATGAGTTCTAAAGTCGCGACGCACCCCACCGAGACCCGGACTCCTCAGACAGGGATGCGTAGTCAACCTAAGCAAATGCTTCTCGTAGTGCTCGCGGCTCTAGGTGAAATGAAGACCTCCGTGAGTGCGGGTGGGAGGGAACTCTGAACGTCCCTGGAGAGGCCAGCTAGAGTACGCAGGCGGGGCACAGAGACCGGGGAGCCGCGCCGGGAGAGGAGATCGTGAGATCTCCATACCCCTCCCGCCCCCAGGCTCCCACTCCATGGCTATTTCTACTGCCATGTCCCGGCCCGCCATCGGGGAGCCCCTTCATCTCAATCTACGTGACGACACGCAGTTCGTGAGGTGAGGCGAGTCCCAGAGGAGCCGCGGGCGCCGTGGATAGAGCAGGAGGGGCCGGAGTACTTGTTGGACATGGAACACACAGATCTGTCACATAGCTCAGGCACAGACTGACCGAGAGAGCCTGCGTAACTGCGCGGCTACCAACCAGCGAGGCCAGTGAGTAACCCCGGCCCGGGGCGCAGGTCACGACTCCCCATCCCTAAGACCGCTAATCTCCCCGAGTCTCGGGTCGAAAGATCGCCTCCCTGAGGCCGCGGGAATACACGGCCTCATATCGGCTTAGCGCGCTCACGTTGGGTTTCATTTCAGTGTTGGCCAAATCCGCGGGTCGTGGACGCGGGGCGGGGCTCGGGCGCCTAATCTGGGAGCGACGCCATAGATCTCACACATGATAAGACCATGTAAGCTGCGACGTGGATTCCTGCATACGGGCAATACAATTTGACGCTACGGCATTCCGGAACCATCGGCTGAGGACAAGCTCTTATCAGATGAGACCCCGGCCAATAGAGGCTCAGTAGGAGCGCGAGTGGAGAGGCCCCGTTGTAGCAGGCGGAGGCCTGGAGCGCGGAGGGTTATGGCTCTAGCAGATACCTGGGGAACCTAAAGATGAGGCCACAAACGCGCAGTGGGGAGCTTCCGATACCGGTGGATGAGCCCGCAGAAGGAAAGTGCTCTATGGGGCTTCATCGGGGTATCGGGTTTCTGATGAGACAGTACGTATGTGAATTTTGACGGTTTGAGAACTCTTCCTGATCTAATGAGTTTTCCTGAGTTTCCTCTGGAGGCCCCTCTTCTCTCCTAACAATTAAGGGATACGTCTGAGGAAATGAGGGGAAGCTTCCTAGAATACTGATCAGGGATCTCATTTGACCCTGCAGCAGCTGTGAACCGTGATTTTCCTCTCAGGCCTTGTTTATTGTGCCTCGCACTCAGTGTTTGGCTGGATTCCATAGTTCTGAGTCACTCTTTACCTCCACTCAGATCAGGAGCAGAAGTCCTGTTCCCCGCTCGAGACTCGAACTTTCCAATGAATAGGAGATTATCCCAGCCTGCTTGAGGGCCTGTGTCTGGGTTCTGTGCTCGTTCCCCACCCCAGGTGTCTCTGTCCATTCTCGAACGATGGTCATGGGTGATTCGCGTAGTCGCTGAGAGATGCAAACCGCCTGAATTTCTATTCTCCATCAGTACCCCCAAAGACAAATTGACCCACCACCCATCTCTGACCGCTCAGCGCTGAGCGTCCTGGGCTGGGCGTTCTACCCTGCGGAGATCACACTGACCTGGCAGCGGGATGGCGAGACCAAACTCAGACAAGCTCCCTTGGAGACCAGACAGCAGGAGATAGAACCTTCGAAGTGGGCAGCTGTGATGGTGCGTTCTGTAGAGACAGCAGAGATACACATGCCGTGAGCGACCGGATGCCCCGAGCCACCGGGCGGTAAGGAGGGGGATGAGGGTCATATCTCTTCTAAGGAAGGATAGCAGGAGCCTCGTTTTCAGCAGGTCACATAGGGGCCTATCTTCCCCTCCTTTCCAGCCGTCTTCCCGTACCACCGTCCCATCGTGGCATGTGTGCTGGCCCCTATCTGTCAGTCCTATCATCGGAGCTGTATTGCTACTGCTTGATGTGGGTGAGGAAGGCTCGGGGAGAGGCAGAAGATGGAGTGAGCGTTGGTTTAGCACTGGGGGCTTTCAATCGAGTAGAAGTGTTCCCCTGCCTCATTCTGGGATGCAGCATCCACACCCGAGCACTCGCAGCCTGGATACCCTTGTGTGCCATAGACTTACCTCTTTGTGCAGCACAGTCTGACAATGAAACCGTATCATTATTTGATGTTGCGTAGTTCCAGCATTCATGAGTCAGGGGAAGGTCCCTGCTAAGGACGACTCTTAGGGAGAGGGATTTTGTCGTCCAGGACCCACATTGCTTTCCTCGTGTTTCCTGATTGCTCTGCCTTGGGTCTTAGCTTGATATTCTGGAAATTCCTTTTGGGTCCACCGACGAGGAGGTTCCTACGATCTCATGGGTGCTTCCTCCCATCGCACTAAAGAAGTTCGTTGCTCCCCAATAGAAAGGAGGGAGCTACTCTCAGGCTGCGTGTAACCTTGGGATAGGATGTAGGGGGTAGCACGCGGGCTGTCAACTGTTAGCGTCTATGCGGGCTCTCGATTATGTTCTACTCCGGAGAGCGACAGTGCCCAGGGCTCTGATGTTGTCTCACAAGGTCGAAAGGTGAGATTCTTGGAGTGGCTGTATACTATGGGGTGAGGATGTATAGCGGTAGTAAGCAGTGGGGAAAGGCCTGGATGGAGATTTCTTTGATTGGCGGCTTTTCGCGTGGTGGGCGTTAGAGTCATCATGATCAGGACTAACCAGAATTTGTTCAGTGACTGTTGTTTTCTGTAGCCTGAGACAGCTGTCTTGAGGACCCAGCAGATTTCTTCACCCCTCCCCTTTGTAACTTCAAGAGCCCCGGCATCTCTTTCTGCAAGGCCGAAGCCTGAAATGTGGTCGCGTCCTAGTGGCACTTGAGGAGGTAGAGAGACAGCCCGCTGTGTCCACTGTGACCCTGTTCCCATGATGCTGACCTGTGTTTCCTCCCCAGTCGACCGATTCTTTCCCGAGAGGTGGGGCTCACAGTCCCACATCTCTGTCTTAATTTACGTGCACTGGATCATGCAACTTCTTACTTCCCACTGAAAATAAGAATCCCCTGACCAAATTTGTTTCTCAAATATTTGCTGAGAGGTTGATGCATTAATTATAAATAAGTCAATTCCTGGAATTTGGCGCAGAGCAAATAAAAACGATTTCGAATGCATGTTCACTGTGCTGAGTCTGTGCAGGTGGGGGCTTGAGAAGGCTGTGGGGGCTGTATAATAGATGTCCCGTGTTGTTGAACGCATCATGGGCTTTATGTGGTTCTCAGCTGGGTTACCCTTCACTGCGCATTGTCCTTGTCCCGCCGTCGACCGAAGTGCTGTACAAGTGTATAGAGGCTCACACATCGGAGGGGCCCCCTGCACACGGGGTCTCTGTGCATTCTGGGACAAATTTTCAGAGCCATTCATCTCCTGCCTGCTTCACCACTCCTTTCTTAGCGTCTCTGTCGTCCTCTCCTGCTCGTTAGATCGTGTATTAACGG ++ +%%,,/(((*'-*,**/.,3-0+))+')0,,,+*,,+.-+')'('0)),--4/.+))3+)*)),((((*,+(,+*31,,*.**1--')+**,/,+/,,*)+**),,++,*++,)*++,+(*'(),/1+,/321/.),,.0-*)+,(+*)(*))++)+('*.0//0,((*)-++)**,&)&)'(+.0/2'04,+/+(+()+)*))*))'+.57-,+.*(')*),,+)((,.+),,*+*(,2+0,+**)(./+*+0+-..++((),**)/31+..+***+.-0/,+*)()+**))*,,-.,*,*,+)-+06-0**,+(+.*+(+*-2401)*))+-.)-/**)).+*,,*(***+)(*+,,((((&&')+*0*+,))'**)(('())((-*,*(&*()*..-/6.(()))..+*,+()/**(()(,()+-()&))),),-11,/.,,+,+*))(''((*+,))-,)+++,.+*,-*,&(****-+,-+(()*,**,))*(*)*-,)(+-,+*,.*)+--++**-/12-*.-*/588.),*11*-0//-+***,-,,.+*-,+,,,-+*+))*..2/,*(**)****,.*+--*.05++/-+1-*+(*)(()'(())*+,.)((++,-)---+.2,+,+-.(+*)()*')+14/+)*(((()())+-,*)+,)()((/)((('/+*-(/-+(-,*))++*(*(&()(+**).(,**,++/4**)*+)(***+,-,+')-,-+1-.*+,)))+*/*+),,++)*)*++,,++*'*')+,,.,++)++.,,*,*)0.,*)+(0*+++)1('*()((*((+)&())),*)))*)+.+)()+).,(()&)..)'*),)'))(((*(*,+++*,,*)'*+)()**,+)*+**.)(&%*)*+)(()(('*('((.1.-*,32-,()*.,+(((,31,'(',()))(**('()*+'((-,,+*'***'((()')'),*)-*(''(+'('(('()&((+)*--+.,(('(''''.**-+)(''(,+*(')*(*(''*0')*()'''()),*()('**./0*/1+)('*)(()($0)(-.0*&'**)()('''('3((''*(***(*/,,/+'(&'())**)+**'&%)'((&'''''&''))**)''(+(()(''(&&((++(('%)*)'*)()))))*+)''))+*'&()))+()*)*+()%'*,-(-+))+.*,)')/&&$)0)'*+)((**,-0,)1.*)-0,),((')))*',')(,)''(('*((*('((''(*)))*+((*+)(((((*'('('')*)**()())(')*)'''')0+()*,*).).'*'('')(**(),4,)+)+--+*))))***/5-)',1(-'**)(&(,,-(),066*,++((*52+**-.+))(((''(),**,,.*((&),172.(((()))()*(-*,++-366/-++)**+6,***+)(&'.3,*(),,030-+*)*-)'**)/+-*((+/,/*.*-)+-(-/+$*(+,+00777,)).,1-*-**+(+,)()++++''(((,/,+,2-+,./.,-/+,)&*-4*))'&(1()*)+**+)'(')+)'',,,,1+*/,+/-**)()*+,/0,,,((((.-**(*+*))**+.**+*),-*65-(.//02.*'-+,)/-),/,*+*),+),))***((()(**)+,*.+))+/./01,++*,+.*)(+*)*)++*)+,-****+*),///1,*(*)(()-+)-+*-,*)+)*,+(**,)((+.*****//.//,/)-0(*-+-/085280*&()//0+,123.)*+(*+,.*.)(1..8,,+))()-/+./++..2/-,+,-,)(,(**)+)**)((,-,(+***+**))++-010())(+-.,,+**10-)).-*+,,***-.1-1+*)*,*++))((--573.+1015))()*)''(()*))(.)).*,(*(1,+++(-)'0-**)**)-3.),)(*-/0+++*')((*,2/.-,,,,'&(++*(.063*,-1.+(3/0/,0)**)(**(-()((()*++('&%(+**())*+*))))++**++)((),++,,+0,)'*,(*--0,'(()*0,+(-+(*+'(&)''')),-.,+/*,1,)(-,('((&'&&''*')+*,/,((,/+**01)*,,+)+,+.0,**)))+*+')/*(*,)+**,+),-)))++*.))++)()')+**,,**(,-*'$$&(,*(*())))))+*-++..,,*((((*,,*'&'(*+(4,,*)((*((()'()*+)-.*-./,*())'((*(,**)*/'&*(+-,0+(-.*)563,)+((+/.+55.+.,770+)+/0.),/*,)+.*))*(*861843-.50))()**-+-,))*,++,*-,))),'(*(--/0/2,.+,)*+)++)(*+0+528886212*--+,(++4384442)/)(**..,/,())-*-.-+1/0.-)'(**)*+--/33/-,+*++-,**,/6,((*'(*-)+')))'.+(*')**)')))*()))')+0,*+++-.((*)))'(+,0,)**+-66..,-,/.377,,,*-*))(',*1+*+**))+*,)'))()))))*-*,,.7*004)()03.+,+.*+*((*2,)))+-+*13++(*)((.++-,**')*,-.7,).-(*%+))0+*&+1)*(**2.)+++-,.-)+-0/+'.36.,++++)**((*)*+*1.),+-.-+,+*+(')*+*)))(&)'),,*'+'('''&)-0.,.*+***())))),/-)&***,*&()+*))*)**'**-,)*+,-*+')****((()*,/.5-.*0-*+.-+)-,+-,.,+(+(/2/),)+)(+++))4/'*())+-32/.+-*))**)(())(*(''&(*())(*))''))+)('&))('&&(''(*+*),**,)01+***)+)''()(**,*,*+)**+*-+)(+(*+*173,*..-*)+)*+-..,'**+/-1--+.',+,+)++)(.,,/056933/142.,)*)0..183998880+,*(+,+/..1800+++14/,++))(-())*+0-+.,510.*1-&'(),,))*+21/+)))+/0-)+'((&())-//-)(,*21//..+)(*''')(*''/01611--+)+),.-.))&'(*('*))*)+****'''&))*.,2-///(((.,/,-/),+*---*,((+-/770,,)*,+)))**,*-.,+,-06*,,,+*--,,)(((*)**+)(.2-+)))+)''*(((0*(+'*+(,'*/1.3/+),-/.-*)*+-/)((*.020*+)'(-')+1-*+*)++*,+,05,,+,+./4)3/,+-)86.*((-,+.--/11.2/11211+349./0/6/,+*/***,*,-,,*)0*-//12),*,70/.,,111,29+.///9/-2++,*1+++/39484.)-*)**)**30*)00.,6310//+)+./000..,-0-,*/3/.)(***+***((++.5/-,,---***(('&)()(()'&(()**(),+-*-+.0-*((***//-++)*.,,/,+-,,+,-+-(,+*)+(().)*((++--,+,)+)+,***/)*)*,0+*-*,*(*)()(''+)(*+).---+)'())&)'&(*))*(,106650,('(((((*((,/246.,/,+.+*...44336853.0-+)*),.9921916--,/102/31-/(,.,,,,,1-,+**+()+)-+./772+(&(,(+(,*))-)(,'+*-.)+,+,*,)*)'))+))***)*+,.*%% +@channel_139_read_228-2D +TAATACAAGTAAAAGAACAATTATTGAATTGCCGAGGTCGGGCCCCAAGAAGGACATGTTTCTGTTGTAGTGAGAGTCTCCTGGCGCTTAGTTTAATAATCTGTCTAAACTCAGCCGTCTCCAGGGCTATGATGGTAGGTACGGCTTATCGGTCCTTAGTAGCGGTTAGCAGGTGAATATCCTCTCGAGTCACCACTTCTTCCCCCTTCGCTAGGTCCGACTTGGTTCTTTACCCAGATAATCTCTGGCGGTCCTCCCGTGATGCATGCCAGACAATGGATTATGGGCGATACATCTGCAGATATAGCTGGTTAGGGGTTAAATGCATGGATCAGGAGTGAGGCAAGGGTAACGAATTGCTCAGCGAAATTACCGCTCGCAAATCCGATTAGCGGGGTAAGCAGTTGGATATAAGGGGTCGGCTTCTTGTGATCAACTATTAGGGGAGCATAGACCTATTAAACTACATTGGGCCTGAGGGTACATGAGCCGCTCGCGGTGATATAGGGAGCAGCTATCTAAATATGTGATATCGATCGCTGTCCAATCACAACCCGGAGTAGGGATCGGGCTCAAGGAGTGAAGGAAGACCATTAGTCCATGGGCCGCGAGGCATTACGACACTAGCATGCATGTGGTATAGAAGAAAGAGTCAAATCATACTCTGATACTCGTCCAGGGCTCCACGCATCGCACGCTAGGAGCCTGTCGGTGAGGGGAGGCGTAGTCGGGCGCGCGTTCCGGGGAGGAGCACGAGTTCCGCAGATCGTCACCAGGGATGGGATTTCTCGTAATAATCTCCGGCCGCGGGTTCCTTAAGCGCCGCGGGTAATCGGATTCCCTTCGCCTCATCCTAGTCTCTATCAAGTGTCGTTCCTGGCAGGATGCTATAGAGTGGGGACTGGACTCGATGCTGGGATACGGTAGACACAACTCGCTAGGCACACATGCTCCAAGCGGTACTGGTCGCTTGCTAGAGAAGCTCCACAGTACCTGGCGTACCCACAGCAGGCGCAGTCACCTCTCAGAGGCACCCACACTGCCCCTCTCCTGCAGCGTTGGTCTCCAACATTCTTAGCAGGTCCTGGTTCTCCCCACTAGACGGGGCTCTGGATGTAACACCTGAGGCCCTGCCTATACTCTGGACTCCCACCCAAGTGGGGACAGTCATTGGTGGCATTGAGGACTAGGCCTATTCCGGTGACGAGCGGGCAGTAGCCATGCTGGGGCTATCACGTAGTTATCTAGCTGGGCTCGGAGGGCCCGGCTATAGAGCGTGGCCGAGCCTTGATTCGAATCCGTCATGGGTCAGGCGCACGGTTTACAAAGCGATGCTACTCATGAATCACGGCAGCTTATGTGAATGTACTATACTGTAGTCACCATCTCTGGTCGCCGCACCTGCCTATCACGTCGTCAATCTCCTGTTGACACGGCCTGGGAATAATCCGTGCCCAACAAGCGCGCGAATGGCTAGAACGAGCGGTATCAGGCGGTTTAAGAGATCCTGAGTACCCCGTGTATGATCCTGTCGTCAGTGGAGTGTCGCACAGCCGTGCTCCGCCTGTACCTTCCTCCTCCCTCTCCCTGCTACTGTTTCCCAATGCTCACGCTGCACACCTTAGGTTAGGATCAGTAAGGCATAGGCCGAGCGTATTTAAGGTGGTCACCATCCGACCAGGAAAGAGGAAGGGAGATAGGTCGCGCAGGATTCGGAAGGAGGAAGTACGCTCGTTCTCAGGTTCCTAGGCCTAGCAGCGATGATACTGGGACAGAACGGGGCTCCCCAATGACTCCAACTTCTGCACCTGTCATCGCGTGGCCTCCCGCTGGCTTCATATTCCTGTTTTACATCCTCCCCTCATTCCTCCTCCTCTCGCATCTCCACCCATTGCCGCTCTCGGATCTTAAGCCCTCTCACCTTCTCCATCTCTGCGGAAGGCCTCAGTCAGTATCCTATGCGTTCGCATCGTACCAGGTCATGACCGTGCTCAGTTAGCAGCTCATCCAGCTGGATTAGGAAGCCTTTGGAAGCGTACTACCTGCCAGCCAGCGCTGGTACGCAGTGCACGCGGACAGCATTCGGCTATACACCACAGACAGAAACGGGGTCTCAATCCCTCTCTGTGCTCTGCGTTCACCTCGTGACAACAGCCCCAGCCATCTCCAGACCCGCTCCCCGGGGCTCAATTGAACCCCCACCACAGTGCGCCCCAAGCGCCACCGCGCCCTCCTTGCCCATAGAAACCTAAAAATGAAATCTGACGTGATACCGAGTACAGTCATTGGCTCTTCTGGTATCCGAACCGGGCACTCTTCTACCACATACGATGTCTAGATGTCCCTCCTCTCTACGGCCTTCTTACGTGGGGTCTCCTGAATGTCCTTTCCCAAAACCCATCTTGAGCAAATCCTGCTCCAGATGGCCCCGTCACTCTGGAGCTCGCGACCTGCAGAGACTCCTCGTCTCGCTCCGCAGCCTCGCTAGAAAGCCCGACTCCTCCTTCAGTCCTCCTATAGTTGAGCATACTGAGGAACGCGCTTGGTCGTACTCGAAGCGCGCTAGCCGCAGGTGAGGAAGGATTAGCTTTGCTCACGTTGTCCAAGAGACCGTTGGCGAAGCGGAGGTCCTGGGGGAGATCGAGTCGCCTTCCCGTCCGCCTTCCCAGTTCCCGCTTTGTGCCTTCTGCTATCAAGGAACCGTGGCGGGAGGCGGGAGCTCGGTTACCCACTGCTCCAGCGACTTCTGTTGAGTAAGTTGCGCAGTAGGACACGTAACAGAAGCGCGGGCCAGCGCTACGCGGAATCCGGGGTGGGACGCGGATGCGCGTGGCCTGGCAGGGATAGCGCGCGGAGCCCCGCGCGAGCAGCGCGACTCCCTCTCCCCTATCTCCCGAATCCGGACTGTGACGTCCGGGTCACAGCGCTACTCTTTGTGCATCCATTGCTCCCTTGGCTCTAAGCGTCAGCGTCTCTGCCCTGACGTCCTGGCGGCCCGGCGGCCCCCACACCTGAGCTTACAGCACAGTGCGGTCCCCGCCCCCTATTCGACGCCGTGCTGGGAAATGCGCCCGTAGCCCATTGCTCCTGCCCCGGTCTCACATCCCTATGCGTCACCTCCACCCTCGTCCCACTGCTCACTGATCTCATCGTTGTGACCACCTGTCCCTCCTGGCCTGTTCATGTCTAAATCCGGGTATATCACCGAGCTCAAACGCTTAACCAGGACGCGTGACCGGCAGATCTGTCTGGTCTCGCCGTTAGTTTGCTTGGGACCCATCAGGAACGAGGATTGATGGCACGACTGGAATGGCGTGCATGTGCACCGTGGTACCGAAAGGTAGCTGAACGCGCGCTCGCACTTCAAGGTAGGGGTTAGAGCCAGCTGCGGCTCACCGTTACACGATCAGACACATGTATGCGGATGAAATTAGGACGACTGTGTCATACCCGGATCTACGAATATAGATTATAGTCTATTCAATCCTGGCCAGGGCTGAGGTGGAGGGAGGAAACGAGCGGGGGATGATGGAGGAACGAGCCATGCTGGGAAGGCGTTACATTAGAGTCACCGATAACCTTGCAAGAGTCTAGATCCAGAGGCCCGGTTAGCATCCCTTCCCAGATGGTGAGCTGCCGGTGTAGCAGTGAGGCCAGGCTACCAAGGTGCAAAGGTTTGAACTGTATACTGCACCGCTCTTCATCCTCGATTTCGTGATTTAAACGGCACTCATAACTAACTCATCTTCCATTCCCAAGGCCTTTCCTTCTGTCAGCCAAGGGATTTGTACTCCATAACGTTACAATGGCTTGCATGCCCACTGCCATTCCACTCCACCTCCAGGCCTTGCGCCGCGCCTCTTCAATCTCCTTTTCGCGATCGCGTTCGTCCCTTAGATCCCTTCTCCCTAGACGTCTCCCCAAACCTGCTTCCTAGTCTCAGCCTGGCTTCTGTTGCTCGCTGTGGTTTCACCACCGATACATGTTTGCTGTTGGTAGGGCGAGCCTCAGCACCTCTGCCCCTCCAGGTAACCTCTCCCTCACTGGTCGAAGCAGTATGGTGTCGGCGGTACATGCATAGGTTGCCTCATGGCGGGCAGTGGCAGGGGCCTGTAGCGTGCAGCGAGCCGTGCCGCTGCATCAGATCACCAGGAGCAGGAAGAGCTCATATCACGGCCACCATGTCACTTCTAGCCCATACCTGCCTCACTCAGTGGACACCTCTAACCCTCGAGCCCACCAGGCACAGAGGACCAGGCAGATGCGCCCTACGCAGCGAGAAGAAGCTCTCCGGTAAGCGAGGAGATAGCCTTTGCCCTCTGCTGTGAGTGAACCTGCTGTTGACTGTGCTTCAGTGGCGATCATGAGGGAGGTGGGTACTCCAGGTTCTTTGCCTGCTTCCTGCTCCAGGCCCTTACCCAGGTAGGCGTGAGGCCTATTCAGAGCGAAGTCACCGCGGCTCTCCCCACTCCAAGCTCCTGAAGCCTGCAAAGCTTT ++ +%%))))+'''()-)')1(())('')()++))'(')**,))(')'%*)'(,))'((--/110/*/0/+(&%*++,+(+(,(,++-+**+*'(*.+)*))+/+**+)'('*''*))-)+,*+)).((*(%*)())**(&)'')*),(''(('(),'(('&''&'(((*)&+((&'&*0,*+)&'')&(&&(*('&')'+)-,-'''''(+*,,('))%)))+**+'()*-)+*(+(*+*,(()+))/-,-+((*(*/+-)+,))(+'-+.,*+,3+6/-+()+))))*,+()('*,,*,)01),*)(&))*((*('***(+((0))+++++*,)()))('*),-/4..+++.,.+)%*+,-,)+**+-20.*()''(('(/4/66/('()*('*++*,,,40,.-**)*(*'(()))(+'+()*+.-+-,,+*)--12*')*('*()*-11*(',+'&'&+'(.-)(',/,-)&'(''('('&&'(''''(''()((((''('''''&*)(+,-('(&+*'&'*(&)((*((')*(''*&()++,*(''')*.+3*''(((('&+*(*+)))**+,'((((((*-)+)1*))'))*)'(+(()**(*+)**)*++,,**')*+*)*)).2.0,,--**)))')(06.13)+,*)**)2+**(()()****((*(++*'(+''+)*+*(()-,,'(*,)+*&&)'(()()-+'('('')**++)(,((%($')'(((()(').')')('(((((((&&((.-((),,*/.&.-')'))'$'(,+)'()-,+*,(*(',)+/)/(()*()*))')-0*.)($'(+)(()*)(''**.((,,,*)*-,,%()((,+/+(&&(*('$'()((((++.,055(*++-1,)(,0-+'+'&')(*))),0'(('0(()'(*)+*((')()**')&*3-/0*,('&*(&%))+*)-()()'((*.())'()*()))+(()(+&,''(*-2-,1-,'1/./*(')*)))/-**+-..0-5-+-..4,,+,+))(,)-)*++*/.,,+/1/)*++*)+*2-(+-0/,*+,1-)(**(**,)+*-/0+('00/)),),,,*+((+++*,/**(+4*),(**(.*+,-,+''-**))))'(*)(),,*)))()*),,+)0(())*)+)-.,).*))./+1+)+()))(,)*-.)*)(((-)'&(**('+/1(()())((&'(('(-/.()&)+*+,-++'&&)(')**(()('(*)(*(&&*,.()(('(+)*(')'''(((&)(&)'(*(*(+(('('()'))+.,)(+**((),)((('())''(()*-)&'(-''()/+*(&(+*)'((*,*)*+,+())()*'*)&((*)+-,++-)'''((((*)(',0-)''*1...,-(*()**6+)(*,+**(+-+())+)),*)+,)+(--+-+(+'/)+()()')(5*)'-+)**+('())(,.*)+*))'&$*''(*&&&((&'(()'(('(('&&&'(,-))(('(+,*)))'*('''(()+)('('(*))+)$'+()(())()')+,)))-*,0*)))()))),,**+(('())()*)(,-))'+()(+,**')++*+45))*'*)))*,-,0./21-+('()(')(*(&++/-*('(())())'&(()'(()*((')+(''''*('+)'')/.**)*'*((+24*,))&)(((''&-+$*'-++*0*-+(',,%)&)()&)'(.*)(+)'-$()*(**,/('04()'('+)((&*,-,,+**(-*))+*().+(.17.+*())(*+-01.-,.,+--,-**...+-+)-,,,-+,**+)*(*)(+*)(,++)),,,-+(**0,++*-..*)+.-')+*('$*+**))),()*))***)..--.***'((++**+''())*,),+,,/)((*+*(((*(+')(*++,***.,+,,))()-*''(('-*((0-(())''&()((($$'%%))'((''()().,)&')'*--)*(*-()(&.-,)+(-(,)*)*+,*,++((..4(((()1,*+2,*****(&'((*++(-.-/,+,+10.',)**2-)))*3***))-)*)+*+*(*()'()))+)(+-/,1*))+011)))(,**.431)'((,,.-*,,+()-/11.0**()((*+),-+(*+*++*+-+,**,*)))-)**(,,)))+)))((((%)),+,*(+()'',-*++)*(*(+)*,-.-+)*+++*))(*(('&()**,+()++(&*/,.()'*6665--0*12,+*./*-*)))'(()++-,-)')(*,,-,**+-)+)'$',**,'+(+--10.)()-0)')(*,*)'('')+-,+'&(**(*&''))'+,+,'')*)*)++,)*+()*(('(+*.(+///-().***56,*-05)1)))+,*,+(,01/*47),-/**+,1.***)*(++--,**)**().*+((**'('*2361)('*(,*,)))*)((*+*+*./*(*(())(&$).2,)''((*(+()+**,+,)')&(**(%'('**''(+/*((')('((-*(''(('(()-(**(+++*,,*,))('%&.,.23.)*)((*()()(,)')/,+,,)'),,+*,,.+))/.***-())+*))*,1+*))(($(,(),--+*,,,..*(())()*().))),,)(++*./+))(*55)((***.-++*)*++*+**&-*+'(('(*',(*'(()(((')''((')))*+)+))))*+(*')***+)*)-*,+*()*()(((***,.*++.-*)'**/+/*'(''())/)(*)+))+)()*.,+'*/++,.5-'(('(((*)''-)*+('))'))((*&(*).*+,,)((+(%+*)*,)'*)(('(('(((')+)(((,*()(,((-,0/()('%)*),))*)*,-+)('*()%,('*),+****+--0.*+)))(),.*10/0.1/.+.,+,.-,*'*+)((*)+'**)+-*('((+.,*,+*+(()(&(+'&),*)('')()(()(())**,/--((*++,--///.,,(*/*+,,**.)()*,-,+++(*//-,/)*+**+())*,06+0/,/++)()'&)+()*,))).*+-))(())))**0-*++''(&(-%)+,*('(***)()(((,-))()++,*()((*((*(++*('')('*+.+-*',./+*)+))))')*(*+-*,*(*+)&'+))(((''&''*+--)*(((%'))-)*(*''()(+-''()((*+('(()+++()+*+,-*)'(.('(+-,/,)(*,,,+*(**()/)())),()%*)'()*)+-+*-,))-/-)/())')+*++,-*(*('),.,('(+)()*()*+4.((('%')()*(()*))).('+,,,)'('&&&(&()**+'&''(&')*+,+,)'''*(()-,(''-)(*.,+)*'(')))+(()+(&',+,(,+'''(1+(*(((*./-*(*&''(')*'%&()+)')&%&(('((&(*)'(((*+-+''(('('&'()'((&&')('((()))'*))'((),(('''*('),)))**/,)(()('((((((((**'(*,-+)(*)'''))*'(&'')'*,)+,/1/')')()(&&)+,(((*)(()'(()+(',+)-(($)-++,0)-,&&'''()+--,)'*-(&,.+)+)*)+)(*'((&)*+*),)*++)-**)*/,-0//,+**(**/+.*)))(),.02//*,**)+-01-,-+-/923992240/**1.++.,',+,-2,.,,+,-005/,()*)***-3/--00-*,--+)-,.**('+)+*+,*+*,-.*/))(,))*,//,,0,//+++,+,.2-.--,+)*('+()*)))+,+*,))(+-1-0),,./)))+-./4/+*(*+,,0.,)+*((('($(*,*)+('')(&(+0*))+0,,)(''&(***+)+)(*,*%1(*,*-,2+*&')-+/-+*+)))*+).-/-++*+('+0.2.-+-511.*(*'(***(*+++++++++(*(((-(,).*(*)***.)--+)()*++*''(((*+((*)*()).,,+++-)*-++2--0./32//0.*)**)''()(*((),,,1.)'(),./+*)-,+))+),01.+*--/.+++-*(*+)(+-+.,0/-,*)-++..,++),+0422/,)(---*+0+))-//.16+'(''')('*--0-*(+**'(*))-+)))-*&()))++)+(*,*+)+/-)'*+())+-('&('(&(*(()))(((((+,,*.).,)(***)*,&(-)),+&'+&))(&&'()*)'+*)**))*)+)+*)+)())(*-**())**')'&((),-.,*))+.-,+*)+((*()+,((,-,,,.-,/+---+*)*0-*++**'**++((()(()''(*())''())*(),.0.,-*))+/.,5**+()**+.)))'')))))*-(')'(((-+,))*&'&(+)-,)),)()*'*+*'((-()((+++*),.*,,,,*'(())+,-,,-,./.-0++*)%% +@channel_140_read_150-2D +TTGGTCAATACAAGAGGCTAGCAGAAGAGGAGAAGGAGCGAAGCATGCAAGTGAATTGAAATCGTGGAAGCGTGCACAGGATCCGGCATACCCATCTAGAGCCGAGCGTGTGCTCGCGCTTAGAGCACAGCGCATGGAAGTAGCGAAGTGACAATCTAAGTGAAGTGATATTATGATAATAAGATTACCAGCGTGGCTGTCAAAGGATCGGGCATGGAGGGATCAACAGGCCCCGATGCTATTGCTACGGATTGGAATACATTATTGACATTTAACTGTTACTCTGAACTCGAGTCTACTTTCTTTCTTTATCTCTTACCGGTGTAATTAATCTATTTGACTATCGTTCTTATCATATGACTGTAAGTTTACCATTACTGTTCTCGATCTAAACCAACTGTAATGTTAATATGAACCTTATGTCGCTATTTCTACCTGGGACTTACGCAGAATTGTGCTCTTAATATTCACTGTAAGTACCGTTTATTAAATTCCGCATGCTCCGCAAGAAGAGCGGCCGTACAGAAAGAAGTTCAACAAATCTCGTATAGTAAATGCATCAAGATCTCTTGCTCCTCTTTCTTCATCGTTATTCAATCAGGCATCGTGGAGATGCTGCGGATGCTCCGTGGGAACAACAGTGATTGGGAGTACGGCTTCATGCAGTAGAATGAATAGAAGCTGTCGGCTCTACTCCTTATAATGGAGCAGTGCCTGTAAATCTCGATGGTACCGGGGAACGACGTACATCCTATACGCTCTGTTCTTACCACCCAATCTCTGTAATATTATGATCATATCATTCTCATCACTGACTTATGAATTATTTCTCCACGCCTCTTAATGTTCTCCCTCATCCTCAACCTGGATTACCGCCTGCTCCCCAGCGCGACCCATCTAATACCGAGGCGCCCCGCCGCTCCCAGGCCATCGGCCGATCTACAGAGTAGCGATGAATCAGGATGAGGGAGCACATGGATAAAGGGACAGGAGGCACCGACAAGGGAGCTAACCGTAAATGAGTGGGACCACGATGGGCCCTGGCCTCTAGAAGATAGCATCCATCCCGCCCCTGAGCTGTACAGCAGGGGCCTCGCGCGATCAGTGCGGATAGCAAGTGCCCATCCTGATTATTCGTCTCTTGCCTCGTTCTCGATTAGCTGTGCCGCGCGCCTCGCGATAGGAGGCTGCTTCCGCGGTAGATCAGTTCACCTTACCAGCCCAGCGCCTGGAGCGAGCCTCTTAGCTACTGTGGCTGCTCGTTAAAGTTTGACATGTGCTCTCAGTCACTCTGTACCCGAGGATTGCCCAAGCAATAGACTTGTAGACCTAAGTTAACACGGTTAAGCATGATTTACAATGTTCATGACATTACATTTTATTTGGAAGTAACTTTGTGCTTGTCAGGGGTAAAGTTTACTGCTTAAATTAAACATCTATTATTAAGGTGGGTCAACATGATGCGTCAACCCTTCGCTGGTAAGTCTACTCGATATATCTATAATTTCTCTTACTCCGTATATCAAACGGTCTCGTGTAATTAGATAACAGGCCTTGATATAAACTCAGAAAATTGCTCATGCGAATTATTAAATCGTGGCTCTCTCTTTACCATGCTTTAAGGTATTATTTCTCTTATTACTTGTTTATTTCTATCCGTAACTTATCCTCCTTATCTCCATCGTGCTGGTATTAGATGGGCGTGGTCGGCCGGGCTTCCGAGCGCGAGGCGAGGGCATCCCAGAGGCAGAGAGCGAGATAGATGGAGAGCCGAGTAATTCTCTGAGCTGTTCTCCGACCATCCCGTACTTTATAAAAGGAAATAGACCGTAAATGGTTGGCGCTTATAGTTGGCGTATTATGTGGCTGTCAATGGTAGATAGGTATTATTTATAATAGGTAAGGCATGAGCTCGTTATAGGATGTAAGGTGGCCTGGTACCATCCATCTGCGTACAGTCTCATTATGTATAGTGCTACTCTTATGAACAGCCTTTCTTTCGTGCTCTCCGCTGTCTCTGTTCTTAAATTTCGTATAGTAGATTTGTGCGTAAACGTTTGG ++ +$$''(**+)))*(()$((&%(*,*.**)'()).*&&&()()++,*))*(()*,,,*((+,(('(**)0)*+)*,,+()'(**(((*,+('''''((&&'''&&'(**++*+*)'((*)(('&''(*)**)**+)**)+(*(&())+'(*)+/.,+*'((++++*()))))*())()()*((((+)((')*)))*)()()+*'(&'&(('((**)(''((''')((('(&'((()'()()%'((*)&'''&()''')('('(((()*)*))(*'((''&(')('(((*)(()())+)''().,+*,+)()'*+)(,*))'(('))**,,*)+*)&+*)()-'&+*((+++)))***(((''')*(-+(),(('(()'''(+,-*(')('(&)+)&')+(**('((*+('(''))+*()('())*'((&(*-+*&('(*)(()'('(((/+*,*)))*(((**))*)*,+*(')(((((()'++,.(((''0*+,++--,***'((*,**)-)(()*())()*),,0,)()/*+,*),)**-++)()*(('&(+*,*,*,+**('')*(')(((*)*)(*(+**')))(())'(*()),*+))*))((*))')())**)**('(*))(((*))((*,++,+,*)*+*+))(*(('((((()**)**)')&)+(()()'&,+)(()***)))((&('+('(''((*(&%&(((')(''((('+)))'('((('()''((''+'(&''('%(*(&'&(('('(())*,*)('''()''(*,+*(*((())('(''''***)(*+*)((('+()')()((')()***+*''(,*%*$')))*)()(''()(())))))(,+*''(+)+')('&()''('((()(*')))*+**$)'+(((*))&()(((('&'()(('''))'())('))('''*)((((''(*(&'))'(''&(('())+))*)'$())'''&'()*))(('*''*''''*'('((')('%'')$')'''(((&(+))+,*-*)(''('''(&&''&))('))''(''(('(&&))''('%'())'()*((*$)'&'(('()))+(('*+*$''(('')+)+)')())(*))('*(&(*)*)*++)*,)'((((*'(**)*+(()()**((**,+*'((**'&+()**))((*()))('()*())''()()(*((())'&)(%'&(('((((()(&'('''()'''(*()))((('(((&'&&''*)'%''&''*))(((')*((')''-'()+(())+)))(*(('*)),+*)())*))'()(&&&+,+'((*)(-+++)'(*'))*)&'('(&((()))+'*)''*('()+*(()*,*))-(+)*+-)('*).,*)(((+*'()+((*/)'(),)*+***(())***)((((')4*(+.)''((('''+++(%,*)*('&))()*)*''')))()))+''&'())(*))+'&&'**()*))())()*(&'(((*)()*+,)&('(,*-,*(+(('())(*(('((+*-(('')('()++*+-,)'()((+)*(*''()(*((+)-+((*.)./(,+)()(*)+++(**)((*'(,**((*((((*(*')(*'(()*+)*)*))'''((((()-,*+*((*+*((*))(*())+-)&))((*(+,()'()()(((((*,+*))))()+**)'()(*)'()+*()*$(((())+)(())',,&'((()))(()))(((''))-((**(('()((((((((((((&'))((((((+''''''**+*'))''())),)*'(((+()**&$())*)*+)()(-+'('-+*(''*&(*(),))('*)((()'''(*&(,+()*''()(())*))**+,.++)'&'&')(&'''()'))*'('((('()))))*+)'(('''()*()'&''')*()(((*'')'(''''&'))'(****()((('*)+)'*')(()+)('&(*((&((')(''(+))'(()((-,)(*($())('($''((()*''()()**'&&)(),))('&'&'&&'*))****))()*'(),+)$$ +@channel_266_read_201-2D +CTCTTAAGCTTTCTGTGAGTTGGTTTATCTAAGCGCCTCATACACCGACATACCCTGTAGCGCCTCCTCTAGATGCCAGGACAAGCCTGAGAGGCTAGAGCAGGATCTGGGACATTGGTAATGCGCTCTAACCTAATTTACGATACCTAGCGGCATGAATTATACCCGGCTCCATTAATCAACGGAGGGCGAGCACTTAGAATCGATATAAAGGTCGTGCGTACCACGTGATGATCACGCACCATTTTACGACCGTGAGCTGGAGCCGTACAGCGAGTGAATTGAATACTCGTACCCATCTGGTCTCACGCTGGTCGGTAAGCGTCCGTTAGATTCTCCTGGTTTCTCACTCCACTGCTTCCTAAATCAATCGCGGGGGAATTGCTTCTCCAGACGGGTTCTTTAGCTCAATGTCTAGGATGAATTATCTACTGTTATAGTATTTATTCAGCCAAATGTTGAAACAAGTTCATCTACACACTGTACGTCTCTATACGTAAAACCGTCCCATTAGCATACATGCGCTGCGGCTTAGAGTACCGGGACAGGAGGTAGCGCGGAGCAACGATCGTGCCCGGGATCACCTAGGATTAGAACAGAGCATTATAAGCCTCCTGGTGTGGCCGTCTCGTGAATGATAGGGTTAAGGTCGCTGAGGCCCAGGCGACGCTCTCTCAGCTGAGGCCTATACGCGGTAACCCGTTGCTACGTCAAATGCGATAGGTACCGATATTTAAACGGTTTGGGGTAAACCTCATTTAACCTACCTGGCTCATCTCATTCACATAATCTTAGATAACATATTTATCGCCTGACACGGGATCGATGCCTCCCTCCTTGCGATCCGTTATAGTTTACGACATCAAGGGTCAAGCTGTGGGAGCTCGTTTGCAATGCTCGGGACTGTCTAAGCGAGCTAAGTGGGGTCGCGGAGGAGCTAGGGTTCTAGCTACACCAGACCATCGATATCTCATGTACTGTTAAACTGCTGCGTTCTCACCTATTCCCCTCGAGACAGAACGACCCGAACCGTCGTTACGCCTGCTCTCCGATGAGCCGAAGGTCTTAAATAACGCTATAATGGTATCGTCCCCAATCGCCCCCATTGAATTAAATGGAAGCGTACTTACTGGGTCTACATCAGTGGGGGCCTCCTGTTCTCGATTCTAAACACTCCGTAGCTTCTTATTCCTTGTAATCTATGGCATTTCGTCCCATCCGGGTCTCTGCAAGTTATTCCGCGAGCGCGTCCCTCCCCACCGATAGAGGTGATGCATGCTCGGGGTTATAAATGGCTAGAGTATGAAATGGCTCTTCCGTTAATGAGCTAGGTCCCTACTGGAGAAGGGTCGTACAGAAGCCAGCGAAAGTAGCGCGGGAGATCGTCGCCTCAGTTCCGCCTACGAGCTTTCTGAAGGCAGTCCTCCAGTGGAGTGGCATAGAATGAGATCCGCGTCTAGATTCAGAAGCGTCCTTTGTTATAGCTTTGAATACCACCGCAAGGATAAGAAGCCGTTACAGAAGCACAGCAGAAGAGAAGCTCACTCATTCTCGGTGGCGCGTGGTTAGACCGACCGTCTAGGTACCATTAGGACTCGACCGCACCCCGCTCTCTAGCCGGCGGCCGGCGTAGAGGGTCAGTCACATGGCGGGATCGCCTTACGCGCCCGCTCCATCGATGCTCCCTGTGGCCGCGGTCAATCGTTAATTGAGGCTCGTTGCATCCGTACCGGTGTAAACCAGATTTCCAGGGAAAGCGTCTGCCTGAGTACCGTGCTCTCAGGGAGTCGCGCAGTGGGCGCCATAATGGTACACAAGCGCGTCCCCACTCAATTCTACCCTCCGTGCTACTGATATACGAGTACATAGCCCGCTTTACCCAACCGTTAAAATTGAATTACCGACGAATCGAAGCACGTGCCGAACCACGGACAATTGCATGACCGTTTGACCTTTACGACCTATCGTTCGGTACGCTGGCCTCTTGGAACGCGGCCTGACTCGCCGGTCGCCTCAATCTAGGATCATTTTGGTTTGAGCACGGTTACATGCCCGAACCGAAGCTCGCAATCGCAGAGTGAGGGTCACATGCGGTCGGGGATTGTTACTATTGACAGTCCTTACCCTGAACCGACGAGCCGGTCCATGAGTCCCATTAGAATACGTCCCCGAAGCCCATTGGAGGAAGGTTACCCTCTGTCACTCCAATACCAGTAAATGCCGTTATTCGATCTACTCCCAGCGGCGGAGTAAGCTCATCGCGGAGGGATAAGCTACTGTCACCGCGGCATCCAATCTAGTTTCTTGTCTAAGAATCAGTTTTATTCAATTAGTCTCGCACTGATATTTAGGATCCCGAGTCGAAGGGAGTCCACGCGGCATTCCCGAACTGTCCCTGCGGATTGGCTGCGCCCGGAGCCCGGTTGCGGGGTCTTTGGATGCAGATATCGTATCCGGCTGGGGTTTCAGTACCGTTCGTCGTGCTCTAAATAGATAGCTGGAACCGTCGTCAAGCCGTTCTTTATGGCGCCGTTATGGGGTCGCGAGTACGTGGATTAGATCCATTTAGCTCCTGGCGGCCTTCACCAAACTGTTCCTTACGTTACCCATTAACAGTTGGTCAGGTAGATCGTACGTTGGCACTTTGAGGGAGAGTGATCGTGCCATTTACTCTCTGGCTTCCGTTAGTAGTTCTACTAGCTCGTACGTGCTTTATAAGAAG ++ +$$((''&')'++)*)((('*)*)+,))*)&'''((&'')''&((&&'))*''''()('&'()(')''()%%''*)()*((+)(('''()'(((('%%'''(''(**))'(&*$$))''(*+(('('''&()'(&(*)*'&'')''''&&(()*+)'(***'''(''((+)'''**)((()).*('((()('(*))&)'&)+((''((((),)(')'()((())()))**(')((()*)*))())*/0)'(')((()('())''())'*)'(*))(()*++*)((*+(('((()(''(*+*''(*((**((()('*()(''''()*('*)'&'()((*(()((),/,)+*()'(*(*(()-))&)-+.+).+()+((()',,))(+),))),-(-*('',*+)+'&')(**,***)&&('(*),,,))+)''')())(('(')*+(*+**(()*+-****()*+))+(()+,**)&()*((')*)*)))*(+&((((*('+*)&)()'(('&'&)/*)(('**+))**+())*)'('&''('''')(*('((''&()+('(*+*)/('(*(()(('(''(+*))''%&''++'&(***)')*)(+)('((*)(&&'(('()*),)()())()*)((('('%'')*('''''&)')(((((&()')(&''(((('''*((((('''&&%'''))*''&(*&'(***))&'*)))&****)'('&&((&&''((**)((,(()&)**)('&(),+'((+*)+()''(&'''''(('(')()+(++-**)'''(((''(**),),'(*+())'((''(+(,*)('()'()))*(,(%')()))*)((*'),,))(')*-)()')()()(('(),,))))))+*)'((('((*+*(-**)(((((''*'))()&(((((((('((()'''')''((')(''((%%&''*,)&&()'('((()(*'()('')''*('*,((((())+((*)'*)*)*))+)(()(&'&)*+'''(''''(+)))+()')((((+'')*)(**(((()'('('(&''')*()***(/'('))((')(')/*))&((()'''''(())'''(*)((((''')(()*+)(').,)')-+(),))')(((*(('('&)*)(((((''''()')()+*++*'(')++)&(*+)+''&')'&((*,))(+)*(())*))*+*&()(())',*)+,('(()(((''''(*---()')((),)()*((())*)*'&'((''((*''((&(('&'&')+-*)())()&''+(('(+)('((&&'(''(()*,(+*('(((*('()'()(('((&&'')'&'&((+)%'(+))(()()*)()+,))''(())-.*''&+(+),)())++((*())(&(+'),***)(&(('((((+,))**)'(()(*''*((*')(((')))((''+.,(''')-*)(*)*)&&')**('()&&()*((*-)++)(''(('*(+*)''&('&'*)''&&('((((')&%&)&&'('(()*))((''(()(('(&&&'('&(+++,*'(('(((****+)()(&')&)'(''(((&&((*(')*)(%''('()'(((()(''&'*(((()&&*)())(()((()))(''(('',(((')()+))()''')+((('((')(()(''((''(*)('))()(('()))))(()*((+***)(*+)))))&''(('''-*))((''(*('('')(''++()((-,,0)(.(((+(')*'*()*(()())))'''('*))(+,)((('*'())*+)()((+*('('())(()))***))+**),)'(()'**))--+'''''((()+))&'()*(')'((((())()'&'('')))*''&&'((%$$*%')(*)(&)**&'&'''''+()'')(())(()'&((*)&')('&''())*)+*(''')%%*(()''(*())(*()&()(),+)'(()((()''(((****).0*)*)))()(*((()*,)(*'(('')(,))&&)(*+**(-.+*(*-)(())+)((((()))*(()),-(*,-)),((+.+)*)*.)*)(((()((&)(((*((('*(*))),***))'''()*(+)*)*'''(''(((()+''','''()(*')('''''(*'&()*'&(()())*+'''''()('&&)')(')((,)(()''&&''()))(('((()*((')*((),**())+)()*)'')+)&)(*((())*((())))))((*'+)('()(())''('')))&'')(*((''))'()(*()*+*)&&)*.*+)**)(&()*-+',*)+*)('*'))))(&()*)))+**('(()+-)&''(,('''()+)),,)('(),(()))*''))(*'')(-*()+)('(*(*((,*)''()(*)('((()**()((*++,)'()+*),*)()*)*((*())))**,()()))(((()/-,*(((())++)))()*)(()'*-*)&'))&)****-+')()'*,*(+*))),*)(+)))()***(),*)'(''(+()*'(()())*)')*(&(++))++,(&()))(((())(()***)''(,*)+(+.**(()*+)(((')*+((+))))'''*+('')&'))(*)()))((''*)***)+(()(()()(**))+*)))*,)('(*)**)')*-')+*(&'*&()*(&''&&'((())(((((())&&&'*(,$$ +@channel_133_read_178-2D +TCATTGGGTGTTTAACCTTAGCTCCTGAACGCCATGTAAGGCGTCTTTCCGTTTGGGGTGTCATATATGAAGCGACTGGTTTTATCTGCTGGCAGGACTTAGTCCGTATGAGTATGAACCATGTGCTACCCTCCAGGTATGGTTGCTCTCCATACATCCTTGCTTATCACTGACCCACATCGCGGGTATCATAGCCCGGTCAGCCCATTCTGGCCCCTTCCACATTCAGACAATGGTCCTTGTCACCAATCTGGGGCAGTCAGTTGGGTCATTGAGACATGGGGATTATGGGCAGGGTAACTTGGCTCAGCCTCAACATATCCGTCTCAAATTGCGGCCCCTGGCAGCAGTGGGACAACCCGAGGAATCAGGCAGGGGTCATGGAATCCTGGAGAGATGATCCAAACAGGGCCAATGCAGGGGACCCGAGTTGGAACTACCAATTGCTTTATTGTACATTAGATAATGGGAGCGATAGGGTCTAGGTAGAGCCGAGCTCGGGGACAGGGGCCCGCTGAACGCATCTAGGCAAGCACAACCTGCCTGGGCCACCGTGCGGTACCAGGCGGAGGCTCAGGATCGGTAATAGGAATGAGGGGAATAGCATGCATGCGCTACGCAGCATTCGCACGGGCGGCCTTATGGAGGAGCCAGTCGGGCTCCTGGGTAGGTACCCCCTGCAAGACTCCACGAAGGGGACAGCGGAGCCGGTGACAGGGATGCTGTGAAGCAGGAAACGACCGGTCGCATCTGGCCTGGGCATCCAGGAAGTTTCGGGGTACGAAGCGGAAGGCTTCTCCAGAGACGGCCTCATCCTTCATAAATACGATGAGCGGTTATCAGTGTCGTTCCCTGGGCAGGAGATGCAGCGGTGGGGACTCTAGGATGCTGGATACTCCTGCCACCAAAACACGGGGGACACACACCTGCCTGGCACAGCTGGACTCGTCAACGGTCCTTGCGCCGAGAAGCTCCTACAGTACCCTCTCCATCCCACAGCAGGGCGCAGTCAGCTCGCCAGGCACCCACATGCCCCCTCTCCCTTGCAGCGCATGGGTCTCGAACATTTCTGGCAGGTCCTGGTCTCCCACTAGACGCGGGGCTCTCGATGGACGGCCCCTCGGATCCCTCTGGGTACCCAATAGCAGGTGGATTAGCGTGCATTGGTGAGATCGATAGAGCCAGGGTTCCTAGAGTGGGCCTACCTGGCAGTAGCCATGCTCCCTATCACCAGGGGCTGGTGCTCGGCTCCGGGTGAGGGAGCGCCAGGCCTGGGGATGCGGGAAGCCTGTATTCGATCACGGGATGTTCATATCGTATAAACCGGGATGTCCGGGATCCAGCCTCATCGCGTACGATGAATCTTGGCATTAGTAGGTCCGATGGTGGCCTCATCGCATCGTCGTCGATCTCCTGTTGGACACGGCCTGGACAGAATGCGTCCCCACAATGGGTCATAAGCAGGGGGTCCGGCCTGACAGCCTTCTTGCCTCCTATGTCGCATCGGATGAGAGATTATTCCTGAGTTATGCAGCCCCGGCTGTCCCCGCCGGTTGCTCCTCCCACTGTGGCTCTTCTAATCGGTACATGTTCCCAGATGGGCTCACGCTATGCACATCCAATGTAGGATCACTGAGCAGGAGGCGGCTAGATCTTGTCGAGGTGGTCAGATTATAGAACGAGAGCCAACAATACACCTATGCGCAGGTTCTCATCATTGAAGCTGCTCTCAGGGTTCCCCTTGGCCTGAGCCCCAGGGAGCATACCGGGACAGAACGGGGTAGCCCCCAAATCTAAGTTCCATCCTGTTCTACCAGATGCGGCTCGCCGGGTAATGCACTGGGTCCAACCTTTGCCCTCGAGCCTCCCCTCATTCCTCCTGGACGCTCAACCCACCACCCTTGCCCCCACCGTGGCAGCTACCTCAGGTTTTCTCCATCTCTGCCAGGAAACGCTTCAGTACCATCCTCGGCTCCTTAGGAGTATCGTATGGATGGTTCTGTCCGTTAGCAGCTCATCCATCGTGGAGCTTTTGGAGCACGTAAAACGTCGAAGCCATGAAACTGCGGAGAGCCCGCGTCCGATAAGCACGCGGACATCACAGTGACATTGAACTGGGTCTCAATCCGTTCTACTGGACATTACAGGCGCCAGCCATCTCCAGTAGATGAGGGCCTGCTTTTCTATTACCACTGACCTCACGATTGCTCCCCAAGTGCCCCTCACCCTCTCCTTCACCAGAGGAGAATAAAATTGAATCGTCTCTGACGTGTAATAGGAGGTACAGAGATCCTTGGCCTCTCCTGGTGCCCCCTTGACCCGGGGCACAGCTCTCCCACGACCATGTCTAGATGTCCCTCCTCCTCCAGGCCTTCTTACAGTGAGTGTCTCCTGGGAATGTCCTTTCCCAAACCCATCTACGCAAATCCTGCTGGTTCCCCCAGCCCCAGTTGAGCCCGGCACCCTGGGAGCCGCTGCGGGTGGATTCCTCGGGCCCCTAGCCTCGCGCGGAGCCGCGCATCGCTCTTCATTGCTCTATAGCCCGCTTATCAGCAGCCTGAGAAGCGTAGCTTAGAGAGGCTAGCATGAGGGAGGCGGCGATCACATTTGCTCACGAATTTGTCAAAGGGAGCGTTGAAAAGCGGCGGTCTGTTAGAGTGGGAGATGAGGTAGGGTACCTATTCTTCCCCGTCCCCGCCTTCCATTCTCATTTGTGCCTTTATCTGCCCATCACCCACCGGGATGGTTGGCGGGGAACAAGGGCGGCGGCCTCCCCGGTCACCCACTGCTCCAGCGTAATCTTCTTTGCCAGGCCCAAGTTGCGCATGGAGGTACGGAGATGCGCTCATCGCGCCACCCGGTAGCACTACGCGCCAGGAACCGCTGGGGTGGGACGGCACGTGCGGTTGGCACCCATGAAGCCCCACCATCCCACTCCAACCCATGCTCCCCTGGTCTCCCGCAGTCCCTGTCCACTTCAGGCTATTTGTGCGTATAAGGTGGCTTGGCTCGCAAGCGGTTTTCCCCGGCTCGTCTCTGCTGGGCCTTTGCCTCGGAGAGCCGAACCCCACACCGCTCATTACAGCACAGGTGCGGTCCCCGCCCCCACTTCGACAAGCCGATTCCAGCTGGGAGAAATTGCGCCAGCCTCACGATTGGGCTCCTGCCATTGAGCAATCTTAGCCACTCGTCTCCAAGCCCTCGTCCCCATGCTCACACTCCTTAGTGCGGGTGGTTTCTTAAGCTGTCCCCACTCGCTGGCCTGTTTCATGTCACGACCCCTCGCTCTGCTCCAGCTCGACCACGGTATCAGCACACCCGGGTCCCACGAAATCTGTCTGATCTTCCGCTCGCGTACTTGCCTTGGGAACGCGGCCAGGAACCCAGGATCTGGGTGATGGGCAGGGGCGGGCGGTCGCGTGTCTCCCCCGGGTCGGGCCACCAGCGCCTGGCGCACGAGCCCCATTGAGCACGACCACGGCGTCTCAGGCGGATGCAGCCGGCTGAACAAGTCCCCGATCCGGCGCCGCAACTGCAGGAGGGTCGAGGGCCTCTTGTCAAGCCAGGATCCCCCAGACTAAGGTCTAGGTCCTGATTTAACCTTGACGACCCCCGGCTCAGGAGTGAGCATGTAGGAAGGAGGAGACCCAGCCTCCGTGTCAATCGGGGCGCGGCGTGGGGAGTGGGGCGCCGTTGTGTGAGGAACCGTTTGGATCGCGTACCGAGGTATGATTTGCAAGAGTTACCAAAGTGCCGAGGCGGTCTATCCGATTCCCAGATTATGATGCCATTGAGCAGTTGAGGCCGAGGACCCACAGTCCGTTAAATCGGGTACTTGAGTAAGCCGGGTTCAATCTCGATTTCTCTGATTTAAACGCACTCAGGACTAACTCATATCTTCGATTCCCAAGGCCTTTCCTTCTGGTGTCACCAAGAAGAGATTTGTACTCCATAAAGTTTGCCCATGCTTGCATCCCACTGCCACATGCAGCTCCACTCCAGCCTTTAGCCTACCTCTTCCTTGGCCTTTGAATGCCATTCGTTACTTGTAAAATCTCGTACCTTCTCCAGGAAGTCCCCCAATCCTTCCCCTTCTCAAGCTGGGTCCAGCCTGTGGTTTCACCCACCATCCATGTTTGCTTCTGTAGGGGAGCCTCAGCAGCTCTGCCGCCTCCATAACTCCCTCACCTTGCACCGGTGGTGTTCTGGAAGTCACATGCATGCAAGTTGCCCAGCCCGGGCAGTGGCAGGGGGCTATCGGGCTCCCGTGCATCGCAAGCGTTGGCGCCCCCTTGTAGCATCAGATCCACCAGGAGCAGGAAGATGAGATATCACGGCCAGGGGCACCAGTGCTTCTAGCCCCATCATGCTCACTACGATACGCTCCTCTGGACACACCGGCATCTCCCCACCCCACCAGGCACAGAGCTCAGGCAAGGTGGCGCCTACGAGCGTCTCCTTATAATCGGGAGCTGATGATGGCCTTTGCCCTCTTATGCTGTGATAGAAATTATGCTTGTCTAACTGTGCTGCCAGTGGCAAGTCAGAGCCAGCGGGGCGGTATGAGGGTCCGTTGTTCCGCGCCTGCTTCCTGCTCCAGGCCTTACCGAGGGCCGTGAGGCTATGATTAGAGAGGTACTCCAAGCTCCTGCCTGACAATGAGCTCTGCGGGATAATT ++ +%%+..(,,.000+*+'(*(')*,+)*,-.-.-1/++$*($+))*('.0+*+37.-**)+-/.0)**.+*,+'*).+,+)+-.*,/-+)+*)-..**-)+('()((*)(+))())+-0+'**+-,+*')''(++**)))*,**,+(*,+*+*(',)*1'((**,,*),)**+-,(')+,0)**-*)(((,,/)'()(*)*,($*,*,.21,,+.*)(),-,,-))/-++,+()*+,*.))(*-.-+)+(,+-0/+*.0.+.3.+/.*()+,**+,*,/./+()*)-/(*+)*,-,)**+*.)+*)),)+)*,,-.*2/3-).*(*-,,/17,+,))*)*)(++-/1+-/+),))*1*(0*+*-)*'$)+,,+,,+))(((*((((*)(')+++++*-/.*)-)++6%++)(,*())+)-,**))1())+))++*)..*')(*)*+*)**+*+,,-----,)')('')('&&())')'&*'()(&&&&&&'(()(&))*)(((('((((((('((('('''(((())&&'')'(*)',,-'()(()++))''(%&)'(('((''(*'))('((((''))'()))((''%&()/.*()('('**(''+),,//)*(('&'('(,+,-,,**,.+)((()-*))&&(()))((-''().*))*)+((*,('(&&'''''('))+--+(+)/++0,+.)*+)*.)-()))**+*,((()*+))'(+,,,)+*-**+)(,31-))-+*)')(.+**),)*++,)*,*+,+.1-*4))*31-(*)((())2/,-+(/))+,-/00--(*)+4/)*-,,-.2..-,.,++-/*)**-.*)())*,*++,,++.-*+30+*+.++/1/-,+*0002.-+)),*)**,(++&&()--,+**(,')(+*(-0+(*,.4772--,+,++,2-,/-+.**.-++,*+/-)+*/,+,,))-+.-.)*)+.+,,---,,++*.4++.**+**,.**('')*,,**./**.301/2.***./1-**+)())+.+**(),+()+-+--/-,)**+-/*),)+--+++++)*((),))+)*-,..3/.+)).+((,((),&))+***(((')1+**+,+-+)('(++,*)0)(*+*('''++/+(('()''&('(''&-,(&'+)'()(&($(&)(()'/,+*)&''''(+''(&%'''''+)(*.1))%%'(((''(('&('(((*++))&.+'((('')&'&&())((()(*,,+*)(*)''()))((('))()*)'(*,,,)+)()'('))),,+,)(*0/+))*+,,+*-)**+1+-+)+--0+,-('*())*((,*('''&(*)+('(('(*&'))*))..)((()&'%&'+)+))((''')*(&&')&'&'&''++((('&'*')((')1*(('(()+&(*,)))++*-)))0+,-(((')('*')-0*-/0/3,**+,*,-1*)),.-(*+,,++**)),()*)*(+*-*)(**..1./-*(-(''*--+)))(()(')*(())),-*)*,*,-+''(('**(--/)***)*)*+*))+,-))(,*((+).+*()*')*+((*(,,+)&(*+()*-+*)*+.60./-))+()*+)+0.-(%*,//+(+,)((***)'+*0/-)$))*+0*)),())(*+&''',+*)++()))())(()(++,'()')3)(()*+*,+())*)$'((')'*/-0,+*().1/.4,/,)-,+-*,*,-0)*+,())+12*)'**+*())*+)+)(((**)())*((('%(*--**)./-*('''&*,***+/2)()')(),+')*.&)*)+**'*(*-((+*,*+*()*,+()()+,-...*,+((+)*,-)**.,+*)(())*,,,-+(*-,-*/5,+/+*+/./,0../)/+,...,,)(*+*,+))+-+*+,.,+//,+')()(/+')*,0/+)))*-.+..+)+-++0*/*))+.,*''''((,'(,)(((''&)(&((+()+)(*)()(')*))++..,+)),+)'/-+(*'*)+()(*(())))*)*26-+)((*)')('-0(((*('*,*))')(()((,,)('('()+()*+*-+)('))(),2(+*')-*,)()'*),)+**(('+/-)-(())(.-*,)),1--'((*))/*))'')+)''))(**+*-**((,+)'&(*)())).,*+/-+.++)&*'(+)*,)*()(+*+()'*)*+/-.++..,),/**()++*''*-1/--++**)+,*+,,-/5--*33).*,,40((+(),.+..++0)*('&))-))++,+*))**(+--+)()*0.-/0,*-,+)((-(()*(*,+**-,((*)**,.-++,*'+*(*+-,)&&)*++,''****-*)+**+),**,/1,,+*/*,*((+,-+-,*,*,,7/+,+)**57+))(,,())*+*'+..30*47+-++*--*,0+('&())*))-,+.+(()*')')))(&****,-,*(+(+*+'%('&&)+1*+*)'&''&&&%&'('')**)('')*)*))(/*)('((++**+*+))*)&*(&*)*(**+*'*',+/-*,+-,)/0/+)('&()+'%)(())))&%)++(((*)(*)**)***,-.+(()-+**))*'(1-,/+*+)'2-**(((*),**/36+.+)++)'**))+)'**(++)*,*,,*(()-(+).+*'''(--/-5-**,-1+*+//-),50-+,,*)-+*00/--))*,(**)++*(**.-*))),)*((),*)(,,+,+()*(,*'(&'$*)(*)'(()-)''*++./+(**.+./-+*)))))+))*)),.*-,,)(*((((+-,,)**,...+)))))(++,))*),,+)(')(-)*-.,*,+**)()&)**(''))+,,+.++1)((*,,))('+*)(1))),(+,,*+))))((()&&())()'&*((+-*-**(&(.)**(*,(((*+,-*,)*++-)+).%)'..-+*((((**&((&)*+*(()&(*,+,+++**)(*)'')'(()()))'().())*(')+.+((()))))())+),**(('&(((+,,*))*,()((*+)('--'&(+0,-)))))**,,,.0..)-0*)+,-*(--+-///)***,)-*'*0/1*))))-/8.---,-*+*)*1*-***..../-,,*,)++/0+)(**(*,.-+*++)))-.))*+*(&(',*().2*+)(,.+*+())**.**)*+,./-2/.,)*,*((&(,++'')(++075.)(')+,,.3,**/0(,).*))*-+//0.0-,*)*))*(,'))*()(*+,.++()*+,,))'-()++)(()*)(())(*))*))()''(.))0*10,,,.+)''()(/(')'(((*))+)*++)')*)*/666-,(((*)**0**)*++*-+()))))*+,)))-,)((++*'++*).*,),+.--*++****('('''(((*))*)++*))**,+)++*)+)()+//,,**-.+'+,()()+--,)'(((,(''(,,+*)+(())$(+())')0,+++(*.''((+**)(**(),-0-')++*(%'&&()+*('.))-.+***()+(),*(')),-+-)&''''*(&%().)()))+1*+,*),*,.())(())*))('*++)+*,)*-0.,.,(*+6.,*,*)+*,)()*)((()()*(*-+,/)(((*)***++*+,-(')()('(+)))+,/).-,**)+(*.()+17,)).,)-+**)()())))))',)/.,53,/+-.*)(,-5+)+,-,)*,.-))+)'*,)*)-+4-+--**+')*)+,,)***)++-/,)*))))**)*))(+)+,/+*+-(&++(),/('''))))****))*()+*))),/)(*-+(+),+1.,))+*--2+,1()+-))(*)(*-)'+.,+.+*+/2/30-,*8-+.-+()*),77,+*0-0.*+,,-*(),,-2+++*,-3,-,,(*+++(*+''*+,+*'))***(,,++)(*,/*-*+),*+,*+*)+,+)+*++*-+,**.)'))+')(()-/5++--*+,,,/-*,)++***-,**,*(')*...1),*)'(())'(*,,*))+*+3*(+()((*+.)'((/**(+--/,,)(')*()+,((*+,,-+**+-700,--,-,+*0,++,-14.*,-32.0+'+*,**+++**'+--,,+-.-+,*+*,+)+)*.+/,*)-0,*(),,))(**)++*,+1.1/,/5(+.+,+.112-,--)**,-,**+**+)*))*-.*.+*-,)))(*+(++(+)-,)(()*+.0.*()+(')+,3/,+,-+*))++*+''0-10/+)),))()*.)(*,--,*1*)*)(,(+)--++(((*),(('*,,(*))+*,,*+''))()**()(*+-*.*('()(**())*-)*).*)-4,+-+(+)-0//.+))**+))'),))***./,-*)()'(*()+(**()((()))'))((()(**+**)'''*5*('('**-)(()'+)'(((+/-+*'+)*)(((),++*()(&(),,+((),+*(+*('+-+))()*,++**)+)*+'*-*,,-+)))+**)('*)(+,**'''(),('(*+)+/+,,.((*,+),3*(++*+**)(*))*)+)''(('))+**))))(&)(')*(&(()((())(-)+0*)+-*)*,')(())*-((&'((+++.+).1-++%% +@channel_169_read_57-2D +AGTTTCCCTCTCCTCCGCTGATGTCGCCTCGCTATGCGAGAGGACCCGGGTGGCTCGGACAAGACCAAGTAATGCAAGTTCTGGAAACATGTTGTAAAGTATTTTAACGCCTTTCAAGGAATCCTTATTCATTAAATTAAACCTGACTATCGGGTCTCAAACTATTTCGCGACCCCTGTTATTATGTCAGTTCTTATTTTCGCTGTAGGAGATCGAAGTTGCAGCAGTGCACAAGACATCCTATGTCAGACTAGATGGAGGTACAACATAGACAAACAGTAGGAAGGGTGGGTAGAGGAAGTAGAACCATGGGAACCGAAGTTCTACCTCCGTAACGGGGCTCGTATCTCTACTACCCCTTATTACTCCCGAGCTCGCATACTAGAGTTCAATGATTTTAGAAGGGGATCCCCATTCCAATTGAGATGCCCCCTCTCCCACGAGAGTGGAGATCCTGCGAGTACGGTTATCGACCTCCCACTCCCTCAATTTGAGGCTGAGGTAGACCTTTAACCTATCGCTTTCTGGTTTGGTTCAACATCGTAATACTCTAATGATAGCACCGCCCGATATGCCGTACGCAATTACATTTACCGATAATGTTCCTGATCCCTCCCGCTCTAGGCGCCCTATGGTAAACTAGAGATCTCTATACTTTCCTATACTGTAGACCGAAAGGCGTAGAGACTATACCCAAACTTCTAACCCTGGAGTAGAGCCGACCCAATATGGTCTAGCCCCGGGAGATAGGTTGGCGGAGTCTGAACCTCCTGGCTCCTCAGAGCTCCTACCACTCGGTAGGATGAGGTATCTCTACTCGTTTTAGCCTGTCGGGGGAGGCCGCCCGCAGGTGGTAGTTGGGCAACCTGGAGATGGCGAGTTCGATGGAAGTTGTAGTCAGGGAGTATACGTCTGTCTATCTAAGAGCAGGAGTTTACCGATACCATCAGGCAGAATTAGGAAACACAGGAGCAAGTTAGTGGACCATATTAAAGACGGTGTTGACCGATATTTCCGCTCTCATGAATCGCTGAGTCAGGACCCATACTAAACCGGTAGGTAATCGTCTTCGTGTTAATGTGCATGCGCACAGACTCCATCTTCAACCAGGGAGGATCGATGCCATGCGTCGATGCTCCCTGTTACGTGGATCAATCGGTAGTCGCGTAGGTGGAGCAGGGAGCTTCTATAATCCGGCCCAATCCTGAGGCAAATGGCGATACCACCTAGCCCTACGTCTAACACTTCGTCACCTCTAATACCGAGCGTAGAGCCAAAACCCCCTTAGCTAAGTATGCGCTAGCGATGGCCACCCAACGGCCACGTGGGTGAGGGCCTAGAGTACTGAAGTGATGGAAATACATGGATTATGGGAAGGAGGGAAGCGGAGCCTGGCCCTGCATGGGGGCCACCGGGACTATGCTTTCCCTGGATAAGAGATGGCTAACGACTTGACGGTACGATACATGGAACTTCACCGAGCCCCTAACATGCTGTACGGCGCGGTTATCTTAATTACCGCAATAGGAGCGCTAGCTGCTAGGTGGAGGAGCAGAGGTCGTAGTTGGCCGTTGTATCTCAGCGGCTGATAGGCTTTTATACGTGGTCTCAGAACCGGTAAAATCCTTGATCTCCCGCAGGAGGGCGCGAGCCAGAGCGGAGCTTAGAGCCTCCTTATTCCCAATGCTCCTTGGTAGGTCTTGCGTTGGGGATGTATGCAGGAGACCAGTCAGAAATTCTAGCATTTTAGACATTATGCCTCCCTAACACCGATAACGCATGTATCTCCCATTCCTGAGAGTGGCTCCCCTCTCTGGGGTAACAATAAGGAAGCGCGGAGAAAGGGAGCCCGACACATGGTGACAGCCGAAGGCTATGGAGGTATCCCCCTTCGTGGAGATTTCGATCTGGAA ++ +$$*.-**,*+)((()(*))+'***)*)()('*'(+,+*(''''*'((('&(',(+'(')%')''(((($)''%***((+$())%,/2)*()())(*-('''(-*()*'((((,)((&()1*,(('''))()*)'*)('',)'*,))&&()(('(*((-,-)((+,0.*)+'''''(*,,*))''(*++))*,,**+,53-(++++*')()'*+(')('+-,-)*-*(%,1/-.+/2**+-)()))())).(&&'))))(''(((,0.0''*.+,.'()))'('*((((('''(&))+*0+')&'('(*)))&'+)(')*''))'&)()((()))/+*))*)'(()(((')&''&((&&&(()*('''''&'(((((.,++('(&('')))'(''*)0.(&&((((((.,)'''*..,((+**()-,,))''**,-,)()2/*)(((*+))()*()*+*&*'(()*(,*)*')''(*'(*)*+)()','').))('()(+'''(&(')''*'(*(('*((++(.,(*)+--,+*,-+*++*('(&')''&'(&(**(,)')+,)()(&((*)(+,('(('&(()''&''()+''&&))*()*+,-()((&)(()('('-(('%&''*))((&((&(('+''&&')+,-,))&)(&')--('''''*+*(&''''(.,('()*)'((&(&&('(''((*'*())&')''((('(')&'())(''''(*+)(*))*(&&*)'')))++)('&('(*+)*)(((*((&('&'(+))*((*((+,)'()-*)*&(')+(*''&'%'(+(*((''++*(+()()().3/(&)&(),*())*)((')&*,***.+,(()+))&')**(+*+*')()))***-,,)(+,,'(*+*),)**,)((+*-,(*,-)()*()+,*,**)&()((()+)(+.*,,)1/)(('')'(')+)))(*+*),**(&)*)12*,*,)))-0.+()&&()(&*')((())*.-)-,))))+''*&((*)()-*((()()'(()((,*)(+(*'*+)('')'()*(''%&))%'&('&'&&&)*)*-*')**)++))**+,+,'),((+$)*)-')().**)(%,(''*()+()'*)('(,-)),-*)()')**&)('((,*(&*+))(()(-)))()('&(+*()()&'(*(*)(*))((('()))&(''-+''')*)+*++((('(')*)++))+)(('&'(*((&&(('(&'(*+)'))(('*))(+'&%&&(%&)''&'(()'('%&&&()-1.*'(''()'&&'%'')((*)('&%&()))++''&('&(*0.)('(,)*-*((()''()('&&*'(*())'((')()+*(*))((*,*('))((**)(+)*)(((&)*'(((*,()+'()(*+'*)**+))+()''()))((&(*+*)/1+(**('(-'(*(()*))+'((*'(*))()*'''(+'+)(($$+)-2)')(*%'()(('''''*()**))*()*'((+)('(&((&('(+*((((*+*),&*'))*('%&()*('&&((-**)*()+(,())),))'&)*(''))*+*-+,,)'((()))((')+&'+*(,*(*)(***((*(')((0,(''))',,)*('(((**(''''*,.((*((*+))+)((()(((()&()(('&'''&&('&'('*+*'*)***(',+'(('(&'()'('****+++*),+)((+*+$()-)/)'-)*))*/2+*)*&%'),,/-(&+)(**()-(****))((+((''+)(','(*-,,*),(('*+)..),*,'))(+*((+())**+,-.-+*)(,1**3/.-,)-***,*+,.066**)((()')),**))-(+((*)-))))+)*))&())()*(()+(((+(*+**+)()))+1,)&(')++(%% +@channel_476_read_84-2D +TCTATCTTCGTGGTCATTCTGTCTCTGATCAAGCAGTCATGTTTTGGCATAAAGAACATAAGTCATTACATGCCGAGTTGCTTTCCCCGGGGTGTCCTCCCTCCTCCACCAACCTCCTGCACCACTTCCCACAATCATATTTCTCTTCAGGAACAATAACCCTAGCCTTATCTATACAATTTTTCCAAACCACATATGAATCTAGTCACTCTGCTTTATAAATCCTATGAGTTGGATTGATCGAGCCAGCACTAGGATTACAGACCGGGATTCAGGATACGGAGGGCGGAATTCAGATAGGGATTAATACGATGATGGGAACAGAATACCATCGATATGCGAGAAAGTGTTGGATCTCTTTCCTTTAAATTACAAGCAGCGCGACTCCCGTTGGAAAAACACTGAAGGAAGGCAGGCTATTAAGGAAAGGCGTCTTTATTAAACCCACAAGGAGTTGTGCAGAATAGGACCTATCCATCACATTGATCTAATCTTACCACGGTTCACATCAGCGTAATGAAACCAAGGGACAATGGGATAAACCCAAGCTACCCCTTAGAACCGATAAACCCATCTACGGTGGATGAACGGCGCCGTGAATACTGGAAGGTTCTCATGCGTTCGATTAAATTCTAAATTTTAGGAGTCTTCTCATTCGTACTCCCGCTCCAAACCTGGCGGAATCTTCCCACATCCGTGACTCATTCGATTTCAGCCAAGAAGGAGAAGTTATGAACCCGAGTCACCCCATCGGCGGTGTACATAGGATGGCAGCGGGGTATGAATGGAAAGGGTCAGAGGCTGCCTCACACCGTGAAGTTATAGTACTATGAAGGTTCCTGTCTCGACATGAATTATTAAGCCATGAGTCAAATGCAATCGTCCCATCATTGAGTTCTTCAAGTCACAAAGGGAAGGCAGGAACACTCTTGCTCGTCGCATACGAGCTGTGCCCTATAGAAAAATATTCGTGAACAAATTCATATCCTCAAGCTCCGTATAGAGTACATTAAACAGCCCATCGCATGCCGCTCACATCAATGCAAAGAAACCCCATAGTTGCATCGTCCCAACACAACACCAGCCTCCAACACTTTAAGCTGTGAGAGACACATCAGAGCCTCCTATGTTACTGCTGGCTGAACAAAAACAGAAACCTTCGCGTGGCCCAATACGGAATTGATGGGTACGCGGTAGTGAGAGCTCCAATATCCCAATAGGCAAGCTGATTCGCTCTTCCAGGGTTGCAGCCTCTGAGTACTCCCTCCTTTCACCTTGGTACCAGAAGGTCCATCTCCGGGAGCGGCCTTAAGATCCTAGAGGAAACCTCCGGTCGTACTCAGAAGTTTCCAGAAATGTGTAACTGCATCAAGAGGCGGGAATCAGGAACATGAAGAGCCCAGGTCGGTTAGACCTCCAAGCGACGCTGGGGTATTCTCAGAGTTTACCCCTTATTAATACATTCTAATCGGTACTTAAAAACCTTGGTCTTCATTTTAACCCCTTAGTTACAAAGAGTAATACTGGCACAAGGCGGGGTTAGCCATGATTGGAAGGTGCTTCCCAGTAATGAGACGCAAGGCACATTTCGGCTTGGAACCCTCAGTGAGACAAGAAATCTCAACCGCCCTTTCGATTCCTTCTACTGGTCCTCCACATCACCCAGCAACAGCTCCAGTGATCACACAGCTCCAAGGAGACCGATCCCAATGATCCCGATGGGATGGTGGGAAGGGATATGGGGAAAGAGGGGAATAGAGGCCCCTGATCCGCCTTCCTCAGGAGAGGCTCCTGCTTCCTAAGAGACATGACACCCCATCTCCCTCCTTACCCCATCTAGCCGTGAGTAGGGCCCTTAGGATGAAGGTGTATCCTCCGGCGCACCACTTTCTGGAAGGTTCCAATCGCCTGCATACCTATTGCACGAGCTCCGTCTGATCTTCTCCATCCGGTCCCGCGTAGTCATGGTACGCAAGCCGAGCCCAAGGCACCCTCAGCTCCTGAGATGGTCAGAGATGGGGTGATGTCTTGGGGTTGACGGGAAGAGTCAGACACCGTTGAATTTGCATCTGTCATCTCGACCCATCCATCTTACTAGAATGGACAGGACACCGGGATGGGGAAGGATGGCAGACGAGACAGGCGCTCCCAACAGTTCTATTCTAGTAGCGGGATAATCTTCTATTCCTGAAGGGAACCGATAGGGATCCATCTAAGCGATTGAGTGGCGGGAGCCAGCCAGAAGGGATCGCCACTCCCACATGGATCAGTTGAAGCAGGAATCAGCGATGAACTTCAGAATCTTTAGTTCCGTCGATTCAGGTTTATGATCTCGTGTTCCGCGTCACAACGCGTCTCCATGCCTCTATCAGGATTGGGCATCTAGAGGATTCCGGCTGAGGGATGAATTCATGTGTCTCCCCTGTTGGCATCAATCGAAGCGCCCCCGGGATCGCGGATTGGATTAGAGTCATAGTGGATGCGGATTTAATTCCATTTCTCCCCTATCAGCCGGGATCCTACCGGGGCTCTCTTGGGTCCTGGCTAGCGCGCATCATGGGGTCGCGCTTCTATTAATGCGATGTCGCGCGGTTAGGGATCTCCCGCTTTCGCATCCTGTATCCTTCCATTCTGGTGGCTTCCGGTATACCGGGAGCGTTCAGTTGAGCACTGGATCTCGTGAGTACCATACATTTAATAGGATTCCCATAGCTGCCGGCCCCGACCTCAATGGAGATAGGATTCTCGATACTAGGCGGGCGAAACCGGCAGGACCCTACTGAGGCAGATCCCGTGGATTCGATGGGATCTCGGCACTTGGGACATGAAGTCCGTCTGAAACCGGTAAATTGGGCCCGGGCTCCTCCGTTCTAATATTGACTCGATCCCCGGATCTCGGGGTGCGCGTGACTGAACGGTCCCGCGTTACCGTGTAGCTCTGGTCTCCCTGGTATGAGCCCTACCGTATCAGTACTCGCTACAGAGCGAAGCGATCACTCCTCCCGAGCGTCAAGCCTAGCCTCCGTGCCCATCCACGCGCGATCGCTGTGCGTAGCCGGGATGAAACGAATGCGGGGCGGGAGACGAGATGGGATGACGGATTGGGATAACCCAGCGGTAGAATATGCCCATGAGCCTCCCGAGCGCGGCTCCCGGTCTATGCGCGGCCGCCCGCAGCGCCGTGCCTTTGACGCAGGCATTTCACCTCCAGTAGCCAGAGCCCATTATGTAGGCGCTAGAGAGCAGGGAGATTCGGTTAGAGGCCATCCTCGTAGATCTGGAGTGGATCCCATTATGCGTCTTAGTCCGAGCTAGAATCATCGTGAAGTCTGGAAACCCGACAGAAATGGCAATGGATCTCCGTCGTACGTAACAGGATCGCAATAGGGTTGGGAAAGGGATATGCGTGTGGAGAGCCAGAGCATGAACAGATCCATACGGGTCCTACCAAATGAAACGGGCGAGCCAAGCTGGATCGCTCCAATGCCTCTCTTGCCGAGACGGTATGTTACTCCCCACGCGGATCTTTGTCTCTAACTAGTCCTCCAGGAGCTGTCTGGCGAAACAAGGGAGAATCGCTCGCATCTGAGCGTCCTCTCGTTACTTTCTATCCCATTATCTCTGTCGCTGGACTCCTTACGTAACTCCCATCATTACCTGTCTACATGAAATATTGTCGTTATCTTTC ++ +$$&+0,)()'%(''))*,*++*'*('')(**'''('*,+,.444*(*,(&&)'&,,'('((%,0))%%((%')'''(*)**+2,)(((&&&&()-))*)&'**,+(*-)+**&(,+)+,.*'),+.0+(*,-/-,,+*,,170-312/))(215.,,*+'))'')))+*+-,',((((+.2472,++)*),,*,*+,*$'++(')+*+)+*+)++/*+*,/*.(+')+**(++(()'&%%(&'*,,+,-,+'&&**/.+''(''&'&&%&*+&()(('&'(&'('(((*/1+*(('('&'&&(+*,*'*'&(**+/+*)/1,4/4,*)''((''(''(*.*)*15()*)()''***())06-+&0)*/1.,)**''((%)()'()+***-/((&-.1.+((*,+*))*1+)(('&('%))((()+/.'((+**''('(*&&,*'')(+,*')('+*,++))'++)&''*))')*((*)+++*((*,.,(+1/-+)&&'))($,--,-*)(((),,)*,+-01&'(('''-*-.*(''(()+*(((('('&''&&&&'%'')&&')((..))*-+)&&'''(*&')(+)'''((####(.(''&(('(((()))')&((+*-+('')()2--()&'*(),.)&(''&(),-,(.)++(*)(()*((*'*(.1/,'',))()*3431+1+('''*+(()**-+,0,.(,+.,//-+((&,1).-**)*.*),*))+)-*)('')*+)''')*+*('''())(''''&&'()()-'&(('&&')+,+'##$)1*(('*('(((''))'&&)()*()*+**(()'()&'&%%$'()*)('./')(&)'''(-()(*,*+)(+'('*((*((''**+4(**&)**(&*'&'),*)+)*)*.,.,/1-)(*)),14/.--4/*)++)*23+*)-//2,+*()*)+,-)))')***'+))(((,+(,47771--0/))),35,4/+--++(+/)*',+)()'(())(*'*)*+))*+*+2/*++-++.++*-***)),)(*+,/,*+-/+-*++,46.*++-*)''(*)0-(*(+*(+-2.(,(*'*&')))',+)*)(*)+.)**++,+*()***,-**,..+)**)((((&&'(*'((,)+))('))--('-/,+))'1,*'')+))-)*('((*+)'')('0,.)(())''')*())()()()''())))+,.,.5+*,,/+()+*)())((),()')(+)0'*+**)*,**)(),(+((((*)(,+)),+,-51,')%')('(((**+1*''&&(+))'())(')))(*((((*(''*((''**,,2)*'''''**-*(**((--+5*)*05(*+,14-,+++***')*.+)+)('('())*(*.+)()**)')*(+('((&(()(()'&'('&*'&'(*)*'(,(+)),-))((*)*))(-+(((,-))((((((())+*&(*+-+(&)+(''(((((+,61(3)*++*(,+-,1,/30))+)''(&'&(*,,//4+,,*/.1)(')*,2--.,**())((+*')*,,(++,--,4-)()+,,4,)+/,-10.,)(()*+.()**(((-5,*()*+*)',*'')).0**))*.+*-*/++/.,.,*)**(''*3/()--.)*,-(&((*))+().*+,-()+'&''***+-,.)*-,./*)')+,+*,+,*+-,,-,,**(*'*(*-()-,-)*-/*)*(&*(((,,)(**))+')+()((*((*055+,./,,,0-*')()))''()*,*''$*)+2*)&*('**((((,-(,,+,,1+*&)&*()*))))*())((+.,))(((,*))(()'(+-+*&%)+))*''''&'''%%&&(&')))'(%'&*)**+'()*((()()(&&*)+----,-2,)*-.*((**'(()-*-,''&'&())(.*,)+*-+))**(('()*+,+((''+'''')'&'.+((&'''&&('(())*((()((()(')('()+)'&(),('''((*)())()').++)*.1,+***)*-.+++*,**(**+/)***0()**/,)(*(+'%)/+**',.+*)++++./0/-)(''(''$,)'(*,$&)%('',41,)).**((,(*(+,-,./,,++2,*'(*()-,)+)),)-())()')('')*+)*)+*)')+'(&%&(%**).*.**,/)),(&*-1(*((-*))*-*''&(''(''*)''(()%'&&'''*()(()'(-)+)(('''()(*)$'&&&)((()(**'))0+*&)$&(++(('('0()3.(*-*-*()*&()*//(),+))/+.,)+(''*)'(()(')*-+')'*,(&''**((++-''((')(*)+'(*0)((')(('))('('(*&'()((&+*(&')*)()&&'(((,,)''''''%&&''())+,+*-+))'*+*+*((*+*(((''((*('(&(,,()'*'((((().,)))*&,))(&))(&(()()('&''''(*))(&-*-'')+3$###-,/.,(''%'()'()(('&*-((%&&(((()(''()'(&&')&*('(&%&),**+.((''(''''*)&'('+,)%(*''()))(+,)*)*,+*'*+)&(''''(()()(*'-)(')--****('*(*')'$())''''(((&''&())*)('()(*')))))-('&()''&()&'&%')('(()))''''()(('()-()($%'&(()&'))'&(+-)(()*+((('*)((*()('&''('%''*+(&&&'''''&%&'('&**(+*,*))(*'&&)&&'%)*((''()(('*(''((&&,++'%$'%%&)++)+)(()'))*((,(()))()*''')****-)'(((*13*+)('))(+*))(&'')'(*,,)&')(()(()(()(*,)((('')+))))''(+)*('&)(*()())'+)-'((+*).*))+.,*(&()''(('&)*((++)(()*)(()''&&')*)()(-'))()))'&&()(',**/,**'()**),,(+))()(*+,+0,())*(&'((-)(*,+(&(*.+*0-)*))'))('))*(((((&((()((()*-(()'+++**'''()'''''**(('')'%%'&'''''')(()(()*-(''()(&''')-+)))*+'())))**(*)+*'))+)+(()+))*((*(&(+)*()**))))()*/+)*)')((*+*)*)*+,./()),+)+-+*''())+*(&,***((')')*)'&(('&((**)%%'))**2.)'(('',,++'-+'($))'''+((')+*&((*()()(()*).0)(*++)))*+,*+*)'(*(''((('')/-*'(((**)-()*+$)(*),('((*'()*)+.))*,,,)''*()*))+(+())()'+)+*(+(())))(&'&&((((*15('('('()***,'*-*)%'(('(')),)(*+('*),.)(('()&&%*()&'&'&)'**/52'))+)'(()(**))+))+,(')(*-/-,*/('+(*(*-,*(('())((***)('('((**)(')''.).',+++*'*&)*)&&)*'+)*+*(')*+-0.-++,+*-)026,,,+.,51+(()((*,,++)('(,*,**)*))*+(((+76-(+/++,+,)-/,)+-.*(*)+*()*+(((('()+*-)-*),(*)**((&')**(%&)),/35-*,*$()'(-,+)+'0%% +@channel_138_read_95-2D +TTTTATGCTTGGGGCTAATCGAGCATAAGAATGAGCAAATATCACTGTAGCCGGGACCACATCTGACCTAGAACAGAAACTGGGCACAGCCGATACGCTGCAACAAATCACATAAGCAACACCGTACTGGAAAGTTGGGCGTCAGTTTCTCAAATTTTAGGAATCTTCTCCTTTAATTAACTCATCAACCTCTCATCTAAGAATTTGAGAAAGTGTAAATTTATACTCTCAGGTTCTCGATTTTAATAGGGAAGGAAGAAGTTACAGCTCAGTCCACCATGAAGTTGAATAAGAGATGGAGACACCTCAGCCCTACTCTGGAACTAGAAAGATCGATCCGAGGGAGCGCTGCTCGTGGGAAGCGGTGGCTCGTAAGCTCCCCGGCTTCTCTCCCTAGCTCGCCCCCGTATCCCTCCACGAACACAGCCATTGAAAATACATTCGAAACGGGTGCCAGGGGTTCTTTCATTACAAAGGGAAGGCAGGAACACTCTTGCTCTCAGTCCACAAGGCGGGTCTACACTCAGGTGCATGAACAAATCAACTCATCTAATCAGTACCTTAAACAGCCATCGCATGCTCAATACATCCAACGCAAAGAATGGCCAGCACAGACTGTTTTAACTGTTCCCCGACAGCCAACACATCAGGCCTCCAATAGCTTCTCATCTTACCGAGCGGGCCTCGCTCGGGTCGGTAAACAAAACATCGAGACCCGGTAGTGATAGATCCACAGAATACTAGGAGGAATTGTGGGGTATGGTGAGCTCCCCATGGCTCCCAAACACATATCCAAGGACTAGCCGCATCACCCTTCCTTCATTGCAGCCTGAGTACTCCCTCCTTTCTATCTGTAGAAGGTTCTCATGTTGGCGGTGGCATAGGAGCCGGTATCAAATTGCCGGAGTATGAGTCAACCCAGAAGTTTCCAGAAATGTGTGAATGCAATACACGCGAGCGGGATCAGGAAACATGAAGAAAGCGATGTCGTATCTAGCAATACCCTCTGAGTCTGTCTCAGGGATTCGCCTTGACTTGAATGCTGGGATCAGGTGTGGCTGATGGATGATCATGATAAATCTGTCCTTCAGTTTATAAAGTGCTTTACAAAGAGTGTAAGTGCTGGCGCACACAGGCTCGTGACTAGGTTGGAAAATGCTTCCCCAGTTAATGAAGCCGAGCATTTCGATGGGCTTGGGATCCCTCAGTGAGACAAGAAATCTCAACCCACCCTTCACCCCTGTCTCCACTGAGCTCTTCCTCCTCCACATCGCAGCGAACACTCCAGTAATCAGCTCCAAGGAGAACCAGGCCAGCAATGATCCCACGATCGAATGGTGGCTGGGAAGACAGGTCTCTGGGAAAGGGAAGTAGGCGCGCGTAACCTGCTAAAGTCTCCAGAGAGGCTCCTGCTTCTAAGAGACATGACACCCCTATCTCCTCCTTCACCATCTCGAGCGTGACGCAAGCTAATGCTTGCAATGGCATAGTATCTCTGCTCCTGGTGAGAAGCACCACCACAGCCGCCCATTCTGGAAGGTTCCATCCGCATGCCAGCTGGTCTCCACGAGCTCGAGTTTATCTACTGTATTCTGGAGAATCCCGCTTCAGTCAGGTCATAGTTGATCTCGCAGGGTAGAATGCCCGAGCCATAGCGCTCTGAGCCTCATGGTCAGAGATGGGGCGTAGGTCATATGTGTCTTGGCGTATGACGGGAAGAGTCAGAATTCAGGCATTTGCATCTGTCATCCAACTCCTACAGCACGCATCCTCCATCTTAGAATGGACACCAACAGCGATGGGAAGAGAGCACAATGAGACACCAGCCTGGACAGGCACCTGGGGATAATCTTCTATTCCCTGAGAAGGGAACACCGACTTCTATATCTTTAACCTGGATATAGAGCGAGACTCAGAATGCTGGACTCATACCGGGATCAGTGAAGCAGAACAAGGCCTGAGAGGAAGATCACGGGCCTGAAGTCATGCATTGCTGGGGATAAAGCGAAACGTATTCAGGATCAGTATTCCGTCATTCCGCGCGTTGCTTGATTGTGTCAGAGCAGCGAACCTCAGAGTCACTCTGGTACAGGATCTGGAGACCCAGGAGGATTCCTCCCTCAGGACCCGCTAGAGGGGTGATATTCGAGGCTTTACGATTGTCTCCCCTCCTTGGCGGGGATAGCTGGAGATCGGAGGCGCCCCATTGGGATGACCTCGCGTCCATGCATTGGGTCCGCCGTTCTCCAGGTATTCTTAAGCCGTCACGGGATCCTCCGGCTCATCCTGCCGCATCTACGCCTCCCACGTGGATTGGTGATCTGAGCTGCCTTGCCGCGCCCATTCCAAGAGCGCAGTCATCCTCGTTCAGGGGCGATCATGTGATCCCATTAGGCGTCGTCTCATCCGCGGAGGCCCGTTCCGTACGCCTTGGAGCCATCGATTATCTCATCTTGTGGAGACCATCAGCGGCCCGCGGTAGATTCCCCATCGCCCCGACCAACCCGGGGATTTTAGCTAAACTGAAATGGGAATGGGGTAAAGGCGCTGGCTCTCCCGCGGACACCGTACCGTAGAGTAGTCGACATCGCGTGGACTGATACAGACTGTGAGGTATCGATAGTCTGGAGCTTAGAGTGGTACCTGCTCCGCGGTGAGCGTAACGGGTTCAACAAGGTATTGCTTAGTAGCCGCGCAGGGTCCCCAGGTCACTCGTCATTGGTGAAATCACCGTGCTCGTTACAGTCTCCTGGTCCCAATACTCCGGCCTCCTGCTCTATCCACGCCCCCGTTGCTCTAGAGCGTCATCCTCGTGCATCCATCTCTGCTGTCGTCTAGTCGCCGTAGAATGAAGCAACCAGAACCGCGGGCGGGACGCTGTGAAGGGGATACCGGGCAATCCCGGCTCCCGCGAGCGGTCGGTAACTTAGAGGTAGAACGAGCGGCCCGGTTGTCGTAGCCCGCGGAGCAGCGTGATCCCGCCAGGCTTTTCGGCTCCCGCCTCCCGCATTATTGATCTCGCGCTAGGACCCGCATACCGGAGGTTCGAGATGGCTAGCCGTACAGTTTATACGCAGTATGATCCCATTGGGTACGTGAAGCCGCCCCTAGTTGCGATAGAATAGCGACATCGTGTAGTCTGGGGATTTAGAGAGCGATCGCGAATGAAATAGTCCACGGTTCCTTGTGAACTTAGAGAAACCAATCGGTATTTTGACCCCAGCGCGAGGGAGTGATATCCAGGGATGAATTGGGGATCCTCCATAAACGCTATCACGAGTTCCAAGCCGGGTTACGCTCCGGGTAATGGAGCGCTCTAGCTGGGATTCGCTCCGTAACCTGTGCGAAGCGCTCTGTCTCAATGTCTACCTCCGGTTAGCCAGGGAGCTGTCTTAGAATAGGAGAATGGCTGGCATCTAGCGTCCTCTCCTTTCATCTTTCACTGTGACCGATTATCTCTGTCCCTGAACTGGACTCCCTTATCGCTCTTGGGTCTATATATTTACGTC ++ +%%.)**))(-)('()(+/,((&)(*''&&(,+)(+104-)--++(*+)&()()('*+*,--+*)((()'&*02**+-))*,++./*+,*(*())'*)),.++*/36+*+))****/1.*.3*+--,*-,-68.*,+('((,+)+*/7,-*1174278,,0/8674+1-/+-*2+.21)-)*+0//+**)+*/+,+))))*,//.3-,**172***,.1--1*.+*****,*(*,/-''()./0)*-*',-/831-2*)0,,--,+-++***),)*****+*0)(*+-,(*)(,)-.0,+,+3)+))*.-,,)('))*-,++60(&&(1()))))'*,'(()*((***)**('&')++)())+('&*&'*'*))(''((&'&'((()''))))))%%''''($&''()((*'''%%),,).),-*)((()))-,)))'''**((')))('('+*)/2('*,-0.*6/0+*+*-06/*)*1()*,-)+1/+*)*/*,*,*,,0,(+(+-+-,*)*(((+*''()(')('&'*1--,).--.)')(+().,++&)*-.)()'&)+*,2))+)))**))-+-,,+/.1.,.22--/*+-248,/2.+*+,,0-3,*+)++--+++))+),-25+()**/,+**),)-0/1,*)(()(+++-+'&(+,-)(,)))(**((''()'(')''((*((('')&('(',/1555-**)'&'(.((())(&'()*+(+02.-5-.*,*('(''%),,.6/,)+,+)*)(*)''))*+,/-,+,*,)*,/..1375//.+-/7.-,+*(+)''++)+.++*(('*,5)*+-+*,/,,)(+.,+***+)-(('))*+2/*(+-*+*(&((&''(***/+*,,**(**)-*,+*'')(*))(()+**+(/1++(()**())**)((**(,(*.1.4,,/77100.3*.-+../+1,/23)+),,/,)+)*)+))(**()**1+2040/2++/4,++(+++**+*(.*&&'++*++((*)))*'(+*,--.,2/+*)*+)())')*(-)*).2*+-,,-**)0-*())(++**)**+)'(*),,**)(,--32**,-,)+-/-*')/((((.*))*+,3-*(03*(+**+)**(**-/0++).((+,,***))+*()(&&'(**-*1))+*,+/1*')*.)+)((**)((*)(())+071++)+,,+--.-(+2,*).,0-)+),-2..0-3*12.)-+(),++**+.0/****-/,.***++)****+*2.4,+.+,,*))))*()/,--*+-,)'++,,+-&*++++--,+-(*)+*0(*+**+))**..--++-)*..*,,.*)),,)())*+/-+,+*).,-)()(*+///273*+++3)*)()))))),+*)-),.,.)+**)*)-*+++-,-,+--,0210//-(**)(*.*.**+(*+*())+-,.*)-,-+/*(')/.*((''(()*($$%$()()')+-,,*,,))+++)-+''+,.1/..,)+,*.*)'())--**-$**,+/1,.**-0/-../310.070.-04,*(.**+2,-,-(+*++))+)+,+.*())+())-++.('*+))+,+()+-)*)(*)**0*)))+++1.*(*)(*))((')*))-,****00*))(''.//,,**(())()(&())(*((('))**--+)(*)),++-/,+)).))&''(-)(*-+++..,*,+)**,)--+**)1++*()))*,--*+)(*,+-40/-*++,--0-+((**+,*)'((+),**+/-+''''(),-+(),/--+*0(*')*1**+*,,/-+,6-.+*+,-)*('*+*,2.,*,.,,)+*(-*,,+,+))**)*+0-,,2+,+*&,/5)'**(')1+++)3*))(((*'+,(&&(),+),((('*+)(,'''&(()+'*(-'(+,(/-)))*)(.(++)')''&&')*%((,(*+),,,10)*)('(((,)*+--3+((+,,)('((&'''(&++)*))***)(''((&(')0),*),(+)((*,//*(&)..0()-,0*)*,(),2)))))(),+*)*$*-.,,,+*/+))--,*)*0/)),./,**+*))+.,*),)).*)1*,+,)(',))++*)++))-6**++))*-+))/+*(()&&*)('((*))(*,.*'*''+*,('('+-,,('*))'(----+*))('('((&*++**,*,.)'&)'**))'')*))))+,)'(&('(+,+,'('*)+)(*)((+)***,143-./.3,,-/.-*+)(++,*,,,-+)()/1)(**)(()(+)-*'+*,*.0.+*'))***,+-++,*,)')++**,+,-*-)*+,,(*'(*()''*)('(*++))*))*)*-..+++)*))(*,4/**(((++),-*)))))+*)(+()'&()***)++-)-++)(*+(()('((*(,)(')**+,+))('''*)()&'(+,*)+))+***))*+)()()'))*)(((''(((*+((&&(**,))'(*'')*)*+*-++(-**++++*-164*&,+(*0()/+-(**)'(//+(*)),./+*)))))()(+***(*+*((*((''))''(+'&()(*'')('(&*)())*)'&)'('('(()'.()*+*('&&'(''$('*,*+*)).'(&&)((+))*(''*)('))**''+))*+*(())''',..),')(('((***.('&(('**))*+.)*)),**+--))+*+((()*,+*+)'*-+()()*))**)*(++,))*+*--,+++-*/))-//)+**+***))-++-*/+.)-1,,/-*(())*)*,++(*'&*(+,,-.,1**++)++,+)))(+*(.+*))++)+.+''(,)**(()%&,/-+*)-/..(())/*'().('),)(),*))+()*-**))()))'''&()'*,(&&')))('(+*()***')('('++'*(&)'''(&(,((''*)''*')(()+,*'*)'))'))(()*+/*)**+**('(**(',*)++02-*(((**))),())'()+.*'(,+''*&'(***)'&))++()++)()(())+**0.)(''())()&&''')$&()(*+()'&'(*.)***)),)'(*(((&('&'()')'(((()'&''&(**)(*('&(,+'%')'('(*(*,*(&*+**))('++.'%((())+),,*),)-))))(*'&(+'())(),,*+()*+,00))&&('(+()&)*,)((('()++*))(((**((-(((*)(('()*+,0*++(('',..*)))('(-0*)(((''()((''&(()(()*+0,++/+*)(''()('*(),&(''&()++*)*((*)((&&()*))),-))(((()*)(+(*+-../),)()-*))))*++1.,+,,*&%&%+*,++.+))**+))(,**++-*''&*-*(&((*)63,*()*)(-.,*&()++.*+)),***3.,*,*,30.)+))+()'('(*)*../,-/-)(+,,./+)((+-,)(*)'))(((())((()+*'))('+-.****%% +@channel_29_read_147-2D +GTAACCTCCTGGTTATCCCAGAACATGAGTTGCAGGCTTCAGCTGTACCCGAGGGGTAACTTCTCTAAATAAGAGGCGCCCCTCCACCGTCGACGGGTAAGGCCTGGAGCAGGAAGCAGGGCAAGAACCTGGAGCAGCCATATGGCCTGGCTGACTCTGCCACTGGCAGCACAGTCAACACTAAGTATTTACTATAACTAAGAGGCAAAGCCATGTAATAAGCTCCCTTTATAAGGGGAAATCACTAGATGCTTGTGCTGAGTTTATGCCTACTGGCTCTTCTGTGCCTGTGCTATGGCCTGGATCAGGTATGTCAGAGGAGCCCATTTTAGTGAGGCAGGTATGGGGCTAGAAGCACTGGTGCCCCTGACCGTTGATACATCTTCCTGCTCCTGGTACTGATGGGTGCACCGGCGCCAACGCTGGGCTGCACGCTACCCACCAGGCCCCTGCCACTGCCAATGGGCTGGCAACCTGCTGCATGTGACTTCCAGAACACACCATACTGCTTCGACCAGGTAGGGAGGAGTCGGCCGAGGCAGCGAGGTGCTGAGGCTCCCTACAGAAGCAAACATCGATGGTGGTGAAACCACAGGCTGATAAAGAAGCCATGAGACCGGAAGCAGGTTTGGGGGACTTCCCTGAGAAAGGATTACATCTAATGAAGGACATGGATTTTCCAACAGGAGATCAGTAGGCAAGGCTGGGAGGTGATGAGACGTGGCAGTGGGCATGCAAACGCTGATTGGGCAACATATGTTATGAGTACAAAGTCCTTTATTAAATAGAAGGAGAACGGGCCTTGGGAATGGAAGATGAGTGCTTATCTGAGTGCCGTTTAAATCACGAAATTGGATGAAAGGGGGTGCAGTACTCCGTCATCAAATTTGCAATGTGGGTCTCGGGCCTCACTTGCTGACTAACTAAATATGATAGATAATCTGGAATGGGATAATGCTAACTCCAGCTCGGCAATTTGGTGACTCTTGCAAGGTCATACTGGGTACGCATCCAAACTCAGTTCCTCCATCACCAGAAAGCTGATTCTCCCCACCCCGCCCCACGATCAGGAGGCTGATCTCCTCCTTCCTCACTTATTATACTCCTGTAGCCTCGGCCGTCAAGGTTCAAATAGGACTAGGTACTGTAGTCTGGGGTAATCCTGGCTTACCCCGACAGCTCCTCCCTCTGCAGTTGCGGCGCTTCGAGACGTGTTTCAGCCTGCAGCTGGCTCTAACGCTTGGTCGTGCTCAATGGGCTGGCGGCCGTGCGCGAGGTGATGGGTACAGGGGGCAGACACGGCGCCGCCGACCGCCCGCCTGTGCCCATCACCAGATCCTGGGTTTCCGGGCCGCGTTCTAATAGGCAAGCAGAGCGGTGGGACAGACAGATTCGCGTCACATTGGTGCGATGACTGATGGAGTGTGCGGTAACCAGAGGGCGCGGGGTCGTGGACATGAACAGGCCAGCGAGTGGGGACATGTCAAGAAACCACCTTAGCACTAGGAGGTGAGCGGGCACCGGGGACGTGAGCGTGGTTGAGGATCGTCTGAGGGCCACTGCCGAGACCTGGCAGGAGCCCAATCGGGTGAGCCGGCGCATTCCGATGGAATCCGGTGTCGAAGTAGGGGGCGGGACCGCACCTGTCGGTAAGCTCAGTGCTGGCGCGGGGGATCTTGTTTTCCCTGAGTGCAAAGGGCGGTCAGGGTGAAGAGACGAGGTGTGACGCAAGCCCTGCCCCAGCTACAGGGAGCAAGGTGGATGCACGGAGTGAGCGGTACGAGGGACAGAGCCAGGGGACATGCGGGAGACCAGGGAGCAAGCGATGGAGGTGGTGGATGGTGGGGTCCATTCATCTCACGCGACGTGCCCGTCCCACCCCAGGGGCTGTTCCTGGCGCGCTATGGGCCCGTGTGAGGGAGAATAGAGAGGCGCTTCTCCGTGTCTCCATTTTGCTAAAGTGGTAATGGCAAGAAGTCGCTGGAGCAGTGGACCGAGGAGGCCGCACTGCTACTTGCCTCCAGCTTCGCCAACCACTCCGGTGGGTATCCCAAGAAGCACAAAGCGGGGAACTGGGAAGGCGGGGACGGGGAACCGTACTCGAGTGCATCTCCTCATCGCACGACGCCCCTTTCATAAAACGGTCTCTTGGACAACACGTGAGCAACGTGATCGCCTCCCTCATGCGGGCGCCGCGGTCACGACGAACCCTCGCTCTCCTCGTCAGGCTGCTGGACTTAGCTCAGGAGGACTGAAGGAGGAGTCGCGTTCTTGGCGCGAGGGTGGAGCGAGACCGAGGAGTCTCTGCAGGGCGAGCTCCCGAGGGTGCCGGGGCTGGACTGGGCCCTGGAAAGAGCAGGATTGCATAGATGGGTTTGGCGGGAAAGTAAAGATTCCGGAGACCCCACTGTAAGAAGGCCTGGAGGAGAGGGGACATCTCAGACCTATTCCAAGGAGTGCCCGAGAGGAGCCAGGGATAAGCCACTACAAGTAACTGTACCCCCTATCCACGTCAGAGATTTCGATTTAGGTTTCTCTCTGGGCAAGGAGAGAGGGCCGGCTATTAGAGGGGTTGGATCGTTAAATCGTATACGACAGGCAGGTAGCTGGTATTATATAATGGAGATGGGGCTCCGACTACAGGTGTTAAAACGGGGCAGAGCACAGGAGGAGGATTGAGTACCCCGGTTCTGTTATGTGTAGGTGCTGAATGCTGTCTCGTCTCCTTATGCATATGTGGAGCGCTGGCTGGCAAGTCCTACGCTTCCAAAAGCTTTCCTGACCCAGCTGGATGAGCTGCTAACGAGCACATCATCATCGGACCCAGCCCCAGCCCCCAGGTACCGGCAAGCCTTCCTGGCAGAGATGGAGAAGTGAGAGTGGCTGCCACGGTAGGGGGCAGCTAGTGGATTACTACCGTTAGGCAGGAATGAGGGAAGGCTGGGCAAAAGGTTGGACCCAGTGCATCAGGCGAGCCGCATCTGGTAGAACCTAGTGCAAGAATTGGAGGTCACTTTGGGGGCTACCCCGTTCTGTCCCGAGTATGCTCGGCCCTGCTCATTAAGGGAGAATCCCTGAGAGCAGCTTCAAGTGGGTGAGAACCTGCGCATAGGTGGCTGACCTGTTCTCTGCCTACGGTACGCTAATAGTGACCACTGAGGCCTGCTCCTGCTCAGCTGATCCTACATCCGGATGTGCGGAGCGTACCCATCTGGGAAACAGTGCAGGGTAGAGGCGGAAGGCCAAGGCGGCCATGAACTTTGCTGGGACACCCGGGGCTCCAAGCACAGGCTTGACAGGATCCTGTAAGCCTGACCTCCGCCAACACCAGGAGGCAAGAAGGCAGTGTCAGGTCGACTCCTGGGTAGGTACCGATTGGGGGACGCATGTCGTATGTCCAGCGTGTCCAACAGGAGACAATCGACGACGTGATAGGGCAGGTGCGAGGCGACCAGGGATGCTTAATAGTTGACTTCTACAGATCATGCCGTGATTCATGAGTGGCATAGTTGGGGACATCGTCTCGCCTGGGGTGTGACCCATATGACATCCCGTGACATCGAAGTACAGGCTTCCGCATCCCCATAGGCCCCGCTCTGGCGGCCTCACCCAGGCACCCACGCGCGCTACCCTACTAAGAGGCGACCCGCCCGGTGGCTTGGTAAAGGTAGGAGTAGGTACACCGTGTCTGACAATGCCACCACATGACTGTCCCCACTTGATGGCGCGTCAGAGTATAGCAAGCCCTGGCTATGTCCGTATACGAGCCCCGTCTAGTGGGGAGACAAACCAGACCTGCCAGAATGTTGTACGATGCTCAGCCCTGCAGGAGAGGGGCATGTGGGTGCGCTGGAGGTGACTGCGCCTTAGTGTGGGGTCGGAGAGGTACGTGGAGCTTCTCGGGCGCATAAATGTGGTTACCATATTACAGCTGTGTGCCAGGCAGTGTCCCTTGTTGGTACGAGGCAGCGATTATAAGCATCCGCTGCGGTTGGTTGGCCACTCACCTGCATTCTCCTGCCAGGAACGACACTCATAAGACCTGTCATCGGCTGCTGAAGGATGAGGCCGTCGGGGAACACGCTCGTTTCCATGTCGAAACACTTCCTCATTGCCAGGCCATTTGTGACCGTCCAGGCTTCCTGCCTTCTCAGCAGTGCCTGTGGGAGCCCGGCTCCCTGTCGCCTTCCGTGGAGTCTTGCAGGGTACCCAGGAGCTAAGCCACTATGACTCCCCTCCCCTCCCACAGGCCGCCGTGCATGCCTCTCTCGGGGAGCCCTGGCCCGCATCGGGAGCTCTTCCTCTTCTTCACTCCCTTAGTCTCACAGCACTTCAGCTTCTAGATCTAAACAGCCCGGCCAGCCACCAATATGTTGCTTTCCTGGTACCTCCCATCCCCCTATGAGCTTTGTGCTGTCGAGCGAATGGGGTATTGAGTCCCCAGCCTGCTCCCTACCATAATCTAATTACAATAAAGCAAACCTGTCCACTGACCCGGGTCCCTGCTCACGCCTCGTTGGGACTCATCCTCCTCAGGCAACCCTACGCCATGCCTCATTCCTGCTTACCCCACCGCCGGCCGCATTTGGCACGCGGTATGATTGAGGCTGAGCAGATGTCAGTTACCCTTGCCCATAATTGCCCCGATGTCCTCACATGACCCAACGTATCCCAATTGGTGACGCCAACGATTTATGGCATGTGGAGAATGGGCCATGACGAGGTAGTCGGTCATACTGAGGGATGTGGTGGAGAGGATGACCGCTCATGGAGGCCATATTTCAGGCCTAACCAGCCCACCCCACATCAGGGACAGCAGTCCTGCACTACACCATCACAAAGTTACCTCCGCTTCATATATGACACCCCAAACGGAAGACAAATCATGAGTTAGGAGCTAAGTCTCTCCCTGGTTTCCACAGACAGATCCTTGTGCATAACCGAGCAGACAGTGTTGACAAAGTATGTAGACGAAGAGGGATCTAGACGAAGTCGCGATGTCGAACGGGGCTCGAGATCTCCAGGCTGAGGCCGCGTCTGCATTGGGGAGGCGCAGCGTTGGGGATTCCCACTCCACGAGTTTCTACTTCTTATTCTCCAACTATGTCGGGTCGTTCTTCCAGGATACTCGTGACGCGTCCCCATTTCCCACTCCAGGTACTTGTCACTGTGCTCAGAAGCCAATCAGTGTCACGGGGATTGTAGGCTTTTACAAAGTCCCCACGGCATACCAGGACTCAGAGTCTCCCAGACGCGAGATGCTGGGTCAGGCGCCCCATTAAAAGCTCGTGCTGCTCTGGGGGCCCTGGGCTAGTGGAGGTAATGGGGTCCAGTGAGTGGGGGTCGGGAGAGGGAAGTGGGCCTCTGTGACGGAGGAGCGAGCGAATGGGATCCAGCGCGGCCGGGTCTCCGGGGGAGGCCGCGCACGCAGGGAGATCTGAGACTTGGCACCCAGCCCCCGCAGGCTCGCGGGCCATGGCGGGTTTCACCCGCCATGTCCCATGAGCCAACAGACACATGCCACTGGCGGTACTGAACATTGACACGCAATTCGTCAGGTTGAGCTAAGCTGCGCGAGTCCCAAGAGGAGCAGGGCCGTGATGCGATATCGAGACGAGGAAAAAGATCTAATAAGAACAAGAAGTACCCAGCCCCCTCTAGACATGGCGCGACCCAAATAGTCCGTATCATGCTAGAGGCTACGCTGGATGGGGGCGCATAATCAAACTCCCATCGACCGACGCCCGATCGCTATCTCCCGTATACCGCGCTAATTAATACGGGTCTCCCCGAGTACCGACGTGGCACTCATATACATGGAAGCGCGGGGTAGGAGGGCCTCGATGGAGCGGATGCCCGGCGCGTTTATAGAATTTTCGTTGTGCCGTTCGAGCGCTTGAGGGGTGGTTGGGGCGGGGACGGGCTGAATGGGGTACGCGATAGGCCGGATACCTTGTACCAAGGGATCTGGCTGCGACCTTACGGACGGGCCCTCTCTACGAACCATAACCACTGGATAAAGGGCAAGGATTACATCGCCCTGAAAGGACCTCCCTCTCCCTCTTAACGAGCGACACCGGGGGCTGCACCCAGCGCAAGTGGGAGGCGGCGCGTGTACCCGGAGCGATAGAAACCATAGCTGGAGCACTTGCGTGGAGTGGGTCGCAACCTGGAGAACGGGAAGGAACATGCAGCGCGCGGGTACCAGGGAAGTGGGGGAGCCTTCACCTCCAGTATCGCCTATAGTCGCCGGGGATGGCCTCCCACGAGAAGAGGAGGAAAATGGGATCACAGCGAATGTCGCCTCCCTTGAATGGAGACCGCAAAGCGATTTCCTGAATTTCCTGAGCCCCGCGGATCCTCGCGAGATCTAAGGATGACGTCTGGAGGAAATGGAGGGGAAGACAGTCCTAGAATACTGATCCAGCGTACTCTTTGACCCGCAGGGCCTTGGGAACCGTGACTTTTCCGGCCCTTGTTCTCTGCCTCACACTCAGTGTTTGTGTTCTAATTCGAGCACTTCTGAGTCATGGTCTCTCACTCAGATCAGGAGCAGAATTGCTGTTCCCGCTCAGGTACGAACTTTCTCAATGAATAGGAGATTATCCCCAGGTGCCTTAAGTCCAGGCTGGTGTCTGGGTCCTGTCCCCTGTCTCCATAGAGGTATGTCCTGTCCATTCTCAGGCTGTCACATGGGTATTTAGCCGGGTTATGAGAGATGCAACCCGCCTGAATTTCTGACTCTTCCCATCAACCCCCAAAGACACACGTGACCACCACCCCATCTGACATGAGGCACCTGAGTAGCTCCTGGGCTGTGTTGGGAGGTGCGGAGATCTACATGACCTGGCAGCGGGATGGCGAGGAATAAACTCATAACTGAGCTTGGGCAACAGACCAGCAGGAGATAGAACCTTCCAGAATGGGCATAGTGGTGTCTAGGTCTCTGGAAGAGCAGAGATACACATGCGATGTAAGCATCGAGGTCGCGAGCCGACCTAGGCCATGAGATGGGACGGGAGGATGAGCGTACGTATGATATTCTCGGAGGCAGGAACTCACGCTTCTCCATACGCACTCAGATCTAGGGCTCCACTTCTTCCCCTCCTTCCACAGAGCCTTATTCCCCCGTCACGCATCCCGAATGGTTGGCGGTTTGCTGGCTCATGTCCCGAAGTTGTATTGATGGCCACTGTGATCCTATGTGATGTGTAGGGAGGAAAGAGCCTGGAGGGGACGGGCGCATCGGCGCGGTTATGGGTATTTCTTGTTCCAACTCTATTCGACTACGCAGGTAGAATATTCCCTGCCTCATTACTGGCAGCATCGATCACACAGGCTGAACTGCATGCTGGGGACTCCTGTGTTGCCCACCCTATTACTCTTTTGTGCCACCACATCTTATAAACCGACGAATGGTTCACCTTCATCTCTTTGTGGTGTTCTAATCCCATGATTTCAGCGATAGCGTGACGGAAAGTCTCCTGCCCCACTAAACGACCGGGGAGCGCAGTTGTATTAAAGGATACGCCCTATTCTTTCGTGTTCTAACGTGGATTCCCTTGGGTCTTAGTGCTCATATTCTGGAAATTCCCTTTTGGGTCTAAAAGCCCAGGAGGTTTCCTCTAATCTAACGGCCCTGCTTCCTCCCAATGACAGCCATTCTTCCAAAGATGACCCGGAGGGAGCTCAGGCTGCGTGTAATGATGGGGGTGGGAGCGGTACGCTCCTACTCACGCCCATAATTCCTCCGATTCAAAGTCCCTGCGGGCTCTGACCCATTATGTTTTGTTCTACTCCATACCGCACGCTAATTGCCCCGGCTCTTAACATCTGTCTCTCACATTGAGGACCGGTTCTTGTGGAGTATCGAGAGTGAGCGGAGGCGTAGGGGGAGTCGCGCTGGGAGGCGAAGAGGGGGAAAGGCTCTTAAATGGAAATTCTTCGTACCGGTGTTTCGCGTATCCGTGTTTACGATGTCACGATGTCACGAAGTATAACGGAATTCTTTCATCTCTGTTGTTTCTGTGACGGCGCTATGTCTTGAGAATGCCCAATGCAGGATTTCTTCAACTGCCTCCCCTTTGTATTCCACTCCTCTGGCATCTCTTTCCTGCACGCCGCACCTGAGTATGTGCGTTGACTGTTAGCTACGTATAGGAAAACAGAAGACAGCCACCCCCGTGTCTAATGTGACTCCTCGATTCCCATGCCTGACTGTGTTTCCTCCAGTCATCTTTCGTTGCCAGCCATCAGCCTCAGCGATGTCTCCATCTCTGTCTCAACTTTAATGTGCACTCACTATCCAACTTTACTTACTTCCCTCAAACTAAACCGGAACCCAAATGGGGTTTCTCAACCATTTGTAGGGCCGAGTATCCGTAATGACATGAAATCACTAATTCCTGAAAGCTTGGAGCGAGCAAAGTAAATAATGAGAACTGTTCCCAGAATCTTAAGTTCACTGTGCCTGAGTCTTTGCGATGGGGTGGCGGAAGAAGGCTCGTGTGAATCCTCCGCTTGTGCCCATTTGTGTTTGAGCCCGGACCTGGGGCTTGTTTGTGGTCCTTCTCATATACTGTAGTTACTGCCCGCTTCCTTGTCTTTGCCTCGAATATTGTCCATGTGGAGCTTGGGCCGAGCCGCACTCCCGCGCTCGCTTCCAACCGGGATCTCTCTGTGCACTTCTGGAGACAACAACTTTTCAGCCATTCACCTCCTGCCTCTTATTCCTCCCACTCCTTTCTTATGGTATTCTTGCCCTCTCCCTGCTGGTTCCCTGATCCCTTGGTGC ++ +$$(('))+,.-+-(),))+-++)(.+''(*,++*((')*+)$$$$4&&&'')()(((+)*,-,*((')')'(('(*,+/,)+***)(()*'&()())(('**()**(,+0,*+4*-/+),-11-/0+(+*+))+,,,,**%,+(((()()()+-*)+./*-/++*..).0**,+*/,0+++(*+),-),*)((*'+(&')+++,/661+++))*+))*((')-(+*)(.)(&(((((+20-,-++''((,+,)*-00--,*)*.)*,./-'())(**(***),,////,,.-*&*)()(,,*()*)*)))+('),),()'+*)'*++41)'(*+**+-((++*+*('*'&'*+),--*,**,,)'''(&((),-+*)'(),,-.4--))-)(')*')))-++*(')*-.,+(,+,-+*)0/-/-+**)+0/.+*,(*()*+*+/,-*)),--+-.*+,*()+,*,-,,//4/.)*-+-145/,.*++*,3.,++-4-*,++*,+))*+**++*.**))))')++,)),*-))*))(**./+**))((+**++*****)('&()**.+,0--)/1.)()*+*,)')),2+'*-'-**)))(''3.*/,++),)**.+((((0,.00+)*400--+)+)(.)(.*',*()**)5/,*,.+)'(++(+)(++02,,+0+3,-*,22,*-//+,/)((*'+.00+,+.+-))-*)*+*/*)(,*+***20,.+++11024,**+*((*,.-)*.--/./**,,0+*,,*(*))*-(*,)++/))*(),*'&)/+,)-2/+)())))+,***,()'+1)-/,*))*,+('$*(((((,,()+/1)+00,+/+)270/**(**),/***)'')+1-+-,,((+*,.,+**+&,4..0,)+,*(()))()+(()))*)((+*,((((&(()')1,)))())&)+((*+***+1-,)*+,-&+)*)&*,)*''((-()*.0+*,.,*(+*()*,,/471,()*))(((+*),))*.,,,)(-2(*())+,+))*+*.--*((((,2--((-*/+,+*)()+())+--*))-,)'+*()(+(*()())',(-*(,+))('+(()'')'(((*)(***'&',('(*-)*++)(((()*,*(*)'')+,&%)&)('+,,)+,+,*)*)((-,**+(*(()*(((),)()**))*+)**)+,-.3/1..,)+,++*.+)(*,.)(,/-*.,++,-+,,,++*+*)()+1/.-,+)(+)+-,,)**++)()++,--+*+*//,,+)(*))**+,*'((((''((()*++0))*'(+**+*)*)*')++)(,++++-,+(+.,*)'(**./**+*+'(/1,*+***(,-,6.*%()('*+,.*-0-*)*+)*-,)),(.,-(-+-,-+),--*)))$-))-,)+*,*,*)*(*)(,+,*-.*)+(''&)---*))***))))+'**((*),'(+.+,)**)**+))(+)'((-+/)-,*)'*,)*)))('('&()*'&&))*('))))*((*+(()++)(-*)))(*))**)+))'&'($()+((*))()()-(++*()++(+***.00-)--,))-1-()'***)*))*++/+,-5,*),**)/*-)*+*+++&()'(*&(((((*,**,')*++()*+,****,))-*,/++**+*,,*+(()(')***+/.125-*,,***-,00.,*)**)),++'&',())(*+..)+()-.-*+)*+**.))*,+((')*((&'',*)+-.3/+)')('*),**))'(()()'(()***++(&(.***)&((*)('(***)**()*)+*())+*(,,,()+()+,(((*()*)+**/.+*-*()(*')$+--/*(')))(,(,**-)*').-)(*)('((**(),(')1/)**(),+.-*')**))*(**,*+*))((**,)'&)((('+**-*.+)())*,,--+/--10.*))(2+*.++(((-,.0.+-/(),*,++,+-.--)+)(*'()****)+,)-.(-,,*&$)(-.,+.)*()--.,1-,-.+).)))(((+)(''-))(().,,(*,5,-.,*,++*+42*,-.01*,-.+**).-,-,+-.))(*+*))(((-/372/,,))-*-)*,--*.--**(+*2,+*(*3.)3*(++*,+***/.10***,**+)++.++,+,+)/*++-)*(,)+-/)),--+)-,((+,(+*,1,)('(,('.,))+))'(,+++)(**-))('*(+(&)))+***+)(+'*)+'+'++*,)-)(+)(,+*)++,+)))('')+),,**+++(**++)-(+-)+,,51*)+-****)))()(()(+,*',)('**(**)+)(('()**).1**(*,*)*0-.++*'&++-*)(+22-*))(-65),,(*')),-+)(&)')'('*'+,,++)-.+**))))(*(()(('(()--,+)',-)-)((()**$*$$''(-,,((((('('()''+(('()&&)(')(()**'(**))***)&'&()',,()**(*-*)'(///.*),+3,(,*063-,+(++**-.-)+).,)))*))'$*))&*,(')+**(')))()*(,,)(-*)'(+,*)*)*')((*)(')&+)++))+))')(''(,)))(*+,)),*(()'*()'(**(+**'(3350*(().2+-.//.-*)*))*))/--+))))(**)))4.++-.)*+-./-)+*-,,+).2+,+-+*)')'-+,)*)((,+--**+*+))*()),.*++-,-3/,(+(('*))**/*,246)+*)/3))*)*()**(,)((-,)()))((%*,+,*+*,*-*--(+*)(''))(')()(*))))(''(('&'''()*+''(+)----*)*,-,*(,.+))),(()*('))-*,-,.+,-,+*)&,''(*--+*$&'*+(*+)((''')1.('()(++*01//,+*(*)((*+,*-0166+)*+*('*''***./.0,**(**)++))..1/-+)')&)+)'''&(*/+())(*++())'')+(()-$,+*)))&''&')*3-+++,+*)))'*)+*+(+(,())*++****')++()*)11-'((+((,*++,*+.270,*--(())))/*,-/.-,-)*'-)+)*((*(()+-653.--,*)',*)))*)(*'),+'(+'+()-)*(*()*).-'*,+++,+-/-)**-/**'*+/-)(+'*+--10*)**++*)()+/,)+,+*277+-,,-.+)((*&')*(((*0)),)),****(&'(*)(+--+1.-/0.++0.*))****/,,+.-*021-1+****(/)*,*01,-.,.-,,+--./*+,+**-.-.+*'(++(-+*0,+-.)))(+)*+-,*()*'(,(*(*-+*((&*())))*--+)))((.+..+))+**(+**-)('())*)-(((**,*)*'*&'*,)),)(+()))/+(*)*/+*(,,+++),+)+%**)((,,)((((+(&(*+)+'..)(*+*)/-(,++0()*))-,,---*)*)+,+(%)),*))).00,++.*)*.,*,.)('*,++-**++)*+-0-/.))()+*,(,,*-,()-)(/*+.*.))*+*+)''&($&((*'))()))()'*(+)((,*''(()(((&&&')'))(''%'''(&''&&(('&)('*&&','+*'()(*'%)(()).((')&))*)(&''''(('(**++)++**(),*)()((-)+*)''**0+*),,*+)'()*),)),++()+))*+(*-+(')'())((&)*,.)(*(')*(')*+***,,)'&(*+*)(),.24/(()*()&'())+,)++-//*,+'))*.*))))*+(),$.+***)*()*-,+)),+**.-++)))()(('(*)+-.--+,*()(-,,(((*(((**))'((+*,*)+,(,.-+)**+---,((+**+(*)-)*))+(,)(')***,/..-2001+)+.+-.-('()(+/+**((*')**.(,)+*-)(*((*+-.)((-+,+***(*)--*))*,**+*(*.10310)*,.1.+*.))33,.)*0++-+((()*)()+,,/-)))**)++(*)*+0*-+)++*/0**))*/++)-.)'-',650--.)$*+(2201*/6.+)**+*++)'*+),+-.+.-*)((+*'')'(,,,)+.-+---+*+,,.*(+)'()/.-**+,*))')-)'&((,*()**,/*+,0,+*(+,*,//()'(''(()**),)('(+*'(+)&'**))*(()*++)((('*-0,.()*)+*,/1.0///-+**()(),,*))))))))))**/-.+)*'())((+,3,,)/)+++..,*,++,,)')*(),+)**+').-+,+++/*&'*))(&(.),,*)((),---*(())'))(*+))*30.66,+,,())')((')+.*((()')*)))+*/),-+))'('((())./-*))+),,,()(*('((*,(+*)++)*(&&''('((*)'(***)*,+*+3))++)&')+,-)(*')())(**))+''*,**)*+*-)))+/2-+)+*()--1---,+*-+++.-+))*()*)*)),--,+//1.(,.1-**%'((*-*)+)'((),/1/-.*$),.,,+(+)-*))'+),++*)*(++-+.../0.*-+*)(+*./.**/..0.*()*'(+,-+-)(*,.(+*+)()*,(($(),+)*+*..,)*,-.(**(()()).)))+(-..,,*))(+)*(')'*+'*,,()(()')*)('**)(()**)((*-*+)((.*)*)()''**,(')**.,)+*+)+)**+--3.,-)-')(*+((***))-**)-,***+*)))/,-+-.*/)))+0)*''(*'*.//+)+,)+/+(()*+)+)*+,+(+))+.,)*)((((13.+,1-.4/,.(.,0,+))+*'()*(+'((**)*0-,),++*,870,0*,)1,,*/3-.+.0510)++(+),,-,0-/*2-1-0+./-.0+..+-.+)+**)+++*))),*)(')4/,-,+.()*,,,,,+**-+*)*),*)''(*,,+)*)*))'-)))****)+*,+-1,,,,,+-),./,0---5/-,-,53401,-*,,,./*+,+60+(**/.-**)*-./---*,(,-,-+*))**+++,,*))-*+.)()+)++,./,,+.*))+/066-()-+,+)+((++*+*+*+*(+,,+*+,*)1,-,+-/-,+)**+'****)(*+*))(())).+*)*)3,+-*)*+,*(,,*+*'++''+)+++++),)-**0+*3,++,,-020,/*)(*.-,.-**())*)((34*.,+**.,-+..)++('('()')**())&&)**,,'))*+.)'((+)**()())+)''((,')*+())*)*/*(*'('()),,,*&(*(*)((**))'*(*+--)'(***())(,*+,('''(**(*))('()+))()**)*)*++$$())()**+)((+(*))())(&(***((((*++))('(**(((()**))*(())1,+,'')))**..0*()*(''(((('%)).+((+)(()*'((+)()+()*++.'(''(,((++*()$((**,+**+*'(()&)()'+,)+*)(*+(&'(((((()*)))()'()*+,-*)*)'**''((-)((()).(')*+*(%&(''+(-),+,++)*((&''*(('&''')&&)))+((,,++&,)&''-*)&)+&(+(()*+)*)&'*(())'))(,,''*++(())-.,+''*())**+-,**,-+&)+')+4()'(')+)()&)*****+,)-))'()*)*''(+))*'&*('')(*+*(('(('''(()*$)(()'$'*)')'')'))))'))))('('''')*'&'(('(((+''*))'&(.-*'(')))*.23**)&(*+*04(((,*+))**,,,(()''('''''('((+(*+.,+*))(())*/(*(''('*-*)(()&(()'(+&')(')')'''')()(&'))((')**(*(**+,+))((',(/,*..))*)')'+')&()')''()'*)()$(,''.*),(('),,)++/-)**'+*+*((*++/'*(*')(''+*,,-*-**)((1))$***,*+(())+)**)'.))')-))-//,+-)*+,**)'(+()*,,*''''()$****(&))/0)))'%+()(''()*)**,-,++)+)*('&*&(*(*(*+***).),+*).+))**)++)**(***+)((++))+.)(((*)-+))(*+**(*,+)()())+)()-',(((*)'),(*)*,**)+(*())*+)+-,*)*-(**+*.+,77+0..*),,*)(+*+./-,+-+---,+)*))-*-,*))((+)--+3*,*))+,,(((((()./+*+.)((('()*''**(,((**(((*+('*),),(*(*(+'''',,.65.-++*+**,0(*))((+)(&&++)+)),)-,()+**)*)()))/))*'(($)'('()(---**0+*+,,)+(,/65*)+))'(*+.63,*/0/+))+/')'*(+)++-.*,+,-+(&(*.+)()*,+,,+*)*)),+*)''**(*)+*((+*)/-,+))**//*(0+,,*-/6/-()**(*+*)()**00.-74.*/-,.+*0*'*)+)-.-13,))++*),/(,*((,(,))*)+,/-)+++)..+),(**+,)**)..,.)*+,)'()()))**+))*,,)*..-****)()(+*+*(--,*))*+.*',''('(*(()*(*)+./02//'(*+,+,)*-,51)+(+'+.*.+)+..,**'()*)/41.72./,.**()(*+)())**,/0+*+++/,,*)'*('%**)(+(-)((***)**).-.-,)'**&)+(+*)))-+*&(())()()+,..+*+(')-,**+))(()(((**+(*)(--++()**+)))-/,)++)*()*,+.,)*(-+(*,)**-,**.,.*++)+,+(&')+)*)*'&%('('*)*+)+'()*,,'((+)++/*).,*)(()'(',/.*(''('*))))())(()&('')+((+,,///0*)&)*()()('))((()*))((()(+-)(+)+))('(((***,51-,(/).*-1.*(**)'+%+*(*,))*+(&&()*(+*(*(-++*-.*',,+))-,)))-*+*(-(((*.,)(((++*)((++,++*(.)+)(,*))*)(*.+,+*()*'(**+,*)**,)),******(**-'(',(+)*()*((&))*++**+,,)'((()*)&0**)*(((''(((+,02/(**)))((')-**(((((*)(())+2.,)))***(*+(*)'%**&'*'%$*))((')&)*('(*+('(),((*+)))()*)+*)&+-$&)+++-(.-,+'()*/+(.0+,-))++*)+*(+(+-,-,**+*)(*'((')))))+--66,+--+$*()+)-)*('())-*(')+*(.+*'',,*,()))*)**)((.*,.-)*++,*')+/'&)-+,-.50++***+'%+(**'0+(&)+))*)*,,,+)''))+))(-)+)&$**(((()**+*/))()*)))()&)'()))()'*+++)/.(*,,20+&*()$*)'$),)'*)+)))**)('(***(+-(),-,,*+25**.+',,13.+)(*)'(.-+*)')*)(*)(,/3*)),(),))&(**(&)(),++)/**()*)+$)+*(+*$)*++,)210-,))))),)'((()**)*)('+))()+--+*+**-*(-+*))()++)(*)-,()$))(,'&&))+.)+*/*++*).-0+*+())',)+).+)-)(+***(&**)(*'()))*+*)*+566++,)(((()*++'('(***''*&(',-+*'(((*+*)*((('*(())*+)(*+))**(*('(,(''*-,*)**))),+(*(''')))*))()((()+)())+(('(('+*()),,+**))('++(')())*+*4-*+)()*)(-),,)*)+.,+*))++((()(*+231,*+*()*('),+//+,))+.-,+)*,+*++(*)(,*)*))+0+.*/(,(+)/-**+*)+--1(.120++*+)(,)*,++')+++-,++(*.,-))())+....+*--862-+.*+'01'+-*++-+3/-+*',((*(*)*-,.-/..,+*.-44,++++.+*(*,++(+**)())+*+,.*,*'*,+,-)&*)''(((')'*)+*))()((()*(,*++,)))('((+,*'),+*+*.*.++)()')/)**-.,),*,)),/-0443,,,++.*+)+0//832,,-)+))+((*+-+(,(*-)***+,-*--*-/.*),-**,,+***,+())+,/11,)(+((&%))),+$+/+))))')+/*)))+*-,))(.*)*))-('(*/3.-*()()421*+,,&,/,,+,)'+))*((((*++)),))+)(-(**-/*,+*-*)*.,/)++,+5',,*+*()+*(),,+,,(***())*-,)**-,(*.0,,)*..,+))($(',+**),,-,*+*)()+**/+/**(()((')'((*))''('())()*+)*+,**()*'')*()**,+()+)/*)(,,)**)),(()&)&))))+++(*+*.%*)))+)*)+))++*)(((**('(+)((+/1-+()(*)*+*-)&+,*-,*))())&(**-/*)-+/-+)****,+)))(()++(.*,'**))-*,*(()(,.*().*()()*+,,-+23331-*(+/.,(())--37()0(+575-*-'*,-*+*))+-,+)**'*(('*.+,(((*)(+++.66,*)**))((+-*)*)*())+.-),+),,+*.*))))))*'*+)))(*%% +@channel_459_read_164-2D +TTGTTTCTCTCTGTCTCCTGGTTTACCGCTCGCTTGCTTGTCCAACCGGCAGCGCGTACTAGCATTAACGGAAGAATAGGGCAGTTGTCATGGGCGTGAGACGAGCCAGGGTCTCCATCGAGGGCGCGTCGCTTGAAATGGGGAGCGTTTCGCATTCCCTATCGCTAGTTTCATCATTCTCCCGATATTGTCAAATTATTTGGTTCAGGATACTCGTGACGCATCCCTAATTCCCCTCTCCATTCTATGTTGCTGTAGAAGCCCGTAGACGGTTACGGGGTCTCAGTTTCTGACATTGCCCACGACGACGAACCGGTACCTCATCGCATGCTGGTTACTGGCGCCGCATCCGGTCTCTGCTCTGAAACGTGATGAATCCCGCCCGCTGGCTCTGGGCGTGAGTCGAGTAACCTGGAATGGCTGATGCCGGCGGAGCGAGAAACGCGGATTAGCGGAGGCGCCGGGAGGAGATCTATCGAGTCTCTAGCCCCTCCTCGCCCCAGGCTCCACTTCCATCGAGCTTTCGGACAAGTCCTCAGCCGGCCCGGGGAGCCGGATTCATCTCAGTGGCGACGGTGAAGGACGGAAGTTCGTGGATTCGGGGACACGCCGCCGCGAGTTAGAGAGGAGCCGCGGGCGCGTGGATAGAGCAGGAGGGGCCAGGGTATTGTCACGTAGAACACACAGATCTTCAAGACCAACAGACGTAACCGAGAGCCTTAGAACCTGCGCGTATAATAACAGATGAGGAGCGAGCATTAATACCGAGCCACGGGGCACCAGCAGATCTCCATCGAGAACCTAGATAGATGCATGCCCCGAGTCTCCATTGGAGATCGCCTCCTGGGCGGCCGCGCATCAGGGACCCTCGACCGGGGAGGCGGATAGCAGGCGCGTTTACGCATTTTCATTTCAGTTGAGGCCAAAATCCCCGGGTTGGTCGGGGAGGCGGGGGACGGGAGGACCGTAGAGGGGTAGATAGAGTCTCACACCTGAGAGCATGTACGGCTGCGGCGTGGACAACGGGCGACCCTGGCCCCCGGGCGGCAATCACCACGCCTACCAAAGGATTTACATCACGCCTGAACCGAGACCTGCGCTCCTCTCCGCAACTGAGGCGGACACATGTGTAGAGATACGAGATGGGAATGAGTCGAGCAGCTAGGATAATAACATTACCAGGGAGGCACGTGCGTGGAGTAGTAGGATACCTGGAGAACGGAGACAGACGCTGGAGCGCGGGGCCAGGGGCGATCTGAGAAGCTTCGCCATCTCCTATATAGTCGCCGGGGAGCCTCCAGAAGGAAGAGGAGGAAATGGGGATCAGCTAGAATGTCGCCTCCCTTGAATGGAATGGCATCGAGTTTCCTGAGTTTCCTGGCGCTAGAGCCTCTTCTCTAGGACAATTAAAGGGATTAAGTCTGAGGAAATGGAGGAAGACACGTCTAGGACTACCTGATCGCGTGATTCTTTGGCTGCAGGCAGCCTTGGGGAACCGTGACTTTCCACTCAGGCCTTGTTCTCTGCCTCACACTCAGTGTTTGGGCTCTGATTCCAGCACTTCTGAGTCATTTACTCACCGAGTACGGAGCAGAATTGGCTGTTCCCCGATGAGACTCGAACTTTCTAATGAATAGGAGATTATCCCATCCTATGCGTCTAAGGCTGGTGTCTGGGTTCTGTGCCCCTTCTCCACCGAGGTGTCTGTTAGATTCTCAGGCCGTACCGGGTATTTGGCTGTTACTGAGAGATGCAAAGGCGCTGAATTTTCTGACTCGTCTCCGATACAACCCCCAAAGACAACTTAACCACCACCCCATCTCTGACCATGAGGCCACCTGAGGTGCTGGCTCTCGTCACCTGTGGAGATCACATGACCTGAAGCGGATGGCGAGGACCAAACTCATAAACAGCTTGAAGCACAGACAGCAGGAGACCGAGAACCTTTACGAAGTGGGCAGCTGTGATGGTGCACGATTCGCAGAGAGATACACATGCCATGTACAGCATACAGGGGCTGCCCCAACAAGGGAGTGGGGATGGGTAAGGAGGGCATCATGAGTCATACTTCTCAGGGAAGCTAAGGAGCTTCTCAGGATCATTTAGGCGCTGTACATTTATTCCCCTCCTTTTCCAGCCATGTCCCAGTCTCCCATAGTCACAAGCTCCGGTTTAGCATTGTTGCTGACGGGCGTTAGCAGTTGGTCATCGATAGTTGGTCCTCTGTGATGTGTAGGAGAGAAGAGCTCATATAGGGAAGTGAGGGTGGCTTATCGGTTTTCTTGTCCACTGGGGGATTTCATACAGGTAGGAGAAGTGTTCCCTTGGCCTCATTACTGGCAGCAGCATCCCACGCTAATGCAGCCTGGGACCTGTGTGCCATAATTACTCTTTTGTGCAGCACAAGTGACAATGAAAGGACGGGTATCTATTATCTGTGTATTGTTGGGAGTGCTGATTTCGCATTCCATTCATGAGTCAAGGGAAAGTCGCTGCTAAGGACAGACTTAGGGAGAGGCAGTTAATTGTCCACGACCCACTTGCTTTCCTCGTGTTTCCCGATGATCCTGCCTTACCTGTATTAGTCATACTTTGGAAATTCCTTTGAGTTAAGACAAGGAGGTTACTCTAAGATCTCATGGCCTGCTTCCTCCCAGTCCCTCACAGCATTTCTTCCCCACACCGAGGTAGAAAGGAGGGAGCTACTGAGCGGCTGCGTGTAAGTATTATGTAGGATAGGAGTATTAAGAGCTCACCCGGATTCCTCCTGTCCCACGTCTCCTGCGGGCTTAACCATTATGTTTTGTTTTAGCTCCAGCCGAAGCGACAGTGCCAGCGTACTGATTGTCTCACAGTAGGTGAAAGGTGAGATTCTTGGGATACCAGTGGTGAGGCGGGGATGAACGGGGAGGGGAGCCATGGGTAATGGCGATTTATTCGTGACGAGAATGTTTCACAATCTTGGGGTTAGATGTCATCATTAACGAAGTATAACCGAGTTGTTCATCTCTGTTGTTTCTACTGGCACCCTGTCTTGTACGCAACGATGCGCGTGGTCATCGCCTTTGTAGCGTACGACTGGCATCTATTTCTGCGAGGTAGAGACAGGAGTGTCTGCGTCTAGGTCTTTGAAGACATCCGGGAGCTCCCGAAGCCTACAGTTTCCTGTGACCCTGTTCCCATTAGTACTGGTGTTGTTCAACCTAGGATCCTGACTTTTTAAACGTCCGCACGATGACGACCATTGCGCACGATGGGTCTGATAGTTATGTGCACTGAACATTAAATTCTTACTTTGACATAACGAAGGGCCAGAAATCTGAATACTGCTCGTGTTTCTCGTATTTGCACTGGCGCTGTGATGGATTGACGGGTCTCATACCGGGGTCGATTCACTGGAATGTGAGGAGCGAGCCTCATGGCTGGTTTTACCCGTATGCATGTTCTACTGTGCTCGTATGTTGGAGGCACTGGCTTGGGCGGGTGATCCTCGAAGCGCAATCCCCTGGCACTGTGCGACAAAAGAGTCGCTCCCGGCTCCATCCCTTCTTATTGCTTGCTCCCTCTGATCTCTGCTTGGTACGCGGTCCTTGTCCCTTCGGAAACTTGTCCGTAC ++ +%%+/*'**+***)))'&**)*,/(&'((''((+(*++)+,,*((*'))(%*)))()(((''*''('(/'))*'()*)&()+-,+.+)))***)(*)*++*,+**((%*(''**+*)++(())(*+**.*''*')**+)+,+**+-/2.+*'*)*,,)*)')*())'(+06-++)*(-0.+**()+(**)-.,)*)+))**+)++-+*('+((((()$(+*)-./+))'(+,,((&)(*'((*))(')+++)('))'&&))))'())&)*-(')(''&'('(&&(,+,3,)*&+*++-*,)*$*)*'),,)*&()(('('(')(,)*.)*+)))(**((+)*++*+*)$)(')&*)(((*)&'(('+(()$'&'('*$''**)('')('(((()('('(((()+'''''$,'**(')))()(()()*))*)()()))(')*+(++)(&.+(&)(('((),+*)++*+**))*+(&))'')*,)'*'&)*'(**+*()**)***((%***)&,,((,)((()**5.'('+)('(*''))()*)(()(*+****')()(+*(+***(,$)+*),(**'(('-(')+)(')*+4++*+)'),+('(')-)(+***+))-+)++-)&()++*(*)*)++)+*,**+))'+(&+,*+-,,-*('('')('(*,-,)*)*)*)')*1+)+.*-(//,***))(*'),.)*(+,,*+,()))*++)*)*&),)((*,++*),))(('',+,-,*+)(***+(**,((((*'''(())))*(())*+*'(')*)+.,(*()+*)(''*(()'&')(%'),(.*(()(())+*-+)''))((')(,+)()(***+('*))+*),))-+))'''')(()'(*,'*((''*)')('*('*+*)****,00+&()--*35,),+2.*+),,*('*)(*55/.)(()(('*)('*)**((*))*)**((,.+*)*'')(')'&'''((('&'(*&)))+((+*(*(()*),,)*))())*),+,.,)***+((.*'*)((+*))''*')()('(*)(,*(*()+..,'*+-('&&'()'**)'*&*'((+))+'')()*/3)))((*'++*)*(((('(&'(**+)&)('((())+)()(**+))&''()*'(&('*+)((,)))')*'(()))((&&*(,**+,**)-()'&'(*)())*)-))+)+/*'(+))&&)&('+**(**))(()1,)))'/)*)1,**,+*+*)()'&&&'(*)(()('*+(*('(((()()))*)+/*)(('(')'&',()))**((((()((())-))(.'))*)**,62//-)*).++++*((+.****))**+*())+,+00.,.,,*,0/,))()-32-,+*))+0.,++(()*)&&'(*'+*+*1/**&&((,+,/1+)*(*)),,'&+'-,+++*,36--+*+*),)),(**,,*&&((*)'*)*+**.+,--.+--,+*0**)+-220)*+-*++-/+,,-7/(*+.,,).33--+(*.,)***+)/882.00.,)*./*),*,-)+.0.,*+**)))+,//),-,,*(+.+,)((+*++/))(*,*()((('(*'(((+*+.1**((()-6.)((*)))(()*')))00(*3.*'(,-*/-)&*())**(*,))+-,)(&**./-0)'(,+))),(+,0/.,*)**(*,-,*(()+-*)(**'((((),-),+'*(&)).0.*++**(())(()+(+(*+/&*+**+.)())(*)*,/002,-,()))*,+..1.5/***-*),*-+*)*(,*)*+))+),.0/)*0+,)*)')((*,)((())*0+*((*))((*+,))*)((('(*(((()*))**((')**)(')+*,*)))--*+))'',((**+)),)),+)))()((((,*)))(**,),*))+*+*,*)'**)+)-*/,.-*(*)*)))))+)(()-*')'*+,.,**++*-+-+**,+)+-,,0)(+(()+,*+))+-)**/*)--++--0/.-,+/,('*())')().*))**)))))))**+*)()00,(++*+**+(***+))))*((**)('(*+,)/-+*,2,+-'))+),)))*('***(,**)),)&(,+,+)+*)((+*(*+/*)+--/,.662.++)))**++)())).-*,+,.())+**))')(()*+)(,(&-.0.,//,,,*')*()))++)').++0+*(*+,)(((('(,))()(''))+**,,-.,+)++,+*$+'))))()*'*(&(()+''*))((')(')(((((')-.53.$$$$(&(*+)))*).+5/+*'())))('(+*,.(*,.53*()(((+))),++))+++,)+)//--2.*)((+)*(*--00/***+)((+)*,+.-10+)+()+,*)*+--77/1412-.-0+**)*+--,*-0/.**).+()**+++'+*)*,),+,+,*,*./-+)(+),,***++--))*)*,('+,+..,+))-+()***0+,,-***+,+')(('+(('**+)')**,*+)**+).)$+*(()((*)')'()+(,,-++23)*)(*+.666,)+*((,,-*+./-)))('**,),*)'*-,+*))+**',50/2,*-,5-+)(+)()(*()*,)-+*,+))+*()-).10,/.,+**+-+/.3..,+*+-+1*)))-,,+'./.77--**))+/+*(')**(((*24,-+,**)+**'((*))()))),./..0-*+)),+())+*())+)'+)*((,*(')()(*(**(()((.,.,++++*,+'')++,.-,++,..,**+*)).*)+,))*,675+..+/)'))*),,*)()-(,,+.)+(,+++*))*)'')))+,0./,/+*+))'()('1+')(*,,+.+-)*)*))-*'''*)*)*,+**++())(,))*++*+)**)*(((()))()('((,+*())+*-)(*(')*'*)((,(*,.13,,(()'&'')%('&)+'))*++**,,,,++'((-'*(*)+1++*)$,*,1-)**+(*+00*./1-)&()**)*)('(+-.,)**)((,/,)*))++,+++-*()))%(()().,+)'*+*)(*(+*-*)++('&**0.,,,+)('&*'((**'*((+(**)***,**)&&''(+'*))('')()+(()*('&*'()))+(*)(''('))/.-*)(('(()*,,12-+*+,*'((((())*+*)*/,*(*&''%)'*)''*')')$3+($2,+*,))*++)()((*('%(')())-()''*++)((***))'')+*,.00.,-*,*-,*.+**/-0-++*))++*)0*,)*/)*)(((--)+*.1--*+**,*()+*))()+-04/,)'(*+-3,.++(*'(((*'()*+-*)*+().*'&)((*)*)'*()((*+)(*,-,)(+*')))(*)()(**)*(((&&)()(('&)()0,(&''()*(++..*)++*&'(),.,+)(*)$)+/,(&'(&('*&'''')*)+('&''')(''*)()(()*(())(('(($*+)),,++*')''(1*&'((''*(*++(''+',))))++.+((()*,,()-,(('))**((*)(***)+,+))'))*(()'()*,,((**)(*++2*)))+,))))%% diff --git a/test/long-reads.jl b/test/long-reads.jl new file mode 100644 index 0000000..58d4ad3 --- /dev/null +++ b/test/long-reads.jl @@ -0,0 +1,38 @@ +@testset "Long read datastores" begin + function get_fastq_seqs(file) + seqs = map(open(FASTQ.Reader, file) do rdr + collect(rdr) + end) do rec + FASTQ.sequence(LongDNASeq, rec) + end + return seqs + end + + function check_round_trip(FQ) + seqs = get_fastq_seqs(FQ) + fq = open(FASTQ.Reader, FQ) + ds = LongReadDatastore(fq, "human-nanopore.lrds", "human-nanopore", UInt64(0)) + ds2 = open(LongReadDatastore, "human-nanopore.lrds") + ds_seqs = collect(ds) + ds2_seqs = collect(ds2) + return ds_seqs == seqs == ds2_seqs + end + + @testset "Human oxford nanopore 2D consensus reads tester" begin + @test check_round_trip("human_nanopore_tester_2D.fastq") + + ds = open(LongReadDatastore, "human-nanopore.lrds") + ds2 = open(LongReadDatastore, "human-nanopore.lrds") + + @test ReadDatastores.index(ds) == ReadDatastores.index(ds2) + @test ReadDatastores.index(ds)[1] == ReadDatastores.index(ds2)[1] + @test firstindex(ds) == firstindex(ds2) == 1 + @test lastindex(ds) == lastindex(ds2) == 10 + + @test Base.IteratorSize(ds) == Base.IteratorSize(ds2) == Base.HasLength() + @test Base.IteratorEltype(ds) == Base.IteratorEltype(ds2) == Base.HasEltype() + @test Base.eltype(ds) == Base.eltype(ds2) == LongSequence{DNAAlphabet{4}} + + + end +end \ No newline at end of file diff --git a/test/runtests.jl b/test/runtests.jl index af78a78..fbf759b 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3,5 +3,6 @@ module TestReadDatastores using Test, FASTX, ReadDatastores, BioSequences include("paired-reads.jl") +include("long-reads.jl") end # module