diff --git a/qiime/format.py b/qiime/format.py index 9789479ecd..60332350e3 100755 --- a/qiime/format.py +++ b/qiime/format.py @@ -3,7 +3,8 @@ __author__ = "Rob Knight" __copyright__ = "Copyright 2011, The QIIME Project" __credits__ = ["Rob Knight", "Justin Kuczynski", "Jeremy Widmann", - "Antonio Gonzalez Pena", "Daniel McDonald", "Jai Ram Rideout"] + "Antonio Gonzalez Pena", "Daniel McDonald", "Jai Ram Rideout", + "Mike Robeson"] # remember to add yourself if you make changes __license__ = "GPL" __version__ = "1.8.0-dev" @@ -14,13 +15,14 @@ from numpy import asarray, isnan, log10, median from StringIO import StringIO from re import compile, sub -from os import walk +from os import walk, path from os.path import join, splitext, exists, isfile, abspath +from skbio.io import read from skbio.sequence import BiologicalSequence from biom.table import Table -from qiime.util import get_qiime_library_version, load_qiime_config +from qiime.util import get_qiime_library_version, load_qiime_config, qiime_open from qiime.colors import data_color_hsv """Contains formatters for the files we expect to encounter in 454 workflow. @@ -601,7 +603,7 @@ def write_Fasta_from_name_seq_pairs(name_seqs, fh): raise ValueError("Need open file handle to write to.") for (name, seq) in name_seqs: - fh.write("%s\n" % BiologicalSequence(seq, id=name).to_fasta()) + BiologicalSequence(seq, id=name).write(fh, format='fasta') def illumina_data_to_fastq(record_data, number_of_bases=None): @@ -895,6 +897,68 @@ def format_fastq_record(label, return "@%s\n%s\n+\n%s\n" % (label, seq, qual) +def write_synced_barcodes_fastq(joined_fp, index_fp, qual_score_variant='illumina1.8'): + """Writes new index file based on surviving assembled paired-ends. + -joined_fp : file path to paired-end assembled fastq file + -index_fp : file path to index / barcode reads fastq file + -qual_score_variant : format of fastq quality scores. Can be + \'illumina1.3\' or \'illumina1.8\' + + This function iterates through the joined reads file and index file. + Only those index-reads within the file at index_fp, that have headers + matching those within the joined-pairs at joined_fp, are written + to file. + + Always forces output to be: illumina1.8 + + WARNING: Assumes reads are in the same order in both files, + except for cases in which the corresponding + read in the joined_fp file is missing (i.e. pairs + failed to assemble). + + """ + + # open files (handles normal / gzipped data) + jh = qiime_open(joined_fp) + ih = qiime_open(index_fp) + + # base new index file name on joined paired-end file name: + j_path, ext = path.splitext(joined_fp) + filtered_bc_outfile_path = j_path + '_barcodes.fastq' + fbc_fh = open(filtered_bc_outfile_path, 'w') + + # Set up iterators + index_fastq_iter = read(ih, format='fastq', variant=qual_score_variant) + joined_fastq_iter = read(jh, format='fastq', variant=qual_score_variant) + + # Write barcodes / index reads that we observed within + # the joined paired-ends. Warn if index and joined data + # are not in order. + for joined in joined_fastq_iter: + index = index_fastq_iter.next() + while joined.id != index.id: + try: + index = index_fastq_iter.next() + except StopIteration: + raise StopIteration("\n\nReached end of index-reads file" + + " before iterating through joined paired-end-reads file!" + + " Except for missing paired-end reads that did not survive" + + " assembly, your index and paired-end reads files must be in" + + " the same order! Also, check that the index-reads and" + + " paired-end reads have identical headers. The last joined" + + " paired-end ID processed was:\n\'%s\'\n" % (joined.id)) + else: + # force output to illumina1.8 + index.write(fbc_fh, format='fastq', variant='illumina1.8') + + ih.close() + jh.close() + fbc_fh.close() + + return filtered_bc_outfile_path + + + HTML_LINES_INIT = """ diff --git a/qiime/join_paired_ends.py b/qiime/join_paired_ends.py index a9d935c739..d4ae621b6a 100644 --- a/qiime/join_paired_ends.py +++ b/qiime/join_paired_ends.py @@ -8,11 +8,8 @@ __maintainer__ = "Mike Robeson" __email__ = "robesonms@ornl.gov" -from skbio.parse.sequences import parse_fastq -from skbio.format.sequences import format_fastq_record from bfillings.fastq_join import FastqJoin, join_paired_end_reads_fastqjoin from bfillings.seqprep import SeqPrep, join_paired_end_reads_seqprep -from qiime.util import qiime_open import os import gzip @@ -21,57 +18,4 @@ 'SeqPrep': join_paired_end_reads_seqprep} -def write_synced_barcodes_fastq(joined_fp, index_fp): - """Writes new index file based on surviving assembled paired-ends. - -joined_fp : file path to paired-end assembled fastq file - -index_fp : file path to index / barcode reads fastq file - This function iterates through the joined reads file and index file. - Only those index-reads within the file at index_fp, that have headers - matching those within the joined-pairs at joined_fp, are written - to file. - - WARNING: Assumes reads are in the same order in both files, - except for cases in which the corresponding - read in the joined_fp file is missing (i.e. pairs - failed to assemble). - - """ - - # open files (handles normal / gzipped data) - jh = qiime_open(joined_fp) - ih = qiime_open(index_fp) - - # base new index file name on joined paired-end file name: - j_path, ext = os.path.splitext(joined_fp) - filtered_bc_outfile_path = j_path + '_barcodes.fastq' - fbc_fh = open(filtered_bc_outfile_path, 'w') - - # Set up iterators - index_fastq_iter = parse_fastq(ih, strict=False) - joined_fastq_iter = parse_fastq(jh, strict=False) - # Write barcodes / index reads that we observed within - # the joined paired-ends. Warn if index and joined data - # are not in order. - for joined_label, joined_seq, joined_qual in joined_fastq_iter: - index_label, index_seq, index_qual = index_fastq_iter.next() - while joined_label != index_label: - try: - index_label, index_seq, index_qual = index_fastq_iter.next() - except StopIteration: - raise StopIteration("\n\nReached end of index-reads file" + - " before iterating through joined paired-end-reads file!" + - " Except for missing paired-end reads that did not survive" + - " assembly, your index and paired-end reads files must be in" + - " the same order! Also, check that the index-reads and" + - " paired-end reads have identical headers. The last joined" + - " paired-end ID processed was:\n\'%s\'\n" % (joined_label)) - else: - fastq_string = format_fastq_record(index_label, index_seq, index_qual) - fbc_fh.write(fastq_string) - - ih.close() - jh.close() - fbc_fh.close() - - return filtered_bc_outfile_path diff --git a/scripts/join_paired_ends.py b/scripts/join_paired_ends.py index e03e18fead..9041cb6a32 100755 --- a/scripts/join_paired_ends.py +++ b/scripts/join_paired_ends.py @@ -9,8 +9,8 @@ __email__ = "robesonms@ornl.gov" from qiime.join_paired_ends import (join_method_names, - join_method_constructors, - write_synced_barcodes_fastq) + join_method_constructors) +from qiime.format import write_synced_barcodes_fastq from qiime.util import (parse_command_line_parameters, get_options_lookup, make_option, load_qiime_config, create_dir) import os @@ -114,7 +114,14 @@ help='Only applies to SeqPrep method, otherwise ignored.' + ' Set if input reads are in phred+64 format. Output will ' 'always be phred+33. [default: %default]', - default=False)] + default=False), + make_option('-q', '--qual_score_variant', + help=' Input format of fastq data. Can be: \'illumina1.3\' or'+ + ' \'illumina1.8\'. Only used if using the \'-b\' option.' + + ' Output will always be \'illumina1.8\'.' + + '[default: %default]. For more info see: '+ + 'http://scikit-bio.org/docs/latest/generated/skbio.io.fastq.html', + default='illumina1.8')] script_info['version'] = __version__ @@ -127,6 +134,7 @@ def main(): forward_reads_fp = opts.forward_reads_fp reverse_reads_fp = opts.reverse_reads_fp pe_join_method = opts.pe_join_method + qual_score_variant=opts.qual_score_variant output_dir = opts.output_dir # fastq-join only options: perc_max_diff = opts.perc_max_diff @@ -168,7 +176,7 @@ def main(): if opts.index_reads_fp: index_reads = opts.index_reads_fp assembly_fp = paths['Assembled'] # grab joined-pairs output path - write_synced_barcodes_fastq(assembly_fp, index_reads) + write_synced_barcodes_fastq(assembly_fp, index_reads, qual_score_variant=qual_score_variant) if __name__ == "__main__": diff --git a/tests/test_format.py b/tests/test_format.py index 91a16d980c..fcc55a0f25 100755 --- a/tests/test_format.py +++ b/tests/test_format.py @@ -6,7 +6,7 @@ __copyright__ = "Copyright 2011, The QIIME Project" # consider project name __credits__ = [ "Rob Knight", "Jeremy Widmann", "Jens Reeder", "Daniel McDonald", - "Jai Ram Rideout", "Jose Antonio Navas Molina"] + "Jai Ram Rideout", "Jose Antonio Navas Molina","Mike Robeson"] # remember to add yourself if you make changes __license__ = "GPL" __version__ = "1.8.0-dev" @@ -20,7 +20,7 @@ from numpy import array, nan, array_equal from skbio.util import remove_files from unittest import TestCase, main -from skbio.parse.sequences import parse_fasta +from skbio.io import read from qiime.util import get_qiime_library_version from qiime.parse import fields_to_dict, parse_mapping_file from qiime.format import (format_distance_matrix, build_prefs_string, @@ -33,7 +33,8 @@ format_p_value_for_num_iters, format_mapping_file, illumina_data_to_fastq, format_mapping_html_data, format_te_prefs, format_tep_file_lines, format_jnlp_file_lines, - format_fastq_record, format_histograms_two_bins) + format_fastq_record, format_histograms_two_bins, + write_synced_barcodes_fastq) from biom.parse import parse_biom_table from biom.table import Table from StringIO import StringIO @@ -81,6 +82,42 @@ def setUp(self): (-0.1, 0.2)), ('S3', 'T3', 100.68, 0.9, 1, 1, 1, (-0.4, -0.2))] self.corr_vec3 = [('S1', 'T1', 0.7777777777, 0, 0, 0, 0, (None, None))] + + # For testing `write_synced_barcodes_fastq` + # store files: + # joined_pairs + fd,self.joined_pe_fp = mkstemp(prefix='joined_', suffix='.fastq') + close(fd) + self.joined_pe = open(self.joined_pe_fp,'w') + self.joined_pe.write(joined_reads) + self.joined_pe.close() + self.files_to_remove.append(self.joined_pe_fp) + + # all barcodes + fd,self.all_barcodes_fp = mkstemp(prefix='all_bc_', suffix='.fastq') + close(fd) + self.all_barcodes = open(self.all_barcodes_fp,'w') + self.all_barcodes.write(all_barcodes) + self.all_barcodes.close() + self.files_to_remove.append(self.all_barcodes_fp) + + # out-of-order barcodes + fd,self.ooo_barcodes_fp = mkstemp(prefix='ooo_bc_',suffix='.fastq') + close(fd) + self.ooo_barcodes = open(self.ooo_barcodes_fp,'w') + self.ooo_barcodes.write(all_barcodes_out_of_order) + self.ooo_barcodes.close() + self.files_to_remove.append(self.ooo_barcodes_fp) + + # missing barcodes + fd,self.missing_barcodes_fp = mkstemp(prefix='missing_bc_', suffix='.fastq') + close(fd) + self.missing_barcodes = open(self.missing_barcodes_fp,'w') + self.missing_barcodes.write(missing_barcodes) + self.missing_barcodes.close() + self.files_to_remove.append(self.missing_barcodes_fp) + + def tearDown(self): remove_files(self.files_to_remove) @@ -441,7 +478,7 @@ def test_write_Fasta_from_name_seqs_pairs(self): fh = open(tmp_filename, "w") write_Fasta_from_name_seq_pairs(seqs, fh) fh.close() - actual_seqs = list(parse_fasta(open(tmp_filename, "U"))) + actual_seqs = [(rec.id, rec.sequence) for rec in (read(tmp_filename, format='fasta'))] remove(tmp_filename) self.assertEqual(actual_seqs, seqs) @@ -696,6 +733,40 @@ def test_format_fastq_record(self): expected_lines = '@test_label\nAATTCCGG\n+\n12345678\n' self.assertEqual(actual_lines, expected_lines) + + # tests for writing barcodes of surviving joined paired ends. + def test_write_synced_barcodes_fastq(self): + """write_synced_barcodes_fastq: should work properly. + This function expects the barcodes.fastq and joined_pairs.fastq + files to be in the same order except for those missing data + that could not be joined. That is, not all paired-ends will + assemble. + """ + filtered_bc_path = write_synced_barcodes_fastq( + self.joined_pe_fp, + self.all_barcodes_fp) + + observed_barcodes = open(filtered_bc_path, 'U').read() + self.assertEqual(observed_barcodes, synced_barcodes) + + remove(filtered_bc_path) + + def test_out_of_order_barcodes(self): + """write_synced_barcodes_fastq: should fail if barcodes out of order + By out of order I mean that the data in the barcodes file + are not in the same order as the data within the joined paired-ends + file. + """ + self.assertRaises(StopIteration, write_synced_barcodes_fastq, + self.joined_pe_fp, + self.ooo_barcodes_fp) + + def test_missing_barcodes(self): + """"write_synced_barcodes_fastq: should fail if barcodes are missing.""" + self.assertRaises(StopIteration, write_synced_barcodes_fastq, + self.joined_pe_fp, + self.missing_barcodes_fp) + example_mapping_file = """#SampleID\tcol1\tcol0\tDescription @@ -897,6 +968,391 @@ def test_format_fastq_record(self): """ +all_barcodes = """@MISEQ03:64:000000000-A2H3D:1:1101:14358:1530 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:14206:1564 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:14943:1619 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15764:1660 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15211:1752 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15201:1774 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15976:1791 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:16031:1840 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:12964:1852 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17245:1906 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:18171:1983 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:14225:2009 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:16656:2052 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:18209:2060 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:13824:2095 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17839:2106 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17831:2124 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:12555:2129 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:13627:2170 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:11781:2223 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17996:2254 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:13712:2276 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15819:2301 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:11958:2304 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:19110:2311 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +""" + +all_barcodes_out_of_order = """@MISEQ03:64:000000000-A2H3D:1:1101:14358:1530 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:14206:1564 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:14943:1619 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15764:1660 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15976:1791 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:16031:1840 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:12964:1852 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17245:1906 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:18171:1983 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:14225:2009 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:16656:2052 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:18209:2060 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15211:1752 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15201:1774 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:13824:2095 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17839:2106 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17831:2124 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:12555:2129 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:13627:2170 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:11781:2223 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17996:2254 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:13712:2276 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15819:2301 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:11958:2304 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:19110:2311 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +""" + +missing_barcodes = """@MISEQ03:64:000000000-A2H3D:1:1101:14358:1530 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:14206:1564 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:14943:1619 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15764:1660 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15211:1752 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15201:1774 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15976:1791 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:16031:1840 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:12964:1852 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17245:1906 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:18209:2060 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:13824:2095 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17839:2106 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17831:2124 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:12555:2129 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:13627:2170 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:11781:2223 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:17996:2254 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:13712:2276 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:15819:2301 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:11958:2304 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +@MISEQ03:64:000000000-A2H3D:1:1101:19110:2311 1:N:0:TCCACAGGAGT +TCCACAGGAGT ++ +FFFFFFFFFFF +""" +joined_reads = """@MISEQ03:64:000000000-A2H3D:1:1101:14358:1530 1:N:0:TCCACAGGAGT +TNCAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAATCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGAAATGCGTAGATATAGGAAGGAACACCAGTGGCGAAGGCGACCACCTGGACTGATACTGACACTGAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGAAACCCTTGTAGTCCGT ++ +?#5CCE5AEEHHHHHHHHHHHHHHHHHFFFFHHHHHHEEADEEEEEEEEEEEEEEEEEEEEEEE?BEEEEEEEEEEEAEEEE0?A:?EFCAC==ECEEFFEFEEFBACEEDD=8CDDDEDFFFDFFHHHFHHFAFDHFCHHFHHHHHHEDCHHIHFECIIIIIHHHHGGDIHHGIHIIHFHHHHHIIIHHHEHHHHGFIIIIIIIIHFFCFFCBBDDDBDDB@@????? +@MISEQ03:64:000000000-A2H3D:1:1101:14206:1564 1:N:0:TCCACAGGAGT +TACGTAGGGTGCGAGCGTTAATCGGAATTACTGGGCGTAAAGCGTGCGCAGGCGGTTTTGTAAGTCAGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCGTTTGAAACTACAAGGCTAGAGTGTAGCAGAGGGGGGTAGAATTCCACGTGTAGCAGTGAAATGCGTAGAGATGTGGAGGAATACCAATGGCGAAGGCAGCCCCCTGGGTTAACACTGACGCTCATGCACGAAAGCGTGGGGAGCAAACAGGATTAGAAACCCCTGTAGTCCGT ++ +?????BB?DDDDDD@DDCEEFFH>EEFHHHHHHGHHHCEEFFDC5EECCCCCCDECEHF;?DFDDFHDDBBDF?CFDCCFEAA@?:;EEEEEEEECBA,BBE?EEAAECA0:?C?:??A:8*:00?0**:8:DDECDD0.?:????:,:?EEEEEE??44BEEEEEDDBD=EEB==FFFDFDFD?FFEE:EEFFFDFFECCDHHHHEHHHHHHHFBHHHDCGBHF@HFFDEHFF@HHHHHHHHHHHFFHHHHHFFFFFC@?DDDBDDB@@????? +@MISEQ03:64:000000000-A2H3D:1:1101:14943:1619 1:N:0:TCCACAGGAGT +TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGAAATGCGTAGATATAGGAAGGAACACCAGTGGCGAAGGCGACCACCTGGACTGATACTGACACTGAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCCTGTAGTCCGT ++ +?AAAABBADDDEDEDDGGGGGGIIHHHIIIIIIIHHHCCHHFFEFHHHDCDH5CFHIIHIIIIHHHHHHHHHHHHHHHHHHHGGGEGGGGDDEGEGGGGGGGGGGGGGGEEEGCCGGGGGGEGCEEEECEAECGFEEFEACEEGGGEEEFECE>FFFEFF*?EED;?8AEE08*A?A:?EA;?EEEEE??:CBBE?EEEFEEE?BCE?;CE?=EDEE=EECEFE?C0DD8D4C?CEHDGDDCDE5CCEACFHHHHHHHHFFHHHHHHHHFHHFHHHHHHDEBFEEE@DEEEEEEEEEEEEEEBBCBECEEEEEEEEEEEEEEECACCEEEEEEA00E?EEEBAEEEE?>?CEDDC?B?A:EDEEDEDEFFBFFFDFD@DEEEFHHDDD+HDDECDDEDGFBHHFHFFHHHGCFGEEEEGHHFHHHHHHHHHHHEFEHHGDHHECFCFHFFFFFFC=CDHAEFHFGHHFHHHHHHHHHFHHFHFFHHHHHGBEEAD;DGGGGEGGGCGCEEEGEGGGCEA>>CEDGDGE:C:CGGG:AC??EEA8C::AECEGEGCCECEEGGGGGEBCECE@CEFEDFEFFFFFFFBF@HHHHHHHHHHHHDEHEHHHHFDHIIIHIFHF=IHFHIHIHHGFIHHHHEHFHEHHHHHIIHHHIIIHFHHHFFFFFEDDDDDDDDB@@????? +@MISEQ03:64:000000000-A2H3D:1:1101:11781:2223 1:N:0:TCCACAGGAGT +TACGTAGGGCGCAAGCGTTATCCGGAATTATTGGGCGTAAAGAGCTCGTAGGCGGTTTGTCGCGTCTGCCGTGAAAGTCCGGGGCTCAACTCCGGATCTGCGGTGGGTACGGGCAGACTAGAGTGATGTAGGGGAGATTGGAATTCCTGGTGTAGCGGTGAAATGCGCAGATATCAGGAGGAACACCGATGGCGAAGGCAGGTCTCTGGGCATTAACTGACGCTGAGGAGCGAAAGCATGGGGAGCGAACAGGATTAGATACCCCAGTAGTCCGT ++ +???A?BB?DDDDDDDDEEECFFHHHHHIHHHIIIHHHECEHFCFHGGH>CFEFEHHHHHFFDFHCDEFFHHEBFFFF?BBEEEEEEEFFFBEEEEAEDEFEDD.?EA4ACEDDDECEFFFFEF:*::?ACCFFD8DCH5AECFHHHFHHHHHHHHHHHGFHHCFHHHHHEEEDEDEED@EEEEEEEEEEEEEEEEE?;BEEE?EEEEEE?*?CA?EE:EA?'8C*:1?CEEECAAECA:CEEFFECEEEEEEEBEFFEEEEA??DDB?FFEHHFHEEHFFHDDCCC5*5+DHHFA5FA5-HHHHHGFAGHHHHHHHEHFHEEHHHHHHHFGC>FHHHHHFFFFFC5CCE5AEEHHHHHHHHHHHHHHHHHFFFFHHHHHHEEADEEEEEEEEEEEEEEEEEEEEEEE?BEEEEEEEEEEEAEEEE0?A:?EE)8;)0ACEEECECCECAACEE?>)8CCC?CCA8?88ACC*A*::A??:0?C?.?0:?8884>'.''..'0?8C?C**0:0::?ECEE?############################ -@MISEQ03:64:000000000-A2H3D:1:1101:14206:1564 1:N:0:TCCACAGGAGT -TACGTAGGGTGCGAGCGTTAATCGGAATTACTGGGCGTAAAGCGTGCGCAGGCGGTTTTGTAAGTCAGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCGTTTGAAACTACAAGGCTAGAGTGTAGCAGAGGGGGGTAGAATTCCACGTGTAGCGGTGAAATGCGTAGAGATGGGGAGGAATACCAATGGCGAAGGCAGCCCCCGGGGTTAACACTGACGCCAAGGCACGAAAGCGGGGGGGGCAAACG -+ -?????BB?DDDDDD@DDCEEFFH>EEFHHHHHHGHHHCEEFFDC5EECCCCCCDECEHF;?DFDDFHDDBBDF?CFDCCFEA@@::;EEEEEEEECBA,BBE?:>AA?CA*:**0:??A:8*:*0*0**0*:?CE?DD'..0????:*:?*0?EC*'.)4.?A***00)'.00*0*08)8??8*0:CEE*0:082.4;**?AEAA?############################################# -@MISEQ03:64:000000000-A2H3D:1:1101:14943:1619 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGAAATGCGTAGATATAGGAAGGAACACCAGGGGCGAAGGCGACCACCTGGACTGAAACTGACACTGAGGGGCGAAAGCGGGGGGGGCAAAAG -+ -?AAAABBADDDEDEDDGGGGGGIIHHHIIIIIIIHHHCCHHFFEFHHHDCDH5CFHIIHIIIIHHHHHHHHHHHHHHHHHHHGGGEGGGGDDEGEGGGGGGGGGGGGGGEEEGCCGGGGGGEGCEEEECE?ECGE.84.8CEEGGGE:CCCC0:?C<8.48CC:C??.8.8?C:*:0:*9)??CCEE**)0'''42<2C8'8..8801**0*.1*1?:?EEEC?########################### -@MISEQ03:64:000000000-A2H3D:1:1101:15764:1660 1:N:0:TCCACAGGAGT -TACGAAGGGGGCTAGCGTTGCTCGGAATCACTGGGCGTAAAGCGCACGTAGGCGGATTGTTAAGTCAGGGGTGAAATCCTGGAGCTCAACTCCAGAACTGCCTTTGATACTGGCGATCTTGAGTCCGGGAGAGGTGAGTGGAACTGCGAGTGTAGAGGTGAAATTCGTAGATATTCGCAAGAACACCAGTGGCGAAGGCGGCTCACTGGCCCGGAACTGACGCTGAGGGGCGAAAGCTGGGGGAGCAAACG -+ -???????@DDDDDDBDFEEFEFHEHHHHHHHHHHHHHEHHHHFEHHHHAEFHGEHAHHHHHHHHHHHHHHH=@FEFEEFEFEDAEEEFFE=CEBCFFFCECEFEFFFCEEEFFCD>>FFFEFF*?EED;?8AEE08*A*1)?E::???;>2?*01::A?EEEFEEE?:C.8:CE?:?8EE8AECEFE?C0::8'488DE>882)*1?A*8A######################################## -@MISEQ03:64:000000000-A2H3D:1:1101:15211:1752 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAATCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGGGGTGGAATTTCCTGTGTAGCGGGGAAATGCGTAGATATGGGAAGGAACACCAGGGGCGAAGGCGACCACCTGGACTGATACTGACACTGGGGTGGGAAAGGGGGGGGAGGAAAAG -+ -?????EFFFEAACEC7>E5AFEFHHHHHHF=GHFGHFHHHHFHFHH;CED8@DDDE=4@EEEEECE=CECECEECCBB34,=CAB,40:?EEEE:?AAAE8'.4'..8*:AEEECCCA::A################################################################################################ -@MISEQ03:64:000000000-A2H3D:1:1101:15201:1774 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAATCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGGGAAATGCGTAGATATAGGAAGGAACACCAGTGGCGAAGGCGACCACCTGGACTGATACTGACACTGAGGTGCGAAAGCGGGGGGGGCAAACG -+ -?????BB?DDDDDDBDEEEEFFHFHHHHHHHHHHHFH>CEHDGDDCDE5CCEACFHHHHHHHHFFHHHHHHHHFHHFHHHHHHDEBFEEE@DEEEEEEEEEEEEEEBBCBECEEEEEEEEEEEEEEE?ACCEEEA)84)0.?EEE:AEACA?0?CEDD'.4?A:ACA)0'80:A:?*0*0)8CEEEEE?*0*)88888A'.5;2A)*0000*8:*0:?CEEEE?A*?A####################### -@MISEQ03:64:000000000-A2H3D:1:1101:15976:1791 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTCGTTAAGTTGGATGTGAAATCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGGGAAATGCGTAGATATGGGAAGGAACACCGGGGGGGAGGGGGGCTCTCGGGTCCTTTTCGGCGGCTGGGGGCGGAAGGCAGGGGGGGCAACCG -+ -?????BB?DDDDDDDDEEEEFFIFHHHHHHIIIHIFHCCHF@F>CECHCDDECCFEADEHHHHHHHHFGHHHHHHFHHHHHHF8:>'88AC?::?AA################################################################################## -@MISEQ03:64:000000000-A2H3D:1:1101:16031:1840 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGGGAAATGCGTAGATATAGGAAGGAACACCAGGGGCGAAGGCGACCACCTGGACGGATACTGACACTGAGGGGCGAAAGGGTGGGGAGAAAAAG -+ -?????BB?DDDDDDDDGFEGGGIHHHHIIIIIIIHFE>CFFFFDCHCH>>CE-5EEIIHHHIHHHHHHHHHHGHFDFHFHEHGBEEEEGGEDGGGGEGGEGGGGGCEGCCEEGGG>'.8?8:C:?00.0?:?*1::*9CC?EEEG*?############################################################## -@MISEQ03:64:000000000-A2H3D:1:1101:12964:1852 1:N:0:TCCACAGGAGT -TNCAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGCAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGAAGCGGGGAAATGCGTAGATATAGGAAGGAACACCAGGGGCGAAGGCAACCACCGGGACTGAAACTGAACCGGAGGGGGGAAAGCGGGGGGGGAAAACG -+ -?#55????DDDDDDDDEEEEFFHHBHHHFFGHHFHDC+5>C/?E7DCHCCCD5AECFHHHFHHHHHHHHHFFFFFHFFDFEFF5)@=DEFDEFEEFF;AEAABC,4BECCC=B,5?C8?CC?CC*:?E010:?EA)0.)08C?A:?A######################################################################################################## -@MISEQ03:64:000000000-A2H3D:1:1101:17245:1906 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGAAATGCGTAGATATAGGAGGGAACACAAGGGGCGAAGGCGACCACCGGGACGGAAACTGCAACTGGGGGGGGAAAGCGGGGGGGGAAACAG -+ -AAA??BB?DDDDDDDDGGEGGGIHGHIIIIIIHF?CFCCDFFFDCHEHC>DH5AFEHIHHHHHHHHHHHHHHFFFFFHHHHHGDBEEGGGGGGG@EGEGGGGGGGCGEGACC>EGEGGGGC:C0CEEG:0::CEE)88)08?:CECCE:C*10*104A.4CE:*:?C8)'8CC############################################################################## -@MISEQ03:64:000000000-A2H3D:1:1101:18171:1983 1:N:0:TCCACAGGAGT -GACGTAGGAGGCGAGCGTTGTCCGGATTCATTGGGCGTAAAGAGCGCGCAGGCGGCTTGGTAAGTCGGATGTGAAATCCCGAGGCTCAACCTCGGGTCTGCATCCGATACTGCCCGGCTAGAGGTAGGTAGGGGAGATCGGAATTCCTGGTGTAGCGGTGAAATGCGCAGATATCAGGAGGAACACCGGGGGCGAAGGCGGATCTCTGGGCCTTCCCTGACGCTCAGGCGCGAAAGCGGGGGGGGCGAACG -+ -??????B?DDDDDDDDFFEFFFIHFEEEHHIHHHFHHEHHFGFFFHCEHEHCDECCEFFE4DDFDBEEEEEFFFFEEFFCE8B>BEFEEFFCEFE>8>EFFE*A?A?ADDAAEE8E>;>EA:??1*:?111?C<88AA08?ACECF:*:?*08:0:8<.4?EE*A:))'..0*01*?:08?A*?CA################################################################# -@MISEQ03:64:000000000-A2H3D:1:1101:14225:2009 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGAAATGCGTAGATATAGGAAGGAACACCAGTGGCGAAGGCGACCACCTGGACTGAAACGGACACTGAGGGGCGAAAGCGGGGGGGGCAAACG -+ -?????BB?DDDDDDBDEEEEFFHHHHIIIIHHIIIIHHEHIFGEHHHHCCEHAEFHIIHIIIIHHHHHHHHHHFHHHHHHHHFFFEFFFFFEFFFFFFEFFFFFFEFFFEFCACEFFFFFF:C?CEEE*?:AAEE88;088?AEFCEAEECEEEFE>?).?ECCEEE8?4AFFE0?*0088ACFFFAAC*0?C888>>CD?D;8CE*:*:A?CF*::)0?DD?:::?######################## -@MISEQ03:64:000000000-A2H3D:1:1101:16656:2052 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGAAATGCGTAGATATAGGAAGGAACACCAGGGGCGAAGGCGACCACCGGGACTGAAACTGACACTGAGGGGGGAAAGCGGGGGGGGAAAACA -+ -?????BB?BDDDDDDDGFFEGGIIHHIIIIIHHHHIHCCFFDEEEHEHFFEH5AFHHIHIHIHGGHHHHHHHFHHFHHHHHHGEG@EGEGGEGGGGCEGGEGGGGEGGACECGGGGGGGGEGGCCEGG?CCCEGC088)0.?EGG?EC*::C*:??<8.48?C:?C808.8CEE############################################################################# -@MISEQ03:64:000000000-A2H3D:1:1101:18209:2060 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCACGTAGGCGGCTCAGCAAGTCAGGGGTGAAATCCCGGGGCTCAACCCCGGAACTGCCCTTGAAACTGCTAAGCTAGAATCTTGGAGAGGCGAGTGGAATTCCGAGTGTAGAGGGGAAATTCGTAGATATTCGGAAGAACACCAGGGGCGAAGGCGACCCCCTGGACAAGCATTGACGCTGAGGGGGGAAAGCGGGGGGGGCAAAAG -+ -?????BB?BDDDDDDDECEEFFHHHHAHFHHHHHHHHCCHHH=@DEEHFHFCGHHB)?ECGHHH?DHHHHHCCCFFHHHFEEEEEEEEEEEEEB)>EDACEECEECEEECEE:*0A:AEAECA:0::ACE??E?.8'4.88?EC*00:08).0:*00?)..8AAAAA*0)0::?::?0A8)?C:?A################################################################# -@MISEQ03:64:000000000-A2H3D:1:1101:13824:2095 1:N:0:TCCACAGGAGT -TACGTAGGGGGCTAGCGTTGTCCGGAATCATTGGGCGTAAAGCGCGTGTAGGCGGCCCGGTAAGTCCGCTGTGAAAGTCGGGGGCTCAACCCTCGAAAGCCGGGGGATACTGTCGGGCTAGAGTACGGAAGAGGCGAGTGGAATTCCTGGTGTAGCGGTGAAATGCGCAGATATCAGGAGGAACACCCATTGCGAAGGCAGCTCGCTGGGACGTTACTGAGGCTGAGACCGGAAAGGGGGGGGGGCAAAAG -+ -??A??BBADDDDDDBDFEEFFFHHHHHFHHHIHHFHHCCHHFHDCCDEEHHFIHAHHHHH@EFFDFFEBDEDEFFECBBEEEED?28CCFFECE;EF8?ECD;'488?EEFCE:A>>?>EECEE::A8E8.8?8).'.'08AEE*?:*::*001:?CE5AEEHFHIHIFHHHHHHHHHFHHFHHHHHHGGGGGEEGGGGGDEGGGGGGGGGGGGGCE>AEGEGGGGEEECEGEE1:??CEC08>.88CEEECG*:C?CC:?0.4.4CE?CECC?)4?CC:*11?:?)CCEGG).9*1:?8<2<CFHHGDCFDH>CDHAEFEHIEFFGGHHHHHHHFH=CFFHHHHEHG8DEEGEGGGGGDEEEEGEEGGGCGGEEECCACCEGGGCEE::?CE0?CCEGE'.<'..4CEGEGGEEEE*::C>20>?C?*1:C..'8:??*:*?*0)??9CEG8?*1*8'4.44?58<28?C############################################# -@MISEQ03:64:000000000-A2H3D:1:1101:12555:2129 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTCGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACGAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGAAATGCGTAGATATAGGAAGGAACACCAGTGGCGAAGGCGACCACCTGGACGGAAACTGACACTGAGGTGCGAAAGCGTGGGGACCAACCG -+ -????ABBADDDDDEDDGGGGGGIIHHIIIIIHIIHHHFFHHHFHHHHH>CDHAEFHFGHHFHHHHHHHHHFHHFHFFHHHHHGBEEAD;DGGGGEGGGCGCEEEGEGGGCE>>>CEDGDGE:C:CGGG:?C??EE08<)0?ECEGEGCCECEEGGGGG08CECE?CE8)4?CC:*:*:0989*9CEC8C*:?C'842.8'.4.2?E9?*:?'.8).::::?CC:*110*0C8C<8??C############# -@MISEQ03:64:000000000-A2H3D:1:1101:13627:2170 1:N:0:TCCACAGGAGT -GACAGAGGGTGCAAACGTTGTTCGGAATTACTGGGCATAAAGAGCACGTAGGTGGTCTGCTAAGTCACGTGTGAAATCCCCCGGCTCAACCGGGGAATTGCGCGTGATACTGGCCGGCTCGAGGTGGGTAGGGGGGAGCGGAACTCCAGGGGGAGCGGGGAAATGCGTAGATATCTGGAGGAACACCGGGGGCGAAAGCGGCTCACGGGACCCAATCTGACACTGAGGGGCGAAAGCTAGGGTGGCAAACG -+ -?????BB?DDDDDDDDEFFFFFHHHHHIHIIHIIFHCEHIIHBFHIHHAAFH5CF@FHHHGHIIGHHHHFHIHIIIHIIIHHHHHHHHHHFHHHFFEFEFEDBE<>BBEEFECECE?D'..2AD)8A>40?AED''''.4>AC**1?).2'888D'52<>D8A:A82'.*:*.'?>E)AA#################################### -@MISEQ03:64:000000000-A2H3D:1:1101:11781:2223 1:N:0:TCCACAGGAGT -TACGTAGGGCGCAAGCGTTATCCGGAATTATTGGGCGTAAAGAGCTCGTAGGCGGTTTGTCGCGTCTGCCGTGAAAGTCCGGGGCTCAACTCCGGATCTGCGGTGGGTACGGGCAGACTAGAGTGATGTAGGGGAGATTGGAATTCCTGGTGTAGCGGGGAAATGCGCAGATATCAGGAGGAACACCGATGGCGAAGGCAGGTCTCTGGGCATTAACTGACGCTGAGGAGCGAAAGCAGGGGGGGCGAACG -+ -???A?BB?DDDDDDDDEEECFFHHHHHIHHHIIIHHHECEHFCFHGGH>CFEFEHHHHHFFDFHCDEFFHHEBFFFF?BBEEEEEEEFFFBEEEEAEDEFEDD.8A8.ACEDDD;AEFFFFEF:*1:?ACCFFD88'08:2448DE?E?8:*:*1A***0*:AA*?AEEEEE?######################### -@MISEQ03:64:000000000-A2H3D:1:1101:17996:2254 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGGGAAATGCGTAGATATAGGAAGGAACACCAGGGGCGAAGGCGACCACCGGGCCTGAAACTGACACTGAGGGGGGAAAGCGGGGGGGGAAAACG -+ -?????BB?DDDDDDDDGGGGGGIHHHHIIIIHHHFFH>CHFHGHHHEHCCCE5AFEHIHHHHHHHHHHHHHHHHHHHHHHHHGGEEGGEGEGGGEGEGGGCGGGGGGGECGEECGAECGGEEEC**CE?C::CCC.8<)08?CCC:CCCEC?CC?:8>'4>.4>C''.8'.42AAECEFE:*0:AAC?D'..8C?:?A)).0001*11::??8A**?A################################################################ -@MISEQ03:64:000000000-A2H3D:1:1101:11958:2304 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGGGGAATTTCCTGTGTAGCGGGGAAATGCGTAGATATAGGAAGGAACACCAGGGGCGAAGGCGACCACCGGGACTGAAACTGACACTGAGGGGCGAAAGCGTGGGGGGCAAACG -+ -????ABBADDDDDDDDEEEEFFHHHHHIFHHIIIHFEECEFGDECECE5>C:55EEHIHIFGHFGHHHHHFHFFHHFHHHHHFBFEEDEEFFFFEFFFEFEFABEEFFFEEBEFFEFF=::AE*:AEE0?:?CFE8A>'.'.8AC?ECE)848?0**::AAC???EEE)*0)084'48<'8'882DCH5AECFHHHFHHHHHHHHHHHGFHHCFHHHHHEEEDEDEED@EEEEEEEEEEEEEEEEE;;BEEE?EEEEEE?*?CA?EE::?8'.''..?CEE*::/:?A:C?E??82?CCEEEE))4?EEEEA:?*80?AEEC################################################################# -""" - -# For reference. Data used to make the 'joined_reads' reference string. -reverse_reads = """@MISEQ03:64:000000000-A2H3D:1:1101:14358:1530 2:N:0:TCCACAGGAGT -ACGGACTACAAGGGTTTCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCACCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGCAGTTCCCAGGTTGAGCCCGGGGATTTCACATCCAACTTAACAACCCACATACCCGCCTTTTCGCCCAGGTAATCC -+ -?????@@BDDBDDDBBCFFCFFHIIIIIIIIFGHHHHEHHHIIIHHHHHFHIIHIGHHIDGGHHHHIIIIICEFHIHHCDEHHHHHHFHHCFHDF?FHHFHHHFFDFFFDEDDD..=DDDE@>'.8::A?############################################### -@MISEQ03:64:000000000-A2H3D:1:1101:14206:1564 2:N:0:TCCACAGGAGT -ACGGACTACAGGGGTTTCTAATCCTGTTTGCTCCCCACGCTTTCGTGCATGAGCGTCAGTGTTAACCCAGGGGGCTGCCTTCGCCATTGGTATTCCTCCACATCTCTACGCATTTCACTGCTACACGTGGAATTCTACCCCCCTCTGCTACACTCTAGCCTTGTAGTTTCAAACGCAGTTCCCAGGTTGAGCCCGGGGCTTTCACATCTGCCTTACAAAACCGCCTGCGCACGCTTTACGCCCCGTAATTC -+ -?????@@BDDBDDD?@CFFFFFHHHHHFFHHHHHHHHHHH@FFHEDFFH@FHBGCDHHHBFHHHHHHHEHHHHDCCEFFDFFFEE:=?FF?DFDFDFFF==BEE=DBDDEEEEEB,4??EE@EEE,3,3*3,?:?*0ACCEDD88:***?*0:*0***0*?C?00:AE:?EE:*A8'.?:CAA?A80*0*??AA88;28;C################################################## -@MISEQ03:64:000000000-A2H3D:1:1101:14943:1619 2:N:0:TCCACAGGAGT -ACGGACTACAGGGGTATCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCACCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGCAGTTCCAAGGTTGAGCCCGGGGCTTTCACATCCAACTTACAAAACCACCTACCCGACCTTTACGCCCAGAAATTC -+ -?????@@BDDDDDD?AFFFFFFIIHHIHIIHIIIIHIHHHHHHHHHHHHHHHHHHIHHHIIHHIHIIIIII?EFEGHHHHHIIHHDHHFD@FFEHFHFHFHFHFFFFFFFFEEEEFFFDEBACFFCECFCHCFHH=CGHHDFH=E?ACDEHHCCFFGHHDHH@CBEFHHCHHHF,5@?DF)4CHEDHHHFFFGBCCDDFGGHHHHEHHHHH5AE+C*>==+EDHHDEFCFCDF3@.D=,CFH=,@,4DFFE:=DDDDEB:)1:1;;?B;BE;??,?EE;AEE??**0*/:0??:***:?E*:8?A*:CEE################################################################################# -@MISEQ03:64:000000000-A2H3D:1:1101:12964:1852 2:N:0:TCCACAGGAGT -ACGGACTACTCGGGTATCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCAACCACCCTCTACCATACTCTAGCTTGTAAGTTTTGAATGCAGTTCCAAGGTTGAGCCCGGGGCTTTCACACCCAACTTAACAACCCACCTACGCGGCATTTACGCCCACTACTTC -+ -?????@=BBBB9?=55AACCC?ECFFFHB>FFHGFHFHHHHHHHHHHHHFHHHGGGHHHGGHHHHHHDDFEGH;EBCEHD+AFE@C+@F=.7D+@CDCFFHHFFFD?DF@E+=:BDDB;D=@BE?BCE*,33,,?,3;;:?).0**::***0/*/0A??:*:****00/**8*0?AE:?AAC**0):??C############################################################# -@MISEQ03:64:000000000-A2H3D:1:1101:17245:1906 2:N:0:TCCACAGGAGT -ACGGACTACAGGGGTTTCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCACCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGCAGTTCCCAGGTTGAGCCCGGGGCTTTCAAATCCAACTTAACAAACAACCAACCGGCGCTTTACGCCCAGTAATTC -+ -?????@@BDDDDBDABEFFFFFHHHHHHHHGGHGHHHHHHEH@FEHEEHHHFHHH=EGHHHHDGHHHHFHHGGHHHCCEDEHHHHHHHHHDFHHF=DBDFHFD?BB.BF;@DDDD.=DD*>6)@==ABAACBB5=B,=,88A)???:E*::::??*:**1**8??CCCEE8A:A::AAACAC??A)1:0**1*)48;'42A?EA**1?*1*0::??:ACEF############################## -@MISEQ03:64:000000000-A2H3D:1:1101:18171:1983 2:N:0:TCCACAGGAGT -ACGGACTACCGGGGTTTCTAATCCTGTTCGCTCCCCACGCTTTCGCGCCTGAGCGTCAGGTAAGGCCCAGAGATCCGCCTTCGCCACCGGTGTTCCTCCTGATATCTGCGCATTTCACCGCTACACCAGGAATTCCGATCTCCCCTACATACCTCTAGCCGGGCAGTATCGGATGCAGACCCGAGGTTGAGCCCCGGGATTTCACATCGGCTTACCAAAGCGCCCGGCGCCCCCTTTACGCCCCAGAAACC -+ -?????@@BDBDDDD=BCFFFFFIIIIHHFEHHHHIHIHHHEFCGDEHHHEFFEGC>EEHI?EHHGHHHHFH+C=,,?FHDDHFEE@EFE=1;A;EECCE==BEB,BBC=@@24;:CEAA8?CC*??:0?;*1?AE?CE*10:0*1:CAA*;22;2A##################################################################################### -@MISEQ03:64:000000000-A2H3D:1:1101:14225:2009 2:N:0:TCCACAGGAGT -ACGGACTACAGGGGTATCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCACCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGCAGTTCCCAGGTTGAGCCCGGGGCTTTCACATCCAACTTAACAAACAACCACGCCGCGCTTTAGCCCAGGTAATTC -+ -?????@@BDDDDDD??CFFFFFHIHHHHIIIIHIIHIHHHHHIHHHHHHFFHHIHHHIHHHHHIIHIHIIIFFFEGHHEDEHHHHDHHHHCFFDFFHHHHHHFFFFFFF@EDEED=DDEED@EBFCEEEFECCCEEEFBD>8:?################################################ -@MISEQ03:64:000000000-A2H3D:1:1101:16656:2052 2:N:0:TCCACAGGAGT -ACGGACTACCCGGGTATCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCCCCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGCAGTTCCAAGGTTGAGCCCGGGGCTTTCACACCCAACTTAACAAACCACCTACGCGCGCTTTACGCCCAGCATTTC -+ -?????@@BDDDDDD<@CFFFFFIHHFHHFHHHHHHHIHHHHHFHCEHHHHIIFHHAFHHHFFHIIHHIIIHGHFEH8A:*:::?E?*::A::?AE8AEFEEEC?A:CE?AEA:EF*008:?EF*:C)8;D228A0:??:*.8A8):*:*1::CE############################## -@MISEQ03:64:000000000-A2H3D:1:1101:18209:2060 2:N:0:TCCACAGGAGT -ACGGACTACTAGGGTATCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGCGTCAATACTTGTCCAGCGAGTCCCCTTCGCCACTGGTGTTCTTCGGAATATCTACGAATTTCACCTCTACACCCGGAATTCCACTCCCCCTTCCAAGATTCCAGCTTAGCAGTTTCAAGGGCAGTTCCGGGGTTGGCACCCGGGATTTCACCCCTGCCTTGCTCAACCCCCCACGGGGCCTTTACCCCCAGCATTCC -+ -=9<=9<7<@@@@@@<@A8A>C>8E>-8AE;C99CEEECC>>EECE@CCDE,C@E++5>E-A=E-C@@=@5@C>CGDEHCA:DFGHHEEEEFFHHHHHHDHED7=C?;BC=?C,==*3.84?EC?88A8A:A?*8?############################################################################################### -@MISEQ03:64:000000000-A2H3D:1:1101:11781:2223 2:N:0:TCCACAGGAGT -ACGGACTACTGGGGTATCTAATCCTGTTCGCTCCCCATGCTTTCGCTCCTCAGCGTCAGTTAATGCCCAGAGACCTGCCTTCGCCATCGGTGTTCCTCCTGATATCTGCGCATTTCACCGCTACACCAGGAATTCCAATCTCCCCTACATCACTCTAGTCTGCCCGTACCCACCGCAGATCCGGAGTTGAGCCCCGGACTTTCACGGCAGACGCGCAAACCGCCCACAGAGCTCTTTCCCCCCAAAAATCC -+ -?????@@BDDDDDDBDCFFFFFHHHHHHHHHHHEHEHDFHHHHHHEDEEHHHFHHHHEHHHHHFGHHHHDD;EFFHCFECAGFEEE+@E@3?E:DFFFHBDHC?BBDFFE8;=DD,,=DEE<@),==?B*44=,=,4**0*0:CA*A?::*0::?0AC:CE*?:*8.4AE?*8?)'82;*?0?#################################################################### -@MISEQ03:64:000000000-A2H3D:1:1101:17996:2254 2:N:0:TCCACAGGAGT -ACGGACTACCAGGGTTTCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCACCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGCAGTTCCCAGGTGGAGCCCGGGGCTTTACAATCAAACTTAACAAACCCCCTACGCGCGCTTTAGCCCCACAATTTC -+ -?9???@@BBDDDDDBBEE=BECEEEE,B=?CBACE)*0**?C?*:*0:*:?:A:??**::?E**80::::??:CAC:C8C################################################################ -@MISEQ03:64:000000000-A2H3D:1:1101:13712:2276 2:N:0:TCCACAGGAGT -ACGGACTACTGGGGTTTCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCACCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGAAGTTCCAAGGTTAAGCCGGGGGCTTTCACATCCAACTAACCAAACCACTAACCGCCGCTTTAGGCCCAGCAATTC -+ -?????@@BDDDDDDBDEFFFFFHFHHHIFFHIHIIHHEHHHHFHHHEHCFHHDFGGHIIHIHFGHHHGFHF-AEEGHHHHEGFHHHDFHB?FHEHCF?FDDFH??BFFFF=DDEEEFFEDE8>:BECCAEEAECE,ABAACEA*0**?*01?001*::*A**0:*::CE1*8:?**11:*CE##################################################################### -@MISEQ03:64:000000000-A2H3D:1:1101:15819:2301 2:N:0:TCCACAGGAGT -ACGGACTACCGGGGTTTCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCACCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGAAGTTCCCAGGTTGACCCCGGGGCTTTCACAGCAGCCTTAACTCACCCCCTGCCAACCCTTTACTCCCCGAAATTC -+ -?9???@=BDDDDDD<@CFFFFFHHHBFFHHHFGHHHHHHHEHFGEHHHHEDGD?FCGHHFHHHHHHHHBDF?FHHHFHH@DHHHH+DHHDCFHDFDFBFFDFFEDFEEDEEDEEC=CCEEEBEEFCEFEEFEE?:CEE*8CA800*:E*:AA::***1??*:**1::CF################################################################################## -@MISEQ03:64:000000000-A2H3D:1:1101:11958:2304 2:N:0:TCCACAGGAGT -ACGGACTACTGGGGTATCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGTGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCACCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGCAGTTCCCAGGTTGAGCCCGGGCCTTTAAAATCCAACTTAAAAAACAACTAACCGCCGCTTTCCGCCCAGAAATCC -+ -?????@@BDBDDD@@BFFFFFFHFHHHHFHHHHHHHHHHHHHHHHHHHHHFHHHHHFGH=CGEH=FHFGHFEFHEHHCEEEHHHDCEFHH.?FDFFHHHHBFHFFHFFFFEEEEEEEEEEB@EEEECE;CC?BCEEEC;;CEA*8:AE**00::C0A::?:*0*AEE?E?*A**:C?*:?:?**0)00::**?8>'8';ACA*0*0C?:?******::??E?CE########################### -@MISEQ03:64:000000000-A2H3D:1:1101:19110:2311 2:N:0:TCCACAGGAGT -ACGGACTACCAGGGTATCTAATCCTGTTTGCTCCCCACGCTTTCGCACCTCAGTGTCAGTATCAGTCCAGGGGGTCGCCTTCGCCACTGGTGTTCCTTCCTATATCTACGCATTTCACCGCTACACAGGAAATTCCACCACCCTCTACCATACTCTAGCTTGTCAGTTTTGAATGCAGTTCCCAGGTTAAGCCCGGGGCTTTCCAACCCAACTTAACAAACCACCTACCCCCGCTTTACGCCCAGAAATTC -+ -?????@=BDDDDDD<5CFFFFFHHHHHF>CGFHHHHHHHEEHFHEHHHHHHHGAFGHHHHH-5AF5AFHHD+5*5CCCDDHFFHEEHFHHBFF:BDD4?=.=DEFFEBEDEBEEECEFFEE<::CEAACE?:A*1:*C88?AE.?:*::**1:**11*01***1?C??:?0?:C:C**1*1::*:8A?10*1?########################################################## -""" - -joined_reads = """@MISEQ03:64:000000000-A2H3D:1:1101:14358:1530 1:N:0:TCCACAGGAGT -TNCAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAATCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGAAATGCGTAGATATAGGAAGGAACACCAGTGGCGAAGGCGACCACCTGGACTGATACTGACACTGAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGAAACCCTTGTAGTCCGT -+ -?#5CCE5AEEHHHHHHHHHHHHHHHHHFFFFHHHHHHEEADEEEEEEEEEEEEEEEEEEEEEEE?BEEEEEEEEEEEAEEEE0?A:?EFCAC==ECEEFFEFEEFBACEEDD=8CDDDEDFFFDFFHHHFHHFAFDHFCHHFHHHHHHEDCHHIHFECIIIIIHHHHGGDIHHGIHIIHFHHHHHIIIHHHEHHHHGFIIIIIIIIHFFCFFCBBDDDBDDB@@????? -@MISEQ03:64:000000000-A2H3D:1:1101:14206:1564 1:N:0:TCCACAGGAGT -TACGTAGGGTGCGAGCGTTAATCGGAATTACTGGGCGTAAAGCGTGCGCAGGCGGTTTTGTAAGTCAGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCGTTTGAAACTACAAGGCTAGAGTGTAGCAGAGGGGGGTAGAATTCCACGTGTAGCAGTGAAATGCGTAGAGATGTGGAGGAATACCAATGGCGAAGGCAGCCCCCTGGGTTAACACTGACGCTCATGCACGAAAGCGTGGGGAGCAAACAGGATTAGAAACCCCTGTAGTCCGT -+ -?????BB?DDDDDD@DDCEEFFH>EEFHHHHHHGHHHCEEFFDC5EECCCCCCDECEHF;?DFDDFHDDBBDF?CFDCCFEAA@?:;EEEEEEEECBA,BBE?EEAAECA0:?C?:??A:8*:00?0**:8:DDECDD0.?:????:,:?EEEEEE??44BEEEEEDDBD=EEB==FFFDFDFD?FFEE:EEFFFDFFECCDHHHHEHHHHHHHFBHHHDCGBHF@HFFDEHFF@HHHHHHHHHHHFFHHHHHFFFFFC@?DDDBDDB@@????? -@MISEQ03:64:000000000-A2H3D:1:1101:14943:1619 1:N:0:TCCACAGGAGT -TACAGAGGGTGCAAGCGTTAATCGGAATTACTGGGCGTAAAGCGCGCGTAGGTGGTTTGTTAAGTTGGATGTGAAAGCCCCGGGCTCAACCTGGGAACTGCATTCAAAACTGACAAGCTAGAGTATGGTAGAGGGTGGTGGAATTTCCTGTGTAGCGGTGAAATGCGTAGATATAGGAAGGAACACCAGTGGCGAAGGCGACCACCTGGACTGATACTGACACTGAGGTGCGAAAGCGTGGGGAGCAAACAGGATTAGATACCCCTGTAGTCCGT -+ -?AAAABBADDDEDEDDGGGGGGIIHHHIIIIIIIHHHCCHHFFEFHHHDCDH5CFHIIHIIIIHHHHHHHHHHHHHHHHHHHGGGEGGGGDDEGEGGGGGGGGGGGGGGEEEGCCGGGGGGEGCEEEECEAECGFEEFEACEEGGGEEEFECE>FFFEFF*?EED;?8AEE08*A?A:?EA;?EEEEE??:CBBE?EEEFEEE?BCE?;CE?=EDEE=EECEFE?C0DD8D4C?CEHDGDDCDE5CCEACFHHHHHHHHFFHHHHHHHHFHHFHHHHHHDEBFEEE@DEEEEEEEEEEEEEEBBCBECEEEEEEEEEEEEEEECACCEEEEEEA00E?EEEBAEEEE?>?CEDDC?B?A:EDEEDEDEFFBFFFDFD@DEEEFHHDDD+HDDECDDEDGFBHHFHFFHHHGCFGEEEEGHHFHHHHHHHHHHHEFEHHGDHHECFCFHFFFFFFC=CDHAEFHFGHHFHHHHHHHHHFHHFHFFHHHHHGBEEAD;DGGGGEGGGCGCEEEGEGGGCEA>>CEDGDGE:C:CGGG:AC??EEA8C::AECEGEGCCECEEGGGGGEBCECE@CEFEDFEFFFFFFFBF@HHHHHHHHHHHHDEHEHHHHFDHIIIHIFHF=IHFHIHIHHGFIHHHHEHFHEHHHHHIIHHHIIIHFHHHFFFFFEDDDDDDDDB@@????? -@MISEQ03:64:000000000-A2H3D:1:1101:11781:2223 1:N:0:TCCACAGGAGT -TACGTAGGGCGCAAGCGTTATCCGGAATTATTGGGCGTAAAGAGCTCGTAGGCGGTTTGTCGCGTCTGCCGTGAAAGTCCGGGGCTCAACTCCGGATCTGCGGTGGGTACGGGCAGACTAGAGTGATGTAGGGGAGATTGGAATTCCTGGTGTAGCGGTGAAATGCGCAGATATCAGGAGGAACACCGATGGCGAAGGCAGGTCTCTGGGCATTAACTGACGCTGAGGAGCGAAAGCATGGGGAGCGAACAGGATTAGATACCCCAGTAGTCCGT -+ -???A?BB?DDDDDDDDEEECFFHHHHHIHHHIIIHHHECEHFCFHGGH>CFEFEHHHHHFFDFHCDEFFHHEBFFFF?BBEEEEEEEFFFBEEEEAEDEFEDD.?EA4ACEDDDECEFFFFEF:*::?ACCFFD8DCH5AECFHHHFHHHHHHHHHHHGFHHCFHHHHHEEEDEDEED@EEEEEEEEEEEEEEEEE?;BEEE?EEEEEE?*?CA?EE:EA?'8C*:1?CEEECAAECA:CEEFFECEEEEEEEBEFFEEEEA??DDB?FFEHHFHEEHFFHDDCCC5*5+DHHFA5FA5-HHHHHGFAGHHHHHHHEHFHEEHHHHHHHFGC>FHHHHHFFFFFC5