[med-svn] [seqan] 10/14: Revert "Imported Upstream version 2.0.1+dfsg"
Andreas Tille
tille at debian.org
Tue Jul 26 07:29:23 UTC 2016
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository seqan.
commit e2701b480d832202b22659ceb73d9a010a397839
Author: Andreas Tille <tille at debian.org>
Date: Tue Jul 26 09:28:49 2016 +0200
Revert "Imported Upstream version 2.0.1+dfsg"
This reverts commit 3e7c7b0696ee4a732ef70459da34cc9fdf057d59.
---
CHANGELOG.rst | 82 -
apps/alf/CMakeLists.txt | 2 +-
apps/bs_tools/CMakeLists.txt | 2 +-
apps/bs_tools/tests/run_tests.py | 31 +-
apps/dfi/CMakeLists.txt | 2 +-
apps/fiona/CMakeLists.txt | 2 +-
apps/fx_tools/CMakeLists.txt | 2 +-
apps/fx_tools/fx_bam_coverage.cpp | 34 +-
apps/gustaf/CMakeLists.txt | 2 +-
apps/insegt/CMakeLists.txt | 2 +-
apps/mason2/CMakeLists.txt | 2 +-
apps/mason2/mason_simulator.cpp | 83 +-
apps/mason2/simulate_illumina.cpp | 14 +-
apps/mason2/simulate_sanger.cpp | 14 +-
apps/mason2/tests/simulator.out1.sam | 52 +-
apps/mason2/tests/simulator.out2.sam | 100 +-
apps/mason2/tests/simulator.out4.sam | 26 +-
apps/mason2/tests/simulator.out7.sam | 50 +-
apps/mason2/tests/simulator.out8.sam | 1220 +++++++--------
apps/micro_razers/CMakeLists.txt | 2 +-
apps/ngs_roi/CMakeLists.txt | 2 +-
apps/pair_align/CMakeLists.txt | 8 +-
apps/param_chooser/CMakeLists.txt | 2 +-
apps/rabema/CMakeLists.txt | 2 +-
apps/rabema/curve_smoothing.h | 2 +-
apps/rabema/rabema_build_gold_standard.cpp | 2 +-
apps/razers/CMakeLists.txt | 2 +-
apps/razers2/CMakeLists.txt | 2 +-
apps/razers2/outputFormat.h | 4 +-
apps/razers3/CMakeLists.txt | 2 +-
apps/razers3/README | 82 +-
apps/rep_sep/CMakeLists.txt | 2 +-
apps/sak/CMakeLists.txt | 2 +-
apps/sam2matrix/CMakeLists.txt | 2 +-
apps/samcat/CMakeLists.txt | 2 +-
apps/searchjoin/CMakeLists.txt | 2 +-
apps/seqan_flexbar/CMakeLists.txt | 2 +-
apps/seqan_tcoffee/CMakeLists.txt | 2 +-
apps/seqan_tcoffee/tests/1aab.i.fasta | 110 +-
apps/seqan_tcoffee/tests/1ad2.i.fasta | 110 +-
apps/seqan_tcoffee/tests/2trx.i.fasta | 110 +-
apps/seqcons/CMakeLists.txt | 2 +-
apps/seqcons2/CMakeLists.txt | 2 +-
apps/sgip/CMakeLists.txt | 2 +-
apps/snp_store/CMakeLists.txt | 2 +-
apps/splazers/CMakeLists.txt | 7 +-
apps/splazers/razers_spliced.h | 4 +-
apps/stellar/CMakeLists.txt | 2 +-
apps/stellar/stellar.cpp | 7 +-
apps/tree_recon/CMakeLists.txt | 2 +-
apps/yara/CMakeLists.txt | 8 +-
apps/yara/bits_context.h | 4 +-
apps/yara/mapper.cpp | 11 +-
apps/yara/misc_options.h | 2 +-
apps/yara/tests/gold/adeno-reads_1.t1.sam | 2 +-
demos/{dox => }/align/align.cpp | 0
demos/{dox => }/align/align.cpp.stdout | 0
demos/align/compute_alignment_stats.cpp | 66 +
demos/align/compute_alignment_stats.cpp.stdout | 50 +
demos/{dox => }/align/gaps_example.cpp | 0
demos/{dox => }/align/gaps_example.cpp.stdout | 0
demos/{dox => }/align/global_alignment_banded.cpp | 0
.../align/global_alignment_banded.cpp.stdout | 0
.../{dox => }/align/global_alignment_unbanded.cpp | 0
.../align/global_alignment_unbanded.cpp.stdout | 0
demos/{dox => }/align/integrate_align.cpp | 0
demos/{dox => }/align/integrate_align.cpp.stdout | 0
demos/{dox => }/align_extend/extend_alignment.cpp | 0
.../align_extend/extend_alignment.cpp.stdout | 0
demos/align_gaps_clipping.cpp | 74 +
.../align_profile/profile_seq_frac_score.cpp | 0
.../{dox => }/align_profile/profile_seq_score.cpp | 0
demos/{dox => }/align_split/split_alignment.cpp | 0
.../align_split/split_alignment.cpp.stdout | 0
demos/alignment.cpp | 51 +
demos/alignment_local.cpp | 91 ++
demos/allocator.cpp | 28 +
demos/{unassigned_or_unused => }/alphabet.cpp | 0
.../annotation_converter.cpp | 0
demos/{unassigned_or_unused => }/arg_align.README | 0
demos/{unassigned_or_unused => }/arg_align.cpp | 0
demos/{dox => }/arg_parse/argument_parser.cpp | 0
demos/{dox => }/bam_io/bam_file_in.cpp | 0
demos/bam_io/bam_tags_dict.cpp | 36 +
demos/{dox => }/bam_io/bam_tags_dict.cpp.stdout | 0
demos/bam_library_size.cpp | 271 ++++
.../bam_print_alignments.cpp | 0
demos/{unassigned_or_unused => }/bamutil.cpp | 0
demos/basic/enable_if.cpp | 96 ++
demos/{dox => }/basic/metaprogramming_control.cpp | 0
demos/{dox => }/basic/metaprogramming_logic.cpp | 0
demos/{dox => }/basic/metaprogramming_math.cpp | 0
demos/{dox => }/basic/metaprogramming_switch.cpp | 0
demos/{dox => }/basic/simple_type_construction.cpp | 0
.../bed_stream_read.cpp} | 0
demos/benchmark_stream.cpp | 422 +++++
.../benchmark_stream_write.cpp | 0
demos/{dox => }/consensus/consensus_alignment.cpp | 0
.../consensus/consensus_alignment.cpp.stdout | 0
demos/{unassigned_or_unused => }/cuda/count.cu | 0
demos/{unassigned_or_unused => }/cuda/hello.cu | 0
demos/{unassigned_or_unused => }/cuda/mmap.cu | 0
demos/{dox/modifier => }/cyclic_shape.cpp | 0
demos/{dox/modifier => }/cyclic_shape.cpp.stdout | 0
demos/{dox/modifier => }/cyclic_shape_snippets.cpp | 0
demos/dox/align/compute_alignment_stats.cpp | 65 -
demos/dox/align/compute_alignment_stats.cpp.stdout | 52 -
demos/dox/bam_io/bam_tags_dict.cpp | 36 -
demos/dox/basic/enable_if.cpp | 96 --
.../graph_algorithms/all_pairs_shortest_path.cpp | 43 -
.../graph_algorithms/bellman_ford_algorithm.cpp | 46 -
.../dox/graph_algorithms/breadth_first_search.cpp | 52 -
demos/dox/graph_algorithms/dag_shortest_path.cpp | 43 -
demos/dox/graph_algorithms/depth_first_search.cpp | 50 -
demos/dox/graph_algorithms/dijkstra.cpp | 71 -
.../graph_algorithms/floyd_warshall_algorithm.cpp | 42 -
.../graph_algorithms/ford_fulkerson_algorithm.cpp | 40 -
demos/dox/graph_algorithms/kruskals_algorithm.cpp | 48 -
demos/dox/graph_algorithms/prims_algorithm.cpp | 46 -
.../strongly_connected_components.cpp | 41 -
demos/dox/graph_algorithms/topological_sort.cpp | 42 -
demos/dox/graph_algorithms/transitive_closure.cpp | 34 -
demos/dox/index/length_countSequences.cpp | 26 -
demos/dox/index/open_save.cpp | 27 -
demos/dox/parallel/queue_example.cpp | 30 -
demos/dox/random/random.cpp | 39 -
demos/dox/seq_io/fai_index_example.cpp | 48 -
demos/dox/sequence/segment.cpp | 120 --
demos/dox/stream/lexical_cast.cpp | 53 -
demos/{unassigned_or_unused => }/ecoln.out | 0
demos/{unassigned_or_unused => }/file_format.cpp | 0
.../{unassigned_or_unused => }/file_readwrite.cpp | 0
demos/{unassigned_or_unused => }/file_speed.cpp | 0
demos/{unassigned_or_unused => }/filter_sam.cpp | 0
demos/{dox => }/find/finder_aho_corasick.cpp | 0
demos/{dox => }/find/finder_index.cpp | 0
demos/{dox => }/find/finder_index.cpp.stdout | 0
demos/{dox => }/find/finder_online.cpp | 0
demos/{dox => }/find/finder_online.cpp.stdout | 0
demos/find_approx.cpp | 45 +
demos/find_exact.cpp | 35 +
demos/{unassigned_or_unused => }/find_wild.cpp | 0
demos/{unassigned_or_unused => }/gff2gtf.cpp | 0
.../gff_stream_read.cpp} | 0
.../graph_types => graph}/graph_algo_dijkstra.cpp | 0
.../graph_algo_dijkstra.cpp.stdout | 0
demos/graph_algorithms/all_pairs_shortest_path.cpp | 44 +
.../all_pairs_shortest_path.cpp.stdout | 0
demos/graph_algorithms/bellman_ford_algorithm.cpp | 47 +
.../bellman_ford_algorithm.cpp.stdout | 0
demos/graph_algorithms/breadth_first_search.cpp | 53 +
.../breadth_first_search.cpp.stdout | 0
demos/graph_algorithms/dag_shortest_path.cpp | 44 +
.../graph_algorithms/dag_shortest_path.cpp.stdout | 0
demos/graph_algorithms/depth_first_search.cpp | 51 +
.../graph_algorithms/depth_first_search.cpp.stdout | 0
demos/graph_algorithms/dijkstra.cpp | 72 +
.../{dox => }/graph_algorithms/dijkstra.cpp.stdout | 0
.../graph_algorithms/floyd_warshall_algorithm.cpp | 43 +
.../floyd_warshall_algorithm.cpp.stdout | 0
.../graph_algorithms/ford_fulkerson_algorithm.cpp | 41 +
.../ford_fulkerson_algorithm.cpp.stdout | 0
.../heaviest_increasing_subsequence.cpp | 0
demos/graph_algorithms/kruskals_algorithm.cpp | 49 +
.../graph_algorithms/kruskals_algorithm.cpp.stdout | 0
.../longest_common_subsequence.cpp | 0
.../longest_increasing_subsequence.cpp | 0
demos/graph_algorithms/prims_algorithm.cpp | 47 +
.../graph_algorithms/prims_algorithm.cpp.stdout | 0
.../strongly_connected_components.cpp | 42 +
.../strongly_connected_components.cpp.stdout | 0
demos/graph_algorithms/topological_sort.cpp | 43 +
.../graph_algorithms/topological_sort.cpp.stdout | 0
demos/graph_algorithms/transitive_closure.cpp | 35 +
.../graph_algorithms/transitive_closure.cpp.stdout | 0
demos/{dox => }/graph_align/graph_align.cpp | 0
demos/graph_hmm.cpp | 98 ++
demos/graph_hmm_silent.cpp | 118 ++
demos/howto/align_gaps_clipping.cpp | 72 -
demos/howto/scores/init_score.cpp | 83 +-
demos/howto/scores/init_score.cpp.stdout | 22 -
demos/howto/scores/load_score.cpp | 11 +-
demos/howto/scores/load_score.cpp.stdout | 6 -
...x_textAt_indexText_saAt_indexRequire.cpp.stdout | 0
demos/{dox => }/index/find_repeats.cpp | 0
.../index_begin_atEnd_representative.cpp} | 0
.../index_begin_atEnd_representative.cpp.stdout} | 0
.../index_begin_atEnd_representative_bottomUp.cpp} | 0
...egin_range_goDown_representative_repLength.cpp} | 0
.../counting.cpp => index/index_counting.cpp} | 0
.../index_counting.cpp.stdout} | 0
.../index/finder.cpp => index/index_finder.cpp} | 0
.../index_finder.cpp.stdout} | 0
...getOccurrences_getFrequency_range_getFibre.cpp} | 0
...rrences_getFrequency_range_getFibre.cpp.stdout} | 0
.../iterator.cpp => index/index_iterator.cpp} | 0
.../index_iterator.cpp.stdout} | 0
.../index_iterator_short.cpp} | 0
.../index_iterator_short.cpp.stdout} | 0
demos/index/index_length_countSequences.cpp | 27 +
.../index_length_countSequences.cpp.stdout} | 0
.../{dox/index/mummy.cpp => index/index_mummy.cpp} | 0
.../index_mummy.cpp.stdout} | 0
demos/{dox/index/mums.cpp => index/index_mums.cpp} | 0
.../index_node_predicate.cpp} | 0
demos/index/index_open_save.cpp | 28 +
.../index_open_save.cpp.stdout} | 0
demos/index/index_qgram.cpp | 16 +
.../index_sufarray.cpp | 0
.../index_sufarray.cpp.stdout} | 0
.../index_supermaxrepeats.cpp} | 0
.../index_textAt_indexText_saAt_indexRequire.cpp} | 0
..._textAt_indexText_saAt_indexRequire.cpp.stdout} | 0
demos/{dox => }/index/ref.fa | 0
.../index/UNUSED_shape.cpp => index/shape.cpp} | 0
.../UNUSED_shape_hash.cpp => index/shape_hash.cpp} | 0
demos/{dox => }/index/shape_hash_init.cpp | 0
.../shape_hash_next.cpp} | 0
demos/index_counting.cpp | 36 +
demos/{unassigned_or_unused => }/index_find.cpp | 0
.../index_find_stringset.cpp | 0
demos/{unassigned_or_unused => }/index_lcp.cpp | 0
.../index/maxrepeats.cpp => index_maxrepeats.cpp} | 0
demos/{unassigned_or_unused => }/index_mums.cpp | 0
.../index_node_predicate.cpp | 0
.../index_qgram_counts.cpp | 0
.../{dox/index/sufarray.cpp => index_sufarray.cpp} | 0
.../index_supermaxrepeats.cpp | 0
demos/input_output/example.fa | 4 +
demos/input_output/seqfile_reader.cpp | 27 +
demos/input_output/seqfile_reader.cpp.stdout | 2 +
.../simple_rna_seq => }/interval_tree.cpp | 0
demos/{unassigned_or_unused => }/iterator.cpp | 0
demos/{unassigned_or_unused => }/knime_node.cpp | 0
demos/{unassigned_or_unused => }/lagan1.fasta | 0
demos/{unassigned_or_unused => }/lagan2.fasta | 0
demos/{dox => }/misc/enumerate_strings.cpp | 0
demos/{dox => }/misc/enumerate_strings.cpp.stdout | 0
demos/{dox => }/misc/get_terminal_size.cpp | 0
demos/{dox => }/misc/interval_tree_example.cpp | 0
demos/{dox => }/misc/name_store_cache.cpp | 0
demos/{dox => }/misc/name_store_cache.cpp.stdout | 0
demos/{dox => }/modifier/modified_string.cpp | 0
.../{dox => }/modifier/modified_string.cpp.stdout | 0
.../modifier/modified_string_mod_view.cpp | 0
.../modifier/modified_string_mod_view.cpp.stdout | 0
.../{dox => }/modifier/modified_string_nested.cpp | 0
.../modifier/modified_string_nested.cpp.stdout | 0
.../modifier_modreverse.cpp | 0
.../modifier_modview.cpp | 0
.../{unassigned_or_unused => }/modifier_nested.cpp | 0
demos/parallel/queue_example.cpp | 30 +
demos/{dox => }/parallel/queue_example.cpp.stdout | 0
demos/{dox => }/parallel/splitter_example.cpp | 0
.../{dox => }/parallel/splitter_example.cpp.stdout | 0
.../parse_lm_stellar.cpp | 0
demos/{dox => }/pipe/pool_sorter.cpp | 0
demos/random/random.cpp | 42 +
.../{unassigned_or_unused => }/rooted_iterator.cpp | 0
demos/sam2svg.cpp | 222 +++
demos/{unassigned_or_unused => }/sample_seqs.cpp | 0
demos/{dox => }/score/score.cpp | 0
demos/{dox => }/score/score.cpp.stdout | 0
demos/{unassigned_or_unused => }/seeds.cpp | 0
demos/{dox => }/seeds/seeds_add_seed.cpp | 0
demos/{dox => }/seeds/seeds_chaining.cpp | 0
demos/{dox => }/seeds/seeds_chaining.cpp.stdout | 0
demos/{dox => }/seeds/seeds_extension.cpp | 0
demos/{dox => }/seeds/seeds_extension.cpp.stdout | 0
.../segmentalignment.cpp | 0
demos/{dox => }/seq_io/example.fa | 0
demos/{dox => }/seq_io/example.fa.fai | 0
demos/seq_io/fai_index_example.cpp | 49 +
.../{dox => }/seq_io/fai_index_example.cpp.stdout | 0
demos/seq_io/sequence_stream_read.cpp | 68 +
demos/seq_io/sequence_stream_read.cpp.stdout | 1 +
demos/seq_io/sequence_stream_write.cpp | 17 +
.../UNUSED_infix.cpp => sequence/infix.cpp} | 0
.../UNUSED_prefix.cpp => sequence/prefix.cpp} | 0
demos/sequence/segment.cpp | 98 ++
demos/{dox => }/sequence/string.cpp | 0
demos/{dox => }/sequence/string2.cpp | 0
demos/{dox => }/sequence/string2.cpp.stdout | 0
demos/{dox => }/sequence/stringset.cpp | 0
demos/{dox => }/sequence/stringset.cpp.stdout | 0
.../UNUSED_suffix.cpp => sequence/suffix.cpp} | 0
demos/{unassigned_or_unused => }/sequence_1.fa | 0
demos/{unassigned_or_unused => }/sequence_2.fa | 0
.../{unassigned_or_unused => }/sequence_length.cpp | 0
.../soft_to_hard_masking.cpp | 0
demos/{dox => }/statistics/background.fa | 0
demos/{dox => }/statistics/build_markov_model.cpp | 0
demos/{dox => }/statistics/load_markov_model.cpp | 0
demos/{dox => }/statistics/zscore_example_mm.3 | 0
demos/{dox => }/statistics/zscore_human_mm.3 | 0
demos/{dox => }/store/store_example.cpp | 0
demos/stream/lexical_cast.cpp | 55 +
demos/{dox => }/stream/lexical_cast.cpp.stdout | 0
.../tutorial/a_first_example/basic_code.cpp.stdout | 1 -
.../a_first_example/basic_code_detailed.cpp.stdout | 1 -
.../a_first_example/code_encapsulation.cpp.stdout | 1 -
.../a_first_example/final_result.cpp.stdout | 10 -
.../tutorial/a_first_example/solution_1.cpp.stdout | 1 -
.../tutorial/a_first_example/solution_2.cpp.stdout | 1 -
.../tutorial/a_first_example/solution_3.cpp.stdout | 1 -
.../tutorial/a_first_example/solution_4.cpp.stdout | 1 -
.../tutorial/a_first_example/solution_5.cpp.stdout | 3 -
.../tutorial/a_first_example/solution_6.cpp.stdout | 10 -
.../alignment_representation/align.cpp.stdout | 42 -
.../align_assignment1.cpp.stdout | 1 -
.../alignment_representation/graph.cpp.stdout | 11 -
.../graph_assignment1.cpp.stdout | 10 -
demos/tutorial/alignments/CMakeLists.txt | 5 +
.../align.cpp => alignments/alignment2_align.cpp} | 0
.../alignment_align_assignment1.cpp} | 0
.../alignment_banded.cpp | 0
demos/tutorial/alignments/alignment_example.png | Bin 0 -> 8633 bytes
demos/tutorial/alignments/alignment_gaps.cpp | 58 +
.../alignment_global_assignment1.cpp | 0
.../alignment_global_assignment2.cpp | 0
.../alignment_global_assignment3.cpp | 0
.../alignment_global_assignment4_part1.cpp | 40 +
.../alignment_global_assignment4_part2.cpp | 50 +
.../alignment_global_overlap.cpp | 0
.../alignment_global_specialised.cpp | 0
.../alignment_global_standard.cpp | 0
.../alignments/alignment_local_standard.cpp | 30 +
.../alignments/alignment_local_waterman_eggert.cpp | 32 +
.../msa.cpp => alignments/alignment_msa.cpp} | 0
.../alignment_msa.cpp.stdout} | 0
.../alignment_msa_assignment1.cpp} | 0
.../alignment_msa_assignment1.cpp.stdout} | 0
.../alignment_msa_consensus.cpp} | 0
.../alignment_msa_consensus.cpp.stdout} | 0
.../alignments/alignment_pairwise_global.cpp | 55 +
.../alignments/alignment_pairwise_global2.cpp | 45 +
.../alignment_pairwise_global_assignment1.cpp | 51 +
.../alignment_pairwise_global_assignment2.cpp | 30 +
.../alignment_pairwise_local.cpp} | 0
.../alignment_pairwise_local_assignment1.cpp} | 0
.../alignment_representation_ag.cpp} | 0
.../alignment_representation_ag_assignment1.cpp} | 0
.../pairwise_sequence_alignment_assignment5.cpp | 136 ++
...irwise_sequence_alignment_assignment5_step1.cpp | 32 +
...irwise_sequence_alignment_assignment5_step2.cpp | 53 +
...irwise_sequence_alignment_assignment5_step3.cpp | 68 +
...irwise_sequence_alignment_assignment5_step4.cpp | 89 ++
...irwise_sequence_alignment_assignment5_step5.cpp | 101 ++
...irwise_sequence_alignment_assignment5_step6.cpp | 124 ++
.../alphabet_assignment_1_solution.cpp.stdout | Bin 183 -> 0 bytes
.../annotation_store/assignment_1_hint.cpp | 22 +
.../annotation_store/assignment_1_solution.cpp | 26 +
.../annotation_store/assignment_2_solution.cpp | 40 +
.../annotation_store/assignment_3_solution.cpp | 28 +
.../annotation_store/assignment_4_solution.cpp | 50 +
.../assignment_annotations.gtf | 0
.../{sam_and_bam_io => bam_io}/example.sam | 0
demos/tutorial/bam_io/example1.cpp | 27 +
demos/tutorial/bam_io/example2.cpp | 21 +
demos/tutorial/bam_io/example3.cpp | 32 +
demos/tutorial/bam_io/example7.cpp | 100 ++
demos/tutorial/bam_io/solution1.cpp | 39 +
demos/tutorial/bam_io/solution2.cpp | 41 +
demos/tutorial/bam_io/solution3.cpp | 44 +
demos/tutorial/bam_io/solution4.cpp | 67 +
demos/tutorial/bam_io/solution5.cpp | 47 +
demos/tutorial/bam_io/solution6.cpp | 40 +
demos/tutorial/bam_io/solution7.cpp | 43 +
demos/tutorial/base_io/example1.cpp | 38 +
demos/tutorial/base_io/solution1.cpp | 57 +
demos/tutorial/base_io/solution2.cpp | 65 +
demos/tutorial/base_io/solution3.cpp | 73 +
demos/tutorial/basics/CMakeLists.txt | 5 +
demos/tutorial/basics/allocator.cpp.stdout | 6 -
demos/tutorial/basics/show_alphabets.cpp.stdout | 3 -
demos/tutorial/basics/strings.cpp.stdout | 28 -
demos/tutorial/{metafunctions => basics}/swap.cpp | 0
demos/tutorial/bed_io/example.bed | 5 -
demos/tutorial/bed_io/example1.cpp | 3 +-
demos/tutorial/bed_io/example1.cpp.stdout | 0
demos/tutorial/bed_io/solution1.cpp | 2 +-
demos/tutorial/bed_io/solution1.cpp.stdout | 0
demos/tutorial/bed_io/solution2.cpp | 2 +-
demos/tutorial/bed_io/solution2.cpp.stdout | 0
demos/tutorial/bed_io/solution3.cpp.stdout | 2 -
demos/tutorial/blast_io/read_assignment.cpp.stdout | 0
.../tutorial/blast_io/write_assignment.cpp.stdout | 0
.../with_positions.cpp | 0
.../with_positions.cpp.stdout | 0
.../without_positions.cpp | 0
.../without_positions.cpp.stdout | 0
.../custom_io}/NC_001405.fasta | 0
.../custom_io}/NC_001460.fasta | 0
.../custom_io}/blast_example.txt | 0
.../custom_io}/example1.cpp | 0
.../custom_io}/gff2_example.txt | 0
.../custom_io}/newick_example.txt | 0
.../custom_io}/parse_blastn.cpp | 0
.../custom_io}/parse_gff2.cpp | 0
.../custom_io}/reader_demo.cpp | 0
.../custom_io}/solution1.cpp | 0
.../custom_io}/solution2.cpp | 0
.../custom_io}/solution3.cpp | 0
.../custom_io}/solution4.cpp | 0
.../example_join.cpp | 0
.../example_journal_string_basic.cpp | 47 +
.../data_journaling/example_online_search.cpp | 307 ++++
.../example_online_search_assignment1_hint.cpp | 58 +
.../example_online_search_assignment2_hint.cpp | 27 +
.../example_online_search_assignment3_hint.cpp | 30 +
.../example_online_search_assignment4_hint.cpp | 28 +
.../solution_online_search_assignment1.cpp | 62 +
.../solution_online_search_assignment2.cpp | 147 ++
.../solution_online_search_assignment3.cpp | 222 +++
.../solution_online_search_assignment4.cpp | 294 ++++
.../solution_online_search_finder.cpp | 251 +++
.../file_io}/example1.cpp | 0
.../file_io}/mmap_string_example.cpp | 0
.../file_io}/solution1.cpp | 0
.../file_io}/solution2.cpp | 0
.../file_io}/solution3.cpp | 0
.../file_io}/stream_compression_formats.cpp | 0
demos/tutorial/file_io_overview/example.bam | Bin 365 -> 0 bytes
demos/tutorial/file_io_overview/example.sam | 9 -
demos/tutorial/file_io_overview/example1.cpp | 39 -
.../tutorial/file_io_overview/example1.cpp.stdout | 0
demos/tutorial/file_io_overview/solution1.cpp | 49 -
.../tutorial/file_io_overview/solution1.cpp.stdout | 0
demos/tutorial/file_io_overview/solution2.cpp | 56 -
.../tutorial/file_io_overview/solution2.cpp.stdout | 0
demos/tutorial/file_io_overview/solution3.cpp | 56 -
.../tutorial/file_io_overview/solution3.cpp.stdout | 9 -
demos/tutorial/find/CMakeLists.txt | 5 +
.../{pattern_matching => find}/find_approx.cpp | 0
.../assignment1.cpp => find/find_assignment1.cpp} | 0
.../find_assignment1_solution.cpp} | 0
.../assignment2.cpp => find/find_assignment2.cpp} | 0
.../find_assignment2_solution.cpp} | 0
.../assignment3.cpp => find/find_assignment3.cpp} | 0
.../find_assignment3_solution.cpp} | 0
.../{pattern_matching => find}/find_exact.cpp | 0
.../{pattern_matching => find}/find_index.cpp | 0
.../find_index_multiple.cpp | 0
.../basic_code.cpp | 0
.../basic_code_detailed.cpp | 0
.../code_encapsulation.cpp | 0
.../final_result.cpp | 0
.../solution_1.cpp | 0
.../solution_2.cpp | 0
.../solution_3.cpp | 0
.../solution_4.cpp | 0
.../solution_5.cpp | 0
.../solution_6.cpp | 0
.../fragment_store/access_aligned_reads.cpp | 63 -
.../fragment_store/access_aligned_reads.cpp.stdout | 20 -
.../fragment_store/access_aligned_reads2.cpp | 66 -
.../access_aligned_reads2.cpp.stdout | 20 -
.../fragment_store/display_aligned_reads.cpp | 34 -
.../display_aligned_reads.cpp.stdout | 37 -
.../template_subclassing.cpp.stdout | 5 -
.../genome_annotations/assignment_1_hint.cpp | 23 -
.../assignment_1_hint.cpp.stdout | 1 -
.../genome_annotations/assignment_1_solution.cpp | 29 -
.../assignment_1_solution.cpp.stdout | 2 -
.../genome_annotations/assignment_2_solution.cpp | 42 -
.../assignment_2_solution.cpp.stdout | 4 -
.../genome_annotations/assignment_3_solution.cpp | 29 -
.../assignment_3_solution.cpp.stdout | 6 -
.../genome_annotations/assignment_4_solution.cpp | 51 -
.../assignment_4_solution.cpp.stdout | 3 -
demos/tutorial/genome_annotations/base.cpp | 69 -
demos/tutorial/genome_annotations/base.cpp.stdout | 7 -
demos/tutorial/genome_annotations/example.gtf | 4 -
demos/tutorial/getting_started/CMakeLists.txt | 5 +
.../tutorial/getting_started/cmd_dir_build_src.png | Bin 0 -> 23654 bytes
.../eclipse_convert_to_cpp_project.png | Bin 0 -> 43575 bytes
.../getting_started/eclipse_hello_world.png | Bin 0 -> 4847 bytes
.../eclipse_import_build_project.png | Bin 0 -> 87749 bytes
.../eclipse_new_repository_location.png | Bin 0 -> 58449 bytes
.../eclipse_preference_build_on_launch.png | Bin 0 -> 54319 bytes
.../getting_started/eclipse_required_plugins.png | Bin 0 -> 113708 bytes
.../getting_started/eclipse_run_configurations.png | Bin 0 -> 56172 bytes
.../getting_started/mingw_installation.png | Bin 0 -> 45348 bytes
.../getting_started/repository_overview.pptx | Bin 0 -> 120459 bytes
.../getting_started/repository_overview/Folie1.jpg | Bin 0 -> 100850 bytes
.../getting_started/win_command_arguments.jpg | Bin 0 -> 127597 bytes
demos/tutorial/getting_started/win_new_file.jpg | Bin 0 -> 79513 bytes
demos/tutorial/getting_started/win_save_file.jpg | Bin 0 -> 74650 bytes
.../getting_started/win_solution_explorer.png | Bin 0 -> 39118 bytes
.../getting_started/win_start_up_project.png | Bin 0 -> 42641 bytes
demos/tutorial/getting_started/win_tortoise.png | Bin 0 -> 9686 bytes
demos/tutorial/getting_started/xcode/base_sdk.png | Bin 0 -> 292747 bytes
.../getting_started/xcode/base_sdk_selection.png | Bin 0 -> 19604 bytes
.../xcode/download-command-line-tools.png | Bin 0 -> 120139 bytes
.../getting_started/xcode/first_app_new.png | Bin 0 -> 308287 bytes
.../getting_started/xcode/first_app_old.png | Bin 0 -> 381585 bytes
.../getting_started/xcode/razers2_built.png | Bin 0 -> 220579 bytes
.../getting_started/xcode/razers2_selection.png | Bin 0 -> 24186 bytes
.../xcode/test_stream_selection.png | Bin 0 -> 18397 bytes
.../getting_started/xcode/xcode_startup.png | Bin 0 -> 127272 bytes
demos/tutorial/getting_started/xcode_first_app.jpg | Bin 0 -> 145898 bytes
.../getting_started/xcode_start_up_view.png | Bin 0 -> 81291 bytes
demos/tutorial/gff_and_gtf_io/example.gff | 23 -
demos/tutorial/gff_and_gtf_io/example1.cpp | 26 -
demos/tutorial/gff_and_gtf_io/example1.cpp.stdout | 23 -
demos/tutorial/gff_and_gtf_io/example2.cpp | 26 -
demos/tutorial/gff_and_gtf_io/example2.cpp.stdout | 23 -
demos/tutorial/gff_and_gtf_io/solution1.cpp | 39 -
demos/tutorial/gff_and_gtf_io/solution1.cpp.stdout | 23 -
demos/tutorial/gff_and_gtf_io/solution2.cpp | 51 -
demos/tutorial/gff_and_gtf_io/solution2.cpp.stdout | 2 -
demos/tutorial/gff_and_gtf_io/solution3.cpp.stdout | 2 -
demos/tutorial/gff_io/example1.cpp | 22 +
demos/tutorial/gff_io/example2.cpp | 22 +
demos/tutorial/gff_io/solution1.cpp | 36 +
demos/tutorial/gff_io/solution2.cpp | 48 +
.../{gff_and_gtf_io => gff_io}/solution3.cpp | 0
demos/tutorial/graph/CMakeLists.txt | 5 +
demos/tutorial/graph/graph_algo_scc.cpp | 1 +
demos/tutorial/graph/graph_algo_scc.cpp.stdout | 35 -
demos/tutorial/graph/graph_dijkstra.cpp.stdout | 10 -
demos/tutorial/graph/graph_hmm.cpp | 1 +
demos/tutorial/graph/graph_hmm.cpp.stdout | 26 -
demos/tutorial/graph/solution_1.cpp.stdout | 10 -
demos/tutorial/index/CMakeLists.txt | 5 +
.../index_assignment1.cpp | 0
.../index_assignment2.cpp | 0
.../index_assignment3.cpp} | 0
.../index_assignment4.cpp | 0
.../{q_gram_index => index}/index_assignment5.cpp | 0
.../{q_gram_index => index}/index_assignment6.cpp | 0
.../{index_iterators => index}/index_preorder.cpp | 0
.../index_property_maps.cpp | 0
.../{q_gram_index => index}/index_qgram.cpp | 0
.../{q_gram_index => index}/index_qgram_hash.cpp | 0
.../{index_iterators => index}/index_search.cpp | 0
.../{index_iterators => index}/index_search2.cpp | 0
.../indices_assignment_1.cpp} | 0
.../indices_assignment_2.cpp} | 0
.../iterator_solution1.cpp | 0
.../iterator_solution2.cpp | 0
.../UNUSED_index_assignment3.cpp.stdout | 16 -
.../index_iterators/index_assignment1.cpp.stdout | 111 --
.../index_iterators/index_assignment2.cpp.stdout | 3 -
.../index_iterators/index_assignment4.cpp.stdout | 14 -
.../index_iterators/index_preorder.cpp.stdout | 12 -
.../index_iterators/index_property_maps.cpp.stdout | 12 -
.../index_iterators/index_search.cpp.stdout | 5 -
.../index_iterators/index_search2.cpp.stdout | 2 -
.../index_iterators/iterator_solution1.cpp.stdout | 5 -
.../index_iterators/iterator_solution2.cpp.stdout | 16 -
demos/tutorial/indices/assignment_1.cpp.stdout | 0
demos/tutorial/indices/assignment_2.cpp.stdout | 2 -
.../iterators/assignment_1_solution.cpp.stdout | 1 -
.../iterators/assignment_2_solution.cpp.stdout | 1 -
.../iterators/assignment_3_workshop_solution.cpp | 82 -
.../assignment_3_workshop_solution.cpp.stdout | 34 -
.../iterators/assignment_4_workshop_solution.cpp | 91 --
.../assignment_4_workshop_solution.cpp.stdout | 48 -
...ion.cpp => iterators_assignment_1_solution.cpp} | 0
...ion.cpp => iterators_assignment_2_solution.cpp} | 0
.../iterators_assignment_3_workshop_solution.cpp | 82 +
.../iterators_assignment_4_workshop_solution.cpp | 91 ++
.../iterators/sequence_iterator_demo.cpp.stdout | 5 -
.../tutorial/journaled_set/example_join.cpp.stdout | 4 -
.../journaled_set/example_journal_string_basic.cpp | 47 -
.../example_journal_string_basic.cpp.stdout | 14 -
.../journaled_set/example_online_search.cpp | 309 ----
.../journaled_set/example_online_search.cpp.stdout | 9 -
.../example_online_search_assignment1_hint.cpp | 62 -
...ample_online_search_assignment1_hint.cpp.stdout | 1 -
demos/tutorial/journaled_set/sequences.fasta | 111 --
.../solution_online_search_assignment1.cpp | 62 -
.../solution_online_search_assignment1.cpp.stdout | 1 -
.../solution_online_search_assignment2.cpp | 148 --
.../solution_online_search_assignment2.cpp.stdout | 3 -
.../solution_online_search_assignment3.cpp | 223 ---
.../solution_online_search_assignment3.cpp.stdout | 9 -
.../solution_online_search_assignment4.cpp | 294 ----
.../solution_online_search_assignment4.cpp.stdout | 9 -
.../solution_online_search_finder.cpp | 252 ---
.../solution_online_search_finder.cpp.stdout | 9 -
demos/tutorial/metafunctions/swap.cpp.stdout | 2 -
demos/tutorial/mini_bowtie/mini_bowtie.cpp | 138 ++
demos/tutorial/mini_bowtie/nc_001454.fasta | 491 ++++++
demos/tutorial/mini_bowtie/reads_hamming.fasta | 20 +
demos/tutorial/mini_bowtie/solution1.cpp | 65 +
demos/tutorial/mini_bowtie/solution2.cpp | 82 +
demos/tutorial/mini_bowtie/solution3.cpp | 89 ++
demos/tutorial/mini_bowtie/solution4.cpp | 103 ++
demos/tutorial/mini_bowtie/solution5.cpp | 138 ++
.../modifiers/UNUSED_modcomplementdna.cpp.stdout | 2 -
demos/tutorial/modifiers/UNUSED_modview.cpp.stdout | 4 -
demos/tutorial/modifiers/UNUSED_nested.cpp.stdout | 5 -
demos/tutorial/modifiers/assignment1.cpp.stdout | 3 -
.../modifiers/assignment1_solution.cpp.stdout | 5 -
...lementdna.cpp => modifier_modcomplementdna.cpp} | 0
.../{modreverse.cpp => modifier_modreverse.cpp} | 0
.../{UNUSED_modview.cpp => modifier_modview.cpp} | 0
.../{UNUSED_nested.cpp => modifier_nested.cpp} | 0
demos/tutorial/modifiers/modreverse.cpp.stdout | 4 -
.../alignment_banded.cpp.stdout | 8 -
.../alignment_global_assignment1.cpp.stdout | 8 -
.../alignment_global_assignment2.cpp.stdout | 9 -
.../alignment_global_assignment3.cpp.stdout | 15 -
.../alignment_global_overlap.cpp.stdout | 9 -
.../alignment_global_specialised.cpp.stdout | 8 -
.../alignment_global_standard.cpp.stdout | 8 -
.../alignment_local.cpp.stdout | 27 -
.../alignment_local_assignment1.cpp.stdout | 21 -
.../pairwise_sequence_alignment/assignment5.cpp | 135 --
.../assignment5.cpp.stdout | 8 -
.../assignment5_step1.cpp | 28 -
.../assignment5_step1.cpp.stdout | 0
.../assignment5_step2.cpp | 51 -
.../assignment5_step2.cpp.stdout | 8 -
.../assignment5_step3.cpp | 67 -
.../assignment5_step3.cpp.stdout | 8 -
.../assignment5_step4.cpp | 88 --
.../assignment5_step4.cpp.stdout | 8 -
.../assignment5_step5.cpp | 100 --
.../assignment5_step5.cpp.stdout | 8 -
.../assignment5_step6.cpp | 123 --
.../assignment5_step6.cpp.stdout | 8 -
.../assignment2_solution.cpp | 43 -
.../assignment3_solution.cpp | 44 -
.../assignment4_solution.cpp | 114 --
.../assignment5_solution.cpp | 124 --
.../assignment6_solution.cpp | 106 --
.../parsing_command_line_arguments/example1.cpp | 39 -
.../example1_detailed.cpp | 52 -
.../example_with_modifyString.cpp | 103 --
.../example_with_own_function.cpp | 79 -
.../example_with_struct.cpp | 55 -
.../final_solution.cpp | 117 --
.../pattern_matching/assignment1.cpp.stdout | 0
.../assignment1_solution.cpp.stdout | 5 -
.../pattern_matching/assignment2.cpp.stdout | 12 -
.../assignment2_solution.cpp.stdout | 12 -
.../pattern_matching/assignment3.cpp.stdout | 2 -
.../assignment3_solution.cpp.stdout | 2 -
.../pattern_matching/find_approx.cpp.stdout | 8 -
.../pattern_matching/find_exact.cpp.stdout | 3 -
.../pattern_matching/find_index.cpp.stdout | 4 -
.../find_index_multiple.cpp.stdout | 4 -
.../q_gram_index/index_assignment5.cpp.stdout | 2 -
.../q_gram_index/index_assignment6.cpp.stdout | 20 -
demos/tutorial/q_gram_index/index_qgram.cpp.stdout | 2 -
.../q_gram_index/index_qgram_hash.cpp.stdout | 1 -
demos/tutorial/random/CMakeLists.txt | 5 +
demos/tutorial/random/random_examples.cpp | 55 +
demos/tutorial/randomness/examples.cpp | 55 -
demos/tutorial/randomness/examples.cpp.stdout | 8 -
demos/tutorial/read_mapping/CMakeLists.txt | 5 +
.../read_mapping}/minimapper.cpp | 0
demos/tutorial/read_mapping/nc_001454.fasta | 491 ++++++
demos/tutorial/read_mapping/reads_edit.fasta | 20 +
demos/tutorial/read_mapping/reads_hamming.fasta | 20 +
demos/tutorial/{realignment => realign}/reads.sam | 0
demos/tutorial/{realignment => realign}/ref.fa | 0
demos/tutorial/realign/step1.cpp | 32 +
.../{realignment => realign}/step1.cpp.stdout | 0
demos/tutorial/realign/step2.cpp | 36 +
.../{realignment => realign}/step2.cpp.stdout | 0
demos/tutorial/realignment/step1.cpp | 27 -
demos/tutorial/realignment/step2.cpp | 31 -
demos/tutorial/rnaseq/CMakeLists.txt | 13 +
demos/tutorial/rnaseq/genequant_assignment1.cpp | 73 +
demos/tutorial/rnaseq/genequant_assignment2.cpp | 121 ++
demos/tutorial/rnaseq/genequant_assignment3.cpp | 155 ++
demos/tutorial/rnaseq/genequant_assignment4.cpp | 172 ++
demos/tutorial/rnaseq/genequant_assignment5.cpp | 198 +++
demos/tutorial/rnaseq/genequant_solution1.cpp | 95 ++
demos/tutorial/rnaseq/genequant_solution2.cpp | 131 ++
demos/tutorial/rnaseq/genequant_solution3.cpp | 148 ++
demos/tutorial/rnaseq/genequant_solution4.cpp | 180 +++
demos/tutorial/rnaseq/genequant_solution5.cpp | 229 +++
demos/tutorial/sam_and_bam_io/example.bam | Bin 365 -> 0 bytes
demos/tutorial/sam_and_bam_io/example.bam.bai | Bin 104 -> 0 bytes
demos/tutorial/sam_and_bam_io/example1.cpp | 29 -
demos/tutorial/sam_and_bam_io/example1.cpp.stdout | 9 -
demos/tutorial/sam_and_bam_io/example2.cpp | 23 -
demos/tutorial/sam_and_bam_io/example2.cpp.stdout | 2 -
demos/tutorial/sam_and_bam_io/example7.cpp | 82 -
demos/tutorial/sam_and_bam_io/example7.cpp.stdout | 3 -
demos/tutorial/sam_and_bam_io/solution1.cpp | 41 -
demos/tutorial/sam_and_bam_io/solution1.cpp.stdout | 9 -
demos/tutorial/sam_and_bam_io/solution2.cpp | 43 -
demos/tutorial/sam_and_bam_io/solution2.cpp.stdout | 1 -
demos/tutorial/sam_and_bam_io/solution3.cpp | 46 -
demos/tutorial/sam_and_bam_io/solution3.cpp.stdout | 1 -
demos/tutorial/seed_and_extend/example1.cpp.stdout | 16 -
demos/tutorial/seed_and_extend/example2.cpp.stdout | 6 -
demos/tutorial/seed_and_extend/example3.cpp.stdout | 6 -
demos/tutorial/seed_and_extend/example4.cpp | 2 +-
demos/tutorial/seed_and_extend/example4.cpp.stdout | 8 -
demos/tutorial/seed_and_extend/example5.cpp.stdout | 5 -
demos/tutorial/seed_and_extend/example6.cpp.stdout | 0
demos/tutorial/seed_and_extend/example7.cpp.stdout | 4 -
demos/tutorial/seed_and_extend/example8.cpp.stdout | 8 -
.../tutorial/seed_and_extend/solution1.cpp.stdout | 8 -
.../tutorial/seed_and_extend/solution2.cpp.stdout | 6 -
.../tutorial/seed_and_extend/solution3.cpp.stdout | 6 -
demos/tutorial/seed_and_extend/solution4.cpp | 3 +-
.../tutorial/seed_and_extend/solution4.cpp.stdout | 8 -
.../tutorial/seed_and_extend/solution5.cpp.stdout | 4 -
.../tutorial/seed_and_extend/solution6.cpp.stdout | 0
.../tutorial/seed_and_extend/solution7.cpp.stdout | 8 -
demos/tutorial/seq_io/example1.cpp | 15 +
demos/tutorial/seq_io/solution1.cpp | 21 +
demos/tutorial/seq_io/solution2.cpp | 36 +
demos/tutorial/seq_io/solution3.cpp | 37 +
demos/tutorial/seq_io/solution4.cpp | 38 +
.../sequence}/CMakeLists.txt | 0
.../sequence}/count_characters.cpp | 0
.../sequence}/count_generic_characters.cpp | 0
.../sequence}/replace_as.cpp | 0
.../sequence}/sequence_all_strings.cpp | 0
.../sequence}/sequence_iterator_demo.cpp | 0
demos/tutorial/sequence_io/example.fa | 6 -
demos/tutorial/sequence_io/example.fq | 12 -
demos/tutorial/sequence_io/example1.cpp | 16 -
demos/tutorial/sequence_io/example1.cpp.stdout | 1 -
demos/tutorial/sequence_io/solution1.cpp | 16 -
demos/tutorial/sequence_io/solution1.cpp.stdout | 1 -
demos/tutorial/sequence_io/solution2.cpp | 31 -
demos/tutorial/sequence_io/solution2.cpp.stdout | 1 -
demos/tutorial/sequence_io/solution3.cpp | 33 -
demos/tutorial/sequence_io/solution3.cpp.stdout | 3 -
demos/tutorial/sequence_io/solution4.cpp | 34 -
demos/tutorial/sequence_io/solution4.cpp.stdout | 3 -
demos/tutorial/sequences/assignment_1_solution.cpp | 47 -
.../sequences/assignment_1_solution.cpp.stdout | 3 -
demos/tutorial/sequences/assignment_2_solution.cpp | 86 -
.../sequences/assignment_2_solution.cpp.stdout | 20 -
demos/tutorial/sequences/assignment_3_solution.cpp | 22 -
.../sequences/assignment_3_solution.cpp.stdout | 2 -
.../sequences/assignment_4_solution.cpp.stdout | 4 -
demos/tutorial/sequences/assignment_5_solution.cpp | 42 -
.../sequences/assignment_5_solution.cpp.stdout | 3 -
...olution.cpp => lexical_assignment_solution.cpp} | 0
...tion.cpp => segments_assignment_2_solution.cpp} | 0
.../sequences/segments_assignment_hint.cpp | 38 +
.../sequences/segments_assignment_solution.cpp | 33 +
.../sequences/string_assignment_1_solution.cpp | 67 +
.../assignment_exact_generous_solution.cpp | 22 +-
.../assignment_exact_generous_solution.cpp.stdout | 4 -
.../sequences_in_depth/example_overflow.cpp | 19 -
.../sequences_in_depth/example_overflow.cpp.stdout | 2 -
demos/tutorial/simple_rna_seq/example.gtf | 12 -
demos/tutorial/simple_rna_seq/example.sam | 22 -
.../simple_rna_seq/genequant_assignment1.cpp | 34 -
.../genequant_assignment1.cpp.stdout | 0
.../simple_rna_seq/genequant_assignment2.cpp | 83 -
.../genequant_assignment2.cpp.stdout | 0
.../simple_rna_seq/genequant_assignment3.cpp | 116 --
.../genequant_assignment3.cpp.stdout | 0
.../simple_rna_seq/genequant_assignment4.cpp | 136 --
.../genequant_assignment4.cpp.stdout | 0
.../simple_rna_seq/genequant_assignment5.cpp | 163 --
.../genequant_assignment5.cpp.stdout | 0
.../simple_rna_seq/genequant_solution1.cpp | 55 -
.../simple_rna_seq/genequant_solution1.cpp.stdout | 2 -
.../simple_rna_seq/genequant_solution2.cpp | 92 --
.../simple_rna_seq/genequant_solution2.cpp.stdout | 2 -
.../simple_rna_seq/genequant_solution3.cpp | 109 --
.../simple_rna_seq/genequant_solution3.cpp.stdout | 2 -
.../simple_rna_seq/genequant_solution4.cpp | 143 --
.../simple_rna_seq/genequant_solution4.cpp.stdout | 2 -
.../simple_rna_seq/genequant_solution5.cpp | 191 ---
.../simple_rna_seq/genequant_solution5.cpp.stdout | 3 -
.../simple_rna_seq/interval_tree.cpp.stdout | 4 -
demos/tutorial/store/CMakeLists.txt | 5 +
.../{fragment_store/example.fa => store/ex1.fa} | 0
.../{fragment_store/example.sam => store/ex1.sam} | 0
.../tutorial/store/store_access_aligned_reads.cpp | 61 +
.../tutorial/store/store_access_aligned_reads2.cpp | 64 +
.../tutorial/store/store_diplay_aligned_reads.cpp | 28 +
.../string_sets/assignment_1_solution.cpp.stdout | 5 -
.../string_sets/assignment_2_solution.cpp.stdout | 2 -
.../string_sets/assignment_3_workshop_solution.cpp | 24 +-
.../assignment_3_workshop_solution.cpp.stdout | 48 -
.../assignment_3b_workshop_solution.cpp | 92 ++
.../string_sets/assignment_4_workshop_solution.cpp | 2 +-
.../assignment_4_workshop_solution.cpp.stdout | 54 -
demos/tutorial/vcf_io/example.vcf | 24 -
demos/tutorial/vcf_io/example1.cpp | 2 +-
demos/tutorial/vcf_io/example1.cpp.stdout | 0
demos/tutorial/vcf_io/solution1.cpp | 2 +-
demos/tutorial/vcf_io/solution1.cpp.stdout | 0
demos/tutorial/vcf_io/solution2.cpp | 2 +-
demos/tutorial/vcf_io/solution2.cpp.stdout | 0
demos/tutorial/vcf_io/solution3.cpp.stdout | 20 -
demos/unassigned_or_unused/bam_library_size.cpp | 268 ----
demos/unassigned_or_unused/benchmark_stream.cpp | 422 -----
demos/unassigned_or_unused/graph_hmm_silent.cpp | 117 --
demos/unassigned_or_unused/sam2svg.cpp | 222 ---
demos/{dox => }/vcf_io/example.vcf | 0
demos/vcf_io/vcf_stream_read.cpp | 33 +
demos/vcf_io/vcf_stream_read.cpp.stdout | 5 +
dox/pages/constraint_iterator.dox | 12 +-
dox/pages/index_count_children.dox | 2 +-
dox/pages/maxima_unique_matches.dox | 2 +-
dox/pages/maximal_repeats.dox | 6 +-
dox/pages/mummy.dox | 2 +-
dox/pages/suffix_array.dox | 2 +-
dox/pages/supermaximal_repeats.dox | 6 +-
include/seqan/align/align_base.h | 4 +-
include/seqan/align/alignment_operations.h | 4 +-
include/seqan/align/evaluate_alignment.h | 8 +-
include/seqan/align/gaps_anchor.h | 46 +-
include/seqan/align/gaps_base.h | 4 +-
include/seqan/align/global_alignment_unbanded.h | 8 +-
include/seqan/align_extend/align_extend.h | 4 +-
include/seqan/align_profile/score_profile_seq.h | 4 +-
include/seqan/align_split/align_split_interface.h | 4 +-
include/seqan/arg_parse/arg_parse_argument.h | 8 +-
include/seqan/arg_parse/argument_parser.h | 2 +-
include/seqan/arg_parse/tool_doc.h | 10 +-
include/seqan/bam_io/bam_file.h | 32 +-
include/seqan/bam_io/bam_index_bai.h | 63 +-
include/seqan/bam_io/bam_tags_dict.h | 4 +-
include/seqan/bam_io/cigar.h | 2 +-
include/seqan/bam_io/read_bam.h | 1 -
include/seqan/bam_io/write_bam.h | 9 +-
include/seqan/bam_io/write_sam.h | 4 -
include/seqan/basic/alphabet_residue.h | 10 +-
include/seqan/basic/alphabet_residue_tabs.h | 71 +-
include/seqan/basic/alphabet_simple_type.h | 2 +-
include/seqan/basic/basic_exception.h | 13 +-
include/seqan/basic/basic_stream.h | 30 +-
include/seqan/basic/concept_checking.h | 15 +-
include/seqan/basic/debug_test_system.h | 42 +-
include/seqan/basic/fundamental_tags.h | 28 +-
include/seqan/basic/iterator_adapt_std.h | 52 +-
include/seqan/basic/iterator_adaptor.h | 10 +-
include/seqan/basic/iterator_counting.h | 7 +-
include/seqan/basic/iterator_interface.h | 72 +-
include/seqan/basic/iterator_range.h | 0
include/seqan/basic/metaprogramming_control.h | 10 +-
include/seqan/basic/metaprogramming_enable_if.h | 8 +-
include/seqan/basic/metaprogramming_logic.h | 44 +-
include/seqan/basic/metaprogramming_math.h | 6 +-
.../seqan/consensus/consensus_aligner_interface.h | 4 +-
include/seqan/consensus/consensus_builder.h | 5 +-
include/seqan/find/find_ahocorasick.h | 2 +-
include/seqan/find/find_base.h | 8 +-
include/seqan/find/find_set_horspool.h | 2 -
include/seqan/gff_io/gff_io_base.h | 7 +-
.../graph_algorithms/all_pairs_shortest_path.h | 4 +-
include/seqan/graph_algorithms/bellman_ford.h | 4 +-
.../seqan/graph_algorithms/breadth_first_search.h | 4 +-
.../seqan/graph_algorithms/depth_first_search.h | 4 +-
include/seqan/graph_algorithms/dijkstra.h | 4 +-
include/seqan/graph_algorithms/floyd_warshall.h | 4 +-
include/seqan/graph_algorithms/ford_fulkerson.h | 4 +-
.../graph_algorithms/graph_algorithm_lis_his.h | 6 +-
include/seqan/graph_algorithms/kruskal.h | 4 +-
include/seqan/graph_algorithms/prim.h | 4 +-
.../graph_algorithms/single_source_shortest_path.h | 4 +-
.../strongly_connected_compnents.h | 4 +-
include/seqan/graph_algorithms/topological_sort.h | 4 +-
.../seqan/graph_algorithms/transitive_closure.h | 4 +-
include/seqan/graph_align/graph_impl_align.h | 2 +-
include/seqan/graph_types/graph_interface.h | 4 +-
include/seqan/index/index_base.h | 34 +-
include/seqan/index/index_esa_base.h | 4 +-
include/seqan/index/index_esa_stree.h | 22 +-
include/seqan/index/index_fm.h | 9 +-
include/seqan/index/index_fm_rank_dictionary_wt.h | 3 +-
include/seqan/index/index_qgram_openaddressing.h | 60 -
include/seqan/index/index_sa_qsort.h | 2 +-
include/seqan/index/index_shims.h | 4 +-
include/seqan/index/repeat_base.h | 2 +-
include/seqan/index/shape_base.h | 2 +-
include/seqan/index/shape_threshold.h | 0
include/seqan/misc/edit_environment.h | 4 +-
include/seqan/misc/interval_tree.h | 2 +-
include/seqan/misc/name_store_cache.h | 4 +-
include/seqan/misc/terminal.h | 2 +-
include/seqan/modifier/cyclic_shape.h | 14 +-
include/seqan/modifier/modifier_cyclic_shape.h | 6 +-
include/seqan/modifier/modifier_iterator.h | 87 +-
include/seqan/modifier/modifier_reverse.h | 23 +-
include/seqan/modifier/modifier_string.h | 67 +-
include/seqan/modifier/modifier_view.h | 89 +-
include/seqan/parallel/parallel_macros.h | 4 +-
include/seqan/parallel/parallel_queue.h | 4 +-
include/seqan/parallel/parallel_splitting.h | 6 +-
include/seqan/pipe/pool_sorter.h | 2 +-
include/seqan/platform.h | 9 -
include/seqan/platform/platform_windows.h | 7 -
include/seqan/random/ext_MersenneTwister.h | 0
include/seqan/random/random_base.h | 2 +-
include/seqan/realign/realign_base.h | 4 +-
.../reduced_aminoacid_murphy10_base.h | 2 +-
.../reduced_aminoacid_murphy10_tables.h | 8 +-
include/seqan/score/score_base.h | 4 +-
include/seqan/score/score_matrix_data.h | 757 +++++----
include/seqan/score/score_simple.h | 9 -
include/seqan/seeds/banded_chain_alignment_impl.h | 1 -
.../seqan/seeds/banded_chain_alignment_traceback.h | 7 -
include/seqan/seeds/seeds_global_chaining.h | 6 +-
include/seqan/seeds/seeds_seed_base.h | 6 +-
include/seqan/seeds/seeds_seed_set_base.h | 2 +-
include/seqan/seq_io/fai_index.h | 4 +-
include/seqan/seq_io/fasta_fastq.h | 17 +-
include/seqan/sequence/adapt_std_list.h | 9 -
include/seqan/sequence/adapt_std_string.h | 15 -
include/seqan/sequence/segment_base.h | 6 +-
include/seqan/sequence/segment_infix.h | 8 -
include/seqan/sequence/segment_prefix.h | 9 -
include/seqan/sequence/segment_suffix.h | 8 -
include/seqan/sequence/string_array.h | 16 -
include/seqan/sequence/string_base.h | 10 +-
include/seqan/sequence/string_set_base.h | 76 +-
include/seqan/sequence/string_set_concat_direct.h | 67 +-
include/seqan/sequence/string_set_owner.h | 15 -
include/seqan/statistics/statistics_markov_model.h | 4 +-
include/seqan/store/store_all.h | 4 +-
include/seqan/store/store_io.h | 43 -
include/seqan/store/store_io_gff.h | 30 +-
include/seqan/store/store_io_sam.h | 27 +
include/seqan/store/store_io_ucsc.h | 0
include/seqan/stream.h | 13 -
include/seqan/stream/buffered_stream.h | 19 +-
include/seqan/stream/file_stream.h | 5 +-
include/seqan/stream/formatted_file.h | 18 +-
include/seqan/stream/iostream_bgzf.h | 923 -----------
include/seqan/stream/iostream_bzip2.h | 302 ----
include/seqan/stream/iostream_bzip2_impl.h | 429 -----
include/seqan/stream/iostream_zip.h | 383 -----
include/seqan/stream/iostream_zip_impl.h | 386 -----
include/seqan/stream/iostream_zutil.h | 229 ---
include/seqan/stream/lexical_cast.h | 4 +-
include/seqan/stream/stream_base.h | 14 +-
include/seqan/stream/stream_compressor.h | 2 +-
include/seqan/stream/tokenization.h | 2 +-
include/seqan/stream/virtual_stream.h | 187 +--
include/seqan/stream/zipstream/bgzfstream.h | 969 ++++++++++++
include/seqan/stream/zipstream/bgzfstream_impl.h | 203 +++
include/seqan/stream/zipstream/bzip2stream.h | 305 ++++
include/seqan/stream/zipstream/bzip2stream_impl.h | 430 +++++
include/seqan/stream/zipstream/zipstream.h | 665 ++++++++
include/seqan/stream/zipstream/zipstream_impl.h | 675 ++++++++
include/seqan/stream/zipstream/zutil.h | 226 +++
include/seqan/translation/translation.h | 9 +-
include/seqan/ucsc_io/ucsc_file.h | 2 +-
include/seqan/vcf_io/vcf_io_context.h | 28 -
include/seqan/version.h | 2 +-
manual/requirements.txt | 3 +-
.../BuildManual/UsingTheSeqAnBuildSystem.rst | 8 +-
manual/source/HowTo/ClipAlignments.rst | 2 +-
manual/source/HowTo/GenerateSeqAnKnimeNodes.rst | 2 +-
manual/source/HowTo/UseSeqAnNodesInKnime.rst | 2 +-
.../source/HowTo/WorkWithCustomScoreMatrices.rst | 137 +-
manual/source/HowTo/knime_node_app.zip | Bin 0 -> 4697 bytes
manual/source/HowTo/workflow_plugin_dir.zip | Bin 808808 -> 5912 bytes
manual/source/Infrastructure/Documentation.rst | 10 -
manual/source/StyleGuide/Cpp.rst | 32 +-
manual/source/StyleGuide/DoxApiDocs.rst | 24 +-
manual/source/Tutorial.rst | 25 +-
manual/source/Tutorial/AFirstExample.rst | 563 -------
manual/source/Tutorial/AlignmentRepresentation.rst | 30 +-
manual/source/Tutorial/AnnotationStore.rst | 366 +++++
manual/source/Tutorial/BackgroundAndMotivation.rst | 149 +-
manual/source/Tutorial/BedIO.rst | 8 +-
manual/source/Tutorial/ConsensusAlignment.rst | 14 +-
manual/source/Tutorial/FileIOOverview.rst | 232 ---
manual/source/Tutorial/FirstStepsInSeqAn.rst | 562 +++++++
manual/source/Tutorial/FragmentStore.rst | 98 +-
manual/source/Tutorial/GenomeAnnotations.rst | 315 ----
manual/source/Tutorial/GettingStarted.rst | 2 +-
manual/source/Tutorial/GffAndGtfIO.rst | 214 ---
manual/source/Tutorial/GffGtfIO.rst | 243 +++
manual/source/Tutorial/IndexIterators.rst | 38 +-
manual/source/Tutorial/IndexQGram.rst | 217 +++
manual/source/Tutorial/IndexedFastaIO.rst | 10 +-
manual/source/Tutorial/Indices.rst | 12 +-
manual/source/Tutorial/InputOutputOverview.rst | 227 +++
manual/source/Tutorial/Iterators.rst | 10 +-
manual/source/Tutorial/JournalSet.rst | 668 ++++++++
manual/source/Tutorial/JournaledSet.rst | 655 --------
manual/source/Tutorial/Metafunctions.rst | 20 +-
manual/source/Tutorial/MiniBowtie.rst | 358 +++++
manual/source/Tutorial/Modifiers.rst | 8 +-
.../source/Tutorial/MultipleSequenceAlignment.rst | 20 +-
.../source/Tutorial/PairwiseSequenceAlignment.rst | 97 +-
.../Tutorial/ParsingCommandLineArguments.rst | 891 ++++++++++-
manual/source/Tutorial/PatternMatching.rst | 28 +-
manual/source/Tutorial/QgramIndex.rst | 217 ---
manual/source/Tutorial/Randomness.rst | 12 +-
manual/source/Tutorial/Realignment.rst | 8 +-
manual/source/Tutorial/SamAndBamIO.rst | 342 ----
manual/source/Tutorial/SamBamIO.rst | 332 ++++
manual/source/Tutorial/SequenceIO.rst | 54 +-
manual/source/Tutorial/Sequences.rst | 243 ++-
manual/source/Tutorial/SequencesInDepth.rst | 19 +-
manual/source/Tutorial/SimpleReadMapping.rst | 161 ++
manual/source/Tutorial/SimpleRnaSeq.rst | 64 +-
manual/source/Tutorial/StringSets.rst | 4 +-
...ericProgramming.rst => TemplateSubclassing.rst} | 0
manual/source/Tutorial/VcfIO.rst | 27 +-
manual/source/Tutorial/WritingTests.rst | 1 -
manual/source/conf.py | 33 +-
tests/align/test_evaluate_alignment.h | 6 +-
tests/bam_io/CMakeLists.txt | 4 +-
tests/bam_io/test_bam_file.h | 2 +-
tests/bam_io/test_bam_index.h | 45 +-
tests/bam_io/test_bam_io.cpp | 5 +-
tests/basic/test_basic_alphabet_residue.h | 31 +-
tests/find/test_find.cpp | 4 +-
tests/gff_io/example_with_comments.gff | 6 -
tests/gff_io/test_gff_io.cpp | 9 +-
tests/gff_io/test_gff_io.h | 60 -
tests/modifier/test_modifier.cpp | 3 +-
tests/modifier/test_modifier_string.h | 85 +-
tests/modifier/test_modifier_view.h | 2 +-
tests/parallel/test_parallel.cpp | 6 +-
tests/reduced_aminoacid/test_reduced_aminoacid.cpp | 3 +-
tests/reduced_aminoacid/test_reduced_aminoacid.h | 143 +-
tests/score/BLOSUM30 | 55 +-
tests/score/BLOSUM45 | 55 +-
tests/score/BLOSUM62 | 55 +-
tests/score/BLOSUM80 | 55 +-
tests/score/PAM120 | 55 +-
tests/score/PAM200 | 55 +-
tests/score/PAM250 | 55 +-
tests/score/PAM40 | 55 +-
tests/score/VTML200I | 55 +-
tests/seeds/test_align_banded_chain_impl.cpp | 26 -
tests/seq_io/test_sequence_file.h | 15 +-
tests/sequence/CMakeLists.txt | 4 -
tests/sequence/test_sequence.h | 6 +-
tests/sequence/test_string_set.h | 1651 +++++++++-----------
tests/sequence/test_stringset_v2.cpp | 47 -
tests/store/example.gff | 2 +-
util/cmake/CMakeFindJavaCommon.cmake | 40 -
util/cmake/FindJava.cmake | 228 ---
util/cmake/FindOpenMP.cmake | 9 +-
util/cmake/FindSeqAn.cmake | 14 +-
util/cmake/SeqAnBuildSystem.cmake | 27 +-
util/cmake/package.cmake | 2 +-
util/makefile_project/src/main.cpp | 11 +-
util/py_lib/seqan/auto_build.py | 2 +-
util/py_lib/seqan/dox/dox_parser.py | 24 +-
util/py_lib/seqan/dox/dox_tokens.py | 3 +-
util/py_lib/seqan/dox/proc_doc.py | 38 -
util/py_lib/seqan/dox/raw_doc.py | 35 -
util/py_lib/seqan/dox/test/test_dox_parser.py | 20 -
util/py_lib/seqan/dox/test/test_proc_doc.py | 25 -
util/py_lib/seqan/dox/test/test_raw_doc.py | 22 -
util/py_lib/seqan/dox/tpl/function.html | 9 +-
.../js/bootstrap-3.0.0.min.js | 6 +
.../bootstrap-multiselect/js/jquery-2.0.3.min.js | 6 +
.../tpl/lib/bootstrap-multiselect/js/prettify.js | 28 +
util/py_lib/seqan/dox/tpl/list.html | 2 +-
util/py_lib/seqan/dox/tpl/macro.html | 10 +-
util/py_lib/seqan/dox/tpl/sections.html | 81 +-
util/py_lib/seqan/dox/write_html.py | 3 +-
util/skel/test_template/test.h | 1 -
util/travis/linux-cibuild.cmake | 18 +-
1062 files changed, 22298 insertions(+), 19978 deletions(-)
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 42204ad..3715cc8 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -4,88 +4,6 @@ SeqAn Changelog
This file summarizes the changes to the SeqAn library and apps.
-Release 2.0.1
-~~~~~~~~~~~~~
-
-Minor release including several library bug-fixes as well as better documentation and infrastructure.
-All library modules are backward compatible with 2.0.0.
-For a complete list of changes visit `GitHub <https://github.com/seqan/seqan/pulls?q=is%3Apr+is%3Amerged++milestone%3A%22Release+2.0.1%22+>`_.
-
-Library Bug Fixes
-^^^^^^^^^^^^^^^^^
-
-- Basic:
- - Added AminoAcid symbol "O"
- - Disabled global exception handler by default
-
-- Sequence:
- - Added missing overloads for const Strings
- - Fixed and tested StringSet
- - Reworked STL containers adaption
- - Fixed several bugs in ModifiedStrings and ModifiedIterators
-
-- Stream:
- - Worked around I/O with std::string
- - Supported multi-stream gzip files produced by Illumina Casava
- - Fixed BgzfStream tell()
-
-- SeqIO:
- - Changed Raw file extension from .txt to .raw
-
-- BAM I/O:
- - Fixed BIN computation
- - Fixed a bug in jumpToOrphans()
- - Fixed internal concurrency problems
- - Fixed readBamHeader() to clear the BamHeader
- - Added assertions to writeRecord()
- - Added BamIndex::save() to save .bai files
-
-- Gff I/O:
- - Fixed parsing of comment lines
-
-- FragmentStore:
- - Fixed loading Gtf/Gff3 files
-
-- Index:
- - Fixed open() and save() for WT FMIndex
- - Added open() and save() for OpenAddressing QGramIndex
-
-- Seeds:
- - Fixed a bug in sparse chaining
- - Fixed a bug in banded chain alignment
-
-Documentation Updates
-^^^^^^^^^^^^^^^^^^^^^
-
-- Manual:
- - Fixed and improved several Tutorials and HowTos
- - Added version-aware links to the dox
-
-- Dox:
- - Added @datarace entity
- - Fixed broken links in "See Also" section
- - Fixed a problem with close button in the side pane
- - Documented class VirtualStream
-
-- Demos:
- - Restructured demos directory
- - Fixed several broken demos
-
-Infrastructure Updates
-^^^^^^^^^^^^^^^^^^^^^^
-
-- Platform Support:
- - Added support for GCC 4.9 and Clang 3.7
- - Preliminary support for Clang 3.8 with OpenMP
- - Preliminary support for Visual Studio 2015
- - Preliminary support for FreeBSD 10.2
-
-- Build System:
- - Tested all demos
- - Upgraged TravisCI builds to run on Docker
- - Fixed Java detection
-
-
Release 2.0.0
~~~~~~~~~~~~~
diff --git a/apps/alf/CMakeLists.txt b/apps/alf/CMakeLists.txt
index 73f8997..1471f97 100644
--- a/apps/alf/CMakeLists.txt
+++ b/apps/alf/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_alf)
message (STATUS "Configuring apps/alf")
-set (SEQAN_APP_VERSION "1.1.2")
+set (SEQAN_APP_VERSION "1.1.1")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/bs_tools/CMakeLists.txt b/apps/bs_tools/CMakeLists.txt
index 076872d..fc63fbe 100644
--- a/apps/bs_tools/CMakeLists.txt
+++ b/apps/bs_tools/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_bs_tools)
message (STATUS "Configuring apps/bs_tools")
-set (SEQAN_APP_VERSION "0.1.2")
+set (SEQAN_APP_VERSION "0.1.1")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/bs_tools/tests/run_tests.py b/apps/bs_tools/tests/run_tests.py
index 4c65bd8..64aa4c2 100644
--- a/apps/bs_tools/tests/run_tests.py
+++ b/apps/bs_tools/tests/run_tests.py
@@ -208,24 +208,19 @@ def main(source_base, binary_base):
# pe
# ============================================================
# 0
-
- if not sys.platform.startswith('freebsd'):
- conf = app_tests.TestConf(
- program=path_to_casbar,
- redir_stdout=ph.outFile('other.stdout'),
- args=['-nec', '-mc', str(6), '-msc', str(5), '-mpc', str(0.5), '-hes', str(0.005),
- '-o', ph.outFile('snps_pe_0.vcf'),
- '-b', ph.outFile('meths_pe_0.bed'),
- ph.inFile('hg18_chr21_3000.fa'),
- ph.inFile('reads_pe_N6000_0.CT_GA.verified.pos_so.sam')],
- to_diff=[(ph.inFile('snps_pe_0.vcf'),
- ph.outFile('snps_pe_0.vcf')),
- (ph.inFile('meths_pe_0.bed'),
- ph.outFile('meths_pe_0.bed'))])
- conf_list.append(conf)
- else:
- print "One test not executed on FreeBSD, because of lower math precision."
-
+ conf = app_tests.TestConf(
+ program=path_to_casbar,
+ redir_stdout=ph.outFile('other.stdout'),
+ args=['-nec', '-mc', str(6), '-msc', str(5), '-mpc', str(0.5), '-hes', str(0.005),
+ '-o', ph.outFile('snps_pe_0.vcf'),
+ '-b', ph.outFile('meths_pe_0.bed'),
+ ph.inFile('hg18_chr21_3000.fa'),
+ ph.inFile('reads_pe_N6000_0.CT_GA.verified.pos_so.sam')],
+ to_diff=[(ph.inFile('snps_pe_0.vcf'),
+ ph.outFile('snps_pe_0.vcf')),
+ (ph.inFile('meths_pe_0.bed'),
+ ph.outFile('meths_pe_0.bed'))])
+ conf_list.append(conf)
# ============================================================
# Execute the tests.
diff --git a/apps/dfi/CMakeLists.txt b/apps/dfi/CMakeLists.txt
index 12ceed5..a7a32d0 100644
--- a/apps/dfi/CMakeLists.txt
+++ b/apps/dfi/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_dfi)
message (STATUS "Configuring apps/dfi")
-set (SEQAN_APP_VERSION "2.1.2")
+set (SEQAN_APP_VERSION "2.1.1")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/fiona/CMakeLists.txt b/apps/fiona/CMakeLists.txt
index 5845008..240b9e5 100644
--- a/apps/fiona/CMakeLists.txt
+++ b/apps/fiona/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_fiona)
message (STATUS "Configuring apps/fiona")
-set (SEQAN_APP_VERSION "0.2.2")
+set (SEQAN_APP_VERSION "0.2.1")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/fx_tools/CMakeLists.txt b/apps/fx_tools/CMakeLists.txt
index e42bde3..a565457 100644
--- a/apps/fx_tools/CMakeLists.txt
+++ b/apps/fx_tools/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_fx_tools)
message (STATUS "Configuring apps/fx_tools")
-set (SEQAN_APP_VERSION "0.2.2")
+set (SEQAN_APP_VERSION "0.2.1")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/fx_tools/fx_bam_coverage.cpp b/apps/fx_tools/fx_bam_coverage.cpp
index 16e0164..6153f0f 100644
--- a/apps/fx_tools/fx_bam_coverage.cpp
+++ b/apps/fx_tools/fx_bam_coverage.cpp
@@ -104,7 +104,7 @@ parseArgs(FxBamCoverageOptions & options,
setDate(parser, SEQAN_DATE);
addUsageLine(parser,
- "[\\fIOPTIONS\\fP] \\fB-o\\fP \\fIOUT.coverage.tsv\\fP \\fB-r\\fP \\fIGENOME.fa\\fP "
+ "[\\fIOPTIONS\\fP] \\fB-o\\fP \\fIOUT.bam.coverage.tsv\\fP \\fB-r\\fP \\fIGENOME.fa\\fP "
"\\fB-m\\fP \\fIMAPPING.bam\\fP");
addDescription(parser, "Compute read coverage and C+G content for a genome.");
@@ -128,12 +128,12 @@ parseArgs(FxBamCoverageOptions & options,
addSection(parser, "Main Options");
addOption(parser, seqan::ArgParseOption("w", "window-size", "Set the size of the non-overlapping windows in base pairs.", seqan::ArgParseArgument::INTEGER, "NUM"));
- setDefaultValue(parser, "window-size", options.windowSize);
+ setDefaultValue(parser, "window-size", "10000");
addSection(parser, "Output Options");
addOption(parser, seqan::ArgParseOption("o", "out-path", "Path to the resulting file. If omitted, result is printed to stdout.", seqan::ArgParseArgument::OUTPUT_FILE, "TSV"));
setRequired(parser, "out-path");
- setValidValues(parser, "out-path", ".coverage.tsv");
+ setValidValues(parser, "out-path", "bam_coverage_tsv");
seqan::ArgumentParser::ParseResult res = parse(parser, argc, argv);
@@ -142,7 +142,6 @@ parseArgs(FxBamCoverageOptions & options,
getOptionValue(options.inGenomePath, parser, "in-reference");
getOptionValue(options.inBamPath, parser, "in-mapping");
getOptionValue(options.outPath, parser, "out-path");
- getOptionValue(options.windowSize, parser, "window-size");
if (isSet(parser, "verbose"))
options.verbosity = 2;
@@ -188,19 +187,14 @@ int main(int argc, char const ** argv)
// -----------------------------------------------------------------------
std::cerr << "\n"
- << "___PREPARATION____________________________________________________________________\n"
- << "\n";
-
+ << "___PREPRATION_____________________________________________________________________\n"
+ << "\n"
+ << "Indexing GENOME file " << options.inGenomePath << " ...";
seqan::FaiIndex faiIndex;
- if (!open(faiIndex, toCString(options.inGenomePath)))
+ if (build(faiIndex, toCString(options.inGenomePath)) != 0)
{
- std::cerr << "Indexing GENOME file " << options.inGenomePath << " ...";
- if (!build(faiIndex, toCString(options.inGenomePath)))
- {
- std::cerr << "Could not build FAI index of " << options.inGenomePath << "!\n";
- return 1;
- }
- save(faiIndex);
+ std::cerr << "Could not build FAI index.\n";
+ return 1;
}
std::cerr << " OK\n";
@@ -216,13 +210,12 @@ int main(int argc, char const ** argv)
<< "___C+G CONTENT COMPUTATION________________________________________________________\n"
<< "\n";
- seqan::Dna5String contigSeq;
for (unsigned i = 0; i < numSeqs(faiIndex); ++i)
{
std::cerr << "[" << sequenceName(faiIndex, i) << "] ...";
unsigned numBins = (sequenceLength(faiIndex, i) + options.windowSize - 1) / options.windowSize;
resize(bins[i], numBins);
- clear(contigSeq);
+ seqan::Dna5String contigSeq;
readSequence(contigSeq, faiIndex, i);
for (unsigned bin = 0; bin < numBins; ++bin)
@@ -246,7 +239,7 @@ int main(int argc, char const ** argv)
// -----------------------------------------------------------------------
std::cerr << "\n"
- << "___COVERAGE COMPUTATION_________________________________________________________\n"
+ << "___COVERAGE COMPUATATION________________________________________________________\n"
<< "\n"
<< "Computing Coverage...";
@@ -257,9 +250,6 @@ int main(int argc, char const ** argv)
return 1;
}
- seqan::BamHeader header;
- readHeader(header, bamFile);
-
seqan::BamAlignmentRecord record;
while (!atEnd(bamFile))
{
@@ -272,7 +262,7 @@ int main(int argc, char const ** argv)
seqan::CharString const & contigName = contigNames(context(bamFile))[record.rID];
if (!getIdByName(contigId, faiIndex, contigName))
{
- std::cerr << "ERROR: Alignment to unknown contig " << contigName << "!\n";
+ std::cerr << "ERROR: Alignment to unknown contig " << contigId << "!\n";
return 1;
}
unsigned binNo = record.beginPos / options.windowSize;
diff --git a/apps/gustaf/CMakeLists.txt b/apps/gustaf/CMakeLists.txt
index 80d2cb5..6b59ac5 100644
--- a/apps/gustaf/CMakeLists.txt
+++ b/apps/gustaf/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_gustaf)
message (STATUS "Configuring apps/gustaf")
-set (SEQAN_APP_VERSION "1.0.2")
+set (SEQAN_APP_VERSION "1.0.1")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/insegt/CMakeLists.txt b/apps/insegt/CMakeLists.txt
index 3e4f033..2344557 100644
--- a/apps/insegt/CMakeLists.txt
+++ b/apps/insegt/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_insegt)
message (STATUS "Configuring apps/insegt")
-set (SEQAN_APP_VERSION "1.1.2")
+set (SEQAN_APP_VERSION "1.1.1")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/mason2/CMakeLists.txt b/apps/mason2/CMakeLists.txt
index 3adbbb2..862d071 100644
--- a/apps/mason2/CMakeLists.txt
+++ b/apps/mason2/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_mason2)
message (STATUS "Configuring apps/mason2")
-set (SEQAN_APP_VERSION "2.0.1")
+set (SEQAN_APP_VERSION "2.0.0")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/mason2/mason_simulator.cpp b/apps/mason2/mason_simulator.cpp
index edd1239..829fe45 100644
--- a/apps/mason2/mason_simulator.cpp
+++ b/apps/mason2/mason_simulator.cpp
@@ -48,6 +48,13 @@
#include "external_split_merge.h"
// ==========================================================================
+// Forwards
+// ==========================================================================
+
+template <typename TMDString, typename TGaps1, typename TGaps2>
+inline void getMDString2(TMDString &md, TGaps1 &gaps1, TGaps2 &gaps2);
+
+// ==========================================================================
// Classes
// ==========================================================================
@@ -238,7 +245,7 @@ public:
setClippedBeginPosition(gapsRead, countGaps(begin(gapsRead, seqan::Standard())));
getCigarString(record.cigar, gapsContig, gapsRead, seqan::maxValue<int>());
- getMDString(mdString, gapsContig, gapsRead);
+ getMDString2(mdString, gapsContig, gapsRead);
}
// Fill the tags dict.
@@ -559,7 +566,7 @@ public:
setClippedBeginPosition(gapsRead, countGaps(begin(gapsRead, seqan::Standard())));
getCigarString(record.cigar, gapsContig, gapsRead, seqan::maxValue<int>());
- getMDString(mdString, gapsContig, gapsRead);
+ getMDString2(mdString, gapsContig, gapsRead);
}
// Fill the tags dict.
@@ -1261,6 +1268,78 @@ parseCommandLine(MasonSimulatorOptions & options, int argc, char const ** argv)
return seqan::ArgumentParser::PARSE_OK;
}
+// ----------------------------------------------------------------------------
+// getMDString2()
+// ----------------------------------------------------------------------------
+
+template <
+ typename TMDString,
+ typename TGaps1,
+ typename TGaps2>
+inline void
+getMDString2(
+ TMDString &md,
+ TGaps1 &gaps1,
+ TGaps2 &gaps2)
+{
+ typedef typename seqan::Value<TMDString>::Type TMDChar;
+ typename seqan::Iterator<TGaps1>::Type it1 = begin(gaps1);
+ typename seqan::Iterator<TGaps2>::Type it2 = begin(gaps2);
+ typedef typename seqan::Value<typename seqan::Source<TGaps1>::Type>::Type TValue1;
+ char op, lastOp = ' ';
+ unsigned numOps = 0;
+
+ clear(md);
+ for (; !atEnd(it1) && !atEnd(it2); goNext(it1), goNext(it2))
+ {
+ if (isGap(it1)) continue;
+ if (isGap(it2))
+ {
+ op = 'D';
+ }
+ else
+ {
+ TValue1 x1 = *it1;
+ TValue1 x2 = *it2;
+ op = (x1 == x2)? 'M': 'R';
+ }
+
+ // append match run
+ if (lastOp != op)
+ {
+ if (lastOp == 'M')
+ {
+ std::stringstream num;
+ num << numOps;
+ append(md, num.str());
+ }
+ numOps = 0;
+ lastOp = op;
+ }
+
+ // append deleted/replaced reference character
+ if (op != 'M')
+ {
+ // add ^ from non-deletion to deletion
+ if (op == 'D' && lastOp != 'D')
+ appendValue(md, '^');
+ // add 0 from deletion to replacement
+ if (op == 'R' && lastOp == 'D')
+ appendValue(md, '0');
+ appendValue(md, seqan::convert<TMDChar>(*it1));
+ }
+
+ ++numOps;
+ }
+ SEQAN_ASSERT_EQ(atEnd(it1), atEnd(it2));
+ if (lastOp == 'M')
+ {
+ std::stringstream num;
+ num << numOps;
+ append(md, num.str());
+ }
+}
+
// --------------------------------------------------------------------------
// Function main()
// --------------------------------------------------------------------------
diff --git a/apps/mason2/simulate_illumina.cpp b/apps/mason2/simulate_illumina.cpp
index 4fc9064..e40d082 100644
--- a/apps/mason2/simulate_illumina.cpp
+++ b/apps/mason2/simulate_illumina.cpp
@@ -254,23 +254,13 @@ void IlluminaSequencingSimulator::simulateRead(TRead & seq, TQualities & quals,
// Simulate sequence (materialize mismatches and insertions).
typedef seqan::ModifiedString<seqan::ModifiedString<TFragment, seqan::ModView<seqan::FunctorComplement<seqan::Dna5> > >, seqan::ModReverse> TRevCompFrag;
if ((dir == LEFT) && (strand == FORWARD))
- {
_simulateSequence(seq, rng, prefix(frag, lenInRef), cigar);
- }
else if ((dir == LEFT) && (strand == REVERSE))
- {
- seqan::Prefix<TFragment>::Type holder(prefix(frag, lenInRef));
- _simulateSequence(seq, rng, TRevCompFrag(holder), cigar);
- }
+ _simulateSequence(seq, rng, TRevCompFrag(prefix(frag, lenInRef)), cigar);
else if ((dir == RIGHT) && (strand == FORWARD))
- {
_simulateSequence(seq, rng, suffix(frag, length(frag) - lenInRef), cigar);
- }
else // ((dir == RIGHT) && (strand == REVERSE))
- {
- seqan::Suffix<TFragment>::Type holder(suffix(frag, length(frag) - lenInRef));
- _simulateSequence(seq, rng, TRevCompFrag(holder), cigar);
- }
+ _simulateSequence(seq, rng, TRevCompFrag(suffix(frag, length(frag) - lenInRef)), cigar);
// Simulate qualities.
_simulateQualities(quals, cigar);
diff --git a/apps/mason2/simulate_sanger.cpp b/apps/mason2/simulate_sanger.cpp
index 9073fad..33a4305 100644
--- a/apps/mason2/simulate_sanger.cpp
+++ b/apps/mason2/simulate_sanger.cpp
@@ -141,23 +141,13 @@ void SangerSequencingSimulator::simulateRead(
// Simulate sequence (materialize mismatches and insertions).
typedef seqan::ModifiedString<seqan::ModifiedString<TFragment, seqan::ModView<seqan::FunctorComplement<seqan::Dna5> > >, seqan::ModReverse> TRevCompFrag;
if ((dir == LEFT) && (strand == FORWARD))
- {
_simulateSequence(seq, rng, prefix(frag, sampleLength), cigar);
- }
else if ((dir == LEFT) && (strand == REVERSE))
- {
- seqan::Prefix<TFragment>::Type holder(prefix(frag, sampleLength));
- _simulateSequence(seq, rng, TRevCompFrag(holder), cigar);
- }
+ _simulateSequence(seq, rng, TRevCompFrag(prefix(frag, sampleLength)), cigar);
else if ((dir == RIGHT) && (strand == FORWARD))
- {
_simulateSequence(seq, rng, suffix(frag, length(frag) - sampleLength), cigar);
- }
else // ((dir == RIGHT) && (strand == REVERSE))
- {
- seqan::Suffix<TFragment>::Type holder(suffix(frag, length(frag) - sampleLength));
- _simulateSequence(seq, rng, TRevCompFrag(holder), cigar);
- }
+ _simulateSequence(seq, rng, TRevCompFrag(suffix(frag, length(frag) - sampleLength)), cigar);
// Simulate Qualities.
this->_simulateQualities(quals, cigar, sampleLength);
diff --git a/apps/mason2/tests/simulator.out1.sam b/apps/mason2/tests/simulator.out1.sam
index 3d05dce..4434de3 100644
--- a/apps/mason2/tests/simulator.out1.sam
+++ b/apps/mason2/tests/simulator.out1.sam
@@ -74,7 +74,7 @@ simulated.35 163 1 955 255 100M = 1101 -246 TATGCGAGCGACCGACGACTTATAGTCAGCTACGGT
simulated.36 99 1 3043 255 100M = 3250 307 TAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGG HHHIHHIHHHHHIIFIHGHIFIIHGIHHFIFIICDEI at IGHIHIIDIGHIFIIIIIIDEFFDIGDIFIGIE>IDIIIAIE>IAIFDGD6HIIFIIAEIHF NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3042 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.36 147 1 3250 255 100M = 3043 -307 ATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTT @IDIBHCGDEIB at GIIICBH@IC?EIHIBIGIH at IIHIIFIFE@FEEIIIIEIIIIIIIHIIGFHIHIHGIGGHIIIGIIFIHIIGHHIGIIHHHIIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3249 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.37 99 1 4812 255 100M = 4987 275 AAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCC HHIHHIHIIHHGIHIHIIHIIIFHIGIIIGEIIHIIIGHIIFIGFIGICIIIIHIEFIHCHAHIIBIGIFIIIDIAHH>BIEIIHDIIIAIIEDIICGBG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4811 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.37 147 1 4987 255 100M = 4812 -275 ATGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAG FIIHGFH?9CDG at EIIIACDGHEHIC@IIDIFHIAIHDIIGFIIIIIIIDIIIFFEBHIEHEHIGIFIEGIIIIEIIIGIGIIHHGIHIIIIHHHIHIIH NM:i:1 MD:Z:0C99 oR:Z:1 oH:i:1 oP:i:4986 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.37 147 1 4987 255 100M = 4812 -275 ATGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAG FIIHGFH?9CDG at EIIIACDGHEHIC@IIDIFHIAIHDIIGFIIIIIIIDIIIFFEBHIEHEHIGIFIEGIIIIEIIIGIGIIHHGIHIIIIHHHIHIIH NM:i:1 MD:Z:C99 oR:Z:1 oH:i:1 oP:i:4986 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.38 83 1 2982 255 100M = 2799 283 TGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCAC IH>FIII at IIBHFICIIDAIFIIIHGIHID>IIFIFIADIBICGIEHIIHIFIFCIHIIHGFIFIIIIHIIIHIHIGIIIIIIHGIIIIHHIHHIHHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2981 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.38 163 1 2799 255 100M = 2982 -283 TCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGC HHIHHHIHHHGIGIHIHGHIIIHIIGIFGIIEIIIEGEHIIGIIEIIFIIHGHHFIIIIHEIAIHCFFIIFHIFHIBGIIIHIIE at IIIHICIIIIIICI NM:i:1 MD:Z:99A oR:Z:1 oH:i:1 oP:i:2798 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.39 83 1 9137 255 100M = 8952 285 GATGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGG D=IIIICCIGIAIIHIIIIGBIIIGHGIFIIFHHIIIIHIB at FHBIIIFIEEIGIGHIFIIGFHFIIHIIGIIHHHFHHIFIIIHHIHHHIIIHIHHIHI NM:i:1 MD:Z:1G98 oR:Z:1 oH:i:1 oP:i:9136 oS:A:R XE:i:1 XS:i:0 XI:i:0
@@ -280,7 +280,7 @@ simulated.138 163 1 4826 255 100M = 5052 -326 AAGCCAAAAAGATCACCTCCTTCATTCACCTATT
simulated.139 99 1 9315 255 100M = 9545 330 CGCCAGAGAATTGATCGTCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTACATGAAGGGCTCATCGAATGCACTCACGAAATT IHHIIIIHHIIHHIIGIIHIIGIIHHIHIGHIIIIIIIIHIIHIIHIIFIIEFIIHIIIIAIFFHEIHIFIIIICIIDIIHFII?@IIHICCIIICCIGI NM:i:2 MD:Z:71C27G oR:Z:1 oH:i:1 oP:i:9314 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.139 147 1 9545 255 100M = 9315 -330 TCTAGAGCAGCCACATAAAAATAAATTGAATCGTTAGCTCCGCCGTGTGGACATGGCATCGGCGTCATCCCATATACATCACCGGTCGAACCCACTCAAG IGII;GIIGHIGHFIFIIFIHCIIAIIIIIIFGF at HIEII@IIIIIIHHIIEIIIHCIIHIGHFEGEEHHIIIIFIHIHIIIHHHHIIIGIIHHHIIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9544 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.140 83 1 7697 255 100M = 7501 296 AATCACGCGTAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGAT GHEAIHHEI-IGGIIIHIC?IIIFIIIIHHIIHIIIAEFIDIDFIHIIGGIHDFIGCIIFIIIDIFGGIGGHGIIEIFIIIGGIHGHIHIHGHIIIHIHH NM:i:1 MD:Z:9G90 oR:Z:1 oH:i:1 oP:i:7696 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.140 163 1 7501 255 100M = 7697 -296 TGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTANGTTATTACATTCTAT HIIIHHHHGGIIHHIGGIHFEIHHIGHEGHGIHHEIFFGFHIEHADIIDDFHHIICIIFFIEEIIHIGIIIDIFIIIIFFIEG<HIE at EIF=@D?IIIDH NM:i:3 MD:Z:83T0A6C8 oR:Z:1 oH:i:1 oP:i:7500 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.140 163 1 7501 255 100M = 7697 -296 TGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTANGTTATTACATTCTAT HIIIHHHHGGIIHHIGGIHFEIHHIGHEGHGIHHEIFFGFHIEHADIIDDFHHIICIIFFIEEIIHIGIIIDIFIIIIFFIEG<HIE at EIF=@D?IIIDH NM:i:3 MD:Z:83TA6C8 oR:Z:1 oH:i:1 oP:i:7500 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.141 99 1 1067 255 100M = 1247 280 CTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCTTGAAGCCG IIIIHIIIIIGIIIIIFIHHGIHIIFIHDFIBHIHGIHHIIIEEIIEGDIHDGGGIIHIDIDGDBIIHFIIIFAIDHIIDFDIIFIIII at IIIIIIFDII NM:i:1 MD:Z:91A8 oR:Z:1 oH:i:1 oP:i:1066 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.141 147 1 1247 255 100M = 1067 -280 TCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGG EIGIIHIHGIAIDIGCFGII>IADIDIIIHIIIFIIIIDEIIIDIICEIIIFIIDIHIIIGDDHIIIIFFGHIIGIHIHIIIHHHHHHHHIIHHIIIHIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1246 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.142 99 1 4566 255 100M = 4764 298 AGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATC HHIIHHHHHHIIHIIHIHIFIHFIIIIIHHHIIDIGGDHIGIIFIEAIIEIIIIIIIIIIHIIIIIICIIHHBIIIAIIIFICIIIIHB?IHAF@@I@;I NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4565 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -334,7 +334,7 @@ simulated.165 163 1 337 255 100M = 534 -297 GGACGCACAAAATCATCTTGGGATAGGAGGATTCGG
simulated.166 99 1 1497 255 100M = 1661 264 TCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAG IHHHIIHHHIIIIHGIHIHGGHEIIFEGDGEIIEHIIBHIHIIIIIFHIIFIIIIECICIFIDIIHIGIDI;FII=IFFDFICIICAHAIHHHFIIIHIE NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1496 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.166 147 1 1661 255 100M = 1497 -264 GGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGA CDEI?DIII>III?IIID at IDGDIIIIII;DIDIFIIBAIIFCIF?GI>EIIHIHIIIDICIDIIEIHDIHGGGIIIIFHIHIIIHIHHIIHHHHHHIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1660 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.167 99 1 5884 255 100M = 6073 289 TGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGC HHHHIIIHHIIGHIFHIHGIIIGICFHIGIFFIIGGIGGIFCDIIIEIHEFHGIEIIGIICIIDAIDIIF?IIEIFIHCIABIFI=FAIGFIIAIIG<:B NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5883 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.167 147 1 6073 255 100M = 5884 -289 GGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCAC @IHBCIHHFII?FIIG?IDID:IIIIIGIIIIFIEIDIHIIEEHGIIDIHIIHGIICICCIFEIIHIIIIHIGIGHHIIIIFIGIHIGHIIIIHGIIIII NM:i:1 MD:Z:0A99 oR:Z:1 oH:i:1 oP:i:6072 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.167 147 1 6073 255 100M = 5884 -289 GGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCAC @IHBCIHHFII?FIIG?IDID:IIIIIGIIIIFIEIDIHIIEEHGIIDIHIIHGIICICCIFEIIHIIIIHIGIGHHIIIIFIGIHIGHIIIIHGIIIII NM:i:1 MD:Z:A99 oR:Z:1 oH:i:1 oP:i:6072 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.168 99 1 9240 255 100M = 9443 303 GTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTC IHIHIHHHIHHIHIHHIHGHHFHHIGIFIHIIIIIIFDHHGIIIIIFFIHFEIIFFIIII at IAE>IHECIIGDDIIGIFI>IHGIIIIIII at HBCGIII= NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9239 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.168 147 1 9443 255 100M = 9240 -303 GTTCCCGCAACTGGCCAACAGCCCCTTTCAGTTGTCAAATCAACATCCGCGTCGAGGCTAGGTACGGTCGCGGCATTCAGCCGTCGGAACTAAACGCCAG IIGIIIIHICHIDIIEIIIIAIIIIFFGGIIHIICIIFIII>HIGABGICIFBIFEEIADIIIDIIIIGEEHIIHIIIGHHHIIHHIIHGIIIHIHIHII NM:i:1 MD:Z:79C20 oR:Z:1 oH:i:1 oP:i:9442 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.169 83 1 5003 255 100M = 4838 265 ACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCC DIHBGIDIBIGIFEIIIIAFFGGECG at I>I at I>H?IIEGDGHIEIIHDEIIHIIGIIHGIHHEHIHFFIGHIFGIGIHIIIHIIIHIIIHHIIIIHIIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5002 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -377,7 +377,7 @@ simulated.187 83 1 348 255 100M = 155 293 ATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAA
simulated.187 163 1 155 255 100M = 348 -293 ACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCAC HIIHIHHHHIIIIIHIIIIIHIIHIIIIHGIFFGIIEIFIGGCEHIFHIHIIIIIHIIHG at FGI@EFIGEIEHAGIIIIIGDI?EIIG?AIHAHI?CGII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:154 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.188 83 1 7690 255 100M = 7477 313 CTTGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTG I7BHBI<IDIIIIC at CCIICEDIGIIFGIHIFHDCI?IDAIBIIIHIEHGHHIIIIIIHIEIIIIHIIGIGIIIIFIIIFGGGIHHHGHGIHHIHHHIHI NM:i:1 MD:Z:1A98 oR:Z:1 oH:i:1 oP:i:7689 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.188 163 1 7477 255 100M = 7690 -313 CTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCA IHIHHIHIHHHHIHIIHIHHIHIIIHIIHHGIGCGFIIIEFIHIIBHIIGIIHIIIGIHIIIIIIIICIIIGDGIFHEGII?GFGCIII@@EHCIGIIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7476 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.189 99 1 3731 255 100M = 3940 309 CACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCGTTGCTAGATCGTACGTATCTCC HHHIIIIIIGHIIHHGIIIIHHFGHGHEHHIIGEGGIHIIIEEFGEHFIIDHIEE at HIIIIIDIIGIHGDIHGDI=I:IIIIFIII at IHCHECH9FGIII NM:i:3 MD:Z:77A0G15C5 oR:Z:1 oH:i:1 oP:i:3730 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.189 99 1 3731 255 100M = 3940 309 CACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCGTTGCTAGATCGTACGTATCTCC HHHIIIIIIGHIIHHGIIIIHHFGHGHEHHIIGEGGIHIIIEEFGEHFIIDHIEE at HIIIIIDIIGIHGDIHGDI=I:IIIIFIII at IHCHECH9FGIII NM:i:3 MD:Z:77AG15C5 oR:Z:1 oH:i:1 oP:i:3730 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.189 147 1 3940 255 100M = 3731 -309 TTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACTT @@III at II>ADIE at IIADFHHEFICBICEBIIIIIHGIHIC=GHHEGBIHHEFIIIIFIIIGHHFHFDGIIHIHFGHIIIIIHIIHHIHIHHHHIHIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3939 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.190 83 1 1983 255 100M = 1793 290 CAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAG IIFIDIIEIFIEIIHII at IDIIDIFGDEIGIIEGDDEDIFGI@IIGIEIIIIIEIGIIGICIIGHHEIGFIHHIIIIIIHGIGFHGGIGGHGIHHHIIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1982 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.190 163 1 1793 255 100M = 1983 -290 TTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCG IHHHHIHIIHIHIIIIIGIHIDHIIHGHIIEIGIDIHGGFFIIIHEDHIIDEIIEEIBIEGIHIIBEDICGFI?>II=HFI>CGIIII?BHIEIIHI<=E NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1792 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -398,7 +398,7 @@ simulated.197 163 2 18 255 100M = 222 -304 TCGTTTGGACTCAGCGGCCGTTTGCGTATATAGGAAT
simulated.198 83 1 7412 255 100M = 7193 319 TGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCT IF at GC>IIFIHEBGFGICCHIIB at I<IAIEIDIBIIBFEIIIHGIFIIIEIIIIHIICI at HIIGIIGIHIIIHIIHIHHGIFFIIHGIIIHHHIHHIHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7411 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.198 163 1 7193 255 100M = 7412 -319 AGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGCAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTT HIIIHHHIHIIHGIHHGHIIGIIGGHFHGIHIDIGIHCGHFFIFFIII;GHHIIGIHDDIEDFFD at IIIICIIFCIIEFIIEIIIF?IIIIIIGII>EIF NM:i:1 MD:Z:48A51 oR:Z:1 oH:i:1 oP:i:7192 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.199 99 1 51 255 100M = 217 267 GGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGA HIIHHHIIIHIHHGIGFIHHIIIIGIHIIGGIIEEDIIIFHIHDCIIEIIIIGIIGEIIGIDGIGIIIEGF>FI?IIEIIEFEHAECIIDDIII at GIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:50 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.199 147 1 217 255 93M1D7M = 51 -267 ATTTCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTCGAC FDF-I>IHEIBIFFI@?IDFIIEAGHHGIIII?HIG>HEI at IHHGGICIIGEIGIGEIGHGIGIIHHIDIFIIIHIIIGFIHHHIGIHIGHHHHIIHIHI NM:i:2 MD:Z:3G89^T7 oR:Z:1 oH:i:1 oP:i:216 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.199 147 1 217 255 93M1D7M = 51 -267 ATTTCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTCGAC FDF-I>IHEIBIFFI@?IDFIIEAGHHGIIII?HIG>HEI at IHHGGICIIGEIGIGEIGHGIGIIHHIDIFIIIHIIIGFIHHHIGIHIGHHHHIIHIHI NM:i:2 MD:Z:3G89T7 oR:Z:1 oH:i:1 oP:i:216 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.200 83 1 6162 255 100M = 5967 295 CATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACA I=CHBIID at IIGIGHIFIIHIII?IIDCHIII?DFDIFGEEIIICGHCIGHIHIHIHHIHCIIGIGEHHHIFIHIHHIFIIIIIIHHHIHHHHIHHIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6161 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.200 163 1 5967 255 100M = 6162 -295 GAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTTTACAGTAC IHIIHHIHGHIIHGIIHIIIIIGIIIHIFGIIIIIGIIIHHEHIFFDHFHIFFCDGFEFDD at DIGIIEGIIBGGHIHHHHDCIBGI><GGDBFI>IG;>E NM:i:1 MD:Z:91G8 oR:Z:1 oH:i:1 oP:i:5966 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.201 83 1 7274 255 100M = 7069 305 ATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAA ACDD?GIIIH>GIIIIDIEIIIAIIIIAIEIDECIIGIDIC at HHIIDICGIGIIIIDDIIGHIIFHIGGIGIEIGIIHIIIEIIHIIHIIHGIIIIHHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7273 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -534,7 +534,7 @@ simulated.265 163 1 9619 255 100M = 9812 -293 TACATCACCGGCCGAACCCACTCAAGAGTGAACC
simulated.266 83 1 9742 255 100M = 9557 285 CCACTGAATTGTATCTGTAAATAGGCATTGTTATGCCGTGGCATTACCCGCCTGTTAACTTTCCCCGCCCAGCATCTTGTTGTCATTCAACAATAAAGTA ?I<FIIFI>GID8FIIIII?IGIGIEIEFDIIIIIIIDIEIIIHIEIEBDIIIIIGFIGIHEFIGHIEGHIFIGIIEIFIGIHIGHIHIHIHHHHIIIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9741 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.266 163 1 9557 255 100M = 9742 -285 ACATAAAAATAAATTGAATCGTTAGCTCCGCCGTGGGGACATGGCATCGGCGTCATCCCATATACATCACCGGTCGAACCCACTCAAGAGTGAACCGCTT HHIHHIIHHIHHIIHIGHIIIIHIHGEIGGFIIIIHBHIGIGHEIFIIGIIIFDIICCIIDGHAIAIDIIEIGCHIGHHHH at AIIIHD<IGCIEIFGHIB NM:i:1 MD:Z:35T64 oR:Z:1 oH:i:1 oP:i:9556 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.267 99 1 9167 255 100M = 9361 294 GGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGA IIHIHIIIHIHGIIHHHHHHHGFFIIIIFDGEGIIFIIIIIIIIIIIHIIHIFIFIHHIIFIIIIDHIIIBFIIIIBIIIIEIIDGII at ICGG>HIACIB NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9166 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.267 147 1 9361 255 100M = 9167 -294 TAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTAACAGCTCGCGCTGCTCAAAGATTGTTCCCGCAACTGGCCAA AGGBI>?DIEIB;BIIHIIICGIEIIAIFIIH?IEHIIIIHHHGIIIHIHCIIFIHEIHHFIGGGIIIIIGEIIIGGIIGFIHGGIIIIIGHIIHHHHII NM:i:1 MD:Z:0G99 oR:Z:1 oH:i:1 oP:i:9360 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.267 147 1 9361 255 100M = 9167 -294 TAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTAACAGCTCGCGCTGCTCAAAGATTGTTCCCGCAACTGGCCAA AGGBI>?DIEIB;BIIHIIICGIEIIAIFIIH?IEHIIIIHHHGIIIHIHCIIFIHEIHHFIGGGIIIIIGEIIIGGIIGFIHGGIIIIIGHIIHHHHII NM:i:1 MD:Z:G99 oR:Z:1 oH:i:1 oP:i:9360 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.268 83 1 9495 255 100M = 9312 283 CGAGGCTAGGTACGGTCGCGGCATTCACCCGTCGGAACTAAACGCCAGAGTCTAGAGCAGCCACATAAAAATAAATTGAATCGTTAGCTCCGCCGTGTGG IIIIEIIBGEIIIHIAFIIC at EIIG>IHIIHHFIIHEAIIFIDIGIIEICIIFIIHIIHBIHDHHGIGIIIIIGHIEIHGGIIEHIIIIIIIHHIHHHIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9494 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.268 163 1 9312 255 100M = 9495 -283 TACCGCCAGAGAATTGATCGTCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATTCACTCACGAA IHHIIHIHIHHIHHIIIIIGIHHGIHFIHIGEEIIGIIGHFGIHICGFCIIIIHICGI?IGCFFAHIIIDIIFHEI>IFIBIGED?IIC<ADI>DGIDIF NM:i:1 MD:Z:89G10 oR:Z:1 oH:i:1 oP:i:9311 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.269 99 1 3924 255 100M = 4148 324 TTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGC IHHHHIIIGIIHIHHIGIIIIHIGHIFEIHFIGGIGIFHIHFIGGIFFIBGIGIGIIEDGGDEEIECIGIIIIIIIFFIIABHIEIHHAIGI?IIIIICI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3923 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -578,7 +578,7 @@ simulated.287 163 1 9459 255 100M = 9643 -284 AACAGGCCCTTTCAGTTGTCAAATCAACATCCGC
simulated.288 83 1 2932 255 100M = 2707 325 GCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATAC HIA?IIIEIIIBBIBCBAAGIIGIDIIIIIIICHIIFEIHAIEEHIIIDBCCFGHHGGFIFIGGIHFFGHFFIIHIIGHIFHGHHIIHIHGHIHHHHHIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2931 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.288 163 1 2707 255 100M = 2932 -325 TCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATTTCCCCTAA IIIIHIIIHHIHHGIHHGIHIIIGIIIIIIHIHIEDEFFFDIEIIEIEIHIDIEIGDHIIECDCFI?IIIIIIHDHICIIIIIIIAIBIIIEFHEI at IIG NM:i:1 MD:Z:91G8 oR:Z:1 oH:i:1 oP:i:2706 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.289 99 1 274 255 100M = 501 327 AGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGG HIHIHHHHHIHHIGIIHHFHIFFGIIIIIIIDHIIIHIIHIGHIIIIHIHEHHCIIIFDHIIGIICIEIHIHIFECGIFIBIIII:IIIIIIIBEIFDFE NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:273 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.289 147 1 501 255 100M = 274 -327 AGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTAACGAATACTGTCTT AIIHGFEE at CIIIIIHI?IBGIEIGBGEIDGCI at CIIDCHGGGEIIIIIIIIIGFIFGBCIHHHEHHIIIIGGGHIIFGIIIFIG<HIHHIHHIHHHIII NM:i:2 MD:Z:0C84C14 oR:Z:1 oH:i:1 oP:i:500 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.289 147 1 501 255 100M = 274 -327 AGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTAACGAATACTGTCTT AIIHGFEE at CIIIIIHI?IBGIEIGBGEIDGCI at CIIDCHGGGEIIIIIIIIIGFIFGBCIHHHEHHIIIIGGGHIIFGIIIFIG<HIHHIHHIHHHIII NM:i:2 MD:Z:C84C14 oR:Z:1 oH:i:1 oP:i:500 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.290 99 1 8553 255 100M = 8784 331 ATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACG HIHIHIHGIIIHIIHIHHIIIIHIHHIGIIGIIGIIDIIEIHIIGEIIFHGIHHEHIIIHH=IHHAHIHIGB?IDII>F at FEIIICIDIFCIIIIDHEHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8552 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.290 147 1 8784 255 100M = 8553 -331 TGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGC C at AIICI@IICACDI=DIDIHDBGIDDIIIHGIHCGDIIHIIIGIIGIIIIIDIIHIIDGIIIIIFIIIFGIIIGIIGGIIHIHIHIIIHHIIIIIIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8783 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.291 99 1 7497 255 100M = 7692 295 TTGATGCATGTCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATT IIIHIIHHGFHGHIIHHHIHFIGHHIIHHFIFIIGGIDHEIIIIFGIFFIIFD>IHEEHIIIGIFGIIDIIGHDAFFIIIFIIE at IHIB@;BAII@?IDH NM:i:1 MD:Z:9A90 oR:Z:1 oH:i:1 oP:i:7496 oS:A:F XE:i:1 XS:i:0 XI:i:0
@@ -687,7 +687,7 @@ simulated.342 99 1 3240 255 100M = 3418 278 GAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCA
simulated.342 147 1 3418 255 100M = 3240 -278 TTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCA IFE?FDDBCIEEIGFII at I@BHIEII?IIEIIEHIDCCFIHIIIIIGAI at HDFEIIIIIDFIHIIDDHHGHGIIIHIGIHHIIHGHGGHHHIHIHIHIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3417 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.343 83 1 1821 255 100M = 1621 300 TGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTC IEIII==IIICBIII at AIAF@I:IIIIHGBEIIIBIIIIBHIGBIIIIFDHHGGEGIDIIHGIHIGEHCHIHIGGIHIHGHHIIGHHHGHHIIHIIHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1820 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.343 163 1 1621 255 100M = 1821 -300 CGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACG IHHHIHIHHHHHHIHIHGIGIGHIGGIIFIHIFGIFIIIHHHIGHIIHIGIIIDIFIIIIIGFIIIEFBGFICI?ICBCGH?I?GGICICIIICII at IDI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1620 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.344 83 1 4410 255 100M = 4230 280 CCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACACTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGC B>IC at I<?IIAIIECICI at EGFGAIICIBI@IHIIGIHHIIHGEIGIHHGIIIIGGGAIGIIIEGIGIIGHIIGFHHHIIIGGIHHIHIHIHIHIHHIIH NM:i:2 MD:Z:0G56T42 oR:Z:1 oH:i:1 oP:i:4409 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.344 83 1 4410 255 100M = 4230 280 CCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACACTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGC B>IC at I<?IIAIIECICI at EGFGAIICIBI@IHIIGIHHIIHGEIGIHHGIIIIGGGAIGIIIEGIGIIGHIIGFHHHIIIGGIHHIHIHIHIHIHHIIH NM:i:2 MD:Z:G56T42 oR:Z:1 oH:i:1 oP:i:4409 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.344 163 1 4230 255 100M = 4410 -280 CGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTATCGCTCCTTTAAATGTCCAGCACCGGGATGT IIIIHHIIHHIIHIIGFHHIIIIIIFGGHIFHDGIIDIEFIIGFIIIIFHIHCGIDIIIIIIFF at GGA?B?GIDGIIIID=FIIIGIIIDABIBCAI=IG NM:i:1 MD:Z:69G30 oR:Z:1 oH:i:1 oP:i:4229 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.345 83 2 280 255 100M = 72 308 GACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTA HIEIIIFIFBHHIIEEIDEBIEDIHIIIFIIDBIEFIDDGICIIIIFIFHGHIHIIIIEGIIIIIHHGHIIIDIIIIIGFIIGHHHIHIIIIIHHHIIII NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:279 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.345 163 2 72 255 100M = 280 -308 TGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTT HHIIHHHIGIIHIHGHIIIGEHIHGIIHHHHHFGIHIIFIFFHICGIEFIIII at FICHHGHEDDIDGFIEI?IGIICIIDIIHGFIHDBAHIIIEDIE<I NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:71 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -713,7 +713,7 @@ simulated.355 83 1 8156 255 100M = 7975 281 AAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAAC
simulated.355 163 1 7975 255 100M = 8156 -281 ATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTTCACGATCGCGGGTCTTACTCCGGGCCTCAATAAGCGA IIHIHIHIHHIIHHHHIFIFIIGIHGGHIIIIFIIIDFIIIIGEICICIIIEIEEDIICGICBHIIE at GCCIIEEIIHIGIBIFIIHIIIG@I at III8DI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7974 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.356 83 1 2015 255 100M = 1801 314 AAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACT II>IEHI??IEIF@@GGIIIAIBFIII at IIGIFIIGICI@HHIFHII?GHDIFFDIFIDHFIHGIIIHIIFGGEGIIFIGHIHIHIHIGIIHIHIHHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2014 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.356 163 1 1801 255 100M = 2015 -314 TGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTG IHHIHIHHIHIIGGHHIIIFGHIIIHIIIIGHIFFGFIGEIIFGFIHFCIEIGIIHIIIGHCIIFIIIIDIIIIHI?IGIIIBIEFIIDI=BCFBAIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1800 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.357 83 1 9475 255 100M = 9273 302 GGTCAAATCAACATCCGCGTCGAGGCTAGGTACGGTCGCGGCATTCACCCGTCGGAACTAAACGCCAGAGTCTAGAGCAGCCACATAAAAATAAATTGAA 1GIII9IEII8IDII=DHIGGIII>ICBFIHIIIIGEIAIEHIIIICHIIIFIIEIIGGIIGIGIGGIGHIEGHHIGIIGHHHIFIIIIIHIIIHHIIHH NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:1 oP:i:9474 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.357 83 1 9475 255 100M = 9273 302 GGTCAAATCAACATCCGCGTCGAGGCTAGGTACGGTCGCGGCATTCACCCGTCGGAACTAAACGCCAGAGTCTAGAGCAGCCACATAAAAATAAATTGAA 1GIII9IEII8IDII=DHIGGIII>ICBFIHIIIIGEIAIEHIIIICHIIIFIIEIIGGIIGIGIGGIGHIEGHHIGIIGHHHIFIIIIIHIIIHHIIHH NM:i:1 MD:Z:T99 oR:Z:1 oH:i:1 oP:i:9474 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.357 163 1 9273 255 100M = 9475 -302 GCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAA IHHHHHHIIIIIHIIGHHHIIGFIIFHFFIHIEIGIGIFEIDIHFHAIGIFHFIHGIGICIIHIIDGIFDEGIIBHIIFFFIFIIIIIIIAIICDDEI?7 NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9272 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.358 99 1 733 255 100M = 951 318 GTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCT HHHHIHIHIHHHIGGIHHGHHHGGIHIGFIHFFIEIIIEFFDHIIIGIDIFIDDIIGIIIIIBIBIGIEFDFIE:CGAFIIIG at IIIIIIIHIIDCBF;E NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:732 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.358 147 1 951 255 100M = 733 -318 TAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCAC HGIHII;=AEIFIAEIIIHIIDIIIHGEHIIHGIIED?HGIIIIGFIIDIBGGHHFHCHIIGCIFIHGHIHIHIIIIIGHIGFHIIIHIHHHIIHHHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:950 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -744,7 +744,7 @@ simulated.370 147 1 4220 255 100M = 4007 -313 CAGAGAGAGTCGAGTTAAACGGGCCAACCTACTC
simulated.371 99 2 333 255 100M = 519 286 TCATCTCGTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGCTAAGCCAATTTAATCAGACTAGGGACG IHHHHIIGIHGIGHIHHHHHGGHIIEIIHIIGHHIIIGIIGIIHIIIEFDI at FGIIFIIAIIAIIBHF=IIIDBHFHDIIIBHICIHEIIII at IIIHIII NM:i:1 MD:Z:7T92 oR:Z:2 oH:i:1 oP:i:332 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.371 147 2 519 255 100M = 333 -286 GCTATTCCCCCTGGTGCGCTGGTAAGTAGTGATTAGTCTATTTACCTCTACGAATTGGAGCTCCGTCGGATCGCGGTAACGATAATAGGCTATACTGAAT BFEIFGIIIIIIIIIIIIIGH at CH@FIIHIGIIIDEIBIDIEEIHIIGIIIHGDGFCHGHIIGIDIDIIIHIGHHGFHHIHGGGHHIHGIIIHHIIIHHI NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:518 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.372 99 2 209 255 100M = 453 344 AGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCT IHHIIIIIHIHFHIGGIIHHIGGIHFIHHIIGGIFIIIHHGIGICIIIIIIIBI at CGIIIIIFDIIIDIIIIHIIFGHEIIIIIAIDFHGAIDAHIIII@ NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:208 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.372 147 2 453 255 100M = 209 -344 CTCACCTGGTGAGCATCTGCGCATTCCATACAGCTTCTAACTCAGATAAGCACTAAGATGGCACTGGCTATTCCCCCTGGTGCGCTGGTAAGTAGTGATT GIEIIE=IEBIFIIII.III?>HIIHIDDEIIIIIHIEI at EIIIHHIIEIIEHIIIIFIDEIHGFGIGFGGGFIHIIIFIIHIHIIIGHHHHHHHHIHHI NM:i:2 MD:Z:16T0G82 oR:Z:2 oH:i:1 oP:i:452 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.372 147 2 453 255 100M = 209 -344 CTCACCTGGTGAGCATCTGCGCATTCCATACAGCTTCTAACTCAGATAAGCACTAAGATGGCACTGGCTATTCCCCCTGGTGCGCTGGTAAGTAGTGATT GIEIIE=IEBIFIIII.III?>HIIHIDDEIIIIIHIEI at EIIIHHIIEIIEHIIIIFIDEIHGFGIGFGGGFIHIIIFIIHIHIIIGHHHHHHHHIHHI NM:i:2 MD:Z:16TG82 oR:Z:2 oH:i:1 oP:i:452 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.373 99 1 1961 255 100M = 2169 308 TATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAAG HIIHIIIHIIIIHIIIIHHGFIHIHHIDIIIDIIIIGDFIFEHHGHIBHIIIIEDHIIIIIEIIDEIIGIIFEIIIEIF=IIBIGFC;ICBIFICAIII> NM:i:1 MD:Z:99C oR:Z:1 oH:i:1 oP:i:1960 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.373 147 1 2169 255 100M = 1961 -308 TGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACT AI<ICDEI<D at ICAIDIIIFIIBI:@DDIH at IHIBIH>IFEIF>CIGHDHDIHEIEIIGIEIIIGFHFHIIHIIIIDHIIFIFHHHIHIHIHHHHIHHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2168 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.374 99 1 4683 255 100M = 4867 284 ATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTA IHIIHIHIIHIHGHIGGIGHIHIHIIIIIIIIIIBDIIIIFFHHHGIHICIIIIACIIIIHIIIIE at BIIIICD@FIIFIHHGIIIIFIIII<I:IIBCG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4682 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -823,7 +823,7 @@ simulated.410 83 1 8054 255 100M = 7795 359 ACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGA
simulated.410 163 1 7795 255 100M = 8054 -359 ATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAG HHIIIIIIIIIIIIIIGHIGIIIHIDFHIEHEGGCHGBHHIIIIIGIGIHGDHIIGIIIIHIHIEIIGGCIIGIBDIIIIIFHIIIBIIII at CHAIFFF< NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7794 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.411 83 1 8384 255 100M = 8198 286 CACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCC GIH:IIGHBIAIIIBCIIII?IIDIC?CGEIIIIIIIEHBICEGHIBIIIFFIIIFFDIDEIIEHIHEGIIHFIFGIIGIIHHIHIGHHIIHIIIHIHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8383 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.411 163 1 8198 255 100M = 8384 -286 CACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCG IHIHIHHHIIIIHHIHIIHFIIIIFGFIIIIGHIHGFFHIIIGGFIEIGIFIIIIIIIHIIIDIHGIFIIFIIIIIDEEICIE;HDIIFIBDEIGA@?II NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8197 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.412 99 1 6875 255 59M1D41M = 7098 323 ACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAA IIIHHHHIGIHHHIHHIFHIGIGIHGIGHIGIGIIIGHHFICDIHGDIHFDGGGFIHIFIEFIIIIEAHIIDGCGIIIIIHIICHCBFI at D>>DGIHFFI NM:i:1 MD:Z:59^T41 oR:Z:1 oH:i:1 oP:i:6874 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.412 99 1 6875 255 59M1D41M = 7098 323 ACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAA IIIHHHHIGIHHHIHHIFHIGIGIHGIGHIGIGIIIGHHFICDIHGDIHFDGGGFIHIFIEFIIIIEAHIIDGCGIIIIIHIICHCBFI at D>>DGIHFFI NM:i:1 MD:Z:59T41 oR:Z:1 oH:i:1 oP:i:6874 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.412 147 1 7098 255 100M = 6875 -323 ACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGT IIIAFIDIIDIIGEIIIIFI at DI@IFDBIGFEFIIIIIIEFIIIFEDFCIAIBIGHIDIHGIIIIGGFIIIGHIIIHHFIIIHIHHIHIIHHIIHHHIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7097 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.413 99 2 445 255 100M = 647 302 GCATGTTCCTCACCTGGTGAGCATTGGCGCATTCCATACAGCTTCTAACTCAGATAAGCACTAAGATGGCACTGGCTATTCCGCCTGGTGCGCTGGTAAG HIIIHHHIIIIIHIHIIHHGHIFIIIGIIIIIGEIGIIIHIIIIGIIEIEHGIGFFHIGIEEGGGH?IIFIHIGIHICIIFI1GI<EDICIIAIIDIIHC NM:i:1 MD:Z:82C17 oR:Z:2 oH:i:1 oP:i:444 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.413 147 2 647 255 100M = 445 -302 GAATCCGTTTTTATTCGACTCTTCTTGCATTCATCACCGGCTCATACTTGAAACTACTATGCCTAGCCGAGGTGCCAGAACTAATAATCGGACGGTGGTT IIIAI?CF at IGGHDFHDIEFHFEIIIIGEEICIHECIFFFHFIIIIDIEIIIIFIIIIIIICIGIHIGIHHIIIIIGIGIIIHIIIHIIHHIGIIHIHII NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:646 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -941,7 +941,7 @@ simulated.469 99 1 6871 255 100M = 7083 312 CTTAACCCTACCGGCAAGCCTACCATCAAGTAATGG
simulated.469 147 1 7083 255 100M = 6871 -312 GAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGT BIEBIGI<IIIGDCBIII at FGHG@IIIB?BIGEH>C>IFIIHEFGICGIIIGGIHH at IFIIEIGIAIFIHIHIIFGGGHIIIHIIHIIIIGIIIIHHIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7082 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.470 99 1 5902 255 100M = 6118 316 GATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGAATTGAATCCGAACGGGTAGTGGCAGCTCTTACGTAGTCTTTGCC IHIHHIHHIHIHHHIIIGHHIIIIIIEHGEIGGIGGIIIHDGFIIGIIEGEIGIIIEIIGCIIEIDIHFGIIIFCICFICIGGGDI at DCIIHICI@IIII NM:i:2 MD:Z:55C18T25 oR:Z:1 oH:i:1 oP:i:5901 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.470 147 1 6118 255 100M = 5902 -316 ACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGAT IE>IIHCEIIIAIBCGHIC at DG?IHIC at IDE:GEIIHDHEDIGEIEIEIIIHEGIIIGIIGICHGBGGFGFHIGHIHHHFIGEIIHIIIHIIIIIIIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6117 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.471 83 1 5977 255 23M1D77M = 5782 296 TGGCAGCTCTTACGTAGTCTTTGCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGC AFCIIDIIIDIIGHI;IIFFIIIBEIIIIDIFIIFEFDIHIGIIFIIIIIHIIHGGEIIIAFIHGIIGIIIHGHIIIHHHHHIGIIIIHIIIIIIHHHHH NM:i:1 MD:Z:23^C77 oR:Z:1 oH:i:1 oP:i:5976 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.471 83 1 5977 255 23M1D77M = 5782 296 TGGCAGCTCTTACGTAGTCTTTGCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGC AFCIIDIIIDIIGHI;IIFFIIIBEIIIIDIFIIFEFDIHIGIIFIIIIIHIIHGGEIIIAFIHGIIGIIIHGHIIIHHHHHIGIIIIHIIIIIIHHHHH NM:i:1 MD:Z:23C77 oR:Z:1 oH:i:1 oP:i:5976 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.471 163 1 5782 255 100M = 5977 -296 GCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCA IIHHIHIHHIIHIHHIGIIGFHHIHIIFFHHGIIGIHHGIFIIGIIIABIIBIIIIHHFIIIIAIIIEHF>IDIIBDFII at I>GIGIIIHD at DIFIIEI< NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5781 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.472 83 1 777 255 100M = 604 273 GGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTTGTCACTTCAAGGCAGGTGTCCGCCT DIDGII>IGCICIAIEFCIIIIIGECIIDIGIBIFBIHHEGIHHIBIHIIEGIHIGIICIDHGHDIIGGIHGGIBIDIGFIIIIHGGGIIIIHIHIIHIH NM:i:1 MD:Z:74C25 oR:Z:1 oH:i:1 oP:i:776 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.472 163 1 604 255 100M = 777 -273 CCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCA HHIHIHHHHIIIHIGHIIIHIIIHIIIHIFIHGFIIHIHCFHICIFDIIDDFGEAHIIIDIEIDIIIIEDGFCDFFGBIIIABHCGIDH?HI@;IIIBFI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:603 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -1047,7 +1047,7 @@ simulated.522 83 1 8305 255 100M = 8066 339 AGAAGCGGGACGCCGCCCCTCTGCAGACGGCGATTT
simulated.522 163 1 8066 255 100M = 8305 -339 AATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAAC IHHIIHIIHHHIGIIGHIIIIHIIGFGEIIIHIGIIIGICIIEHHIEEIIFIEDDCGIIAIDGIIHIFIIAIICDIDGGAEIHFFI;IGA?CIA at IIBID NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8065 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.523 83 2 714 255 100M = 496 318 CGAGGTGCCAGAACTAATAATCGGACGGTGGTTTTGTCAGTGTCTATGGCCCCATGCATGCAGATGATCCCTTATGTGCCAAAAACGGGTACCCGCTAGC CIIIEEEIIIAD@>BFFI at IGIEIIFICIAIIEIDGFEI=HGCIDDIHIECFGFIFIEIIIIIIIHHHHEIGFFFIFFIHIGHIHIHIIFHIIIIHHHIH NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:713 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.523 163 2 496 255 100M = 714 -318 AGATAAGCACTAAGATGGCACTGGCTATTCCCCCTGGTGCGCTGGTGAGTAGTGATTAGTCTATTTACCTCTACGAATTGGAGCTCCGTCGGATCGCGGT HHIHHHHHIGHHIGIIFIIIGHHHHIHIIIFIIHIICIEIHGHIHG at FHFEGICHFIGIFIIEIGIBIHIIEIIIIIIECHIIIIBIDIBEEFHEAIEII NM:i:1 MD:Z:46A53 oR:Z:2 oH:i:1 oP:i:495 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.524 83 1 7755 255 100M = 7571 284 GTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCA 59IDID<E9HIIFIDIAICGIGIDIBEIIEAHIIIEHEADIBHFIGIIGHEIEIIDGHIGIIIEIGHIFIIIIGIGFIGHGHIIIIHIHHIHIHIIIHII NM:i:1 MD:Z:0C99 oR:Z:1 oH:i:1 oP:i:7754 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.524 83 1 7755 255 100M = 7571 284 GTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCA 59IDID<E9HIIFIDIAICGIGIDIBEIIEAHIIIEHEADIBHFIGIIGHEIEIIDGHIGIIIEIGHIFIIIIGIGFIGHGHIIIIHIHHIHIHIIIHII NM:i:1 MD:Z:C99 oR:Z:1 oH:i:1 oP:i:7754 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.524 163 1 7571 255 100M = 7755 -284 CCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCA IIIHIHHIHIHIHIIHGHGIHHHGIGHFHGHIHHIIIIIFHIGIGIIIEFHIIHFEIEFDFCGHII>DIIIID?IICAICIHFI:IHII>HG=I at IIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7570 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.525 83 2 476 255 100M = 260 316 TTCCATACAGCTTCTAACTCAGATAAGCACTAAGATGGCACTGGCTATTCCCCCTGGTGCGCTGGTAAGTAGTGATTAGTCTATTTACCTCTACGAATTG IH>IAIIEGEHI?CGFEIIICDIIFBIGEGHICE at DIIHIGHIHIGGIIIDIDIGCGHIIIIIIIFIGIEIIIHIGIHHGIHIHIHIIGGIGIIHIHIHI NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:475 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.525 163 2 260 255 100M = 476 -316 GATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTG IHIHIIIHIGHIIIHGIHGHHHHIFIGHGHIIIIFGGFIHGHHDIEIEGHHFCGIHIFIIBIIIEHIIHIF?IFIAIIDIIIEF7FCIIIFIAII>IIID NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:259 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -1097,7 +1097,7 @@ simulated.547 83 1 3799 255 100M = 3560 339 GGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGT
simulated.547 163 1 3560 255 100M = 3799 -339 TTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTGATTTTGTCTACGGTCTACCACTTGATCTAGAAGC HIIIHIHIIHIGIIHIHIHHHGIHHIHIDHIGIHIGIIIHGHGGIIIGEIHBFCECHIIIDDIIGFICIIIIHEDG@;D<D at HGIIIIBGIDECIIGIA: NM:i:1 MD:Z:65T34 oR:Z:1 oH:i:1 oP:i:3559 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.548 99 1 6508 255 100M = 6716 308 GTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTT IHHIHHHHIIHHIIIIGHIHIHIIHIHIEIHHFFGIIIIIFGFIIIIIIIIDIFIIFIEIIIIIIAHIDEIIIIGIII=BIIFGH at AIICGIIHHIFB;I NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6507 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.548 147 1 6716 255 100M = 6508 -308 ACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGC EGI:IG<HIII=FFCEFHIII>GIEIDABGGIEBEDIEIIHCIFIHCIIICIIGHEGFGHGEIGIHHHFGHIIFIIFIIGGFIHIIIIIIHHIHHHHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6715 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.549 99 1 6008 255 43M1D57M = 6249 341 CTGAGTGAAAAGAAAGCCCCCCTGTGATAGACATCCGGCGTTAGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTT HHIHIIHHIIHHIIIGIIIIIIIIGHIGGIIIIEFGHIIIEIDIDFGGHEIEGIIHIGCCFFGGGFIIDIIICFFHIFIAII at IHGIAHDIHIIIG@DII NM:i:2 MD:Z:23A19^T57 oR:Z:1 oH:i:1 oP:i:6007 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.549 99 1 6008 255 43M1D57M = 6249 341 CTGAGTGAAAAGAAAGCCCCCCTGTGATAGACATCCGGCGTTAGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTT HHIHIIHHIIHHIIIGIIIIIIIIGHIGGIIIIEFGHIIIEIDIDFGGHEIEGIIHIGCCFFGGGFIIDIIICFFHIFIAII at IHGIAHDIHIIIG@DII NM:i:2 MD:Z:23A19T57 oR:Z:1 oH:i:1 oP:i:6007 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.549 147 1 6249 255 100M = 6008 -341 GTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAA FGICCAIEIAFIFIIIIGII?IIHAIAGIIHAGGDIGFEIIIDICEIEGEIHIIAFIIIIGIDIHIHIHFIGIGGFIFIGHIIHHGHHIIHHIIHIIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6248 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.550 83 1 6947 255 100M = 6723 324 CGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGT IIICDCIDEEBCIGIFHGIIIEI=DIHFFG<IFEIIIIEIIFHDHICIIIIHFIHIIIFHIGIDIIGHIIHGGHIHHIHHIIIGIHIHGHHHHHIHHHIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6946 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.550 163 1 6723 255 100M = 6947 -324 AAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATA HHIHHHHHHHHHHIFIIGGHIIHIIHEEIIHIIIIIIFFIFIIIIFIIHIIHEGFGIHCIIDEFIIIEADIIIFIFHIEIHIIAEIIIIGIIIGIHIIIC NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6722 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -1372,7 +1372,7 @@ simulated.684 163 1 8969 255 100M = 9170 -301 GGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCA
simulated.685 99 1 84 255 100M = 294 310 TGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAG HHIIIHHIIGHIHIHIFHIGHIIHEIIHIGIIIHGGIIHGEIIIHGGI at DIIIIIEHEIIICIICBFIIICIFIIFIIG@FIII at I>F@@IFH>IIGIAG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:83 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.685 147 1 294 255 100M = 84 -310 ATCGCTTATTAAGGNATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTA BDEIIBIFEIIH<IAIB=HHAC9GI>IHGFCIIHIIIDI at IIIHGICIHDDIDIFIIEIIIIEEEGBIFGIIHHGHGHIIIGIIHHHIIHHHIIHHHIHI NM:i:1 MD:Z:14A85 oR:Z:1 oH:i:1 oP:i:293 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.686 99 1 7319 255 100M = 7501 282 CGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGCGTGC IIHHIHIHHHHFHIHIIIIHIHIIIFHIIHHFHFIGIDIFHDFIGHIDDIGFFIGCGFGFICHIIIIICCIFIF at FAIIIBIIIDIIIIEIHEIDIGGAI NM:i:1 MD:Z:95A4 oR:Z:1 oH:i:1 oP:i:7318 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.686 147 1 7501 255 100M = 7319 -282 TGCATATCCCTGCACCTTTCATAGCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTAT GIDGBIIIEIF;IGIECIIIFI6BHIIIBIHIB=GFFCIFIIDIIHIHGIIHIIIFFIIIIHIIGIIHIIGGIIGGHFHEGHIIIGHIHIHHHIHHIIIH NM:i:2 MD:Z:22T0T76 oR:Z:1 oH:i:1 oP:i:7500 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.686 147 1 7501 255 100M = 7319 -282 TGCATATCCCTGCACCTTTCATAGCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTAT GIDGBIIIEIF;IGIECIIIFI6BHIIIBIHIB=GFFCIFIIDIIHIHGIIHIIIFFIIIIHIIGIIHIIGGIIGGHFHEGHIIIGHIHIHHHIHHIIIH NM:i:2 MD:Z:22TT76 oR:Z:1 oH:i:1 oP:i:7500 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.687 99 2 103 255 100M = 328 325 TCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTA IIIHIHHHIIHHHIIHFHHHGHEGIGHHIHHFIDIGFIIIIHGEIGIFIFFGGFACII at IIEHIIFGIIHIIIICI<ICIHCFDHIFBIIFH8IIC?II= NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:102 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.687 147 2 328 255 100M = 103 -325 ACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGCTAAGCCAATTTAATCAGACTAG IDCI;I at HIIHDEFIHIEIIBDIGIII?IHGIHIIFHB at IIDEIDHGEIHFIHIGGIHIGIIHIEIHIHFIGIHFGFHFHGGIIHIHIGIIHHIIHHIHH NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:327 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.688 83 1 7497 255 100M = 7310 287 TTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATT EIIIHFI;FICIIIDCEIIEIIF at ICIGGHBBIHIAHIEIIIIIIIIIIIIIGGIGIGICHFEEIIHIIHHIHIIIIIFIHIIIIGIIHIHIHHIIHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7496 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -1454,9 +1454,9 @@ simulated.725 147 1 2843 255 100M = 2641 -302 AAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTA
simulated.726 83 1 1719 255 100M = 1535 284 CGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAG <IIBCGII>HHIHFHIHIHIIIEIBDIFIIEFIIIC?GDIEFEIDIGGHEIDHGHHEHFHHIIEIFIIGIIIHFIHIHHIHHIHHIHHGIHHHHHIIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1718 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.726 163 1 1535 255 100M = 1719 -284 CTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAG IIHHIHHIHHIIHHIHHIEIHGIHIFGIHGIIFIIIGGHHH at IIGIIGGIIIIEFBCEIHHIIGIDIDIIFIIIIIF@HIHGIBIIIHII;IIDFIFGIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1534 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.727 83 1 8128 255 100M = 7952 276 CGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATT DII=EHIEBIIGIDI>BCFH<DBIFAIIICHIIIIEAHIIH=IICFDICGIIIDHHEIEIGGFIHIIIFEHIHIIFHIHIHGIHIGHIIHHHHHHIIIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8127 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.727 163 1 7952 255 100M = 8128 -276 AGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCACCGGGCTCATAGTATTGTTGAATTTCACGATCGCGACTC HHIHIIIHHIHIHHIIIIGIGIGFHHIIIIIIGIGIFDIIGDIHDIIIIHGICEDICIFIE:HIHGIGGIADIIEICHIHFFEIIIIGFBHI=III;CII NM:i:3 MD:Z:61A34G0G2 oR:Z:1 oH:i:1 oP:i:7951 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.727 163 1 7952 255 100M = 8128 -276 AGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCACCGGGCTCATAGTATTGTTGAATTTCACGATCGCGACTC HHIHIIIHHIHIHHIIIIGIGIGFHHIIIIIIGIGIFDIIGDIHDIIIIHGICEDICIFIE:HIHGIGGIADIIEICHIHFFEIIIIGFBHI=III;CII NM:i:3 MD:Z:61A34GG2 oR:Z:1 oH:i:1 oP:i:7951 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.728 99 1 3166 255 100M = 3397 330 CTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTATCCGTTA IHIHIHHIHIIIIIGIIIGIHIIHHHIGIIIIFHGHGIGIIGHHIIIIEIFCIIIIFIDCIDIGGCFHAEIGII at IGII@IIIEHIIHICICDCFIIIDG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3165 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.728 147 1 3397 255 82M1I17M = 3166 -330 GCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAGATGGTAAATCTTTAAGA 9DID?IHHBIGII4DHIIIIIBIGIBIID?IIIEIIIBEDEIIHGIIIEGCIGEIDIIFHGIHHIIEHIGIIGIFGEIGIIICHIIHIIIGHIIIHHHHH NM:i:2 MD:Z:0C98 oR:Z:1 oH:i:1 oP:i:3396 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.728 147 1 3397 255 82M1I17M = 3166 -330 GCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAGATGGTAAATCTTTAAGA 9DID?IHHBIGII4DHIIIIIBIGIBIID?IIIEIIIBEDEIIHGIIIEGCIGEIDIIFHGIHHIIEHIGIIGIFGEIGIIICHIIHIIIGHIIIHHHHH NM:i:2 MD:Z:C98 oR:Z:1 oH:i:1 oP:i:3396 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.729 99 1 2096 255 100M = 2254 258 CCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGT HHIIHHIHIHHHIIFGHGHIFIIIHIIFIDGIIIEGGHBHFFIIHIEIIFIIIIICCIHIBICIHGGIGCIEIDEIIIAHIIF>AEIIIIIIIGIDEDII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2095 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.729 147 1 2254 255 100M = 2096 -258 TGCACGTAGACTACCGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTC IEIDG>IIIBIFFI>=IE at IIDFHIIBG@IE?IEBIHIICIIIIDIIIIFFIGIHGIIIEIHIIIHIGIIIGGGGIIIIHHIHHGIIIHHHIIHIIIHII NM:i:1 MD:Z:14T85 oR:Z:1 oH:i:1 oP:i:2253 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.730 99 1 4707 255 100M = 4911 304 CCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAACATCCGTGTTCTAAG IHHHHHHIIIIIIHFIIIFIIIGEHEFIIIHIIGHFHIIIIIHIIICIGDGIIIBGFEIDHIIBIFD>IHIFIDIICIEI=G?IIGCIIIIBFF>IBBFI NM:i:1 MD:Z:85A14 oR:Z:1 oH:i:1 oP:i:4706 oS:A:F XE:i:1 XS:i:0 XI:i:0
@@ -1716,7 +1716,7 @@ simulated.856 163 1 7907 255 100M = 8129 -322 CTGGGTCAATGGATTCGAATGCAATGCGACAGTC
simulated.857 83 1 4849 255 100M = 4657 292 ATTCACCTATTATCAGTTGACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGC II9II?ABI?ADIIHEDI:HIIHDCIIIEHAHHGIHIHGHHIHFIFGHHHIHIIGIIGIFDIHIIIFHEHIHFHIIIHIHFIHIIIHHIHIGHHIIHHHI NM:i:1 MD:Z:18T81 oR:Z:1 oH:i:1 oP:i:4848 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.857 163 1 4657 255 100M = 4849 -292 TGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTCCGTATCCTATCTTTCGCTCCGCTTCTCCCCCAAACCTCCTCATGGA IIHHHHHIHIHIHHIIIIGIFIHIIIIIIIHIIIIIGIIIIFHIGIGHIGIID:EIFIGCACIIIHG at IIIHHHDIHI>DHAIHBIIGBIIDDHIAHIIC NM:i:2 MD:Z:53T24A21 oR:Z:1 oH:i:1 oP:i:4656 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.858 99 1 4050 255 100M = 4237 288 GCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATA HIIHHIIIHHIHGIGIIIIGIGIHIIIFIIIGIIDIHEFGBAIIIFGEHFIEDGGGFFIIIIIHEIII=EGDIIGICDAI at IIHCCEGIAIIGIHBDIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4049 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.858 147 1 4237 255 54M1D46M = 4050 -288 AACGGGCCAACATACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCAT IDII=BB=IIGAEIIHDIIAI<FACG=G=HDEIIAGCFGIIDFIICIIIIHIIIIGFIIHGIIECIHGIHEFFHGIIIIIHHHIHIHHIHGHHIHIHIHI NM:i:2 MD:Z:11C42^G46 oR:Z:1 oH:i:1 oP:i:4236 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.858 147 1 4237 255 54M1D46M = 4050 -288 AACGGGCCAACATACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCAT IDII=BB=IIGAEIIHDIIAI<FACG=G=HDEIIAGCFGIIDFIICIIIIHIIIIGFIIHGIIECIHGIHEFFHGIIIIIHHHIHIHHIHGHHIHIHIHI NM:i:2 MD:Z:11C42G46 oR:Z:1 oH:i:1 oP:i:4236 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.859 83 1 5994 255 100M = 5784 310 TCTTTGCAGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCC IHH;FII9IGIIIIGIEEEFFIICIH=IFIDIIFFAIFCGIIIDDIIIGIIFHIIGIDFIIIGGIIGIHIIIIIIFIHHFIIGHHHHHIHGHGIHHHHII NM:i:1 MD:Z:7C92 oR:Z:1 oH:i:1 oP:i:5993 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.859 163 1 5784 255 100M = 5994 -310 ATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACT HIIIHHIHIIHIIHGHIIIHIIHGIIHGIEIGIFIIIIEIIIIIEBHFIHGIGIBIIIIAIIGCDFIFFIIDAIIIIIFID at AFH?IIEDDII=FIIICB NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5783 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.860 99 1 5947 255 100M = 6118 271 CGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGC IHHHHIHHIHIIIHFIIHFIIIGGIIGIGIEIIIIGFIIHFGEIGHIIIHEIBIHDII?DIFIIBIIIBIIIFDH8HHDIIIGIHFIGB;CHIHIDGAIA NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5946 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -1754,10 +1754,10 @@ simulated.875 147 1 3096 255 100M = 2880 -316 ACGTATGTCTTCCAATTATCGTATATCGCAAGCG
simulated.876 83 1 7246 255 100M = 7067 279 AAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTC I>IIEIEIDFID=IEIDII?CDEIIBFIIBGECGB at EIIIIFHHIIIFCHIEHIGAHIHFIIIFFGIEHIHHIGHGHFIFIGIGGHIHGIHHIIIHHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7245 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.876 163 1 7067 255 100M = 7246 -279 TTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAG HHHHHIHHHHHHIHHGHIIHIIGHIIIIIHFHIEIHIGIIFFIIIIIIIEIGIBIIIFIIHAICHFBIDGIHEG?IAICHIIIFIEIFFDICI=III;I@ NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7066 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.877 99 1 6726 255 100M = 6903 277 CTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCCCGCGGTCGCTACCATATAG HIIIIIHIIHGIHHIIHIGHIIHHFGIIGIHHHIGIIDIHFIIFCCIFFIIEGDIIIHCFIIAAIIIIFIHID?IHI9IH>GIIGII>=DFII>IIIICI NM:i:1 MD:Z:80G19 oR:Z:1 oH:i:1 oP:i:6725 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.877 147 1 6903 255 100M = 6726 -277 CTGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGT 0II8IIGICC<GIGID<GIIHF?IIEIBICCIIFIDE>EIEIHIGIHFEHFCFGEDIHIIIDEIIIIFIGDHFHHGGFIIIIIGFIHIHIHHHIIIIHHI NM:i:1 MD:Z:0A99 oR:Z:1 oH:i:1 oP:i:6902 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.877 147 1 6903 255 100M = 6726 -277 CTGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGT 0II8IIGICC<GIGID<GIIHF?IIEIBICCIIFIDE>EIEIHIGIHFEHFCFGEDIHIIIDEIIIIFIGDHFHHGGFIIIIIGFIHIHIHHHIIIIHHI NM:i:1 MD:Z:A99 oR:Z:1 oH:i:1 oP:i:6902 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.878 99 1 1889 255 100M = 2075 286 CTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGG HHHHIIIIIIHIIFIIIIIIHIEGIGGIIGHGIFIGGFGHGFIHIIIIIFFIGIIGIGIIF at EIEAIC?IFE?HDIIHIDEBII<II>IIIHIFI>FDBI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1888 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.878 147 1 2075 255 100M = 1889 -286 CCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTAC @GIDFIIHIGIICIIIFHEHHDEFII?FAIDIGFFFIIIIEIBFIIEIICCHEHIFHGHIEIIIGIEHIFIGFIIIIIIIIGHIIHGGIGIIIHIHHIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2074 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.879 83 1 2934 255 100M = 2717 317 GATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCG DIDIIHHFI9DIIIIIIADIIBIEIIIIIIIFICIBIFHFFFH>HIECFDIHDFHIIFEGBIIIHGEGIIGGHIHHGFIGHIIIIIHIIHHHHIHIIHIH NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:1 oP:i:2933 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.879 83 1 2934 255 100M = 2717 317 GATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCG DIDIIHHFI9DIIIIIIADIIBIEIIIIIIIFICIBIFHFFFH>HIECFDIHDFHIIFEGBIIIHGEGIIGGHIHHGFIGHIIIIIHIIHHHHIHIIHIH NM:i:1 MD:Z:T99 oR:Z:1 oH:i:1 oP:i:2933 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.879 163 1 2717 255 100M = 2934 -317 TAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTCCTATGTCCCCTAACTTTTGAAAC IHIIIIIHIHGHHHIIIGHGIIHGGGGIGHGIHFGIHIHGIDIIEGIGIFIFAGHIIIIICAIIAIHIIC?EFEDF:DIEIIIII at IIEGHIIIIBDIII NM:i:1 MD:Z:76G23 oR:Z:1 oH:i:1 oP:i:2716 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.880 99 1 5604 255 100M = 5786 282 CAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTT HIHIIIHIIHHIHIHHIHHHHHFIIIHHFIIIFGGGHIIICIIHFGHCBIHGIEIIIIDFDEDIIIIAFIDHBICECECI at IEFIIIHII9HIH;DIFHE NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5603 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.880 147 1 5786 255 100M = 5604 -282 TGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTG IIICICHGIIAIIIIEI at BGGGBIIACI@?IHIIIIIHHGDIBIHGCHHIIBIEFIHHICDIIFHIIFIIFIFIGIIIGHIHHIIIIHHHHIIHHHHHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5785 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -1769,7 +1769,7 @@ simulated.883 99 1 7888 255 100M = 8102 314 CCCTAAGACAAGGCATACGCTGGGTCAATGGATTCG
simulated.883 147 1 8102 255 100M = 7888 -314 GCTCGGAATTCTGAATGTTCAGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACA HIBIIICFIFH=IICDGFIEFGHIIFD<GAGGIIAIAFHFGIAIIGFIIIDFIHEIEGGIIIIGIGFGIIDFIGFHHIFIGIIGIHIGGHIHHIIHIHHH NM:i:1 MD:Z:20C79 oR:Z:1 oH:i:1 oP:i:8101 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.884 83 1 5989 255 100M = 5794 295 CGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACT IIII at EIII;IIHGGDHIHIICFHFIDFCIEI?ICIIEFIIGICHIIGIEEIIEEIIIIHIIIFIIHIDGIHFIIIGIIIGGHIIIIIIIIHHIHHHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5988 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.884 163 1 5794 255 100M = 5989 -295 GCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTC HIIIIIIIIHIIHIIIHHIIFGHIFFIGHFFGGGIIHIIDIIIIGIIGIEGIAE?GIADIEIGIFEIIFDEIIIGHHIIBIHFIDIFGIIGFIEHHIIAE NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5793 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.885 99 1 439 255 100M = 651 312 TGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATCCCAGAAAGTAGTTGAGGAAG IIHHIIIHIHHHHIHIHGGIHIIIHIIHIIIIIGIGIGI at IGHIGIGFHIEIIIDGIHCIIHBGGDCHIDIAGHIHIG@?F>IBIGIGGGIIIADA?B=C NM:i:3 MD:Z:79A13T0C5 oR:Z:1 oH:i:1 oP:i:438 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.885 99 1 439 255 100M = 651 312 TGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATCCCAGAAAGTAGTTGAGGAAG IIHHIIIHIHHHHIHIHGGIHIIIHIIHIIIIIGIGIGI at IGHIGIGFHIEIIIDGIHCIIHBGGDCHIDIAGHIHIG@?F>IBIGIGGGIIIADA?B=C NM:i:3 MD:Z:79A13TC5 oR:Z:1 oH:i:1 oP:i:438 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.885 147 1 651 255 100M = 439 -312 CGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGAT IIIIIGIIFIIIIIIHIC?IB?<I<IIEAIIIIHIIHFIIIHIIFIGFGIGIFHHIDIIIIIIIIIGEGHGGIFHFHIIHHIHIHHGGGIIIHHHIIHIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:650 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.886 83 1 7643 255 100M = 7460 283 GGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGG I>FAI=IBDF;CI=BEIIBGIF at IIIFEIGIIIGIBIEIIEIFHEIIIFIIIEHCIIIHIFFGIIIIIHIHIIFIHGFHGHIIGHIHIIIIHIIHIIHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7642 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.886 163 1 7460 255 100M = 7643 -283 TATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAA IIHHHHIHHHIHGIHGHHIHIIHIGIHIFHIHFGGHHIIHHIIFHIHIIHIIIIIHFIDDGG at IIIFIIIHHIIIIHIBGIIEIIDIEIDIIIIIGIIDA NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7459 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -1797,7 +1797,7 @@ simulated.897 99 1 2479 255 100M = 2657 278 AGCCAGTGAATCGCGTGATACATTGCCTTGGAATCT
simulated.897 147 1 2657 255 100M = 2479 -278 ACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGC IIIEBEGCDD=IE?FFIDIGIIHIIHHIIICH?GIIIEBIEIFIBIIIIIFIFIFGEGIHEEIGIIIIIIIEHIHEIGGGIIHIIHGIHHIIIIHIIIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2656 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.898 83 1 1645 255 100M = 1402 343 CAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAG AIIEEII>=II at I?DFEFHEIHIHGIIHBHDDDHIHEIBDHIBFIGGGGIIIFIEIIIIIEGIIGIHIEIFHIGHIIGFIIIGFIIIIHHIIHHIIIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1644 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.898 163 1 1402 255 100M = 1645 -343 GACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCTGGCCCGCCCAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTC HIIHHHHHHHFIIIIHGHHGIIIHFIHHHGIIHIIGIEHHIIDIIIIGHIGGGICEIGIBIFIGDB9FIIHFCIIHBIIGIFIIBIFCD at GIIIIFIIII NM:i:2 MD:Z:58C7A33 oR:Z:1 oH:i:1 oP:i:1401 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.899 99 1 473 255 7M1D93M = 644 271 CGCACAGTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATT HIHHHIHIIHIGHIHIIIHGIHIGIHIIHGFGHICIIHIIIIIIEIGGIGIHIGIEIHFIHCBE at G@IIFEIIIIIIFI at CIIII?IFIIBI>FHHAIGI NM:i:1 MD:Z:7^T93 oR:Z:1 oH:i:1 oP:i:472 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.899 99 1 473 255 7M1D93M = 644 271 CGCACAGTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATT HIHHHIHIIHIGHIHIIIHGIHIGIHIIHGFGHICIIHIIIIIIEIGGIGIHIGIEIHFIHCBE at G@IIFEIIIIIIFI at CIIII?IFIIBI>FHHAIGI NM:i:1 MD:Z:7T93 oR:Z:1 oH:i:1 oP:i:472 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.899 147 1 644 255 100M = 473 -271 GACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGC IEIIFICBCEIAIDICIIBGG;IHIFIIEIHIEIIDFIIIIIIFIIIIHGIFIIIFHIIIIEHIGIFGGIHHGHFIHIGFGFHIIIIIIIHIIHHIIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:643 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.900 99 1 2849 255 100M = 3080 331 CTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGNGCCTATGCAGNGTGCTACCTATACTTTTCGGCTATGGTGACGGCATA IIIIHIHHHIGIGHGHHHIIIHIHIIHGGGIIIHGHIIIIEFIGIIIIICDGBIIIIDHIEIBGBGIIICIEECGECFHAI?FGCHEI>IHAIIIIHIBI NM:i:2 MD:Z:52T10T36 oR:Z:1 oH:i:1 oP:i:2848 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.900 147 1 3080 255 100M = 2849 -331 ACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGA IIIIFI at GIGIIIHIIFIIFIIFIIHIIIGBCDHHDBIIIDHGIIIGBFIIGIGIHIGIGIIHDIGCIGGIHHEIFIIIHEHIHHHHIHIHHHHHIHHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3079 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -1808,7 +1808,7 @@ simulated.902 147 1 9042 255 100M = 8830 -312 ATAGCATGTGCGTTGAACAACCACTACAAAGGAA
simulated.903 83 1 9127 255 100M = 8928 299 GTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAA GDICIFFGIICIII?FIIIIIIIIIIFGIFDGCGHFIHIIEIIHIIIHHIHEGAFIDGIGFGIIIGIFICGIEHIHFIIIHGFHIFHIGIHIHHIIHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9126 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.903 163 1 8928 255 100M = 9127 -299 CCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGANTATGATG HHHHIIHHIHIHHIGHGIIHIHIIIIFIGHHIFEFFGIEBGGFHGFIIFIIIIGEEIIGDEEIFGEIIHCHIIGIIEHI>FIIEIGFCCIIHCIIIIFIC NM:i:1 MD:Z:92T7 oR:Z:1 oH:i:1 oP:i:8927 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.904 99 1 132 255 100M = 341 309 GTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAAGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCC IHHHIIIIIHIHIIIHGIIIIIFIHGIIGHGGIIGFEEDDIIIEGIIGIIIIEGICIDEFCIIIIIDHIBIIFICEIFIIHFHIIIBI?BIIIECHHICH NM:i:1 MD:Z:35G64 oR:Z:1 oH:i:1 oP:i:131 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.904 147 1 341 255 100M = 132 -309 TCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCCG IAAGHHI6GFICFIFDCIBFIICG<HGIHEIIIIIIGGBIHIDCIIEGIIBIIEFFICIIHEIDGFIIHDHGIIHGGIIIHIIHIHGIIHIHHIIHIIII NM:i:2 MD:Z:0G97T1 oR:Z:1 oH:i:1 oP:i:340 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.904 147 1 341 255 100M = 132 -309 TCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCCG IAAGHHI6GFICFIFDCIBFIICG<HGIHEIIIIIIGGBIHIDCIIEGIIBIIEFFICIIHEIDGFIIHDHGIIHGGIIIHIIHIHGIIHIHHIIHIIII NM:i:2 MD:Z:G97T1 oR:Z:1 oH:i:1 oP:i:340 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.905 99 1 8226 255 100M = 8418 292 TTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCANAAGAAGCGGGACGCCGCCGCTC HIHHIIIHHHHIIHIGIHHIHIGFHHIIIGIIIHCEGHIIIIHBCIIHIHFGFIIIIFII at IIIIIIHDIIIHIHH?:FIFIIIID?IEDF=II6ICFII NM:i:1 MD:Z:77T22 oR:Z:1 oH:i:1 oP:i:8225 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.905 147 1 8418 255 100M = 8226 -292 CATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTG BIDI at II??IIEIDIBI;?IIIIIIIIDEFIGIDIIIIIIEIEIIIIGIDHHGIEGIFHGFIGHHFGIHIDEHIIGIIHIIHIIHHHGHGIIIIHIHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8417 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.906 99 1 5121 255 100M = 5335 314 GTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCA IHIHIIIHIIHHIHIHIIHGGFHIHIFIEIHGHIHGIFIHAHDIIIIHIEDHHIDIHFIIIIIGIIIIHIEGIAADEFIIGEIHIIGIEEIIIIIEI>FA NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5120 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -1846,7 +1846,7 @@ simulated.921 163 1 7382 255 100M = 7621 -339 AAATATCCGCCATGCCCTCGTAGCCTTGTGTGAG
simulated.922 83 1 385 255 100M = 196 289 AATGGACTAGCAAACCCTGTCGAGATAGCCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAG I;9CC2>CICI7IIIHIEGFHIGIIEIFCIIID at EIIIHIFAFDEIIHIIIIIGIIEHHIIFHIIIIIGHHIIIIGDIGIHGHHIIIIIIIIIHIIHHHI NM:i:2 MD:Z:5C22G71 oR:Z:1 oH:i:1 oP:i:384 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.922 163 1 196 255 100M = 385 -289 ATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGGTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAGT IHHHIIHHIHIHHHHIHIFIGGIFIHGEHIIIHIHGBIII at IIIIIFHFEIIIIHIDIBGIBFBH@IHIFIIIHEACEIIF>HB?ICIIIBFCIH8AFII NM:i:2 MD:Z:40C57A1 oR:Z:1 oH:i:1 oP:i:195 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.923 99 1 2433 255 100M = 2650 317 ATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTT IHHIIIGIIHHHIIIHIIIIIIGHIIIGIGIHIFIEFCIGGGHIEIEGGIIHHHIGCIDBIADFIIFEGICIEAIIG>HIHIHIABFCIEIIIIFID at II NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2432 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.923 147 1 2650 255 100M = 2433 -317 NTCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGA EEIIIICIEICII?IICIIIHB>IHHIIHCFIGIIIIIGGIIBFIHEIIIIIIHIGEHHIIEGFFFHHHFIIHIIHGHIIIHIIFIIHIHIIGHIIHIHI NM:i:1 MD:Z:0A99 oR:Z:1 oH:i:1 oP:i:2649 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.923 147 1 2650 255 100M = 2433 -317 NTCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGA EEIIIICIEICII?IICIIIHB>IHHIIHCFIGIIIIIGGIIBFIHEIIIIIIHIGEHHIIEGFFFHHHFIIHIIHGHIIIHIIFIIHIHIIGHIIHIHI NM:i:1 MD:Z:A99 oR:Z:1 oH:i:1 oP:i:2649 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.924 83 1 3292 255 100M = 3044 348 TTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATG IHIIIAGFGDG?IIIIIIIIIIIIGGIIE?CIIIHIIBIIFIIFFIIGIHIEFIIIIIAFIIIIIFIDHIIGFIHGIIIHFGIHHHHHIIIIHIHIIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3291 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.924 163 1 3044 255 100M = 3292 -348 AGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAGTTATCGTATAGCGCAAGCGCCCACATCGCTGGG HIIIIHHHIIHHHIIIHHIGHIHIIGIFHFHHIGEDFFGCGIIIIIGGIDAIGHICHBIIHAIDIC>IIADHIIIIIIHCHICEAI?H?I7BIHIIIIFE NM:i:1 MD:Z:66A33 oR:Z:1 oH:i:1 oP:i:3043 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.925 83 1 5457 255 100M = 5254 303 AACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACC AIIIHIIIIIIBGGEICFDFICDIHIIIIIICGIEIEIHIIICIIIEHEIIHIHFHGHEFIBIIIHHFEIIIGHIGHIIGGIHGIHIHHHIIHIIIHHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5456 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -1919,7 +1919,7 @@ simulated.958 99 1 7707 255 100M = 7927 320 AACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGG
simulated.958 147 1 7927 255 100M = 7707 -320 GCTATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTA IHDEIAII:ICIGFIDICGGIIII?HIEIIICIIEDIIECHIIIFGHIIHEIIBFIGFHIGIDIGIIHFIIGIHIIHFEHHHGIIHHIHIHIIHIHHHHI NM:i:1 MD:Z:2A97 oR:Z:1 oH:i:1 oP:i:7926 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.959 99 1 5347 255 100M = 5536 289 TGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTT IHHIHIIHIGGHHIIHIIHHIGIHIFIGGFGEIEIGIIFIIHCIDIHIHFCIIEGHDGIAEHIHDE at ICIIIIIIIIIDFIG@IIHGFCHIHIII?E at IC NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5346 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.959 147 1 5536 255 100M = 5347 -289 CCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACC IIICIHEIIIIIHGIIIEIIGIIIIIIGIIEIIIE at FIIIGIHIFGIIGGGDDIHIIHEIFDDGGIGHFIGDFHIFIIFFHHIGIHHGIHIIIHHHIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5535 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.960 83 1 8845 255 100M = 8623 322 GCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAA BIIHIIFIA:IIIIGIICIEDIHEIEHIIIGIIIIFIIIIHIIFFIIIHIHHIIGIIIIGHIIIFEHIFHIFIGHIIHIFGIHIIIHHHFHHIIIIHIHI NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:1 oP:i:8844 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.960 83 1 8845 255 100M = 8623 322 GCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAA BIIHIIFIA:IIIIGIICIEDIHEIEHIIIGIIIIFIIIIHIIFFIIIHIHHIIGIIIIGHIIIFEHIFHIFIGHIIHIFGIHIIIHHHFHHIIIIHIHI NM:i:1 MD:Z:T99 oR:Z:1 oH:i:1 oP:i:8844 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.960 163 1 8623 255 100M = 8845 -322 TGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCA IIIIHIIIHHIIIIIGFIGIHHHIIIGIIIGIIIEHGIIHIHDFIIGGHEIIEIGFIIHHFHDEDGFI@?GCAIIIIIIGIFH=II at HFEHIG?I;IICI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8622 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.961 83 1 9491 255 100M = 9328 263 GCGTCGAGGCTAGGTACGGTCGCGGCATTCACCCGTCGGAACTAAACGCCAGAGTCTAGAGCAGCCACATAAAAATAAATTGAATCGTTNGCTCCGCCGT I at IFICIHIIIIIIHIFBEDIGBFIGIIIIEH:HIGIIDIDIFIFIIECBFGGEIFIIIFGIGIIIIHIGGFGIDEHIIHHGHHGIIGIEIGIIHIHIII NM:i:1 MD:Z:89A10 oR:Z:1 oH:i:1 oP:i:9490 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.961 163 1 9328 255 100M = 9491 -263 ATCGTCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTAACAGCTCG IIHIHIIHIHHIIGIIIEIIGIIIGHIEIHHEGIIIFIHIIDIIEIIIFDEIIBIEBIIIIDIGEGIA at IGFHI<IIHEFICIIDEIAIFIEDHBFIFII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9327 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -1976,7 +1976,7 @@ simulated.986 147 1 7937 255 100M = 7754 -283 AGTCCGTGGTGTAGTAGTGTATAACTCTGAATAA
simulated.987 99 1 1240 255 100M = 1434 294 TCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTATCCACCGTTCATAACCCAACAGACTGCG IIIIHHHHHHHIGIIIIIFIIHHHHHIGIIIHIIEIEHIHFIEIIIHFFHGGIIIFFIIIGI=HCIIIGEIGII?IIF=CBIBEIBCA?6II at IIIGIIB NM:i:2 MD:Z:72C16C10 oR:Z:1 oH:i:1 oP:i:1239 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.987 147 1 1434 255 100M = 1240 -294 CGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTT HIBGIHDFIFGICFCIIIIAIFIAIHFFFI?IEIGFBIIFIFIIDIIFGDIIFIIEIFFFIHFIFHGFIGIGGIHEIHGHIGIHIGHIGIHGHIHIHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1433 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.988 83 1 2906 255 100M = 2750 256 ATGCAGTGTGCTACCTATACTTTGCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAA BFIIHIIIAIDIGIIIIIABIIHDIIDFCFHIGICIEIICIIIIEIIIGBIDIIIIIIIIIHHIHIHGHHEIEIGHIGIGGEIFIHIGHIIIHHIIIHIH NM:i:1 MD:Z:23T76 oR:Z:1 oH:i:1 oP:i:2905 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.988 163 1 2750 255 74M1D26M = 2906 -256 TTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGGCATCGATATAAAAGTAAAAATCACT IIIHIHHIIIIIHIGIIHGIHGIIHGIIIGDFIIHFEIIFIDIIEIIEIHDCDIIAIIGFIDIHDIIDIIIIIHGIC at CIIIIIICHI>FGEAIEA?III NM:i:1 MD:Z:74^C26 oR:Z:1 oH:i:1 oP:i:2749 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.988 163 1 2750 255 74M1D26M = 2906 -256 TTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGGCATCGATATAAAAGTAAAAATCACT IIIHIHHIIIIIHIGIIHGIHGIIHGIIIGDFIIHFEIIFIDIIEIIEIHDCDIIAIIGFIDIHDIIDIIIIIHGIC at CIIIIIICHI>FGEAIEA?III NM:i:1 MD:Z:74C26 oR:Z:1 oH:i:1 oP:i:2749 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.989 99 1 5917 255 100M = 6123 306 TTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCTGATTTCTGAGTGAA HIIHHHHIIIHHIIIIIIIIIGHIDIIHIFEDFHHFHEIEDIHIIIHIGIIDIHIIGBIHIIFBBHFEIDBIII?CIIEGIEIIGI?G at I=IHGIAIICI NM:i:1 MD:Z:85G14 oR:Z:1 oH:i:1 oP:i:5916 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.989 147 1 6123 255 100M = 5917 -306 GTTTCCTAGCTAGAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCG IBIDIHIEDIIII:II at DIG=CGCBHIIE at GIHIIHDIIIIIEEIEAIIHCIHIEEIEFIIGFIHEIGFIIGIIIGGHIGIHHIIIGIHGHHIHHIHHII NM:i:1 MD:Z:12C87 oR:Z:1 oH:i:1 oP:i:6122 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.990 83 1 7032 255 100M = 6861 271 ACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAA 9IGIIICIHI at BA@IGIII@?IICHIIIIGGHIIEFAHIFDIIEEGDIFAIGIIICIGIIEIIFFHHIHIIHIFIHEHIHIIHIIIHIIHIHIHHIIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7031 oS:A:R XE:i:0 XS:i:0 XI:i:0
diff --git a/apps/mason2/tests/simulator.out2.sam b/apps/mason2/tests/simulator.out2.sam
index c7acacc..a1f798e 100644
--- a/apps/mason2/tests/simulator.out2.sam
+++ b/apps/mason2/tests/simulator.out2.sam
@@ -15,7 +15,7 @@ simulated.6 99 1 7927 255 100M = 8144 317 GCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCT
simulated.6 147 1 8144 255 100M = 7927 -317 TGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGC GICEIBFEFFICAI?IEFHIIIIIIACGIDFCEIIIIIIIGIEGDIIGBHIGGHIGIIEIHHIGGFEIIIEGHFIIIIFHHIIIHIIHHIHIHIHIIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8337 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.7 69 1 6250 255 * * 0 0 GCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACTAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATA HIIIHHIHHHHHHHHHIIIIIGIHIHIIFFFIHHHIICCHIHIIIIIEFBI at IIIIFIHIHHBIDIIIIFGFGFFEIHIEBF=IFGIEAII<IEIAIFFA uR:A:B oR:Z:1 oP:i:6688 oH:i:2 oS:A:F
simulated.7 153 1 6250 255 100M * 0 0 TATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAAC DHBEEIGA<I at IFBGDIIEIH;I>IEII?HIEIIFIH at GIIIIIHGFIHIIIIIGIIFIHHDIIHHIFIIHHIGIIGIIHIIGIIIIGIHIIIHHIIHIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:6896 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.8 73 1 3765 255 29M1D71M * 0 0 AAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAAC IHHHIIIIHIHIIHHGIHHHGHIFIIEGHFFDDDHIGEGGHIFCGFDHIDHGIIIIIGFEIFB?HIIIII at CIGDBIIDIGII@GIIIIGIEIIGII at IB NM:i:1 MD:Z:29^T71 oR:Z:1 oH:i:1 oP:i:3866 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.8 73 1 3765 255 29M1D71M * 0 0 AAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAAC IHHHIIIIHIHIIHHGIHHHGHIFIIEGHFFDDDHIGEGGHIFCGFDHIDHGIIIIIGFEIFB?HIIIII at CIGDBIIDIGII@GIIIIGIEIIGII at IB NM:i:1 MD:Z:29T71 oR:Z:1 oH:i:1 oP:i:3866 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.8 133 1 3765 255 * * 0 0 TTGGGAATCCCTGTGGTACGAAAGTCCGAGCTGTGTGGCGGGGTTTACTGTCAGGCAGGACCTCTGTCTAAGTCATTACTTACCCGCGCGACGCAGTCAA IHHHHHHHHHIIIIHFHHHHEIIIIIHIIGHDHIIHIIIIIICIGIEIIDIHIFIGI at GHHIIIICDIFCIHI;EIIIHIICII at GFHIGIGFIDI?;@G uR:A:B oR:Z:1 oP:i:4061 oH:i:1 oS:A:R
simulated.9 83 1 6840 255 100M = 6659 281 CGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTC DCEFIHI at IBIIFIIF@III?IHIIEIF>DGIIIHFFIBEIHIIDDIEEIIBIFIIHHHGIIIGFIIEIGIGGIHEIFHHHIFIHHIHIHIHIHIIHHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7033 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.9 163 1 6659 255 100M = 6840 -281 CCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGG HHIIHHHHHIHIGIHHIHGHIHIGIIIHFHFIIGGHDHEIIFCIGHIIFF at GIIDGIHGEEFIDHIIFHII<@CGIGIEIAIEIHIFIIBIIIIIIAB>A NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6852 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -24,7 +24,7 @@ simulated.10 141 * 0 255 * * 0 0 GCGCCCAACTCCGGTGGCGCAGTCTGTGGGTCTGTCTACATGTTGCG
simulated.11 83 1 3709 255 100M = 3487 322 TAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCA GFIEHI?IIIIAIIFGGIG=ICIGHIGBEFEFHEEBGIIEFIHIEFHGGIBIHGFHEHCIHHIHIIIIFIHFGGHIGIGIHFHHIIIHHHIHHHIIHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:3987 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.11 163 1 3487 255 100M = 3709 -322 TCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTAT HIIIIHHGIHIGIGHHHGHHGGHHIIGIGIGIHFIFGHGIIIIIHIFFIIIIEIDEIDIIGAIEEIIIIBIIIFBGHE:@@I>IGCEIIIGAFGIDIIIG NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:3761 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.12 83 1 235 255 100M = 27 308 GCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAAT BIEIIF>4II?IFI<CGG;IFH>DIIFGDEIEIDBBIIIFGIIIEGHFIFGEDHHIBIIEIGIIIIIIIGIHEEIIGGGIEIHGHGGHIIHHHIHIHHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:228 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.12 163 1 27 255 94M3D6M = 235 -308 TTACAGACTTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATA IIHIIHIIIHHIIIIGGGHHHHIIIHGHIGIIHIHGIIGHGFIFIHHIBIIHFICIIEEHIGIEIIIIIIIIEHFEDF>C at FIEFIIIFIIEEECDIDII NM:i:3 MD:Z:94^ACA6 oR:Z:1 oH:i:1 oP:i:26 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.12 163 1 27 255 94M3D6M = 235 -308 TTACAGACTTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATA IIHIIHIIIHHIIIIGGGHHHHIIIHGHIGIIHIHGIIGHGFIFIHHIBIIHFICIIEEHIGIEIIIIIIIIEHFEDF>C at FIEFIIIFIIEEECDIDII NM:i:3 MD:Z:94ACA6 oR:Z:1 oH:i:1 oP:i:26 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.13 69 1 5819 255 * * 0 0 AAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAGGCAGGCATCTCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGC IHIHIIHHHIIIIHHIIIGGGIFGEIIIIIIIFGIFGIIDIHGEIGGGHFIEIIGFGIIIIIGIGIIICIEAIIIGII at IHIIIEII>II?IIICIIE=H uR:A:B oR:Z:1 oP:i:6199 oH:i:2 oS:A:F
simulated.13 153 1 5819 255 100M * 0 0 CCAGACGGATATAGTAGTATTATCTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTT EBIICCIIE>I>GIG9CBFIIDFIIIII<FIFIFIFIHIDIIGFIAIEFHIEDFEHIIIGIHIHHIIIFFIIHIGHGHIIIHHHHGHIIHHIHIIHHHIH NM:i:1 MD:Z:23G76 oR:Z:1 oH:i:2 oP:i:6405 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.14 69 * 0 255 * * 0 0 CTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTCCTCAGCCG HHIHHIIIHIHHIIGGIFGIHHGIHIGHIIHIGGHHEIIEIGIIFDGHEDIIHFIGI at IIGEIH@IIIIGFIIEIHIGEEGIGGIIFIIII<IE=IH4IE uR:A:B oR:Z:1 oP:i:6581 oH:i:2 oS:A:F
@@ -109,7 +109,7 @@ simulated.53 99 1 6781 255 100M = 6999 318 TTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTA
simulated.53 147 1 6999 255 100M = 6781 -318 GGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGGGCGAACTCATAATCCACA <?IIFIEIGI?EFIAIEIFH9IFIC?DIIIFIFIAIFIIEDHIIEIIHIIGII>HIEDIIIHCIHGIIIGHIHIHIIGIIGFGIGIIGHGHIIHHIHHHH NM:i:1 MD:Z:81T18 oR:Z:1 oH:i:1 oP:i:7192 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.54 99 1 6693 255 17M2I81M = 6903 310 TCCGCCGGACACTAAGATCTCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAG HIHHHHHHIHHIGIIIHHIIHHIIHIHGIIHIIFHHGIHEHGCEIGIHEHIFGFHIFIIEIIEIIFIIIIHDIIIIEC?GEIEHI at I@CGIFBEHIII=I NM:i:2 MD:Z:98 oR:Z:1 oH:i:2 oP:i:7415 oS:A:F XE:i:0 XS:i:0 XI:i:2
simulated.54 147 1 6903 255 100M = 6693 -310 ATGAAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGT II at IC;>IIIIEFIIIDIBCGIFIEIIHFIAIBIIIFH at HIFIHIDIIIHFIGEHIEIFHIHIHGIIEIIIGIIDHIHIHHGIGHFHIIIHIIHHIHHIH NM:i:1 MD:Z:3G96 oR:Z:1 oH:i:2 oP:i:7627 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.55 99 1 3725 255 69M1D31M = 3917 292 CACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTC IHIIIHHHHIHIHIIHHHIGIGIIIFGIIIDHFGIDEDHGIIGEDEHIDIFFIIFIIFDIIEIE>IIHDGHI>IIBCAEHHIIIEC at IIIIII@IIDIEI NM:i:1 MD:Z:69^T31 oR:Z:1 oH:i:1 oP:i:3826 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.55 99 1 3725 255 69M1D31M = 3917 292 CACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTC IHIIIHHHHIHIHIIHHHIGIGIIIFGIIIDHFGIDEDHGIIGEDEHIDIFFIIFIIFDIIEIE>IIHDGHI>IIBCAEHHIIIEC at IIIIII@IIDIEI NM:i:1 MD:Z:69T31 oR:Z:1 oH:i:1 oP:i:3826 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.55 147 1 3917 255 100M = 3725 -292 CGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAA ;DIIAB=DHIFIIIHIIIIIEIHII at EB@HHIEIHDCFIIAAIIIIIIIFIFIIFIIFIEIHIFFIIGIHEIEGHIIFHIIIIIHHGIHHHGIHHIHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4017 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.56 69 1 3258 255 * * 0 0 TGTTCTGTCGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCCTATTGAGAACTGACGGTACCAGAGGC IHIIHHIHHHHHIHHGHHIGGGIFDFIFGIHIIIIIIIHIHIIICIFF?IFIIIDIIECGFIGII>II>IH?IF?IIIGIIIHHIBIGIIIIIBFIIBII uR:A:B oR:Z:1 oP:i:3194 oH:i:1 oS:A:F
simulated.56 153 1 3258 255 100M * 0 0 ATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGA EIICHI?GFDBIGI at IHDIGEHIIFGEIHIFIIGIIHDIIFIIEHIEFHIIIDDIHIEIGEIHIIFIEFGIGIIGIHFHIIHIHGIIHHGIHHIIIIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3359 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -144,7 +144,7 @@ simulated.70 163 1 3200 255 100M = 3390 -290 ATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATT
simulated.71 73 1 5029 255 100M * 0 0 TTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCA HIHHHIHIIHIHIHIGIIGIHHIIIIGIEHIIIFIFGEHGIHIEEIIFIGIIIGIHCAIFEIEICEIBIIIEIIAIIIGHEDIGGHIIH?IFI at FIGI<I NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:5460 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.71 133 1 5029 255 * * 0 0 GCGCCCGAGTAGCTTAATGTACCAAGGCTGTCCGTCTGCAAACCCTAGTTCCGAGCAGGACTCAGCGCTGAATAACGAAATCACCGCTAATTGCAAGGTT HIIIHHIHIIHIHIIHIIGGIIEIIIIHIHIIIHFHIGIIIGIGIGGDIGCIGIIIHGEGIIIIFIIIIDFCG at IIIIIGIDIGCCII<FIII?IIIEII uR:A:B oR:Z:1 oP:i:5656 oH:i:2 oS:A:R
simulated.72 83 1 3441 255 100M = 3262 279 TGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCT IIICIIIHEI>FCEIF?GIEIFIE>AIIIIIFIDIIIHGGIBIIDGDFIHIIGIIIIEIICIHHFIGIEEGHHGHHIIIGGGHGIHIIHHIIHHIHIHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3542 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.72 163 1 3262 255 85M1D15M = 3441 -279 GTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTTTTTCGGAGAACCGC HHHIHIIIHHHIIHIIIGHHHIIHGIGFGIIHIHHIFIIIHIIIIIIEHFHAICEIIHHI?IIIIICIIBIH?GIEHEIFIIIDIIID:IF at IID@HIIH NM:i:1 MD:Z:85^C15 oR:Z:1 oH:i:1 oP:i:3363 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.72 163 1 3262 255 85M1D15M = 3441 -279 GTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTTTTTCGGAGAACCGC HHHIHIIIHHHIIHIIIGHHHIIHGIGFGIIHIHHIFIIIHIIIIIIEHFHAICEIIHHI?IIIIICIIBIH?GIEHEIFIIIDIIID:IF at IID@HIIH NM:i:1 MD:Z:85C15 oR:Z:1 oH:i:1 oP:i:3363 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.73 83 1 6845 255 100M = 6631 314 GGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAA AIGI=<IIBI=IBIHIII<HDCIIIIGDDIICIFHFFBHGHBIGFHIAGIGEHFCFEIFIHGEIFFIIIHFHIIGFIIGHHIIHGIGHHHHIGIHIIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7038 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.73 163 1 6631 255 100M = 6845 -314 AGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTTGCACCCCTAAACCTGGG IHIIHIIHHHHIHFIIHIEIHFGIIGGFGIDIIGIEIIIIIIEFGIGIEHIIHGHIFIIIIIIIFHIDIICIIGEIIHCDGH*I>DBI<IIADGIIAIEI NM:i:2 MD:Z:82G11G5 oR:Z:1 oH:i:1 oP:i:6824 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.74 83 1 9459 255 100M = 9254 305 AACAGCCCCTTTCNGTTCTCAAATCAACATCCGCGTCGAGGCTAGGTACGGTCGCGGCATTCACCCGTCGGAACTAAACGCCAGAGTCTAGAGCAGCCAC I?FGIEIII?IDGBBIIHIDIDAICGCFIIIIHIGGIHIGIIIFIICGIFEGI>DIIHIEIIFIHIIHHIFGIGIIFGIGFGHIFIHHHIHHHHHIHHII NM:i:2 MD:Z:13A3G82 oR:Z:1 oH:i:2 oP:i:10302 oS:A:R XE:i:2 XS:i:0 XI:i:0
@@ -169,7 +169,7 @@ simulated.83 69 1 6715 255 * * 0 0 CTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCAT
simulated.83 153 1 6715 255 100M * 0 0 CACCCTTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCG IE at BD9IIIEIBAI?IIICII>=FCEGHIIID<IIG at FHIFIDIIIIHCIEFICBHHDIHIIIGIIIIGHGIIIIGIGIIGIHIHIIIGIIIIHIHHHHI NM:i:1 MD:Z:5C94 oR:Z:1 oH:i:2 oP:i:7439 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.84 83 1 2263 255 100M = 2088 275 ACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGC =IG:<EIICBGBIIIFIIHEIIHIIIIFIIIIFG at FFFIIEIFGCIIIDIIIIIIIGHGHIIFEIIIIFIIEHHGFGHIHIHIHGIHIIIIIHIIHHIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2364 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.84 163 1 2088 255 100M = 2263 -275 CACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTCAAATTACAATGAACCTTGGGGACCACAATTTGGTACGTTCGACTATTAT HIIIIIHHIIIHIIIHEHGIHHIFGGGIHIIIIEEGIGIIHIIEIFIADIIIDHHIBCIECII at EIDIBHIHICBIGHIBICIIIHIIHICBIIHDICI@ NM:i:2 MD:Z:50G24T24 oR:Z:1 oH:i:1 oP:i:2189 oS:A:F XE:i:1 XS:i:1 XI:i:0
-simulated.85 99 1 9055 255 53M3D47M = 9241 286 TGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGT HHHIIHIIHHIIIGIGFFGEIGHIIIHIIIIGHHFIIIHGGIHHFAIIHHIGCAHIGIIHIEGDDIHDBGIIHBICIEGIIFBGIF at IBDEFHII:IGBC NM:i:3 MD:Z:53^GAT47 oR:Z:1 oH:i:1 oP:i:9248 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.85 99 1 9055 255 53M3D47M = 9241 286 TGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGT HHHIIHIIHHIIIGIGFFGEIGHIIIHIIIIGHHFIIIHGGIHHFAIIHHIGCAHIGIIHIEGDDIHDBGIIHBICIEGIIFBGIF at IBDEFHII:IGBC NM:i:3 MD:Z:53GAT47 oR:Z:1 oH:i:1 oP:i:9248 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.85 147 1 9241 255 100M = 9055 -286 TTGGCTATTATTTTATAAGATCTAGAGGAACAGCTTCCGTAATACAATCCGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTCA II=IEII at BBI<IDHAHIIEG=FI?IIGHIEIIIIDIIHDIIIHHHFGHIGEIIGIIH at GHGGIEIDGIFIIIGIEGIHIHIGHIHHHHHIIIIIIHIHH NM:i:2 MD:Z:13A35T50 oR:Z:1 oH:i:1 oP:i:9431 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.86 69 * 0 255 * * 0 0 ATCGAATGCACTCACGAAATGCTGTAACAGCTCGCGCTGCTCAAAGATTGTTCCCGCAACTGGCCAACAGCCCCTTTCAGTTGTCAAATCAACATCCGCG HHHHIHHIIIIHIIIIHHFIGIEHEFDFFIHIFIHHIIIIFHIGIGIIIFFHGIGIFIIICHFFDAIIIIEIIHIIAHFECIG>FFIDIFIE<IGIDIFD uR:A:B oR:Z:1 oP:i:9584 oH:i:1 oS:A:F
simulated.86 141 * 0 255 * * 0 0 GTCCACACGGCGGAGCTAACGATTCAATTTATTAGCCTCGACGCGGATGTTGATTTGACAACTGAAAGGGGCTGTTGGCCACTTGCGGGACCAATCTTTG IIIHHIHIIIHGIIHIIIHHIIGIHGIGIEIIIIHIFGIHEHCHIIDIGIGIIIEICHH at DIFIIHEIIIBIIFEIIDHDG2CBIIIFIFGA?IIA at BHI uR:A:B oR:Z:1 oP:i:9769 oH:i:1 oS:A:R
@@ -186,7 +186,7 @@ simulated.91 141 * 0 255 * * 0 0 GCCGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCAC
simulated.92 73 1 9220 255 100M * 0 0 CGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCA IIIHIIIIIIHIIIHHHIGHHFEIGGIGHFIIIIIGIIIGIHIHIIIDAIIIHIIGDCIIIIIEGIGDIHIII?IIIIIEIGIIIIIIIHIFDI<II>BI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9410 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.92 133 1 9220 255 * * 0 0 CGGGTGAATGCCGCGACCGTACCTAGCCTCGACGCGGATGTTGATTTGACAACTGAAAGGGGCTGTTGGCCAGTTGCGGGAACAATCTTTGAGCAGCGCG HIIIHIIGIIIIHIIGIIIGHFGGGIHGIIICHIGFHHIGHIIIEIHIIGCIGIIDHIEIDFIGEGIEEIHIEICEIIIIDI?IIIII>FIHIIEDFIIG uR:A:B oR:Z:1 oP:i:9616 oH:i:1 oS:A:R
simulated.93 99 1 3500 255 100M = 3709 309 AGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTC IIHHHIIIHHHIIIIHIGGIHHIDIGGGGIHIIGIIFIIGIFIHFIHFIBIHDGCIIEI:DDIIIEGEAF at AIID:IAFIIIIIDDHIF8IGEIIIIFAI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3601 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.93 147 1 3709 255 85M1D15M = 3500 -309 TAATCGGACGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAG GFIDGEEFCEIDCFB?GHII<FBHEEIGIFIGIHIIICAIIHIGEGDIIBEIEDEIIHHGEIIFDIFFIFIIIIIIFFIIIIHIIIIHHIIIHHIIHHHI NM:i:2 MD:Z:8T76^T15 oR:Z:1 oH:i:1 oP:i:3810 oS:A:R XE:i:1 XS:i:0 XI:i:1
+simulated.93 147 1 3709 255 85M1D15M = 3500 -309 TAATCGGACGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAG GFIDGEEFCEIDCFB?GHII<FBHEEIGIFIGIHIIICAIIHIGEGDIIBEIEDEIIHHGEIIFDIFFIFIIIIIIFFIIIIHIIIIHHIIIHHIIHHHI NM:i:2 MD:Z:8T76T15 oR:Z:1 oH:i:1 oP:i:3810 oS:A:R XE:i:1 XS:i:0 XI:i:1
simulated.94 69 * 0 255 * * 0 0 ATCATACTGAATCGTATAACGTACAAGCCTAGCCGCTACACCCGCCGCCTACCCTGAAGGGCTATCCGGGGTGCATCATGCGTAAGTTTTCTGAACAGAC HHHHHIHIHIIIIIIGHGIHGIHIGIIGHIGFIGIIIIIIHHFFEIIIEFFICGIHIHIBII?IIAEICEIGIBIIFIIIII?ECHHF at IIIIBH8@GIC uR:A:B oR:Z:1 oP:i:995 oH:i:1 oS:A:R
simulated.94 141 * 0 255 * * 0 0 TCGCGGACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCATGGCCCTTCTCAGACCTTCTCTGTTCAGAAAACTTACGCATGATGCACCCC HIHHHHHHHIHHHIGHGHIGIIHHIIEIFIIIIHDHIIHIGFIGFFCIBIIIIII?IIIDIIHAIDCIDEIIIHBIFGGFIIHCIDFE>I at I?IIIFI>G uR:A:B oR:Z:1 oP:i:800 oH:i:1 oS:A:F
simulated.95 69 * 0 255 * * 0 0 CTGACAGTAAACCCCGCCACACAGCTCGGACTTTCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACACAGAGAGAGTCGAGTTAAACGGGCC IHIHIHHHIHIHGHHIGIIIGIHIIIIGIIIHIIHIGEIGFFIIHIIGHIGIBDFH?IGDDIHIFDHGGEAIIIIGIICIFICFCII>CIIFCIAIBDBI uR:A:B oR:Z:1 oP:i:4107 oH:i:1 oS:A:F
@@ -222,7 +222,7 @@ simulated.109 147 1 3633 255 71M4I25M = 3420 -313 CTACGGTCTACCACTTGATCTAGAAGCTCC
simulated.110 69 1 802 255 * * 0 0 CCAGCCTAAACACGCTTGACCCCGCTTCTAGTCAGGTTGCTGACCTGGTGCCTAGTCGACCCGCTACACCCGCCGCTAGGGATTAAAGGCATCAGGGCCA IHHIHGHHHHHHHIIGHIGIHIHIIIGEHHGGIHFIIGHIFHIEIGGIIGIHBBCIIFIIFHICEDIGIFHIBIEDEHIIIFFEIIIHIIDIIII>IIIE uR:A:B oR:Z:1 oP:i:997 oH:i:2 oS:A:R
simulated.110 137 1 802 255 100M * 0 0 GTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTC HHIIHIIIIGIIHGIHGIIHHIIGFFIFGGIGIGHHIGEIGHDDIHFEGIGEGICFFHHHIICGIDIIE;FFIGI?IIDIIDIICGDIIIDIIAIBIII: NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:801 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.111 99 1 1809 255 100M = 1990 281 TATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGCCCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCG HHIHIHHIHHHIHGIIHIIFIGHHHIGIIIDFGFHFIFHIIHEIIGBFFIECIFII>EHFFCHIIDICBIIDI>CIGIII?HIIEI>HIGGHAIIG:IGI NM:i:1 MD:Z:54A45 oR:Z:1 oH:i:1 oP:i:1911 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.111 147 1 1990 255 24M1D76M = 1809 -281 AAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCGGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCAC GFIIIHEIHIGIGIIFAIFIBIIHIIHGCDIIFIIGEIHGIICCIICIGFDHEEFGFIHHGIHICIGIHIIHFGIFHIGHHIHIIIIHIIIHHIIHIIII NM:i:2 MD:Z:24^A26A49 oR:Z:1 oH:i:1 oP:i:2092 oS:A:R XE:i:1 XS:i:0 XI:i:1
+simulated.111 147 1 1990 255 24M1D76M = 1809 -281 AAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCGGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCAC GFIIIHEIHIGIGIIFAIFIBIIHIIHGCDIIFIIGEIHGIICCIICIGFDHEEFGFIHHGIHICIGIHIIHFGIFHIGHHIHIIIIHIIIHHIIHIIII NM:i:2 MD:Z:24A26A49 oR:Z:1 oH:i:1 oP:i:2092 oS:A:R XE:i:1 XS:i:0 XI:i:1
simulated.112 83 1 9542 255 100M = 9331 311 GAGTCTAGAGCAGCCACATAAAAATTAATTGAATCGTTAGCTCCGCCGTGTGGACATGGCATCGGCGTCATCCCATATACATCACCGGTCGAACCCACTC DI>HIBIIFBDCIDDHFIBIICECIGIHIIIIAIDBIBIIIIIICIIGFIIEHEHHFIEDIDFIGDDIIHGIHIHEGHIIGGIIGIIIIGIIHIIHIHII NM:i:1 MD:Z:25A74 oR:Z:1 oH:i:2 oP:i:10385 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.112 163 1 9331 255 100M = 9542 -311 GTCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTAACAGCTCGCGC IHIHIHHIHHIHIIFIHFHHGIHHIIIFIHIHHIHHEHHGIIEEIIGEFIIIIIHFBBIICIEGDCICIIIIIAIHIIC?HIICEIIIIDGII at IEIIIG NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:10174 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.113 89 1 9432 255 100M * 0 0 GCTCAAAGATTGTTCCCGCAACTGGCCAACAGCCCCTTTCAGTTGTCAAATCAACATCCGCGTCGAGGCTAGGTACGGTCGCGGCATTCACCCGTCGGAA I:IIG=CGGEICCD at HHIHBECEDII@BIFCFEB=AIFIGDGEDIIIIFIIIIEIDIHIIBIIIIIDIIIIIGIIGIFGHIHIIIIFHIIGHIHHIHIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:10275 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -254,7 +254,7 @@ simulated.125 163 1 1090 255 100M = 1295 -305 TAGGCTGGGCATTAGCTGCGTACATCGGTTTGCA
simulated.126 69 1 7340 255 * * 0 0 TTCAGACCTTGACCTGCGCGTGATTGTCCATGAAACACTCGGGCACCACATTGATCGACACTACCGGGTGGAGCCTCCCTTCGCGCGCACTGTTCCACCC IHHHIIHHIIHHHGIIIHGFEIFHIGIIHIIIGIHIHDGFAIEIGIIIIGIEHEIFG at HBDEIIIIGIIIIEIAGGEIG<IGEIDFIFCIGIIIHIIBII uR:A:B oR:Z:1 oP:i:8267 oH:i:2 oS:A:R
simulated.126 137 1 7340 255 100M * 0 0 CTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGAGAGATGCCCACCATCAAGCCC HHIHHIIIIIHHHHIHIIIHIHIIFGGIIIIIEIFIFHFBIIICIFFGFBIDIFFIDIIDIDFEICIHHDIEIIGIIIAIHIIAI at IIDIHIGFFBIEGI NM:i:1 MD:Z:78C21 oR:Z:1 oH:i:2 oP:i:8064 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.127 83 1 366 255 100M = 143 323 GATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCACG IFIICIA<IGIHFFIIBBEDIGIIIDGEHI>DCIIDGIIIGIEIGIIIFFIIBHEIIEIIHFDDGGIFHHGIGHIIIHIIHHHIHIHHGIIGIIGHHIHH NM:i:1 MD:Z:98T1 oR:Z:1 oH:i:1 oP:i:359 oS:A:R XE:i:0 XS:i:1 XI:i:0
-simulated.127 163 1 143 255 15M3D85M = 366 -323 CGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGT HHHIIHHIHHHHHIGIIGIIIGFGIGEFHGHDIIIFIGGGHIGGFGHGIIHDEIIGGIDIIEIFIGHI at II?BHGFEAHIB>IIGGIGIFHIFIDHIIBI NM:i:3 MD:Z:15^CAG85 oR:Z:1 oH:i:1 oP:i:139 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.127 163 1 143 255 15M3D85M = 366 -323 CGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGT HHHIIHHIHHHHHIGIIGIIIGFGIGEFHGHDIIIFIGGGHIGGFGHGIIHDEIIGGIDIIEIFIGHI at II?BHGFEAHIB>IIGGIGIFHIFIDHIIBI NM:i:3 MD:Z:15CAG85 oR:Z:1 oH:i:1 oP:i:139 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.128 83 1 657 255 100M = 431 326 CCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGCGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTA IIIHIEGIIIIICIHFCIFIEHF=IEGIIIICIGEIIIIIIIIHHICFIDFIIBEIHIIFGGIHFIIIIHHFGDGDFHGHHIIIIGIIHIIHHIIIHHHH NM:i:1 MD:Z:51A48 oR:Z:1 oH:i:2 oP:i:656 oS:A:R XE:i:1 XS:i:1 XI:i:0
simulated.128 163 1 431 255 100M = 657 -326 TTCTCGGCTGGATCCCTTAGTCGCATTAGTCCAAGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGT IIIIHHHHHIIIIIHHHIIIHHHHIIFGFHIHGIGHIIIIDIIEIED at IGF@IGIDEHGICFIHGCICIICIBICEFCIAID at IIICIIIIIBIIHIAHE NM:i:1 MD:Z:33T66 oR:Z:1 oH:i:2 oP:i:430 oS:A:F XE:i:0 XS:i:2 XI:i:0
simulated.129 89 1 4019 255 100M * 0 0 CCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTACTTTATCAGCGT ?IIIIDDIFDIIIIIIIICIIICBIIGCIIGICEIIIDIIHIEIEHFAHHIGHIHIGIIIHIIHIIHIIIIHFIGFHIIGHHHIIGIFHHIHHIIHIHHH NM:i:1 MD:Z:87T12 oR:Z:1 oH:i:2 oP:i:4357 oS:A:R XE:i:1 XS:i:0 XI:i:0
@@ -271,7 +271,7 @@ simulated.134 69 1 6449 255 * * 0 0 GGACTGGCCAAGTCAATGGGTTATCTGGCTCATGCAATACGCAG
simulated.134 137 1 6449 255 100M * 0 0 AATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTA IHIHIHHIHIHGHHHIHIHHHIFIIIDHFIIIGDEEIIIHIFCDIEGIIIEFIEDIIIIBAIHHEIIIIIHBDIIFHFEDC?IG@<FIHI at HIIIIIEHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6566 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.135 73 1 4497 255 100M * 0 0 CCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCC HIHHHHHIIHIHIIIHIHHHIIGHGFIFGGHIIIHFIHIIHFIHHIIIIEGIFIIIEBBIEHDDHFFIIGIEIIIAFIEFIIIII?DIIEH?>F=IIIDI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:4835 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.135 133 1 4497 255 * * 0 0 TGCTTTAACGCCTTAGAACACGGATTTTGCGAAGATAGGCGCAGGGGGTCTCTAGCTTAGCTCCATGAGGAGGTTTGGGTGATAAGCGGAGCGAAAGATA IIIIHHHHIHIHIFIHGIIIIIHFGHHIIHIGGIIFIDIIGIDICIIGIGIIGHIGIIIGIDH=ECGFIIIEIIIEIIIICIHCFII=HI9FIIAIHCID uR:A:B oR:Z:1 oP:i:5056 oH:i:2 oS:A:R
-simulated.136 89 1 8283 255 100M * 0 0 AAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGATCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATC ;IHIIIC@>CIICE?IIIAIIIIIHI>IAHGEII>DHICIIGIIDFHIHDHIIIFIIFIIIGIGHIHFIGEHEHGHHIHGIIIIHIHIIHHHIHHIHHHI NM:i:2 MD:Z:0T63C35 oR:Z:1 oH:i:2 oP:i:8971 oS:A:R XE:i:1 XS:i:1 XI:i:0
+simulated.136 89 1 8283 255 100M * 0 0 AAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGATCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATC ;IHIIIC@>CIICE?IIIAIIIIIHI>IAHGEII>DHICIIGIIDFHIHDHIIIFIIFIIIGIGHIHFIGEHEHGHHIHGIIIIHIHIIHHHIHHIHHHI NM:i:2 MD:Z:T63C35 oR:Z:1 oH:i:2 oP:i:8971 oS:A:R XE:i:1 XS:i:1 XI:i:0
simulated.136 133 1 8283 255 * * 0 0 CTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACAGACGTACCTAGAGTCACTAACCGTGCTGGGAATTCTGA HIHHIIGHHHHHHIIIIIHIIIIHHEIFHIHIIGGIGHIIEFGGIHFIGIIHHGIIGEHFIEGIIFIDIIGEIIGFIIBGEIDIIHIII;FIIBGIIIFI uR:A:B oR:Z:1 oP:i:8777 oH:i:2 oS:A:F
simulated.137 73 1 9675 255 100M * 0 0 AACACACATCCGGCACGGCTGGGATAACCCATGATTCTTCGTACGGGTGTGTAAAGAAGTCGGATTGCCACTGAATTGTATCTGTAAATAGGCATTGTTA IIHHIHHHHGIHIGHHIGIGHGFIHIIHIGEIIIIGEGDHFIGGDIGIGIDIFGICDDIIEHEEHIBCIDIIIIIIIE?EIIIIDIIIGIIAIEGIEBIG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:10005 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.137 133 1 9675 255 * * 0 0 ATGGAATGACTCATTGACTGGAGGCCGAGAGAGTAGGCCCCCCTGGCTCTCTACCCATGGACCAGGGCCATTTCATAATTACTATATTGCTGCTTAGATC HHIHIHHHHIHHIIHGIIIIIIHIIHHHFIIEGGIEGHIFIHFHBFGIIEGIIIIIIIHDIIHIHIBIIIHIIGIEEFHIIIE?AIIICI;GIHIIHEII uR:A:B oR:Z:1 oP:i:10207 oH:i:1 oS:A:R
@@ -279,7 +279,7 @@ simulated.138 83 1 7761 255 100M = 7572 289 GGCATTTCTCGGGGCAACCCAACCTAGTGGATCGAT
simulated.138 163 1 7572 255 100M = 7761 -289 CTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAA IIIIHIHHHHIGGFHIHIGIGHHGHGIFIFFIIHIDIHHGIGIBCIIDHHHHIIFIIGHEDCIIGIFIIIGDIIDIICIGII?IICIEIAIIIIFECIBI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7765 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.139 89 1 3256 255 100M * 0 0 GTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGA =;IIIIIBEIGFIG?EBIII at EDIIII@AIICHDIDIIIIIHIFIIIHIEDFGGHFGEHFIEGIHIIGGHIGIFFHHHIFIHFGIHIIIIHHHHHIIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3357 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.139 133 1 3256 255 * * 0 0 ATACCGCTACTTGGTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGTTAGGGATCTTATGTCTTCAATTTG IIIHIHHHHIIHIIHHHHIHIGIIHIGFIHIIFIIGIIIGICIGGIFIDGCIEIIIIEGEIGFFIIIEIICI at IIICIII<AIIEIIIDGIIICIII=FE uR:A:B oR:Z:1 oP:i:3129 oH:i:1 oS:A:F
-simulated.140 83 1 2001 255 13M1D87M = 1783 318 GTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTAC DHI>I;AGIIEGBAIIHIIIAICGIFIGECIIIDIFICEFGDCIIFEIIIDGEGIFIEIIDHEIGIHIIFIGGIHIGIFHIFIHGIIIIHHIIIHHHIII NM:i:1 MD:Z:13^A87 oR:Z:1 oH:i:1 oP:i:2103 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.140 83 1 2001 255 13M1D87M = 1783 318 GTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTAC DHI>I;AGIIEGBAIIHIIIAICGIFIGECIIIDIFICEFGDCIIFEIIIDGEGIFIEIIDHEIGIHIIFIGGIHIGIFHIFIHGIIIIHHIIIHHHIII NM:i:1 MD:Z:13A87 oR:Z:1 oH:i:1 oP:i:2103 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.140 163 1 1783 255 100M = 2001 -318 CCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGAT HIHHHHIIIIGIHIHHHHIIHHHIFIIIIHEHIIIGIFIIFIHIIGBHIIDEFIIHIHICIEIHIII?BCI=IHFICIDII9 at ICDIA@HCHFIECH?HI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1885 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.141 69 1 9333 255 * * 0 0 CGTTCCAGCTGGTCGGAATATCCGGAGTTCTTCCACTACTGGATTGTAGTGGTCCCGTCAAACTCACACATTATTTCATCTACTCTTGGCTATTAATTAA HHHIHIIIHIIHHIGIHGIHHGEGEFGEIIIIIFGIHHIEIHIIEIIGIGEFI at IHIIFCCGEGIIIFGCIBIIFGGHIECIGI@EIIHIII>=I5IIII uR:A:B oR:Z:1 oP:i:9999 oH:i:2 oS:A:F
simulated.141 153 1 9333 255 100M * 0 0 CGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCCTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTAACAGCTCGCGCTG IGCIIHHIGBGCIDGIIF at IHIIIIIICIIEIEHIGCIDDGGHBDIGGHGIAIDEFIIBIIHGIHIGFIGIIHHIIGIHHIIIHIHHIHIIIHHIIHIHI NM:i:1 MD:Z:46G53 oR:Z:1 oH:i:2 oP:i:10176 oS:A:R XE:i:1 XS:i:0 XI:i:0
@@ -295,7 +295,7 @@ simulated.146 69 1 5962 255 * * 0 0 TGGGGCTTCGTCTGTAGCTAGGAAACATGGTGACCCCGAAAAAC
simulated.146 137 1 5962 255 100M * 0 0 AATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTAC IIHIIHIIHHIHIIGIIHIHFIIHIGGIIHIIGIEFGHIDIIGIIHIHIGIIIBCIEHGFHIHIHFIEDIEGIIGIGIFIID?GEIIIIIIAFEADDEBF NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:6548 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.147 89 1 5334 255 100M * 0 0 GCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAAACGGGTGATGCCAGGTGGGTGGTGAAAAACACG I<IIIEEICBHBIIFIII?IIICBIBFBIIIEICIDGIIIIFIIIIIBIHGIHFIGIGHIHIGIIEIFGEEDFIHEIIIGGIHIHIHIHIHIHHHIIIIH NM:i:1 MD:Z:66G33 oR:Z:1 oH:i:2 oP:i:5765 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.147 133 1 5334 255 * * 0 0 GCATACCCCCCACCTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGTACAACTTGGTAAGATGGGATGTCGAGATGACCAACCCATCAAACC HHIIHHIIIIHIIIIGIIIIHIHFIIIIGHGCIHIGIIEIIIFHIEIIEIFHHIDDFCIEICIIFIHHCHICIAHHAIIIBGIIIICFHIIDIEAHIIAD uR:A:B oR:Z:1 oP:i:5560 oH:i:2 oS:A:F
-simulated.148 83 1 3754 255 40M1D60M = 3536 318 GATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAG IICIII at IIIGDIGIIEIGHFICB?IDIFIICHG?HEIIFIIIDBAHIHIIFIIIHEFIIIIIGIHIHHIIIGGHGGHIDIHHIGIIGHIIHIHHHHIHI NM:i:1 MD:Z:40^T60 oR:Z:1 oH:i:1 oP:i:3855 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.148 83 1 3754 255 40M1D60M = 3536 318 GATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAG IICIII at IIIGDIGIIEIGHFICB?IDIFIICHG?HEIIFIIIDBAHIHIIFIIIHEFIIIIIGIHIHHIIIGGHGGHIDIHHIGIIGHIIHIHHHHIHI NM:i:1 MD:Z:40T60 oR:Z:1 oH:i:1 oP:i:3855 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.148 163 1 3536 255 100M = 3754 -318 TGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTTTTATTTTGTCTA IHHHIIHHHHIIGHIIHIIGIFIFIHHHHIIIHIGGIGGHIIFIIEDGGHEIIHBAIIIIFGFIIIDHI at HFDHIFEIDIIIICIIIIIIIDAIDIIG;G NM:i:1 MD:Z:87G12 oR:Z:1 oH:i:1 oP:i:3637 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.149 99 1 1434 255 100M = 1638 304 CGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTT IIHHIHIIHHIIHHIHIIHHIIIFIIIGIIIHIIBIIIIHIDIIIHIIBEBIDFIIFIEIIDIEIIIIIFIIFIFIDIIHHCIIIHIEFHGIDFHIDIDI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1536 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.149 147 1 1638 255 100M = 1434 -304 GGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCAT FIIDDIHIGICIIIIIIEEIGIIEHIIAIIIHIFHEIIIIIIHIFIAIIIIDIFFIIIFHI at IFEIGHFIIIHIIIIIEGHIGFIGHHHIIIHHIIHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1740 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -347,7 +347,7 @@ simulated.172 73 1 5399 255 100M * 0 0 AGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGC
simulated.172 133 1 5399 255 * * 0 0 AGAATGAACACTCTGGAGTGCGCCTTACGGCTGATCTAGTGACCGATTCGAACCGGTCTTGCATCCGCAGGGCTGGTGGAGCTGGGTCTTAGGCGGTTCA HIHIIHHIHIHHIHGGIHIIGFGIHIFDEHIIIGGHFEGIIHHFIIDIIHIIEFEIEGFIIIIBID>HIFCBIAFDBDIFHIAIIDCIB>IGI at II;F9I uR:A:B oR:Z:1 oP:i:6012 oH:i:2 oS:A:R
simulated.173 99 2 395 255 100M = 591 296 TGGGAGGTAGCTAAGCCAATTTAATCAGACTAGGGACGCGATACTGCACGGCATGTTCCTCACCTGGTGAGCATTGGCGCATTCCATACAGCTTCTAACT HIHHHIHIHIHIGIIHIIIFHHIGGIGDIIGGGEDEDFIHHIEIIDBGIIIGCEHICIHIIIIGDIHEIIHHEIIDIIII>IDIDCFIII;IBII@>IID NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:394 oS:A:F XE:i:0 XS:i:2 XI:i:0
simulated.173 147 2 591 255 100M = 395 -296 GCGGTAACGATAATAGGCTATACTGAATCGGGACTTAATTCTGGCTGTTTGAAGTCGAATCCGTTTTTATTCGACTCTTCTTGCATTCATCACCGGCTCA >=IGIBGIFIEII7FIIIIBHCIBGDIIGGIDIBIIIIICDEAHICBCIFFDIIIIIIGHIIIIIHFIIIHGGIGIIFFHIHFGIGHHIIIHHHHIIHHI NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:590 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.174 99 1 1929 255 85M1D15M = 2149 320 CACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAA HIIHIIIIIIIIHHGIIIIGIHIEIIGIIEIDDIIHEIHDIEIIIAHIIEFIEIEIIIFIDIHBICIGII?HHGIC at FDIAIGHFIHIHI?IHC;IE at HF NM:i:1 MD:Z:85^A15 oR:Z:1 oH:i:1 oP:i:2031 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.174 99 1 1929 255 85M1D15M = 2149 320 CACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAA HIIHIIIIIIIIHHGIIIIGIHIEIIGIIEIDDIIHEIHDIEIIIAHIIEFIEIEIIIFIDIHBICIGII?HHGIC at FDIAIGHFIHIHI?IHC;IE at HF NM:i:1 MD:Z:85A15 oR:Z:1 oH:i:1 oP:i:2031 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.174 147 1 2149 255 100M = 1929 -320 GAACCTCGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAA IDDIDI/IIIIFFIIGDCAII;IIHEIBIHIIHFIIIIEACEDDIFIBIIGIHEHEFEGHEIIIIIIIIGIGGIHGGHIHGIIIIHIIIHIIHHIIHHIH NM:i:1 MD:Z:6T93 oR:Z:1 oH:i:1 oP:i:2250 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.175 69 * 0 255 * * 0 0 GATCGTGAGTATACACAAAGTAGAGCGTGCAAGCTACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGACACATGATCTAC HIIIHHIHHHHHHHGIIGGHHIIFHHHEFIGIHEICHBIHFEGHGIIFBIHIIDIIIICGE>IHHIGIIFIIFIII>IB??H=GI at II=IIIIIII:III uR:A:B oR:Z:1 oP:i:719 oH:i:1 oS:A:F
simulated.175 141 * 0 255 * * 0 0 GGATTAAAGGCATCAGGGCCATTGAGGGACCGTAGCTGACTATAAGTCGTCGGTCGCTCGCATATCTAGACACCTACCCTGAAGGGCTATCCGGGGTGCA IIIHIIHHIGHIGIIIIHIIIHIIIIIHIIIFIIIGFDEIHGIEFIIIFD?IDIIGIBEHGIEI at IG?IHIDC?DIIH?HIIIIAIFHII;IIICHIFII uR:A:B oR:Z:1 oP:i:892 oH:i:1 oS:A:R
@@ -398,7 +398,7 @@ simulated.197 133 1 8621 255 * * 0 0 CCTGAACAATACGTGTACTTGGGCCCATTACTTACAGTAATCA
simulated.198 83 1 8411 255 100M = 8239 272 TATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACGGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTA II>EIIHIIGIIIHIIG>IAHIDFIIIIGIECIIHIIIHIIHHGIEIIIGHCIFFIFIIIIIGGIGIFGFIIIIGIHIIIIGHHHIGHHIHIHHIIIIHI NM:i:1 MD:Z:54C45 oR:Z:1 oH:i:2 oP:i:9099 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.198 163 1 8239 255 100M = 8411 -272 GTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAAATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGAT HHHIHHIHIHGHHIIGIHIIGIIIHHIIIGIIIFIGHHDIDIEAHGIIHIIHIIIIHIIIDBGHIE=IFGAIFIIII?HIIFABIIDFCBIDIH<ABIDI NM:i:1 MD:Z:42G57 oR:Z:1 oH:i:2 oP:i:8927 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.199 83 1 2218 255 100M = 1980 338 CCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTA IH at 8IIH?GICEIICFIII?IIIHCGH:IIGIHIIIHIIDIIIHHIIDIIIGIIGIHEHIGFIIHHIGGIGIHGIIGIGGIIHGIFHIHHGHIIHIIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2319 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.199 163 1 1980 255 34M1D66M = 2218 -338 CAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGA HHHHIHHHHIIIIGHIHIHIGHIIHGHGHGIHIIIIDGIIIFHIHIGHIEDEIFFHHIHHIICIHHIDGDIHEEFIIIFI?CFIE?IIDGII@=IIGE at I NM:i:1 MD:Z:34^A66 oR:Z:1 oH:i:1 oP:i:2082 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.199 163 1 1980 255 34M1D66M = 2218 -338 CAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGA HHHHIHHHHIIIIGHIHIHIGHIIHGHGHGIHIIIIDGIIIFHIHIGHIEDEIFFHHIHHIICIHHIDGDIHEEFIIIFI?CFIE?IIDGII@=IIGE at I NM:i:1 MD:Z:34A66 oR:Z:1 oH:i:1 oP:i:2082 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.200 83 1 3688 255 16M4I80M = 3466 322 AGCTGCGGAAGCTAACATCTGCTCGTAATCGGATGAATAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAG GHDFI;IIDFCIIFAFG>IEEIIIEIII>IEE=IIIBDIFDIHIDAAIHBIIIIHHGIEIFIFHGFIHEIFDGIIHHGIFGHIIGGHIHHHHHIIIHIHI NM:i:5 MD:Z:32T63 oR:Z:1 oH:i:2 oP:i:3962 oS:A:R XE:i:1 XS:i:0 XI:i:4
simulated.200 163 1 3466 255 100M = 3688 -322 CACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTT HHIIIIHHIHIIHIIIGIIHHHIIIIHHHIHIIFIGHIIHHICIFICDGIIGICIFGIFHIDI=HI?CIAIIIEHI?GIIGGEIHBIDHEI?FFIIE>IF NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:3740 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.201 99 1 7229 255 100M = 7417 288 ACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCT IHHHIHHIGIIHHIFIHIIIGIIHIIIIIGGIIFIHFFFEGGIIIFIIIGIEDIIGI?IIC=IIIGHIAIIIDFIFIIDIIGFIIEIIIGIE at IIIIIFI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7953 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -444,7 +444,7 @@ simulated.220 147 1 6373 255 100M = 6148 -325 ATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTA
simulated.221 69 * 0 255 * * 0 0 AATCATCTCTTCCGGTAGTCAGCGAACTGAAACATGCCGTGCAGTATCGCGTCCCTAGTCTGATTAAATTGGCTTAGCTACCTCCCAGAAGAGAGATGAG IIHHHIIGIHHHHIHIHHFHIHEHIGHHHIGBIGHGFDHIIIIIIIIEHIIFGCGIIBGDICHICAIDIDBGIIHIEE>DEIII>IIIIIH<ICIGHIII uR:A:B oR:Z:2 oP:i:330 oH:i:1 oS:A:F
simulated.221 141 * 0 255 * * 0 0 AACAGCCAGAATTAAGTCCCGATTCAGTATAGCCTATTATCGTTACCGCGATCCGACGGAGCTCCAATTCGTAGAGGTAAATAGACTGCGCGTTCCATAC HIHIHHHIHHIIIGHIIIHGIIFGIIHIIGIHDFECHIIIIGFIHHEIEEIIIIHAIIEGFCFIIH>GEIIFGIIIIIFBIFAEI<IIII@<AFIII=II uR:A:B oR:Z:2 oP:i:539 oH:i:1 oS:A:R
simulated.222 99 1 1796 255 100M = 1994 298 TCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCC HHHHHIHHHIIHIGHHIGIIIGFIIFFIFHGGIGGIHEIIFGHEIDDGHICEEDDFAIFGIDDIGIGEIFIIIG=HFI>IIDBA6IFFIIAFB8IIIIAI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1898 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.222 147 1 1994 255 20M1D80M = 1796 -298 ATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGC FC?IIHBIIEI<IIIBEGIEIIIIIIFEIIICHIIIFIGGHHFIIDIIGHEIIIIIHDIHIBIIHGIIDHEIIIFIIIIIIIIHFIIIIIIIIHHIIIIH NM:i:1 MD:Z:20^A80 oR:Z:1 oH:i:1 oP:i:2096 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.222 147 1 1994 255 20M1D80M = 1796 -298 ATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGC FC?IIHBIIEI<IIIBEGIEIIIIIIFEIIICHIIIFIGGHHFIIDIIGHEIIIIIHDIHIBIIHGIIDHEIIIFIIIIIIIIHFIIIIIIIIHHIIIIH NM:i:1 MD:Z:20A80 oR:Z:1 oH:i:1 oP:i:2096 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.223 99 2 218 255 100M = 430 311 TTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGC HIHHHIIIIIHIHHHIIIIIGGGHGIIHIGGHFIGIIGIFIBIIIIEIHFEHICIGIHIGEIIH>IEEGGCIIIEDFHGIDEFHHI;CBIBII<IIIBHE NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:217 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.223 147 2 430 255 46M1I53M = 218 -311 ACGCGATACTGCACGGCATGTTCCTCACCTGGTGAGCATTGGCGCATTTCCATACAGCTTCTAACTCAGATAAGCACTAAGATGGCACTGGCTATTCCCC IIGIEI;IBIBIIEIFIEIIIIHIDGHIIICIIIGFDIEIHHIIHEFFIIFI?IGIHIEHFHIHHEIGGIHFEHIIHGHIHFHGIIIIHHHHIHHIIIHI NM:i:1 MD:Z:99 oR:Z:2 oH:i:2 oP:i:429 oS:A:R XE:i:1 XS:i:2 XI:i:0
simulated.224 99 1 8257 255 100M = 8465 308 ATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACTATCGTGTTAAT IIHHHHIIHIHGIHHIIGHGHIEGIGFGFIIGFIIHIIGIIHHIIFIEIIBFEIBDIIHGGIIG<IEIIFGGGIIEFIFHDBIIDI at I:F;FBIIIII at I NM:i:2 MD:Z:88G1C9 oR:Z:1 oH:i:1 oP:i:8450 oS:A:F XE:i:1 XS:i:1 XI:i:0
@@ -555,11 +555,11 @@ simulated.276 69 1 7391 255 * * 0 0 TATTCGCTATCATTCGTACTATAGAATGGAATAACTAACACTTC
simulated.276 137 1 7391 255 100M * 0 0 CCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTAAA IIHHHIHIHHHHIHIGHIGGIIIHHIEIGIIIHFGIHHIIIFDAIBGIIDDIIIIIIEGIC at IIIEEIFDFIIIIIIIE;EIAI:FIIIGIIIIIID4FI NM:i:1 MD:Z:97T2 oR:Z:1 oH:i:2 oP:i:8115 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.277 73 1 5014 255 100M * 0 0 TCGCATGGAGTAATGNTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTTCCTGTCTCCATGT IHHHHHHIIGIIHIGIIIIIFFIIIFHHIFHHIIIGIIIIIIIGIIIDIFIHIIHIIIIIIE=IIDDCCBIIHIIIIFIDIIGDIIDHIGCIIIIH at EII NM:i:2 MD:Z:15T70G13 oR:Z:1 oH:i:1 oP:i:5039 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.277 133 1 5014 255 * * 0 0 GGCGCCCGAGTAGCTTAATGTACCAAGGCTGTCCGTCTGCAAACCCTAGTTCCGAGCAGGACTCAGCGCTGAATAACTACAACTTGGTAAGATGGGATGT HIIIHHHHIHHHHIHHHIHGHHIFHHHIGIGHIHHIEIHHIIIHIIEFIIEHIGHHEHIIFIIIAIIIHIGIEFGDEIIHIEICGIFF=IHHIEIIDB=H uR:A:B oR:Z:1 oP:i:5251 oH:i:1 oS:A:R
-simulated.278 83 1 3781 255 13M1D87M = 3569 312 TAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATG IIE=8GD>IIIIEICCIFIHICBAIFIEDECIEIDHIIIEIIIGIIIIFGGIIIEDHBIIEIIIGEHIHIIGHIGHIIIHHFIIIGHIHIIHGIHIIHHI NM:i:1 MD:Z:13^T87 oR:Z:1 oH:i:1 oP:i:3882 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.278 83 1 3781 255 13M1D87M = 3569 312 TAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATG IIE=8GD>IIIIEICCIFIHICBAIFIEDECIEIDHIIIEIIIGIIIIFGGIIIEDHBIIEIIIGEHIHIIGHIGHIIIHHFIIIGHIHIIHGIHIIHHI NM:i:1 MD:Z:13T87 oR:Z:1 oH:i:1 oP:i:3882 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.278 163 1 3569 255 100M = 3781 -312 TGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTT HHIHHHHHIIIIFIIHHFEHIIHIIHIFFIIIICIIIDDEGFIIIIIIHFIIIIIHCIIHIIGIGIFBIGHDHBII;EIII at FII@I at ICIIHHIGIIIA NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3670 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.279 69 1 2250 255 * * 0 0 GAGATCCTATTTTTCTACTCCAGGTACTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGCGACGAGAGGTAAATTGTAAAATTACA HHHHIIHIHHHIGHIHFIHIGIIHIGIGIIIIGIHFHHHHGHFBIGEIGIHIDIIHFEAIIIFIBHIIIIIG;7HIFFICAFIIB?EIBHH<IFCIIIID uR:A:B oR:Z:1 oP:i:2245 oH:i:2 oS:A:F
simulated.279 153 1 2250 255 100M * 0 0 ATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGT IAII?GEIIGCGIIIBIIGIFIIIFIAE at CIFIDGIBEIGIHFDIIIBIIFIGFIGIGFGIIIIHIIHDFIHIGIGFIIHIIHHHIHIIIIHIIHIHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:2448 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.280 83 1 1599 255 100M = 1406 293 AAAAGTCGCGTAGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCG >I7IAHIHI=DEBIIIGHIIIGIDFIDIICCIDHEIDAAGIIIIGHIAIHIFIEIIFHFHIGIGFBHIIHIIHIGHFIFIIFGIGGIIIHIHHIIIIHHH NM:i:2 MD:Z:0C10G88 oR:Z:1 oH:i:1 oP:i:1701 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.280 83 1 1599 255 100M = 1406 293 AAAAGTCGCGTAGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCG >I7IAHIHI=DEBIIIGHIIIGIDFIDIICCIDHEIDAAGIIIIGHIAIHIFIEIIFHFHIGIGFBHIIHIIHIGHFIFIIFGIGGIIIHIHHIIIIHHH NM:i:2 MD:Z:C10G88 oR:Z:1 oH:i:1 oP:i:1701 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.280 163 1 1406 255 100M = 1599 -293 GACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCT IHHIHIHHHIHHIIIHIIIIHGHGFIIIFHIIFFIFFIIIIFAIGFIIGIHFGIIFGII>IIIIIIBIFHI?IFFDIIIIIIACBFI at IDIII>GIIGII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1508 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.281 83 1 2628 255 100M = 2402 326 CTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGG IGIIIEIHIDEBIIDGIHIIIIFAIDIGGCGFIAFIIFFIIIIIIIBIIAIIHHHIICHIIEIIEIHIDHHEGHHHHIGHHGIIGIIHIIIIHHHIHIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2729 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.281 163 1 2402 255 100M = 2628 -326 TTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGGGTGATACAT IIHHIIHHIHIIIHGHHGIGIHGIIIIGHFFIGDIGIFIFGGFGIIFGGIHCEEBIIIIGI>IHIGIEI=GEH at IBIIGIHDIIDI?IIH:IIEIICIII NM:i:1 MD:Z:90C9 oR:Z:1 oH:i:1 oP:i:2503 oS:A:F XE:i:1 XS:i:0 XI:i:0
@@ -608,7 +608,7 @@ simulated.302 163 2 617 255 100M = 802 -285 ATCGGGACTTAATTCTGGCTGTTTGAAGTCGAATCC
simulated.303 83 1 9540 255 100M = 9357 283 CAGAGTCTAGAGCAGCCACATAAAAATAAATTGAATCGTTAGCTCCGCCGTGTGGACATGGCATCGGCGTCATCCCATAGACATCACCGGTCGAACCCAC IIDGE>IIIIDI=II at HCHII@IIIG>EIACIIIIHIDGIHHIFIFHIGFHHHIGCIGGHIIHIIIIIFDGIHHFGHIHHIIGIIIIHHIHIIHHIIIHH NM:i:1 MD:Z:79T20 oR:Z:1 oH:i:2 oP:i:10383 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.303 163 1 9357 255 100M = 9540 -283 GGATGAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTAACAGCTCGCGCTGCTCAAAGATTGTTCCCGCAACTGG HHHIHIIIHIIHHHGIFIIIIHIIFIIIGIIIGFIIHGIHHIDHIEFHGIDHIHEDIGIFAIIEIIGCIIIIIIHIIH>IEEIIIIDDGIHI>HIGDIIC NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:10200 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.304 83 1 9216 255 100M = 9038 278 CAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACC CEFB8I<G at IGHICIIHI=ICIEIEICIIEIICIECFIEAFEIEFIAFIIIIIIHIIFIIIIGEHEIGIGIIIHIIIHIIIGIIHHHHHHHHHHIHIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9406 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.304 163 1 9038 255 70M3D30M = 9216 -278 AATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTG HIHHHIHIHHIIGHHHHIIIHHIGIIIIIHIIFGEIGEIGFIIICHIIIGGEGI at FGIDGIEFCCIIBAIGIEGCGIIIGHIFCGGDIIIB>HHGIHEIG NM:i:3 MD:Z:70^GAT30 oR:Z:1 oH:i:1 oP:i:9231 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.304 163 1 9038 255 70M3D30M = 9216 -278 AATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTG HIHHHIHIHHIIGHHHHIIIHHIGIIIIIHIIFGEIGEIGFIIICHIIIGGEGI at FGIDGIEFCCIIBAIGIEGCGIIIGHIFCGGDIIIB>HHGIHEIG NM:i:3 MD:Z:70GAT30 oR:Z:1 oH:i:1 oP:i:9231 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.305 73 2 208 255 100M * 0 0 AAGAGCATCGTTCGTCCAGGTTTGTCCCCAACAATCCAAGCAGATTTAATTTGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTC IHIIIHHHHIHGIIIIIEGHHIIGHIIIIHIIHIDIFHIFFGFIGHIAHH9GIDGIIICCCD at IIIEIIIAIIIC@ICIIIIICIIEIIIIHEIII?EAF NM:i:2 MD:Z:17T32A49 oR:Z:2 oH:i:1 oP:i:207 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.305 133 2 208 255 * * 0 0 ACTAAGATGGCACTGGCTATTCCCCCTGGTGCGCTGGTAAGTAGTGATTCAATGCTCACCAGGTGAGGAGCGGGTCGGGGAGATTTATCCTCATCTCTCT HIHHIHHHHIIHIGHIGEIIHHIHIIIGIGIIGGIIFIFEEIIIGGDHGDFIHIHEGIEGIIDIIIDII?IIIGHIEDIHIHIIIIIII at IAIIDIIIDI uR:A:B oR:Z:2 oP:i:419 oH:i:1 oS:A:R
simulated.306 99 1 291 255 100M = 481 290 GCAATCGTTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGC IHHHIHIFIHHHIHIGHIIFIIIIIFFGIFHEFEGIIIIHHIFIFGFGHDIGIFGHIICIFDGEIIFI;IIIIGIHII at FIIHCH@GIH>?FICEF at BII NM:i:1 MD:Z:7C92 oR:Z:1 oH:i:2 oP:i:290 oS:A:F XE:i:1 XS:i:0 XI:i:0
@@ -666,7 +666,7 @@ simulated.331 153 1 6828 255 100M * 0 0 GAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGG
simulated.332 89 1 8387 255 100M * 0 0 GCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGT IB?IF at IAHF@HIFIIIHAABGIIIIIIFEIIIIEIIECIGDIIFIFIGHIIFDDFEGIDGEIHIIGHIGHHIFGHHHIIIHFIIGIGIHIHHHHHIIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:9075 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.332 133 1 8387 255 * * 0 0 CGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAA HIHHIIIHIHIHHHIGIGIIIHGIIIIGFIHGIHEIIHFDIIICIHEEIHID>IIEIIIIAEIFIHIIIIHIIFDHCAADIHF:III at IE?IGC6IDIEH uR:A:B oR:Z:1 oP:i:8841 oH:i:2 oS:A:F
simulated.333 83 1 324 255 100M = 125 299 CGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCA CIHIEG;?IHHG?CFEEIIICIC?IIEDD;DBCFH=IACIIDIIICCDIHHHDEFIHIEFIIEIGFIIGIGFGDHHIEIIHHHIFHHIHIHHIHIIIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:317 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.333 163 1 125 255 33M3D67M = 324 -299 GCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGAC IHHIIHIIIIIHHGIIIHHIIIIIHHGGGGIHGFIIGFGGGIEEIEIGGEIIIIEHIBCFIHHH?IHFIHIF at IIDEIIICHIIICGFIGGH3DAICGIG NM:i:3 MD:Z:33^CAG67 oR:Z:1 oH:i:1 oP:i:121 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.333 163 1 125 255 33M3D67M = 324 -299 GCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGAC IHHIIHIIIIIHHGIIIHHIIIIIHHGGGGIHGFIIGFGGGIEEIEIGGEIIIIEHIBCFIHHH?IHFIHIF at IIDEIIICHIIICGFIGGH3DAICGIG NM:i:3 MD:Z:33CAG67 oR:Z:1 oH:i:1 oP:i:121 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.334 69 1 1450 255 * * 0 0 ACACGGACCCACGCGACTTTGTGCACAAGCCGGGCCAACGCACTATGGTCAGCTTATGTACCACCTCCGTTACACTTAGTGTTGTTTGCCCCGGCTGTTT HHHIIHHHIIGHIIHHIHGHFIIIIIIHHIIGHIIGHIGGFIIHGIEIIGGIDIIIIIEIIIIIDIIIIIIIIHEIEGEHHEGIEI?HFIHI?8IIAIBI uR:A:B oR:Z:1 oP:i:1682 oH:i:2 oS:A:R
simulated.334 137 1 1450 255 100M * 0 0 TTGGATTTGCCGGCCCCCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGT HIHHIIIIGHIHIIHGHGHIIHFIFHGGGIIHIICGGEFDIIGICFIIGIIGHGBGBICFIDIDIIIFHCIIBIGIBIIFBCFHGFIIIBBIIIIIIAIA NM:i:1 MD:Z:16G83 oR:Z:1 oH:i:2 oP:i:1503 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.335 69 * 0 255 * * 0 0 TGAACTCAGATAAGACGGGTGATGGCAGGTGGTTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATG IIHHIIIHIHIIHHIHIIGIHIIHIIFEGFFIFHHIEEIGFHFIIIIGFIDIIHIFGGIFIIECHFHFFIHIEEBEEIIHIIAHIIIHCGHIFHIF at I<B uR:A:B oR:Z:1 oP:i:5412 oH:i:1 oS:A:F
@@ -690,7 +690,7 @@ simulated.343 141 * 0 255 * * 0 0 GGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGT
simulated.344 83 2 727 255 100M = 511 316 CTAATAATCGGACGGTGGTTTTGTCAGTGTCTAAGGCCCCATGCATGCAGATGATCCCTTATGTGCCAAAAACGGGTACCCGCTAGCCGTGGATGCGAGG D=FIIICFIIGII=I at CG@II:HACIII?IFCIIICIFHGIHDIGEIIIFICEGIIIDFHGCIIIHHIHHGGIGIFIIIIIIHHHHIHHIIHHHIHIHHI NM:i:1 MD:Z:33T66 oR:Z:2 oH:i:2 oP:i:726 oS:A:R XE:i:1 XS:i:1 XI:i:0
simulated.344 163 2 511 255 100M = 727 -316 TGGCACTGGCTATTCCCCCTGGTGCGCTGGTAAGTAGTGATTAGTCTATTTACCTCTACGAATTGGAGCTCCGTCGGATCGCGGTAACGATAATAGGCTA HHHHIIHIIIHGIGIHHIIIIIIIIGIIIGGGIGIHIIIIEIHGFEHEFFGIIIAIIII>C?FII?IIIICIIFIIHHHIFIIEFIEA at I=IHBIFII9F NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:510 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.345 69 1 5049 255 * * 0 0 TATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCT IIIHIIHIIIHHIGIIHIHIIIIGIFIIHIHIIGDGIGGGIGEIIFFIIIEIFAFIIGIICFIII at IIIIIIIIII?IICIHIECFIII?IIBBBGC at E> uR:A:B oR:Z:1 oP:i:5278 oH:i:2 oS:A:F
-simulated.345 153 1 5049 255 100M * 0 0 AACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGAC IAHEIHBI>I at BDFGIIEICI@FICHDIGFIIHFIICAIHIIECIGICIIFDIIIIHGIHIIGFFHIIIHDEIGIGIGIIHHIHHIIHIIIIIIIIHIHH NM:i:1 MD:Z:0C99 oR:Z:1 oH:i:2 oP:i:5480 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.345 153 1 5049 255 100M * 0 0 AACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGAC IAHEIHBI>I at BDFGIIEICI@FICHDIGFIIHFIICAIHIIECIGICIIFDIIIIHGIHIIGFFHIIIHDEIGIGIGIIHHIHHIIHIIIIIIIIHIHH NM:i:1 MD:Z:C99 oR:Z:1 oH:i:2 oP:i:5480 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.346 69 1 9002 255 * * 0 0 CCAGCTGGAACGGTCTCAAACCGTTGTCGGTTCCGCGCTTGAAATGCGCGCTGGCGGTGAACTAACTGCGGATCGTACATGACCCGGTTCGGCTATTCGG IHIIIHHIIIIIHIGIHHIHHIGFHIFICIHIIHICIGIIHGEIGIAIIIHIHIIDFIHHHIIEEIIIIEIIIIFG<EII?IIII?I?I>ECDIFHCACI uR:A:B oR:Z:1 oP:i:9911 oH:i:2 oS:A:R
simulated.346 137 1 9002 255 100M * 0 0 ATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGC HHHHHHHHIHIIHIHHIIHGGIIGIIHIGDIGIIFGIIIGIIDDIEHIIHIIG at IIGHIFEIEIDIIDGIIIBI?FIHGHIIIIIIGGHI?IIHBIDDII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:9756 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.347 69 * 0 255 * * 0 0 CGCGGTAACGATAATAGGCTATACTGAATCGGGACTTAATTCTGGCTGTTTGAAGTCGAATCCGTTTTTATTCGACTCTTCTTGCATTCATCACCGGCTC HIIIHHHHHHIHIIIGHIIIIIIHHHIHGIHIIHIHECIHGGIFCIIGIGIIIGAFIFHGHIICIIEGIDIAAHIIG>EIIHIIIICIIIIIICIIIDGI uR:A:B oR:Z:2 oP:i:589 oH:i:1 oS:A:F
@@ -737,7 +737,7 @@ simulated.367 83 1 3029 255 100M = 2836 293 TACCGCTACCTGGTTAGGGATCTTATGTCTTCAATT
simulated.367 163 1 2836 255 100M = 3029 -293 AAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTA IIIHIIHIIIGGIIGIIGHGHHGIIGIIIFIHHHIIIGDDHCGFFIIIGGIIIGHIF at HGIIIIIFBIIIBIFCIEFDII@HDFIHDIEICEIIBIIGAI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:3110 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.368 69 1 8828 255 * * 0 0 GCCCAAGGGCTGCTACTGCCCAGGACAAGCAACGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTG HHIIIHHIIIIGHHHHHGGIGIHIIIGIHHIGICIGEGHH at IIHEHHDFGFIIIIHH>HGHFDHIFIE?GIICIIIIIBIIHIFAIIB?DIIEIIIAA>I uR:A:B oR:Z:1 oP:i:8833 oH:i:1 oS:A:F
simulated.368 153 1 8828 255 100M * 0 0 AGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAA AICIIIIIGIHDIDII at IIGIGIIIHBCBICIIIGIIHFFGIGIGCIIHIIHICIFGDGFIGFIIHFGIFHIIIHIHIGHGHHIGGHHHGHHHHHIIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9021 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.369 99 1 98 255 23M3D34M3D43M = 341 343 GCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGC IHIIIHHHHHHGHIGIHFIHIIIGHFIHIHIIFGIIIIIHHIGIEIICEGIEIHIIGIFIGGIIEIEIIIGAIIIDIEICIIDFIFEBHIH<FIHIEIID NM:i:6 MD:Z:23^ACA34^CAG43 oR:Z:1 oH:i:1 oP:i:97 oS:A:F XE:i:0 XS:i:0 XI:i:6
+simulated.369 99 1 98 255 23M3D34M3D43M = 341 343 GCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGC IHIIIHHHHHHGHIGIHFIHIIIGHFIHIHIIFGIIIIIHHIGIEIICEGIEIHIIGIFIGGIIEIEIIIGAIIIDIEICIIDFIFEBHIH<FIHIEIID NM:i:6 MD:Z:23ACA34CAG43 oR:Z:1 oH:i:1 oP:i:97 oS:A:F XE:i:0 XS:i:0 XI:i:6
simulated.369 147 1 341 255 100M = 98 -343 GCACAAAATCATCTTGGGATAGGAGGAGTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTG I>II@@CEFBIIIIF=IIIIIE?GIEG=IFGCFEEACIIHIIEIDIEICIICIHGFIIFGHHIIIIIIIDIHFGIGHIIIHIHHHHHIHHHHHHIHIHIH NM:i:1 MD:Z:27T72 oR:Z:1 oH:i:1 oP:i:334 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.370 83 1 2551 255 100M = 2359 292 GGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTA ?EFIIGIIHIAIIEHHIIIIIIIIEEHFIHHCFIFGG at IBDFHAIIBGGHGIIIHIGIIIGIGGIIIIIHGIHIHHIGFIGIHIIIHIIGHIHIHHIIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2652 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.370 163 1 2359 255 100M = 2551 -292 AGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAAT IHHHIHIHIIHIIHGGGIIHHHHIIIHHHHHFDIIIGEGGFIEIGIIIIEHGFIHAIHDFIIIICIEGFEH at HFHGIIEEIFIEIIIIGIDBICDAII=I NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2460 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -786,13 +786,13 @@ simulated.391 147 1 3647 255 100M = 3472 -275 TTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAG
simulated.392 83 1 448 255 100M = 232 316 TAGTCGCATTAGTCCAAGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCAT II>IIIIIIIIHGBIIIAIIBGIDIIIGI<IIIBIGIE at FIEIHFIIIFEIGHIBHIHIGGDIIIEHIHIFHGGIIFFIIHIIHHIHGHHHHHIHHIHII NM:i:1 MD:Z:16T83 oR:Z:1 oH:i:2 oP:i:447 oS:A:R XE:i:0 XS:i:2 XI:i:0
simulated.392 163 1 232 255 100M = 448 -316 GTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTAT HHIHIHIHHGIIHHHIIGGGIIGIIIHGGGHHIIGEIBGDDDIIIIEIIFICIDCGIBIGHIII at IDIIIHIICFGHI=IG8CAHG=BIII;HIIEFIBI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:231 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.393 83 1 2925 255 100M = 2718 307 CTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAG ICICIFGDEIHGGIIFBIBHGIEIIIDBIDBF at HICEBDIGCHFDIGICADIE@IIHFHFHDIIHIIIFIGHGGHGIFIHFHIHGIIIIIGIHIIHIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:3199 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.393 163 1 2718 255 100M = 2925 -307 AGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTGGTTTGGTGCTATGTCCCCTAACTTTTGACACT HHIHHHIHIHHIIIHHEHGHGGIIHGIIHIIGIIHIIIIFGIIIHIIGHIHIIDIIFICFFG=BIHI8HIIHIBIFIIICEIGI<FIEIIIBGDIG1G8I NM:i:3 MD:Z:67C0C27A3 oR:Z:1 oH:i:2 oP:i:2992 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.393 163 1 2718 255 100M = 2925 -307 AGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTGGTTTGGTGCTATGTCCCCTAACTTTTGACACT HHIHHHIHIHHIIIHHEHGHGGIIHGIIHIIGIIHIIIIFGIIIHIIGHIHIIDIIFICFFG=BIHI8HIIHIBIFIIICEIGI<FIEIIIBGDIG1G8I NM:i:3 MD:Z:67CC27A3 oR:Z:1 oH:i:2 oP:i:2992 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.394 99 1 1594 255 100M = 1776 282 TAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTG HIIHIIHIHHIHIIIGHGIIHIHHIGGIIIFFFHEIIIIGIGIIIEHIGIEIIIHFEGHIIIHAHHIIAIIIEGE at AFD?IG?II;D<EHIIEFAIIFDH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1696 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.394 147 1 1776 255 100M = 1594 -282 TATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTA F?IBI;IIEHIFHGID;IBIGIIFFIIIIIIFIIIAEIGGHBCFGGEEDIGGIGAIBIIIIFDCHGIFFIIIGHHHGIIIIHGGIIIIHHHIIIHHHHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1878 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.395 99 1 8759 255 100M = 8937 278 TCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCT IHIHHIIIHHIHIGIIIIHIIHHIGIGIGGEHEIGICIGGGIIGIDGGIIIIDIDEEIICGIIGIGEH?IBIIFIEAIDDIBDICEIII9IIIHDE?@@H NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8952 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.395 147 1 8937 255 100M = 8759 -278 ATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATT @F=HII?II>I<;=III;GAE at GIDFGEIIIHGI>IIFIFIIIIHHIFIIIEFIIIIIIFIGIIHIIIIIIGHIIGGFIGIIIGHHIIHIIHHIIHHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9130 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.396 83 1 276 255 100M = 77 299 TGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTG ?IIDIGII at A<G>IEIIIIIDICFDHIFBIGHBIIIHEGIIIGIGFGIIIIIIHIGIEHBIHDHHIFGGFHHIIHFFIIIGIFIHHHHHHIHHIHIIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:269 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.396 163 1 77 255 44M3D34M3D22M = 276 -299 TTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCA IIIHIHIHIIHHHIIIIIIGIIIGHIIHGCIDGFIIFHIIIDHEIHHIEGGEAIIGFIIIIIIIIFGGHCF<IIIICIIBG?IIHIFCAEEFBIIEEGBI NM:i:6 MD:Z:44^ACA34^CAG22 oR:Z:1 oH:i:1 oP:i:76 oS:A:F XE:i:0 XS:i:0 XI:i:6
+simulated.396 163 1 77 255 44M3D34M3D22M = 276 -299 TTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCA IIIHIHIHIIHHHIIIIIIGIIIGHIIHGCIDGFIIFHIIIDHEIHHIEGGEAIIGFIIIIIIIIFGGHCF<IIIICIIBG?IIHIFCAEEFBIIEEGBI NM:i:6 MD:Z:44ACA34CAG22 oR:Z:1 oH:i:1 oP:i:76 oS:A:F XE:i:0 XS:i:0 XI:i:6
simulated.397 89 1 5374 255 100M * 0 0 AGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCAC IIHEIIIHFI<FICIIIDCEIIEIIF at ICIGGHBBIHIBHIEIIIIIIIIIIIIIGGIGIGIDHFEEIIHIIHHIHIIIIIFIHIIIIHIIHIHIHHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:5805 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.397 133 1 5374 255 * * 0 0 AACTTGGTAAGATGGGATGTCGAGATGACCAACCCATCAAACCTTGCAATTAGCGGTGATTTCGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTT IIIIIIIHHIIGIHGIHIHIHEGHIGIHGFFHGGFHIEHIFEFEGIGIFFHIBFGFFIIEIIHIIIIDIEIAEII at GIHIIIFCIEIIGHIC@IIFIIIC uR:A:B oR:Z:1 oP:i:5617 oH:i:2 oS:A:F
simulated.398 89 1 8804 255 100M * 0 0 TGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCA @IEIG?GIIIIGBI>@E>IIII>IIGIIIIIDFIIFIIFIDHIHGCIGIHIEGDIHIGIIIHHHIIHIFHIGIIEGIGHGFHGHIIIIHIIIIHIHIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8997 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -813,7 +813,7 @@ simulated.405 99 1 2906 255 100M = 3122 316 ATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGA
simulated.405 147 1 3122 255 100M = 2906 -316 CGCAAGGGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTG G at IIIDA6IIIIGHCCIIDI>ICCGG>HCFIGIIGII at GIFCIIHHFFHIGHEIIHEIDIFGGDCHHEIFHIIIIHIHHEHIIGGFIIIHIIHIHHHHHH NM:i:1 MD:Z:6C93 oR:Z:1 oH:i:2 oP:i:3396 oS:A:R XE:i:1 XS:i:1 XI:i:0
simulated.406 99 1 710 255 100M = 909 299 AGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTAT HHHHIHIIHIHHIGHIHHIIHIHGHHIIHGGIHEIIFIIIII at CGFBEIICGIFGHEGDIIDIICIIIIIIHGFDFHGFIIDGIIIIIIEIIBD?ICDIB NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:709 oS:A:F XE:i:0 XS:i:1 XI:i:0
simulated.406 147 1 909 255 100M = 710 -299 TTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATG CIDIIBAIFIIEEFC at IIEICIIGIIIIIIIIIIFIIIIEIIGFICIEDFI@IHDIIFGHIIIIFIGIFEIIIIIGIHIHIIHGIIHHGGIIHHHHIIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:908 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.407 83 1 3767 255 27M1D73M = 3578 289 ATTGAAACACCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCCTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTT IBI?EIII>HIBIHEADGICFGDIIIIIGEIIIFIIDIIFFIGIIFDHAIIEBHHIGIGIIFIFIGFHHFIGGHGIHHGGFIHHHIIIHIHHHIHIHIIH NM:i:3 MD:Z:8T18^T24G48 oR:Z:1 oH:i:1 oP:i:3868 oS:A:R XE:i:2 XS:i:0 XI:i:1
+simulated.407 83 1 3767 255 27M1D73M = 3578 289 ATTGAAACACCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCCTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTT IBI?EIII>HIBIHEADGICFGDIIIIIGEIIIFIIDIIFFIGIIFDHAIIEBHHIGIGIIFIFIGFHHFIGGHGIHHGGFIHHHIIIHIHHHIHIHIIH NM:i:3 MD:Z:8T18T24G48 oR:Z:1 oH:i:1 oP:i:3868 oS:A:R XE:i:2 XS:i:0 XI:i:1
simulated.407 163 1 3578 255 100M = 3767 -289 AATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCT HIIHIHHHHHHIIGIIIIIGHGGGGHIIEICIGFGFHFIEFIIIEIGEIIHIEIIEIGIGEIHAEIFGEIGEIIIBHDIIGF>GIIIBABIHGIEFHC4F NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3679 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.408 69 * 0 255 * * 0 0 GCTAATGCCCAGCCTAAACACGCTTGACCCCGCTTCTAGTCAGGTTGCTGACCTGGTGCCTAGTCGACTGAGTCTAATAGGGGGAACAAGCAACTCAGAA HIIIHIIHHHHIHHIIIFHIHGIIIIIFFIHFIGFIFHFGHIFIDGHBIIBGIGIGGHIGIFIIIDIICICII=EIIEECIIII:II at GEEGIIIBHIIH uR:A:B oR:Z:1 oP:i:1107 oH:i:1 oS:A:R
simulated.408 141 * 0 255 * * 0 0 CCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGTCTGTTCAGAA HHIHIIIHHIHIHIHHHHIIIIIHHIHIIIIIIIIIIHIFIGIIDIIIIIGFGIHCDIIIFIAC at DCEIIIIGII@IEI>IIIHIIHFIIII8IDD:I at E uR:A:B oR:Z:1 oP:i:907 oH:i:1 oS:A:F
@@ -830,7 +830,7 @@ simulated.413 137 1 3640 255 64M4I32M * 0 0 CTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGAC
simulated.414 73 1 1412 255 100M * 0 0 ACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGT IHIIHHIIHIHHIHIHIHFHHIHHIGHIGHIGIIHIIDGIIIHICDEIGGDGFHHIIIIFGIFF;IBIIIIBIIGIII=EFIIDIGFIDDDFDGDIIGIF NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:1465 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.414 133 1 1412 255 * * 0 0 ACGCGACTTTGTGCACAAGCCGGGCCAACGCACTATGGTCAGCTTATGTACCACATCCGTTACACTTAGTGTTGTTTGCCCCGGCTGTTTTATGGCCGGA HHIIHIIIIHGHIHGHIGGHIHGEHIIGICIIIIEHIIIIFIIDEIIHGHCGCH at HGHDIGDEEIIEFIIFCG?IIIAII:DIIHI at DIII@EF0DIAI? uR:A:B oR:Z:1 oP:i:1672 oH:i:2 oS:A:R
simulated.415 83 1 2149 255 100M = 1929 320 GAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAA ?IFCCIFHIII?DI9>HGIIDHIBIAFGGIIIIIIIEIIHIFHIFIGIFGIIEIIIHGFIEGGGIIIIFIEIIHHGHFDHIHHHHIIHHIGHHHIHIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2250 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.415 163 1 1929 255 85M1D15M = 2149 -320 CACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAA HIHIHIHHIIHHIHGHHIHHGIIFHGEIIIHHIEHIIIHIHIIIEIIIIIIIIDE>IFFIIGIIBIDGIEIDHBGG at HIIIAIIIDFEDFIIGGFIIIII NM:i:1 MD:Z:85^A15 oR:Z:1 oH:i:1 oP:i:2031 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.415 163 1 1929 255 85M1D15M = 2149 -320 CACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAA HIHIHIHHIIHHIHGHHIHHGIIFHGEIIIHHIEHIIIHIHIIIEIIIIIIIIDE>IFFIIGIIBIDGIEIDHBGG at HIIIAIIIDFEDFIIGGFIIIII NM:i:1 MD:Z:85A15 oR:Z:1 oH:i:1 oP:i:2031 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.416 83 1 554 255 100M = 337 317 GTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGG FHIAFAIIIIIEGEEBHEAIIIDGIIDFBIEIIIGHIIEFIAII at IFIIGIGCICEIFHIHIIIHFHIIIIHIIIFIIEIIHHGHIIHHHHIIHIHHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:553 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.416 163 1 337 255 100M = 554 -317 GGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCG HHHIIIIGHIIHIGIGFHIHIFIIHHIIHGIGGIIEHIHEIIIIIFCIGGIIGEDIEHACIIHFIFIICIDGGI:IIIICHEIEIC at IIAIDE?IHBIBG NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:336 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.417 83 1 3197 255 100M = 3027 270 TTAATCCAAGTTTCAGGTAAGGTTGGCACCCCGCTATTAAAAACAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCAT IIADIIIIHI<:IH9IIGBEDEIIIIIAIDI?FEDHFGHIIFGHIEHIEHGHFIEFGHIIIFIFHGIHIIIHGGGIIIHHIFHIIHGFGIIIIHHIIHIH NM:i:3 MD:Z:8C8G25G56 oR:Z:1 oH:i:2 oP:i:3471 oS:A:R XE:i:2 XS:i:2 XI:i:0
@@ -860,7 +860,7 @@ simulated.428 133 1 3929 255 * * 0 0 AAAGGAGCGCTGTGGAGCCCGACCTCAGCTAAAGAGCCTTGGG
simulated.429 83 1 4513 255 100M = 4338 275 AATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGG IIHIIHIGAIIIDDIICEAHEFEIIEII at IF>FGEIIIGIGDIHIIFGIIGIIIIEIICEHIHFIIIDFFIIGGIIHIGIIIIHHIGGIGHHIHIIIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4538 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.429 163 1 4338 255 100M = 4513 -275 TGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTNAACACCC HIHHIIHHHHHGGHIIIHGIHIHHIHIHIIIHIIFIIDIFFIFFIIIEICDGEI>CIEIHIIGIEF at G>IEFBAEIIGEIIGIIHFDHIIDIIFDDIIGB NM:i:1 MD:Z:92T7 oR:Z:1 oH:i:1 oP:i:4363 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.430 99 1 1817 255 100M = 2000 283 AGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGT HHIIHHHIIHHHHHGIGGHIIIGGIIGFHIHIHHIFIIIIIGHIIHIIIIFGIE>GIGECHEIIIIIHAGIEDIGAIBBFIIHCFE>DI?IG>EI:IEIB NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1919 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.430 147 1 2000 255 14M1D86M = 1817 -283 TGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTA IF at IBCHHHGIHFGAIIGEIIGIC>CCFEFGCBFEIHEHCEEIHDHHIIIFIIIIIGEIHIIIGIIIIIHIIFHIIGFGIHHIIGIHHHHIHHHHHHHHI NM:i:1 MD:Z:14^A86 oR:Z:1 oH:i:1 oP:i:2102 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.430 147 1 2000 255 14M1D86M = 1817 -283 TGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTA IF at IBCHHHGIHFGAIIGEIIGIC>CCFEFGCBFEIHEHCEEIHDHHIIIFIIIIIGEIHIIIGIIIIIHIIFHIIGFGIHHIIGIHHHHIHHHHHHHHI NM:i:1 MD:Z:14A86 oR:Z:1 oH:i:1 oP:i:2102 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.431 69 * 0 255 * * 0 0 CGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACGTGCCTTTGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGA IHIIIHHHGIHGHIIIHIGIHHIFFFIEDIHGIHIIHGIGCIFIIFGDDHAFGFIFGIIIIFIIIIGIGIH?IHEGAIIFEIIBIHIHIII<IIDIDIII uR:A:B oR:Z:1 oP:i:2868 oH:i:1 oS:A:F
simulated.431 141 * 0 255 * * 0 0 GCCCAGCGATGTGGGCGCTTGCGCTATACGATAATTGGAACCAAGTAGCGGTATCAGCTCTACGAACAATCTAAGGTTAGGCTTTATTTATGACAGGACA HHIHIHHIIHIHHHIIHIIIIHIIGIHGIIIIIGIIIIBIIGGIGIIIFFGIADIIIIEBGGCD?IBIIFHEIAIGHGCAIGIF=IIIIIHHB?IICFII uR:A:B oR:Z:1 oP:i:3083 oH:i:1 oS:A:R
simulated.432 83 2 766 255 100M = 583 283 CATGCATGCAGATGATCCCTTATGTGCCAAAAACGGGTACCCGCTAGCCGTGGATGCGAGGTTCCTGACCCAATCTTCTCTATGTTTTTAACGCTCAAGT FIDIEIEIEEEIIHIGIIIDGIEIGGGEIIFIG at IIGIHIIIIFIIHGFIIHHEFCIGHHIHIGIIGHIGFIGFIIIIHIIIIGIHIIIHHHIHIHHHHI NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:765 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -888,7 +888,7 @@ simulated.442 133 1 6704 255 * * 0 0 CCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGC
simulated.443 69 1 3337 255 * * 0 0 TTCCACGGGACAACCCCTTGACGTATGTCCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAA IHIHHHHGGIHHIHHHIIHIIFGIIHGIIIIGIIIHIIIEHIFHIIFECFFIHIEAF at FIDDEFICFHIIIIGIEH@IIDGEIFI?EEIICCEIEGII<A uR:A:B oR:Z:1 oP:i:3238 oH:i:1 oS:A:F
simulated.443 153 1 3337 255 100M * 0 0 ATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAACTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTG IHIIDIIHIIIIFIFIEIIHIIIHIGGIICIICIIBHHICIIIFFGIHIHIFIFGDIEIHDIHFIIIIGIGCHGIGFIGIHFHIIHIIIIIHIIIIHIII NM:i:1 MD:Z:37G62 oR:Z:1 oH:i:1 oP:i:3438 oS:A:R XE:i:0 XS:i:1 XI:i:0
simulated.444 69 1 8980 255 * * 0 0 GTAGTGGAAGAACTCCGGATATTCCGACCAGCTGGAACGGTCTCAAACCGTTGTCGGTTCCGCGCTTGAAATGCGCGCTGGCGGTGAACTAACTGCGGAT IHHHHIHIIIIIHIIIIHHGIIHIHGIGFFCIHFIIGIGCIIEIFIIIIIIIGCIFHIBDHACDIBGIFHE=II>III>DIIIID=I at DFIE@I>HHIIF uR:A:B oR:Z:1 oP:i:9938 oH:i:2 oS:A:R
-simulated.444 137 1 8980 255 6M1D94M * 0 0 CACTACAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGCTGCACAACCACTACAGAGGATGCCTC HIHIIIIIHIIIGIHIHIIIHIHIHIIFIIHIIHIHEIIGGIGDEEIHGGFDFDIDIIIGIEEIIEIIIICBI;AFIEIIIDFGIDCIF6IIGCAEII>I NM:i:4 MD:Z:6^G67T15A4A5 oR:Z:1 oH:i:2 oP:i:9734 oS:A:F XE:i:4 XS:i:0 XI:i:0
+simulated.444 137 1 8980 255 6M1D94M * 0 0 CACTACAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGCTGCACAACCACTACAGAGGATGCCTC HIHIIIIIHIIIGIHIHIIIHIHIHIIFIIHIIHIHEIIGGIGDEEIHGGFDFDIDIIIGIEEIIEIIIICBI;AFIEIIIDFGIDCIF6IIGCAEII>I NM:i:4 MD:Z:6G67T15A4A5 oR:Z:1 oH:i:2 oP:i:9734 oS:A:F XE:i:4 XS:i:0 XI:i:0
simulated.445 99 1 6581 255 100M = 6801 320 CTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAA IHIHHHHIIIHHGIGIHGHIHHIHDIIIFIBHIIIIIBIIFFIIFIIGIIHGHIIICIGIGH?IIIII<HIIIIIFIH?ECCFIIEAFICIDIBEIHGBH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6774 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.445 147 1 6801 255 100M = 6581 -320 CCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTNCACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAG IIGFIHIFAGIIFIIAIIIIBI at I?IIIAHIBBIIIIIF?I?HHIDAIIG at IIHDDFIIGIIFIIGIIFHIHFIIIHHGIHIIHGGHIHHIIHIIIHIHH NM:i:1 MD:Z:57A42 oR:Z:1 oH:i:1 oP:i:6994 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.446 69 * 0 255 * * 0 0 ATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTT HHHHIIHIIIHHIHIIIHIIIIIIGIIIHGHDIIGIIGIIDICHIIIFICIFDEIIFGDICHGDEIIIIIGGDIBIHDBCEI at DBIFIEHBGIE<IIIDI uR:A:B oR:Z:2 oP:i:119 oH:i:1 oS:A:F
@@ -938,7 +938,7 @@ simulated.467 141 * 0 255 * * 0 0 CTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATT
simulated.468 69 * 0 255 * * 0 0 GGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTG IHIIHHIHHIHIHIHHIIIIFGHIIIFGIIHGFHIFIGGHFHBIEIIFIDIDIIEIIGII=EIIIIIIGIFIGIGIIGE;IFGIIIHHIIIII at IIII?G uR:A:B oR:Z:1 oP:i:5228 oH:i:1 oS:A:F
simulated.468 141 * 0 255 * * 0 0 CCCGAGTAGCTTAATGTACCTCCATGATACCGTTAGTGGAATGACTACTGTTCAGCGTAATGAACGCGAGCTCCACGTGTTTTTCACCACCCACCTGGCA HHHIHHHHHIHHIIHHHHIGHGGHHDHIIBHHIHIFIEGI?EFHIIDGEAIBIDIBEHIAIIIIDDDIIHICIIIIIEEIIDCGDIDIIIB at IDIEIHED uR:A:B oR:Z:1 oP:i:5434 oH:i:1 oS:A:R
simulated.469 99 1 8865 255 100M = 9078 313 ATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAAT IIIHIHHHIIIGIIIIHHHIIGFHEIIIHIIGCGIIIIHHIIFGHHFIIIIDFGIAIDHHHIIHIICCIBCDAF>GIDHIFIGDCECBGII<III at IIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9058 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.469 147 1 9078 255 30M3D70M = 8865 -313 CTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATGCG II9I>FIHIIIE<DIFIGICIIDIGFEIGIIICIDIIIBICEIGEIIIIIHIIHIIHHIDAIEHIFEIIIHFIIHIIIHIHIHIHIGHIHHHHIHIIHHH NM:i:4 MD:Z:30^GAT67T2 oR:Z:1 oH:i:1 oP:i:9271 oS:A:R XE:i:1 XS:i:0 XI:i:3
+simulated.469 147 1 9078 255 30M3D70M = 8865 -313 CTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATGCG II9I>FIHIIIE<DIFIGICIIDIGFEIGIIICIDIIIBICEIGEIIIIIHIIHIIHHIDAIEHIFEIIIHFIIHIIIHIHIHIHIGHIHHHHIHIIHHH NM:i:4 MD:Z:30GAT67T2 oR:Z:1 oH:i:1 oP:i:9271 oS:A:R XE:i:1 XS:i:0 XI:i:3
simulated.470 99 1 8166 255 100M = 8394 328 CCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACT HHIIIHHIIGHHGIIHIHGIHIIGHIGFGIHIEIIIIIIFHIIAGHIDIHIIFGIIADABGIDIIIEEFEIIEIIIHDIEAIE at EDIIHIIFI?IIIBH= NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8359 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.470 147 1 8394 255 100M = 8166 -328 CGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAAT FAD?IIIGCFIIIGGII>IICGGIGH>9FIGEIACIIFIIGIGIGIIIEIIHIIIIIIHIIIIFHFIIIIFFIIIIIIHIHHHHGIHIIHHHHHIHHIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8587 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.471 99 1 6702 255 100M = 6903 301 CACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTC IIHHHHHHIHIHIHIIHIGHIIIIGHGIFIIFFEIHHIGEIHHFIHFHEFIGIGHIID?IIICIIEIIIEIADFBEFGICHHHEIIHHIIDFIAFFIIDI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6895 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -946,7 +946,7 @@ simulated.471 147 1 6903 255 100M = 6702 -301 ATGGAATGATATCCTGCGGGCCCTTCTTTAGTTT
simulated.472 73 1 9009 255 100M * 0 0 TTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAG HHIIIIIHHIIHIHIHIIIIIFIHHIHIFHHIHIHIIDGIIIIFIIEHCDIIGG at FEDIHIEEDDIIICIIBIIDIBH=I at BAIIEFIIHBEFIICIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:9763 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.472 133 1 9009 255 * * 0 0 TGACGGGACCACTACAATCCAGTAGTGGAAGAACTCCGGATATTCCGACCAGCTGGAACGGTCTCAAACCGTTGTCGGTTCCGCGCTTGAAATGCGCGCT IHIIHHIIIIHGGGIHIHHIIIHIHIIFHHEEIEIIIGIIIBIH at EDIEFHIDIHIII@IHDCEIHHGIHGIDIECEIIDIBIEEHIDIDIID at IGCBII uR:A:B oR:Z:1 oP:i:9959 oH:i:2 oS:A:R
simulated.473 99 1 2048 255 100M = 2250 303 ATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTCAAATTACAA IHIIHHIIHIHIGHHIGIIIHIIHIIIGHGIGEIIIIHGIECHAIHIIFIHGEIHIIFIDIHICFEHIIIIIHHIEIBHIFIIGHFGCIICFBIIDCEIE NM:i:1 MD:Z:90G9 oR:Z:1 oH:i:1 oP:i:2149 oS:A:F XE:i:0 XS:i:1 XI:i:0
-simulated.473 147 1 2250 255 71M1D29M = 2048 -303 ATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATAACGTCAAAAGTCTTCTACCCACGGGTG IIHI at IGIEIFIIBIIEH>EGD@@HIEFDFIEGGGID<IDHGICIIIHIHIGIIFGIFCHHIIIIIGHGHFIGEIIIHGHIHIIHHHHIIHHIHIIHIIH NM:i:1 MD:Z:71^T29 oR:Z:1 oH:i:1 oP:i:2351 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.473 147 1 2250 255 71M1D29M = 2048 -303 ATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATAACGTCAAAAGTCTTCTACCCACGGGTG IIHI at IGIEIFIIBIIEH>EGD@@HIEFDFIEGGGID<IDHGICIIIHIHIGIIFGIFCHHIIIIIGHGHFIGEIIIHGHIHIIHHHHIIHHIHIIHIIH NM:i:1 MD:Z:71T29 oR:Z:1 oH:i:1 oP:i:2351 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.474 89 1 3339 255 100M * 0 0 AGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAACTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACNTCGTGAC IIII?@IIIIIBFHIIIGGIHFIICIC>GGEG9AEEIFDIIDHIFGIHFIDIIHIIFGHIBIEDEFEHIEFIIIGIHHIIIIHHIHHIHIHHIIHHIHII NM:i:2 MD:Z:35G56A7 oR:Z:1 oH:i:1 oP:i:3440 oS:A:R XE:i:1 XS:i:1 XI:i:0
simulated.474 133 1 3339 255 * * 0 0 TCCACGGGACAACCCCTTGACGTATGTCCTATTGAGAACTTACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAA HIHIHIHIIIIHIIIHIGGFIFIIHIIIHEIIIIIIIGGICIGDFIIFIII>HIIHIIFECIEIIIIII at CIGDIIIIHHII@EGIAIIIIIGIIIH:FC uR:A:B oR:Z:1 oP:i:3239 oH:i:1 oS:A:F
simulated.475 73 1 7729 255 100M * 0 0 CAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCGACCTAGTGGATCGATTACGGGATAGCCCCCTGCTTTTAGCCGCGAAN HIIIHHIIHIHGIHIIIHIHIHHHIHHEIIHGFIIDGIGFIFIIGIGDHIIIIIIFDIIIIII at EIHCIFFIIFEIFFI;IGEIHI2BIHEII5IIIDD= NM:i:4 MD:Z:52A33C6T5T oR:Z:1 oH:i:2 oP:i:8453 oS:A:F XE:i:4 XS:i:1 XI:i:0
@@ -1044,7 +1044,7 @@ simulated.520 147 1 7302 255 100M = 7115 -287 ATTAGCCCATGTTCGACCGGGTACCCTGTGGAGA
simulated.521 99 2 130 255 100M = 363 333 CGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTT IIIHIIHIHIIHIIGHGIIFIGGHGEIGHHHDGIGIHEIIIHHHIIGHFIDGIIDFIEHEHI>FDIIFGEIGEII at HCGIEIF?IEA=IEIFIII at EGCI NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:129 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.521 147 2 363 255 100M = 130 -333 CGGGTCGGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGCTAAGCCAATTTAATCAGACTAGGGACGCGATACTGCACGGCATGTTCCTCACCTGGT B at II>IGEII at HIFEHIDEGI;IIIIBEEIIIGFIIGIIEAIEIIICCIFHDIIGEGHIIEGIGIIIGHIHGIIIIHIHIIIHIIHIHHHIHGIIHIIII NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:362 oS:A:R XE:i:0 XS:i:1 XI:i:0
simulated.522 99 1 8832 255 100M = 9046 314 AATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCCAGCCCCTAGGAACCGG HHIIIHIHHHIHHHHIIIIGIIDGIHIHHHHHIIFIIFHEEGIFIHFIEEIIDGHIIIIEIHIDGECIIFIIDBIIIIFECHHIDIDFDH at DI=IIAIID NM:i:1 MD:Z:83G16 oR:Z:1 oH:i:1 oP:i:9025 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.522 147 1 9046 255 62M3D38M = 8832 -314 CATGTGCGTTGGACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACT IIH;IIHIEIIFEIDIGIFIFIDEIBEIDCCEHHIGGFIGFIIGFFIFICCIBHIHHIFIIIHDDIIFEIGGIFIHHFEHIIIIGIHHIGHHHHIIIHIH NM:i:4 MD:Z:11C50^GAT38 oR:Z:1 oH:i:1 oP:i:9239 oS:A:R XE:i:1 XS:i:0 XI:i:3
+simulated.522 147 1 9046 255 62M3D38M = 8832 -314 CATGTGCGTTGGACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACT IIH;IIHIEIIFEIDIGIFIFIDEIBEIDCCEHHIGGFIGFIIGFFIFICCIBHIHHIFIIIHDDIIFEIGGIFIHHFEHIIIIGIHHIGHHHHIIIHIH NM:i:4 MD:Z:11C50GAT38 oR:Z:1 oH:i:1 oP:i:9239 oS:A:R XE:i:1 XS:i:0 XI:i:3
simulated.523 99 1 1308 255 100M = 1482 274 TTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGA IHIIHIIIIHHIGIHIHHGHHGGGHHGGEIIIGGFGIIHDGFIHHIIIFDIIIDHEHGEIEDIGGII?IEIEIHHHBDIDI?FIIIHIBC:B<IIIIFII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1410 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.523 147 1 1482 255 100M = 1308 -274 GTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATG IFEFIBIGIEFHIIEIHAEICIEIIEGIFIIEIAIIIHIBFHIDHIGFHIIIIAIIHEIDGIEGHEIIHIIFGFHFHIIIGHIHIIIIHHIIIHHIHHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1584 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.524 69 1 1048 255 * * 0 0 CGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGTCTGTTCAGAAAACTTACGCATGATGCACCCCGGAT IHIIIHHHIHIGIIIHGIGIIHIHHIHIIIIGIIHGIEIDGHBIIHEIICIEEGHHIHIGIIDHGGIIGIIFIIIIIIIIIFBFFEIIIIGIFIIFIGEI uR:A:B oR:Z:1 oP:i:932 oH:i:1 oS:A:F
@@ -1121,7 +1121,7 @@ simulated.559 89 1 6128 255 100M * 0 0 CTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCAC
simulated.559 133 1 6128 255 * * 0 0 TTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATAACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCC IHHHHIHIHIIIIGIHGHIHIFIFGIDIFIIIIIHFHGFIEIIIEIEIDEHBIIHIFE at EIFHIFIFIDGIIEGIBIDE<ADDIGI?IHACBHIIIGIFG uR:A:B oR:Z:1 oP:i:6025 oH:i:1 oS:A:F
simulated.560 69 1 2629 255 * * 0 0 CTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATACAATCAACATTATAGAAAGCCACAGCGCGGTAACGTTCATGTACG IIIHHHHIHHIIHIIHHHGIHIIHEEIICGHGIHGIIECHGGIIHGHDGIDIGHHIICII?IGEEIIHG>E?IAFEGIIIFFDAHIIII?IIGID at DC?I uR:A:B oR:Z:1 oP:i:2716 oH:i:2 oS:A:F
simulated.560 153 1 2629 255 100M * 0 0 TAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGG IHICI8:IIDIIIIIBIHIIBIIIIIAGDDI?DEIDIIIIBHIIHIIDHDEIFIIIIDIIIGIIIIFDFIIIIFIGHHGHIGFIIGHHIHIIHHIIIIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:2903 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.561 73 1 3740 255 54M1D46M * 0 0 GTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAAC IIIIHHIIHHIHHGIGIHIHHIHFIGHIIIIDGIGIIIIICIIHHHGFFEFFEFGDHBF=EIBGDFIHIGHEDDEAIAIIEHHIII?HIG at IG>@?HH9I NM:i:1 MD:Z:54^T46 oR:Z:1 oH:i:1 oP:i:3841 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.561 73 1 3740 255 54M1D46M * 0 0 GTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAAC IIIIHHIIHHIHHGIGIHIHHIHFIGHIIIIDGIGIIIIICIIHHHGFFEFFEFGDHBF=EIBGDFIHIGHEDDEAIAIIEHHIII?HIG at IG>@?HH9I NM:i:1 MD:Z:54T46 oR:Z:1 oH:i:1 oP:i:3841 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.561 133 1 3740 255 * * 0 0 TACGAAAGTCCGAGCTGTGTGGCGGGGTTTACTGTCAGGCAGGACCTCTGTCTAAGTCATTACTTACCCGCGCGACGCAGTCAATTCCTCATGCATTTGG HIIHIHHHIIHHHGHHIIIFHGHHIHIIIIHFGHFFEIIIHGIDHHIEIIFEHIEGIFCIBIFFIDIFIBIEEIIGIGIGGICIHI:BICIHIIBHICIH uR:A:B oR:Z:1 oP:i:4045 oH:i:1 oS:A:R
simulated.562 99 1 6667 255 43M2I55M = 6842 275 GTCTGATGTACCAATACTCTCGCATATCCGCCGGGCACTAAGATCTCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTA IHIIIHIIHHIIIIIIIIIIIIHIIHIGHFIIGF at IIIEIHIIFDIAFIIFIIIHIHGIDIHIIIIGICFBI@IIHFIEDFDIIDIIIIIIA at IIIICII NM:i:3 MD:Z:34A63 oR:Z:1 oH:i:2 oP:i:7389 oS:A:F XE:i:1 XS:i:0 XI:i:2
simulated.562 147 1 6842 255 100M = 6667 -275 GTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGC H@@EIACGHIHIIBIFIIHIFFIIDCHBCEIIIHIEIIFBIHIGIGIHIEIIIEIFGIFIGGHIBGIIHGFFGGGIIIIIIHHIHIHIHHHIHIHIHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7566 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -1267,9 +1267,9 @@ simulated.632 83 1 2887 255 100M = 2684 303 GACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTA
simulated.632 163 1 2684 255 100M = 2887 -303 AGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTATGCATCAGAACTCCGACGGGGCGAGCGAAG IIIHIHIHIIHIIHIHIHIHHIGEFGIIIGIIIEHCHGIIIFHGFFIIIIIDICBFI at EACHICDGIAIH9HIEIGIGBAHCIII?IFICGIDHDIAH>I NM:i:2 MD:Z:70A14G14 oR:Z:1 oH:i:2 oP:i:2958 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.633 69 * 0 255 * * 0 0 TCATCTCGTCCGGTAGTCAGCGAACTGAAACATGCCGTGCAGTATCGCGTCCCTAGTCTGATTAAATTGGCTTAGCTACCTCCCAGAAGAGAGATGAGGA IHHHHIIGIHGIGHIHHHHHGGHIIEIIHIIGHHIIIGIIGIIHIIIEFDI at FGIIFIIAIIAIIBHF=IIIDBHFHDIIIBHICIHEIIII at IIIHIII uR:A:B oR:Z:2 oP:i:332 oH:i:1 oS:A:F
simulated.633 141 * 0 255 * * 0 0 ATTAAGTCCCGATTCAGTATAGCCTATTATCGTTACCGCGATCCGACGGAGCTCCAATTCGTAGAGGTAAATAGACTGCGCATTCCATACAGCTTCTAAC IHHIIIHHIIIGHIHHGGGHIHHFGHHGIHIIIDIDIGIIHGHCFGDGHIIIGIIHIEEIDIBIEDIIIGIHIIF at HC@HGIIIIIIIIIIIIIGFIEFB uR:A:B oR:Z:2 oP:i:529 oH:i:1 oS:A:R
-simulated.634 99 1 43 255 78M3D22M = 251 308 TTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGT IIHHIHHIHHHHGHIGGFIHHHHHGDIIIFHIHIHIFGDIFGIIIIIIIIBCDHEGBIIIEHIIIIAEFIIIIIIGIIIHBCFII?IIGII:IIDACAI; NM:i:3 MD:Z:78^ACA22 oR:Z:1 oH:i:1 oP:i:42 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.634 99 1 43 255 78M3D22M = 251 308 TTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGT IIHHIHHIHHHHGHIGGFIHHHHHGDIIIFHIHIHIFGDIFGIIIIIIIIBCDHEGBIIIEHIIIIAEFIIIIIIGIIIHBCFII?IIGII:IIDACAI; NM:i:3 MD:Z:78ACA22 oR:Z:1 oH:i:1 oP:i:42 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.634 147 1 251 255 100M = 43 -308 GCACCGGCCCGCCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATC BBBIB>IFHIIII<FIAICHIFICDIEIIIIIII at IIC@IHC at IIHDHIHIGFEBGIFHIFHIFIFHEFGGIHGIFHHIGHIIFHIIGHGGIHIIIIHII NM:i:1 MD:Z:11G88 oR:Z:1 oH:i:1 oP:i:244 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.635 99 1 1942 255 72M1D28M = 2122 280 CATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAG IIHIIHHHHHIIIGHGGIIHHGGGIFFIIIEIGHIHIFFIIFHIIIIFIIIIHEIHEIBFDHI?EIDGIGEFCIIEICDDIGHEIEIEIBCIGIFBIIIE NM:i:1 MD:Z:72^A28 oR:Z:1 oH:i:1 oP:i:2044 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.635 99 1 1942 255 72M1D28M = 2122 280 CATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAG IIHIIHHHHHIIIGHGGIIHHGGGIFFIIIEIGHIHIFFIIFHIIIIFIIIIHEIHEIBFDHI?EIDGIGEFCIIEICDDIGHEIEIEIBCIGIFBIIIE NM:i:1 MD:Z:72A28 oR:Z:1 oH:i:1 oP:i:2044 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.635 147 1 2122 255 100M = 1942 -280 ACGAGAGGTAAATTGTCAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCA 3 at FIIEHHIIDHIHCDIIFIDIIEIIHIIIICICIIII@GFGIIBIFIFEIIFIIIEFIIGIDHHHHHHIFIGFIGFIIIFIFIIIIIIHHIHIIHIIHI NM:i:1 MD:Z:16G83 oR:Z:1 oH:i:1 oP:i:2223 oS:A:R XE:i:0 XS:i:1 XI:i:0
simulated.636 99 1 3182 255 100M = 3376 294 GTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAACAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTA HHHIIIIIIIIHHIHIIIIIIIIHIIHIIGFHGDHIIIBHHIIHIIEHIIIIGEIIEEIIIIIIIIIIBIIEIEHIIC;IIEFICIIIEIIBIIIIEBF< NM:i:1 MD:Z:58G41 oR:Z:1 oH:i:2 oP:i:3456 oS:A:F XE:i:0 XS:i:2 XI:i:0
simulated.636 147 1 3376 255 100M = 3182 -294 TTAGCTGAATGACAGGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTTACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCAT IIIIIEIHIIGIEIFIII=EDFIFIIII?HIHIBIIIFBGI at IGFHIIIHFI<HGIHEEHFIGGFGIIIGEIIIIIHGIIHIGIHGIGHHHHHIIHIHHH NM:i:2 MD:Z:14T37A47 oR:Z:1 oH:i:2 oP:i:3650 oS:A:R XE:i:2 XS:i:0 XI:i:0
@@ -1320,7 +1320,7 @@ simulated.658 147 1 4745 255 100M = 4561 -284 CCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCG
simulated.659 69 * 0 255 * * 0 0 CACCAGCCCTGCGGATGCAAGACCGGTTCGAATCGGTCACTAGATCAGCCGTAAGGCGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTAT IHIHIIIHIHHHIIIIIIIIFIIIHGIHIFIGDDGGIIIGIIFIIEIIIBAIHIEC?IIIIHI at HGIICI<IIIIIIIIB at IGIHIFIEFEIFDIA<DFE uR:A:B oR:Z:1 oP:i:6034 oH:i:2 oS:A:F
simulated.659 141 * 0 255 * * 0 0 AAACGTCGCAATACTGGTAGTCAGCAGACTAGAGAATGAACACTCTGAGATGCCTGCCTTTATGCGATTACGTTGATACGGCTGCTTGCCGGCATACAAA IIHIHHHIIHHHHIHIFIGIGIIIGGGHHFIHDGHFFIHHEIHGIFFIHIIGGIFHGIFIIIGGFIEIIEIIIICCDHHIIHFIFIE@>IIBIIFFFD?: uR:A:B oR:Z:1 oP:i:6206 oH:i:2 oS:A:R
simulated.660 99 1 7110 255 100M = 7293 283 CTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCCCTAGTGTGCGCGTGTAGTC HHIHHIHIHIIHIGIGHIIIHIGHHDHIIHIGGIIIHIIIIHGGIIGIFIHIIEGFIECGGBEIFIACDIBGCIEIIIFIGIDIIIEIIGBII>IGIAIG NM:i:1 MD:Z:80G19 oR:Z:1 oH:i:2 oP:i:7834 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.660 147 1 7293 255 100M = 7110 -283 AACATAGTTATTNGCCCATGTTCGACCGGGTACCCTGTGGAGAGTTTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCC IHGHII?DHII>DIICI>I?GIEHCII at I?IBFIAIDHFIIGHDAGHIGICFFIIFFIDIIIIIIGIHFHIGHFHHIIIGHGIGHHIHIGHIIHIIHHII NM:i:3 MD:Z:12A31C0C54 oR:Z:1 oH:i:2 oP:i:8017 oS:A:R XE:i:3 XS:i:0 XI:i:0
+simulated.660 147 1 7293 255 100M = 7110 -283 AACATAGTTATTNGCCCATGTTCGACCGGGTACCCTGTGGAGAGTTTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCC IHGHII?DHII>DIICI>I?GIEHCII at I?IBFIAIDHFIIGHDAGHIGICFFIIFFIDIIIIIIGIHFHIGHFHHIIIGHGIGHHIHIGHIIHIIHHII NM:i:3 MD:Z:12A31CC54 oR:Z:1 oH:i:2 oP:i:8017 oS:A:R XE:i:3 XS:i:0 XI:i:0
simulated.661 89 1 6734 255 100M * 0 0 TTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCAC IIFI?I>IDHBIIII<AIIIIIIIDICIGIIIHFFIAI?FHGGIIIIFDGIDHIGIIHIFIIEGHGGIGIIFHGGIHIIIGIIIIIIIIIHHHHIIIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7458 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.661 133 1 6734 255 * * 0 0 TAGCTTTTTCCCATTCAAACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGAGAACCCATTGACTTGGCCAGTTAGCGAAAGGCCCACGACGTAAA HHIIIHHHIHIHHIIIIHIGIHIEFIHHHIGGIIGIIIHGEHIEHCHGIIIHIIGIIHIIIBECIDIIIEBHEDHI=GE=?IIGIICE at IEIEIIGHIII uR:A:B oR:Z:1 oP:i:7228 oH:i:2 oS:A:F
simulated.662 69 * 0 255 * * 0 0 GGGGCATTCGGCTAATGCGCGTAGGCCCCTCCAGCCACAGTGCAAACCGATGTACGCAGCTAATGCCCAGCCTAAACACGCTTTAGCTAGTCTGTACACG HIHIHHHHHGHHHIHIHIIIHIIHHIIHFHGIIFFGIFHFGGIHIIGBFIIDIIIIHIF;IIECH?HIDFIEC?IIEFIGIDHH=ICEIE at IIE>CACII uR:A:B oR:Z:1 oP:i:1167 oH:i:2 oS:A:R
@@ -1350,7 +1350,7 @@ simulated.673 141 * 0 255 * * 0 0 CGATCGTGAAATTCAACAATACTATGAGCCCGTTGCTAGTTCCTGT
simulated.674 89 1 1899 255 100M * 0 0 TGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGNACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAG 4EBFIIGCAGAIIIICIIIHIIIGHIEIAFIIEIEIII at HIIBHIIAGIFGEFHIDBEIIIIHEIGFEFIIFHGIHIIGIIIIHHIGGHHHHIHHHHIHH NM:i:1 MD:Z:37A62 oR:Z:1 oH:i:2 oP:i:2097 oS:A:R XE:i:1 XS:i:0 XI:i:1
simulated.674 133 1 1899 255 * * 0 0 CCACCCCGAGACCTTGTCCCTTGCCACAGTATAATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCAT HIHIHIHHIIHIHGIHIGGGIIHIHGIIIHIFFFFIIIIHIIIIGDEIIHCIFGGIICIGDICHIGFGIEIIIFIEIDIFBIIHCGIIIFI=IIIIG=IC uR:A:B oR:Z:1 oP:i:1889 oH:i:2 oS:A:F
simulated.675 69 1 7976 255 * * 0 0 TATTCCATTCTATAGTACGAATGATAGCGAATAGTGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTC HHIHIHIHIIHHIHHGFGHIGIIIGIIEIIIIFIIIIGIFIHGCIHEEDHIIGIGGIII>EFDCIBGIIEFIHICIFIIECIIGEIIIIGI>EGFIIIII uR:A:B oR:Z:1 oP:i:8395 oH:i:2 oS:A:F
-simulated.675 153 1 7976 255 100M * 0 0 GCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTTCACGATCGCGGGTCTTACTCCGGGCCTCCATAAGCGAA ;FII?HGGIBIFIIDGEIIIGH>IGIIICH at I?DBHIHIGIHEDIIGDGBIHCIEFHIIEIIIIIFGGIIFIIIGHIIHIGIFHIGIHIIIHHHHHIHHH NM:i:2 MD:Z:0T89A9 oR:Z:1 oH:i:2 oP:i:8613 oS:A:R XE:i:1 XS:i:1 XI:i:0
+simulated.675 153 1 7976 255 100M * 0 0 GCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTTCACGATCGCGGGTCTTACTCCGGGCCTCCATAAGCGAA ;FII?HGGIBIFIIDGEIIIGH>IGIIICH at I?DBHIHIGIHEDIIGDGBIHCIEFHIIEIIIIIFGGIIFIIIGHIIHIGIFHIGIHIIIHHHHHIHHH NM:i:2 MD:Z:T89A9 oR:Z:1 oH:i:2 oP:i:8613 oS:A:R XE:i:1 XS:i:1 XI:i:0
simulated.676 69 * 0 255 * * 0 0 CTTGCCGGCATACAAATGAGTTTGAAAGCGGCGGTAACCTAATCTAAGCTGGGGAAGATTCTGCCTCGAACATGCCAGAAACGTCGCAATACAGGTAGTC IIIHIIIIHIIIIIIGIIHHIGIGIGIGFFFIGIGIIDIIIIIFIDIFGCDIHIGIHFIICHCIEHIIIDAIEGIIFIIHI>IIGIABIHEF/FIIIEIE uR:A:B oR:Z:1 oP:i:6122 oH:i:2 oS:A:R
simulated.676 141 * 0 255 * * 0 0 AGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGGGACCGTGTATTGAACCGCCTAAGACCCAGCTCCACCAGCCCTGCGGATGCA IIIHIHHIHHIIHIIHHIIHIHHGHFGIIHFIHIGIIIIIGCHIEFHIIHIIFCIFIIIIFIBIGEIHIIGGIIFGAIIIHB at IIIHIIEBHFII4IEII uR:A:B oR:Z:1 oP:i:5953 oH:i:2 oS:A:F
simulated.677 99 1 9524 255 100M = 9723 299 CGTCGGAACTAAACGCCAGAGTCTAGAGCAGCCACAAAAAAATAAATTGAATCGTTAGCTCCGCCGTGTGGACATGGCATCGGCGTCATCCCATATACAT IHIIIHIHIIIIHIIIFHIHHIFIHHIIIIHIIGEIEIIHHIIFEIHFEII at EHIIGDIIBIAEIEIIHIIHIEGIIIIIFHIBHEIIIAFI9HIF@IDG NM:i:1 MD:Z:36T63 oR:Z:1 oH:i:2 oP:i:10367 oS:A:F XE:i:1 XS:i:0 XI:i:0
@@ -1408,7 +1408,7 @@ simulated.702 133 1 3725 255 * * 0 0 ACACTCCTTAGTTACCCAATGTATTAGAGTCATCCCACGTCCA
simulated.703 69 1 5043 255 * * 0 0 CAAGCCTTGGGCGGGCGCCCGAGTAGCTTAATGTACCAAGGCTGTCCGTCTGCAAACCCTAGTTCCGAGCAGGACTCAGCGCTGACTAACTACAACTTGG IHIIHHIHIHHIIHHIIHIIHIHHHIIIGHIIIGIGHIIIIIIIGIIIFCBIDI at IIIIIHICHIIIDIIIIIIAIIIIII?HBII==IEBI at II<B<II uR:A:B oR:Z:1 oP:i:5264 oH:i:1 oS:A:R
simulated.703 137 1 5043 255 100M * 0 0 ATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACG IHHIHIIHHGIIIIIIIIIIFIGHHIHIHFEIIIIHIIEIIBIDGHIIEHIDIIIGGIFGIEIHGHIHBFIDIGFIHFFIBBIHHHIIIIIHIIICIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5068 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.704 83 1 4871 255 100M = 4665 306 TGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCA CII at II:HIIDIIIFIDBAHAAIEIFIIAAIIEII at IHFFGIEIBGIIDEIGGHGIIIIGGIDGHIFGEFFIFFGIIIFIIHHHIGHIIIIIHIIHIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4896 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.704 163 1 4665 255 100M = 4871 -306 CAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCGTATGACCCAAACCTCCTCATGGAGCTAAGCT IIIIHIHIHIIIGHIIIGFEHHIFHFHIIIFIHIIGIFHIIIIGEIIIEHIIIIGIGIIGHEIIGHIIAIEE;HI?IBCIFFIICHFDIIB<CI?DIIII NM:i:3 MD:Z:68T3C0C26 oR:Z:1 oH:i:1 oP:i:4690 oS:A:F XE:i:2 XS:i:1 XI:i:0
+simulated.704 163 1 4665 255 100M = 4871 -306 CAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCGTATGACCCAAACCTCCTCATGGAGCTAAGCT IIIIHIHIHIIIGHIIIGFEHHIFHFHIIIFIHIIGIFHIIIIGEIIIEHIIIIGIGIIGHEIIGHIIAIEE;HI?IBCIFFIICHFDIIB<CI?DIIII NM:i:3 MD:Z:68T3CC26 oR:Z:1 oH:i:1 oP:i:4690 oS:A:F XE:i:2 XS:i:1 XI:i:0
simulated.705 83 1 2933 255 100M = 2750 283 CTATGGTGACGGCATACCCAGAACGATAAGCCAGCCGCTGGCTTCACGGTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACC II>FDI>HIIIIG<I==@DIIIIIEDDGIAIIGEFAGGIIIIIEIFGI>IIIICIIHEEFIEIIFHIGEIHHIFGFHIIGGHHIIIGIIHIIHHHIHHHI NM:i:2 MD:Z:34T13C51 oR:Z:1 oH:i:2 oP:i:3207 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.705 163 1 2750 255 100M = 2933 -283 TTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCAC IHIIIHIIIHIIHIHIIIHIIIFIIEDIGHHIEIHIHIHIIIIIDFDIHIHFIIBIIFCIIIEBEIHDCABIIIIHIIBIGIFIIIIIIBIBIIIIE at FE NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:3024 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.706 99 1 3170 255 74M1I25M = 3369 298 TGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAACAACTTGGGTGATTTTGGTATCCGTTAAAA HHHIHHIHIGGHIHHHGIHIIHIIIEIEIIIGIFIFEIIIHHIFHIGIIIIIEIGDHFIBIIIIIHEAAGHDIEIFIIDIIIIEGDII at IIIGI?AIEIF NM:i:2 MD:Z:70G28 oR:Z:1 oH:i:2 oP:i:3444 oS:A:F XE:i:1 XS:i:2 XI:i:0
@@ -1461,7 +1461,7 @@ simulated.729 83 1 6946 255 100M = 6738 308 ACGATATTATCCCATTCAGTATGTATTCAATCTAGG
simulated.729 163 1 6738 255 100M = 6946 -308 TGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTGGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATAC HIHHHHHIIHIHIIGIIIIHHGHIIGIIGEHHIHDIIFFH;FFIHIFIIHHIHIIDIIGIBIDIIFIEFIIIIIIGIIHIIIFHFDIGEIHIIIGFBII@ NM:i:1 MD:Z:40C59 oR:Z:1 oH:i:2 oP:i:7462 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.730 69 * 0 255 * * 0 0 ACTGCTCACCAGACGGATAAAGTAGTATTATGTCTAACGCCGGACTAACGCATTAGCGTCGTTCGTTGCCGCAGCTCTTACGTAGTCTTTGCCGGATTTC HIHIIIHIHHIIHHIIIHIAIIHFIIIHEIGDI?EIIECIIEDEIICIDCIHE;IFIIIIGIIIG at IIGIIICHIFHIHFG<EIHEFIBIFIHIBEDG>G uR:A:B oR:Z:1 oP:i:5928 oH:i:1 oS:A:F
simulated.730 141 * 0 255 * * 0 0 CATGGTGACCCCGAAAAACAGCGGCATGGCGGCTGAGTAGGTCCCAGCTCTCCGCAATACCCGTTGGGATTCAATGCAGGAGCTCGCGTAAGGAATTATT IIIHHIHHIGGIIHIHHHIIIHIIHIHIIIDIIHGHIIIFFIIIHIIIIEFIBGIFHIIFIHIEIAHIIGIGCHCIIIIAIHCI;III9IIHHIIFGIII uR:A:B oR:Z:1 oP:i:6141 oH:i:1 oS:A:R
-simulated.731 83 1 4592 255 100M = 4388 304 GCTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGAGTAACTTCACATGGGTTCT 1IBIBAICIIFIIHGHIG at FCA?=BIIGEIHIIF>IHHDFGHFDGHIEIIIIIIIHECIIIFEIEIIIHIGHIHGIIIIIEHIIIIIIFIIHIIIIIIHH NM:i:2 MD:Z:0A79T19 oR:Z:1 oH:i:1 oP:i:4617 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.731 83 1 4592 255 100M = 4388 304 GCTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGAGTAACTTCACATGGGTTCT 1IBIBAICIIFIIHGHIG at FCA?=BIIGEIHIIF>IHHDFGHFDGHIEIIIIIIIHECIIIFEIEIIIHIGHIHGIIIIIEHIIIIIIFIIHIIIIIIHH NM:i:2 MD:Z:A79T19 oR:Z:1 oH:i:1 oP:i:4617 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.731 163 1 4388 255 100M = 4592 -304 AGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACA IHIIIIHHIIHGHGGGIIIHIIHIIIIFIFIIFFGGGIHIIGIGIAHHCEHE?IHCFECFDFEIIIIDI at IGCG@IIIIEIIDFAIEHIC<IIAIGFGAD NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4413 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.732 69 1 7287 255 * * 0 0 CACCACATTGATCGACACTACCGGGTGGAGCCTCCCTTCGCGCGCACTGTTCCACCCACACCTTGGCCAGAAAGGAAATGAAAGGTGCAGGGATATGCAT HIIHIHHIIIHIIFIGIHIGHIIIHIEGIGHGIIIHIGHIFCIFFIIGGFHIGDDGIF at I@IIIEIIIIIII?EE?GFIIIF at IIIIICHEIIF>AI??I uR:A:B oR:Z:1 oP:i:8224 oH:i:2 oS:A:R
simulated.732 137 1 7287 255 100M * 0 0 TATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATA IHHHHHHIHHHHHIHHIIGIGFHIGHHFHHGGIIHIIGIIIHHGBFB at HIFIHGGIDFIIFIHIIFIIHDGBGHICIEEAIIEIEGFDIHIIIIIICI?I NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:8011 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -1533,7 +1533,7 @@ simulated.765 69 * 0 255 * * 0 0 GCGCGCCCTGGCACCATTACTTACAGTAATCATTTAAGCCCTTGCTA
simulated.765 141 * 0 255 * * 0 0 GAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAA HHIIHHHIIHIIHGHIIHGGIIHIIIIFIHGIGGGIFIGGHIFIFIGGFGIIEH=HIBCIBEA;FBBHHIDGIHEFHHI<CG at HIIIIABII@<DBIIGG uR:A:B oR:Z:1 oP:i:9463 oH:i:2 oS:A:F
simulated.766 69 * 0 255 * * 0 0 CGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCG IIHHIHHHHIHIGHIIHIIIIIFIFIEHGIIHIGGIIDIIHIEDDGEHIIIEGHFEIGCHI?IDE=IIIGIIF?EHGHIIFDIHIIIIIEAHIII=IIIF uR:A:B oR:Z:1 oP:i:1562 oH:i:2 oS:A:F
simulated.766 141 * 0 255 * * 0 0 CATGGTCAGCTGCGCATACGTTCGATACTACCTTAGAGTTGTTTGCCCCGGCTGTTTTATGGCCGGACACGGACCCACGCGACTTTGTGCACAAGCCGGG HIIHHIIIHGHIHHIHHHIHIGHIFEHHHIFEIIIG?IGFHDIIHFGIIIEIIFIFGFDFIDDIIIHIHEFIIHIDIEDCFICHIHIIIGIAIIDIIH=C uR:A:B oR:Z:1 oP:i:1748 oH:i:2 oS:A:R
-simulated.767 99 1 9085 255 23M3D77M = 9294 309 TTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGC IIHIIIIHHIHHGHIIHIIIGIEGIIIHIGGIIIGIBFIIIIHIGIIIIIIIIHIIIFGEIFCIFIIEIEFIIGDHFEIG at H8IIGIHI?BIIIBGGIII NM:i:3 MD:Z:23^GAT77 oR:Z:1 oH:i:1 oP:i:9278 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.767 99 1 9085 255 23M3D77M = 9294 309 TTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGC IIHIIIIHHIHHGHIIHIIIGIEGIIIHIGGIIIGIBFIIIIHIGIIIIIIIIHIIIFGEIFCIFIIEIEFIIGDHFEIG at H8IIGIHI?BIIIBGGIII NM:i:3 MD:Z:23GAT77 oR:Z:1 oH:i:1 oP:i:9278 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.767 147 1 9294 255 100M = 9085 -309 TAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTACATGCAGGGCTC @>IHAFICIIAICIICIIGIIGACIIIGIIFIECFIIIIICIIEFGIIIEIEIGIIIFGIHGFGIIIIHIHFGIIIIFIGGIHHHIIIHIIIIIIHIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9484 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.768 69 * 0 255 * * 0 0 TTTTATAACAAATGATCGGGTGTATAGGGATACACGTTATAGGGATCGTGTCGCACTGCCGCTGGGGCTTCGTCTGTAGCTAGGAAACATGGTGACCCCG HHIHIHHIHIHIHIIGFIHHIIHFGIHHHGIGIFDHFIICFIGHEEGCIIHIIEICIIGEGHAIHIIIBIIDGDGGIIEEDCII9IB;ICFA at BFIGIBH uR:A:B oR:Z:1 oP:i:6828 oH:i:2 oS:A:R
simulated.768 141 * 0 255 * * 0 0 TACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCA HHIIHHIIHIIGIIHHGIIGFGHIGIHGFIIIGGIEIGIFIHGGIAFIHGDIIGHICFICGIIIFIDIAIEIFIIIIFBCIEGIHIIIIBGF?IIDFG:< uR:A:B oR:Z:1 oP:i:6650 oH:i:2 oS:A:F
@@ -1557,7 +1557,7 @@ simulated.777 69 * 0 255 * * 0 0 CCTAAACACGCTTGACCCCGCTTCTAGTCAGGTTGCTGACCTGGTGC
simulated.777 141 * 0 255 * * 0 0 CATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTT IHIHHHHHHHIIHHIIIIIHIHIFFHHHEIGHDHHDHHIHIHHFICIIBFFIF at IIGFICDAEHIIEGHIH@IIHGIFIIICGCAIGIHIICIIFIIIBH uR:A:B oR:Z:1 oP:i:887 oH:i:1 oS:A:F
simulated.778 99 1 1407 255 100M = 1597 289 ACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTC IHIIHHIHIGHIHHHIGIIIFGHHIHHIHGGGHIIGGIBGHIGIIIHIIGIIDDEEFIHIFHIIFIHIDIHDGEIBIIEIDEIBIFIHIIIIIIFIIHIF NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1509 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.778 147 1 1597 255 5M1I94M = 1407 -289 CACAATAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAAGTGGTACATAAGCTGACCATAGTGCGTTGGC FIBIIIBDHFFEBIHIIIIDFE=EAI?GHDGIGHIII?HDIIFDICII at HIIIGCIIGGIFFIIGIIIDGIIHDHHIHIIIHIGIHHGHIHHHHIIHHIH NM:i:2 MD:Z:67G31 oR:Z:1 oH:i:1 oP:i:1699 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.779 83 1 1239 255 8M1I91M = 1039 300 GTCCGTGGATCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTG DIIHHIGIHIIIDGGADIFIFIIBIFFIFGGHIIIGBIIIIIABIIDGIFCIGIHCCIGDIIGIIGIIIIIHIIFEIIIIGHHHIHHIIIIHHHHHHHHH NM:i:2 MD:Z:0T98 oR:Z:1 oH:i:1 oP:i:1340 oS:A:R XE:i:1 XS:i:0 XI:i:1
+simulated.779 83 1 1239 255 8M1I91M = 1039 300 GTCCGTGGATCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTG DIIHHIGIHIIIDGGADIFIFIIBIFFIFGGHIIIGBIIIIIABIIDGIFCIGIHCCIGDIIGIIGIIIIIHIIFEIIIIGHHHIHHIIIIHHHHHHHHH NM:i:2 MD:Z:T98 oR:Z:1 oH:i:1 oP:i:1340 oS:A:R XE:i:1 XS:i:0 XI:i:1
simulated.779 163 1 1039 255 100M = 1239 -300 TCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTC HIHIIIHHHHHGHIIIHHIIHIIHHIIEIIEIIIDIIIIIGIGI?FIIGIGBEIIIHIAHHFIEIIGGIIHI;DIEIIICIIAICCH=HIHIIBII>IID NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1140 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.780 69 * 0 255 * * 0 0 TTGATTTGACAACTGAAAGGGGCTGTTGGCCAGTTGCGGGAACAATCTTTGAGCAGCGCGAGCTGTTTTATGTGGCTGCTCTAGACTCTGGCGNTTAGTT IHHHIHIGGHIIGIGHHIGIIEGIIIHEIIHIHDEFGCIIIIGIGGGIHIFHFIIIIFCIIIIBIIIGIHFFFFAIEHG?IC>IIIFG>III at 9IBGIII uR:A:B oR:Z:1 oP:i:9720 oH:i:1 oS:A:R
simulated.780 141 * 0 255 * * 0 0 TAACGGGATGAGTTACCAGAACCTACCGTACATGCAGGGCTCGTCGAATGCACTCACGAAATGCTGTAACAGCTCGCGCTGCTCAAAGATTGTTCCCGCA HIIHHHIHIIGIIIHIHIIHIGIHIIHIGFIEHIIIGIFGGHBHIIGIDDDFFHGGIIGIIBIICDHIEHEGDIDIIIHEAIIIGAIBIGI9IEII:DII uR:A:B oR:Z:1 oP:i:9542 oH:i:1 oS:A:F
@@ -1580,7 +1580,7 @@ simulated.788 163 1 3549 255 100M = 3709 -260 ACACCCCGACTTTGGTTCATTGCTCGATTAATTG
simulated.789 99 1 4418 255 100M = 4630 312 CGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCG IHIIHIIIHHIHIHHIIIGIIIHGHIGHEFDFIIDHGIIFIEHHHGIIGHIFFIDI?IIIGIDBIIGHIHIIIIIDBICEGFIIFDGBIEHIII at IIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4443 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.789 147 1 4630 255 100M = 4418 -312 CTGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTC D:IIFDGI at C>HIIFIAIIGEIDIIIIGHII at IG@CFIGIFHIIIEHEIGGIIFIIEFIIEIGGHIIIEIHGEIIIIFIIIHIHHHHIIIIIHIIHIIHI NM:i:1 MD:Z:1A98 oR:Z:1 oH:i:1 oP:i:4655 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.790 99 1 3567 255 100M = 3756 289 ATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCG IHHIIIIIHHIHIHHGIHIIEFIGGIIIIIIIFFIHIIGIHIDIHHGIFIIIIHHGCFIEIIIHEFIIEAIIGEIIGICIIAFHIGIEAIIFIFIIBID? NM:i:1 MD:Z:99T oR:Z:1 oH:i:1 oP:i:3668 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.790 147 1 3756 255 36M1D64M = 3567 -289 TCTATTTCTAAATTGAAACTCCAGCTAGATTGAACGGGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTG IIIEIGDAIAIBIIEIIIAFEI?DGHBI<IIIIGIA?IDIHIHHIIFIHEIIIIIIIGEEIIIIIHHIGIIIHIIHIGHHHIIIGHIIIIGGHIIIHHHI NM:i:3 MD:Z:1G34^A1T62 oR:Z:1 oH:i:1 oP:i:3857 oS:A:R XE:i:2 XS:i:0 XI:i:1
+simulated.790 147 1 3756 255 36M1D64M = 3567 -289 TCTATTTCTAAATTGAAACTCCAGCTAGATTGAACGGGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTG IIIEIGDAIAIBIIEIIIAFEI?DGHBI<IIIIGIA?IDIHIHHIIFIHEIIIIIIIGEEIIIIIHHIGIIIHIIHIGHHHIIIGHIIIIGGHIIIHHHI NM:i:3 MD:Z:1G34A1T62 oR:Z:1 oH:i:1 oP:i:3857 oS:A:R XE:i:2 XS:i:0 XI:i:1
simulated.791 73 1 7366 255 100M * 0 0 CAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGAGAGCAAGGACAAGGTATACA HIIIIIHIIHGIHHIIHIGHIIHHFGIIGIHHHIGIIDIHFIIFCCIFFIIEGDIIIHCFIIAAIIIIFIHID?IHI9IH>GIIGII>=DFII>IIIICI NM:i:1 MD:Z:80C19 oR:Z:1 oH:i:2 oP:i:8090 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.791 133 1 7366 255 * * 0 0 TGCGCGTGATTGTCCATGAAACACTCGGGCACCACATTGATCGACACTACCGGGTGGAGCCTCCCTTCGCGCGCACTGTTCCACCCACACCTTGGCCAGG IHHIIIIHHHIHIHIFGIIIIIFGGHHFHDGIFIIIIEDIIIHIDEGFCFHEFHIGIHIEIE>EDIFIICCIBIEII?FHIIG<DIGIG<CCIGII8II0 uR:A:B oR:Z:1 oP:i:8253 oH:i:2 oS:A:R
simulated.792 69 1 5891 255 * * 0 0 TCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCAATTATATTGCATGGCATTGTGTG HHHHIIIIIIHIIFIIIIIIHIEGIGGIIGHGIFIGGFGHGFIHIIIIIFFIGIIGIGIIF at EIEAIC?IFE?HDIIHIDEBII<II>IIIHIFI>FDBI uR:A:B oR:Z:1 oP:i:6278 oH:i:2 oS:A:F
@@ -1666,7 +1666,7 @@ simulated.831 141 * 0 255 * * 0 0 GCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACGCCTG
simulated.832 69 * 0 255 * * 0 0 TGATCTGGGGGCCCAGCGATGTGGGCGCTTGCGCTATACGATAATTGGAACCAAGTAGCGGTATCAGCTCTACGAACAACCTAAGGTTAGGCTTTATTTA IHIIHHIHIIIIIHHGHHIHIIIIIIIIHIIHFDIIGHFGHHEGHEIIFIIICIHGIDHHGIIIIAIIIGHI?CIIEII<?FHAIIICIIIIIBIIDHII uR:A:B oR:Z:1 oP:i:3093 oH:i:1 oS:A:R
simulated.832 141 * 0 255 * * 0 0 GCTATGTCCCCTAACGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAATGATAAGCCAGTCGCTGGCTTCACGCTTT IIHIHIIIHIIIGHIHIGIFHHIGGEIIIIIIGHIIGFFIIEFIIIIHGIFIIHFIDFIIFIGIIHIDBIIIBIFHIIIF at IGIA@HBDHIGIIIIHI;I uR:A:B oR:Z:1 oP:i:2894 oH:i:1 oS:A:F
simulated.833 99 1 7058 255 100M = 7276 318 CACAAAAATTTACCGTCACAGGTGCGAACTCATAAACCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCA IHHHIIIIIHIHIIIHGIIIIIFIHGIIGHGGIIGFEEDDIIIEGIIGIIIIEGICIDEFCIIIIIDHIBIIFICEIFIIHFHIIIBI?BIIIECHHICH NM:i:1 MD:Z:35T64 oR:Z:1 oH:i:2 oP:i:7782 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.833 147 1 7276 255 100M = 7058 -318 TCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAAAG IAAGHHI6GFICFIFDCIBFIICG<HGIHEIIIIIIGGBIHIDCIIEGIIBIIEFFICIIHEIDGFIIHDHGIIHGGIIIHIIHIHGIIHIHHIIHIIII NM:i:2 MD:Z:0G97C1 oR:Z:1 oH:i:2 oP:i:8000 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.833 147 1 7276 255 100M = 7058 -318 TCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAAAG IAAGHHI6GFICFIFDCIBFIICG<HGIHEIIIIIIGGBIHIDCIIEGIIBIIEFFICIIHEIDGFIIHDHGIIHGGIIIHIIHIHGIIHIHHIIHIIII NM:i:2 MD:Z:G97C1 oR:Z:1 oH:i:2 oP:i:8000 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.834 99 1 6352 255 100M = 6526 274 GCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACATGGAGCCATGAAAACGTTCGAAT HIHHIIIHHHHIIHIGIHHIHIGFHHIIIGIIIHCEGHIIIIHBCIIHIHFGFIIIIFII at IIIIIIHDIIIHIHH?:FIFIIIID?IEDF=II6ICFII NM:i:1 MD:Z:77C22 oR:Z:1 oH:i:2 oP:i:6998 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.834 147 1 6526 255 100M = 6352 -274 CTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATT BIDI at II??IIEIDIBI;?IIIIIIIIDEFIGIDIIIIIIEIEIIIIGIDHHGIEGIFHGFIGHHFGIHIDEHIIGIIHIIHIIHHHGHGIIIIHIHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7172 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.835 69 * 0 255 * * 0 0 ATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCAT IHIHIIIHIIHHIHIHIIHGGFHIHIFIEIHGHIHGIFIHAHDIIIIHIEDHHIDIHFIIIIIGIIIIHIEGIAADEFIIGEIHIIGIEEIIIIIEI>FA uR:A:B oR:Z:1 oP:i:6107 oH:i:2 oS:A:F
@@ -1724,7 +1724,7 @@ simulated.860 133 1 6746 255 * * 0 0 GATAACCAATTGACTTGGCCAGTTAGCGAAAGGCCCACGACGT
simulated.861 99 1 4208 255 100M = 4420 312 GTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTT HHIHHHHHHHIIHHHHIIIHIHFIFHFIIHIHIIDIIEDIIGCHEIIEFIICDFHGEIAIFIBIHGIIII at IIICIIGFIIC@ADICGI;I at IIIICBGI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:4546 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.861 147 1 4420 255 100M = 4208 -312 CGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTC FIHGIHHIHHI<DIGIBIF9FIIHIDICIIGIIFIFHFAHHIBHEGIIFFIHIIIIFGEHHIHIIIHGIIIIGGHGIIHIIHGIIHIIIIIGIHIHHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:4758 oS:A:R XE:i:0 XS:i:1 XI:i:0
simulated.862 99 1 3087 255 100M = 3283 296 AACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACA HHHHHIIIIIHIIIHIIIIFIIHHHIHHGIIGHIHHFHIIEHIFHIICIIGGIIFFIGFIIIGIIGIEFHI=IEIICIEGCIFGIIBFIII>IIEECIC9 NM:i:1 MD:Z:99C oR:Z:1 oH:i:2 oP:i:3361 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.862 147 1 3283 255 100M = 3087 -296 CGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAATGTTAGCTG IFFIICIHIGI at DIIFIIIIIFIIIBEIIIDFHGHIICGGDBDFIIGIFIHIHHI@IFGFIIIIGFIEIFHIIHIGGHGIIIHGIIGHIHIIHIHHIIHH NM:i:2 MD:Z:91G0T7 oR:Z:1 oH:i:2 oP:i:3557 oS:A:R XE:i:1 XS:i:1 XI:i:0
+simulated.862 147 1 3283 255 100M = 3087 -296 CGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAATGTTAGCTG IFFIICIHIGI at DIIFIIIIIFIIIBEIIIDFHGHIICGGDBDFIIGIFIHIHHI@IFGFIIIIGFIEIFHIIHIGGHGIIIHGIIGHIHIIHIHHIIHH NM:i:2 MD:Z:91GT7 oR:Z:1 oH:i:2 oP:i:3557 oS:A:R XE:i:1 XS:i:1 XI:i:0
simulated.863 89 1 6732 255 100M * 0 0 TTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGC IIIAFBAIG<IAIIID at IEGIIIFIDCIIIDCIIIBHIDIHDIIIBIEFHGIGHIIFIFFFFEIHHHIGHDEEHHHFIIHHIIIHIIIHHGHHIIHHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7456 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.863 133 1 6732 255 * * 0 0 ATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTTAGCGAAAGGCCCACGACGTAAAAAGCCTCCGGGGTGGTCGCGGGTCTCCGCTTCATACAAGAG HHIHHIIHIGIIHIIHIGHIGIIHIHHFIIFGIIFIHHIIHFGEIIIIEICIGFGIEIGI>FIIBII=IIDIEAFIIIAIIIECCGAGIIIHAIFIG<II uR:A:B oR:Z:1 oP:i:7269 oH:i:2 oS:A:F
simulated.864 83 1 2788 255 100M = 2584 304 TTGGTACTATGTCCCCTAACTTTTGAAAATAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCG I;9CC2>CICI7IIIHIEGFHIGIIEIFCIIID at EIIIHIFAFDEIIHIIIIIGIIEHHIIFHIIIIIGHHIIIIGDIGIHGHHIIIIIIIIIHIIHHHI NM:i:2 MD:Z:5G22C71 oR:Z:1 oH:i:2 oP:i:3062 oS:A:R XE:i:2 XS:i:0 XI:i:0
@@ -1732,7 +1732,7 @@ simulated.864 163 1 2584 255 100M = 2788 -304 CTCCTAGTAGTATTTAATGCTCATGGATGGCAGT
simulated.865 73 1 8308 255 100M * 0 0 AGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGATCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACT HIIHIIHHGIIHIIFHIIIFHGIIIIGFIEIHIGIIIIFIGBD at IFIHIHFFHEIHIEDHHIFIEFI?IHEIEII?DFIIICAIIGIIIIIIIIGI7FI4 NM:i:2 MD:Z:39C59G oR:Z:1 oH:i:1 oP:i:8501 oS:A:F XE:i:1 XS:i:1 XI:i:0
simulated.865 133 1 8308 255 * * 0 0 GCGGCAAGTTTGACCGAAAGCCCTGATGGTATTTTGAGCGGGGGCCGGATGATCCTTCGTAGTCTTCAAGTACAAATCCAGCCACCAGAATGTACCACAG HHIHHHHHHHHHGIHHIHGIIHIHIHIHEHEIIIIIIIEIBHDHDEBGIFFFIGIIGDIFGEIIIIIBIH?IIGDI?ICB=GAHIDGF;DFIIEEIAI=I uR:A:B oR:Z:1 oP:i:8696 oH:i:1 oS:A:R
simulated.866 99 1 9414 255 100M = 9609 295 GCTGTAACAGCTCGCGCTGCTCAAAGATTGTTCCCGCAACTGGCCAACAGCCCCTTTCAGTTGTCAAATCAACATCCGCGTCGAGGCTAGGTACGGTCGC IHHIIIGIIHHHIIIHIIIIIIGHIIIGIGIHIFIEFCIGGGHIEIEGGIIHHHIGCIDBIADFIIFEGICIEAIIG>HIHIHIABFCIEIIIIFID at II NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:10257 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.866 147 1 9609 255 100M = 9414 -295 ACATCCCATATACATCACCGGTCGAACCCACTCAAGAGTGAACCGCTTCGGTCCACCCATTATTCGAACACACATCCGGCACGGCTGGGATAACCCATGA EEIIIICIEICII?IICIIIHB>IHHIIHCFIGIIIIIGGIIBFIHEIIIIIIHIGEHHIIEGFFFHHHFIIHIIHGHIIIHIIFIIHIHIIGHIIHIHI NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:2 oP:i:10452 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.866 147 1 9609 255 100M = 9414 -295 ACATCCCATATACATCACCGGTCGAACCCACTCAAGAGTGAACCGCTTCGGTCCACCCATTATTCGAACACACATCCGGCACGGCTGGGATAACCCATGA EEIIIICIEICII?IICIIIHB>IHHIIHCFIGIIIIIGGIIBFIHEIIIIIIHIGEHHIIEGFFFHHHFIIHIIHGHIIIHIIFIIHIHIIGHIIHIHI NM:i:1 MD:Z:T99 oR:Z:1 oH:i:2 oP:i:10452 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.867 83 1 8014 255 100M = 7779 335 CGGGCTCATAGTATTGTTGAATTTCACGATCGCGGGTCTTACTCCGGGCCTCCATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCT FIE?IAIIIIFIEIEBFHIICCHHGEEIEICFFHFIIIFEBHIIICG?IHEFHIIGIIGHGFHGIIIDHIIHHGIIHGGIIHIIIIIGHHIIHHIHHHHI NM:i:1 MD:Z:52A47 oR:Z:1 oH:i:1 oP:i:8207 oS:A:R XE:i:0 XS:i:1 XI:i:0
simulated.867 163 1 7779 255 100M = 8014 -335 CCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAAT IHIHHIIIHIHIIIIIIIIHIIGHHIIGIIEGFHIIIHHIHIDHCGEI at FEEIHGIFIIGIICBGHCICABI@IIDIIII:I at GIIICIIIDII@II at H? NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7972 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.868 83 1 6890 255 100M = 6679 311 CTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGA IHIIIAGFGDG?IIIIIIIIIIIIGGIIE?CIIIHIIBIIFIIFFIIGIHIEFIIIIIAFIIIIIFIDHIIGFIHGIIIHFGIHHHHHIIIIHIHIIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7614 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -1740,7 +1740,7 @@ simulated.868 163 1 6679 255 31M2I67M = 6890 -311 AATACTCTCGCATATCCGCCGGACACTAAG
simulated.869 89 1 6306 255 100M * 0 0 AGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGT AIIIHIIIIIIBGGEICFDFICDIHIIIIIICGIEIEIHIIICIIIEHEIIHIHFHGHEFIBIIIHHFEIIIGHIGHIIGGIHGIHIHHHIIHIIIHHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:6952 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.869 133 1 6306 255 * * 0 0 ATGTACATCGCCGATAATCATTCGCCAGGGATCTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCAGCGGCA IHHIHIIIHIIIHGIIGFFIFFIEGGIHIIGGIFIFIFIIIIIIFHIFHDIIGIHIGEHIDIDH at CGIIIIDII@IFICIBEIIIFICIIIEEIBIHIH? uR:A:B oR:Z:1 oP:i:6772 oH:i:2 oS:A:F
simulated.870 99 1 8819 255 100M = 9044 325 AGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGC IHIIIIIHHIIHGIHIIGIIIFIHHGGIGFGIEIHIHHCGFIIADIIIIEIHHFIFHIGGECDFGBIIE>IIEI;I?GIDEIIGDEEHDFDBHHIIIFI= NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9012 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.870 147 1 9044 255 64M3D36M = 8819 -325 TGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAA I=BIA=AICFHGIHIEBIBIDG at IIIG:IGFCIDI at BIIGICEIIBGHIHIIIIGFIHHHIIIFGHFIIIGGGDHIIIHIIIIIEHIHIHIHHIHHIHHI NM:i:3 MD:Z:64^GAT36 oR:Z:1 oH:i:1 oP:i:9237 oS:A:R XE:i:0 XS:i:0 XI:i:3
+simulated.870 147 1 9044 255 64M3D36M = 8819 -325 TGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAA I=BIA=AICFHGIHIEBIBIDG at IIIG:IGFCIDI at BIIGICEIIBGHIHIIIIGFIHHHIIIFGHFIIIGGGDHIIIHIIIIIEHIHIHIHHIHHIHHI NM:i:3 MD:Z:64GAT36 oR:Z:1 oH:i:1 oP:i:9237 oS:A:R XE:i:0 XS:i:0 XI:i:3
simulated.871 83 1 2040 255 100M = 1806 334 CAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCTCCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTCA IIIIAIIG?IFIIDIIGGIIGIII<IIIIIIIIHHDIGIIIDIEHHHIIDIIHIIDEIFIF at IIIFIIIIIGHHGHIHFHHIHIIHIHGHIIHIHHHHHI NM:i:2 MD:Z:49A48G1 oR:Z:1 oH:i:1 oP:i:2141 oS:A:R XE:i:1 XS:i:1 XI:i:0
simulated.871 163 1 1806 255 100M = 2040 -334 CAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCGCGTTGACTTA IHIHIHHIIIIHGIGIIHIIIHIIFIIHGIIIIIFHIGHIIIGFIHIEBCIIGFIIIDIIFIIIIIICI?CIIBEBIIEDC at BIEEIGDHFIGI@IIIIG NM:i:1 MD:Z:89C10 oR:Z:1 oH:i:1 oP:i:1908 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.872 83 1 7710 255 100M = 7501 309 CAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCC CCIIFIIIICII;IIEDHIIGIDHIF at E:FDIB at ICIHIIBEIEBIFIGIGIFHIEIEIFFFDFEGHIHIHIGHFIIGIIIHHIGGHHHHHGHIIIIIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7903 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -1753,7 +1753,7 @@ simulated.875 83 1 1808 255 100M = 1591 317 GTATGATCGAGAATGACTAACTGGGCCCTTGCTGGG
simulated.875 163 1 1591 255 100M = 1808 -317 TACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCG HHHIIHHHIIIGIHIGHIIIGIIHGHHIEGIIHIIIIIEFCIGHHHIIGGHIIGHIIGIIFIIIF?IIECIIIDBI>IIIIAEAEIIIIIIIIEAIIIIB NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1693 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.876 83 1 8528 255 100M = 8298 330 TTGTACTGGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGT G>?IIII7;IGEEEIAIHIIIEII at HIIIHAIIEIDGHIGHIIIIIHIEHHGGIDIIEIIHHIFHIIIGFHIIIIIGIIEHHIFHHIIIIHIHIIHIHIH NM:i:1 MD:Z:7T92 oR:Z:1 oH:i:2 oP:i:9216 oS:A:R XE:i:1 XS:i:0 XI:i:3
simulated.876 163 1 8298 255 100M = 8528 -330 CGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGATCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTC IIIHHHIHIIHHIGIIIHFHIHIIHDIGIHIGIIFHGIGGFHIEIHFGFIFIEGFHHIHI at GFGICIIIGIGI;IIFIBIII at IIHIIIIIFDIFICIII NM:i:1 MD:Z:49C50 oR:Z:1 oH:i:2 oP:i:8986 oS:A:F XE:i:0 XS:i:1 XI:i:0
-simulated.877 83 1 9093 255 15M3D85M = 8895 298 CCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGCACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATC H:IIDIIIFIDIGIDDIEEIIIIIDIFGGGIGIDEIFIIIGIDEDAIGHGHICDFIF at IIIHFIIIIIHIFIIGFFIHHGIIIGGHHHHGIHIIHIHIIH NM:i:4 MD:Z:15^GAT30A54 oR:Z:1 oH:i:1 oP:i:9286 oS:A:R XE:i:1 XS:i:0 XI:i:3
+simulated.877 83 1 9093 255 15M3D85M = 8895 298 CCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGCACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATC H:IIDIIIFIDIGIDDIEEIIIIIDIFGGGIGIDEIFIIIGIDEDAIGHGHICDFIF at IIIHFIIIIIHIFIIGFFIHHGIIIGGHHHHGIHIIHIHIIH NM:i:4 MD:Z:15GAT30A54 oR:Z:1 oH:i:1 oP:i:9286 oS:A:R XE:i:1 XS:i:0 XI:i:3
simulated.877 163 1 8895 255 100M = 9093 -298 TATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCC HHHHHIIIIGIIGHHIHHIIIHIIGIGHFIHHIIHIIIDHCIHDIIEIGIIIFIIIIHHDFHIGGI at IDIGIGIGI>FFGI?IFG<IIIBI:6I at IIII: NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9088 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.878 99 1 3410 255 100M = 3606 296 AGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGATGGGCAA HIHIHHHIIHIHIIHIHIFHIHIFGIIGIICFIHFECIHIEHIFGICICHGEIDIIIIIGIIECEGEIIIIIIIGIIBIHIH>BAGIIIIICFI at DFB>D NM:i:1 MD:Z:93C6 oR:Z:1 oH:i:1 oP:i:3511 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.878 147 1 3606 255 100M = 3410 -296 GAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGC AIH at FIEIIHIIIHICEIIIHECDIIIIFDIEDE:IFCIGCDIGICFIEIIDEIIHIIHGIIGFGGIIIHIFGGIGIIIIIHIFIIIGGIHHHIIHIIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3707 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -1772,7 +1772,7 @@ simulated.884 137 1 5161 255 100M * 0 0 CTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGC
simulated.885 69 * 0 255 * * 0 0 GTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGACCGATAAGCCAGTCGCTGGCTTCACGCTTTTGAAACTAGAATGCG HHIHIHIIIIIGHIHIIHGIIIHGGHGGIIIFHIIHIHEHGHIIEGFHHIIEFHCEHIHHH at IGEFFEIC;IIDICEIEIICHIEIID9CHBI<ICIHII uR:A:B oR:Z:1 oP:i:2909 oH:i:1 oS:A:F
simulated.885 141 * 0 255 * * 0 0 TCCCAACGACAGAACACTGATCTGGGGGCCCAGCGATGTGGGCGCTTGCGCTATACGATAATTGGAACCAAGTAGCGGTATCAGCTCTACGAACAATCTA HHHIHIHIHHIHHIGIIHGIIIIIIHFGHFIIDIIDIIIIEIGGBH at IIIIFFIHIGIEGHHDIGIIIEIIIGIFDIIIIIIIDIIIEB>F at IAIFHII@ uR:A:B oR:Z:1 oP:i:3110 oH:i:1 oS:A:R
simulated.886 83 1 3926 255 100M = 3716 310 CATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCA DI>IBE>EDHIIIIIIIIGIGAIIIFIGIIEIGABIII;HIIHIIEIEIGFIIIIIHHGFDFIIIIDIFIIHIDIGGHIIHHIHIHHHHHIIIHIIHHIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4026 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.886 163 1 3716 255 78M1D22M = 3926 -310 ATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGA HHIHHHHIHIIIIHFHHGGGGIHIGIHIIIIFFIGGFIIIIDIIIIDIGIIHEEIIFIIIHIIIIHDCB at IDIIFGIIIC?EBIEIIGI at IIF>IIIIIG NM:i:1 MD:Z:78^T22 oR:Z:1 oH:i:1 oP:i:3817 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.886 163 1 3716 255 78M1D22M = 3926 -310 ATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGA HHIHHHHIHIIIIHFHHGGGGIHIGIHIIIIFFIGGFIIIIDIIIIDIGIIHEEIIFIIIHIIIIHDCB at IDIIFGIIIC?EBIEIIGI at IIF>IIIIIG NM:i:1 MD:Z:78T22 oR:Z:1 oH:i:1 oP:i:3817 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.887 69 1 8752 255 * * 0 0 CCATCAGGGCTTTCGGTCAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAACG HIIIIIIGHIIIIIIIIIFIHFFGDIHGIIEGIIFHDFGDIIIIIIIIIGCHHIGIDEIHIIIDIEIGHEIIHBCIHA<H=CHIGHIGI at IHGHGEICIC uR:A:B oR:Z:1 oP:i:8767 oH:i:1 oS:A:F
simulated.887 153 1 8752 255 100M * 0 0 CGTGGTTTCGTGACTAGAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTTCTACAAGCCAATGGAAAAAGATTCATAGC I at IFDGBHI?HAFEBI4II?DIII at FHIHE9DIIIEIIEIIFIHHDDIIIIEIIGHIIDIBGIIIIGIEIGHGIIIIFHGIFHHHIHIIHIHIIIHIIII NM:i:2 MD:Z:16A53G29 oR:Z:1 oH:i:1 oP:i:8945 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.888 83 2 737 255 100M = 531 306 GACGGTGGTTTTGTCAGTGTCTATGGCCCCATGCATGCAGATGATCCCTTATGTGCCANAAACGGGTACCCGCTAGCCGTGGATGCGAGGTTCCTGACCC <HIIAH=HIIIIFBCI?IIBFFIIIIIE>GIIIFAGABGDI@>EEFEEFIIIGFIEEIIIIHFHEIEHIGGHEGHIEIGGHIGIIHHHHHHIIIHHHIHH NM:i:1 MD:Z:58A41 oR:Z:2 oH:i:2 oP:i:736 oS:A:R XE:i:1 XS:i:1 XI:i:0
@@ -1826,7 +1826,7 @@ simulated.911 133 1 848 255 * * 0 0 ATGCACTAGCATGGTTTTATAGACATCCAGCCACAGTGCAAACC
simulated.912 69 * 0 255 * * 0 0 CTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCG HIIHHHHHIIIIIGIIHIHFIIFGHIIIIGGIFHIIHIFFIHHIIHIHDIDIEDFIGIGDII=AIIGGIIIEIIADFIIIIIIIBIBICIIIEHIF;IGI uR:A:B oR:Z:1 oP:i:6581 oH:i:2 oS:A:F
simulated.912 141 * 0 255 * * 0 0 GCACTGCCGCTGGGGCTTCGTCTGTAGCTAGGAAACATGGTGACCCCGGAAAACAGCGGCATGGCGGCTGAGATCCCTGGCGAATGATTATCGGCGATGT HIHHIIIIIIIIHIIHIHFHGGHIIIGGHIGGIGHGFIIGHEIIIGI?>G at HIDIIDHEFIHIIIIIIDII@FIC@@FIDIIGIGIII=CEIE?=CA<IE uR:A:B oR:Z:1 oP:i:6776 oH:i:2 oS:A:R
simulated.913 83 1 2213 255 100M = 1957 356 GTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTT IIIIIG9?IFGI?IBCDI=GAIGCIIIIII<EEGGIIIBIII=IIIIGIIGIIEFHIDIIFGIGFHGFHFIIGIGFIIIHHIIIGGGGIHIIHIIHHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2314 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.913 163 1 1957 255 57M1D43M = 2213 -356 CTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAAT HIIIIHIGHHIIHIIHIHHIIIFIGIIIGGIFIEIEIEIGHIHHIIGGCGDIIHHFI at DIFHIIIFHIIIGI?GIIBIDDI?IHBADHH:CIBIHGIIIF NM:i:1 MD:Z:57^A43 oR:Z:1 oH:i:1 oP:i:2059 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.913 163 1 1957 255 57M1D43M = 2213 -356 CTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAAT HIIIIHIGHHIIHIIHIHHIIIFIGIIIGGIFIEIEIEIGHIHHIIGGCGDIIHHFI at DIFHIIIFHIIIGI?GIIBIDDI?IHBADHH:CIBIHGIIIF NM:i:1 MD:Z:57A43 oR:Z:1 oH:i:1 oP:i:2059 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.914 99 1 6257 255 100M = 6486 329 ATACACCCGATCATTTGTTATAAAACTTAAAGTGTCCTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCC IHHHIHIIIIFIIHIGHFFIHHHFGHIIGGHCIHIGGIHHEDIIBIAIHGIDIIIGBEEEIAHCIBIIIIH>FIIFIGI;IIGIIIIGIGIIFIF?CIIE NM:i:1 MD:Z:35A64 oR:Z:1 oH:i:2 oP:i:6903 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.914 147 1 6486 255 100M = 6257 -329 ATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGC HIIII?8AICI>IHFI>IGIIIIFIGIIIIEICIBFIHGDHIIIHFIEHDIACFIIIIHHIGIIIIGIIIIHIGEIIGHIIIIIGGGIHHHIGHIHHHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7132 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.915 99 1 2471 255 100M = 2577 206 CAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCA HIIIIIIIIIIHHIIHHIGIGIIIHFIIGGIFFIIIDIIGHIIHFHIIHIHICDIHIIIIHIDDIDIGIHIFCIIBCICIGIIBAHHICEICFIB?:FID NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:2669 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -1879,7 +1879,7 @@ simulated.938 69 * 0 255 * * 0 0 TATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATG
simulated.938 141 * 0 255 * * 0 0 TGATATTTGCTAATAACCCAATGTCGCCCCACCTGATCTTTCCCATTGTTGAGTGACAGGCACCCCTATACCAGAGTCGTAAGCGAATGCAAGTTCGAAG IHHHHIHIIHIHIHHIIGHHHEFHIIHIGIIFHIIGIDIGIHFGIFBIIEHIIHGFIIIHCEIIDEIICIIIEIH?IIIIGGCIDIFGICI:IIAIEDHI uR:A:B oR:Z:1 oP:i:2129 oH:i:2 oS:A:R
simulated.939 69 * 0 255 * * 0 0 CACTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCT IHHIHIIHIGGHHIIHIIHHIGIHIFIGGFGEIEIGIIFIIHCIDIHIHFCIIEGHDGIAEHIHDE at ICIIIIIIIIIDFIG@IIHGFCHIHIII?E at IC uR:A:B oR:Z:1 oP:i:1810 oH:i:2 oS:A:F
simulated.939 141 * 0 255 * * 0 0 CGAATGCAAGTTCGGAGTGAGGTACTTGACAACCGTGGTCGATAAGTCAACGGGGGCCCAGTTAGTCATTCTCGATCATACTGTGGCAAGGGACAAGGTC IIHIHHHIIIHIGHHIGIHHFFIIFIHFDGIFHGIGGDDFIEHIIHIDDGGGIIGFIHIGIIIF at EIIIEIIGIIIIIIGIIEIIIGHIIIIIEHICIII uR:A:B oR:Z:1 oP:i:2046 oH:i:2 oS:A:R
-simulated.940 89 1 2761 255 100M * 0 0 TAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTG BIIHIIFIA:IIIIGIICIEDIHEIEHIIIGIIIIFIIIIHIIFFIIIHIHHIIGIIIIGHIIIFEHIFHIFIGHIIHIFGIHIIIHHHFHHIIIIHIHI NM:i:1 MD:Z:0G99 oR:Z:1 oH:i:2 oP:i:3035 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.940 89 1 2761 255 100M * 0 0 TAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTG BIIHIIFIA:IIIIGIICIEDIHEIEHIIIGIIIIFIIIIHIIFFIIIHIHHIIGIIIIGHIIIFEHIFHIFIGHIIHIFGIHIIIHHHFHHIIIIHIHI NM:i:1 MD:Z:G99 oR:Z:1 oH:i:2 oP:i:3035 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.940 133 1 2761 255 * * 0 0 CGGAAAGTCAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCT IIIIHIIIHHIIIIIGFIGIHHHIIIGIIIGIIIEHGIIHIHDFIIGGHEIIEIGFIIHHFHDEDGFI@?GCAIIIIIIGIFH=II at HFEHIG?I;IICI uR:A:B oR:Z:1 oP:i:2837 oH:i:2 oS:A:F
simulated.941 99 1 6609 255 100M = 6816 307 GCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATAGTCTCGCATATCCGCCGGATACTAAG IHHIHHHHHHIHIHIHIGIHGFGIGHHFGIFHEHHIFIGHIDIIFHGIICEFHFICGFIIIIFIIIIIIIIDIIFIGIGAIIIAIIGGHIIAI7EIICED NM:i:2 MD:Z:74C18C6 oR:Z:1 oH:i:1 oP:i:6802 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.941 147 1 6816 255 100M = 6609 -307 TACCATATAGGAGAGCACATACACCGGTTGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATC >IIIEIDIICEICIIICGII>?IIIIBH7AIIHIICIIFIBFIFEF at FBG@GGIIIIICFHICIIIDGHHIIHIGEIIIHIGIIHFIHIHIIHIHIIIII NM:i:1 MD:Z:28G71 oR:Z:1 oH:i:1 oP:i:7009 oS:A:R XE:i:1 XS:i:0 XI:i:0
@@ -1940,7 +1940,7 @@ simulated.968 141 * 0 255 * * 0 0 GTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGA
simulated.969 69 1 6227 255 * * 0 0 CTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAA HHHHIHHIHHIHGGHIGFIIGGFHIHIIIFIIHCIHIGIIFDIIIIEHGDEIIHGIBDIFBICFIIIGAGIIG at IIBI<EFGIDI>IHHDGCBGDFDHID uR:A:B oR:Z:1 oP:i:6689 oH:i:2 oS:A:F
simulated.969 153 1 6227 255 100M * 0 0 TGCGACACGATCCCTATAACGTATATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGAC HAIGDI?IDIAABIEHEIIIBFI at III?CIIIB>>FFIIIIIIGIFIIBICIGIFGBIHIIHFDIIIEHHIIGIGIIIHIHHIIHIHIHIIHHHIHIIHI NM:i:1 MD:Z:22G77 oR:Z:1 oH:i:2 oP:i:6873 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.970 83 1 9282 255 100M = 9063 319 ATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTA I?IFDIIID=IBIII<CBIDIHEIFBIGDIHFI?GIIIIIEBFDIGIHDDFEHIGHEFIIIIFHGIIGIHGIFIIIIIFHHIIIIHIHIHIHHIIHHIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9472 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.970 163 1 9063 255 45M3D55M = 9282 -319 CACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAAC IHIIIHIHHIHIIIHIHFIHHIFGIIHHIIHIIGHGFGGIIHDGIGIHIFICCGIHFIII?DGIEIIFEIIIIIIII at FIIIIF@IIIICIIIIBIIGHI NM:i:3 MD:Z:45^GAT55 oR:Z:1 oH:i:1 oP:i:9256 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.970 163 1 9063 255 45M3D55M = 9282 -319 CACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAAC IHIIIHIHHIHIIIHIHFIHHIFGIIHHIIHIIGHGFGGIIHDGIGIHIFICCGIHFIII?DGIEIIFEIIIIIIII at FIIIIF@IIIICIIIIBIIGHI NM:i:3 MD:Z:45GAT55 oR:Z:1 oH:i:1 oP:i:9256 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.971 83 1 895 255 100M = 690 305 TTTATTCACAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCT IAB3FIGIHIIIIIADHIIADDFIAI?BIIC?EDIG?IAIIEIIEIGFIIIEIIIGGIHIHEEGHIGFHIIFIHGGEGIFHIIHHIHHIHIIHIIHIHII NM:i:3 MD:Z:1C1G4T91 oR:Z:1 oH:i:2 oP:i:894 oS:A:R XE:i:2 XS:i:1 XI:i:0
simulated.971 163 1 690 255 100M = 895 -305 CACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAGGGCTATCCCGTGA IIHIHIHIHHHHIGHHIIGIHIHIIFHIHCIIIIFIIHGIGFGIIFIEIDIDDIIIIIIHIIIFIIIFICDIDIIEI?IIDIDGIG6IIIDIHEIICDBI NM:i:1 MD:Z:86A13 oR:Z:1 oH:i:2 oP:i:689 oS:A:F XE:i:1 XS:i:1 XI:i:0
simulated.972 69 1 9224 255 * * 0 0 AATGCCGCGACCGTACCTAGCCTCGACGCGGATGTTGATTTGACAACTGAATGGGGCTGTTGGCCAGTTGCGGGAACAATCTTTGAGCAGTGCGAGCTGN IIHIIHIHGIHIIHGHHHIIHIGIIGDHIIIHGGCHEIFIIIEIEHIGIIHIIIEHIIFHGIIIIIIIFFFFIHIIIIIEGII at HIIICF=6GEDIE?D/ uR:A:B oR:Z:1 oP:i:9610 oH:i:1 oS:A:R
@@ -1949,7 +1949,7 @@ simulated.973 83 1 2527 255 100M = 2354 273 GTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACA
simulated.973 163 1 2354 255 100M = 2527 -273 GCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACC HHIIHHHHIHHHIHGHGHGGIIHIGIFIHGEGHIIIIIDCHDIIIFGHIIIEIIGIIIHCIIGIHIIHIBCHBDIFIEIIDCIHIIIEIIICIIIIIDID NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2455 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.974 89 1 2657 255 100M * 0 0 ACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGC FIII=IIIEGIIIFIIIEI?CIHIIEEAE at IEGIGFIIIHEFDIIFDAGEFEFIHEGGIHHEIGIIHIIIIFGIGIEFFFIHIIIIHHIGIIIIHIIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:2931 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.974 133 1 2657 255 * * 0 0 TCTAGTAGCTAGGTACCTGGACAGCATAGCATACAATCAACATTATAGAAAGCCACAGCGCGGTAACGTTCATGTACGATAGCTTATGTCTTACATGCAC IIHIIHHHGHHIHIHGIFIFIHGHHIIIIEHIHIIIDGIHIIDHIAIIGIIIFGIHFIIIHBIIIIBDE>IDIEHHB?II<I at HIFFIFIH?G7E=IIIE uR:A:B oR:Z:1 oP:i:2738 oH:i:2 oS:A:F
-simulated.975 83 1 6709 255 100M = 6536 273 CTCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCG FEIIIIIIEI=IIHD at I>IFIBEIGDIHGFIBIIIICBDEBIIFCIIIFIHEHDFHDIIIGFHIIHFIIFIIIHHHIHHGIHHIGGHIHIIIHIHHHIII NM:i:1 MD:Z:0A99 oR:Z:1 oH:i:2 oP:i:7433 oS:A:R XE:i:0 XS:i:0 XI:i:2
+simulated.975 83 1 6709 255 100M = 6536 273 CTCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCG FEIIIIIIEI=IIHD at I>IFIBEIGDIHGFIBIIIICBDEBIIFCIIIFIHEHDFHDIIIGFHIIHFIIFIIIHHHIHHGIHHIGGHIHIIIHIHHHIII NM:i:1 MD:Z:A99 oR:Z:1 oH:i:2 oP:i:7433 oS:A:R XE:i:0 XS:i:0 XI:i:2
simulated.975 163 1 6536 255 100M = 6709 -273 GTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATNGCATGAGCCA HHHHIHHHIIHHIHIHHIIIGHIIHIIIIEFHIHEIHEIGHIIG at IIIIIGDIII?EIIFIEFIAIHFHIFIHGECA at IHHDDIF<IDIFIIIIIIIBII NM:i:1 MD:Z:89T10 oR:Z:1 oH:i:2 oP:i:7182 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.976 89 1 2075 255 100M * 0 0 CCATGAAGCCCCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTAAAATTACAATGAACCTTGGGGACCTCAATTTGGTAC IIIIIIGGI=?=ICAIBIIB=IIGDICGDIEBIBIIHII at IIIGIGFGHIIIIBFIIIFEIFHIIIHIIIIHHEIIIIHHFIIFHHHIIIIHHIHHIHIH NM:i:2 MD:Z:10G52G36 oR:Z:1 oH:i:2 oP:i:2273 oS:A:R XE:i:1 XS:i:1 XI:i:0
simulated.976 133 1 2075 255 * * 0 0 ATGACTAACTGGGCCCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACGCTGGTATAGGGGTGCCTGCCAC IHIHIHIHHIIIHHIHIIHEIIHFGHIIIIIFIIFIIHIIIDFFIGIIHIIEDIBGIHIIIHIIHEIIGIAIBIIE?FBBIAIFIIIDIFF>@HH<FIII uR:A:B oR:Z:1 oP:i:2077 oH:i:2 oS:A:F
@@ -1966,7 +1966,7 @@ simulated.981 153 1 5859 255 100M * 0 0 CGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAG
simulated.982 99 1 4177 255 100M = 4410 333 GGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCNACTCGTCGTCGAGTGGATTACAAGCAT IIIIHHHHHHHIGIIIIIFIIHHHHHIGIIIHIIEIEHIHFIEIIIHFFHGGIIIFFIIIGI=HCIIIGEIGII?IIF=CBIBEIBCA?6II at IIIGIIB NM:i:2 MD:Z:72T16T10 oR:Z:1 oH:i:2 oP:i:4515 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.982 147 1 4410 255 100M = 4177 -333 GCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGC HIBGIHDFIFGICFCIIIIAIFIAIHFFFI?IEIGFBIIFIFIIDIIFGDIIFIIEIFFFIHFIFHGFIGIGGIHEIHGHIGIHIGHIGIHGHIHIHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:4748 oS:A:R XE:i:0 XS:i:1 XI:i:0
simulated.983 83 1 3403 255 100M = 3213 290 TGTGAACAGTCTACCTTTCCCGATTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGA BFIIHIIIAIDIGIIIIIABIIHDIIDFCFHIGICIEIICIIIIEIIIGBIDIIIIIIIIIHHIHIHGHHEIEIGHIGIGGEIFIHIGHIIIHHIIIHIH NM:i:1 MD:Z:23C76 oR:Z:1 oH:i:2 oP:i:3677 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.983 163 1 3213 255 74M1D26M = 3403 -290 GGAAGGTTGGCACCCCGCTATTAAAAACAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCTATTTCATTGACATAGATGAGGCTT IIIHIHHIIIIIHIGIIHGIHGIIHGIIIGDFIIHFEIIFIDIIEIIEIHDCDIIAIIGFIDIHDIIDIIIIIHGIC at CIIIIIICHI>FGEAIEA?III NM:i:2 MD:Z:27G46^C26 oR:Z:1 oH:i:2 oP:i:3487 oS:A:F XE:i:1 XS:i:1 XI:i:0
+simulated.983 163 1 3213 255 74M1D26M = 3403 -290 GGAAGGTTGGCACCCCGCTATTAAAAACAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCTATTTCATTGACATAGATGAGGCTT IIIHIHHIIIIIHIGIIHGIHGIIHGIIIGDFIIHFEIIFIDIIEIIEIHDCDIIAIIGFIDIHDIIDIIIIIHGIC at CIIIIIICHI>FGEAIEA?III NM:i:2 MD:Z:27G46C26 oR:Z:1 oH:i:2 oP:i:3487 oS:A:F XE:i:1 XS:i:1 XI:i:0
simulated.984 69 * 0 255 * * 0 0 CTACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGG IHHIHIHHHIIHHIHIIIFIGIEIIIIHFIIIFHEIIIIGFIIIHDICFGHIGIGBIHE??I?IEIC?HID?IEIBIIAIFIHIFABICBIGIFHICHEI uR:A:B oR:Z:1 oP:i:752 oH:i:1 oS:A:F
simulated.984 141 * 0 255 * * 0 0 TGCATCATGCGTAAGTTTTCTGAACAGACTAGGGATTAAAGGCATCAGGGCCATTGAGGGACCGTAGCTGACTATACGTCGTCGGTCGCTCGCATATCTA IIHIHIIHIIHIHHHIIIGIIIGHHHIIHIGHIIIFEGCIIEHIEIGEIIIIFIIIICBHCGHIIHFCIIHAHIIGIEB at IGEIIGI=G>IICDHHIIII uR:A:B oR:Z:1 oP:i:924 oH:i:1 oS:A:R
simulated.985 69 * 0 255 * * 0 0 AAACAGCGGCATGGCGGCTGAGGAGGTCCCAGCTCTCCGCAATACCCGTTCGGATTCAATGCAGGAGCTCGCGTAAGGAATTATTTTATACCCGATTTTA HHHIIIIHHIHHIHHIHIIGHIEHIFHGIIFIEIHIIIIGIIFCGIIGIHHIIIDIIIIHGDEIGDIIIHDFI at FIIDHII@GIAI at DEH<FIIIIIHII uR:A:B oR:Z:1 oP:i:6126 oH:i:1 oS:A:R
diff --git a/apps/mason2/tests/simulator.out4.sam b/apps/mason2/tests/simulator.out4.sam
index d35802f..febc078 100644
--- a/apps/mason2/tests/simulator.out4.sam
+++ b/apps/mason2/tests/simulator.out4.sam
@@ -26,7 +26,7 @@ simulated.22 16 1 5393 255 100M * 0 0 CAGAGAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGT
simulated.23 16 1 3778 255 100M * 0 0 AGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTG DIGIEG=EGGIIBAGIIFDBHCIIIFIIIFIHIIFHGIIGC at IGEIIIIHDFICHIIFIGEIIEIIGFGHHIIHIHIGGEFHHIHGFIIIHIHHHHHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3777 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.24 0 1 1561 255 100M * 0 0 ATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAAC IHHIIIHIHIHIIHHHIHHIFIIIIHHIIGIEIHIIEEIIHIEFDIDHIIBIIFCIIDIAFIIIIDHDDIIIICIFIIB?DIDA at ICG?GIBIIIFHCII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1560 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.25 16 1 2968 255 100M * 0 0 CGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGA IIGIIIIIIIFF>I;?HBBIEIIIEAHBIHIEIHIEIIIIIIIIIIBIHIHIHIIDHBIEIHIGEIFFIIFFFHGIIIIHHGHIIGHHHIGIHIIIIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2967 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.26 16 1 4850 255 100M * 0 0 GTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCA 69IIDA at IGFHI?@HIIIIIF>FIHFICFHIIBIBGIHIEIIIGEFIHIIIGIFHFCIDFHIEDFGHIIIIIIIEHFHHHGGIIHIIIIIGHIIHIIHHH NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:1 oP:i:4849 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.26 16 1 4850 255 100M * 0 0 GTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCA 69IIDA at IGFHI?@HIIIIIF>FIHFICFHIIBIBGIHIEIIIGEFIHIIIGIFHFCIDFHIEDFGHIIIIIIIEHFHHHGGIIHIIIIIGHIIHIIHHH NM:i:1 MD:Z:T99 oR:Z:1 oH:i:1 oP:i:4849 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.27 16 1 7820 255 100M * 0 0 GCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGA HCDIIB?IIIHIHICIIIIIFGIIAIIEBIIIGGIFIIIIIFIIIIFFHIIIIHIIGHIIIIIIIIIIIHHIGHIIGIHGHIHIHIGIIIIHHHHIHIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7819 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.28 0 1 8432 255 100M * 0 0 CCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGT IHHIIIHIIHIIHGHGIIIIHHFHIHIHHIDHIIFFEIFDHEHIHFGGCGHIDIFIICIHHHIGIIIICGFEHICIIIIEFHIGIGIGIBBDI?GIIIED NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8431 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.29 0 1 8566 255 100M * 0 0 TCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTC IHIIIIIIIIIHHIHGHHIHIEIIHHIFIIIIEHIIIEHIDDIHEIIIEGDFI>IIGIFCIIGI<IIEIHDIHBA>IECB?BIIIIIFEGIIDIII;A9I NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8565 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -35,7 +35,7 @@ simulated.31 16 1 5707 255 100M * 0 0 AACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCG
simulated.32 0 1 1160 255 100M * 0 0 GAAGCCGACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAA HHHIIHIHIIHIHIIIGHIIHIHHHIIFGHIIHGIIIIIFGDHIIHIGIIIDFGFIHIHHGAI at FFIIIIIIDHIICIAIDDIIAIBEIHA:@II at BIGI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1159 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.33 0 1 3029 255 100M * 0 0 TACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGAAAGC IHHHHIGHHHHGHHIHIGIGIFGFFHGHIHGHDEFHEFHIFGCDGIIIIIHIIGFICIIIIHE?HIHIDIIIDHIFHIIBHGHBGIIIADDG?I;?IAHI NM:i:1 MD:Z:95C4 oR:Z:1 oH:i:1 oP:i:3028 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.34 16 1 4107 255 100M * 0 0 CTTTATCCGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGA HGIB?HICFAI at B@F>IHFIIIIIHIIDIIFIIFHCDIIGIGCHFIGIIGIDEEIHDIIGDHIIIIFGHFGGHGIGIIIIIIIGGHHHHIIIHIIHIHIH NM:i:1 MD:Z:7A92 oR:Z:1 oH:i:1 oP:i:4106 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.35 16 1 955 255 100M * 0 0 AATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGCGTCGACTAGGCACCAGG EIHBHIIGCFIF?=HFI=BIGFIIIFGIIIIIHHFDIGIFIGIIIECIHIFIEHIFIICI at HFIIIIFIIIIGGGIHIFFIHIIIGHIHGHHIHIHHIHI NM:i:2 MD:Z:0T81G17 oR:Z:1 oH:i:1 oP:i:954 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.35 16 1 955 255 100M * 0 0 AATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGCGTCGACTAGGCACCAGG EIHBHIIGCFIF?=HFI=BIGFIIIFGIIIIIHHFDIGIFIGIIIECIHIFIEHIFIICI at HFIIIIFIIIIGGGIHIFFIHIIIGHIHGHHIHIHHIHI NM:i:2 MD:Z:T81G17 oR:Z:1 oH:i:1 oP:i:954 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.36 16 1 3043 255 100M * 0 0 TAGGGATCTTATGTCTTCAATTTGATCTGTGCTTGCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGG HFIIGHFCEIFI at IIIBIIIIDAIIIIIHFIIIF?IIEDIBDIDIIIICAIFGFIIIIGIIIFEIHEIHHIIIIIGIFHHHIIHHHIHIIIHIIIHIHII NM:i:1 MD:Z:34T65 oR:Z:1 oH:i:1 oP:i:3042 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.37 0 1 4812 255 100M * 0 0 AAAGCAAACGATTTAAGCCAAAAAGATCACCTCCCTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCC IHIHHHHIIIIIIHHHHIHHHIHHIHEIIIHFIIAIHIIIIIIIHHDHIGHCGIIGIDIBAFBIHHIHDIIIIHGIIIAIIIIIIEIII?ICIIDGICDI NM:i:1 MD:Z:34T65 oR:Z:1 oH:i:1 oP:i:4811 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.38 16 1 2799 255 100M * 0 0 TCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGA IIF:IICGIFIIIIDGEFI=IICCIIHE at IHEIHEIFFIIEIIIEIDECHC@GHEHAGCGIDIIIIFGGIGIIHIGFFIGIFGHGIIIIHHHIIIHHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2798 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -165,7 +165,7 @@ simulated.161 0 1 8357 255 100M * 0 0 CTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCT
simulated.162 16 1 1755 255 100M * 0 0 CCTTGAGACGGCTATGCGTGGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGA IIHIDIIII>HIIIEIFI=. at AI?IIIGIBEAI?GIIEEHHIEIEIIFFGFCFGIHIHHGGIFHHHIIIIIIIGIGGHGHIIIHFHHHHHHHIIHIIIHI NM:i:1 MD:Z:19T80 oR:Z:1 oH:i:1 oP:i:1754 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.163 16 1 3574 255 100M * 0 0 GATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCTGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGG DGIIIDIBI:@FIC<EFEIIGIIIIIIDIIDIACGIFGCEEIDIICIIIIIIIIFIHHGGIDGIHIHIHGHIIIHGGIIHGIIIIHHIIHHHHHIHIIHI NM:i:1 MD:Z:38G61 oR:Z:1 oH:i:1 oP:i:3573 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.164 0 1 2214 255 100M * 0 0 TAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTC HIHHHHIIFHHIIIHIFHIIIGHIGGIHIIFIIIIIHIIHIIHIGIIICHIIICIIHHFEIIIIFGFIEDIIHIHHFIFFAIEBIGCGIDHIHIH=IGII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2213 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.165 16 1 337 255 14M1D86M * 0 0 GGACGCACAAAATCTCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTGACGTCAAATTCTCGG IIIIHBI at IIEBIIIIIIGI=HIIIII<IIDEIEIHHIFAEIBIIIIIIHIHIIGIGHFGIIIGIHHFIHIIIDIHHIHHIIIHGIIIIIHIHHHHIIHI NM:i:2 MD:Z:14^A70C15 oR:Z:1 oH:i:1 oP:i:336 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.165 16 1 337 255 14M1D86M * 0 0 GGACGCACAAAATCTCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTGACGTCAAATTCTCGG IIIIHBI at IIEBIIIIIIGI=HIIIII<IIDEIEIHHIFAEIBIIIIIIHIHIIGIGHFGIIIGIHHFIHIIIDIHHIHHIIIHGIIIIIHIHHHHIIHI NM:i:2 MD:Z:14A70C15 oR:Z:1 oH:i:1 oP:i:336 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.166 16 1 1497 255 100M * 0 0 TCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAG A at FII>IIIIIIIGFIFI at IIHI?FDGIEIBFIFIIIFFEIIIIIHHFIIEGIIFHEGIFHEGIIGIHIIIIIIIGHGGGIHHFIIIIHIIHHHIIHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1496 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.167 0 1 5884 255 100M * 0 0 TGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGC HIIHHHHHIHIGHHIIHHIIIIGDIIIGIGHGGIFIHIGFIIGFGFIGIIHDEIIEFFFHII?IFDIEIFAFBFIEIIIIDCIDAIACHIIIIIIGGDCI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5883 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.168 0 1 9240 255 100M * 0 0 GTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTC HHIIHIIIHHIGHIIGIIIGGIIIGIIIHIIIFIIHIIIIIIIIGGDIIIIDIHI?IIFII at I@?IIGAIGAIBIII<GIICEIDICIIIEIBIH?I at IF NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9239 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -214,7 +214,7 @@ simulated.210 0 1 1107 255 100M * 0 0 GCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCA
simulated.211 0 1 6942 255 100M * 0 0 TAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGG IHHIHIIIIHHIHIIGHIGGIHIIHHIIIIEGIIGIIIIDIIEIIIIHIIBEEIFHIIIGHFBHEGIGIIEIFGIHH>IIFAAIIIIDHICI=;IFGEIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6941 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.212 0 1 6087 255 100M * 0 0 CTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCGACAGGGTGCATATCGA HIIHIHIIIHIGHIHHIIIHIHGIIHIIHHHIIIDIIHEGIEIIGGIDIDCHEIIIEGGIEFFII at CFDIFGFIEGIIBFIII7I>D;IIDHHGIIIBII NM:i:1 MD:Z:83C16 oR:Z:1 oH:i:1 oP:i:6086 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.213 0 1 6725 255 100M * 0 0 GCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATA IIIIIHHHIIHIIHHHHHIHIIIHFIIIGHIIIIIIGIHGFIIIBIGIIEHIICEGIBIHBAIIGIAHICIIIIDAIDE?IIIIIGHFFIIHIE>IGFII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6724 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.214 16 1 7609 255 100M * 0 0 AGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAA @IDCEII at IIIIHIIII=IFIFIIFIIFIGGFIHICEEIIIDIIIIIEGAGFIDIFIIEFHGIGGIIHHHHIIGIDHIIHHHIIGGIHHGIIHIHIIHHI NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:1 oP:i:7608 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.214 16 1 7609 255 100M * 0 0 AGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAA @IDCEII at IIIIHIIII=IFIFIIFIIFIGGFIHICEEIIIDIIIIIEGAGFIDIFIIEFHGIGGIIHHHHIIGIDHIIHHHIIGGIHHGIIHIHIIHHI NM:i:1 MD:Z:T99 oR:Z:1 oH:i:1 oP:i:7608 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.215 16 1 8132 255 100M * 0 0 TCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCG IIIFIIIFIDIIIGEFCDIICIIICIFGIDDIFDHDCGIIGIIIIIADIHIHEGHGEIHIHIIDIHHEDIIHIHGHHFIGIHGHIHIGIIIHIIHHHHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8131 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.216 16 1 4507 255 100M * 0 0 AGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGT CIC at IGIIIBGII>I>IIFAIIICIHDIFCIFBDCBGEGIIEI at IIFHICIIFFIHIIIFHIIIHIHHIGIIEIGGHCIGIIIIHGIIIHHHHHIHHHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4506 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.217 16 1 6194 255 100M * 0 0 CGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTAC IHFFG?FIGHIIHGI;>IIDIIIDCFIIIFAEI at FBFEIICIIHIIHFFEIIEGGIIFIHIIHIGHIGFIIGIFHFIHIHHIGIIIIGHHHIHIHIHIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6193 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -319,7 +319,7 @@ simulated.315 0 1 6940 255 100M * 0 0 GCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGG
simulated.316 0 1 9092 255 100M * 0 0 GCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACAT HHIIHIHIIHIIIIIHIHHIIIHIIHGHGHGIIHIIIIFHCICIFGGIGFHIIGCIIIDIIIHIGHIIDICIGI9IIIHIFHIGEIIGA at I9ICABF@II NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9091 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.317 0 1 3543 255 100M * 0 0 GCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTA HHIHHIIHHHHIHHIIGIFIGIHGICIFFHFIIIEHIGDHBFHDGIGDGDIGHIHIIIFHIIIEII?EFH?DIFIIIIIBHIIGIHDII=IIIIG?IIFG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3542 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.318 0 1 4882 255 100M * 0 0 TCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCGAGAGTTGGCGTG IIHHHIHHHHHHHHHHIHGIGIHIIIIHIIGIFIHIDGHCHHIIFGIIFIHFAICIBIEEIAHIIF>EIIEHIIFHHFE=IGBEGDIAGIDI:I=?IAII NM:i:2 MD:Z:87C7C4 oR:Z:1 oH:i:1 oP:i:4881 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.319 0 1 7536 255 62M1D38M * 0 0 AAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTTGTTATTCCATTCATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCG IIHHIIHIIGIHIIHIIIGGIIHIIGIGIDHHIGIIEIHIHIGHFIGIGHIBIIHGIIGEIIIGIIGIIIIIIGIDCICIDII>EI?BIIHIEGIEFII> NM:i:2 MD:Z:49A12^T38 oR:Z:1 oH:i:1 oP:i:7535 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.319 0 1 7536 255 62M1D38M * 0 0 AAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTTGTTATTCCATTCATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCG IIHHIIHIIGIHIIHIIIGGIIHIIGIGIDHHIGIIEIHIHIGHFIGIGHIBIIHGIIGEIIIGIIGIIIIIIGIDCICIDII>EI?BIIHIEGIEFII> NM:i:2 MD:Z:49A12T38 oR:Z:1 oH:i:1 oP:i:7535 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.320 16 2 144 255 100M * 0 0 TACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATC IIAC at ICI>IFHIDDIBBIIIIIIIIIAFIIIIIGIIEFIGIFIBIIIBIIIIGIIIIHIIGEFFGIHDIFIIIIHIHFIIIIGIIIIHIIHHIGHIHII NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:143 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.321 16 1 6729 255 100M * 0 0 GGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAG IIHAEIICIF at CIIIHIICCHIIECIIFIGIIIIEIIGIGEBCFIIHHIDIHHFIIGGIGGFIIIFHGIFGFGGIIGIIIIGIHHHGIIIHGHHIHIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6728 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.322 16 2 636 255 100M * 0 0 TGTTTGGAGTCGAATCCGTTTTTATTCGACTCTTCTTGCATTCATCACCGGGTCATACTTGAAACTACTATGCCTAGCCGAGGTGCCAGAACTAATAATC GHII;I<CA?IIIIBIIIIG at IHFFCGDHHIICCIEIAIFGHIIIIF>IHHEEEIFIGIIIIIIHHEIFGIFHIIGGFHIIIHIIHIGHIIHHHHIIIHH NM:i:2 MD:Z:6A44C48 oR:Z:2 oH:i:1 oP:i:635 oS:A:R XE:i:2 XS:i:0 XI:i:0
@@ -394,7 +394,7 @@ simulated.390 0 1 9296 255 100M * 0 0 ATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACC
simulated.391 0 1 7630 255 100M * 0 0 CAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGC IHIHHHHHHIGHHIIIHIGGHGIIHIHIIIGIIIHIFIFIDHGGCIIIGFIHIIIGEIFHDHI>HIF>IIIDFHIDHCFBEHEHIHIIIIDD<CGIDFII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7629 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.392 16 1 613 255 100M * 0 0 ACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGNTTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGG I?I<ICIFIIEIAHIHBIGHBDIHIIIIIIGIIIIIEAIHIIIIHHDIIIIIIFI?HCFCIHIHGIIIHIIIIGIGHHIGHGIIIIIIIIHIIHIIIHHH NM:i:1 MD:Z:55A44 oR:Z:1 oH:i:1 oP:i:612 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.393 16 1 1533 255 100M * 0 0 TCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAAC AI>IIFEDG?8HIEHEFIIHHI<EACIFIDHIIFIIDIFIIGBIIIIIIIGIGHIIIIIFGIIGHIDIIHIIHIIIHIHIIGIIHHIGIHIIHHHIHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1532 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.394 16 1 1377 255 100M * 0 0 ATAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGT BIIH=IFHIII=DF at IIBEHIHGBHIGDIIABIFIFICICEFIGGIIFDICIICIIDIGFFIGHIIIEGICEHHIIGHIGIGHHHIIIIIIIHIIHIHHI NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:1 oP:i:1376 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.394 16 1 1377 255 100M * 0 0 ATAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGT BIIH=IFHIII=DF at IIBEHIHGBHIGDIIABIFIFICICEFIGGIIFDICIICIIDIGFFIGHIIIEGICEHHIIGHIGIGHHHIIIIIIIHIIHIHHI NM:i:1 MD:Z:T99 oR:Z:1 oH:i:1 oP:i:1376 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.395 16 1 838 255 100M * 0 0 TGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGAGGCACCCCGGATAGCCCTT GAIIEICIIIIICIACDGFBBCIGD>@FIGFHIDDIGIHIHEIHHIIIGIGIIIIHHHIIIIIIHHHIIHGGHGIIIGIIIFGHHGHHIHIHHIHIIHII NM:i:1 MD:Z:81T18 oR:Z:1 oH:i:1 oP:i:837 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.396 16 1 3897 255 100M * 0 0 GATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACA IIDCID<DFCIIB?F at H?I>DFIEDACBEFIABHDIIIIIIIIEIIIGIIIHIFHAFGIHIIEIGIFHIFGHFIEGFIIDIGGIIGIHHHHIHIHIHHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3896 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.397 16 1 6053 255 100M * 0 0 AAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGGTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCT ICIIBIE5AIGIII<IHIIIICHGBHCII at IIICIICBEDGIIHIIIIFDIHI=BICHHABIIIIIHHFIHIFIHHFGGGHFHHIIHHHIGIHHHHIIII NM:i:1 MD:Z:53T46 oR:Z:1 oH:i:1 oP:i:6052 oS:A:R XE:i:1 XS:i:0 XI:i:0
@@ -421,7 +421,7 @@ simulated.417 0 1 9661 255 100M * 0 0 CCACCCATTATTCGAACACACATCCGGCACGGCTGGGATAAC
simulated.418 16 1 1958 255 100M * 0 0 TGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAAT II?GIF at IIIGGDIHIIDCBFIHBIIFIIIDICDGIIFIEHIIIEIDEICHIHHIIIGIGGHIGCIHHIFHGIGIGHIFGIGFHIFGHIIHIIHIHIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1957 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.419 16 1 5693 255 100M * 0 0 TACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGT IIIIBBFAIIII>IGIDHAIFIICBIIIIIHFEIGEIIIIIIDGIGBFGIHHEIIIDIIIDIIIICFIIIHHHIFFIIGEIIIIGIIHHIHIHIHHHIIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5692 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.420 0 1 6056 255 100M * 0 0 CTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTGTATC IIIHIIIIHHHHGGHIIGHHIGIHHIGIIIIHFIIIIHEEIIGIGEIFCIIIIIDDCIBIIIHIIIIGIHICIIDAHIIEIEIIF<HEIIIHIIG1GCIF NM:i:1 MD:Z:95C4 oR:Z:1 oH:i:1 oP:i:6055 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.421 16 1 6922 255 100M * 0 0 CCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGT 0=IIIIIIIFII:IHFI?IIIIFEGF?IBIIIIIFGIIIFIECEFBHIGGHGBDIIHIIGIIGIIGGIEIIGHHIIIFIEHIIIIHHIFHHIIHHHHHIH NM:i:1 MD:Z:0G99 oR:Z:1 oH:i:1 oP:i:6921 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.421 16 1 6922 255 100M * 0 0 CCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGT 0=IIIIIIIFII:IHFI?IIIIFEGF?IBIIIIIFGIIIFIECEFBHIGGHGBDIIHIIGIIGIIGGIEIIGHHIIIFIEHIIIIHHIFHHIIHHHHHIH NM:i:1 MD:Z:G99 oR:Z:1 oH:i:1 oP:i:6921 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.422 16 2 298 255 100M * 0 0 TATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTCTCTTCTGG IIDGHIIIHIIECDFIIHI<=GIFIHHAADFIGBIDIHDICFIIIHIGDII?EIIGIIGEIIICEIEGIIFHIEFGEIFGHIHIIIIHIHHHIIHIHIHI NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:297 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.423 0 1 4124 255 100M * 0 0 AGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGA IIIIHHIIIIIIIGHIHHIIHHIIIIFGIGIIIIIHBIIIIIFIEIEIHIIIIFIHIIIGDIICGIHI at IBIIIHIFDII=IIIFFIIDIIIIIEDGIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4123 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.424 0 1 4602 255 100M * 0 0 ATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATA HHIHIIHGGGHHIIHIIIIHHIHFIGFIFFGIHHIEGFHGIIFIFEIIIIAECGIIIIHIGEHIHIH=DIFICIHIGEIICIIHEG>BDI>CIHIHIGFH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4601 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -521,10 +521,10 @@ simulated.517 16 1 6397 255 100M * 0 0 GCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCAT
simulated.518 0 1 9652 255 100M * 0 0 CGCTTCGGTCCACCCATTATTCGAACACACATCCGGCACGGCTGGGATAACCCATGATTCTTCGTACGGGTGTGTAAAGAAGTCGGATTGCCACTGAATT IHIIIHHHIHIGIIIHGIGIIHIHHIHIIIIGIIHGIEIDGHBIIHEIICIEEGHHIHIGIIDHGGIIGIIFIIIIIIIIIFBFFEIIIIGIFIIFIGEI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9651 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.519 0 1 4382 255 100M * 0 0 CGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTT HIHHIIHHIIIHGIHIIGIGIIIHFFGIHGHIIGIGHIIGIIIGGGIIIIIIIFIIIIHH?HIGBIIB=II?EF?IFIBGIIIIC@=III@@IIGDEBI@ NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4381 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.520 0 1 7680 255 100M * 0 0 CCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACC HHIIIHGHIIIHHGHIIGIHIHHIIFIIGIHIIEIGIIGDIIFIGIIIIDBFIHIHGIDIBH at HIIDE=GBIIIIEIIDGEHI>FIIC at EDI@AHGIHGD NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7679 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.521 16 2 206 255 25M1D75M * 0 0 TTAAGAGCATCGTTCGTCCTGGTTTTTCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGT IBIIIIDIIGCIIIGIIIIIFEGEI5ICGIIIDIIICIEFFIIIHEIIFIEIDHIIHIIHDIFHGIIIIIHFIFIIHHIIHIFGIHHHIIHHIIHIHIHI NM:i:2 MD:Z:25^G1C73 oR:Z:2 oH:i:1 oP:i:205 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.521 16 2 206 255 25M1D75M * 0 0 TTAAGAGCATCGTTCGTCCTGGTTTTTCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGT IBIIIIDIIGCIIIGIIIIIFEGEI5ICGIIIDIIICIEFFIIIHEIIFIEIDHIIHIIHDIFHGIIIIIHFIFIIHHIIHIFGIHHHIIHHIIHIHIHI NM:i:2 MD:Z:25G1C73 oR:Z:2 oH:i:1 oP:i:205 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.522 0 1 8066 255 100M * 0 0 AATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGNCTAATGTGAGTCTCGAAAAGTGTAAC HHHIHIHGIHHHIIIGGIHIIIIIGIHIIIFFIHHHIIFEHGFFCHFIIGDIEBIDE at FDIIHIGIIEBGHIICIIIIIEIIIIIGI;DII at FDIIII:I NM:i:1 MD:Z:73T26 oR:Z:1 oH:i:1 oP:i:8065 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.523 16 2 653 255 100M * 0 0 GTTTTTATTCGACTCTTCTTGCATTCATCACCGGCTCATACTTGAAACTACTATGCCTAGCCGAGGTGCCAGAACTAATAATCGGACGGTGGTTTTGTCA IIIID at 2D=FIIIIHIHIGIIIIEIIHEICC>GFGIIGIEIEIEFIIIIIIIIIFGIIIHIHHGFIIICICHIIIHHEIHHIIIIIIHHHHHIHIHHHII NM:i:0 MD:Z:100 oR:Z:2 oH:i:1 oP:i:652 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.524 16 1 7571 255 100M * 0 0 ACTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTCGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCA ICFHIFI>FFIIIFIICIBIIIIIHGCIIIGHIDFAEIAIF at HIEIIHIIIIIICFGIIFHHIDIIIFFHGFGIIGIIHHIGFHIIHIGIIIIIIHIHHI NM:i:2 MD:Z:0C54G44 oR:Z:1 oH:i:1 oP:i:7570 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.524 16 1 7571 255 100M * 0 0 ACTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTCGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCA ICFHIFI>FFIIIFIICIBIIIIIHGCIIIGHIDFAEIAIF at HIEIIHIIIIIICFGIIFHHIDIIIFFHGFGIIGIIHHIGFHIIHIGIIIIIIHIHHI NM:i:2 MD:Z:C54G44 oR:Z:1 oH:i:1 oP:i:7570 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.525 16 2 547 255 100M * 0 0 GTGATTAGTCTATGTACCTCTACGAATTGGAGCTCCGTCGGATCGCGGTAACGATAATAGGCTATACTGAATCGGGACTTAATTCTGGCTGTTTGAAGTC @ECIC>?I>DHFICIBEIHHEIFIHEHHEICHIIIFIIIGDIDFGEIFIEEIFFGIIGIIHEDGIHHDGHFIIGGIGIHIIIIIHHHHIIHIIIHIHHHH NM:i:1 MD:Z:13T86 oR:Z:2 oH:i:1 oP:i:546 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.526 16 1 105 255 100M * 0 0 TTAGAAATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCG II at II=GHII;IIIIH:IIDICIIIICIFIIFIIIFECIIIII at IICHHIIIFGHIGHIIGGHGIEIGIIIFHGHGHHGIIIGIIHIHIGHHIIIHIHII NM:i:1 MD:Z:5G94 oR:Z:1 oH:i:1 oP:i:104 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.527 16 1 639 255 100M * 0 0 GACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATC ;HI>CIHIDDGII?IDIBIIFI at IHIBIEIGIFHDIII@IHIGBDIIEIIIGHFIHHHIHIIIHGIEHIIHIFIIHHFGHGGIFIHIHIIHIHHIIHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:638 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -609,7 +609,7 @@ simulated.605 16 1 6688 255 100M * 0 0 GCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTG
simulated.606 0 2 325 255 100M * 0 0 TAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGCTAAGCCAATTTAATCCGAC IIIHIHHHIHHIHFGIIIGGIIHIIIIGIFHIIHFIGIHIIGIEHIIADII=IIGHCIHD=IBDIIIIIIGIIFCIIDIIIIIFHFIFDIIIF?FIIGCH NM:i:1 MD:Z:96A3 oR:Z:2 oH:i:1 oP:i:324 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.607 16 1 2858 255 100M * 0 0 GTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGGCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACG IB<HFFH;III at EEIHIFIDIDGECI<IIIIFGFED<IIIFFIHI at IGGIDIIIIIIIEHHEEIGEIFEIHIEIIGIHGGIGHGHHIHHHGHGIIIHHII NM:i:1 MD:Z:45C54 oR:Z:1 oH:i:1 oP:i:2857 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.608 0 1 5032 255 100M * 0 0 AAGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCA IIHIIHIIIFIIIHHIHHHHHGHIGHIIHFIIEIIHFCGEIIEGIIIIIIHIIBI at IGIGIDFGIBFIIIIAHIIBII=I?:CCDCIGEEEIIIAGII at B NM:i:1 MD:Z:1G98 oR:Z:1 oH:i:1 oP:i:5031 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.609 16 2 41 255 100M * 0 0 TCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGG 9@>GFEIIC<ICIIIDEI?EBIIIF=DIIIDIDIGIGFDIFHIFIDIIIGGCFHHGIHIIIHIIIBIIIGGHIIGHFGHIIHHIIHIIHHHIHHHHHIIH NM:i:1 MD:Z:0G99 oR:Z:2 oH:i:1 oP:i:40 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.609 16 2 41 255 100M * 0 0 TCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGG 9@>GFEIIC<ICIIIDEI?EBIIIF=DIIIDIDIGIGFDIFHIFIDIIIGGCFHHGIHIIIHIIIBIIIGGHIIGHFGHIIHHIIHIIHHHIHHHHHIIH NM:i:1 MD:Z:G99 oR:Z:2 oH:i:1 oP:i:40 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.610 0 1 7126 255 100M * 0 0 TTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATC HIHIIHHIIIIIIHIHGGIHGGHHIHIFGIDIEHIGGIHHIIIGIEHIFIIIIIIGDIIFIICIIGIIFGIHIEB>EFIIBDIIIHIDHDGIIFICFIIC NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7125 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.611 0 1 2318 255 100M * 0 0 AGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTA HIHHHHIHIHIGIHIIIIIHIFIIIHIHHIGIHEHIIGIDIGDIHHHIHIGIHHFFCEIGIFIIHDIB?IDGCIGIIHH at IHDHAIDIIIIIIIIDIIGG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2317 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.612 0 1 5298 255 100M * 0 0 CCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGAT IHHHHHIIHHHHGGHIGHIHIGIIIHGFIHIIIGHIGFIIGIGIIIDIFEHIEFGFI at DHIIGI?FIIIIIIIIIIGGIHIII>GIIFIIIGIAEBGIDF NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5297 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -656,9 +656,9 @@ simulated.652 0 1 24 255 100M * 0 0 CGCTTACAGACTTTATTTCTTCGTGAGGGAGTTGACCCATGCAG
simulated.653 0 1 5991 255 100M * 0 0 TAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGCGAGCTGGGACCTACTCA HIHIHIIIIIHHHIHGIGIFIIGIFHIIHIDIEIGIDIHEGHIIFIGGICIHGCGHFCIGBGCFGCIIBDIIFHFDFHCGII-IIGIFC at IIIIIIICII NM:i:1 MD:Z:82A17 oR:Z:1 oH:i:1 oP:i:5990 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.654 0 1 3561 255 100M * 0 0 TGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGACGCT HHIHIHIIHIIIIGIHHIGIIHFIIGIGGIIHIIIEEGICEFII?IGIDIAGGFGIFIAIGIIGIHEIGHIIHIIIFIIIIHI<IIIIIDIICIHF?DIC NM:i:1 MD:Z:96A3 oR:Z:1 oH:i:1 oP:i:3560 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.655 0 1 6922 255 100M * 0 0 GCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGT HHIIIIIHIIGIHHIIGHHIGHGHHIGEHGGEHGHFIIGIIIIEIIIGIIEIIIHHIIHCGIDGIIIIIIIAIGIIBIFIIICIII>I?ADGIIIIIEII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6921 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.656 0 1 9332 255 100M * 0 0 TCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTCGCAGCTCGCGCT HIHIHIIHIIHHHGIGHGHFHIFHFEIIIHHIIGIFFIHHHEHGFGIHIIIDIHBEIIIDIEGIIBIHIFIIICGGIHIHIIIIEII>BIGEII>IEBIH NM:i:2 MD:Z:87A0A11 oR:Z:1 oH:i:1 oP:i:9331 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.656 0 1 9332 255 100M * 0 0 TCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTCGCAGCTCGCGCT HIHIHIIHIIHHHGIGHGHFHIFHFEIIIHHIIGIFFIHHHEHGFGIHIIIDIHBEIIIDIEGIIBIHIFIIICGGIHIHIIIIEII>BIGEII>IEBIH NM:i:2 MD:Z:87AA11 oR:Z:1 oH:i:1 oP:i:9331 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.657 0 1 7629 255 100M * 0 0 ACAGTGCGCGCGAAGGGAGGCNCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAG IHHHHHHIIIHIIIIHFIIIICGIIIIHICIIHIBIFIHIAIIEDIHGGICGHFEECFIHIHIIEI?IIDIICEBEIHIIIIIIGFIII;I?CFI6II7I NM:i:1 MD:Z:21T78 oR:Z:1 oH:i:1 oP:i:7628 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.658 0 2 443 255 100M * 0 0 AGGCATGTTCCTCACCTGGTGAGCATTGGCGCATTCCATACAGCTTCTAACTCAGATAAGCACTAAGATGGCACTGGCTATTCCCCCAGGTGCGCTGGTA HHIIIHIIIHIHHHIIGIGFHIGIHGIFHFGIGIGIIIEICIHIEIFIHGEEGDEIIIBIICFIIIIIIIHCCFDFECCIIIAIBGC9GGBGIIIII?II NM:i:2 MD:Z:0C86T12 oR:Z:2 oH:i:1 oP:i:441 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.658 0 2 443 255 100M * 0 0 AGGCATGTTCCTCACCTGGTGAGCATTGGCGCATTCCATACAGCTTCTAACTCAGATAAGCACTAAGATGGCACTGGCTATTCCCCCAGGTGCGCTGGTA HHIIIHIIIHIHHHIIGIGFHIGIHGIFHFGIGIGIIIEICIHIEIFIHGEEGDEIIIBIICFIIIIIIIHCCFDFECCIIIAIBGC9GGBGIIIII?II NM:i:2 MD:Z:C86T12 oR:Z:2 oH:i:1 oP:i:441 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.659 16 1 6514 255 100M * 0 0 ACGGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAG II7FEGAD?II?I at HIICIDFII@IGFIGFIDGIFAEIIHIIIIIIIHIGIDHIIIEIIEAIFIGEFFGIIIHHIGIIHFGFIGIIHIHHIHHIIHHHHH NM:i:1 MD:Z:2T97 oR:Z:1 oH:i:1 oP:i:6513 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.660 0 1 4543 255 100M * 0 0 GGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTCCTTTGTGTTGGCAACCAGGTGACGACGA HHHIHIGHIIHHIHHFGIHGFIIIIDIGIHHFIHIFGIIIGEHIGIHFIHIH?CEIFII at IIIDGIHH<H=@IAICHIID at HIIII1IFBCIIIDIII8@ NM:i:2 MD:Z:71A14T13 oR:Z:1 oH:i:1 oP:i:4542 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.661 0 1 1321 255 100M * 0 0 CATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATC HHHHHIHHIHIHHGIHIIIIHHHIIGHIIGDGDDGFIIIIHEHIIIIIFIIDIIIGIHEFHIFCIDIIIG?IBECDICIDIGIIHIIGDAIABHAI at IIG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1320 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -966,7 +966,7 @@ simulated.962 0 1 9089 255 100M * 0 0 TGGGCCCGTCGGCGGCATAGATGTTGCTCGTCACCGCCGTTA
simulated.963 0 1 1641 255 100M * 0 0 CAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCT HHIIIIHHIIIIIHIHIHIIIGIIIIIIGGGIGIGIHIGIICIIHDIIEIIHIGIIIEIIHII at GAII>DHIGHIIIDIIIII at HBGIIIE:IFGIGGEH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1640 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.964 0 1 4274 255 100M * 0 0 CATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCTCCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGTG IIHHHHIGHIIGIIHGHIIIIGIIFIIIIGIIHIIHGEHIGGGIDB at IGIHIIIHEGIIIGBIDIIIIIIIIGIFDIIFFIFGGHIGIDIIIII>HAE?I NM:i:2 MD:Z:46A51A1 oR:Z:1 oH:i:1 oP:i:4273 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.965 0 1 4164 255 100M * 0 0 TTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGT HIHHIIIIIHIIIIIGIIGHHIGHIIIHIEIGIFIGIIEHHIDIEIGIIIDIHIIHF at IIIAFG?IGIIIIDIEFCHIGI at IGIBIGICIIAI?9ID;DI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4163 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.966 0 1 5757 255 66M1D34M * 0 0 GGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGCGGATATAGTAGTATTATGTATAACGCCGGACTA HIIHHHHGIIHHHIIHIIGIIIHIFHFIDIHIIIIGIIIIIHGIEIFIEIIICCIHFFGCDIEIIA=IIIIFIIIHHGGIICD at EIIIICICE<@BFIIB NM:i:1 MD:Z:66^A34 oR:Z:1 oH:i:1 oP:i:5756 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.966 0 1 5757 255 66M1D34M * 0 0 GGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGCGGATATAGTAGTATTATGTATAACGCCGGACTA HIIHHHHGIIHHHIIHIIGIIIHIFHFIDIHIIIIGIIIIIHGIEIFIEIIICCIHFFGCDIEIIA=IIIIFIIIHHGGIICD at EIIIICICE<@BFIIB NM:i:1 MD:Z:66A34 oR:Z:1 oH:i:1 oP:i:5756 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.967 0 1 7931 255 100M * 0 0 TGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGT HHIIHHGHGHHIIIIIHGIHIFGHIHIHDFFIHEFHGGFGIIHIIGIIIGIIIHGIIIIACIIIIIIIEIIIIIIHFIIDIDIIIIDII?IIHIIICFGG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:7930 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.968 16 1 422 255 100M * 0 0 CACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCA IIHIIAI>IEI<BIIIIGIIGIIIGIFIIIIIGIDIGIDIH<HIIHIIGEFIIGDCIIEHGHIFIGIIIIIHHIIIHIHGGIHHHIIHIIIIHHHIIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:421 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.969 0 1 6720 255 100M * 0 0 CTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACC HIIIHIHHHIHHGGGIIHHGIIIHEGFEHDIDIHIFIFHIIIIEGIHEEFIIIGIHIGFIFIFDGIDIGIHG?IGCIIHFII>CIEIAEDEIIFIIGI<A NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6719 oS:A:F XE:i:0 XS:i:0 XI:i:0
diff --git a/apps/mason2/tests/simulator.out7.sam b/apps/mason2/tests/simulator.out7.sam
index a9fdc74..33878cd 100644
--- a/apps/mason2/tests/simulator.out7.sam
+++ b/apps/mason2/tests/simulator.out7.sam
@@ -8,11 +8,11 @@ simulated.4 0 1 2293 255 100M * 0 0 CAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTAT
simulated.5 0 1 2686 255 100M * 0 0 ATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTC IIIIHHHHIIIHHGHHHHIIHIFIGIIDIIHIIIIIHEIGIFEGIIIIICEIIHHIIIEHIIFEHIHIIIIIEDGEA<IEGIIIIIEIIEIFE=FCDIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:2960 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.6 0 1 7927 255 100M * 0 0 GCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTA HHIHIIHHHIHIIHIIHGIIHHHIDHGHHHHGIIIGGIIEFIFIGIIEAFDIGIIIGF>IDIIEIIIGIFHIGIIIDEIHIIIIIHIICAECIIIEHIIB NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8120 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.7 0 1 3782 255 100M * 0 0 AGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATG IIIIIIHHIHIHHIHHHGIHIIIIGHIIIIIHDHIIIHIDIHIIEGGDI?IHIGIHIIGIIIDIFIIFIIICDGIIFDHHEIHIIIFFIFDCI>IIIBIF NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:4060 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.8 16 1 3765 255 29M1D71M * 0 0 AAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAAC IICDAIIIG;AII?AIHIIIIII9BFIIEIICFHIIHHIIIIIIIGDIIHGHHIGGEGIHIIDHIEHFHIGIFIHGFGIGIIIHIIHHGIHIIHIIIHIH NM:i:1 MD:Z:29^T71 oR:Z:1 oH:i:1 oP:i:3866 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.8 16 1 3765 255 29M1D71M * 0 0 AAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAAC IICDAIIIG;AII?AIHIIIIII9BFIIEIICFHIIHHIIIIIIIGDIIHGHHIGGEGIHIIDHIEHFHIGIFIHGFGIGIIIHIIHHGIHIIHIIIHIH NM:i:1 MD:Z:29T71 oR:Z:1 oH:i:1 oP:i:3866 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.9 0 1 6659 255 100M * 0 0 CCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGG IHIHIHHIIHIIIHHGIIIIGHHFIIIEFHHIHHIEIIGIHHGIHBGIIEGEIGIIIIIIIFCGEIGCBIIIIIIHFEI at IBDIFGEFBIEDIGGCIEFI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6852 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.10 4 * 0 255 * * 0 0 CTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCAATTATATTGCATGGCATTGTGTGTCGCTTCC HIHHHIIHHHGHIHHHGHHIHIGIIIGHIEIHHIGHFCHEBIIIIIIIII?IIEIHIBIHDBIIIHDGGIFI<IIIAIBIDIIIIIIII at AGIAD9IFIF uR:A:B oR:Z:1 oP:i:6286 oH:i:2 oS:A:F
simulated.11 4 * 0 255 * * 0 0 CCCGGCTGTTTTATGGCCGGACACGGACCCACGCGACTTTGTGCTAGTACAATACGTGCATGGTTTGATATCATAGGATGACATGTGGGCACTATCTTCC HHHHHHHHHIIHHHHGGIIHIIHGGHIGICFFIFIIIIEIGIFIFIIFCIHIIG at FIBEGIIIICIIDIFIGGIIICBFII:IIIIHFIIIHFGIIIAII uR:A:B oR:Z:1 oP:i:1593 oH:i:2 oS:A:R
-simulated.12 16 1 27 255 94M3D6M * 0 0 TTACAGACTTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATA HIIIIDBBIAIIGIIEIGIIIIGAIIHIEIIBEGIDAIIIIIH at BFIEGGIIIIIGHDIHEGGDFIHHGFGIHEEEGGHHFIIGIHHHHHIHHHIIHIHI NM:i:3 MD:Z:94^ACA6 oR:Z:1 oH:i:1 oP:i:26 oS:A:R XE:i:0 XS:i:0 XI:i:3
+simulated.12 16 1 27 255 94M3D6M * 0 0 TTACAGACTTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATA HIIIIDBBIAIIGIIEIGIIIIGAIIHIEIIBEGIDAIIIIIH at BFIEGGIIIIIGHDIHEGGDFIHHGFGIHEEEGGHHFIIGIHHHHHIHHHIIHIHI NM:i:3 MD:Z:94ACA6 oR:Z:1 oH:i:1 oP:i:26 oS:A:R XE:i:0 XS:i:0 XI:i:3
simulated.13 16 1 1412 255 100M * 0 0 ACATGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGT ?DF:FEEBIH at AIIIIIHIIIGII>GDIIFIIIIDIIGDAGGIDIGIGEIIIFHIIHEIIIIFGIGHIHEHIIHIHIGIIHIHGIIIHGHHIHIHHIIHI NM:i:1 MD:Z:3A96 oR:Z:1 oH:i:2 oP:i:1465 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.14 16 1 265 255 100M * 0 0 AACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGA DII at FIBFIIHIIIIHIG?ICGHGIEIDIIFCCII?IHGEIHFHIBICGIIIEEFIIIFIHHIFIIIFIGEIHIGFGIHIEIIIGIIGHIHIHIIIIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:264 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.15 4 * 0 255 * * 0 0 GTTCACTCTTGAGTGGGTTCGACCGGTGATGTATATGGTGATATGTCTACTCTTCTAAACGGTACAAAAGGTCTTCTCTCCCGAGGTAACATTTCCGATG HHIHHHHHHHHIHIHGIIHFIIIFFHHIHDIIGGHIIIIGIHIECIFFEGHIIGIHIIIHHDC@@IBIIEIIHEDHIIIAIIDIIBIIIIFIDCECIADI uR:A:B oR:Z:1 oP:i:9882 oH:i:1 oS:A:R
@@ -55,7 +55,7 @@ simulated.51 16 1 8172 255 100M * 0 0 GGCTAGCATTCCCATGTAACACAGCCCACACGGTTATGGACG
simulated.52 0 1 672 255 100M * 0 0 GCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTAT HHIIIIHIHIIIIIHHHHIIIHIIGHIHFIIIGIIDIIIIGFIDIGIHHFHGEFDHGFEAIIIEGEFIIHAEEIHGIIIEAIIIBGCHFDICBIFGII;I NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:671 oS:A:F XE:i:0 XS:i:1 XI:i:0
simulated.53 0 1 6781 255 100M * 0 0 TTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTA IIHHHIHHIIIIIIHIHIIGHIHIFFIIFIIFIHHIGFIFIIGEIGHIFIIIHHIAIIGI<IHIIEIDBI<CIDHIIIIIIIHDBFAIFIBIEICIICEG NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6974 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.54 4 * 0 255 * * 0 0 AGGTTCATTGTAATTTTACAATTTACCTCTCGTCTCGCTAAGTTGACGGGATTGTAGGGAGCTGGTGCGCGGCTTCATGGAGTACCTGGAGTAGAAAAAT HIIIHIIIIIIHIIHGIHIHHIGGIHHGHHIIGIGGIEIDGD at HIIIHICIIICHHIIHIDIIBICIHIIIGDAIEIIIIHII@IBIIIIGEHIIIHDID uR:A:B oR:Z:1 oP:i:2253 oH:i:2 oS:A:R
-simulated.55 0 1 3725 255 69M1D31M * 0 0 CACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTAGGTC HHHIHHIIHIHHHHHIHIIHIIHGIEGFGFGIIGIIGHBDCIDGGCIIHIFIHGEIGFIIIDICEHHIIICHIGIC;GIF:IGEIII?BBEIDIGI9GI: NM:i:2 MD:Z:69^T27C3 oR:Z:1 oH:i:1 oP:i:3826 oS:A:F XE:i:1 XS:i:0 XI:i:1
+simulated.55 0 1 3725 255 69M1D31M * 0 0 CACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTAGGTC HHHIHHIIHIHHHHHIHIIHIIHGIEGFGFGIIGIIGHBDCIDGGCIIHIFIHGEIGFIIIDICEHHIIICHIGIC;GIF:IGEIII?BBEIDIGI9GI: NM:i:2 MD:Z:69T27C3 oR:Z:1 oH:i:1 oP:i:3826 oS:A:F XE:i:1 XS:i:0 XI:i:1
simulated.56 4 * 0 255 * * 0 0 GCCTCTGGTACCGTCAGTTCTCAATAGGACATACGTCAAGGGGTTGTCCCGTGGAAAGCACAGATCAAATTGAAGACATAAGATCCCTAACGACAGAATA HHIHHHIHIIIHGGIIIGIHIHGIGIIGGGHIGHEGIHIGBIGIIIIIIDEHGHBGIAIHIIHICIGIGIGCIIIGIIIIIIIIIIIBIAIIIIEGICGI uR:A:B oR:Z:1 oP:i:3194 oH:i:1 oS:A:R
simulated.57 0 1 3939 255 100M * 0 0 CTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACT HHHIIHIHIHHIHIIHIIHHHIIGIIGIIHIIHIIGIIIGHIHFIGHFIGHH at IGIHIAIIHIDGIIIDIEIHIIIIIICGEFIIHC@GFIIIAIIIIDC NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4039 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.58 16 1 6217 255 100M * 0 0 TCAGCGGCAGTGCGACACGNTCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGT GIIFIFIBA8=HEIHA;IIICIAAFGCEIIIGC at IIDEICIIIFDIEHIIIBIHIIEIFFIIEIHIHIGIGIIIFEHFIIIHIIIHIIHIIIHIHIHHHH NM:i:1 MD:Z:19A80 oR:Z:1 oH:i:1 oP:i:6334 oS:A:R XE:i:1 XS:i:0 XI:i:0
@@ -85,7 +85,7 @@ simulated.81 16 1 3889 255 100M * 0 0 GAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGC
simulated.82 16 1 2706 255 100M * 0 0 TTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTA AGG?4EIII>CIFB>II at BIHEDGICIFGIDIIHGGICIGIEIHIHIIFGGIDEIIIIGGFIFICIHIHIIEIIHIGIHIIIIHHIGIHGHHIIHHHIHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:2807 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.83 4 * 0 255 * * 0 0 CAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCACCTGATCTTTCCCATTGTTGAGTGACAGGCACCCCTATACCAGAGTCGTAAG HHHIHHIHHHHIHIHIIIIIHHIIHHGIGIIFHGGIGEIIHFDBFIIIFIIIGEHIIGFIEIIIIIIIIHGCIB at GHIIGI@IIIDIIFDIIIBG?IIEG uR:A:B oR:Z:1 oP:i:2146 oH:i:2 oS:A:R
simulated.84 16 1 2088 255 100M * 0 0 CACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTCAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTAT B<ECIFH>GIIIIFBIFIIIECIFIIIICAIHIDCIIC?DHIFDIDIIFFIDIEIIHFIIIIIIGGDIEHHHIHIHHGGIIIHIHIIHGHHIIIIIHHII NM:i:1 MD:Z:50G49 oR:Z:1 oH:i:1 oP:i:2189 oS:A:R XE:i:0 XS:i:1 XI:i:0
-simulated.85 0 1 9055 255 53M3D47M * 0 0 TGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGT HHIHHHIIIIHHIGGIHIHIIIGGHHIHIGGIFFGGEICCIIHFIIFIFHEDFIIBHEEIIIEFFIIDCFHBDIBIHIHIIIDFIIIGGCIC?IAFGIII NM:i:3 MD:Z:53^GAT47 oR:Z:1 oH:i:1 oP:i:9248 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.85 0 1 9055 255 53M3D47M * 0 0 TGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGT HHIHHHIIIIHHIGGIHIHIIIGGHHIHIGGIFFGGEICCIIHFIIFIFHEDFIIBHEEIIIEFFIIDCFHBDIBIHIHIIIDFIIIGGCIC?IAFGIII NM:i:3 MD:Z:53GAT47 oR:Z:1 oH:i:1 oP:i:9248 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.86 4 * 0 255 * * 0 0 ATCGAATGCACTCACGAAATGCTGTAACAGCTCGCGCTGCTCAAAGATTGTTCCCGCAACTGGCCAACAGCCCCTTTCAGTTGTCAAATCAACATCCGCG IHIIHIHHHHIHIIHGHHIIHIIGIIHIIIIIGHIDHEFEIEHIIHDEIHHFIIHIIHEBIDIIIIIFAGDIDGIFIIIFHHIGHIIIIIIIDHIBII8= uR:A:B oR:Z:1 oP:i:9584 oH:i:1 oS:A:F
simulated.87 0 1 8942 255 100M * 0 0 TAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGATTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATG HHHHIHHHHIGHHHIHGIGIIIIGEIIIHIHHIIIIGFFIEHDIGIDBGGIGHIFFIGIIICIBEIDHEFDIHBFICEFACE>G9HI at IIC@GI<IEIIB NM:i:1 MD:Z:47T52 oR:Z:1 oH:i:1 oP:i:9135 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.88 16 1 2593 255 100M * 0 0 GTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCTCAGAGATCGGTG IGIHDI at 8IGCHIFIGBBAD@IIGIGGFGIII7GIIFHIIHFIEIIIHICBCFIBEHDEGIBGIGEHHHIIIHIIIIIIHIHIIIIHCHIHHIIIIIHIH NM:i:1 MD:Z:87G12 oR:Z:1 oH:i:1 oP:i:2694 oS:A:R XE:i:1 XS:i:0 XI:i:0
@@ -127,7 +127,7 @@ simulated.123 0 1 2111 255 100M * 0 0 AACTTAGCGAGACGAGAGGTAAATTGTAAAATTACAATGAAC
simulated.124 4 * 0 255 * * 0 0 AGCCAATTTAATCAGACTAGGGACGCGATACTGCACGGCATGTTTCAGTTCGCTGACTACCGGAAGAGATGATTGGTTTATGTGCGCGCTATAAGTAGAC IHHHIIIIHIHIHIHIHIHEHIGIEEHGGHFIIIGHIDIIBHICIIIIIBHEI at IICIII?IIFIIFGI=IIIFEFCIGIIIII@=IHGIIDIFIIIBII uR:A:B oR:Z:2 oP:i:304 oH:i:1 oS:A:R
simulated.125 0 1 1090 255 100M * 0 0 TAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGGC HIHHHIHIHIHHGGHIHHHIIGHHIGHIIIIGGHIIIIIGGEIGCGIIIIIHIDIIIIEAEIEGFIIIDIIIH at FFFAIIIDIIIB:D?EIIB=IIII?G NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1191 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.126 16 1 5791 255 100M * 0 0 GTCGCTTCCCACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATG :@FIIIHIB9IFF at GI@A=ECDIIGDI2IBI at GIIGIBGIF=GIIIIICIGIHIFIFGFIIIIIIIFIFIIIHIGIGFGIIIIIHHIHIHHHIHHIHHHI NM:i:1 MD:Z:9T90 oR:Z:1 oH:i:2 oP:i:6377 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.127 0 1 143 255 15M3D85M * 0 0 CGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGT HIHIHIHHIGIIIHHIIHIGHGEHFIGIIHIIIIIEHFEIIHGIFGFIIHDIIIIDBIIDGIIDIFI?IGIIIIIIF<IIIAIGHIDEIBIGIBIHHHHI NM:i:3 MD:Z:15^CAG85 oR:Z:1 oH:i:1 oP:i:139 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.127 0 1 143 255 15M3D85M * 0 0 CGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGT HIHIHIHHIGIIIHHIIHIGHGEHFIGIIHIIIIIEHFEIIHGIFGFIIHDIIIIDBIIDGIIDIFI?IGIIIIIIF<IIIAIGHIDEIBIGIBIHHHHI NM:i:3 MD:Z:15CAG85 oR:Z:1 oH:i:1 oP:i:139 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.128 4 * 0 255 * * 0 0 CTGTCAGGCAGGACCTCTGTCTAAGTCATTACTTACCCGCGCGACGCAGTCAATTACTCATGCATTTGGATAAAGCAATACCCCAGCGCAACACTCCTAA IHHHIHHHIIIIIFHIHIHHGIGIIHIIIGFIIEEIIEGHDIDIFIIFIGEHIGHHHHBCIIIHE?IGEIFIGHHIDDIIIIHIEBGIAIIGCDC=AI2I uR:A:B oR:Z:1 oP:i:4252 oH:i:2 oS:A:R
simulated.129 4 * 0 255 * * 0 0 TTCCAGCTGGTCGGAATATCCGGAGTTCTTCCACTACTGGATTGTAGTGGTCCCGTCAAACTCACACATTATTTCATCTACTCTTGGCTATTATTTAATA HHHHHIIHIIIIIIIIIIIHIIHIGIGIHHIIGIIIIFHIIIEGIIIIEIIIIFIIFHIICIEGHAHICEIDIIGIGCIIAFGFGFHIIIIIIIIGAIC? uR:A:B oR:Z:1 oP:i:10001 oH:i:2 oS:A:F
simulated.130 0 1 3879 255 100M * 0 0 ATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCCGG HHIHHHHIIIIHHGGIGIIIHHHIIIHIIIIGIIIIIFHFIIHGIIHAEIIIG at HI?EIIIGIDIIAIIECIDIIIIFIIIIIBCIFIF=IIEAIICIAF NM:i:1 MD:Z:97G2 oR:Z:1 oH:i:1 oP:i:3979 oS:A:F XE:i:1 XS:i:0 XI:i:0
@@ -174,7 +174,7 @@ simulated.170 4 * 0 255 * * 0 0 ACGATAATTGGAACCAAGTAGCGGTATCAGCTCTACGAACAATCTAAG
simulated.171 4 * 0 255 * * 0 0 ATTATGAGTTCAGGACAGTGTCACTTTATAGGCGGACCCCTCAGCAGAAACATGCATCGGCAAGCCTTGGGCGGGCGCCCGAGTAGCTTAATGTACCTCC HHHHIIHHIHHIGHIIIHIIHFIIIHIGIIIIIIGIIDFIIFIDIHIIIHIICIFIBIIHIHHIHIIIGEHIEHIII at IHF@HGHIICIIHIICHBDIIB uR:A:B oR:Z:1 oP:i:5511 oH:i:1 oS:A:R
simulated.172 4 * 0 255 * * 0 0 TCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCC HHHHIIHHHHIHHGHIHHIHIHIEGIIIGIEIFHIHGIIDIIIDIEIIGFGIIGGIIIEIF at GHIIIIIIIII?IGIIFIIIIIEIDIHCIIFEFCBHFF uR:A:B oR:Z:1 oP:i:5344 oH:i:2 oS:A:F
simulated.173 0 2 540 255 100M * 0 0 GTAAGTAGTGATTAGTCTATTTACCTCTACGAATTGGAGCTCCGTCGGATCGCGGTAACGATAATAGGCTATACTGAATCGGGACTTAATTCCGGCTGTT IIHIIIIHGHFGHIIIIGIHGIIIGIIIHDHDIFIHCIHHHIHIEIIFGGDIEIIIDIIDFHHIIIIIFIDIDCIIBHF=GGID?AHIIEII:CCIBBIC NM:i:1 MD:Z:92T7 oR:Z:2 oH:i:2 oP:i:539 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.174 16 1 1929 255 85M1D15M * 0 0 CACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAA I=DIICIIED<<IBIIDAHC>ICDIIFDHDGIIIDIIII?IIIIGFIIFIIIHIIHIGCEHIIFIICIIIEIGIHIHIIIIIHIIGIIIHIHIIHIIIIH NM:i:1 MD:Z:85^A15 oR:Z:1 oH:i:1 oP:i:2031 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.174 16 1 1929 255 85M1D15M * 0 0 CACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAA I=DIICIIED<<IBIIDAHC>ICDIIFDHDGIIIDIIII?IIIIGFIIFIIIHIIHIGCEHIIFIICIIIEIGIHIHIIIIIHIIGIIIHIHIIHIIIIH NM:i:1 MD:Z:85A15 oR:Z:1 oH:i:1 oP:i:2031 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.175 4 * 0 255 * * 0 0 GTAGATCATGTGTCCGCGATGACAGTAAGTCCATTTATGGTCGCCTCTCCGATGCTAGCGGACGTAGCTTGCTCGCTCTACTTTGTGTATACTCACGATC IIIIIIIHIIHIHGHIHGIIIIGGHIIIHHIHGGIIIEIIIIFIGHIHDHBHIIHCHIIIHDFFGCEIII;HIEFDIGAIIIIIIBGAAEGGIIAIBIIE uR:A:B oR:Z:1 oP:i:719 oH:i:1 oS:A:R
simulated.176 0 1 8956 255 100M * 0 0 GTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTT IIHHHGIHIIHIHIGHIHHGGHIHFIIEIEGDIGGIIIHFIIIHIGGIGIEIGDCCIIIIIHGIGIIAGHIDIIIEICHIIFHDIIIIID>IIIIBIIC@ NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9149 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.177 0 1 7086 255 100M * 0 0 CTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATTGGTATG IIHHHHHHHHIHHIIHHGIHIIGIIIHEIGGIIHGGIFHIIHIFEIIIGHGIIIEC at IIIDGHCIIIIIEI?ADFIEH<IIIFIDHGGEIIDGDDI at BI? NM:i:1 MD:Z:93G6 oR:Z:1 oH:i:1 oP:i:7279 oS:A:F XE:i:1 XS:i:0 XI:i:0
@@ -199,7 +199,7 @@ simulated.195 0 1 4138 255 100M * 0 0 TGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGC
simulated.196 4 * 0 255 * * 0 0 GTTACGCTGGGGTATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGTCTTAGACAGAGGTCCTGCATGACAGTAAACCCC IIHIIHIIHIIGIIHGGIIGGIIFHEIGHHIGIIEIGEEIGBDIHIIIIGIIGFIEIHAFGAGABGIIIIIID?IAFIBICDHCEIFDAI;D=EIHIICG uR:A:B oR:Z:1 oP:i:4260 oH:i:2 oS:A:F
simulated.197 0 1 2257 255 100M * 0 0 ACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGTG HHIIIIHIIIIIHGHHHIIIGHIIIIIIHIHIIGIIGIGIGGHGIIHFIICIIIIGIIIEFAAGDICIIIGDAIFEEIEII?IEIIIEFI=IC?IIIDII NM:i:1 MD:Z:98C1 oR:Z:1 oH:i:2 oP:i:2455 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.198 0 1 3342 255 100M * 0 0 TTGCTCTTTTCGGAGAACCGCTATAAAACCAATTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTAA IHHHIHIHIHHIHHIGIIIIFIIHHIFHIHHIIGHIIIICIGHEIHEDIIIIGCIIHFFIIIIIDICI at IDGIHDDIIECBIIHF?ICIFFIIIIIH=II NM:i:2 MD:Z:32G66T oR:Z:1 oH:i:2 oP:i:3616 oS:A:F XE:i:1 XS:i:1 XI:i:0
-simulated.199 0 1 1980 255 34M1D66M * 0 0 CAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGA HHHIHHIHIHIIHHIHGIHIIIIIIHHGGFIIIFGGIEGIHIHICIIBIICFIDEIHICIIGIIIIIAEDHHGAIIIICH:BHICII at GIIGDI?IIFDC NM:i:1 MD:Z:34^A66 oR:Z:1 oH:i:1 oP:i:2082 oS:A:F XE:i:0 XS:i:0 XI:i:1
+simulated.199 0 1 1980 255 34M1D66M * 0 0 CAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGA HHHIHHIHIHIIHHIHGIHIIIIIIHHGGFIIIFGGIEGIHIHICIIBIICFIDEIHICIIGIIIIIAEDHHGAIIIICH:BHICII at GIIGDI?IIFDC NM:i:1 MD:Z:34A66 oR:Z:1 oH:i:1 oP:i:2082 oS:A:F XE:i:0 XS:i:0 XI:i:1
simulated.200 16 1 4008 255 100M * 0 0 TGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTC ?BCIHBIID<IIIIFDI at IIFIIIEI@DII<EICIHGIIHFIDGDIECEIG at IHHIEFEHHCDIHIHIIIDIHEIFIIIHHIFGIHIHHIHIHHHHHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:4346 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.201 4 * 0 255 * * 0 0 CACTGTGGCTGGAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTAT HIHHIHHIHIHIHHGHGHHIIEHIHEFIIEIDIIIIIGIHIFGFIDIFBHIHIDHCEGFIHIIEEICCHDBFGICIDGCGFIICIIIBDIIIIICIBDCI uR:A:B oR:Z:1 oP:i:1225 oH:i:2 oS:A:F
simulated.202 4 * 0 255 * * 0 0 AACAATCTAAGGTTAGGCTTTATTTATGACAGGACAATCCCTACTGGTCGGATGGACGATAAGCCGGAGCGCTTGCACCTAGAAGAGTGATTTTTACTTT IHHIIHIHIIIIHGHIIHIHHIHGGEIHIIIIIICIIIFIIHDIEEIFFIIIHDIGGHGIIHDIEGF at IBIAIIIFI@GFI=BIIEFEIGCIIIIBI<DI uR:A:B oR:Z:1 oP:i:3019 oH:i:1 oS:A:R
@@ -304,7 +304,7 @@ simulated.300 4 * 0 255 * * 0 0 GGCGGGCGCCCGAGTAGCTTAATGTACCAAGGCTGTCCGTCTGCAAAC
simulated.301 4 * 0 255 * * 0 0 GTGAATGCCGCGACCGTACCTAGCCTCGACGCGGATGTTGATTTGACAACTGAAAGGGGCTGTTGGCCAGTTGCGGGAACAATCTTTGAGCAGCGCGAGC IHHIIIIHHHIHGIIGIIHHIHIIIHIIIIHDIHGIIFHIIHIIFIIIBFEIIIFEIIIICHI>IFBIDIFIDEICIIGIDIBG?IIAICIECG?IIICD uR:A:B oR:Z:1 oP:i:9613 oH:i:1 oS:A:R
simulated.302 0 2 517 255 100M * 0 0 TGGCTATTCCCCCTGGTGCGCTGGTAAGTAGTGATTAGTCTATTTACCTCTACGAATTGGAGCTCCGTCGGATCGCGGTAACGATAATAGGCTATACTGA IHIHHHHIHHGIHIIGIIIIIIIIIFGGIFHHHIIIHGGFIIIIEHIEGGHFDGFGIIGIIIIIGIEDAEGIIIIIEIDIIIFDIBIAAD at HIIEDIHIE NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:516 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.303 4 * 0 255 * * 0 0 CAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCAC IIIHHIHIIHHIHHHGHIIHGIGFHIHHIGFDGIFGHIFIGIHFIIIFHGEIIEIDIIFAIAGIIIIDFIEIIIDGHDIHFFFIIIIIIII>AHIG?FIH uR:A:B oR:Z:1 oP:i:1761 oH:i:2 oS:A:F
-simulated.304 0 1 9038 255 70M3D30M * 0 0 AATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTG HHIIIHIIHIIIIHGGGGHIHGFIHIGGHGIGHGIHHIHIIGFIIIIIIEGEICCGDIEIIIIIAIHEHIFIIAIFFEFAICAIIIIEGFBIIII>I?II NM:i:3 MD:Z:70^GAT30 oR:Z:1 oH:i:1 oP:i:9231 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.304 0 1 9038 255 70M3D30M * 0 0 AATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTG HHIIIHIIHIIIIHGGGGHIHGFIHIGGHGIGHGIHHIHIIGFIIIIIIEGEICCGDIEIIIIIAIHEHIFIIAIFFEFAICAIIIIEGFBIIII>I?II NM:i:3 MD:Z:70GAT30 oR:Z:1 oH:i:1 oP:i:9231 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.305 4 * 0 255 * * 0 0 ACTGAAACATGCCGTGCAGTATCGCGTCCCTAGTCTGATTAAATTGGCTTAGCTACCTCCCAGAAGAGAGATGAGGATAAATCTCCCCGACCCGCTCCTC IHHHIIHHHHIHIHHGFIHIIIGIHHFIHIHHHHIFIIFIIFIIFIGEIIIFEAH?GFIIGBIIGEIBIHIIFIBIIBI<IIEIICIII<G>IIIIAIII uR:A:B oR:Z:2 oP:i:355 oH:i:1 oS:A:F
simulated.306 0 1 6976 255 100M * 0 0 TCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCA HIHIHHIHIHHHIHHHIGIIHFHHIHIIIGIIIFGFGIDIFIIIIIIIIHIFHIHHIHIGFIFIFIEEIDHI>DIFFIII=IFI at IAIIIEC>III=>4I NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7700 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.307 4 * 0 255 * * 0 0 TTACGTTGATACGGCTGCTTGCCGGCATACAAANGAGTTTGAAAGCGGCGGTAACCTAATCTAAGCTGGGGAAGATTCTGCCTCGAACATGCCAGAAACG IIIIHIHHHHIIIHHIIGIIIGIFIIGFHIIIIIFGFIHIGIFEFAIFGHFIGHFIDII at FEGIHDGFGIIAEIIH@FFIIIIIHGCAI>BHBIIIDIGF uR:A:B oR:Z:1 oP:i:6139 oH:i:2 oS:A:R
@@ -333,7 +333,7 @@ simulated.329 0 1 6474 255 100M * 0 0 AGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACAC
simulated.330 4 * 0 255 * * 0 0 GCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCG IIHHIHHHHHHIIIGIHHGIIHHIHGGGIIFIGIGIIIIIEFGIHEIEIBIIDIBGIIHI at IBIEIAIGCEGIIDIFFI@IGF?EHE?IG>F at EF@II?B uR:A:B oR:Z:1 oP:i:1120 oH:i:2 oS:A:F
simulated.331 0 1 9422 255 100M * 0 0 AGCTCGCGCTGCTCAAAGATTGTTCCCGCAACTGGCCAACAGCCCCTTTCAGTTGTCAAATCAACATCCGCGTCGAGGCTAGGTACGGTTGCGGCATTCA IIIIIHIIHIIIFHHIIGIGHIIGIIIIEIFDGIFHGIIHIIIIDIHFIEIIHCIIFIDDIIHIIIABEI>BDII9IFIBI<FFEFIDI.IFIIFIGCIG NM:i:1 MD:Z:89C10 oR:Z:1 oH:i:2 oP:i:10265 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.332 4 * 0 255 * * 0 0 TAGTGACCGATTCGAACCGGTCTTGCATCCGCAGGGCTGGTGGAGCTGGGTCTTAGGCGGTTCAATACACGGTCCCAGCAGGATACCTGGTACTGGTGGG IHHHHHIHIHHIHHGIIHIIIHGGIGFHIIIIIEIIDIGFIIEGHIEHFHGIEAGFFBGFGDIIGIIIIBIIIGIICIIIGHIIH at FIBFIIIIIII?IG uR:A:B oR:Z:1 oP:i:5976 oH:i:2 oS:A:R
-simulated.333 0 1 125 255 33M3D67M * 0 0 GCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGAC HIHHHIHHHHIHIHIIIIIGIIIIIGIHHIGIIIHDHDFIDFGGIIHIIFHFIHIIHFIIIFIIH>IEIIHDCI=FIGDIDIII8I>IB=@IG at IID<@A NM:i:3 MD:Z:33^CAG67 oR:Z:1 oH:i:1 oP:i:121 oS:A:F XE:i:0 XS:i:0 XI:i:3
+simulated.333 0 1 125 255 33M3D67M * 0 0 GCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGAC HIHHHIHHHHIHIHIIIIIGIIIIIGIHHIGIIIHDHDFIDFGGIIHIIFHFIHIIHFIIIFIIH>IEIIHDCI=FIGDIDIII8I>IB=@IG at IID<@A NM:i:3 MD:Z:33CAG67 oR:Z:1 oH:i:1 oP:i:121 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.334 0 1 477 255 100M * 0 0 CAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCT HIHIIIHHHIHIHIIFIIIIHIGFIEIGIIHIIHHHEIEGFHDHIDHCCIIIHHIIGIDDIGGGCHGEGIHIIIBIG?CIIIBICGII at IHIEIIIAGGI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:476 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.335 4 * 0 255 * * 0 0 TGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGCAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATG IIHIIHIIHIGHIGHIHHIGIHIIEIGFHFGGGGIFIDIIIGIIIIDGIGDFHFEIBIDHDIHFIAIIIGHII at DDIBIIEFIIFGCIIAIICI?;IIIA uR:A:B oR:Z:1 oP:i:5412 oH:i:1 oS:A:F
simulated.336 4 * 0 255 * * 0 0 ACACTTAGTGTTGTTTGCCCCGGCTGTTTTATGGCCGGACACGGACCCACGCGACTTTGTGCTAGTACAATACGTGCATGGTTTGATATCATAGGATGAC HIHHIIIHIHGIIGIHIEIFHIIFHEHFHIHGIEFIIHIDFFIHIEIHIDIIGIAGIHFGIIE?EFIIIHFIGBIIIDBFHIFIIH:IICGIHIFEADDG uR:A:B oR:Z:1 oP:i:1611 oH:i:2 oS:A:R
@@ -360,7 +360,7 @@ simulated.356 0 1 8462 255 14M1I85M * 0 0 AACCGCAGTCTTCCGAAATATCCCGTGGTCAATAGTAT
simulated.357 0 1 2074 255 100M * 0 0 TCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTCAAATGACAATGAACCTTGGGGACCTCAATTTGGTA HIIIHHIHHIHIIGIIIIIHIIHIIHIHIIIEHIIIEIIHHGFIIIIGGGIFEIIHIHHGIFFBIFDIG;GIEHIHIH?IGIIIFAGGCIIIIII??III NM:i:2 MD:Z:64G4T30 oR:Z:1 oH:i:1 oP:i:2175 oS:A:F XE:i:1 XS:i:1 XI:i:0
simulated.358 4 * 0 255 * * 0 0 ACCGACAACGGTTTGAGACCGTTCCAGCTGGTCGGAATATCCGGAGTTCTTCCACTACTGGATTGTAGTGGTCCCGTCAAACTCACACATTATTTCATCT IHHIIHHIHHHHHIIIHHGHIGIIGIGIHIIGIHIHHIIGGGIDFIIHFIFCIFIFEIFFIIIIID at DIIIIEIIAEEAIAAIIBIFDDIIIHFIIIDBE uR:A:B oR:Z:1 oP:i:9980 oH:i:2 oS:A:F
simulated.359 16 1 3752 255 100M * 0 0 CAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCG CIAIGIHBIIC at F@GE?IIIFICFIIIIIFBIBIHBBBEECGII at FIHIFIIIBIIGHHHIIIGIIIIIEIIGIHIIIIHHIHGHIIHIHIIIHHHHIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:4030 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.360 0 1 4831 255 18M1D82M * 0 0 AAAAAGATCACCTCCTTCTTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGG HIHIHIHHIIHIIIIGIGIHIIIIIIIFHIEIEGDFIIIEIIFHI=DIFFIEIIIAGFGIHD at EIFFIGE@GIHI?GAGII?;IAIIH?IEIIIIGEIIH NM:i:1 MD:Z:18^A82 oR:Z:1 oH:i:1 oP:i:4856 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.360 0 1 4831 255 18M1D82M * 0 0 AAAAAGATCACCTCCTTCTTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGG HIHIHIHHIIHIIIIGIGIHIIIIIIIFHIEIEGDFIIIEIIFHI=DIFFIEIIIAGFGIHD at EIFFIGE@GIHI?GAGII?;IAIIH?IEIIIIGEIIH NM:i:1 MD:Z:18A82 oR:Z:1 oH:i:1 oP:i:4856 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.361 0 1 7831 255 100M * 0 0 CAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGAATCGAATGCAA HIIIIIIIHIHIIHGHGIHGHGIIHGIIGHHIIIIIFGGIIIGIGDIFIGEGBIHIICIGIGGIIIIIIIAIIFBCHG;H=HIIII==IIIGHDIII at DE NM:i:1 MD:Z:89T10 oR:Z:1 oH:i:1 oP:i:8024 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.362 16 2 544 255 100M * 0 0 GTAGTGATTAGTCTATTTACCTCTACGAATTGGAGCTCCGTCGGATCGCGGTAACGATAATAGGCTATACTGAATCGGGACTTAATTCTGGCTGTTTGAA EIIII at IEIIIIIAIIICIIEDIFIIFHIHIIFIID?IIEIIAIIIFIFIFIHHFHICIFIHIFIIFIHIHFFIHIIIIIIIHIHGHIHHHHIIIHHHHI NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:543 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.363 0 1 6793 255 100M * 0 0 CGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTA IHHHIIIIHIHHIHGHIHIGHIIGEIFHIHIIGHIHFHIFDBIGEEFIIHGCHIIDHHIHIIIIIIIIHCF>IBHIIF at IIIEIII@E><IB at ICI@?F@ NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7517 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -369,7 +369,7 @@ simulated.365 0 1 8957 255 100M * 0 0 TAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAG
simulated.366 0 1 9361 255 100M * 0 0 GAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTAACAGCTCGCGCTGCTCAAAGATTGTTCCCGCAACTGGCCAA HHHIHIHHIHIHIIIHHGGGHGIIHHIGIIHIAIIHHIHGIDIIHIIIIIFF?GFEFHHCI?IIIFIICHGE<IFDIBIIIICIEIB?IIIGGEE=IAFD NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:10204 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.367 4 * 0 255 * * 0 0 TGGCCAGTTAGCGAAAGGCCCACGACGTAAAAAGCCTCCGGGGTGGTCGCGGGTGTCCGCTTCATACAAGAGTTAACGGTATTACCTTTGCAGTCTGATG HHHHHIHHHIIIHIHHHIHHHIIHIIIIEGIIIEIHGIIIIIIBIIFIIIIIDHIIDIEIGAB at IIIIDEIIIHIGIDII?GII at II>DIEGIHID?HAI uR:A:B oR:Z:1 oP:i:7297 oH:i:2 oS:A:F
simulated.368 4 * 0 255 * * 0 0 GCCCAAGGGCTGCTACTGCCCAGGACAAGCAACGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTG HIIIHIIIHIIIHIIHIIIIIIIIHHFIIIIFIHIBIIGIICICBIIHCIGCIDIII?HIIDFIEIDIIIFIDIHAIBIGII=HHGIB>ECI?IFHEIHI uR:A:B oR:Z:1 oP:i:8833 oH:i:1 oS:A:F
-simulated.369 16 1 98 255 23M3D34M3D43M * 0 0 GCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGC EFIIGDB at II9IIHEIAIHIIHFIIIID@BDCCIFIAIIGIHDHDFEFGDIIIIIIIIFIGGIGGFHIGFIIIIHIIIGIIGHIIHGIGHIHHHHHHIHI NM:i:6 MD:Z:23^ACA34^CAG43 oR:Z:1 oH:i:1 oP:i:97 oS:A:R XE:i:0 XS:i:0 XI:i:6
+simulated.369 16 1 98 255 23M3D34M3D43M * 0 0 GCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGC EFIIGDB at II9IIHEIAIHIIHFIIIID@BDCCIFIAIIGIHDHDFEFGDIIIIIIIIFIGGIGGFHIGFIIIIHIIIGIIGHIIHGIGHIHHHHHHIHI NM:i:6 MD:Z:23ACA34CAG43 oR:Z:1 oH:i:1 oP:i:97 oS:A:R XE:i:0 XS:i:0 XI:i:6
simulated.370 16 1 2359 255 100M * 0 0 AGGCTTGTCTATCTGAGTTGTCCGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAAT ?IG;H==AI<IIIEIIEIIGIG at I<DFBIIIICIIHI at FIIGHFCEHI@GAIDHIFIEHHHHEIIHHFFIIEHGGHHHHIFHIIIGHIIIIHIHHHIHIH NM:i:1 MD:Z:22T77 oR:Z:1 oH:i:1 oP:i:2460 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.371 4 * 0 255 * * 0 0 CCCGGCTGTTTTATGGCCGGACACGGACCCACGCGACTTTGTGCTAGTACAATACGTGCATGGTTTGATATCATAGGATGACATGTGGGCACTATCTTCC IIHHHHHIHHIHIHHIGIHHIIIFIIIIHGHGGGIFHIDDEGFB at FIHGFHIIBIEEBIIIGBFIIIIIEGIAEDHADGIIFIFIIIIIID?IFIGIBIF uR:A:B oR:Z:1 oP:i:1593 oH:i:2 oS:A:R
simulated.372 4 * 0 255 * * 0 0 GCTGTTTGAAGTCGAATCCGTTTTTATTCGACTCTTCTTGCATTCATCACCGGCTCATACTTGAAACTACTATGCCTAGCCGAGGTGCCAGAACTAATAA HHHHIHIHIHHHIIHIIHHFIIIIIHGIIDHIHHIHIIGIGEDIEFFIFEH at IHDHDIEIHIII;ICFEIIIBGBDIIG?IHIIHIIIF?DCIIG at IC@I uR:A:B oR:Z:2 oP:i:633 oH:i:1 oS:A:F
@@ -396,7 +396,7 @@ simulated.392 0 1 4366 255 100M * 0 0 CCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGG
simulated.393 0 1 2416 255 100M * 0 0 TAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTT IIIHIHHIHHIHIIGIHHGHHGFHIHIFHGHIIIEHHIIHFIHGIGIIDIIIIBHEIIIIDFIEIEIIIDDHCI;IG at IGEDIIIIIIIIAFGFII>EHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:2614 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.394 16 1 1594 255 100M * 0 0 TAGCACAAGGTCGCGTGGGTCCCTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTG IEFIIBDG>@IIHIF=HIF<GI=IIIFFIIIII at I@GIIIIIIBEDEIIIDIGHEIIFHIGDFHFICIIFIGIHHIIGFIGGHFHIHIHIHIIIHHHHHH NM:i:2 MD:Z:8A13G77 oR:Z:1 oH:i:1 oP:i:1696 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.395 16 1 8759 255 100M * 0 0 TCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCT >C?I<EEG;IHDIDEBDFIIGIGED>IDIEIIGCIIIIEIGIIIFDIIEIIIIFFIIIIHIGHIGIEHIGIHIHHGIGIIGGHIIIIGHIIHHIIHIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:8952 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.396 0 1 77 255 44M3D34M3D22M * 0 0 TTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCA IIHHIHHHHIIHHIHIIIIHHHEIHHIIHEIIIHIHFIIFIIEIDIEEIHIIIEIIFIABDIGDIIFIFICIGBIIIIIBIIFIFAIIIHGIIIEGBFIF NM:i:6 MD:Z:44^ACA34^CAG22 oR:Z:1 oH:i:1 oP:i:76 oS:A:F XE:i:0 XS:i:0 XI:i:6
+simulated.396 0 1 77 255 44M3D34M3D22M * 0 0 TTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCTCTAAGGGTCGGTATGATCCA IIHHIHHHHIIHHIHIIIIHHHEIHHIIHEIIIHIHFIIFIIEIDIEEIHIIIEIIFIABDIGDIIFIFICIGBIIIIIBIIFIFAIIIHGIIIEGBFIF NM:i:6 MD:Z:44ACA34CAG22 oR:Z:1 oH:i:1 oP:i:76 oS:A:F XE:i:0 XS:i:0 XI:i:6
simulated.397 0 1 5850 255 100M * 0 0 CCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGA IHIIHHHHHHHHHIGIIIGHHHIGIIHIIIIIIFIIIIIIEIGGHIFIIIIIIBEIIIIFIIDEGHBEDEGHGIIHDIFDIIFIIAI=@IDBCII?IGCI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:6436 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.398 4 * 0 255 * * 0 0 CAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAACGCTCTTAGGAAGAAGTCC HHHHHHIIHIIIIHIIIIIFGHIIGHIEDEHIIIEHIIHIHFHIFIFIIGFHGGIIHDDFHIHIIIIIF at ICEFBIHI>IGHIIB at I?;IIIF<IGAI=F uR:A:B oR:Z:1 oP:i:8784 oH:i:1 oS:A:F
simulated.399 0 1 765 255 100M * 0 0 TGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGC HHHHIHHIHIHIGGHHHIHFHIIGGHIGIFIDIIFFHIGHIHIIEFIIGCEIFIGIIIBIBIIHIIEBI at CI<EEIFIEIIEIBIIIIAHIIIIEBIEHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:764 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -415,7 +415,7 @@ simulated.411 16 1 2618 255 100M * 0 0 GTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGAC
simulated.412 16 2 428 255 100M * 0 0 GGACGCGATACTGCACGGCATGTTCCTCACCTGGTGAGCATTGGCGCATTCCATACAGCTTCTAACTCAGATAAGCACTAAGATGGCACTGGCTATTCCC CICIDIIIBAEI>IGIA=FFIIIEIFEEIIEGHCIIDFIHBIIIIIHIGIGICIGIIIGHIEFIIGIIFIIGHFHIIIIGIIIHGHHHGGHIHIHIIIHH NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:427 oS:A:R XE:i:0 XS:i:2 XI:i:0
simulated.413 4 * 0 255 * * 0 0 CGTCGCAATACTGGTAGTCAGCAGACTAGAGAATGAACACTCTGGAGTGCGCCTTACGGCTGATCTAGTGACCGATTCGAACCGGTCTTGCATCCGCAGG IIHIIHHIIHIHIGGHGGHIHIIIGIIHDIIFIIFIFGDHFFHIIIIHIHGGHIIIIIHIHIEIII>FIIIB@;GFIAGBHIIIAIGIIDIBGIIIIFAI uR:A:B oR:Z:1 oP:i:6041 oH:i:2 oS:A:R
simulated.414 4 * 0 255 * * 0 0 CCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCTCAGCCGCCATGCCGCTGTTTTTCGGT HIHHHHIHIHHIHHIIGHHHIIGEGIFGIIIIGIIHHIHGCIHHIIIHGFGGIGHEICIIEFIFAAHHCGEFDBI at IIICIIIGIBIIIIBEIB8DFHH; uR:A:B oR:Z:1 oP:i:6732 oH:i:2 oS:A:F
-simulated.415 16 1 1929 255 85M1D15M * 0 0 CACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAA AH<IDIIIIFIIIIIAIFEIDACHHIHHIIIIFIDIIIHBIGGIIIIIIIIGHFHHIIIGIIIIDIFGHIIIIIIHIIIHHIIIGHIHIIHHGIHIIHII NM:i:1 MD:Z:85^A15 oR:Z:1 oH:i:1 oP:i:2031 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.415 16 1 1929 255 85M1D15M * 0 0 CACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAA AH<IDIIIIFIIIIIAIFEIDACHHIHHIIIIFIDIIIHBIGGIIIIIIIIGHFHHIIIGIIIIDIFGHIIIIIIHIIIHHIIIGHIHIIHHGIHIIHII NM:i:1 MD:Z:85A15 oR:Z:1 oH:i:1 oP:i:2031 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.416 4 * 0 255 * * 0 0 GTTCGTCTTGCCATGATACGACGCTTCCATATTGCAGACATTGGATGGCCGCAAGTCATCCCCGCCACTAAACGGATACATAGAGCAAGTAAACTGATAA IIHIIIHIIIHIHHIHGEHHIGIGGIHIHIIFFIHHIIIIDIDFIHIIHGGGIICIIIDDGCCIIECGIIIIIIIIAIHICIIFIIHGBFFDEDIIIII@ uR:A:B oR:Z:1 oP:i:5196 oH:i:2 oS:A:R
simulated.417 0 1 5790 255 100M * 0 0 TGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTANAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACGTGAAAT HIHHIIIIIHHIHIIHIHGHHHGIIIGIGIEHHGHHIGCIIIIIGFIHCIIIFIIG at IIIFDIIIAHDCHIEIGIHFBIII@ICAACCBHIII29BIIGI NM:i:2 MD:Z:55T37T6 oR:Z:1 oH:i:2 oP:i:6376 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.418 16 1 4314 255 100M * 0 0 TCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCG GI>IIEIIIFIHF at IIHIIIBIIIHBEDDIIEHIBAIIIEIEAIIIIIIEIGIGGEIEGIDIHIGIHIIIHFIGHIFGFIFHIIGHIHHHIIHIIIIHIH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:4652 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -465,7 +465,7 @@ simulated.461 16 1 8461 255 100M * 0 0 TAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCA
simulated.462 4 * 0 255 * * 0 0 ATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGG IHIIHHIHIHGHHIIIHHHIGHHIIEFHGIHHGIGHIIEGIIIEICFAIIFHHGIIIEIIIAIIIIIIEIEBB<BCF?HBIGGIIIDI at III@CIII7GI uR:A:B oR:Z:1 oP:i:589 oH:i:1 oS:A:F
simulated.463 0 1 1860 255 100M * 0 0 ATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTG HIIIHIHIIHHIIGHHIGIHFFIIHIFHIFIIIIFEIFGDIIIIIHHGGIIHIFCIGGIIBFCHI at DIECECIIDCIIGIIEIIHGIIDIBII=DCI<@I NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:1962 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.464 16 1 4534 255 100M * 0 0 CTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGG AIE at DICI<IIIBIIHGGDAGIBFDIEHFIIGIIIIIIEDIIIEHBFIIFIFHHIIFIIIEEIFGFHIIIEGHGIIGHGIHHHHIFGIHHIHHIHHIHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4559 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.465 0 1 464 255 100M * 0 0 AGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCAGAAGCGTTTGCATCATTCGGTCGGTCCTT HHIIHHIHIHIHHFIHHHIIFGIHHHFHGDIFIIFHEGDEEI at IGIIFEIGIHIHDIIIIHBGIIF?GIHAACHGIHIIIHDBIIIDFE<ID at IH<IIII NM:i:3 MD:Z:0T69G18T10 oR:Z:1 oH:i:2 oP:i:463 oS:A:F XE:i:2 XS:i:1 XI:i:0
+simulated.465 0 1 464 255 100M * 0 0 AGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCAGAAGCGTTTGCATCATTCGGTCGGTCCTT HHIIHHIHIHIHHFIHHHIIFGIHHHFHGDIFIIFHEGDEEI at IGIIFEIGIHIHDIIIIHBGIIF?GIHAACHGIHIIIHDBIIIDFE<ID at IH<IIII NM:i:3 MD:Z:T69G18T10 oR:Z:1 oH:i:2 oP:i:463 oS:A:F XE:i:2 XS:i:1 XI:i:0
simulated.466 4 * 0 255 * * 0 0 GACACCTACCCTGAAGGGCTATCCGGGGTGCATCATGCGTAAGTTTTCTGAACAGAGAAGGTCTGAGAAGGGCCAGGCGGACACCTGCCTTGAAGTGACG IIHHHHIIGHHIGIHHIGIHIIIHGHGHIIEFIIIIGDIIIIHEEIIIEEGEEIIIIIHGIGI at IH?IGBHHIHIHCIIEBHI at IIIIEHFFIEIIIIEG uR:A:B oR:Z:1 oP:i:824 oH:i:1 oS:A:R
simulated.467 16 1 9342 255 100M * 0 0 TGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTAACAGCTCGCGCTGCTCAAAGAT D>IDF@?IGIIEIFIIFGGIGIEFII?IIIDEIGHCFIIHHDGIFBFHIIIFHIIIIIIIEIIHFFHHIIHIGHDIIFHHIHHGGIHGHIIHHIIHIHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:10185 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.468 4 * 0 255 * * 0 0 GGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTAGGAACTAGGGTTTGCAGACGGACAGCCTTG IHHIHIIIHHIIIHIHHIIFIHGIIEIGIIHGHEFFEGIEGIFHIEIIIDGIIBIBIIHDIIIHICEIE?IIFICHIH>;DCIBCCEIII at IGIIIIAFB uR:A:B oR:Z:1 oP:i:5228 oH:i:1 oS:A:F
@@ -527,7 +527,7 @@ simulated.523 16 1 1308 255 100M * 0 0 TTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAG
simulated.524 4 * 0 255 * * 0 0 CGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGTCTGTTCAGAAAACTTACGCATGATGCACCCCGGAT IHIIIIHHIGGHFIIIHHIIGIIGIFIHIFFIIIFIGEEIIEIGIIHIIIGIGEIBIIIIGDFIIEFEGECBGFIIFIFBCEFIBIIHHIIHIEIIICIC uR:A:B oR:Z:1 oP:i:932 oH:i:1 oS:A:F
simulated.525 0 1 1208 255 39M1I60M * 0 0 TGCCCCGATGCCTCGCCTGACAGCGCTGCCATTCCGTGGATCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAA IHHHHIHHGHIIHHIHIHIFIIIIIEIIHGIHGIIFHIIDHIDHHIFHEDIEHIIIEIDIFIIIEC=IIEFHIIIAIIIIAEIIIGIIIFBIF at FE>HIB NM:i:2 MD:Z:25G73 oR:Z:1 oH:i:1 oP:i:1309 oS:A:F XE:i:1 XS:i:0 XI:i:1
simulated.526 0 1 4348 255 100M * 0 0 TAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATT HHHHHIIIIIHIIIIIFHIFHHIIIIHIGEHIIEDIFHHICEIIIIFIIIIIIHFHIIGIHFHADIDIIICF at GIBI7DBC=BIIIIIF?>III?E:FCI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:4373 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.527 16 1 1916 255 100M * 0 0 CTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAA IGIII at DBIH>GCIBDIIGIEGFBIDIHCEIIEIIAHGFIAIEGIHIIFDGIEDIHIIEIIGDIIIHEFFIIIIIFIIIIFIIIHIHHIIIHHHHHIHII NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:1 oP:i:2018 oS:A:R XE:i:1 XS:i:0 XI:i:1
+simulated.527 16 1 1916 255 100M * 0 0 CTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAA IGIII at DBIH>GCIBDIIGIEGFBIDIHCEIIEIIAHGFIAIEGIHIIFDGIEDIHIIEIIGDIIIHEFFIIIIIFIIIIFIIIHIHHIIIHHHHHIHII NM:i:1 MD:Z:T99 oR:Z:1 oH:i:1 oP:i:2018 oS:A:R XE:i:1 XS:i:0 XI:i:1
simulated.528 16 1 6672 255 100M * 0 0 ATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTG IHIE<IIIDG?IIIIIIIHI>H at CGEIG@@IDIFIIBDICIFGHIIHIIFGEFEIIIDGIEIHIGHHIGGIGGGIGHIIHIHGGIHIGHHIHHHHIIHHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:6865 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.529 0 1 6306 255 100M * 0 0 AGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGGAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTAGGTCTTGAGCGCTCCGT IHIIIIIHHHIIHIHGHHHFIHHIIIIIHGIIGEIDGHHIDFDIHIIHIEIIDFCIHEDDIFHIIIH;>BBIIFAAIIIGIIGII?IIBIHCFGDGIACD NM:i:2 MD:Z:40C41T17 oR:Z:1 oH:i:2 oP:i:6952 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.530 16 1 5266 255 100M * 0 0 CCTTCTCGGAACCAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCC IIG)IBIDIGDI=IDCCIIEAIIAIHIIIIEF at IDGIGFIIAFDGDCIIIFGIFGHIGHIIDIDHIGHIGIIGGGIIIGIIIIHHIIIHGIIIIHHIIHH NM:i:2 MD:Z:3G8T87 oR:Z:1 oH:i:2 oP:i:5697 oS:A:R XE:i:2 XS:i:1 XI:i:0
@@ -561,7 +561,7 @@ simulated.557 0 1 9291 255 100M * 0 0 GTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGCTCGT
simulated.558 4 * 0 255 * * 0 0 TATTCAGAGTTATACACTACTGTTCTTCTGAAATTTATCCCGCGCCATACTGAGATTCGCAGCTAAAGGCAGGGGGCTATCCCGTAATCGATCCACTAGG IHIIHHHHHIIIGIHIIGIGHIFHFHHIFCGIFGICHIEIHICHIEFC?IDIIGIIIEICEICE at IFFEI@ICGIHIAHHFGIGFIDFIFAHIEHIIEFI uR:A:B oR:Z:1 oP:i:8507 oH:i:2 oS:A:R
simulated.559 4 * 0 255 * * 0 0 TTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATAACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCC HIIHIHHHIIHIHHHIHIIIIIHIEIIIGGHIEIGIFICFIIIIFFIIHIGGHFH at DIGIDFHIIIIEIIDIIBHHBIFHHGE?FG<IGI at II@IIG=II uR:A:B oR:Z:1 oP:i:6025 oH:i:1 oS:A:F
simulated.560 4 * 0 255 * * 0 0 AACACTTCTGAAGGTCCTCCAGCACTTCAGACCTTGACCTGCGCGTGATTGTCCATGAAACACTCGGGCACCACATTGATCGACACTACCGGGTGGAGCC IIIIIIIIIIGGIIIIGGHHHHIHIFIIIIDEIIIIHIIIIFCDIIIIEECGIIGIHHGIIIIGIIII at I>IICDGDGCIIECIHIGDIHIIHBI at IIII uR:A:B oR:Z:1 oP:i:8292 oH:i:2 oS:A:R
-simulated.561 16 1 3740 255 54M1D46M * 0 0 GTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAAC AICI;DIA at GBIIIIDGIBIBEECEIIIHICDIIEDIIIHFIIDIIHIIHFEHBDIIHGIIHFIFIGEEGGHGGHIHIIGIIHHIIFIHIHIHIIHHHIH NM:i:1 MD:Z:54^T46 oR:Z:1 oH:i:1 oP:i:3841 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.561 16 1 3740 255 54M1D46M * 0 0 GTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAAC AICI;DIA at GBIIIIDGIBIBEECEIIIHICDIIEDIIIHFIIDIIHIIHFEHBDIIHGIIHFIFIGEEGGHGGHIHIIGIIHHIIFIHIHIHIIHHHIH NM:i:1 MD:Z:54T46 oR:Z:1 oH:i:1 oP:i:3841 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.562 0 1 6303 255 100M * 0 0 GTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTC HIHHHHHHIHIHIHIIHIHHIIHHFIHHIIGIGDHIIIIIIIIDFIFIIFIGIIGAGDICICCBIH at IIHIAIFDCII=FFBFIDFCIIICHIDH at EICI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:6949 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.563 4 * 0 255 * * 0 0 CCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTGGTCCAATTGGCGGGTTACTGGCGCGAACATCCGAAGGCTCGTTAGCTG HIHIHIHIGHHHGIGIIHIHGIIGIFIIHGIIGIIGIIIIDIHIIEIFHIHBIIGHFFIDIBIFIDICDEIIIIDEIEFDBIII3AIICEIIIIFIGIE> uR:A:B oR:Z:1 oP:i:4209 oH:i:1 oS:A:F
simulated.564 0 1 8086 255 100M * 0 0 TAGAGTCACTAACCGTGCTCGGAATTCCGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCA HIHHHIHIHIHHHIHIGGIIIHIHHHIFCIHIGHIFICCEIIHBIEIFIGIGDFIIIIIIIEIECI:IIGBIGGHHIIIEGCGEE=IIBFIIFC:HIIGF NM:i:1 MD:Z:27T72 oR:Z:1 oH:i:1 oP:i:8279 oS:A:F XE:i:1 XS:i:0 XI:i:0
@@ -584,7 +584,7 @@ simulated.580 0 1 2875 255 100M * 0 0 TATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGC
simulated.581 16 1 833 255 100M * 0 0 ACACATGATCTACCAGGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACGTTCTCTGTTCACAAAACTTACGCATGATGCACCCCGGATAG @ICFIIIFG<GIGEI8IIIFIIHFGHIA at IHIBCIIICFFIDIGEDFFIHIEIIIIIICAEGFIEGIFGGHIIIHHHGGHIIHIIHHHIGIHHHHHIHHH NM:i:3 MD:Z:15T42C11T29 oR:Z:1 oH:i:2 oP:i:832 oS:A:R XE:i:2 XS:i:1 XI:i:0
simulated.582 4 * 0 255 * * 0 0 TGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGTCTGTTCAGAAAACTTACGCATGA HIHHHHIIHHHHHIIGIIHHIGGIIHIHIIIFIGIIIIGGIGHGIIGDGIGGDFCIIIFHIIIBIG at GIFIHBIIHHBGIHIIDIIIII>IIIII<IDD@ uR:A:B oR:Z:1 oP:i:920 oH:i:1 oS:A:F
simulated.583 0 1 6923 255 100M * 0 0 CCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTG IIIIHHIIHHHHIGIIHHHIIHHHHHHIGGIIHIGGEHIBDHIIDHHHFIEIIHIIFIEHGCCII?DFEIIBHAII at FIIFGCIBIEIBHIDHGFIIFIG NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7647 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.584 16 1 7751 255 100M * 0 0 AGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAAT >EBDFEIIFGIIIDICIIIIEECHIHFFFIFDA at IIGIHCIIIFGIIIIIIDIIIIGIIFGGIIHGIEGIIIGHIIFGHGIGIHIIHHHHHIHHHIIHHI NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:1 oP:i:7944 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.584 16 1 7751 255 100M * 0 0 AGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAAT >EBDFEIIFGIIIDICIIIIEECHIHFFFIFDA at IIGIHCIIIFGIIIIIIDIIIIGIIFGGIIHGIEGIIIGHIIFGHGIGIHIIHHHHHIHHHIIHHI NM:i:1 MD:Z:T99 oR:Z:1 oH:i:1 oP:i:7944 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.585 4 * 0 255 * * 0 0 CGTACCTAGCCTCGACGCGGATGTTGATTTGACAACTGAAAGGGGCTGTTGGCCAGTTGCGGGAACAATCTTTGAGCAGCGCGAGCTGTTACAGCATATC IHIIHIIIHHIIGIIIHGIIIIGIIIHIIIGIGEIDIIHGFHIGIEIHHIHIIGIFIHIIF?FIGEHIGIIDIBBIIDIIIIBADBIIIGIII at G@>HII uR:A:B oR:Z:1 oP:i:9599 oH:i:1 oS:A:R
simulated.586 0 1 7401 255 100M * 0 0 GTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGA IHIIHGIIIHHIHIHGHHGGHIIHIFHIIHIGHHHGHGIIHFIIIIIHIGIDDGGHAIEG?HGAGHIHIHHEI?II>DEIE<IIFEIAB>CHIIDGHIH= NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:8125 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.587 16 2 190 255 100M * 0 0 TGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATT IGIHI;FHI?EHAIIFIIIGIHI at DIDIIC@IIAIIICHIIIHIFIDIIDEIIIHIGIGHIIIGIIFIIIIDHHDFIIGGGIIIHIHHIHHHIHIHHHHH NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:189 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -634,8 +634,8 @@ simulated.630 4 * 0 255 * * 0 0 AACACTCGGGCACCACATTGATCGACACTACCGGGTGGAGCCTCCCTT
simulated.631 4 * 0 255 * * 0 0 TCAGTATGGCGCGGGATAAATTTCAGAAGAACAGTAGTGTCTAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGG HHIHIHHIHHIIHHIHIGGIEHHIHEFHHFHFEGGGFFIDDHFGEDA at DEIIFDFAIHDIGHII?IEEDDCHGIFIIEEIIEII<CIGG;HIIIFIGIIC uR:A:B oR:Z:1 oP:i:8554 oH:i:2 oS:A:F
simulated.632 4 * 0 255 * * 0 0 TACCTTAGTGTTGTTTGCCCCGGCTGTTTTATGGCCGGACACGGACCCACGCGACTTTGTGCACAAGCCGGGCCAACGCACTATGGTCAGCTTATGTACC HHIIHIIHHHHIIIIHIIHIHGIIHGHIIIIHIIIIDIBHG at IIIGHIIIIIIIICGIGGHIEIEACIFB<IIAHDB at FIGIG@CEI?IHIID:EE<E?H uR:A:B oR:Z:1 oP:i:1720 oH:i:2 oS:A:R
simulated.633 4 * 0 255 * * 0 0 AGGTGCCAGAACTAATAATCGGACGGTGGTTTTGTCAGTGTCTATGGCCCCATGCATGCAGATGATCCCTTATGTGCCAAAAACGGGTACCCTCTTCTTG IHHIHHHIIHHHIIIIFIIHIIGFIIIHIIIIHHIFHIIIIGEFHIIHIFFIIIHIIIBICIGBHFHIDICI?IIFFIHEDIIHIFCIIIEGFGIA?HII uR:A:B oR:Z:2 oP:i:715 oH:i:1 oS:A:F
-simulated.634 16 1 43 255 78M3D22M * 0 0 TTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGT IDFIIIIIGGIEIIAEIBCIFIIFHCIIIIEIII?IGIIIIBIIFICIGGIIHIFAHIIDIIHIHFHIHFHIHIGDHHHIIHIIIIIIIIHHIIHHIHIH NM:i:3 MD:Z:78^ACA22 oR:Z:1 oH:i:1 oP:i:42 oS:A:R XE:i:0 XS:i:0 XI:i:3
-simulated.635 16 1 1942 255 72M1D28M * 0 0 CATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAAGATCTCAAGCACTATGATCAG GGIIH>ABHGIIIAIDIIFHIF<DFIGFIIIIFICHICFDHIFFIIIDDGIFHEHGIGIIIEFGIFIIHIIIEHGIIHEIIIIIIHGGIIHIHIHHIHIH NM:i:2 MD:Z:72^A6G21 oR:Z:1 oH:i:1 oP:i:2044 oS:A:R XE:i:1 XS:i:0 XI:i:1
+simulated.634 16 1 43 255 78M3D22M * 0 0 TTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGGGCATATCGTAAGTGATTTCGT IDFIIIIIGGIEIIAEIBCIFIIFHCIIIIEIII?IGIIIIBIIFICIGGIIHIFAHIIDIIHIHFHIHFHIHIGDHHHIIHIIIIIIIIHHIIHHIHIH NM:i:3 MD:Z:78ACA22 oR:Z:1 oH:i:1 oP:i:42 oS:A:R XE:i:0 XS:i:0 XI:i:3
+simulated.635 16 1 1942 255 72M1D28M * 0 0 CATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAAGATCTCAAGCACTATGATCAG GGIIH>ABHGIIIAIDIIFHIF<DFIGFIIIIFICHICFDHIFFIIIDDGIFHEHGIGIIIEFGIFIIHIIIEHGIIHEIIIIIIHGGIIHIHIHHIHIH NM:i:2 MD:Z:72A6G21 oR:Z:1 oH:i:1 oP:i:2044 oS:A:R XE:i:1 XS:i:0 XI:i:1
simulated.636 4 * 0 255 * * 0 0 ATTGCAGACATTGGATGGCCGCAAGTCATCCCCGCCACTAAACGGATACATAGAGCAAGTAAACTGATAATAGGTGAATGAAGTAGGTGATCTTTTTGTC IHIHIIIIIHHIIIGIIHHIIHGGHIIEIIEEFHHIHIHIDHEDIHIFEFIGDIIIIEIIIIIFHIIHIICIHIGGEIDBIAIIEIHFIIIIIFIEIE<G uR:A:B oR:Z:1 oP:i:5166 oH:i:2 oS:A:R
simulated.637 0 2 77 255 100M * 0 0 ACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTG HHIIIIHGIIIIGHHHIHHHHIGIGHGIFIHIHGIFFHIGGHIIIFIHIIEGHIIDGFIIEIIAEIIIIHIEIIIE?IFBIIHIGGIIIDICIIHIIBHI NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:76 oS:A:F XE:i:0 XS:i:0 XI:i:6
simulated.638 0 2 121 255 100M * 0 0 GTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTC HHIIHIGHHHIIIHHHIIHIIHIHIHGIIGHIIIGIIFCHFIHGIIIHIIIIEG?I?IIIIIGIIDIGIHIBIIFIIEIIEIIICIIFIIIIHEIHI?:F NM:i:0 MD:Z:100 oR:Z:2 oH:i:2 oP:i:120 oS:A:F XE:i:0 XS:i:0 XI:i:6
@@ -767,7 +767,7 @@ simulated.763 4 * 0 255 * * 0 0 AGCCACAGCGCGGTAACGTTGATGTACGATGGCTTATGTCTTACATGC
simulated.764 16 1 4489 255 100M * 0 0 CCCGTGTCCCGGTGGGGTAGCTTCAACCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGC @III3:AIIGIIIFDFHIEIIH>III2GFCIAIIIFDDIIFIIFIIIIIIIBGFIIHDFIIAIIGGEICIIFIIIFHHHGIHHGFHIHHIHHHIIIHIIH NM:i:2 MD:Z:5T20T73 oR:Z:1 oH:i:1 oP:i:4514 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.765 0 1 2 255 100M * 0 0 GGTGTGTCGGCCCTATCCCTTGCGCTTACAGACTTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAAAGAGAGCTTGCCGCTGAATGGGAATATCGCCG IIIHIIIHHHHHIHHIHIIIIHIIIFFGIFIIGHIGIIEIFFIIGHIGFHIEIGHIIBCIHIIICEGAIDIGIEIIEIIIHIICIIE at IIBI*GD;<@B8 NM:i:2 MD:Z:68C23C7 oR:Z:1 oH:i:2 oP:i:1 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.766 4 * 0 255 * * 0 0 TTACTCCATGCGATGGGACCCAGTCAGCTTGCTCGGACAGTAATGCACCGCAAGTCATCCCCGCCACTAAACGGATACATAGAGCAAGTAAACTGATAAT HHHHIHIHHGGHIHFHHGHHGGGIIIHHIGGIGIGGIIIIHFIIHGIICGDD at GEIIBIIIIIIGGEGIIIFIHICIGDI9C=E>DBIEIIIIIIHIFHH uR:A:B oR:Z:1 oP:i:5358 oH:i:2 oS:A:R
-simulated.767 16 1 9085 255 23M3D77M * 0 0 TTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGC HEIIIIIIA<HGAAF>HII at II?I>=?III=GBEAHIEGHEIIIHGI at IIFIFIIIIHHIGIIIFGIIIIIIGIGIIHIIIIIIHHIIHHHIHIIIHHHI NM:i:3 MD:Z:23^GAT77 oR:Z:1 oH:i:1 oP:i:9278 oS:A:R XE:i:0 XS:i:0 XI:i:3
+simulated.767 16 1 9085 255 23M3D77M * 0 0 TTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGC HEIIIIIIA<HGAAF>HII at II?I>=?III=GBEAHIEGHEIIIHGI at IIFIFIIIIHHIGIIIFGIIIIIIGIGIIHIIIIIIHHIIHHHIHIIIHHHI NM:i:3 MD:Z:23GAT77 oR:Z:1 oH:i:1 oP:i:9278 oS:A:R XE:i:0 XS:i:0 XI:i:3
simulated.768 4 * 0 255 * * 0 0 CTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGAACCAGAATGCCTTCACTCAAGCAGGTCGAT HIHHHHIHIIIIHFHHGGGGIHIGIHIIIIFFIGGFIIIIDIIIIEIGIIHEEIIGIIIHIIIIHDCBAIDIIFGIIIC?EBIEIIGI at IIF>IIIIIGI uR:A:B oR:Z:1 oP:i:8362 oH:i:2 oS:A:F
simulated.769 4 * 0 255 * * 0 0 GCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCTCGCTAAGACGATGNTAATACGTG HIHIIIHHHIIHHGHHGIHHFHIEHFIHIHIIIIIIHFHIHIIIGFHIIICHGIDGIHEFDIEIIIIIFI at G>BBIFHIEII at DIIFFIF.I?CDIGGEG uR:A:B oR:Z:1 oP:i:8909 oH:i:1 oS:A:F
simulated.770 4 * 0 255 * * 0 0 CGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTCG HHIIIIIIHIIIHHIIHHEIFGGIIGHIIIEHFIHHIFGGFCIIGGIIIIIIIIFHGHDF>IIIIDIICHAIIHIFCBEFFBIIEFGCI at IGIHI@G>HI uR:A:B oR:Z:1 oP:i:5390 oH:i:1 oS:A:F
@@ -875,7 +875,7 @@ simulated.871 16 1 1806 255 100M * 0 0 CAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCA
simulated.872 0 1 7501 255 100M * 0 0 TGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATGCTAT IIIHIIIIHHHHGGHIIGHHIGIHHIGIIIIHFIIIIHEEIIGIGEIFCIIIIIDDCIBIIIHIIIIGIHICIIDAHIIEIEIIF<HEIIIHIIG1GCIF NM:i:1 MD:Z:95T4 oR:Z:1 oH:i:1 oP:i:7694 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.873 16 1 8612 255 100M * 0 0 TAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAG DBICHCIAFGD?=HIIIIIICIIDDIFEI>AIFIIIBIIIIIHIIGEIIGIGIEIIGIHHFIGIHHIHHHIIIIDHIHEIIGGHHHHHIIHIIIIIIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:9300 oS:A:R XE:i:0 XS:i:0 XI:i:3
simulated.874 4 * 0 255 * * 0 0 CAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAA HIHHIHHIHIIHHIHHHHIGHHHIIIGIIIHHEIFFIHIGFEEIEHIGIICIFEIIIIIIIGGII?GGIIFIIIGDIAIF at IIIIIIIIIGE@ACBEHG= uR:A:B oR:Z:1 oP:i:1694 oH:i:2 oS:A:F
-simulated.875 16 1 1591 255 100M * 0 0 CACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCG 0=IIIIIIIFII:IHFI?IIIIFEGF?IBIIIIIFGIIIFIECEFBHIGGHGBDIIHIIGIIGIIGGIEIIGHHIIIFIEHIIIIHHIFHHIIHHHHHIH NM:i:1 MD:Z:0T99 oR:Z:1 oH:i:1 oP:i:1693 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.875 16 1 1591 255 100M * 0 0 CACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCG 0=IIIIIIIFII:IHFI?IIIIFEGF?IBIIIIIFGIIIFIECEFBHIGGHGBDIIHIIGIIGIIGGIEIIGHHIIIFIEHIIIIHHIFHHIIHHHHHIH NM:i:1 MD:Z:T99 oR:Z:1 oH:i:1 oP:i:1693 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.876 0 1 4436 255 100M * 0 0 CCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCTT IHIHIIHHHIGHHIHGIIIGIHIIIIGDGIIIHGGFFDIHIIIHIIIIHDIIIEIIHIGFGIDI>AIIGIIFACIEIIIHIEFDDHICIHIIIIIIIIEI NM:i:1 MD:Z:98C1 oR:Z:1 oH:i:2 oP:i:4774 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.877 0 1 8895 255 100M * 0 0 TATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCC IIIIHHIIIIIIIGHIHHIIHHIIIIFGIGIIIIIHBIIIIIFIEIEIHIIIIFIHIIIGDIICGIHI at IBIIIHIFDII=IIIFFIIDIIIIIEDGIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9088 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.878 0 1 3410 255 100M * 0 0 AGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAA HHIHIIHGGGHHIIHIIIIHHIHFIGFIFFGIHHIEGFHGIIFIFEIIIIAECGIIIIHIGEHIHIH=DIFICIHIGEIICIIHEG>BDI>CIHIHIGFH NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:3511 oS:A:F XE:i:0 XS:i:0 XI:i:0
@@ -886,7 +886,7 @@ simulated.882 4 * 0 255 * * 0 0 AAATGATCGGGTGTATAGGGATACACGTTATAGGGATCGTGTCGCACT
simulated.883 4 * 0 255 * * 0 0 CAAACCGATGTACGCAGCTAATGCCCAGCCTAAACACGCTTTAGCTAGTCTGTATACGTCGGCTTCATGCACTAGCATGGTTTTATAGACATCCAGGCAC IHHIIHHIIHHIIIIGHIHHFHIIHHIIIGIIIHFIFIGGHIDIIHIDIIGGFIGCIEGIIEFDFIIAIAIEIGFI9IGIIEII>IHIIEEIIIE?IHIH uR:A:B oR:Z:1 oP:i:1125 oH:i:2 oS:A:R
simulated.884 0 1 5161 255 100M * 0 0 CTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGC HHIHIIIGHIIGIHGHHGIIGHIIHEIDIHFHIGIIEHIGIFIIHIIIHIIIIFGGIICIGEDDIIIAGEGIDIIIIDHI>HIIII at HI<IGCIF at GIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5186 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.885 4 * 0 255 * * 0 0 GTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTTTTGAAACTAGAGTGCG IIIHHHHHHHIHIHGIIHIHIIGIIGFEGHIFHHIGIIIFEHEHEIIIIIFIAHIIDFFII at IIIIHIBIIDIDAGIFFIIEDDHIAIIIIIIICIED:I uR:A:B oR:Z:1 oP:i:2909 oH:i:1 oS:A:F
-simulated.886 16 1 3716 255 78M1D22M * 0 0 ATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGA >AIIIIHHIFIHGIIIEGIIIHHEIFC<IICDGCIIIGEEGDGHFBIIIIGGFHFEFIIGIFDIIIGIIIIIFIGIHGIIIGGIIIIIHHIHHIIIHHHI NM:i:1 MD:Z:78^T22 oR:Z:1 oH:i:1 oP:i:3817 oS:A:R XE:i:0 XS:i:0 XI:i:1
+simulated.886 16 1 3716 255 78M1D22M * 0 0 ATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGA >AIIIIHHIFIHGIIIEGIIIHHEIFC<IICDGCIIIGEEGDGHFBIIIIGGFHFEFIIGIFDIIIGIIIIIFIGIHGIIIGGIIIIIHHIHHIIIHHHI NM:i:1 MD:Z:78T22 oR:Z:1 oH:i:1 oP:i:3817 oS:A:R XE:i:0 XS:i:0 XI:i:1
simulated.887 4 * 0 255 * * 0 0 CGTTGCTTGTCCTGGGCAGTAGCAGCCCTTGGGCCCAATCCTTTAAGGGCTGGCCCCGACAACCAACTATTGCGGCAAGTTTGACCGAAAGCCCTGATGG IHIIIIHHHHHGIHGGIFHIIHIIIIIHGHIIEIHDFIIDGIIG?GIIDIAIEFIGFFGGFHIIIICEIIHEDCICIAIIIIIH>IIIIIIBIBIII>IF uR:A:B oR:Z:1 oP:i:8767 oH:i:1 oS:A:R
simulated.888 0 2 431 255 100M * 0 0 CGCGATACTGCACGGCATGTTCCTCAGCTGGTGAGCATTGGCGCATTCCATACAGCTTCTAACTCAGATAAGCACTAAGATTGCACTGGCTATTCCCCCT HHHHIHHHHHHHIGHIHIIGIHIIIH at FGIHIIEEIGHGIEIIHHHFIIHDFIDGIIIIHIIHIIHIIIFIGIHFIGH=EG8IDIHIIBIIICAIGIIBG NM:i:2 MD:Z:26C54G18 oR:Z:2 oH:i:2 oP:i:430 oS:A:F XE:i:2 XS:i:2 XI:i:0
simulated.889 16 1 2624 255 100M * 0 0 GCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGAT IICCHDFAIIE>CIIIII=>FAACII>IHIBIHEGEIIGIIBIIIIEEIIBFBEDIIIGEIIFEFGGIFIFGHEIIIHFGIGIIHIIIIGHIIHIIIIII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:2898 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -913,7 +913,7 @@ simulated.909 0 1 9693 255 100M * 0 0 CTGGGATAACCCATGATTCTTCGTACGGGTGTGTAAAGAAGT
simulated.910 16 1 6820 255 100M * 0 0 ATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTGTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGC C8IIIIBCIHIIFH at HEAFCGIDFIIIIEEDEGDDIHEEIIIIEFHIIFIF>IIGIFFIGHIIIIIGIIIHGGGHIHIGHHIIIFIHIHIHHIHIIHHHH NM:i:1 MD:Z:51C48 oR:Z:1 oH:i:1 oP:i:7013 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.911 0 1 6498 255 100M * 0 0 GAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTC IHIHIIHHHHHIIHIIHIIGGIIIIIIIIIFIIFHIIFGIIIGHHIFIFDHIIIDIIIIIIIIIGIIIIDHCIIIIECG>FHHCH at CHI:@DIGEIFFHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:7144 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.912 4 * 0 255 * * 0 0 AGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGTCCCGGCT IIIIHHHIHHHGHHIHIIHHIIGIHGIFIHGHIIIFHFFHIHIFFIICFHGIAHHCIGFEB??@IIFHCEFIIIH?IFIFHFIIFHIEIII=BBI<IIII uR:A:B oR:Z:1 oP:i:1655 oH:i:2 oS:A:F
-simulated.913 0 1 1957 255 57M1D43M * 0 0 CTGGTATAGGAGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAAT HIHIHIHGHIGIIIIIHIHIHGHHIFGIFGGHDGHGHIGHIIFHIGDEEIDIHIIIEIIEGHAAGCHGIIHIIIFIIEHIIEIIFI=DC>IIEDBIBCGB NM:i:2 MD:Z:10G46^A43 oR:Z:1 oH:i:1 oP:i:2059 oS:A:F XE:i:1 XS:i:0 XI:i:1
+simulated.913 0 1 1957 255 57M1D43M * 0 0 CTGGTATAGGAGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAAT HIHIHIHGHIGIIIIIHIHIHGHHIFGIFGGHDGHGHIGHIIFHIGDEEIDIHIIIEIIEGHAAGCHGIIHIIIFIIEHIIEIIFI=DC>IIEDBIBCGB NM:i:2 MD:Z:10G46A43 oR:Z:1 oH:i:1 oP:i:2059 oS:A:F XE:i:1 XS:i:0 XI:i:1
simulated.914 16 1 7207 255 100M * 0 0 GTCTCCTGGCGTGGGCATCAACACAAGCATTTGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAG CD at FIHEDH<H=GBIIHAHFIHIFEIIEIIGAIFHDHIHFFIEICHIIBFIIGHFIHGIHIFFIFEGIHIHIFIIFIGIFGIHFGIHIGIGGHHIHHIHI NM:i:1 MD:Z:31C68 oR:Z:1 oH:i:2 oP:i:7931 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.915 0 1 8536 255 100M * 0 0 GAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGAC HHHHHHIIHHHIIHGHIIHIHGFIHGIIHIEHEIIFGHHIIIIHIIGHFBFIIIHIIIHIFI?IDIEFGCDCIIIIFGIGGIFHIDIIBGIFFI at EBIIA NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:9224 oS:A:F XE:i:0 XS:i:0 XI:i:3
simulated.916 16 1 5867 255 100M * 0 0 CGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATACGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCC IIII at G@;CEFIIAB>IIIFIBIBDI at AII?IIIGIEEIIGIIHIGGEIIHIIEIIIHIIIIIGDHGGEIFIHFIIHGIIHFIHHHIIIHHIHHHHIIII NM:i:1 MD:Z:43T56 oR:Z:1 oH:i:2 oP:i:6453 oS:A:R XE:i:1 XS:i:0 XI:i:0
@@ -947,7 +947,7 @@ simulated.943 0 1 6557 255 100M * 0 0 GCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCA
simulated.944 16 1 5626 255 100M * 0 0 GCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGC DIFIFDIIIIIII>HIIIHII>I?ADIDIIIEIIIIGIEIDIEIIF?HFIGIHCIIHFEGFEIIIIEIIHFIIFIIIIIHHHIHIIHHIHIHIIIHHHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:5743 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.945 4 * 0 255 * * 0 0 TGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTC HIHHIIIIIHIIIIIGIIGHHIGHIIIHIEIGIFIGIIEHHIDIEIGIIIDIHIIHF at IIIAFG?IGIIIIDIEFCHIGI at IGIBIGICIIAI?9ID;DI uR:A:B oR:Z:1 oP:i:8783 oH:i:2 oS:A:F
simulated.946 0 2 42 255 100M * 0 0 CGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGTG HHIHIIHHHIIHIIHGFIIHIIIIIIGFIGIIIIFIIHIIHFGGGIHDIIEFFIIIFBEIIIFIGHIFIHIIBEIIIIGIIIGIHIIIDCIIIIIIGA>I NM:i:1 MD:Z:98G1 oR:Z:2 oH:i:2 oP:i:41 oS:A:F XE:i:1 XS:i:0 XI:i:3
-simulated.947 0 1 1425 255 65M1D35M * 0 0 TTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCC HIIHHHHGIIHHHIIHIIGIIIHIFHFIDIHIIIIGIIIIIHGIEIFIEIIICCIHFFGCDIEIIA=IIIIFIIIHHGGIICD at EIIIICICE<@BFIIB NM:i:1 MD:Z:65^A35 oR:Z:1 oH:i:2 oP:i:1478 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.947 0 1 1425 255 65M1D35M * 0 0 TTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCC HIIHHHHGIIHHHIIHIIGIIIHIFHFIDIHIIIIGIIIIIHGIEIFIEIIICCIHFFGCDIEIIA=IIIIFIIIHHGGIICD at EIIIICICE<@BFIIB NM:i:1 MD:Z:65A35 oR:Z:1 oH:i:2 oP:i:1478 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.948 16 2 288 255 100M * 0 0 TTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACAAATCATCTCTTCCGGTAGTCAGCGATCTGAAGCGGGTCGGGGAGATTTATCTTCATC EI<IGIIAIIHCDIIFGEIFCFIIIIIIIAGEIIIIEIHGIFEIIIEFFFHIIIHGIIIIIIGIIIGHIEGFGIHHHIHGHHGIGGHHIIHGIHHIIIHH NM:i:3 MD:Z:42C25A25C5 oR:Z:2 oH:i:2 oP:i:287 oS:A:R XE:i:3 XS:i:0 XI:i:0
simulated.949 4 * 0 255 * * 0 0 AAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGTGCATTA HHIIHHGHGHHIIIIIHGIHIFGHIHIHDFFIHEFHGGFGIIHIIGIIIGIIIHGIIIIACIIIIIIIEIIIIIIHFIIDIDIIIIDII?IIHIIICFGG uR:A:B oR:Z:1 oP:i:5318 oH:i:2 oS:A:F
simulated.950 16 1 9425 255 100M * 0 0 TCGCGCTGCTCAAAGATTGTTCCCGCAACTGGCCAACAGCCCCTTTCAGTTGTCAAATCAACATCCGCGTCGAGGCTAGGTACGGTCGCGGCATTCACCC IIHIIAI>IEI<BIIIIGIIGIIIGIFIIIIIGIDIGIDIH<HIIHIIGEFIIGDCIIEHGHIFIGIIIIIHHIIIHIHGGIHHHIIHIIIIHHHIIHII NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:10268 oS:A:R XE:i:0 XS:i:0 XI:i:0
@@ -970,7 +970,7 @@ simulated.966 0 1 7461 255 100M * 0 0 ATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATG
simulated.967 16 1 2221 255 100M * 0 0 ATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGA IIDIIIG=IIDDHI?DIIIIE=DDDICDCCCIGEAHFHIHIGHFIEHBCFFIIIGIIGIIHIFHFIIIHHHIIFHHIIIIIHHGFHHHHIHHHIIIIIHI NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:2419 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.968 16 1 1442 255 100M * 0 0 CTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGG IIIIHFDIGIIIIIEIIDIHG?IIGGICIIFGIEIICIIFIICIIIIDIFIIIHCIIGIDEEHGHIHHIHIHGHIHGHFIGHHIGIHIGIIHHIHHIHHH NM:i:0 MD:Z:100 oR:Z:1 oH:i:2 oP:i:1495 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.969 16 1 6558 255 100M * 0 0 CGCAAAGCANCCGGCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAG IIFEII=IBIGHI8IC<D?GII>EIIFDAIID:GIHFECIDDIIIGIHIIFIIEGIEIIIIHGCIEHIGIIIHHIIHHIIHIIIIGHGIIHHHHIHIHHH NM:i:2 MD:Z:9A3C86 oR:Z:1 oH:i:2 oP:i:7204 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.970 16 1 9063 255 45M3D55M * 0 0 CACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAAC IAGEIAAFIIH=II>ACID<IHIEIIFIEBIBGIIIAEGHIIIIIDCIHICEDEGIGEHIDBIGIIIEIIFIIIGIIGHHFHHGIIGHIHIHHIIHIHHI NM:i:3 MD:Z:45^GAT55 oR:Z:1 oH:i:1 oP:i:9256 oS:A:R XE:i:0 XS:i:0 XI:i:3
+simulated.970 16 1 9063 255 45M3D55M * 0 0 CACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAAC IAGEIAAFIIH=II>ACID<IHIEIIFIEBIBGIIIAEGHIIIIIDCIHICEDEGIGEHIDBIGIIIEIIFIIIGIIGHHFHHGIIGHIHIHHIIHIHHI NM:i:3 MD:Z:45GAT55 oR:Z:1 oH:i:1 oP:i:9256 oS:A:R XE:i:0 XS:i:0 XI:i:3
simulated.971 0 1 2443 255 100M * 0 0 TATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCTTCT HIIIHHIHHGIGIIIIHHHIHGHHIIEIHIGGGGIIHHIFGEIFIIIIIEECFIHIIAFIIIIBIG at HIIBIIIIEICFGIG>H at HGIII@FFFDG?IIH NM:i:1 MD:Z:96G3 oR:Z:1 oH:i:2 oP:i:2641 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.972 0 1 9224 255 100M * 0 0 GAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGA HHHHIHIIIIHIHIHHIGHIIIIIGGIFIGGGIIFFHIGIEFFHIFIEDEDIIIGIIFII at IIDIGIFFHIAIGHIDIIIBIIEIIIIEFIIIFEBI?IC NM:i:0 MD:Z:100 oR:Z:1 oH:i:1 oP:i:9414 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.973 0 1 2354 255 100M * 0 0 GCGNGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACC HHIIIHHIHHIHIHIGIHGIHGIIHIEFIGGHHIIIIGIGGIEIHFFIGIHHIFIFIGGDIGIIIIFI?EDD at IIGI=IDIF at I@IAAAIIHGIID>GIC NM:i:1 MD:Z:3T96 oR:Z:1 oH:i:1 oP:i:2455 oS:A:F XE:i:1 XS:i:0 XI:i:0
diff --git a/apps/mason2/tests/simulator.out8.sam b/apps/mason2/tests/simulator.out8.sam
index 2e32350..a7acaaa 100644
--- a/apps/mason2/tests/simulator.out8.sam
+++ b/apps/mason2/tests/simulator.out8.sam
@@ -1,751 +1,751 @@
@HD VN:1.4
@SQ SN:1 LN:10000
@SQ SN:2 LN:1000
-simulated.1 0 1 5649 255 19M1I57M1I105M1I40M * 0 0 TTCTGGCATGTTCGAGGCACGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGACTTCAAACTCATTTGTATGCCGGACAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATACTAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGT I)6;I(7759G'3;9I)9>&1H'56F'I<+&58;G'824I(7I(F&8H'6I(9,7I,7I.':5;9I.&78446I'I'&8H':877I'57894I(966I)249878II3+&F'68I):8858I(I(886I(8966I(67H'=54>78504I'H'48I'I(4I(858:5<3887I(4;69I';8;&9666;78:F&87877:G'38F'I(5:9I)5:6 [...]
+simulated.1 0 1 5649 255 19M1I57M1I105M1I40M * 0 0 TTCTGGCATGTTCGAGGCACGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGACTTCAAACTCATTTGTATGCCGGACAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATACTAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGT I)6;I(7759G'3;9I)9>&1H'56F'I<+&58;G'824I(7I(F&8H'6I(9,7I,7I.':5;9I.&78446I'I'&8H':877I'57894I(966I)249878II3+&F'68I):8858I(I(886I(8966I(67H'=54>78504I'H'48I'I(4I(858:5<3887I(4;69I';8;&9666;78:F&87877:G'38F'I(5:9I)5:6 [...]
simulated.2 0 1 211 255 37M1I111M1I68M * 0 0 GCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGTCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGTATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGT </:9I(=I(6H'I*56:I)I)6577=I'II;/)&59;&I)I(64F'I(I1(I)54I(:7:0I1'1;65I(:98776G';;F'8H'155:H';I(I'F&I(I at -'9:86I'59I.&;315186I(<9;I(84:6;9I9*&7=<64E&I.&(;99I(3G'9F'8I1(969:8<98IH0)&9I'I)7697I1(I3(8:6;787776G'H'I/'9695:86< NM:i:2 MD [...]
-simulated.3 0 1 7197 255 84M1I26M1D17M1D5M1D62M * 0 0 TGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGTCCATCCTATTTTAACATAGTTATTAGCCATGTTCGACCGGGTACCTGTGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCA 183:894697<9;7I(7I(874I3(;;77I(9B5I'798I(5I)F'6:5H'874;8968746;I;+&6;D&6F'483?;615I)&H'98I*6:I<,&I)94944I*;G';9I,8;;I(496I*I1(85I,887D:99>I)9868I'::5;4:65I(66929648;I2(27887I)48:76;4I9+&765H'1I(7 NM:i:4 MD:Z:110^C17^C5^G62 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.4 0 1 4614 255 31M1D108M1I54M * 0 0 ACTTTGTGTTGGCAATCAGGTGACGACGAAGTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATCGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGG 7:I-&6:9I)I)7F&7:<I(6692A59:G'6I,3G'7699I'76I)7938?I0'=91397I(7I'=954<I/'I);;5I*89645;I-&749I(I,867 at 3I(5686I1(5787I(:7I(78II2*&I1(H':F'6;57%H'44:6I(9564:;68II2*&</98I(599/G'9;=I=,':I(6<4G'5:I)I( NM:i:2 MD:Z:31^T162 oR:Z:1 oH:i:1 oP:i:4613 oS:A:F XE:i: [...]
-simulated.5 16 1 1642 255 51M1D149M * 0 0 AAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGG &-I<(I58:4'F048?'G3&E5'I;'H77890(I0:6:5)I4778568>(IC'0I(I4(I88(I(I747:7598(I94=9984748=>678(I69<6'G98'/I:64902&*9I'I4:7;6(I989836;(I>91'H(I6&+9I8:<4'H(I7:'.I(I5'I56=76972649;87+I36479(I66'/I'0I(I:52(I NM:i:1 MD:Z:51^G149 oR:Z:1 oH:i:1 oP:i:1641 oS:A [...]
-simulated.6 16 1 8850 255 16M1D173M * 0 0 GCAAGGGCTTAAATGATACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAA 77'G'0I3'I(3I5<9D6:581'I99'G7'/I&-I(I3997;6899)I3)I;:(I;636889075>6&+:I6:'I*I(I(I(I8;885:4;6(I9'I(I8:(I;(I858)I(I9;'I6'.I;2657(I08<;45:5:5(2I9(I7(I9864=36<<67'G68<&-I849(I986;:9(I997(I)I8)I NM:i:1 MD:Z:16^T173 oR:Z:1 oH:i:1 oP:i:8849 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.3 0 1 7197 255 84M1I26M1D17M1D5M1D62M * 0 0 TGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGTCCATCCTATTTTAACATAGTTATTAGCCATGTTCGACCGGGTACCTGTGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCA 183:894697<9;7I(7I(874I3(;;77I(9B5I'798I(5I)F'6:5H'874;8968746;I;+&6;D&6F'483?;615I)&H'98I*6:I<,&I)94944I*;G';9I,8;;I(496I*I1(85I,887D:99>I)9868I'::5;4:65I(66929648;I2(27887I)48:76;4I9+&765H'1I(7 NM:i:4 MD:Z:110C17C5G62 oR:Z:1 oH:i:1 oP:i:719 [...]
+simulated.4 0 1 4614 255 31M1D108M1I54M * 0 0 ACTTTGTGTTGGCAATCAGGTGACGACGAAGTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATCGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGG 7:I-&6:9I)I)7F&7:<I(6692A59:G'6I,3G'7699I'76I)7938?I0'=91397I(7I'=954<I/'I);;5I*89645;I-&749I(I,867 at 3I(5686I1(5787I(:7I(78II2*&I1(H':F'6;57%H'44:6I(9564:;68II2*&</98I(599/G'9;=I=,':I(6<4G'5:I)I( NM:i:2 MD:Z:31T162 oR:Z:1 oH:i:1 oP:i:4613 oS:A:F XE:i:2 [...]
+simulated.5 16 1 1642 255 51M1D149M * 0 0 AAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGG &-I<(I58:4'F048?'G3&E5'I;'H77890(I0:6:5)I4778568>(IC'0I(I4(I88(I(I747:7598(I94=9984748=>678(I69<6'G98'/I:64902&*9I'I4:7;6(I989836;(I>91'H(I6&+9I8:<4'H(I7:'.I(I5'I56=76972649;87+I36479(I66'/I'0I(I:52(I NM:i:1 MD:Z:51G149 oR:Z:1 oH:i:1 oP:i:1641 oS:A: [...]
+simulated.6 16 1 8850 255 16M1D173M * 0 0 GCAAGGGCTTAAATGATACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAA 77'G'0I3'I(3I5<9D6:581'I99'G7'/I&-I(I3997;6899)I3)I;:(I;636889075>6&+:I6:'I*I(I(I(I8;885:4;6(I9'I(I8:(I;(I858)I(I9;'I6'.I;2657(I08<;45:5:5(2I9(I7(I9864=36<<67'G68<&-I849(I986;:9(I997(I)I8)I NM:i:1 MD:Z:16T173 oR:Z:1 oH:i:1 oP:i:8849 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.7 16 1 796 255 174M * 0 0 CAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGA 64<567942769655489'0I5:5<9<26:5?(I963946<48629;49(I99:8 at 36764(I:&E'I35)I8<9(I6(I6'H(1I(I68:995(I(I48866(I532'-?I8)I845;53543:;9',>I(I8566'/I(I;8(2I4;'H49;67718;:24796<:76(I14 NM:i:0 MD:Z:174 oR:Z:1 oH:i:1 oP:i:795 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.8 16 1 6040 255 147M1I53M * 0 0 ATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGACTGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCC 85'H'H::'G942'0I:7687;996718967(I73:;:9&.I7(I785>067'G8(I725(I7487&*2II6&+:I767&E;:9'0I(I578764886;5:'F4',=I'/I69964:8(I>796(I23'/I868&.I>4995:9779&:99:8/66<(I86<'H487(I07&F8'0I390/98(I76;=6665998087(I NM:i:1 MD:Z:200 oR:Z:1 oH:i:1 oP:i:6039 oS:A:R [...]
simulated.9 0 1 2314 255 171M * 0 0 TTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAG I1(I(95I)I(49:6I;+&6:7I(;85I1(98I0'6H'758:528;I(8I(8984:6869:6I)=::8:213<-69II1)&90I(I.'I)57 at 4I(I0'E&I)5787I'I0'I/';67I(:0I(9=I*6771768I(7I1(:I)6<I)828I(A5947:8F'79<69I)4/ NM:i:0 MD:Z:171 oR:Z:1 oH:i:1 oP:i:2313 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.10 16 1 2471 255 13M1I17M1I27M1D82M1I21M1I68M * 0 0 CAGCCGACAGCCACGTGAATCGCGTGATACAGTTGCCTTGGAATCTTGGCTACATTCGGTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGACTGGCAGTGTAGGAGCGACTAGTATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAG 864'I8593<'I1&9<A'G:8:2;:756;74&'H:'H'H(I'I79(I'H976:3(I8(ID9&.I7942896<3:886;433'F43(I5)I9<8<:698456<)I6(I8&*2II:83'G57565;35'/I(I66744:<(I8'6(I258699<(I:63478::8&<&*2II78)I7'1I=7)I:669725:<;(I=67 [...]
+simulated.10 16 1 2471 255 13M1I17M1I27M1D82M1I21M1I68M * 0 0 CAGCCGACAGCCACGTGAATCGCGTGATACAGTTGCCTTGGAATCTTGGCTACATTCGGTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGACTGGCAGTGTAGGAGCGACTAGTATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAG 864'I8593<'I1&9<A'G:8:2;:756;74&'H:'H'H(I'I79(I'H976:3(I8(ID9&.I7942896<3:886;433'F43(I5)I9<8<:698456<)I6(I8&*2II:83'G57565;35'/I(I66744:<(I8'6(I258699<(I:63478::8&<&*2II78)I7'1I=7)I:669725:<;(I=67 [...]
simulated.11 0 1 5077 255 190M * 0 0 TGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTC 488I(86I(3=3:I(77754:565I(=71;6I(4<4H'95I(F'4I/'3I(:67377II9.)&65>;275888I(8;<7I3(;75I(;I(3;:8I):6<3I:+&:I)I.'697I(781I'E&55I(I'I1(8;9I1'I)I)65675448?768I.'344I(5H'I*8I):56;I)<I(:77997918686 NM:i:0 MD:Z:190 oR:Z:1 oH:i:1 oP:i:5076 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.12 16 1 7650 255 201M * 0 0 TCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAAT 7(I9&-I'H58:5775:98;(I;=6*I63'0I3>641'/I97:'G:2(I3<83:6'H(I(I3:'I<:(I(I8::66(I9:<(I939298(I'I(I:17)I438:676(I(I'I67'0I:7:&*9I4*I(1I'H'I2:89(I86883)I73&,I5482&*3II99'H&-I2926638(I7<;697776'G753&-I94(2I6 NM:i:0 MD:Z:201 oR:Z:1 oH:i:1 oP:i:7649 oS:A:R XE: [...]
simulated.13 16 1 7403 255 14M1I26M1I152M * 0 0 AGCCTTGTGTGAGTAGCGAGATGCCCACCATCAAGCCCCACTAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCA ;;(I'F64838477%64787586&-I8'H:98+I8'-?I;8'8445474(I)I76(I(I89>116'/I(2I=665389(I65'H5(1I)I(I66(I)I899649367(2I578?'H&.I9<'/I'H&.I74)I(I&E(I747899)I88'G+I8;94&F;689;'G8'H8'I'I6=6(I779(I56)I5'I(I= NM:i:2 MD:Z:192 oR:Z:1 oH:i:1 oP:i:7402 oS:A:R XE:i:2 [...]
-simulated.14 16 1 4521 255 26M1D177M * 0 0 GAGTGGGTAATGCCTTCGCACTGGTCACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTT 7:64&.I4(I97'I(I584-97(I6:B50:1C5><(3I4'I7896474(I;377564(I(I:<'I6(1I6666'H78855672758(I'0I777&-I:97)I*I8'H98:'H77477198)I>'0I6(I;46;(I4:'G59389'/I7:848<&F4*I86865'0I'G86;'I672646'1I627'I'I76666(I455>(1I NM:i:1 MD:Z:26^A177 oR:Z:1 oH:i:1 oP:i:45 [...]
-simulated.15 0 1 549 255 97M1D88M * 0 0 ATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGT 7I(:77:7I)9I'I(37948/75I/'7:793I0'59::=;6I(743<9::I-&78I0'3I(;4369456H'6;48667;H'89I(:5F'358G'<68II5,'H'66>I/'6:>0I*I':I.&7;7759;4<;I(=679;73:854I(894968765I(534I(5;0I(=5I1';I(55I(:6696 NM:i:1 MD:Z:97^C88 oR:Z:1 oH:i:1 oP:i:548 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.16 16 1 5812 255 38M1D59M1I9M1D16M1D71M * 0 0 CTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATAGTGCTCCCTTAAATCGGGTATAAAATATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTT 773:>87'I6:59'I7<3;;874357'H:76:44(I83D(I78<(I6683471398698'I67)I5*I08(I4'0I79'H'/I72'0I5857(I769&::48'.I)I)5I56'0I487&+;I9C&E'I(I29266779:'I88;7(I6&E9'G;(I;'0I79(I(I5577=7)I49:36<07(1I;'G'H5&.I NM:i:4 MD:Z:38^C68^A16^A71 oR:Z:1 oH:i:1 oP:i: [...]
+simulated.14 16 1 4521 255 26M1D177M * 0 0 GAGTGGGTAATGCCTTCGCACTGGTCACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTT 7:64&.I4(I97'I(I584-97(I6:B50:1C5><(3I4'I7896474(I;377564(I(I:<'I6(1I6666'H78855672758(I'0I777&-I:97)I*I8'H98:'H77477198)I>'0I6(I;46;(I4:'G59389'/I7:848<&F4*I86865'0I'G86;'I672646'1I627'I'I76666(I455>(1I NM:i:1 MD:Z:26A177 oR:Z:1 oH:i:1 oP:i:452 [...]
+simulated.15 0 1 549 255 97M1D88M * 0 0 ATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGT 7I(:77:7I)9I'I(37948/75I/'7:793I0'59::=;6I(743<9::I-&78I0'3I(;4369456H'6;48667;H'89I(:5F'358G'<68II5,'H'66>I/'6:>0I*I':I.&7;7759;4<;I(=679;73:854I(894968765I(534I(5;0I(=5I1';I(55I(:6696 NM:i:1 MD:Z:97C88 oR:Z:1 oH:i:1 oP:i:548 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.16 16 1 5812 255 38M1D59M1I9M1D16M1D71M * 0 0 CTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATAGTGCTCCCTTAAATCGGGTATAAAATATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTT 773:>87'I6:59'I7<3;;874357'H:76:44(I83D(I78<(I6683471398698'I67)I5*I08(I4'0I79'H'/I72'0I5857(I769&::48'.I)I)5I56'0I487&+;I9C&E'I(I29266779:'I88;7(I6&E9'G;(I;'0I79(I(I5577=7)I49:36<07(1I;'G'H5&.I NM:i:4 MD:Z:38C68A16A71 oR:Z:1 oH:i:1 oP:i:581 [...]
simulated.17 0 1 7420 255 233M * 0 0 AGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCC 565=7I-&8I'96<I'<I>,'37?222848I(I(:8I(D&67=:74I-&I/'0537856F&47I*:I/'I)I(8:I'I(6;;565947I-&B64:G'I/'67I/'I(I.':5I'F'I(I(68;746I(6;I'G'4:<=I(386:5H'6I'1I(I(;77I(586E&76I)=I(I'6I(65986;85<7G'==;97297I(966;I(8I(I(57:9=::8697 [...]
simulated.18 0 1 3822 255 6M1I143M1I37M1I21M * 0 0 CGTCTCTTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTACGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCGTGACAGTAAACCCCGCCACAC 787=;:F'I1'I'9511F&7;7I)I1(I(6I):7755675<7I(8I(6I(6938866I(3I)5<43;86II;/)&86:89788I(I(>I(72496788956:I3(71:7I(94:4E&68I/'6<I(I/'66:89:736I)I)793<5615+0746<I1'2H'85F'6958H'=6:8779I)7I(6;G'&:=76577I/'I9*&;F&7;5; NM:i:3 MD:Z:207 oR: [...]
-simulated.19 0 1 3611 255 127M1D97M * 0 0 CGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTG 9I.'5I*=:I)?7I(;I8*&<77488H'7897I)77I(5467957I)978I'1H'I8*&87I':I(=95I'I/'I9*&6:98<I(I(572I'<64:878I'<:G'1586I(I)H'9;I1(<5I(I.&I,I(=I)6/I/'5669.23:8I2(:<I-&H'7I1(68I(3698762F&<I)<759I.&93I(I);87I(37654755:::4877;7.567I-&I'78 [...]
+simulated.19 0 1 3611 255 127M1D97M * 0 0 CGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTG 9I.'5I*=:I)?7I(;I8*&<77488H'7897I)77I(5467957I)978I'1H'I8*&87I':I(=95I'I/'I9*&6:98<I(I(572I'<64:878I'<:G'1586I(I)H'9;I1(<5I(I.&I,I(=I)6/I/'5669.23:8I2(:<I-&H'7I1(68I(3698762F&<I)<759I.&93I(I);87I(37654755:::4877;7.567I-&I'78 [...]
simulated.20 16 1 5315 255 188M * 0 0 ACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCG 5;97'0I:6(1I5'/I(I'I;(I4(I5;41885<&-I06<2:4;&*7I4'G8(I3<8(1I:85965<670'G;7'G8597985'I:D8(1I36387&F8&E8'1I9(I62&)0II5<969'F6;767?75)I;8&F047397)I255=65485)I(I598(I:'G95<4::(I(I<)I9249='I598 NM:i:0 MD:Z:188 oR:Z:1 oH:i:1 oP:i:5314 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.21 0 1 3154 255 81M1D15M1D100M1I22M * 0 0 AGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAGAACTGGGTGATTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTACGGAGAACCGCTATAAAACCAA 4=73I)4587:867;I'988I'79257I(77I)7:3I'I/'::I)I(8E&7<5I3(75I0'H'F&I'G'79IA-(87:5F'IE/(9I(:<I/'6:7I7*I(:68I(8H'I>,':79I(79995I(I)7I(8I(5:I0'87I)754689:;37=I';I(I)6I>,'8I(I(8<7:I(68I(I)757I.'53:8I=,'&:I(:8I(I(78:43I<,'I(I( [...]
+simulated.21 0 1 3154 255 81M1D15M1D100M1I22M * 0 0 AGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAGAACTGGGTGATTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTACGGAGAACCGCTATAAAACCAA 4=73I)4587:867;I'988I'79257I(77I)7:3I'I/'::I)I(8E&7<5I3(75I0'H'F&I'G'79IA-(87:5F'IE/(9I(:<I/'6:7I7*I(:68I(8H'I>,':79I(79995I(I)7I(8I(5:I0'87I)754689:;37=I';I(I)6I>,'8I(I(8<7:I(68I(I)757I.'53:8I=,'&:I(:8I(I(78:43I<,'I(I( [...]
simulated.22 16 1 5757 255 2M1I195M * 0 0 GGCCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTC *I&E7(I3::97(I&E16:'G7:78'H94(I49498:796(I'H86'H(I2'I609:5<3966(I88;8(I89:59:545:<)I0:;555'H38)I'G?@6(I878788;268999'I:7(I9'G54(I9'/I19(I(1I55'.I8778'I75;8;75&.I(I',>I:9&-I=84',>I5*I(I(I'H8577757;:5 NM:i:1 MD:Z:197 oR:Z:1 oH:i:1 oP:i:5756 oS:A:R XE:i: [...]
-simulated.23 16 1 5867 255 75M1D77M1D28M * 0 0 CGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAGCCCCCCTATGATAGACATCCGGCGT ;7248)I52)I5)I:8(I9'0I:5(I(2I2<'/I597>(I::558?8(3I'I',=I64'1I767',>I8(I(I(ID;9=<55:8;'I7;47(I:(I4'G5(I:'0I72(I'I;977 at 5'I<7789:47'1I5(I)I;'.I956<657',=I6,I5&).9II9898<5A:5678(I'H96< NM:i:2 MD:Z:75^T77^A28 oR:Z:1 oH:i:1 oP:i:5866 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.24 0 1 1771 255 51M1I111M1D36M * 0 0 CGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATAGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGT 76H'5=5I)I*;I?-';89:I(I(72I-&H'=I(8679::98>998=3I)6&;897I)5:I.'I0'I(574I<,&796:I)9G'I(I'5F&?7;I)8919I(I)76;:45<7B88H'I)982H'I1(4I(:<7I)<6586I(;7H'I(928I)648I'69947D7I(0I(7=5I(8<7I(:9963A53I)7?6:I9+&8 NM:i:2 MD:Z:162^C36 oR:Z:1 oH:i:1 oP:i:1770 o [...]
-simulated.25 0 1 7112 255 7M1D204M * 0 0 ATCGGATGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGT 64;I'96I,4I(I/'8:I(2 at I(I'4I.'I/'494I)7I(<5:6H'3:I(88:949966=I(I.&7I1(7305I(I'A58:;6=8<69:48=<:0:<3I(8H'777I/'4788I(487G'28;I(5I'I(7<9I*4:<1469=::25I;+&87H'6H'388?7875I)I(;4I)>8I:+&I(46676I(3I(65I.'75:G'357I(I.'9 NM:i:1 MD:Z:7^G204 oR:Z:1 o [...]
+simulated.23 16 1 5867 255 75M1D77M1D28M * 0 0 CGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAGCCCCCCTATGATAGACATCCGGCGT ;7248)I52)I5)I:8(I9'0I:5(I(2I2<'/I597>(I::558?8(3I'I',=I64'1I767',>I8(I(I(ID;9=<55:8;'I7;47(I:(I4'G5(I:'0I72(I'I;977 at 5'I<7789:47'1I5(I)I;'.I956<657',=I6,I5&).9II9898<5A:5678(I'H96< NM:i:2 MD:Z:75T77A28 oR:Z:1 oH:i:1 oP:i:5866 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.24 0 1 1771 255 51M1I111M1D36M * 0 0 CGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATAGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGT 76H'5=5I)I*;I?-';89:I(I(72I-&H'=I(8679::98>998=3I)6&;897I)5:I.'I0'I(574I<,&796:I)9G'I(I'5F&?7;I)8919I(I)76;:45<7B88H'I)982H'I1(4I(:<7I)<6586I(;7H'I(928I)648I'69947D7I(0I(7=5I(8<7I(:9963A53I)7?6:I9+&8 NM:i:2 MD:Z:162C36 oR:Z:1 oH:i:1 oP:i:1770 oS [...]
+simulated.25 0 1 7112 255 7M1D204M * 0 0 ATCGGATGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGT 64;I'96I,4I(I/'8:I(2 at I(I'4I.'I/'494I)7I(<5:6H'3:I(88:949966=I(I.&7I1(7305I(I'A58:;6=8<69:48=<:0:<3I(8H'777I/'4788I(487G'28;I(5I'I(7<9I*4:<1469=::25I;+&87H'6H'388?7875I)I(;4I)>8I:+&I(46676I(3I(65I.'75:G'357I(I.'9 NM:i:1 MD:Z:7G204 oR:Z:1 oH [...]
simulated.26 0 1 650 255 52M1I182M * 0 0 CCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGTCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTT I(I*08:I/'9975I'I)8I/'878:6:<:58G';95;5:/9:6:I(<7585'67:6I(416I'944I(:6I.'4I(9:I(;9:63;8;781I'668=I(;9I'396<7I)H';662I(I(:I.&I0'I(97::I/'5447;95I7*&4;68768<16993<86;I.'>28>296785;I'34;9158:7664586G'588=5:95:4I)5F'I' [...]
simulated.27 16 1 1050 255 80M1I116M * 0 0 CCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGACTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTG )I5(I546:;(I)I7477;88(I67&,<I;5&E64:98(2I8'H87&.I54'I777=9<88<;7<1(I'/I<7456<7(I,89)I97479789&*8I(I6:::;64649838(IA*I:-2;9:2566494=67879&+9I'I;:623658)I<8'H7*I<5&+:I77;<(I5>;)I7595;:6(I74(I6(I(I58; NM:i:1 MD:Z:196 oR:Z:1 oH:i:1 oP:i:1049 oS:A:R XE:i:1 [...]
simulated.28 0 1 996 255 11M1I42M1I3M1I141M * 0 0 AATGGCCCTGACTGCCTTTAATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCTACCTAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGGCCTA I(5I(I1(<85(67I(I/'F'8I0'625;I(6I.&<996;:I/'296;9;9I(;'8I(&4I)99:7>I(I*/798575G':7I9+&79I(6448<I-&9F&64I.'16F&45::=46;;926>G'I.&3:;940<I'<9I'36:07866I<,'I(9775:297;;697G'9G'73:217557=7<5762488I;+&I(<8 NM:i:3 MD:Z:197 oR:Z:1 oH:i:1 oP:i:995 o [...]
-simulated.29 16 1 5936 255 50M1D119M1D27M * 0 0 AATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTCGGGGTCACCATGTTTCCTAGCT 'H(I'G(I7=8578664'I;=78'I8)I5'G7'G6(2I77)I'H65:766D623:7787&.I='G)I;&.I86;8:55',=I5(1I6%(-8II3<4997:29480'G&E78(I086'1I7675844;867733>&F974:5:'.I6'G6866866&E4'I825'I2578(/EI7&+:I?76(I556'0I)I::;<< NM:i:2 MD:Z:50^T119^T27 oR:Z:1 oH:i:1 oP:i:5935 oS [...]
-simulated.30 16 1 4809 255 8M1D77M1D110M1D13M * 0 0 GTTAAAGCAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGTCCCATCGCAT 4)I'/I77,I;86&-I'H7(I&*2II9376:(I:'H)I8=(I8:'H68&F186:>'/I89(I8;557789763'I=)6I:89'I9*7I82587(I54)I'H78'I(I86;88:9(I1::'I(I?3:;81589977(I3(I:69=(I638)I7'1I*I'I3:54'I9&D67424(I64::8(I28;6(I.;56:?7,I9'/I5:;4656 NM:i:3 MD:Z:8^A77^G110 [...]
+simulated.29 16 1 5936 255 50M1D119M1D27M * 0 0 AATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTCGGGGTCACCATGTTTCCTAGCT 'H(I'G(I7=8578664'I;=78'I8)I5'G7'G6(2I77)I'H65:766D623:7787&.I='G)I;&.I86;8:55',=I5(1I6%(-8II3<4997:29480'G&E78(I086'1I7675844;867733>&F974:5:'.I6'G6866866&E4'I825'I2578(/EI7&+:I?76(I556'0I)I::;<< NM:i:2 MD:Z:50T119T27 oR:Z:1 oH:i:1 oP:i:5935 oS:A [...]
+simulated.30 16 1 4809 255 8M1D77M1D110M1D13M * 0 0 GTTAAAGCAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGTCCCATCGCAT 4)I'/I77,I;86&-I'H7(I&*2II9376:(I:'H)I8=(I8:'H68&F186:>'/I89(I8;557789763'I=)6I:89'I9*7I82587(I54)I'H78'I(I86;88:9(I1::'I(I?3:;81589977(I3(I:69=(I638)I7'1I*I'I3:54'I9&D67424(I64::8(I28;6(I.;56:?7,I9'/I5:;4656 NM:i:3 MD:Z:8A77G110G1 [...]
simulated.31 16 1 5807 255 83M1I115M * 0 0 GGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATCGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGA )I39759996 at 6'G6973'H;78<3:<5<78'I;5:76;'G39'G(I87<)I8?;;97;665?96(I:6'G5)I24*I6'.I>&6(I'/I>5(1I<578(I487:<46(1I(I&+9I7>'.I7:4&*9I8(I)I(I'I585<9;584(I8659'H6(I1(I<'G9'.I45'I(I988647&E84547287&.I9'I(I< NM:i:1 MD:Z:198 oR:Z:1 oH:i:1 oP:i:5806 oS:A:R XE [...]
simulated.32 0 1 9091 255 201M * 0 0 GGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTG I(I/'597H'9I(647=74:;I(H'9;8594I+5I(:I)I(16H'6H'84I(57I)6;7>I(92;4788557H'I(I.':7I)628I)1I.&<38869:25;:92759:637I(7779:746I/'2I)?;52I(I'H'86:I):I'I/'2I(I':86I(9I.&I(<I)4;5876<5G'I);>1?I(I(8:G'758I'9:8: NM:i:0 MD:Z:201 oR:Z:1 oH:i:1 oP:i:9090 oS:A:F XE:i [...]
simulated.33 0 1 1161 255 6M1I172M * 0 0 AAGCCGTACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGC I)<I(7'38/6776495;9:9832=I:+&I'97367;29I(79E&6I)58I<,'7<95H'6:3H'665387:I(95G':I(H';5I(:886I-&:5I(H'8I:+&I(8I(897/88I(24I)656I(588I(6537I(I.&9I'6I.'I/'8I.'9I)9H'157G'I at -'867<79:84 NM:i:1 MD:Z:178 oR:Z:1 oH:i:1 oP:i:1160 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.34 16 1 7105 255 201M1I7M * 0 0 GGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCAGTCTATTTTAACATAGTTATTACGCCCATG (I08'H3866'I74'0I5&E&,I94(I84'H(I:'0I&-I:74(I;'H;696'G7;'I;7496959;6'H'/I4'/I8:63(I(I54=8857:6490 at 768=6658(I9&D>78(1I3889)I83:(I6:3(I7)I'I765'I85864885<988',>I38)I5(I::7<>/97(I(I9*3D98&+:I)I57846'G3(I7&6&,I468 NM:i:3 MD:Z:179T0C27 oR:Z:1 oH [...]
-simulated.35 16 1 8580 255 44M1I71M1D97M * 0 0 GGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTAGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCC &-I6'/I2(I3'H67:<)I8(I807)I8'G684&+<I'/I(I54&:73&+;I3478<98)4I5<5=86=:42:79'H:)I625(I9'H7>=(2I3'G7'I;9(I554(I'H'I:69)5I)I6;'0I'F'0I)I1(I'.I'0I)I'0I585546497'0I<'G82)I:6(I'I4:6(I&-I:553473&*8I:87)I53868998691(I54(I NM:i:2 MD:Z:115^G [...]
+simulated.34 16 1 7105 255 201M1I7M * 0 0 GGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCAGTCTATTTTAACATAGTTATTACGCCCATG (I08'H3866'I74'0I5&E&,I94(I84'H(I:'0I&-I:74(I;'H;696'G7;'I;7496959;6'H'/I4'/I8:63(I(I54=8857:6490 at 768=6658(I9&D>78(1I3889)I83:(I6:3(I7)I'I765'I85864885<988',>I38)I5(I::7<>/97(I(I9*3D98&+:I)I57846'G3(I7&6&,I468 NM:i:3 MD:Z:179TC27 oR:Z:1 oH: [...]
+simulated.35 16 1 8580 255 44M1I71M1D97M * 0 0 GGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTAGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCC &-I6'/I2(I3'H67:<)I8(I807)I8'G684&+<I'/I(I54&:73&+;I3478<98)4I5<5=86=:42:79'H:)I625(I9'H7>=(2I3'G7'I;9(I554(I'H'I:69)5I)I6;'0I'F'0I)I1(I'.I'0I)I'0I585546497'0I<'G82)I:6(I'I4:6(I&-I:553473&*8I:87)I53868998691(I54(I NM:i:2 MD:Z:115G9 [...]
simulated.36 0 1 6807 255 47M1I75M1I69M * 0 0 CGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGTCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCGTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGC ;3:I(;98293I(946:8I(287645487976H'I)7I-&6I)@977%97I(74:G'56I.&989:I(I(I.&88I+I(8F':E&:4I':76D&;:H'5I(I(36667>I(5<7I1(I2(I)8(I0':7I/':679<6I(99<74<7I';4I/'=I(?577?55<6I(9G'7<66I)I(866>5868F'69<: NM:i:2 MD:Z:191 oR:Z:1 oH:i:1 oP:i:6806 oS:A:F XE:i:2 XS:i [...]
simulated.37 16 1 8840 255 52M1I171M * 0 0 AAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACGACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAAC 'H6<(I87<5:5)I)4I9(I'/I554(I:8<56(I76'I<(1I(2I(I9349.87;:5'I9(I69(I656767<:9=76&+;I75(I'I'I(I)I5<649>=66)I5'I(I75(I6(I865)I*I56(I;'/I98768'G625;:97?65'0I4'H8*I684;84778;8'I999(1I>7;&F767567&F779*I'G9)I586(I:69579:74(I5997'I4 [...]
-simulated.38 16 1 5467 255 44M1D62M1I106M * 0 0 ATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAAGTGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCA 9(I'G<63(I6)I6:8:64)I(I;'H9786:'H85:36876)I9+I?;(I33&-I&.I9897<'H863(3I88'H(I&-I8'H18>:*I;(I::4'G::97584*I%6'I:7<73884:942(I7:'G(I367267(I649:69)I7>)I2586;8:68:4;:7958'H7891)I7;5847'/I84(I2783'I77:'H866)I;7)I&,<I> NM:i:2 MD:Z:44^A [...]
+simulated.38 16 1 5467 255 44M1D62M1I106M * 0 0 ATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAAGTGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCA 9(I'G<63(I6)I6:8:64)I(I;'H9786:'H85:36876)I9+I?;(I33&-I&.I9897<'H863(3I88'H(I&-I8'H18>:*I;(I::4'G::97584*I%6'I:7<73884:942(I7:'G(I367267(I649:69)I7>)I2586;8:68:4;:7958'H7891)I7;5847'/I84(I2783'I77:'H866)I;7)I&,<I> NM:i:2 MD:Z:44A1 [...]
simulated.39 0 1 3348 255 58M1I151M * 0 0 TTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTCGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCG I:+&5I'8:I)I'3966:I at -'I(I':I0'67:65I(78>5888I/'9<G'I*;5679&7I)9;77:7=I(I.'I/'6768I)49:6;8<=84:61=;::H':74<4I<,&39I)II2*&7I/'868:988H'7I*;I-&95I-&I(794:I(2:68I.&8H'5I(466:778:I(9I-&6I'673I'I'6I(3I0'I'597<49I:+&9 NM:i:1 MD:Z:209 oR:Z:1 oH:i: [...]
simulated.40 0 2 125 255 26M1I91M1I31M1I34M1I16M * 0 0 TGGCCCGTATCTCTGGGTCTACGTTGACCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAAGTCCAAGCAGATTTAATATGATGTCGTCGTCCTAGCCTTTGACTAATATTACAATCTATATGCATGTACTACTTATAGCGCGCA -I(I/':66>5766I2(::<980I'8'I/'8I(<@889I(I(76I8*&I(599I'I1(I(I(46I(:I.&I(6324I(:H'7I+H'?5;2<798I(68:I(4I)I/'=6I8*&I(;I(%9H'H'7=99=I0'I(8639586=388789H'%7;I(I2(3859I'69I(75I'4;;879:558;78'75:=I(56:6=86444 NM:i:4 MD:Z:198 oR:Z:2 oH:i:1 o [...]
-simulated.41 0 1 3750 255 15M1D90M1I18M1I48M * 0 0 CGCAGATGTATTTCTAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTCGTGCGAGAACTTCAATCACGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGA 3;78958757I2(<9I,I(=I0':1G'9866626I(9I)6A77I1(:2I(H'868I(8<5967666655:337:=:=6I/'I(6:8;I(638I'I-&H'4I'9:8&6967867I(8I(4I(955%6927I(5H'9::;64<II>1*'14764676I(E&9I):5856855;97 NM:i:3 MD:Z:15^A156 oR:Z:1 oH:i:1 oP:i:3749 oS:A:F XE:i:3 XS:i:0 XI:i:0
-simulated.42 0 1 293 255 17M1D185M * 0 0 AATCGCTTATTAAGGAATTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTA I'836:F'9H'H'H'I(I4)65:9I(;;I3(:687964H'6:;I*<58:;9IC.(=4767I(I1(/69I(5I):G'9I.'842898:5II0)&8H'I)4854I0'I-&37682<783;G'I(I/'662:5;:94I1(I):97I(98H'66I-&I'<68<63:I(567I)3:8:97G'748>3;<>5H'43I(6I'I*I(8=8 NM:i:1 MD:Z:17^T185 oR:Z:1 oH:i:1 oP:i:292 oS [...]
-simulated.43 0 1 8133 255 72M1D118M * 0 0 CGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGC <:52;8749H'5:3/7<;=:8;I<,':576I'I1'I(67I(;4=H'=I(I0'679;I*<6965I.'9=:7I'D86I)6:574244E&8I)77I(769:75I.&I*:6I(:36=9I(4I(I(256;;8I(68:;7H'7<I(8:786;7678I(I)F'I/'I(:;3;4I*9<G'8I)6<I/'987I(7I)98 NM:i:1 MD:Z:72^T118 oR:Z:1 oH:i:1 oP:i:8132 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.41 0 1 3750 255 15M1D90M1I18M1I48M * 0 0 CGCAGATGTATTTCTAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTCGTGCGAGAACTTCAATCACGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGA 3;78958757I2(<9I,I(=I0':1G'9866626I(9I)6A77I1(:2I(H'868I(8<5967666655:337:=:=6I/'I(6:8;I(638I'I-&H'4I'9:8&6967867I(8I(4I(955%6927I(5H'9::;64<II>1*'14764676I(E&9I):5856855;97 NM:i:3 MD:Z:15A156 oR:Z:1 oH:i:1 oP:i:3749 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.42 0 1 293 255 17M1D185M * 0 0 AATCGCTTATTAAGGAATTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTA I'836:F'9H'H'H'I(I4)65:9I(;;I3(:687964H'6:;I*<58:;9IC.(=4767I(I1(/69I(5I):G'9I.'842898:5II0)&8H'I)4854I0'I-&37682<783;G'I(I/'662:5;:94I1(I):97I(98H'66I-&I'<68<63:I(567I)3:8:97G'748>3;<>5H'43I(6I'I*I(8=8 NM:i:1 MD:Z:17T185 oR:Z:1 oH:i:1 oP:i:292 oS: [...]
+simulated.43 0 1 8133 255 72M1D118M * 0 0 CGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGC <:52;8749H'5:3/7<;=:8;I<,':576I'I1'I(67I(;4=H'=I(I0'679;I*<6965I.'9=:7I'D86I)6:574244E&8I)77I(769:75I.&I*:6I(:36=9I(4I(I(256;;8I(68:;7H'7<I(8:786;7678I(I)F'I/'I(:;3;4I*9<G'8I)6<I/'987I(7I)98 NM:i:1 MD:Z:72T118 oR:Z:1 oH:i:1 oP:i:8132 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.44 16 1 7118 255 198M * 0 0 TGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTC :'0I9(I'/I35(I48(I(I<&.I&.I5?;'HB)I3;=7'I88(I7984743786'G&.I:'/I8697'I(I6>964438797:56::;:88<)I3'I2:;'/I6>6:'I874'G3<8(I9'H'I:55'I;63:275:5:67&+;I66'H5'H96>:2776)I'I68'G65',=I(I5:785*I6(I49(1I;67'I= NM:i:0 MD:Z:198 oR:Z:1 oH:i:1 oP:i:7117 oS:A:R XE:i:0 XS [...]
-simulated.45 0 1 189 255 82M1D126M * 0 0 CCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAA I(68D&F&99I'I'<I'79693:664I)5I(7I(G'235I+F'86964I(II;/)&;78D&H'4:I)I(I1(I)>5H';694I,:8/:I(;:7:8;I)46I(:E&9267H'8F&I'I'I)I8*&76;5I);:I1(778;92<I'875I(588984I9+&7<236I(I-&684I,9H'7I(7I2(6964696<II0)&=H'I*9:65I( NM:i:1 MD:Z:82^G126 oR:Z:1 oH:i:1 [...]
+simulated.45 0 1 189 255 82M1D126M * 0 0 CCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAA I(68D&F&99I'I'<I'79693:664I)5I(7I(G'235I+F'86964I(II;/)&;78D&H'4:I)I(I1(I)>5H';694I,:8/:I(;:7:8;I)46I(:E&9267H'8F&I'I'I)I8*&76;5I);:I1(778;92<I'875I(588984I9+&7<236I(I-&684I,9H'7I(7I2(6964696<II0)&=H'I*9:65I( NM:i:1 MD:Z:82G126 oR:Z:1 oH:i:1 [...]
simulated.46 16 1 6218 255 197M * 0 0 CAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAA 64:5'G955715484:;746)4I884'I53994;5&-I74:977'.I96:48'/I9(I99&+;I2(I'0I76?68:(I::8=7:49889798;7'H484578;(I4;38&-I;6;::9)I'I'0I'I6=)I3:8:&*1II)I78'H(I(I:2;7375)I98<'/I7'H'.I(I72'I:347636)I27=290426'I NM:i:0 MD:Z:197 oR:Z:1 oH:i:1 oP:i:6217 oS:A:R XE:i:0 XS:i [...]
simulated.47 0 1 2956 255 184M1I8M * 0 0 CGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCGTGGGCCCC :;81I'5I(9835859I*8I(5;657746I(369;89I.&6I/':I(9I'I'I(3<8I(7G';54:<3799968=I(:78<8I)I(G'8I/'867I(96=90H'9G'I0'68>677545I0'I'74I1';:I(I?-'F'588975?=<7I(I(I)I)987<89998496I(:85I.&6:9334?%6I/'I8*& NM:i:1 MD:Z:192 oR:Z:1 oH:i:1 oP:i:2955 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.48 16 1 4643 255 16M1I206M * 0 0 AGTTTCGGCACAGGTGACCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAG :7'/I7'I3945'I98''G7:8;9&-I96387=)I8)I<149>'/I(I659&E3<7796'0I;;5'I(I>8988)I568;(1I975;'I9:)I95&*2II(1I(I5'I6527)I8777(I75<74:9:&*1II48:6&E<<18(I678'-?I7)I:79'H::)I(I68(I(2I68)4I7=<&-I'I2'I'+3II857::(I8'H(I8;'H78(I81(I>::4< N [...]
-simulated.49 16 1 6404 255 63M1D43M1I109M * 0 0 GTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTACACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTG 5<684=884)I'1I)I7:77'0I641)I49&E827',>I84'H67(I(I)I4=9(I88(I:6;D8:556798)I:6:4'F;;'H'I at 966;844907;3(I-93'H&78;6785'/I586989:(I5776975444:'H95754;7'F6'I=77569'0I98'I'I:&F:(I4>;7(I598;&*2II'/I:(I5:542<2'I)I&E=(I>'I5848 NM:i:2 MD: [...]
-simulated.50 16 1 8614 255 105M1D32M1I29M1I42M * 0 0 AAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGTCGTGGTTTCGTGACTAAAACTAGGAGACACTCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTG '/I&.I(I?7794&+:I9;;7676'0I9049:396/8418)I7'I:9<(I='I5;;&-I8'I<'I62&E798(I(I'G33<&+9I)I79'0I(I&-I'I9)I&-I+I'H'0I868648957'0I4&D86'I9;'I'I)86<(I'/I7947=38',=I5;6(I99:9;(5::586(I58&-I844'I9987659(I'I419154'I8>;88 NM:i:3 MD:Z:105^C [...]
-simulated.51 16 1 3241 255 76M1D48M1D18M1I21M1I38M * 0 0 AACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAACCAAGTTTAGCTGAACTGACATGAAAGACCGGTATGTAGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGT *I63'/I768&+:I)I<88(I7)I',=I7:9&F4:7>;(I(I6(I6(I;4'1I;8&E58958687<78)I7(I(I:)6I5(I&E7577(I6:'I)I:77(2I5<58'-AI4)I3<&F)I47884)5I)I)I:'.I;5<79'I&777:428'1I<6&F'I<@=65&3(I7;<;36:(I(2I'/I6;6<'G7:<;684888794: NM:i:4 MD:Z:76^T48^A77 oR:Z [...]
-simulated.52 0 1 6073 255 10M1D37M1I60M1I72M * 0 0 AGAGCTGGGACTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCTATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCACTATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTAT <96669I.'4D8742958I(7I(@97I(7573II1)&;I:+&599H'&909I3)I(59:4<97::835I):I;+&I-&745;79:I'9874I(4 at I/'<8/I-&<>;9+7678878=:783;85G'1:5I(:2>I(55I'<I/'866;88G'2:855823574 at 75I/'@7<I)43;9577 NM:i:3 MD:Z:10^C169 oR:Z:1 oH:i:1 oP:i:6072 oS:A:F XE:i:3 XS:i:0 XI:i:0
-simulated.53 0 1 4137 255 46M1I102M1I56M * 0 0 TTGACTGTGAATAACAGACAGGTCCAATTGGTCGGTTACTGGCGCGTAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCGACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGA I'99998<5I)4I(5;6=5;I(9G'I'I(H'%5I,I(983H'<8A5'H'754I.'H'I(;:38I(:39668I'::I-&9>I(5I(6;<41599;47;4I*I/'7I/'I(I(I)749;55=8776<586I(I4)8:I'9=27F&0I(I)5&3I0'6;I8*&3878;8:48I+I1(I0'949I);4=5I(I/':958;589623I)87 NM:i:4 MD:Z:31C0G171 oR:Z:1 oH: [...]
-simulated.54 0 1 3972 255 25M1I8M1I126M1D34M * 0 0 GCGCGGGTAAGTAATGACTTAGACACGAGGTCCTAGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCAACTTGACTGTGAATAACAGACAGGTCCAATT A737I0'5H'67E&:559I+::563%8>I(7I'9'5I(49?92:9I0'I;+&:H':88488657I(8<I.&I7*&8:8392I0'I(4I)G'I'732;9767I4)I)8;54I/'875F'I(I(H'994<I(87:7;I(6I/'5697:5376I(963I2(:I'I,I'8I(5188766H'5H'843997I(7I(I(I( NM:i:3 MD:Z:159^C34 oR:Z:1 oH:i:1 oP:i:3971 oS:A: [...]
-simulated.55 16 1 8957 255 36M1I6M1I44M1D97M * 0 0 TAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGTCCGAAGACTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTG 616'H'F/8'I6'0I769<:(I58:7;3588>'/I9('G:)I9&96:76:4793(I943'.I65<'I64;;8;'I589'H)I4'I84AD479338859(I1766(I'I585/9&.I(I(I9'H8567:7)I975(3I&.I6;7(I7(I646;7798&E'H7778;9'H5'IB)I)I6/'G5)I28 NM:i:3 MD:Z:86^T97 oR:Z:1 oH:i:1 oP:i:8956 oS:A:R XE:i:3 XS:i:0 XI:i:0
-simulated.56 0 1 6527 255 81M1D117M * 0 0 TAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAG 7F&:86496>946<H'478;797I(4I(88:8:8I0'97I'I(:I(6G'97:8I'225:IG0)%I/'9I(2456<:5I)I'D6I(7I(585;9:55I'28:6744I*7729H'I.&8H'<9>I'I)I)827I(I0'9477375887457I'I'<:4787769:3;:I)6H'I(36796I'395>6I)8:I9+&4I1(2 NM:i:1 MD:Z:81^G117 oR:Z:1 oH:i:1 oP:i:6526 oS:A:F X [...]
-simulated.57 0 1 8859 255 87M1D36M1I56M * 0 0 TAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACGTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGA 9I.&77:I(:5:43I(=7I(;I.&I2(I(498:778 at 9F'4I(6:H'-696?5<6;6:3I<+&53I(I(H'I(I)3<447:979I(8CI(47I);I)467I(G'86I+6I-&446>9G'7865&68:>9=I,&5I(9I'6773=845:4;F&576I.'236I(:58:65I(:96I(I*:6 NM:i:2 MD:Z:87^T92 oR:Z:1 oH:i:1 oP:i:8858 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.58 16 1 8126 255 77M1D59M1I5M1I11M1I66M * 0 0 TCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCGACTCTCCCTGAAGTATGTCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCAC 6)I957684:686;09'H79:;:<6;535&+:I;675)I'/I'G6;(I633)I4'H'/I62:4(I::9;4&-I:<71D(I79(I906<3455'H8'I45'I714316'0I(I87'I:4858'I8(I(I:9;877'F&65<9:'0I16'I468:3&4378<'G'G'I(1I(I0;89:)I48'I;(I9:&,I986)I6)I784579:5999(I5:4 [...]
-simulated.59 0 1 4110 255 67M1I103M1D14M * 0 0 TATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTAGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTGGCACCCGCGGGG 5774899577H'>65I/'<I)I/'I(6H'6:434>>H'6H'668896I)6I(I(I+I)9I/'I'677*G':657H'894I/'I(I)663:F&5677>9I(7=I-&7;I(7I)=695<854655:5I(I3(<I1(I'I(I(374163758:8/9;7I(I1(67I(5=95I)<BI(64I/'96I8*& NM:i:2 MD:Z:170^T14 oR:Z:1 oH:i:1 oP:i:4109 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.60 0 1 3359 255 7M1D198M * 0 0 CCGCTATAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGT I(99:2<I6*H'I+;I.&77697G':5699:8I2(68I(I(678;:8I):;68675I'I/'I-&75<3I'4987447968536;959I(66<78I<,'7;I*II3+'2I.&67/5886I);I+;I0'15I/'I(=<99E&6661I0':H'7I(::6877:9I(6I1(2I(865G'G'9I)6I-&I(:755::I?-'::9I1(E&6 NM:i:1 MD:Z:7^A198 oR:Z:1 oH:i:1 oP:i:3 [...]
-simulated.61 16 1 4713 255 182M1D7M * 0 0 TATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGA 588(I8<67(1I5565(I65)I8:'+4II'/I(I3(I86:='H<6<6'H646;7448&*3II95;?)I3538'I66A',=I6'I::@(I4<(I'I;9(I(2I=6'1I985'/I'F9+I&)1II67885(I:'G)I7<(I:6'I67(I2;<8;(1I97(I87=8;88:;;:(I6&-I374(I6)6I:;77 NM:i:1 MD:Z:182^G7 oR:Z:1 oH:i:1 oP:i:4712 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.62 16 1 1637 255 27M1D118M1D48M * 0 0 GGGGCAAACAACACTAAGTGTAACGGAGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGCGTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGG &+:I4&-I1(I358>'G>7<6'I2'I9C:'H86996(I8:<2<(I;;79:4:7'I'G(1I(I7'H9>'H(I8<375<76(I:976:86528698>6(I43:8(I::+I6&58893&*8I(I57:44'H6>78:4:(I434)I'H:*7I9;87(I'I82'0I'H1'G78646=954:8799)I58361'I59(I NM:i:4 MD:Z:27^G81G0C35^C48 oR:Z:1 oH:i:1 oP:i:1636 oS:A [...]
+simulated.49 16 1 6404 255 63M1D43M1I109M * 0 0 GTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTACACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTG 5<684=884)I'1I)I7:77'0I641)I49&E827',>I84'H67(I(I)I4=9(I88(I:6;D8:556798)I:6:4'F;;'H'I at 966;844907;3(I-93'H&78;6785'/I586989:(I5776975444:'H95754;7'F6'I=77569'0I98'I'I:&F:(I4>;7(I598;&*2II'/I:(I5:542<2'I)I&E=(I>'I5848 NM:i:2 MD: [...]
+simulated.50 16 1 8614 255 105M1D32M1I29M1I42M * 0 0 AAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGTCGTGGTTTCGTGACTAAAACTAGGAGACACTCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTG '/I&.I(I?7794&+:I9;;7676'0I9049:396/8418)I7'I:9<(I='I5;;&-I8'I<'I62&E798(I(I'G33<&+9I)I79'0I(I&-I'I9)I&-I+I'H'0I868648957'0I4&D86'I9;'I'I)86<(I'/I7947=38',=I5;6(I99:9;(5::586(I58&-I844'I9987659(I'I419154'I8>;88 NM:i:3 MD:Z:105C1 [...]
+simulated.51 16 1 3241 255 76M1D48M1D18M1I21M1I38M * 0 0 AACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAACCAAGTTTAGCTGAACTGACATGAAAGACCGGTATGTAGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGT *I63'/I768&+:I)I<88(I7)I',=I7:9&F4:7>;(I(I6(I6(I;4'1I;8&E58958687<78)I7(I(I:)6I5(I&E7577(I6:'I)I:77(2I5<58'-AI4)I3<&F)I47884)5I)I)I:'.I;5<79'I&777:428'1I<6&F'I<@=65&3(I7;<;36:(I(2I'/I6;6<'G7:<;684888794: NM:i:4 MD:Z:76T48A77 oR:Z:1 [...]
+simulated.52 0 1 6073 255 10M1D37M1I60M1I72M * 0 0 AGAGCTGGGACTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCTATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCACTATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTAT <96669I.'4D8742958I(7I(@97I(7573II1)&;I:+&599H'&909I3)I(59:4<97::835I):I;+&I-&745;79:I'9874I(4 at I/'<8/I-&<>;9+7678878=:783;85G'1:5I(:2>I(55I'<I/'866;88G'2:855823574 at 75I/'@7<I)43;9577 NM:i:3 MD:Z:10C169 oR:Z:1 oH:i:1 oP:i:6072 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.53 0 1 4137 255 46M1I102M1I56M * 0 0 TTGACTGTGAATAACAGACAGGTCCAATTGGTCGGTTACTGGCGCGTAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCGACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGA I'99998<5I)4I(5;6=5;I(9G'I'I(H'%5I,I(983H'<8A5'H'754I.'H'I(;:38I(:39668I'::I-&9>I(5I(6;<41599;47;4I*I/'7I/'I(I(I)749;55=8776<586I(I4)8:I'9=27F&0I(I)5&3I0'6;I8*&3878;8:48I+I1(I0'949I);4=5I(I/':958;589623I)87 NM:i:4 MD:Z:31CG171 oR:Z:1 oH:i [...]
+simulated.54 0 1 3972 255 25M1I8M1I126M1D34M * 0 0 GCGCGGGTAAGTAATGACTTAGACACGAGGTCCTAGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCAACTTGACTGTGAATAACAGACAGGTCCAATT A737I0'5H'67E&:559I+::563%8>I(7I'9'5I(49?92:9I0'I;+&:H':88488657I(8<I.&I7*&8:8392I0'I(4I)G'I'732;9767I4)I)8;54I/'875F'I(I(H'994<I(87:7;I(6I/'5697:5376I(963I2(:I'I,I'8I(5188766H'5H'843997I(7I(I(I( NM:i:3 MD:Z:159C34 oR:Z:1 oH:i:1 oP:i:3971 oS:A:F [...]
+simulated.55 16 1 8957 255 36M1I6M1I44M1D97M * 0 0 TAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGTCCGAAGACTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTG 616'H'F/8'I6'0I769<:(I58:7;3588>'/I9('G:)I9&96:76:4793(I943'.I65<'I64;;8;'I589'H)I4'I84AD479338859(I1766(I'I585/9&.I(I(I9'H8567:7)I975(3I&.I6;7(I7(I646;7798&E'H7778;9'H5'IB)I)I6/'G5)I28 NM:i:3 MD:Z:86T97 oR:Z:1 oH:i:1 oP:i:8956 oS:A:R XE:i:3 XS:i:0 XI:i:0
+simulated.56 0 1 6527 255 81M1D117M * 0 0 TAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAG 7F&:86496>946<H'478;797I(4I(88:8:8I0'97I'I(:I(6G'97:8I'225:IG0)%I/'9I(2456<:5I)I'D6I(7I(585;9:55I'28:6744I*7729H'I.&8H'<9>I'I)I)827I(I0'9477375887457I'I'<:4787769:3;:I)6H'I(36796I'395>6I)8:I9+&4I1(2 NM:i:1 MD:Z:81G117 oR:Z:1 oH:i:1 oP:i:6526 oS:A:F XE [...]
+simulated.57 0 1 8859 255 87M1D36M1I56M * 0 0 TAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACGTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGA 9I.&77:I(:5:43I(=7I(;I.&I2(I(498:778 at 9F'4I(6:H'-696?5<6;6:3I<+&53I(I(H'I(I)3<447:979I(8CI(47I);I)467I(G'86I+6I-&446>9G'7865&68:>9=I,&5I(9I'6773=845:4;F&576I.'236I(:58:65I(:96I(I*:6 NM:i:2 MD:Z:87T92 oR:Z:1 oH:i:1 oP:i:8858 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.58 16 1 8126 255 77M1D59M1I5M1I11M1I66M * 0 0 TCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCGACTCTCCCTGAAGTATGTCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCAC 6)I957684:686;09'H79:;:<6;535&+:I;675)I'/I'G6;(I633)I4'H'/I62:4(I::9;4&-I:<71D(I79(I906<3455'H8'I45'I714316'0I(I87'I:4858'I8(I(I:9;877'F&65<9:'0I16'I468:3&4378<'G'G'I(1I(I0;89:)I48'I;(I9:&,I986)I6)I784579:5999(I5:4 [...]
+simulated.59 0 1 4110 255 67M1I103M1D14M * 0 0 TATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTAGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTGGCACCCGCGGGG 5774899577H'>65I/'<I)I/'I(6H'6:434>>H'6H'668896I)6I(I(I+I)9I/'I'677*G':657H'894I/'I(I)663:F&5677>9I(7=I-&7;I(7I)=695<854655:5I(I3(<I1(I'I(I(374163758:8/9;7I(I1(67I(5=95I)<BI(64I/'96I8*& NM:i:2 MD:Z:170T14 oR:Z:1 oH:i:1 oP:i:4109 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.60 0 1 3359 255 7M1D198M * 0 0 CCGCTATAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGT I(99:2<I6*H'I+;I.&77697G':5699:8I2(68I(I(678;:8I):;68675I'I/'I-&75<3I'4987447968536;959I(66<78I<,'7;I*II3+'2I.&67/5886I);I+;I0'15I/'I(=<99E&6661I0':H'7I(::6877:9I(6I1(2I(865G'G'9I)6I-&I(:755::I?-'::9I1(E&6 NM:i:1 MD:Z:7A198 oR:Z:1 oH:i:1 oP:i:33 [...]
+simulated.61 16 1 4713 255 182M1D7M * 0 0 TATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGA 588(I8<67(1I5565(I65)I8:'+4II'/I(I3(I86:='H<6<6'H646;7448&*3II95;?)I3538'I66A',=I6'I::@(I4<(I'I;9(I(2I=6'1I985'/I'F9+I&)1II67885(I:'G)I7<(I:6'I67(I2;<8;(1I97(I87=8;88:;;:(I6&-I374(I6)6I:;77 NM:i:1 MD:Z:182G7 oR:Z:1 oH:i:1 oP:i:4712 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.62 16 1 1637 255 27M1D118M1D48M * 0 0 GGGGCAAACAACACTAAGTGTAACGGAGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGCGTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGG &+:I4&-I1(I358>'G>7<6'I2'I9C:'H86996(I8:<2<(I;;79:4:7'I'G(1I(I7'H9>'H(I8<375<76(I:976:86528698>6(I43:8(I::+I6&58893&*8I(I57:44'H6>78:4:(I434)I'H:*7I9;87(I'I82'0I'H1'G78646=954:8799)I58361'I59(I NM:i:4 MD:Z:27G81GC35C48 oR:Z:1 oH:i:1 oP:i:1636 oS:A:R [...]
simulated.63 0 1 4393 255 170M * 0 0 CGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCC 4438856:788@=IH0)&G':7=538>4H'36:5I)I(E&86I.&9682H'69I(5;><>I+8II1)&695747G'66587;576I'I)I(4=98;I2(4I.&I/'I(7I=,'57:9I(7G'6<:6:988;5I-&;I)67I'H';54238F&58I(3;65<55=I/'8I) NM:i:0 MD:Z:170 oR:Z:1 oH:i:1 oP:i:4392 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.64 0 1 161 255 1M1I109M1D38M1D40M * 0 0 CGTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATC 5%565H'I2(88I(6784;7H'8>87I(:I(95I(I(=9I'I)9I(7898:974<I)6I(8G'I(882G'I(478:5G'II9.(&794I'I):;I(I'I/'I(03H'48:<I+47=8I)1;4786F&93I'9I*6872I)6I(I(G'I(I6)>8<5I(76I2(7469<66I)787I(5=8886I7*&68 NM:i:3 MD:Z:110^G38^T40 oR:Z:1 oH:i:1 oP:i:160 oS:A:F XE:i:3 X [...]
+simulated.64 0 1 161 255 1M1I109M1D38M1D40M * 0 0 CGTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATC 5%565H'I2(88I(6784;7H'8>87I(:I(95I(I(=9I'I)9I(7898:974<I)6I(8G'I(882G'I(478:5G'II9.(&794I'I):;I(I'I/'I(03H'48:<I+47=8I)1;4786F&93I'9I*6872I)6I(I(G'I(I6)>8<5I(76I2(7469<66I)787I(5=8886I7*&68 NM:i:3 MD:Z:110G38T40 oR:Z:1 oH:i:1 oP:i:160 oS:A:F XE:i:3 XS: [...]
simulated.65 0 1 7434 255 136M1I49M1I15M * 0 0 AAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGTACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAACTAGTGGTGGAACAGT F'7I8*&1388::386G'I(79I(I(697844I.&I1(6958686I(8>I*4I.'I(H'4:I(I(7;567=:56I3(<664I)I.&6=I/'H'I1(86I(I'G'I(467878I'7=G'I(784:I(;4;78I(4I(&;I(I(864H'3<8I(47I'@I'E&7I)5667:4;374I(8889<659H''5::5I'6I(I'8885 NM:i:2 MD:Z:200 oR:Z:1 oH:i:1 oP:i:7433 [...]
-simulated.66 16 1 3211 255 14M1D25M1D138M1I26M * 0 0 AGGGAAGGTTGGCACCCGCTATTAAAAAGAACTGGGTGATTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACAGTGAAAGACCGGTATGTGAACAGTCTA 5&-I'I(I(I&E:7*6I=959(I%)0GI9'I56)5I:86*7I(I54<(I;'I',=I9:5'I98::5*I'G7)I4'H84'0I37(I438:;8;65:8'G7(I(I:'- at I4(I'I63=5(I68'I(I549'0I6773',>I6'F8='H(I;98;7&*8I(I'G;'0I79738(I2=968':9(1I7:'G'F>75=94)I78;5;84 NM:i:3 MD:Z:14^C25^T164 oR:Z: [...]
-simulated.67 0 2 58 255 175M1D21M * 0 0 AGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGATTT 7I0'99I(6526I(387:8:969G'99:=1>:4:F'5I(I)878E&I*:866256::5F'>I/'9:I(I'I/':945;866I-&4299=7H'6I.&4I)7<79:I(G'95I=,'I(>45I'I1(I(I(84I':I/'I(9:::I+6I(7I(I)18.5>9>7I)4=4I(2I)I.'62I7*I,9I*:I(I(96868I1( NM:i:1 MD:Z:175^C21 oR:Z:2 oH:i:1 oP:i:57 oS:A:F XE:i:1 XS [...]
-simulated.68 16 1 538 255 34M1D73M1D81M * 0 0 GCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGAC 499'/I2 at 7::7(I7;593)I5'I(I57728736,I<=267'/I71676=9(I?198:38'0I68(2I=)I:.;:77;9)I63856;9:'G9<(I69(I673'H77<(-7II(I528&-I746>(I(I;'/I4874498743(I6668;:88965(I176677;79&E1:8(I64;*I;8'/I6(I57 NM:i:2 MD:Z:34^T73^C81 oR:Z:1 oH:i:1 oP:i:537 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.69 16 1 1244 255 17M1D53M1I94M1D38M * 0 0 TGGTCTGTTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCGACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACG 8'I479<'0I76'H'I8*6I(I3(I6=?988(I65(I5=3(I655'H96:9(I(1I;(I3'/I'.I='0I&7'I2'H858'H&+<I8A68469642(I;&E'I=7'F'/I95/7>;='1I8;'H88*I8'0I9*I79(I(I952778;666958)I7664778:1*7I6'H9)I22(I8&.I579:;:)I8(I8766>8'G8& NM:i:4 MD:Z:17^A147^A37T oR:Z:1 [...]
+simulated.66 16 1 3211 255 14M1D25M1D138M1I26M * 0 0 AGGGAAGGTTGGCACCCGCTATTAAAAAGAACTGGGTGATTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACAGTGAAAGACCGGTATGTGAACAGTCTA 5&-I'I(I(I&E:7*6I=959(I%)0GI9'I56)5I:86*7I(I54<(I;'I',=I9:5'I98::5*I'G7)I4'H84'0I37(I438:;8;65:8'G7(I(I:'- at I4(I'I63=5(I68'I(I549'0I6773',>I6'F8='H(I;98;7&*8I(I'G;'0I79738(I2=968':9(1I7:'G'F>75=94)I78;5;84 NM:i:3 MD:Z:14C25T164 oR:Z:1 [...]
+simulated.67 0 2 58 255 175M1D21M * 0 0 AGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGATTT 7I0'99I(6526I(387:8:969G'99:=1>:4:F'5I(I)878E&I*:866256::5F'>I/'9:I(I'I/':945;866I-&4299=7H'6I.&4I)7<79:I(G'95I=,'I(>45I'I1(I(I(84I':I/'I(9:::I+6I(7I(I)18.5>9>7I)4=4I(2I)I.'62I7*I,9I*:I(I(96868I1( NM:i:1 MD:Z:175C21 oR:Z:2 oH:i:1 oP:i:57 oS:A:F XE:i:1 XS: [...]
+simulated.68 16 1 538 255 34M1D73M1D81M * 0 0 GCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGAC 499'/I2 at 7::7(I7;593)I5'I(I57728736,I<=267'/I71676=9(I?198:38'0I68(2I=)I:.;:77;9)I63856;9:'G9<(I69(I673'H77<(-7II(I528&-I746>(I(I;'/I4874498743(I6668;:88965(I176677;79&E1:8(I64;*I;8'/I6(I57 NM:i:2 MD:Z:34T73C81 oR:Z:1 oH:i:1 oP:i:537 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.69 16 1 1244 255 17M1D53M1I94M1D38M * 0 0 TGGTCTGTTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCGACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACG 8'I479<'0I76'H'I8*6I(I3(I6=?988(I65(I5=3(I655'H96:9(I(1I;(I3'/I'.I='0I&7'I2'H858'H&+<I8A68469642(I;&E'I=7'F'/I95/7>;='1I8;'H88*I8'0I9*I79(I(I952778;666958)I7664778:1*7I6'H9)I22(I8&.I579:;:)I8(I8766>8'G8& NM:i:4 MD:Z:17A147A37T oR:Z:1 oH [...]
simulated.70 16 1 7824 255 90M1I8M1I33M1I67M * 0 0 CGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCTAATGGATTACGAATGCAATGCGACAGTCCGTGGTGTAGTAGTAGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCA 99'I:6;;77738*I8:8'1I83&.I'/I959(I;(I54;7:4:'I(1I8)I(I8;48979;5',<I6'I65;'H'I45244<55(2I89(&E:(I8'I%42'G;;6(I494744847)I67(I7 at 8;37976%7<7<(I67:;9(I=(I:)I796(I;&-I<7559385'/I9'/I(I48=(I(I6=2=4(I7'1I79<8 NM:i:3 MD:Z:198 oR:Z:1 oH:i:1 oP:i:78 [...]
-simulated.71 0 1 6005 255 19M1D49M1I21M1D62M1D57M * 0 0 TTTCTGAGTGAAAAGAAAGCCCCCTATGATAGACATCCGACGTTATGAAACTGTACAGTACATACGGACGAGCTGGGACCTACTCAGCCGCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGG I1(897538;I<,&5I-&5II6,(657;5557:?99H'D'77I(;98I0'9:97984885799:8I':%79;3;I/'7I)94<5<47I'<D9;6I(7=7;II1*&6I9+&77<I*<96I1'H';2867A;47746H'=I<,&I.&3695<56D9829I*1:I3(6<8I0'78456636767<6;?65:6I(8:;H'::;I(86I(;I0' NM:i:5 MD:Z:19^C [...]
+simulated.71 0 1 6005 255 19M1D49M1I21M1D62M1D57M * 0 0 TTTCTGAGTGAAAAGAAAGCCCCCTATGATAGACATCCGACGTTATGAAACTGTACAGTACATACGGACGAGCTGGGACCTACTCAGCCGCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGG I1(897538;I<,&5I-&5II6,(657;5557:?99H'D'77I(;98I0'9:97984885799:8I':%79;3;I/'7I)94<5<47I'<D9;6I(7=7;II1*&6I9+&77<I*<96I1'H';2867A;47746H'=I<,&I.&3695<56D9829I*1:I3(6<8I0'78456636767<6;?65:6I(8:;H'::;I(86I(;I0' NM:i:5 MD:Z:19C2 [...]
simulated.72 0 1 7506 255 125M1I88M * 0 0 ATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACGAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCC 74I/'9>76I)I0'79I.&H'I0'69I(H'I(I'846595I(86I(I'6349I)66<:6I);I(:I'H'86:I)<:5I(<?F&4I(I)=I'841;376744H'58498797I'>6<8F'=H'H';%;5:?9689:5I(I0':I(51I(9I0'I(72596;<8689G'668H'67I/'564;4I,&;3:D&56I(:86878I(I(I)55I(76I' NM:i:1 MD:Z:213 oR:Z [...]
simulated.73 0 1 3607 255 203M * 0 0 AGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAG 77856I0'7I(89H'67I'?I;+&:;5886I)75;0I)65H'8767967I)<47I(:I(I:+&65I(4I)749I)I.&I<,&698:2I(H'314I'7999::6H':8I)96;7F'I'I+:9I.'72I(I1'I/'I'6I'<2I/'8266 at 2@89I-&<7I.'I):I.&76H'=548777I(3G';;9:I-&47I(I(396I(4> NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:3606 oS:A:F [...]
simulated.74 16 1 6053 255 14M1I166M1I16M * 0 0 AAACTGTACAGTACGATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACTACGATCCCTATAACGT &.I=8:7:6586=5*7426+I=:;867(1I:'I677?:94*I:(I:47)I5886&)0II=&,<I<68'H559'0I*I964890=86427'I8&+:I&.I5852854'I7548&F64'/I:46(2I5:477:97?97886767=7'I6@>'I9;;'H85)I;'/I548<66'I67799;;8:&69=59'/I65:(I86< NM:i:2 MD:Z:196 oR:Z:1 oH:i:1 oP:i:6052 oS:A:R [...]
simulated.75 0 1 188 255 111M1I69M * 0 0 TCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCGTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGA 8F'67H'I'87G'I(8I(53;9>:88<I)6G'0I(I(9?8I(I(55:A8I(II;/)&834I(I'98I(I'I0'I(=<I(;624I.&7435I'8;6:6?H'1;I(:I(7;;7'H';I(I(I(I(I:+&068<I)85I0';959<88I(846I(686759I8*&48<44I'I-&983I'7I(3 NM:i:1 MD:Z:180 oR:Z:1 oH:i:1 oP:i:187 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.76 16 1 5816 255 108M1I35M1D59M * 0 0 TCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATACGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAA 867'G<=79)I9=8::<86665'H461492'H2:'G(I9:3)I=84==<<=48:=7(I68'H8'H85'I6'/I95)I&-I>:'.I:?83(I966<:78'/I(I&*9I:&5(2I5<7&+9I9(I(I(I(I589:936>8&E5866D8(I6)I6)I;'.I;:(I&E8:5<;4(I;7;278<7&-I9(I(I7'.I5856:9:'-?I NM:i:2 MD:Z:143^T59 oR:Z:1 oH:i:1 oP [...]
+simulated.76 16 1 5816 255 108M1I35M1D59M * 0 0 TCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATACGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAA 867'G<=79)I9=8::<86665'H461492'H2:'G(I9:3)I=84==<<=48:=7(I68'H8'H85'I6'/I95)I&-I>:'.I:?83(I966<:78'/I(I&*9I:&5(2I5<7&+9I9(I(I(I(I589:936>8&E5866D8(I6)I6)I;'.I;:(I&E8:5<;4(I;7;278<7&-I9(I(I7'.I5856:9:'-?I NM:i:2 MD:Z:143T59 oR:Z:1 oH:i:1 oP: [...]
simulated.77 0 2 66 255 212M * 0 0 AGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCT 9;6?I(9:36;:989I(8:8;1=6:3I(4I(I'8=:I(G'=8<62;5755I'7I0'5<I(I(I/'78763556I/':67895I(;I/'7I)5;=0:I)G'::I8*&I(85:I(I/'I)I(63H'7I.'I(:577I(9I(9H'I(:8552657H'7:5H'6E&I/'99I=,'F'8H'8I)H';7889I/'I(1A:;976=55:<6<I(89I)7 NM:i:0 MD:Z:212 oR:Z:2 oH:i:1 o [...]
-simulated.78 0 2 38 255 52M1I101M1D34M1I12M * 0 0 TTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATACGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTCGGTTTGTCCCAA I0'7:848;:68I'I)83;68I.&54I'93:8I+:65:98839I(:867:8:&>:H';H'I'718I(G'79678<999=I'7I/'85I'I'I.&86877663I0'79;;74I(;I,&?H';;99;I'I(75I;+&I(9:7I(I/'I(I'48E&;I,I'68:8I(8H'7I*H'59967:6;I(28:I(:&H'I-&89I5)I* NM:i:4 MD:Z:153^G44C1 oR:Z:2 oH:i:1 oP [...]
+simulated.78 0 2 38 255 52M1I101M1D34M1I12M * 0 0 TTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATACGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTCGGTTTGTCCCAA I0'7:848;:68I'I)83;68I.&54I'93:8I+:65:98839I(:867:8:&>:H';H'I'718I(G'79678<999=I'7I/'85I'I'I.&86877663I0'79;;74I(;I,&?H';;99;I'I(75I;+&I(9:7I(I/'I(I'48E&;I,I'68:8I(8H'7I*H'59967:6;I(28:I(:&H'I-&89I5)I* NM:i:4 MD:Z:153G44C1 oR:Z:2 oH:i:1 oP: [...]
simulated.79 16 1 1645 255 19M1I181M1I8M * 0 0 CAACACTAAGTGTAACGGACGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGACATAGGTG 6'H;165)I963='H4'G8%)I5(I::474)I66;7?)I468@/<85(I(I'/I(I9'I84(I&E<@859688(I;3355:167:465;8)I<:98'H;7&,I95652;'-?I(I77:66'I at 6726;6'H96:(I(I;',>I154<'G(I94&.I'F4)I759<43:6::869<(I:87;7'I8>'/I'.I'G.85&*8I&;158'H6= NM:i:2 MD:Z:208 oR:Z:1 [...]
simulated.80 0 1 1614 255 192M * 0 0 CCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCA F&:686I(G'I(5;I8*&;46H'I;+&6I0'6I)9886I'9548I*4I'7I(5I(27;<6I'7=;6;I'8457692:I(I(I1(H'6I*66G'I)66:22528I(9;96/5:65;995;:I'7985I(93I/'=;5:47I:+&I(:8554I)98;62<4I)::;I(E&6I;+&8;2<I(I(74I.&I(1I(< NM:i:0 MD:Z:192 oR:Z:1 oH:i:1 oP:i:1613 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.81 0 1 8334 255 142M1D60M * 0 0 GCGATTTCCACGACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTG 5:9<I-&I(30:8I(88:I)I(=4I3(627G'5:6=5<5I(9:>I)58674;864284567568<I)9;I'39<I(778;63845;I)744;I(I(6?H'455:4I(66I)579;8I(187I(78874G'H'::<789I(I)I+9:5I5)8<I'84H'48786979:9796=H'392:I'7:I'7I(75I':I0'64:4I(0 NM:i:1 MD:Z:142^A60 oR:Z:1 oH:i:1 oP:i:8333 [...]
-simulated.82 16 1 3809 255 72M1D112M1I17M * 0 0 GTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGTACAGAGGTCCTGCCTGA 94691885477399:2816;'.I'I784:)I69<(I&.I'I5&F57797=;43='H8(I4'H6:75883'G7D=:99:64&).:II=798=789(I(I5(I28=9;558577;(2I6779'I9:@7(I26'0I:4'F'.I5:668278<'F(I47:6;5;6838:3'.I2'H;1'G:863'H7<&:67<9'H6(I43'G695 NM:i:2 MD:Z:72^G129 oR:Z:1 oH:i:1 oP:i [...]
-simulated.83 16 1 6031 255 22M1D153M * 0 0 ATGATAGACATCCGGCGTTATGAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCAT 684;::873:5'G'I50'H859,I:5966:8:49737;5(I8;56;6&-I:'H8274<:4(I9'H895)I748?&*1II6&*7I974'G;>6'.I'I56:688;7==86(I9&+;I'.I857<078*I:793(I<7'/I66;'0I8;961:58638892578:6(I4=;(I699: NM:i:1 MD:Z:22^A153 oR:Z:1 oH:i:1 oP:i:6030 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.84 0 1 6668 255 49M1D4M1D81M1I53M * 0 0 TCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCTAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTACCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGT 785741688D&H'606655;57>53<I(8I)I)957<4I(797;:I)50I6):I,950I.'7II2*&852I(I)64678I)I)6657I(74I(8:4I;+&:65I'8F'8;7I(I(I'I(775I(I*4I>,'H'9(H'7:?5I)785:88I):713;I(1785>7:6675:I)I(8I-&:I)<<;;771 NM:i:3 MD:Z:49^C4^A134 oR:Z:1 oH:i:1 oP:i:6667 oS:A:F XE:i:3 XS: [...]
-simulated.85 16 1 7073 255 102M1D10M1D91M * 0 0 TCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAATGGGTATGACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGC ;7204(I6489(I;5689'H=(I86:2<5457'I;6'I:967(I-8'/I9(I'/I:4(I48'F(I6(3I&.I878'G9'H46>7)I57)I;:75;4;996(I,I7&.I5:96B'F44=762738:788372;6696(I?(I7;5'.I9>2:'H779'I69;'G<'H'F886(I=27;968697;3'-?I;5(I<'I:0:8896 NM:i:2 MD:Z:102^A10^A91 oR:Z:1 oH:i: [...]
+simulated.81 0 1 8334 255 142M1D60M * 0 0 GCGATTTCCACGACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTG 5:9<I-&I(30:8I(88:I)I(=4I3(627G'5:6=5<5I(9:>I)58674;864284567568<I)9;I'39<I(778;63845;I)744;I(I(6?H'455:4I(66I)579;8I(187I(78874G'H'::<789I(I)I+9:5I5)8<I'84H'48786979:9796=H'392:I'7:I'7I(75I':I0'64:4I(0 NM:i:1 MD:Z:142A60 oR:Z:1 oH:i:1 oP:i:8333 o [...]
+simulated.82 16 1 3809 255 72M1D112M1I17M * 0 0 GTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGTACAGAGGTCCTGCCTGA 94691885477399:2816;'.I'I784:)I69<(I&.I'I5&F57797=;43='H8(I4'H6:75883'G7D=:99:64&).:II=798=789(I(I5(I28=9;558577;(2I6779'I9:@7(I26'0I:4'F'.I5:668278<'F(I47:6;5;6838:3'.I2'H;1'G:863'H7<&:67<9'H6(I43'G695 NM:i:2 MD:Z:72G129 oR:Z:1 oH:i:1 oP:i: [...]
+simulated.83 16 1 6031 255 22M1D153M * 0 0 ATGATAGACATCCGGCGTTATGAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCAT 684;::873:5'G'I50'H859,I:5966:8:49737;5(I8;56;6&-I:'H8274<:4(I9'H895)I748?&*1II6&*7I974'G;>6'.I'I56:688;7==86(I9&+;I'.I857<078*I:793(I<7'/I66;'0I8;961:58638892578:6(I4=;(I699: NM:i:1 MD:Z:22A153 oR:Z:1 oH:i:1 oP:i:6030 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.84 0 1 6668 255 49M1D4M1D81M1I53M * 0 0 TCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCTAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTACCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGT 785741688D&H'606655;57>53<I(8I)I)957<4I(797;:I)50I6):I,950I.'7II2*&852I(I)64678I)I)6657I(74I(8:4I;+&:65I'8F'8;7I(I(I'I(775I(I*4I>,'H'9(H'7:?5I)785:88I):713;I(1785>7:6675:I)I(8I-&:I)<<;;771 NM:i:3 MD:Z:49C4A134 oR:Z:1 oH:i:1 oP:i:6667 oS:A:F XE:i:3 XS:i: [...]
+simulated.85 16 1 7073 255 102M1D10M1D91M * 0 0 TCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAATGGGTATGACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGC ;7204(I6489(I;5689'H=(I86:2<5457'I;6'I:967(I-8'/I9(I'/I:4(I48'F(I6(3I&.I878'G9'H46>7)I57)I;:75;4;996(I,I7&.I5:96B'F44=762738:788372;6696(I?(I7;5'.I9>2:'H779'I69;'G<'H'F886(I=27;968697;3'-?I;5(I<'I:0:8896 NM:i:2 MD:Z:102A10A91 oR:Z:1 oH:i:1 [...]
simulated.86 16 1 603 255 12M1I57M1I108M * 0 0 TCCCACCTATACTATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTAGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGC <&-I6(I5;:86+5=8(I87<65897(I7:(I33'G388)I287&).9II'I886(1I46=4'I'H7'0I&6899629::5(I4:6:6;99789'G4=45;:686(I6:5(I8:>(I8<&.I;'H:4(I779:;3;594;(I5:87(I57(I57859(I'H6569'I'H;&-I'.I(I7 NM:i:2 MD:Z:177 oR:Z:1 oH:i:1 oP:i:602 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.87 16 1 9208 255 220M * 0 0 GCGCACTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTCATTGTATTCACGTAACGGGATGAGTTACCAGAACCTACCGTACATGCAGGGCTCATCGAATGCACTCACGAAATGCTGTAACAGCTCG =:98<&,I:(I596<(I(I'I395(I4'G'/I?'I'I858'H9&-I*I:(I6?16:776(I'I5764(I'H77'G;:7)I463:86<'G8:7(1I82:'/I5C564*I7(I46=:'H)I556848416(I696(I:4;'G37654(I:'0I:3884)I6(I88)I'I1;)I968;69696'1I5766785'H5793;77938(3I95:899)I:465766 NM:i:1 MD:Z: [...]
simulated.88 16 1 9102 255 185M * 0 0 GGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACA 'H66377=46'I'H996377(I8(I:'I*I<5)I1(I85)I64)I8777'I642793427<(I(I'.I08'I:5='I4'1I55799496=69;66887889)I8:>97::8(2I9'H8>13'I)I*I?::'I;'I'1I;'I)I598*I:(1I)I8)I:4358<;7(I'I::84(I'F?;'H87>6 NM:i:0 MD:Z:185 oR:Z:1 oH:i:1 oP:i:9101 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.89 16 1 7410 255 87M1I67M1I11M1I36M * 0 0 TGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAACTTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCGTGGAGGACCTTACAGAAGTGTTAGTTATTCCATTCTATAGTACGAATG 4989695;8?:6108'.I>)I8>?(I9'- at I965;730:3'I'I4:'F'H7?2987&.I'/I<154975(I6:(I5&.I'H(I01(I&'G6252;5:0@'/I67<:&D'0I9B&.I'I&-I75(I)I'G)I7;676@(I88'F(I993:(I;96/'8'I6'G5'I(I)66@'H783)I79)I9(I(I='G8=8;60=85<'H87 NM:i:3 MD:Z:201 oR:Z:1 oH:i:1 [...]
simulated.90 16 1 9109 255 214M * 0 0 ATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAG 776)I(I7:9><4'I2)I:'G'G88'I6(I5;'I97(I620:)I7<46/97996(I'I'0I:;'G788(I5'.I364796::73:36;789688)I:=::7648(1I:'H::<3(I&D)I3<4'F7(I'.I8(I'H665&E9'0I(I<'G7=86?458'G(I3;97'G'H68'I656'I9>:6882(I65;'/I;:6&.I<:3 at 8&F<&F7::+ NM:i:0 MD:Z:214 oR:Z:1 o [...]
-simulated.91 16 1 4217 255 54M1D89M1D66M * 0 0 CACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAG 68)I663530866?;97'H&,I7'/I'F*I(I26:95=97839564:(I&.I54C5779)I;'I'I;9'/I;7&+:I2857:5985(I(3I'/I158'I8995*I'0I;9697577489(I:)I(I68<(I9(I9'I(I59=4D791'G8:?278'I9878(I:9='/I64;3939968::9:8<49&*2II)I4469;662'I6;989 NM:i:2 MD:Z:54^A89^T66 oR [...]
-simulated.92 0 2 62 255 8M1D10M1D46M1I51M1D4M1D81M * 0 0 CTGGAGTCATGCGCACGTAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGACCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGTTAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTC 35I'8551D26849:799B;;6587<77F&<I'I(47<I(I,05346943:6I)<I0'06I(I()I2(87569838I.'657937I(5I1(2I*7<783F'G'58I9*&F'775I(I,I'C8=I(=I.'I*885;I(2H':I(E&082697:8I(769I(5I(I.&9;I;+&H':I(9I(H'46994I1(G':65695:69 NM:i:5 MD:Z:8^A10^A97^G4^A81 oR [...]
+simulated.91 16 1 4217 255 54M1D89M1D66M * 0 0 CACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAG 68)I663530866?;97'H&,I7'/I'F*I(I26:95=97839564:(I&.I54C5779)I;'I'I;9'/I;7&+:I2857:5985(I(3I'/I158'I8995*I'0I;9697577489(I:)I(I68<(I9(I9'I(I59=4D791'G8:?278'I9878(I:9='/I64;3939968::9:8<49&*2II)I4469;662'I6;989 NM:i:2 MD:Z:54A89T66 oR:Z [...]
+simulated.92 0 2 62 255 8M1D10M1D46M1I51M1D4M1D81M * 0 0 CTGGAGTCATGCGCACGTAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGACCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGTTAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTC 35I'8551D26849:799B;;6587<77F&<I'I(47<I(I,05346943:6I)<I0'06I(I()I2(87569838I.'657937I(5I1(2I*7<783F'G'58I9*&F'775I(I,I'C8=I(=I.'I*885;I(2H':I(E&082697:8I(769I(5I(I.&9;I;+&H':I(9I(H'46994I1(G':65695:69 NM:i:5 MD:Z:8A10A97G4A81 oR:Z:2 [...]
simulated.93 16 1 4973 255 201M * 0 0 GTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTC 3(I7(I5:488'I79976)I4724(I6=8<76;'0I;'0I7<747 at 4)I8;5(I69'G:4'0I9&)/;II:',=I(I7565<9>B'G699(3I5>)I789*I5>837)I98'H9594'H;857:5556'I74:6:(I871*I86(I'F8'/I:'I9585::&*0<II37;;86:129'H774<(1I5:9(I:(I99;:(I4 NM:i:0 MD:Z:201 oR:Z:1 oH:i:1 oP:i:4972 oS:A:R XE: [...]
-simulated.94 0 1 7822 255 65M1D127M1D4M1I1M * 0 0 TGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGCTAC 9978I)86999;;:7H'4=8I1(64I-&I0'147I(5I(56=76<9G'I/'2G'I(6=:79557;I4)@H'223I'I(;9@;;8;1I1(44I(8G'9I(:9I(:28I'796;859=3I'7:G'>868568=88351F'7>959I(3G'3I(763H'4I3(<8;58;6;I/'5I.&I(325I)F':8696I(9I,9:': NM:i:3 MD:Z:65^C127^G5 oR:Z:1 oH:i:1 oP:i:78 [...]
-simulated.95 16 1 7278 255 25M1I75M1I18M1D8M1I49M * 0 0 TGGCCATCCTATTTTAACATAGTTAGTTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTCGTCAAAATATCCGCCATGCCTCGTAGTCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGG 3)I'H6/+I4:&+:I'H<7;74(I6%'I66(3I;9;'G7=6*I'1I:9'0I;98+I9:68(I6:78'H8569859;'H9879775<6'/I7=553(I53:<&7:3'- at I:-9(I6(I9;7,I572554''I&F63=:45:93:5497;0'0I8'I=67)I9',>I87:864997'I'H NM:i:4 MD:Z:118^C57 oR:Z:1 oH:i:1 oP:i:7277 oS:A:R XE:i:4 XS:i:0 XI:i:0
+simulated.94 0 1 7822 255 65M1D127M1D4M1I1M * 0 0 TGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGCTAC 9978I)86999;;:7H'4=8I1(64I-&I0'147I(5I(56=76<9G'I/'2G'I(6=:79557;I4)@H'223I'I(;9@;;8;1I1(44I(8G'9I(:9I(:28I'796;859=3I'7:G'>868568=88351F'7>959I(3G'3I(763H'4I3(<8;58;6;I/'5I.&I(325I)F':8696I(9I,9:': NM:i:3 MD:Z:65C127G5 oR:Z:1 oH:i:1 oP:i:7821 [...]
+simulated.95 16 1 7278 255 25M1I75M1I18M1D8M1I49M * 0 0 TGGCCATCCTATTTTAACATAGTTAGTTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTCGTCAAAATATCCGCCATGCCTCGTAGTCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGG 3)I'H6/+I4:&+:I'H<7;74(I6%'I66(3I;9;'G7=6*I'1I:9'0I;98+I9:68(I6:78'H8569859;'H9879775<6'/I7=553(I53:<&7:3'- at I:-9(I6(I9;7,I572554''I&F63=:45:93:5497;0'0I8'I=67)I9',>I87:864997'I'H NM:i:4 MD:Z:118C57 oR:Z:1 oH:i:1 oP:i:7277 oS:A:R XE:i:4 XS:i:0 XI:i:0
simulated.96 0 1 2998 255 76M1I115M * 0 0 AAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGACTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAG F'8I)3I'I(I(853I'9I'6489:;95518:9I)6985;F'I*G'7I3(669I(9:;57I(8F'I.&33563389'@I-&I'/<I.&;8I(IA-(I(2678678788H'I(I(G'945939864869I)7:7I1'68448595I1(II2*&;77:;8:88I(89=:;7<86F'62>I(64746I'68I'26 NM:i:1 MD:Z:191 oR:Z:1 oH:i:1 oP:i:2997 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.97 0 1 5196 255 7M1I143M1I57M * 0 0 ATTGCAAGGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCTATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGAC 5I'>5I)I-&I,&:78I2(I(H'77592392968:I/'796I(8I(I(5I(7=63I':I'657478>9;69G'94732I(I(7<5I.'I0'8617=?I(6:07I*I)H'6559I'F&454;;76I-&77I0'7I0'I)H'5E&5I(6899<*95:I.&48;>:9:I<,&<I(9I(925I-&988059/5:5I'25I(76:68>:I'<78 NM:i:2 MD:Z:207 oR:Z:1 oH: [...]
-simulated.98 0 1 5140 255 37M1D75M1I9M1I74M * 0 0 ACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTACTTCAGCGCTCGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGC 95;4476484I(48:6I/'<67I)<I'85:6I(5798I5)9I'I0';77H'912H'I(68I'I)I/'=96I-&I'I(::7=:5;586;5I0'549I(:I'I)0I(9::<I(40I'<98;9<8(4<67I):9967I(I'874I1(I0'94;597I(:853I(I'G':869H'I'@::A;;4I.&;8I.&6I/'G'H'4 NM:i:3 MD:Z:37^C158 oR:Z:1 oH:i:1 oP:i:5139 oS [...]
-simulated.99 16 1 4917 255 89M1D64M1I33M1I52M * 0 0 ATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCGTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTAGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCA 9:877<34*I6;6)I'H728746/:4569&E9)I77;4)I989)I:'0I(I'H6699(I9(I71>97'H662;:(I86;4*I778<35;,I8'.I363:::9(I385*I66(I:5'/I6&)/;II7&*9I(I;9;68587'I79<(1I17&E4&69'I89635)I:5(I8598(I;885784:5'I7%97>7'H:9:(I [...]
+simulated.98 0 1 5140 255 37M1D75M1I9M1I74M * 0 0 ACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTACTTCAGCGCTCGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGC 95;4476484I(48:6I/'<67I)<I'85:6I(5798I5)9I'I0';77H'912H'I(68I'I)I/'=96I-&I'I(::7=:5;586;5I0'549I(:I'I)0I(9::<I(40I'<98;9<8(4<67I):9967I(I'874I1(I0'94;597I(:853I(I'G':869H'I'@::A;;4I.&;8I.&6I/'G'H'4 NM:i:3 MD:Z:37C158 oR:Z:1 oH:i:1 oP:i:5139 oS: [...]
+simulated.99 16 1 4917 255 89M1D64M1I33M1I52M * 0 0 ATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCGTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTAGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCA 9:877<34*I6;6)I'H728746/:4569&E9)I77;4)I989)I:'0I(I'H6699(I9(I71>97'H662;:(I86;4*I778<35;,I8'.I363:::9(I385*I66(I:5'/I6&)/;II7&*9I(I;9;68587'I79<(1I17&E4&69'I89635)I:5(I8598(I;885784:5'I7%97>7'H:9:(I [...]
simulated.100 16 1 6310 255 87M1I111M * 0 0 GACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGACGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGC 66)I86>99><(I5378'/I5:8862'H'I'0I(I56)I98<5&*3II(I;;(I)I'I448864;(I<4=(2I<'I&.I'I7<'I<7%97948'G7679;607<)I&.I'H4885'/I558(I47(I568',>I59'F4<'H)I)I812(I64)I<9;'I587:9676(I4463(I86&F*I=893848975;;=&D54 NM:i:1 MD:Z:198 oR:Z:1 oH:i:1 oP:i:6309 oS:A:R X [...]
-simulated.101 16 1 4348 255 9M1I145M1D49M * 0 0 TAGGTGGCCGTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTG :=(I8(I)I+48:7)I3::)I3828;5(I46:8)I898'/I<:58>9487:98975876&*2II(I;8983>92(I6755)I(I(I94&-I9768'H38'I7:=39'I:&*2II47;478(I7626856;:'I*I'G97;65&,I8(3I'.I'H8*7I6771(I3'G9:9658;;97'/I5(I4;)I(I587536'I56'G:72 NM:i:2 MD:Z:154^G49 oR:Z:1 oH:i:1 [...]
+simulated.101 16 1 4348 255 9M1I145M1D49M * 0 0 TAGGTGGCCGTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTG :=(I8(I)I+48:7)I3::)I3828;5(I46:8)I898'/I<:58>9487:98975876&*2II(I;8983>92(I6755)I(I(I94&-I9768'H38'I7:=39'I:&*2II47;478(I7626856;:'I*I'G97;65&,I8(3I'.I'H8*7I6771(I3'G9:9658;;97'/I5(I4;)I(I587536'I56'G:72 NM:i:2 MD:Z:154G49 oR:Z:1 oH:i:1 o [...]
simulated.102 0 1 8969 255 215M * 0 0 GGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGC I-&82:69I(;:8=9:76:;I-&6H'=I):4939565788I(469I.':79H'6:950;I'67?I(I(;I)858I(6;3784534E&3853I)I*85<96I.&F&I)3I*854;82I(778I.&I/':;=G'6H'818454;8I(I(:6;957I':I(8I'G'9<I'>I(66I'75I(.8<7H'365677478;I)I(I1(47I)636I(4I0'7 NM:i:0 MD:Z:215 oR:Z:1 [...]
simulated.103 16 1 5708 255 169M * 0 0 ACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGT 8:<59'/I;92;:(I(I8)I59<5)I7:6>7'I;9=(I679665&)0II(I57(I9=768(I&E<9<(I8635)I=5'G3907659:6&E&E;4'I(I<'H443;2;5389'H/::9(I9<396865696(I8;7996(I79(I(I538'I2:8=9483:78>>(I524 NM:i:0 MD:Z:169 oR:Z:1 oH:i:1 oP:i:5707 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.104 0 1 7684 255 181M * 0 0 GTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGA ::7I.&497I)5;G'97=52<I(I(I)75I)8;G'H'88<7;H'6:6I)58;672I(I'I)587I(<::81:8I)I(I'95I1':72I9+&6I)I-&I*I(97>6I*:9:75I(38I2(76:9IH0)%;6I'I-&@6=64:3I+863698358I(/=3I/':9I.'I1(4::I(;I+<955 NM:i:0 MD:Z:181 oR:Z:1 oH:i:1 oP:i:7683 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.105 0 1 348 255 48M1D76M1I82M * 0 0 ATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGACGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTG 9<1:59I)I0'3=3E&0I*7H'9I0'57848859IG0)%9I*E&5638I,I-&=768:8@::8I(I)I0'998:768;9I0'F'9;6I(35I'95I-&H'89876:9I(964I':/6654G'58&77788<7I'86F'<I(I(I(8<I8*&9<9276;H'64H'I<,'955I(6<I0'7=87I0'7I(I(796I0'534698G'<76 NM:i:2 MD:Z:48^A158 oR:Z:1 oH: [...]
-simulated.106 0 1 3610 255 17M1D57M1D90M1D15M1I38M * 0 0 TCGGGAGGATGGTGTTATTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCAGCTAGATTGAACGTAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTC 86I3(3I)16G'96H'2I7*5958:8H'1:<8I):<I)252:434I)588G'3H'I;+&99I(<I)464I)I.'I5)3796;I(I(6<<I)993;85;G'69I(47::I(F&H'.8I-&71I)I-&I1'I*8I(8:I/'5=69<1:75I0'97I0'I(:I/'34B;78893:I(6G'=:&75I/':@I'H';5;I)7<3:84849459974763;9 [...]
+simulated.105 0 1 348 255 48M1D76M1I82M * 0 0 ATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGACGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTG 9<1:59I)I0'3=3E&0I*7H'9I0'57848859IG0)%9I*E&5638I,I-&=768:8@::8I(I)I0'998:768;9I0'F'9;6I(35I'95I-&H'89876:9I(964I':/6654G'58&77788<7I'86F'<I(I(I(8<I8*&9<9276;H'64H'I<,'955I(6<I0'7=87I0'7I(I(796I0'534698G'<76 NM:i:2 MD:Z:48A158 oR:Z:1 oH:i [...]
+simulated.106 0 1 3610 255 17M1D57M1D90M1D15M1I38M * 0 0 TCGGGAGGATGGTGTTATTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCAGCTAGATTGAACGTAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTC 86I3(3I)16G'96H'2I7*5958:8H'1:<8I):<I)252:434I)588G'3H'I;+&99I(<I)464I)I.'I5)3796;I(I(6<<I)993;85;G'69I(47::I(F&H'.8I-&71I)I-&I1'I*8I(8:I/'5=69<1:75I0'97I0'I(:I/'34B;78893:I(6G'=:&75I/':@I'H';5;I)7<3:84849459974763;9 [...]
simulated.107 16 1 2449 255 63M1I106M * 0 0 TTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAACTCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGT )I@&.I9(I;8(I97:(I826;75=(I:0;69(I1445(I607855897958(I8(I(I)I)I%8;'H'I858?7(I:(I'I>(2I988;84875<95?6466(I87(I6'G18675<454684(I<'I9&*2II749)I65926677'0I(I80,:72>(I::&E2942 NM:i:1 MD:Z:169 oR:Z:1 oH:i:1 oP:i:2448 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.108 0 1 2272 255 127M1D52M1D13M * 0 0 CTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCTAATGAATACA 4897I0'1I(9746867I(66545:9I(4666G':I'I9*&4I0'G'89I(I(:889I>,'57:G'8:9I-&95I0'4I'56564986I(3I)842<43;5662I'7:;<76:<8536II1*&25H'I,I(7969I'I-&I(E&6940I'I.'I/';?=I(73I(75I'656:69:I'4I,8H'=<I'5<57 NM:i:2 MD:Z:127^C52^C13 oR:Z:1 oH:i:1 oP:i:2271 oS:A:F XE: [...]
+simulated.108 0 1 2272 255 127M1D52M1D13M * 0 0 CTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCTAATGAATACA 4897I0'1I(9746867I(66545:9I(4666G':I'I9*&4I0'G'89I(I(:889I>,'57:G'8:9I-&95I0'4I'56564986I(3I)842<43;5662I'7:;<76:<8536II1*&25H'I,I(7969I'I-&I(E&6940I'I.'I/';?=I(73I(75I'656:69:I'4I,8H'=<I'5<57 NM:i:2 MD:Z:127C52C13 oR:Z:1 oH:i:1 oP:i:2271 oS:A:F XE:i: [...]
simulated.109 0 1 6950 255 184M * 0 0 TATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATG 86I(96I2(3I(5486;283;I'5I(63:4I)I(7=96577<F';9;57I.&98G'79=I(8I)7I(64286I(I'6I.&F&11I)=<I;+&I)84498748:33:5I'63II1*&I/':I)56267>I(66;6I(;957:G';I(479=:6;:7I):5G'77<4I'9;I.&6I)I-&16I(<: NM:i:0 MD:Z:184 oR:Z:1 oH:i:1 oP:i:6949 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.110 0 1 4598 255 64M1I13M1D46M1D40M1I40M * 0 0 AGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGACATCAAATAGTGTACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGTCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTC <785?:5764G'I/'676I.'595I)I(9I)2:7I'64953588I(7I.&8H'8369G'27I'7'475:I/'5:483?C;H'2:8:7I.&H'=77I(77873:I0'388I(I(<;775I(796:I,:872I(5>E&7;II1*&I/'I(8I(4>66F&:777I*4'482699:II3*&796=I(4525I(876I:+&7I)998I)8 NM:i:4 MD:Z:77^A46^T80 [...]
+simulated.110 0 1 4598 255 64M1I13M1D46M1D40M1I40M * 0 0 AGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGACATCAAATAGTGTACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGTCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTC <785?:5764G'I/'676I.'595I)I(9I)2:7I'64953588I(7I.&8H'8369G'27I'7'475:I/'5:483?C;H'2:8:7I.&H'=77I(77873:I0'388I(I(<;775I(796:I,:872I(5>E&7;II1*&I/'I(8I(4>66F&:777I*4'482699:II3*&796=I(4525I(876I:+&7I)998I)8 NM:i:4 MD:Z:77A46T80 oR [...]
simulated.111 0 1 6191 255 14M1I25M1I64M1I20M1I29M1I35M * 0 0 CATCGCCGATAATCGATTCGCCAGGGATCAGCGGCAGTGCGGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACGTTATAGTGCGTCAGTAGACCGTGTGCTCGGAGACAAACGCTATCCGGTTTACCGCAACTAGCCCCCAACACCAAGGTGCGCATGGA 48?83H';:8E&97%9I(7<I)9I-&;;;:69D&679873G';7 at 38<<I-&:33I(96;7;8;I/'978748I-&77956I.':I(::I9*&5I)I.&666746+I'777689398380<7:;I'':7:8?99H'95:9I0'248974I(H'I0')H'64I)356;II1)&I*/6G'I)I)9;6655=I*4 NM:i:5 MD:Z:187 oR:Z:1 oH:i:1 oP:i:6190 oS:A [...]
-simulated.112 0 1 3568 255 50M1I1M1I8M1D38M1D90M1I24M * 0 0 TTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGTAGTGGTGTTATTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATAGTATTTCTAAATTGAAACTCCAGC I(:;6858I(I)G'I)5>I'66I.&2976G'I(I'I(68.916:I-&5I)&7&7I'3<F'8I5)758975I':44;I)<7I*78>5895I);35I)7I(I6)A8I'7I+4;8G'I/'I<+&716;<I'I)964I)88965;8G'79F&<855F'I(I)44I/'68I)I.'I.&I)7I(9;I.'55<<9:';8:I1(<9I-&I)9I1(:7I(;88 NM [...]
+simulated.112 0 1 3568 255 50M1I1M1I8M1D38M1D90M1I24M * 0 0 TTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGTAGTGGTGTTATTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATAGTATTTCTAAATTGAAACTCCAGC I(:;6858I(I)G'I)5>I'66I.&2976G'I(I'I(68.916:I-&5I)&7&7I'3<F'8I5)758975I':44;I)<7I*78>5895I);35I)7I(I6)A8I'7I+4;8G'I/'I<+&716;<I'I)964I)88965;8G'79F&<855F'I(I)44I/'68I)I.'I.&I)7I(9;I.'55<<9:';8:I1(<9I-&I)9I1(:7I(;88 NM [...]
simulated.113 0 1 7138 255 63M1I63M1I67M * 0 0 GTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGTCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAACTGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGT 7I.'I1(<37I(7H'74::E&98I)8;8679259=H'I.&5I.'6877I'I*5;>85;08966%64478:6579I)8I(624I/'9;69E&485G'736I'7G'I(638I(89?=58;2<58<ID/(&<9I'0I(45:26687I(G'3:I(84I9*&I(<:48<I(7I(87I/'?<9I(:5;I*I-&<:I1'9:7 NM:i:2 MD:Z:193 oR:Z:1 oH:i:1 oP:i:7137 oS:A:F XE:i:2 [...]
simulated.114 16 1 3385 255 203M * 0 0 TGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATT 79979=8&-I<:'I&F<86466(I2934;97'F'/I(1I937='I87777698899863587(I3539;',=I<8'H'+3II8'0I:6:8855'F7(I6&.I71'0I(I778<'H:=5='0I6'H8(I86547:32&E6'1I5)I8?8&E(I6*I4&.I(I5>8749',<I90=(1I(I'I77(I:48:63(I(I(I'I;9)I NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:3384 oS:A: [...]
simulated.115 0 1 7806 255 7M1I90M1I56M1I38M * 0 0 GCCCCCTAGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCAGTACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTT 5IG0)%4'7I'I1'964777:I)9=96548<4H'5;3I-&4?I-&I,&688I(8I(7999:>7I(I-&;H'I(;64829488I?-'<I(988I)I(;4&3525>1I1(99E&;I(7I(69I'657I(<7:944654I*=8I*8249732723;<6I-&>55;6I'4I):I'9;6I+5I2(497;;788I/'3F' NM:i:3 MD:Z:191 oR:Z:1 oH:i:1 oP:i:7805 oS:A:F XE:i [...]
-simulated.116 0 1 413 255 3M1D38M1I32M1I8M1D54M1D35M1I35M * 0 0 GCCGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCGATTAGTCCATGCAGAACGCGCACAGTTGAGGCTAAGGCCGTAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTACACGAATACTGTCTTTCTCCCACCTATACATGAAG DI(I,433785668I/'F':48H'57I'72I.&I'87767<&9G'758I(964387I(:8;979>8:E&97H'<&I'I(I(:9I7*4855456I)7;I(I?-'888I)8=I1(;656I0'>I)I+>98I.&8=6:66C9989<H'6I(H':84=9959I/':64:8I0'::5&346:H'435777:I-&85I-&7F&84779989I(6 NM:i:6 MD: [...]
-simulated.117 0 1 3269 255 2M1I46M1D164M * 0 0 CGTCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATG 65&7I(63:89I'I)5I'8I(;8I1(>1I(657::;574=6G'8H'I(6I5)6I'G'56:1G'7;I)I'346I/';<87I9+&6H';4I*I)7:687I?-'H'H'=I0'=<7:4I)6<:5526I-&7=I(I(747;75G':794=66H'I1(I1'8559I(5=86;;76=86=<686<I(76586I<,&63I(IG0)%8I/'>7;56=9E&95 NM:i:2 MD:Z:48^T1 [...]
+simulated.116 0 1 413 255 3M1D38M1I32M1I8M1D54M1D35M1I35M * 0 0 GCCGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCGATTAGTCCATGCAGAACGCGCACAGTTGAGGCTAAGGCCGTAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTACACGAATACTGTCTTTCTCCCACCTATACATGAAG DI(I,433785668I/'F':48H'57I'72I.&I'87767<&9G'758I(964387I(:8;979>8:E&97H'<&I'I(I(:9I7*4855456I)7;I(I?-'888I)8=I1(;656I0'>I)I+>98I.&8=6:66C9989<H'6I(H':84=9959I/':64:8I0'::5&346:H'435777:I-&85I-&7F&84779989I(6 NM:i:6 MD: [...]
+simulated.117 0 1 3269 255 2M1I46M1D164M * 0 0 CGTCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATG 65&7I(63:89I'I)5I'8I(;8I1(>1I(657::;574=6G'8H'I(6I5)6I'G'56:1G'7;I)I'346I/';<87I9+&6H';4I*I)7:687I?-'H'H'=I0'=<7:4I)6<:5526I-&7=I(I(747;75G':794=66H'I1(I1'8559I(5=86;;76=86=<686<I(76586I<,&63I(IG0)%8I/'>7;56=9E&95 NM:i:2 MD:Z:48T16 [...]
simulated.118 0 1 6674 255 187M * 0 0 GTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACA :79I)I'4678895;4:74;H'<I(I(/1746I(7 at 7:2I)85I<+&:I.':3;I1'9IH0)%689I(I(77269I'I(8563I(79I*:<:I8*&56:I(<I(739H'I(I(I(988G'I(8I8*&I):I(5=<9H':8955:G'=77;3I*861>9524=5:6I'I'7I/'3I(99;689I(789 NM:i:0 MD:Z:187 oR:Z:1 oH:i:1 oP:i:6673 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.119 0 1 8135 255 59M1I1M1I61M1I56M * 0 0 TATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACTACGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTCGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCG 5586:77G'865:=>284==I at -':96;I(I/'I(66I(669G'6I)I/'3688I'7;8&:&8I/'82;7I'H':7I)83286294I(6I);7G'3:6578I/'H'65I(77999I(8I'I(7%8<<88I(5697<I)2=I(<867:;4839I(I'H'I/'I(76986I(86I):I)918 NM:i:3 MD:Z:177 oR:Z:1 oH:i:1 oP:i:8134 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.120 16 1 7486 255 18M1I3M1I93M1I72M1I7M * 0 0 TTTAAGGCTAATTGATGCTATAGTCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTACTAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAAGTGTGGTG (2I'H)I33'H(I946;9%>9;&7'0I8<55'H'0I=8(1I'H'0I69'H'I)I'H59779<(I59'G(I;482)I87965'H5'G7(I'I579(I621&F96)I8(I(I6(I886%34<7480(I;8:8=325'H66<5(I6(I(IC778737;497'G'.I6'H61(I8'.I(I8575:<;566;'I%;4>'H68 NM:i:4 MD:Z:193 oR:Z:1 oH:i:1 oP:i:7485 [...]
simulated.121 0 2 161 255 98M1I106M * 0 0 ATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATACTGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCG ;H'I(75I<+&I(:37H'I1(I(H'98I):I-&I)8.6:I(8I);I'I(8<66563;I'569G'8I(I/':8I=,'E&7I)3I(I(::784I0'I)83*28:3457=8887I)59I(I2(7874H';8I(57I(97:667<:6;764:5:9I(145487598885:I0'F'I(2=6;:27I(I(I'5:966<77:I(:74I(<:8 NM:i:1 MD:Z:204 oR:Z:2 oH:i:1 oP:i:160 [...]
-simulated.122 16 1 1570 255 113M1I70M1D36M * 0 0 TATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCTATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAG 5740'0I(I887797696(I741558::97&-I45<756:)4I4'I807:(I(I(I;8&+:I566(I&*8I8'0I5)I<:48)I4842)I7(I:'I:)I<9959'I;8988&F'74?55<;8(I'I'/I)I6(I64)I'I832<6993)I;63;8:78:557539)I:6:2(I6;&.I1;6677)6I)I839;8(I6?664::(I:;6'I(I4&+;I:68 N [...]
-simulated.123 0 1 2950 255 95M1D20M1I82M * 0 0 CCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGATCTTATGTCTTCAATTTAGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCC G'6:I(6B84H'8H'6875552I(6I(686377=9I(766676I2(5I0'<I)8I(I(H'6 at 9I(:E&6<56775>:5756I'7566:I'I'I+6I,764I(666 at 1I'6I)I,&&8594843:;I-&D&2:I2(86I(I=,'I(74568:=;6:G'H'I'E&>939888;8:37I):63I.&62796:>6I/'I8*& NM:i:2 MD:Z:95^G102 oR:Z:1 oH:i:1 oP:i:2949 oS: [...]
+simulated.122 16 1 1570 255 113M1I70M1D36M * 0 0 TATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCTATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAG 5740'0I(I887797696(I741558::97&-I45<756:)4I4'I807:(I(I(I;8&+:I566(I&*8I8'0I5)I<:48)I4842)I7(I:'I:)I<9959'I;8988&F'74?55<;8(I'I'/I)I6(I64)I'I832<6993)I;63;8:78:557539)I:6:2(I6;&.I1;6677)6I)I839;8(I6?664::(I:;6'I(I4&+;I:68 N [...]
+simulated.123 0 1 2950 255 95M1D20M1I82M * 0 0 CCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGATCTTATGTCTTCAATTTAGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCC G'6:I(6B84H'8H'6875552I(6I(686377=9I(766676I2(5I0'<I)8I(I(H'6 at 9I(:E&6<56775>:5756I'7566:I'I'I+6I,764I(666 at 1I'6I)I,&&8594843:;I-&D&2:I2(86I(I=,'I(74568:=;6:G'H'I'E&>939888;8:37I):63I.&62796:>6I/'I8*& NM:i:2 MD:Z:95G102 oR:Z:1 oH:i:1 oP:i:2949 oS:A [...]
simulated.124 16 1 5766 255 222M * 0 0 CTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTT 57(I&F8::(I74<5(I67(I662<=;666)I)I:3(I(I6'H6:;596:89<'I;866'G356:;58/8;6(I565628(I:2(I(I994(I<69/880663<6=)I6<(I<(I78'I8'0I83'G&.I55'/I36:;'I7879597&.I&E&+;I55'.I=97&*8I9)I*I'I(I786:>55::'I5576(I9'I9)I2'I9&-I89(I'H;:85:=(I NM:i:0 [...]
-simulated.125 16 2 171 255 117M1I4M1D8M1I73M * 0 0 TAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATAGTTACATCTATATCGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGA 6'H663'I&,I(I(I:8(I9&.I(I<997(I:(I:(I(I4866986:(I654)I4'H'1I5:&+:I(I4(I8'I(I856:6&.I'I876185:;328447(I95'H'0I<776'F59&(I54D:8;:978'57;55<=265'G996;9;56<7>44(1I(I)I95046;=*I(I'H:7<8<<778(I697(I24&-I8/&+;I4 NM:i:3 MD:Z:121^A81 oR:Z:2 oH:i [...]
+simulated.125 16 2 171 255 117M1I4M1D8M1I73M * 0 0 TAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATAGTTACATCTATATCGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGA 6'H663'I&,I(I(I:8(I9&.I(I<997(I:(I:(I(I4866986:(I654)I4'H'1I5:&+:I(I4(I8'I(I856:6&.I'I876185:;328447(I95'H'0I<776'F59&(I54D:8;:978'57;55<=265'G996;9;56<7>44(1I(I)I95046;=*I(I'H:7<8<<778(I697(I24&-I8/&+;I4 NM:i:3 MD:Z:121A81 oR:Z:2 oH:i: [...]
simulated.126 16 2 174 255 130M1I60M * 0 0 CTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCACTGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGC 435)I'/I(I'I7;)I8'1I'G5838(I6(I2*I(I:7<=70;3(I4:7(I;(I&-I58&*9I)I:)I9*I)I54>27'/I(I96798774<:6588'G:4'I(1I:?68(I75&E4='G4;7;4:685;'27<3960(I7103?7987;6=6(2I'I(I6972758'I(I)I7;489;69:'I>85(I88 NM:i:1 MD:Z:190 oR:Z:2 oH:i:1 oP:i:173 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.127 16 1 2627 255 109M1D48M1D21M * 0 0 ACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCTTTGGTGCTATGTCCCCTAA 985688%)0HI7<(I@(2I63(I68:;49979:)I8;850A*I;978)I97:;96577586;&E588'I79:<<96586'G7'H768678:26:67'H5&,<I36'/I7,I',<I4;(I=08'/I(I61/;7:7(I:5'I*I6&+;I:89997)I37D(1I'I84799468&+;I9(I NM:i:2 MD:Z:109^T48^C21 oR:Z:1 oH:i:1 oP:i:2626 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.128 0 1 3292 255 207M * 0 0 GTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGAC *:66E&96:42567793I';F&I*6I9+&5I(I(8149I(9:I)I+75;I.'4;7:I8*&6I(67I'I*8798;I=,'I)I(;I0'56<3;I(;6:5592I/';7G'I'286698G'587<339I(I/'I.&7:58I(9 at 6768697598649;<F'74;86I9+&>9G'II3*&4I1(688598;I(6I(8I-&47I.&G'6764: NM:i:1 MD:Z:0T206 oR:Z:1 oH:i:1 oP:i:3 [...]
-simulated.129 0 1 7153 255 13M1I9M1D173M * 0 0 GCGCAACGTTAGACGATCATAGGAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACT 459;I*69I'665'5<79:66I*I+7I0'476<I(I(:9438636789;158756180E&4F'6:3I0'9458I(87:I'497I'6E&F&74BI'::<7::7836>7I<+&:6I(;I(77:22<:.I(I'77H'96I;+&I(783:4I'6I)22I1(539H'106I(I.'59I-&886I'7<<6I(8677I)888; NM:i:2 MD:Z:22^A173 oR:Z:1 oH:i:1 oP:i:7152 oS:A:F [...]
-simulated.130 0 1 3757 255 149M1D46M * 0 0 GTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGC 967I.'63I3(I(=I/'2=I(9887:49I'5I(8599I.'88I)I'464I'6<:699:8;4;3<7954:785I0'I*1:83D&58;I(I2(H'6I)75266887;7I(9H'2I(6<:8891H'7I(>5875:6II>0*'84;44682G'A5I)474:6687;464I0'<;58I)6;50I)74I.&7=I(I0'97: NM:i:1 MD:Z:149^G46 oR:Z:1 oH:i:1 oP:i:3756 oS:A:F XE:i:1 [...]
-simulated.131 0 1 6205 255 131M1D16M1D53M1I12M * 0 0 ATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCGGTTTCCGCAACTAGCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTACGTCGACAAGGGC ;I(52I'8I1'8+4<:9I(;9>91675898956I2(75:I(8=4<;68I0'338566I3(79784I/'7I'58I:+&4I)I/'27779:I)8;574:1;7<9588<5G'7;?7449F'877<I/'3?:866DI(I0'I(38I'7<67IC.(I':0I(I*I'5746979I(5:=I.'5I(I3(H'78I(2878837F&9:7&77;861I)I0'; NM:i:3 MD:Z [...]
+simulated.127 16 1 2627 255 109M1D48M1D21M * 0 0 ACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCTTTGGTGCTATGTCCCCTAA 985688%)0HI7<(I@(2I63(I68:;49979:)I8;850A*I;978)I97:;96577586;&E588'I79:<<96586'G7'H768678:26:67'H5&,<I36'/I7,I',<I4;(I=08'/I(I61/;7:7(I:5'I*I6&+;I:89997)I37D(1I'I84799468&+;I9(I NM:i:2 MD:Z:109T48C21 oR:Z:1 oH:i:1 oP:i:2626 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.128 0 1 3292 255 207M * 0 0 GTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGAC *:66E&96:42567793I';F&I*6I9+&5I(I(8149I(9:I)I+75;I.'4;7:I8*&6I(67I'I*8798;I=,'I)I(;I0'56<3;I(;6:5592I/';7G'I'286698G'587<339I(I/'I.&7:58I(9 at 6768697598649;<F'74;86I9+&>9G'II3*&4I1(688598;I(6I(8I-&47I.&G'6764: NM:i:1 MD:Z:T206 oR:Z:1 oH:i:1 oP:i:32 [...]
+simulated.129 0 1 7153 255 13M1I9M1D173M * 0 0 GCGCAACGTTAGACGATCATAGGAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACT 459;I*69I'665'5<79:66I*I+7I0'476<I(I(:9438636789;158756180E&4F'6:3I0'9458I(87:I'497I'6E&F&74BI'::<7::7836>7I<+&:6I(;I(77:22<:.I(I'77H'96I;+&I(783:4I'6I)22I1(539H'106I(I.'59I-&886I'7<<6I(8677I)888; NM:i:2 MD:Z:22A173 oR:Z:1 oH:i:1 oP:i:7152 oS:A:F X [...]
+simulated.130 0 1 3757 255 149M1D46M * 0 0 GTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGC 967I.'63I3(I(=I/'2=I(9887:49I'5I(8599I.'88I)I'464I'6<:699:8;4;3<7954:785I0'I*1:83D&58;I(I2(H'6I)75266887;7I(9H'2I(6<:8891H'7I(>5875:6II>0*'84;44682G'A5I)474:6687;464I0'<;58I)6;50I)74I.&7=I(I0'97: NM:i:1 MD:Z:149G46 oR:Z:1 oH:i:1 oP:i:3756 oS:A:F XE:i:1 [...]
+simulated.131 0 1 6205 255 131M1D16M1D53M1I12M * 0 0 ATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCGGTTTCCGCAACTAGCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTACGTCGACAAGGGC ;I(52I'8I1'8+4<:9I(;9>91675898956I2(75:I(8=4<;68I0'338566I3(79784I/'7I'58I:+&4I)I/'27779:I)8;574:1;7<9588<5G'7;?7449F'877<I/'3?:866DI(I0'I(38I'7<67IC.(I':0I(I*I'5746979I(5:=I.'5I(I3(H'78I(2878837F&9:7&77;861I)I0'; NM:i:3 MD:Z [...]
simulated.132 16 1 280 255 55M1I30M1I112M * 0 0 ATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATACTGGACGCACAAAATCATCTTGGGATAGGACGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCA 45776;)I;9)I=(I7654(I8(I(I(I)I',=I7928(I97&-I55;:6::'IA&83(I:==965&+<I<<:57(I&.I966(I7%'I9(I5'1I65::8947'+3II6(I(I8:=9'/I'0I6:7<6944 at 6(I'H(2I870=39976(1I'F848(I33'H55(1I)I:885;;5'G<6;'I6689<3(I:92264 NM:i:2 MD:Z:197 oR:Z:1 oH:i:1 oP:i:279 oS:A: [...]
simulated.133 0 1 928 255 71M1I111M * 0 0 GATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATCGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCG 69;77I/'I(88I.'31I(1:?;:;9717:758>58;9I(85;;89I'47478:89:965I(6I.&88G'8)I(I0':6538I*I.&I'9I1(42:;I(2I.&:35876I1(2;78989I)62I)<I(;;597I'I(65824?4I(65I;+&49E&46595I/'8I(44I2(69I*64:8577 NM:i:1 MD:Z:182 oR:Z:1 oH:i:1 oP:i:927 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.134 0 1 1906 255 89M1I54M1I27M * 0 0 TCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGAGTCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATAGTTTGCTAATAACCCAATGTCGCCCCTC 8795I)99G'I(97;I(745I';67=8I(6H';I(48:I*8=9I(786=9686I(348:I;+&95I(779;69:6I(5D&7I-&I-&79&765E&8892F'=I(6:<83II4+'6:I(969=9H'9599869>586;I)5777=&I.&9:3I(7I'I-&H'64:89I=,':7 NM:i:2 MD:Z:170 oR:Z:1 oH:i:1 oP:i:1905 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.135 16 1 6068 255 30M1I46M1D127M * 0 0 TACGGAGAGCTGGGACCTACTCAGCCGCCACTGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATT 448)I39;7<7(1I3(I97<95=8(I;(I5%56'H3675&*1II6&+;I658'I<:4'.I&D:548:48;;695(I9*6I&-I866:>67(I4857+I24&-I;77'/I248;6<6774765566655'H<49'I746(I:?'H5(3I:44597(I7@@>;9255;8:65&.I54;(I6675:;;'/I895389'0I3/=<@(I NM:i:2 MD:Z:76^C127 oR:Z:1 oH:i:1 [...]
-simulated.136 0 1 4210 255 72M1D59M1D31M1D30M * 0 0 CGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGACGTTAGGTGGCCTCTATTACGCCATCGAGATGCGTTCGCTTTAGTGACGTGATATAGTG 5I/'6:I(8I(:572;6976386;I)I1(5I.&F'G'I)76<877208:776;=E&I-&23I)<83:I(4I(C?;I.&5;I9+&7;88<<539F'I0'I,&;47I'767:I'I1(<68684::8<8I(9I)D58;H'9I)6I*F'9777H':16I(3835::B5566I(68;I.&98687594758354838 NM:i:3 MD:Z:72^G59^G31^A30 oR:Z:1 oH:i:1 oP:i:4209 oS: [...]
+simulated.135 16 1 6068 255 30M1I46M1D127M * 0 0 TACGGAGAGCTGGGACCTACTCAGCCGCCACTGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATT 448)I39;7<7(1I3(I97<95=8(I;(I5%56'H3675&*1II6&+;I658'I<:4'.I&D:548:48;;695(I9*6I&-I866:>67(I4857+I24&-I;77'/I248;6<6774765566655'H<49'I746(I:?'H5(3I:44597(I7@@>;9255;8:65&.I54;(I6675:;;'/I895389'0I3/=<@(I NM:i:2 MD:Z:76C127 oR:Z:1 oH:i:1 [...]
+simulated.136 0 1 4210 255 72M1D59M1D31M1D30M * 0 0 CGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGACGTTAGGTGGCCTCTATTACGCCATCGAGATGCGTTCGCTTTAGTGACGTGATATAGTG 5I/'6:I(8I(:572;6976386;I)I1(5I.&F'G'I)76<877208:776;=E&I-&23I)<83:I(4I(C?;I.&5;I9+&7;88<<539F'I0'I,&;47I'767:I'I1(<68684::8<8I(9I)D58;H'9I)6I*F'9777H':16I(3835::B5566I(68;I.&98687594758354838 NM:i:3 MD:Z:72G59G31A30 oR:Z:1 oH:i:1 oP:i:4209 oS:A:F [...]
simulated.137 0 1 1792 255 216M * 0 0 CTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTG 8I'59I/'H';I(89794786:43667I(264:2I*64I2(I0'H';77I;+&:756I'6I(G'I(:I(576G'456:G'I)37;64;49648I'I(457I(I1(4F'78;I(57668I)27H'I'768I'944I(9;84;I(5F'5I(342I(973I(7766;268I(:7?4I:+&9:I(74983:4=I'5H':I/'I0';799;I)879:I'76 NM:i:0 MD:Z:216 oR:Z [...]
-simulated.138 16 1 976 255 41M1D157M * 0 0 ATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATAC 9:786;:;59.8*I4'/I::(I;(I'/I3:<58(I'0I)I3*I6337'H1'.I87:>:7(2I7955876(I6:(I5(I8;8<4)I(I:<:669:'I;8'-?I22(I9;787&.I6)I85'0I69*I6558576985:6;'I'0I6;=938<(I78)I684987;5&+;I'F948:9:287856;'H8'H9:4387:9< NM:i:1 MD:Z:41^C157 oR:Z:1 oH:i:1 oP:i:975 oS:A:R X [...]
+simulated.138 16 1 976 255 41M1D157M * 0 0 ATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATAC 9:786;:;59.8*I4'/I::(I;(I'/I3:<58(I'0I)I3*I6337'H1'.I87:>:7(2I7955876(I6:(I5(I8;8<4)I(I:<:669:'I;8'-?I22(I9;787&.I6)I85'0I69*I6558576985:6;'I'0I6;=938<(I78)I684987;5&+;I'F948:9:287856;'H8'H9:4387:9< NM:i:1 MD:Z:41C157 oR:Z:1 oH:i:1 oP:i:975 oS:A:R XE [...]
simulated.139 16 1 2571 255 99M1I3M1I97M1I7M * 0 0 TAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGTACACTGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGACGGGGCG 3(I7)I6'+3II<58)I8989>:=9'1I(I>:58;67'I7=(I966:647(I45:8884987&*2II;;(I5&-I6:(I76;>7;6997'G59;:<4(I&77:*5(I>6;68<2>99449*I;<=(I:34598:858(I;(I<9::7591:75;(I6&+:I:3&.I:(1I&*8I68'I61='/I(I8:9 at 686'H56)I'I&=&+:I35 NM:i:3 MD:Z:206 oR:Z: [...]
simulated.140 0 1 8606 255 224M * 0 0 AGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAG 5<H'699I<,'I/'I'<925;I=,'9785776I.&:95057797;887I(7F'881H'8I(787I0':I(6I)06E&76.I)I(I'958I at -'I)?=I-&I)I2(I(7I'I0'I0'G'I.&<96748:89I3(4H'8<I(:8I(I(977I)I0'5879?:3I>,'::8G'<7596;66978I(=8I.&26;I(8453466I(I(766594I(5623>9;63I)7 NM:i [...]
simulated.141 0 1 5311 255 66M1I138M * 0 0 AGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTCGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAAC 89782793I.&63I0':I0'G'I(8I'7I':;646789I2(7785;:8I?-'5I'9G'<8;I/'7?'87966898G'16I(9<8;839I)99=I.&:42=7I(9I'8I0':I)29II1)&2<:5<I(:=996366I';3F&57895:I(8645;789:G'I(5<6I(5I(9<<588I(H'=F'4<587I'75:543;5I(8I-&3 NM:i:1 MD:Z:204 oR:Z:1 oH:i:1 oP:i:53 [...]
-simulated.142 0 1 2828 255 7M1D188M * 0 0 TCGATATAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGA 977378:I7*=8II1*&;:3564I(575I)8/1I(;6:3;I)I(6I*4<877I)=;I)74I(:6=3I/'?758=I)58668855677563I(87764I=,'5I'3476I(95;1I'6:5;I.&86I(65;9I)5I(9<58967I(<G'3776<185G':8;985I0':I1(7I(5I(I(I(;96I(9I(73=58< NM:i:1 MD:Z:7^A188 oR:Z:1 oH:i:1 oP:i:2827 oS:A:F XE:i:1 X [...]
-simulated.143 16 1 8516 255 1M1I100M1D77M1D16M * 0 0 TAGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGCCAGCCCTTAAAG 9((I9(I68(I5&.I:8;0(I8)I;6058::)I(I46<39(I)I&)0HI6<7:&+;I67'F3905'0I9(1I1)I<'G5658'G6(I;=/(I9'H59;'- at I+I(I55979&+:I377<87:'0I:9:>6;2<5:8;4(I='H47>'H8(I>87'.I8'I;,I9;'I827(I'I(I;85)5I(I47(3I(I&-I5 NM:i:3 MD:Z:101^C77^G16 oR:Z:1 oH:i:1 oP:i:8515 [...]
-simulated.144 0 1 8726 255 122M1I6M1D40M * 0 0 GCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCACTAGCAAGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACG 76<5;;685;I-&;G'::F'19I(I(:69I)I/'<8;7259I8*&725H'47170=56<66G';:I0'47;H'4;8799:I(I(98:766I(6;;78<49=I(8I)I)8I(II2*&66I'37&8755I(I,4F&I-&74=H'87497H';:H'5I.&I-&H'49497:7 NM:i:2 MD:Z:128^G40 oR:Z:1 oH:i:1 oP:i:8725 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.142 0 1 2828 255 7M1D188M * 0 0 TCGATATAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGA 977378:I7*=8II1*&;:3564I(575I)8/1I(;6:3;I)I(6I*4<877I)=;I)74I(:6=3I/'?758=I)58668855677563I(87764I=,'5I'3476I(95;1I'6:5;I.&86I(65;9I)5I(9<58967I(<G'3776<185G':8;985I0':I1(7I(5I(I(I(;96I(9I(73=58< NM:i:1 MD:Z:7A188 oR:Z:1 oH:i:1 oP:i:2827 oS:A:F XE:i:1 XS [...]
+simulated.143 16 1 8516 255 1M1I100M1D77M1D16M * 0 0 TAGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGCCAGCCCTTAAAG 9((I9(I68(I5&.I:8;0(I8)I;6058::)I(I46<39(I)I&)0HI6<7:&+;I67'F3905'0I9(1I1)I<'G5658'G6(I;=/(I9'H59;'- at I+I(I55979&+:I377<87:'0I:9:>6;2<5:8;4(I='H47>'H8(I>87'.I8'I;,I9;'I827(I'I(I;85)5I(I47(3I(I&-I5 NM:i:3 MD:Z:101C77G16 oR:Z:1 oH:i:1 oP:i:8515 o [...]
+simulated.144 0 1 8726 255 122M1I6M1D40M * 0 0 GCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCACTAGCAAGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACG 76<5;;685;I-&;G'::F'19I(I(:69I)I/'<8;7259I8*&725H'47170=56<66G';:I0'47;H'4;8799:I(I(98:766I(6;;78<49=I(8I)I)8I(II2*&66I'37&8755I(I,4F&I-&74=H'87497H';:H'5I.&I-&H'49497:7 NM:i:2 MD:Z:128G40 oR:Z:1 oH:i:1 oP:i:8725 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.145 16 1 5688 255 209M * 0 0 TAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCT 97'I'I7)I6'H99'/I5&-I6481'.I94298*I)I:'H:959(I187<3'I499*I=5=864&*2II(I88)I09454'I(I489(I9567(I97(I542;;:658&D(I84'H(I;(I5<95:5655;(I9269)I<6;;44569>8)I6865=7'H54'G(I923'G9;994=5988435'H59'I6'G9<&E9'1I:6(I&.I& NM:i:1 MD:Z:208G oR:Z:1 oH:i:1 oP [...]
simulated.146 0 1 8535 255 121M1I70M * 0 0 TGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAACGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGG <7I(88<79:2I(I';8873I(F&II2*&8754I at -'69I(77=:I.&1I/'6I)7I)762:I(;I'8:7I(6I(7<8I8*&I1'G'7<>98I9+&775:646I1(838588885<:48I(&6I(;86I*6I)678I.&8I(6I(2;G'7;9I'I*I(825I<,'I(98I.&E&I0'I(4G'I-&I1(I(I' NM:i:1 MD:Z:191 oR:Z:1 oH:i:1 oP:i:8534 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.147 16 1 5042 255 51M1I41M1D87M1I38M * 0 0 CATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCGTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATACTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCG 6?&+9I)I5=7=66=6'I648'0I;6)I=39'H7:777)I:8)I:766'F8*6::>2687)I37734)I=99)I48'G)I8'0I9'I6;72:7(-7II<=876;37;3&E95:>'/I735(I7*I5889(I8995',>I6(I'.I585(I:?9&F)I8='G'I(2I817&-I(I(I664='6<876658'0I6;8(I<(I)I:&E988;(I9'I79964 [...]
+simulated.147 16 1 5042 255 51M1I41M1D87M1I38M * 0 0 CATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCGTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATACTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCG 6?&+9I)I5=7=66=6'I648'0I;6)I=39'H7:777)I:8)I:766'F8*6::>2687)I37734)I=99)I48'G)I8'0I9'I6;72:7(-7II<=876;37;3&E95:>'/I735(I7*I5889(I8995',>I6(I'.I585(I:?9&F)I8='G'I(2I817&-I(I(I664='6<876658'0I6;8(I<(I)I:&E988;(I9'I79964 [...]
simulated.148 16 1 6323 255 182M * 0 0 AGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCAT 9484'0I55:928(I(I&-I(I77)I10:7%)0GI(I88(I'I)I87464:<)I864'.I9)I&.I(I8;(I5809;9:'F35:8=:4=:&F(1I'H8789'/I7:6'H72(I698',=I8:'H:C(I(I(I999(I99'H?66+I64=47<97)I4945(I66(I'H4799793;3:754> NM:i:0 MD:Z:182 oR:Z:1 oH:i:1 oP:i:6322 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.149 16 1 7662 255 51M1I166M1I3M * 0 0 TGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGTAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATACGT 4<696388(I<36(I64)4I668=6'0I=97)I74'I668:9=(I(I'H51&'H75(I(I77678'I;59'I66:498(I(I(I63:'H397579>*I)I(I53(2I559',<I:(I'1I(I'H7654'H4884<(I88&.I559:&*1II65'I'/I8788;87*I675<54977(I965'/I46(1I'/I7;;(I4)I4896654'G'/I:(I'G:%5< [...]
-simulated.150 16 1 6682 255 84M1D56M1I33M1D29M * 0 0 ACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATAGTAGGAGAGCACATACACCGGTGGGTAATACGCGTACACCGTGGGCGTCTTAACCCTACCGGC 753723<97763)I9'I'IB847:)I75895(I:3',<I4'.I768&-I;'+4II98:(I(I0;8:4(I'I69:8)I39)I8<7*7I461(I:'H628(I(I'G(I:76(I(I0'-AI'H9(I5;4>'I76<;7=)I286'86'G87;;546558>;(I*I4&.I6(I;9;;;7C368(I98&-I4:<8'I(I(2I34'H(I4 NM:i:3 MD:Z:84^G89^T29 oR:Z:1 o [...]
-simulated.151 0 2 23 255 96M1D4M1I96M * 0 0 TGGACTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGTCGTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTT 5I(6637<78I(I'AI.':7>:07250I(I(9347<I0'87I(4495I(9958:33;6H'>59778;;8I(2I)I)587I*I(4377<678:7I'9I+<5&I'F&I.'62;77;93I/'9<64;7I(<I4);I(98;:;I(I'76I:+&I(667G'I.&I(F':8I(6I-&H'9:;9I(<I)8H'I)697374;2H' NM:i:2 MD:Z:96^G100 oR:Z:2 oH:i:1 oP:i:22 oS:A:F XE: [...]
-simulated.152 0 1 3752 255 47M1D160M * 0 0 CAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTA =;<6:957I4)59I2(H'1I-&26I(89;;6::I(5I'535;I1(7BCI(067I)8=683286:/794767977;<I.'G'47<8I'685I'I/'E&3I'6889698<<8I'7H'9I)88:5594I'6I(94;55<7II9.)&98929354I(I(7I'84497885>987I.'<93<I(96:6H':9I.&68I)I1'584;2739=5 NM:i:1 MD:Z:47^G160 oR:Z:1 oH:i:1 [...]
-simulated.153 0 1 7797 255 3M1D6M1D83M1I53M1D32M1I3M1D15M * 0 0 TACGGATAGCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCGTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGTGTAGTAGTGTATAACTCTGAATAAGAAGATACCACCATAGCGATCCCGT :27I+846:ID.(77I(I0';274967I(;56489:39I(678I-&54I0'I/'769I)7I)8949746I'I1(:F&F'577769779I at -'&9I(46;I'I(9687>826I2(87I'5I':I)79I(867G'551679729I'38C729;8=8;788<:I(9464=I';G'8I'68=)I'5I,9887899:I1'81 NM:i:6 MD:Z:3^G6^C136^G35^C15 oR [...]
+simulated.150 16 1 6682 255 84M1D56M1I33M1D29M * 0 0 ACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATAGTAGGAGAGCACATACACCGGTGGGTAATACGCGTACACCGTGGGCGTCTTAACCCTACCGGC 753723<97763)I9'I'IB847:)I75895(I:3',<I4'.I768&-I;'+4II98:(I(I0;8:4(I'I69:8)I39)I8<7*7I461(I:'H628(I(I'G(I:76(I(I0'-AI'H9(I5;4>'I76<;7=)I286'86'G87;;546558>;(I*I4&.I6(I;9;;;7C368(I98&-I4:<8'I(I(2I34'H(I4 NM:i:3 MD:Z:84G89T29 oR:Z:1 oH: [...]
+simulated.151 0 2 23 255 96M1D4M1I96M * 0 0 TGGACTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGTCGTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTT 5I(6637<78I(I'AI.':7>:07250I(I(9347<I0'87I(4495I(9958:33;6H'>59778;;8I(2I)I)587I*I(4377<678:7I'9I+<5&I'F&I.'62;77;93I/'9<64;7I(<I4);I(98;:;I(I'76I:+&I(667G'I.&I(F':8I(6I-&H'9:;9I(<I)8H'I)697374;2H' NM:i:2 MD:Z:96G100 oR:Z:2 oH:i:1 oP:i:22 oS:A:F XE:i [...]
+simulated.152 0 1 3752 255 47M1D160M * 0 0 CAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTA =;<6:957I4)59I2(H'1I-&26I(89;;6::I(5I'535;I1(7BCI(067I)8=683286:/794767977;<I.'G'47<8I'685I'I/'E&3I'6889698<<8I'7H'9I)88:5594I'6I(94;55<7II9.)&98929354I(I(7I'84497885>987I.'<93<I(96:6H':9I.&68I)I1'584;2739=5 NM:i:1 MD:Z:47G160 oR:Z:1 oH:i:1 [...]
+simulated.153 0 1 7797 255 3M1D6M1D83M1I53M1D32M1I3M1D15M * 0 0 TACGGATAGCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCGTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGTGTAGTAGTGTATAACTCTGAATAAGAAGATACCACCATAGCGATCCCGT :27I+846:ID.(77I(I0';274967I(;56489:39I(678I-&54I0'I/'769I)7I)8949746I'I1(:F&F'577769779I at -'&9I(46;I'I(9687>826I2(87I'5I':I)79I(867G'551679729I'38C729;8=8;788<:I(9464=I';G'8I'68=)I'5I,9887899:I1'81 NM:i:6 MD:Z:3G6C136G35C15 oR:Z:1 [...]
simulated.154 16 1 8097 255 43M1I19M1I35M1I99M * 0 0 ACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTACTAATGTGAGTCTCGAAAACGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACGAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCC 6)I5;8:76'G(I*I:75)I66(I(I65:>'H7294:67=;3:%45)I5659283965;&*8I)7755&D&-I(I38(I34:)I9'H'1I9958(I695&99&-I93;7'G(I56&D><59:=87(I8(I66)I93<612'0I(I86'I9536;(I6'I(I27652?'H2>5;6)I5:'I595:996;:8)I*I'I(2I NM:i:3 MD:Z:196 oR:Z:1 oH:i:1 oP:i:8096 [...]
-simulated.155 0 2 156 255 35M1D60M1I19M1D39M1I38M * 0 0 CTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGACTTTAATATGATGTCGTCGTCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACGTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAG <453;:F&G'48I:+&I*?63I(I.&I(H'7:I*5I,I(6;=5I(6I)8F'I(87;77239H'468I(<I'I0'=4I>,'H';I'7H'I)97396(I3(I(8=;4842:<<9>75D<9I)I/'84;<I)77H'78I'584<:76479;71;5;5&H'986<<75<:6759I0'I)G':874594H'I)I(;57 NM:i:4 MD:Z:35^G79^C77 oR:Z:2 oH:i:1 oP:i:155 oS [...]
-simulated.156 16 1 4516 255 4M1I37M1D23M1I43M1D88M * 0 0 CGTCGTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTGCCGCTAGTCGGTGATCACTTCGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCG 8867&7:88<'/I;(I7?(I'F8976:6(I83'G<68837=:,I5'H7787/94'HD7<:85;(I''I:9'H4&.I6;<:(I77588<77=86(I&-I885&-I58;(IC5'H584'I849895=4)I5'0I3(I:9;5'H87(I55679&-I8849:6(I7*I381:4(2I'I709'G:8744<'/I39='F(I5: NM:i:4 MD:Z:41^T66^G88 oR:Z:1 oH:i:1 oP [...]
-simulated.157 16 1 204 255 73M1I94M1D10M1D15M * 0 0 GGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTAGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGTGTGTCGCAAAATGGCCTAGCAA (I67870776>(I8'H5)I'H889'G)I84985(I&)/:II7;6*I'H:9&E'G'0I'I;5(I=<42'0I8<6'4'F563698(I75(I2(I745;(I8'H'I'H(I&*8I8715'G76'/I=7;689>)I3:4'I597>7:&*8I5873:)I&.I:99)I5'G8'I4,I98949487(/DI/*I'G8<38'F NM:i:3 MD:Z:167^G10^A15 oR:Z:1 oH:i:1 oP:i:203 oS:A: [...]
-simulated.158 0 1 2588 255 20M1D140M1I65M * 0 0 TAGTAGTATTTAATGCTCATGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGTATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGA 46375637I/'G'74883<8D9;E&6:65>63I(553=5:57;6II1)&76I'5I1(22I)6285;=>3?9I):55684I(8453I(6:55=:4986641I)958I';:;87233<<F&6G'59475:667:94H'4I>,'07I/'9I/'I>,'88I)2<(6I0'I);994::9I'23I)G'0I?-'467386I'<1I(I2(E&;:6;:498I=,'8 [...]
-simulated.159 0 1 880 255 53M1D89M1I67M * 0 0 CCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGACGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTT I,E&457<8:I(I(66;:8I'348I:+&<I'>2:79629974:I at -'I)4788I,I(83I1'43I'48;66972/97661=<699I(7:787:I(8;585:47:556I(4I/'87I(6I(I0'66:79I(I2(I(<I1'674)6I)8I/':7686:I1'<9;757;I(57I)4I)66382I'I'57779<1H'98I9+&67I'77357I' NM:i:2 MD:Z:53^C156 oR:Z [...]
-simulated.160 0 1 3091 255 50M1D93M1D42M * 0 0 CCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATG I,H'<98:518527I*I'I(G'5859672<56;9I(658I/'95975483I,II1)&669:413<7I(;;978;489I'871I(:;::3I(65G'967H'I/'87I(I'3I(859I1'::I.'I)G'I'I(;8I9+&5=>7I(IE/(8G'77I0':;8I>,'I)89:I(2I(I<,'478I*7485 NM:i:2 MD:Z:50^G93^A42 oR:Z:1 oH:i:1 oP:i:3089 oS:A:F XE:i:3 XS:i:0 XI:i:0
-simulated.161 16 1 4602 255 83M1D113M * 0 0 ATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGT 577899(I'/I965&-I:44(I'H:)I76<(I:;58758;(I9&.I9'H7769(I27(I57757&-I2C:4=3(I4(I69:;7+I'H45:(I466848(1I<65(I)I;3781'I5988(3I5895'G65(I84'+4II(3I'I2'F2763'G:467(I>:524498&*3II1957&E0677)I?76',>I5)I;9 NM:i:1 MD:Z:83^G113 oR:Z:1 oH:i:1 oP:i:4601 oS:A:R XE: [...]
-simulated.162 0 1 2702 255 30M1D108M1D67M * 0 0 TCGCTTCGGACAGCATAGTGATTCGGGGTGTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATG 659<I)9I*96:7:;935:72I'=I;+&57I,6I-&I<,':2I':59I/'I(6876587I'36I'F&4I<+&;76:85I(>;I(I/'I'5:1;:A;9I<+&:I(;I=,';I.&75:;I(7;6239;:8979:I<,&9;ID.(:46:8:G'808H'497I'726;9I)G'6E&9;842I'==I(83I(7<63I0'79679I(3:41 NM:i:2 MD:Z:30^T108^A67 oR:Z:1 o [...]
+simulated.155 0 2 156 255 35M1D60M1I19M1D39M1I38M * 0 0 CTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGACTTTAATATGATGTCGTCGTCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACGTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAG <453;:F&G'48I:+&I*?63I(I.&I(H'7:I*5I,I(6;=5I(6I)8F'I(87;77239H'468I(<I'I0'=4I>,'H';I'7H'I)97396(I3(I(8=;4842:<<9>75D<9I)I/'84;<I)77H'78I'584<:76479;71;5;5&H'986<<75<:6759I0'I)G':874594H'I)I(;57 NM:i:4 MD:Z:35G79C77 oR:Z:2 oH:i:1 oP:i:155 oS:A [...]
+simulated.156 16 1 4516 255 4M1I37M1D23M1I43M1D88M * 0 0 CGTCGTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTGCCGCTAGTCGGTGATCACTTCGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCG 8867&7:88<'/I;(I7?(I'F8976:6(I83'G<68837=:,I5'H7787/94'HD7<:85;(I''I:9'H4&.I6;<:(I77588<77=86(I&-I885&-I58;(IC5'H584'I849895=4)I5'0I3(I:9;5'H87(I55679&-I8849:6(I7*I381:4(2I'I709'G:8744<'/I39='F(I5: NM:i:4 MD:Z:41T66G88 oR:Z:1 oH:i:1 oP:i [...]
+simulated.157 16 1 204 255 73M1I94M1D10M1D15M * 0 0 GGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTAGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGTGTGTCGCAAAATGGCCTAGCAA (I67870776>(I8'H5)I'H889'G)I84985(I&)/:II7;6*I'H:9&E'G'0I'I;5(I=<42'0I8<6'4'F563698(I75(I2(I745;(I8'H'I'H(I&*8I8715'G76'/I=7;689>)I3:4'I597>7:&*8I5873:)I&.I:99)I5'G8'I4,I98949487(/DI/*I'G8<38'F NM:i:3 MD:Z:167G10A15 oR:Z:1 oH:i:1 oP:i:203 oS:A:R [...]
+simulated.158 0 1 2588 255 20M1D140M1I65M * 0 0 TAGTAGTATTTAATGCTCATGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGTATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGA 46375637I/'G'74883<8D9;E&6:65>63I(553=5:57;6II1)&76I'5I1(22I)6285;=>3?9I):55684I(8453I(6:55=:4986641I)958I';:;87233<<F&6G'59475:667:94H'4I>,'07I/'9I/'I>,'88I)2<(6I0'I);994::9I'23I)G'0I?-'467386I'<1I(I2(E&;:6;:498I=,'8 [...]
+simulated.159 0 1 880 255 53M1D89M1I67M * 0 0 CCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGACGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTT I,E&457<8:I(I(66;:8I'348I:+&<I'>2:79629974:I at -'I)4788I,I(83I1'43I'48;66972/97661=<699I(7:787:I(8;585:47:556I(4I/'87I(6I(I0'66:79I(I2(I(<I1'674)6I)8I/':7686:I1'<9;757;I(57I)4I)66382I'I'57779<1H'98I9+&67I'77357I' NM:i:2 MD:Z:53C156 oR:Z: [...]
+simulated.160 0 1 3091 255 50M1D93M1D42M * 0 0 CCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATG I,H'<98:518527I*I'I(G'5859672<56;9I(658I/'95975483I,II1)&669:413<7I(;;978;489I'871I(:;::3I(65G'967H'I/'87I(I'3I(859I1'::I.'I)G'I'I(;8I9+&5=>7I(IE/(8G'77I0':;8I>,'I)89:I(2I(I<,'478I*7485 NM:i:2 MD:Z:50G93A42 oR:Z:1 oH:i:1 oP:i:3089 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.161 16 1 4602 255 83M1D113M * 0 0 ATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGT 577899(I'/I965&-I:44(I'H:)I76<(I:;58758;(I9&.I9'H7769(I27(I57757&-I2C:4=3(I4(I69:;7+I'H45:(I466848(1I<65(I)I;3781'I5988(3I5895'G65(I84'+4II(3I'I2'F2763'G:467(I>:524498&*3II1957&E0677)I?76',>I5)I;9 NM:i:1 MD:Z:83G113 oR:Z:1 oH:i:1 oP:i:4601 oS:A:R XE:i [...]
+simulated.162 0 1 2702 255 30M1D108M1D67M * 0 0 TCGCTTCGGACAGCATAGTGATTCGGGGTGTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATG 659<I)9I*96:7:;935:72I'=I;+&57I,6I-&I<,':2I':59I/'I(6876587I'36I'F&4I<+&;76:85I(>;I(I/'I'5:1;:A;9I<+&:I(;I=,';I.&75:;I(7;6239;:8979:I<,&9;ID.(:46:8:G'808H'497I'726;9I)G'6E&9;842I'==I(83I(7<63I0'79679I(3:41 NM:i:2 MD:Z:30T108A67 oR:Z:1 oH: [...]
simulated.163 0 1 2202 255 105M1I14M1I71M * 0 0 CTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGACCTTTTCTTTAAGAGTTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGG 7I)8:II7-(%58:4I<,&37 at 4I'387655592744:65I)::I1(81;<I(463;=9767;7993I'I(7<4I/'8I(68959;8I(:96587;I(6:4:I';)I)I at -'9I.&I(96%I)I'6553I9+&695I(9>8I0'7=I1(@E&:>6:59:6I'8I(676525<;899I(697675567568I, NM:i:2 MD:Z:190 oR:Z:1 oH:i:1 oP:i:2201 oS:A:F XE:i:3 XS:i [...]
-simulated.164 0 1 4997 255 40M1D46M1I81M1D4M1I33M * 0 0 AAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGTAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGTCGACTTCACTCCCCAGGAAATCACCGCTAATTGCAA I):77A:66I1'7I.&;494:8>I)7:8I'8;I(96I.&7II5+'7I9+&I(6465<4<:I(::<I/'65I)996I)77815H'56-I)9=86I'9;46;6866G'46989H'415I(64I)I'5I1(:G'858:78II:.)&9;69:6569:I'29;7I/'954I(7D694&5I'9845I8*&9I(I0';98H':3 at I(H'45E& NM:i:4 MD:Z:40^C127^G3 [...]
-simulated.165 0 1 1417 255 106M1D82M * 0 0 AATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTC G'56I*5I-&379438I(3H'7;8567G':9:8H'H'5I.&3H'E&I-&:4879I)=5;>:5I.&688<35H'I'9I*I'754<457456977843I(I-&85;7=I,755IF/)%H'I'@8I(I(3783/5:I.&64757<:8;E&4:5938921I1(I'93<773899I(86757698<8I0'998 NM:i:1 MD:Z:106^C82 oR:Z:1 oH:i:1 oP:i:1416 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.166 16 1 8569 255 22M1D14M1I14M1I50M1D95M1I3M * 0 0 AAATACCATCAGGGCTTTCGGTCGCTCTTAGGACGAGAGTTCGTAAAACCCGAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACGTAA )4I44(I<;6:'/I2(3I8'I;C7487'I4'H(:(8=D7*I=46',=I&.I&'H739:7&+<I17<9758'.I3:2488;:68179(I8'G8;7'G:'G689,I@(I1)I9:)I918&E'G'G068',<I'H=4(3I'H(1I)I4'G'.I(1I'H&-I4258::8=6&.I:*I74'F:6)I(I::8)I'/I76:659'6'G NM:i:7 MD:Z:22^C10C0A66^A9 [...]
+simulated.164 0 1 4997 255 40M1D46M1I81M1D4M1I33M * 0 0 AAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGTAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGTCGACTTCACTCCCCAGGAAATCACCGCTAATTGCAA I):77A:66I1'7I.&;494:8>I)7:8I'8;I(96I.&7II5+'7I9+&I(6465<4<:I(::<I/'65I)996I)77815H'56-I)9=86I'9;46;6866G'46989H'415I(64I)I'5I1(:G'858:78II:.)&9;69:6569:I'29;7I/'954I(7D694&5I'9845I8*&9I(I0';98H':3 at I(H'45E& NM:i:4 MD:Z:40C127G37 [...]
+simulated.165 0 1 1417 255 106M1D82M * 0 0 AATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTC G'56I*5I-&379438I(3H'7;8567G':9:8H'H'5I.&3H'E&I-&:4879I)=5;>:5I.&688<35H'I'9I*I'754<457456977843I(I-&85;7=I,755IF/)%H'I'@8I(I(3783/5:I.&64757<:8;E&4:5938921I1(I'93<773899I(86757698<8I0'998 NM:i:1 MD:Z:106C82 oR:Z:1 oH:i:1 oP:i:1416 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.166 16 1 8569 255 22M1D14M1I14M1I50M1D95M1I3M * 0 0 AAATACCATCAGGGCTTTCGGTCGCTCTTAGGACGAGAGTTCGTAAAACCCGAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACGTAA )4I44(I<;6:'/I2(3I8'I;C7487'I4'H(:(8=D7*I=46',=I&.I&'H739:7&+<I17<9758'.I3:2488;:68179(I8'G8;7'G:'G689,I@(I1)I9:)I918&E'G'G068',<I'H=4(3I'H(1I)I4'G'.I(1I'H&-I4258::8=6&.I:*I74'F:6)I(I::8)I'/I76:659'6'G NM:i:7 MD:Z:22C10CA66A98 o [...]
simulated.167 0 1 5476 255 44M1I162M * 0 0 ACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACTAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGC 69I(:<76><I(I'6I)1;287G'768975:7F'5I/'57I'99'I2(I1(:6<78I(>66I1(69G'I)I/'5I(7<65I(9I(777I'9773256F'8I(83;9:;15<878I*7;I)G':8435:I);57:54G'2<I'86;;;94C954663:57I'966:F'66:48<I3(;;I(<88<H'476D&694I(67I'I<+&868 NM:i:1 MD:Z:206 oR:Z:1 oH:i:1 oP: [...]
simulated.168 0 1 4904 255 203M * 0 0 TTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTC I'96I(H'95H'I(8;<8:8:I'799I(I(29625<:7;74;I(:I(<:18I(;74I'3I0'I*I(6=94I(5I(<4383I'86<6=H'5=56I(5;6977:I/':I.'3<:=<68I(?;6I(43H':3I0'7II9.)&7I8*&I(:22876:9I(9:;I0'45I*4:6H'44786I'97F'56:8I(<79839:67I)8<;> NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:4903 oS:A:F [...]
-simulated.169 0 1 1246 255 30M1I32M1D89M1D48M * 0 0 GTCTGTTTAGCCAATAAAACCGTTATCACACGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAAC :458:I-&:=I)G'9I9+&G'5I(958=5:(I'58I)32;I)767I(8698I(I0'7I(5I0'I,9I/'8I)5H'962I'I>,'9;;77:3888I(9I)F'5=I(I/'9528774I0'86I)71I':I2(:I);<I'I)9:::64;;7<77<A148:8762<I9+&4I)6I)77H'<I.&;54767I)6E&969<;8I'9 NM:i:3 MD:Z:62^T89^T48 oR:Z:1 oH:i:1 o [...]
-simulated.170 16 1 2378 255 12M1D17M1D17M1D96M1D36M * 0 0 GTCTGTGCTCACGGGGCTAACCCTTCTGTGCCCGGTTAGTCAATTTAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGG 857;65:;;748(.BI97'I'/I(I645:C(2I'I(I6;65'I&-I,I;56'G47(I<;'H6886992(I6&-I>)I8:*I:94'H9777;41'G58:87(I7;55&E79<8=8:86977'H:)I(I(I(I7;&E*I68877D:)I(I7&-I5;7<44:97:994<468'H4<)I:'I NM:i:4 MD:Z:12^G17^G17^A96^T36 oR:Z:1 oH:i:1 oP:i:2377 oS:A:R XE:i:4 XS:i:0 XI:i:0
-simulated.171 0 1 2395 255 15M1D25M1I90M1D75M * 0 0 CTAACCCTTCTGTGGCCGGTTAGTCAATTTAAAGTGAATAGTTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAAT 8:H'I2(I(8874I)I,I(I)4389I(I-&I0'321H'85&I'77I(434:A63I)4I/'5I)4;I(673G'7567569F'67:97I)8<:9H'58774:;<?:47I(9G'I)E&I(9:G'I(=5654I(5CI(2I.&5897:4<8668965?59I(66H'1I(8695;<085877I)5I'6II1*&769I(8?==3-39I1'I(: NM:i:3 MD:Z:15^C115^G75 oR [...]
+simulated.169 0 1 1246 255 30M1I32M1D89M1D48M * 0 0 GTCTGTTTAGCCAATAAAACCGTTATCACACGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAAC :458:I-&:=I)G'9I9+&G'5I(958=5:(I'58I)32;I)767I(8698I(I0'7I(5I0'I,9I/'8I)5H'962I'I>,'9;;77:3888I(9I)F'5=I(I/'9528774I0'86I)71I':I2(:I);<I'I)9:::64;;7<77<A148:8762<I9+&4I)6I)77H'<I.&;54767I)6E&969<;8I'9 NM:i:3 MD:Z:62T89T48 oR:Z:1 oH:i:1 oP: [...]
+simulated.170 16 1 2378 255 12M1D17M1D17M1D96M1D36M * 0 0 GTCTGTGCTCACGGGGCTAACCCTTCTGTGCCCGGTTAGTCAATTTAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGG 857;65:;;748(.BI97'I'/I(I645:C(2I'I(I6;65'I&-I,I;56'G47(I<;'H6886992(I6&-I>)I8:*I:94'H9777;41'G58:87(I7;55&E79<8=8:86977'H:)I(I(I(I7;&E*I68877D:)I(I7&-I5;7<44:97:994<468'H4<)I:'I NM:i:4 MD:Z:12G17G17A96T36 oR:Z:1 oH:i:1 oP:i:2377 oS:A:R XE:i:4 XS:i:0 XI:i:0
+simulated.171 0 1 2395 255 15M1D25M1I90M1D75M * 0 0 CTAACCCTTCTGTGGCCGGTTAGTCAATTTAAAGTGAATAGTTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAAT 8:H'I2(I(8874I)I,I(I)4389I(I-&I0'321H'85&I'77I(434:A63I)4I/'5I)4;I(673G'7567569F'67:97I)8<:9H'58774:;<?:47I(9G'I)E&I(9:G'I(=5654I(5CI(2I.&5897:4<8668965?59I(66H'1I(8695;<085877I)5I'6II1*&769I(8?==3-39I1'I(: NM:i:3 MD:Z:15C115G75 oR:Z [...]
simulated.172 0 1 2888 255 176M * 0 0 ACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAAT 3I(6898I/'7<946I)6<<57<6454;68:F'55:7;I<,&<I)597;I(7876I(4567I1(57H'58;8I'8I(7:;:988F&6I):;695588I(776675I1(:I3(5I(6G'I'I'443I)9I'4675:5;:6=167I(7;717I(I)I)5I.&;;6I)81065I(1I(8 NM:i:0 MD:Z:176 oR:Z:1 oH:i:1 oP:i:2887 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.173 16 1 4034 255 88M1I64M1I64M * 0 0 GGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCTACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACTATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCT 'I:6'0I&+<I778666&.I(I8(I(I(I87:38864'/I'G976;'.I259(I)I(I(I2:;2'I76432(I='/I;52558659'H&=86'.I3'I&-I'G9(I5767727(I8(I<57<87(I9'I(I'G'G9'0I(I=:=(I687<'H;'7:'/I'F)I;79;'I:86426'H96'.I:7)I4'H=758566:76=<6)I'.I9(2I&E&F'I8 NM:i:2 [...]
-simulated.174 16 2 140 255 112M1D78M * 0 0 GGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACC 'H8368;:'G3'0I3'I8B787(I(I:7&+:I'I386(I&-I)I(I<8)I;&-I(I;9:9'F1(I6'I'G6986878;(I;46'I6'I'0I=:&+:I'I6(I6)I(I476?<+I(I45:787;=431386(I37(I&-I777:(I<4(I7;(I:5958664405736>56'I72789=@0:69=7&-I'I NM:i:1 MD:Z:112^T78 oR:Z:2 oH:i:1 oP:i:139 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.174 16 2 140 255 112M1D78M * 0 0 GGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACC 'H8368;:'G3'0I3'I8B787(I(I:7&+:I'I386(I&-I)I(I<8)I;&-I(I;9:9'F1(I6'I'G6986878;(I;46'I6'I'0I=:&+:I'I6(I6)I(I476?<+I(I45:787;=431386(I37(I&-I777:(I<4(I7;(I:5958664405736>56'I72789=@0:69=7&-I'I NM:i:1 MD:Z:112T78 oR:Z:2 oH:i:1 oP:i:139 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.175 16 1 3589 255 104M1I75M * 0 0 GTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGTCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAA >'0I5<49'G&E(I'G7;85953'.I8(I:7'G49(I4&*8I7=8;<7'I9501(I88(I95;655<'I:68)I7'H&*8I:4*I5(I;77)I'/I&+;I765>'7(I'H993'I6;:39>7(I57(I62:;'I&F(I>='.I4:'G(2I&.I(I6(I72(2I99<;766=3'0I77(1I NM:i:1 MD:Z:179 oR:Z:1 oH:i:1 oP:i:3588 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.176 0 1 2849 255 77M1D150M * 0 0 CTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTT 997I(6=8I'764I)987:5I(I(:I(;844:I(<:I)<8I(;798I/'5:767G'7::44776:69<9:I(709<9I6*=I'<587I(796=G'62:7I0'7<F'67<5G'5I)7;5867<G':I'763?95:5I(8588;;I0'4I0':I'6I(I'I(695I(8G'4:64;04375294I)6496>I)I*H'6I0':48I(65526G'?I)I/'87:32 [...]
+simulated.176 0 1 2849 255 77M1D150M * 0 0 CTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTT 997I(6=8I'764I)987:5I(I(:I(;844:I(<:I)<8I(;798I/'5:767G'7::44776:69<9:I(709<9I6*=I'<587I(796=G'62:7I0'7<F'67<5G'5I)7;5867<G':I'763?95:5I(8588;;I0'4I0':I'6I(I'I(695I(8G'4:64;04375294I)6496>I)I*H'6I0':48I(65526G'?I)I/'87:32 [...]
simulated.177 0 1 6460 255 199M * 0 0 GACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGT 57I(/87I(84=<;7?;G'68:4I'7:I(I(8;98>8935;66BI(643I)5506=<7I/':::698;I'978468677=9I(2?74745I)9I(<65295I1'84I(I(:I):I*B365I'7784II3*&I/'4I(:79;;67I(I'I(5I'7I':98565:3I(8:346=;I(77:6I(I0'9I(336I(I(I(9:> NM:i:0 MD:Z:199 oR:Z:1 oH:i:1 oP:i:6459 oS:A:F XE:i:0 [...]
-simulated.178 16 1 1586 255 167M1D35M * 0 0 TATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGA 9<(I485<3764:9&.I7064782'/I:*I7;:4)I'F(I79',=I<48(I',=I;'0I;(I468=&E7677'I:(I8(I1)I<7894'G6<789)I14;92763(I)I'/I'I7'G=7'I'I539;8683)I6157;4:87<06678'H873;(I74'.I;7:<7<*7I'I79638(I78336;6'G656(I(I9'-?I77 NM:i:1 MD:Z:167^C35 oR:Z:1 oH:i:1 oP:i:158 [...]
+simulated.178 16 1 1586 255 167M1D35M * 0 0 TATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGA 9<(I485<3764:9&.I7064782'/I:*I7;:4)I'F(I79',=I<48(I',=I;'0I;(I468=&E7677'I:(I8(I1)I<7894'G6<789)I14;92763(I)I'/I'I7'G=7'I'I539;8683)I6157;4:87<06678'H873;(I74'.I;7:<7<*7I'I79638(I78336;6'G656(I(I9'-?I77 NM:i:1 MD:Z:167C35 oR:Z:1 oH:i:1 oP:i:1585 [...]
simulated.179 0 1 5708 255 103M1I124M1I2M * 0 0 ACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCTACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAAGTA <5:56I/'5.664G'I+9I):57:I(:7489H'6;;I(6391;6II1)&I)66G';9888I'G':8<H'8:98I*9;I)=483363:7I'I'8:I(H':I(79&79378347I(4898I'6<74:676=54I)4:8798I(3:I'I(6:3I(858<7<69;6:6<I':3E&9I)98G'>I0':4I(I0'=;I0'2;46H';38;94<I/'I' [...]
-simulated.180 16 1 513 255 31M1I5M1I29M1I50M1D50M * 0 0 GGGATACCAGAAAGTAGTTTCGGAAGCGTTTAGCATCGATTCTGTCGGTCCTTAGTATCTATTTCTCTAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGA '.I:46'H:5&.I467:(2I9)I)I9;7(2I&4<9=7*6(I:579:(I9'I'G9567:7<:'/I59;%;:'0I1849=<8'I66:6247'0I95'0I8'G;2885489(I<799=974D45'G;3(I9;<(I;63%(-8II)I:03'/I<555(I(I9'0I8::.8<8 NM:i:4 MD:Z:115^G50 oR:Z:1 oH:i:1 oP:i:512 oS:A:R XE:i:4 XS:i:0 XI:i:0
-simulated.181 0 1 261 255 49M1D71M1D9M1I78M * 0 0 GGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAATGGCCGTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGA G'29I(:568I/'8<66I'765698I(86I'3I(4895I'<F'I(I(I)I6*6=8:I'94I/';76:4:5H':96I(5867:7I;+&?6787I(I1(8:9I(>I(<I(8I.&26>59893IC.(8I(I('7965I1(I0'<8486;4878G'I(I.'>99978857I1(I'1<2I(6;I(93I/'I+36:96<6I(:17I(9682<7: NM:i:3 MD:Z:49^T71^A87 o [...]
-simulated.182 0 1 1056 255 49M1I52M1I28M1D32M1D42M1D33M * 0 0 CAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGACTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGTCATGAAGCCGACGTATACAGACTAGCTAGGGCCTACGCGCATTAGCCGAATGCCCCGATGCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGA ::29I(I'955:95:I(9<I<+&6;H':59:3I.&5I(9:I.';:H'6;)3:8<?:5?389I(I/'2358 at 26I)7>I)5784=59;I at -'I(51466;498'62;8G':H'1068689;4:89<8<;;:2I6)I)9597;940I'6<I(7I(16I;+&6474D;;6I(769<797I(55I'8I(G'59H' [...]
+simulated.180 16 1 513 255 31M1I5M1I29M1I50M1D50M * 0 0 GGGATACCAGAAAGTAGTTTCGGAAGCGTTTAGCATCGATTCTGTCGGTCCTTAGTATCTATTTCTCTAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGA '.I:46'H:5&.I467:(2I9)I)I9;7(2I&4<9=7*6(I:579:(I9'I'G9567:7<:'/I59;%;:'0I1849=<8'I66:6247'0I95'0I8'G;2885489(I<799=974D45'G;3(I9;<(I;63%(-8II)I:03'/I<555(I(I9'0I8::.8<8 NM:i:4 MD:Z:115G50 oR:Z:1 oH:i:1 oP:i:512 oS:A:R XE:i:4 XS:i:0 XI:i:0
+simulated.181 0 1 261 255 49M1D71M1D9M1I78M * 0 0 GGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAATGGCCGTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGA G'29I(:568I/'8<66I'765698I(86I'3I(4895I'<F'I(I(I)I6*6=8:I'94I/';76:4:5H':96I(5867:7I;+&?6787I(I1(8:9I(>I(<I(8I.&26>59893IC.(8I(I('7965I1(I0'<8486;4878G'I(I.'>99978857I1(I'1<2I(6;I(93I/'I+36:96<6I(:17I(9682<7: NM:i:3 MD:Z:49T71A87 oR: [...]
+simulated.182 0 1 1056 255 49M1I52M1I28M1D32M1D42M1D33M * 0 0 CAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGACTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGTCATGAAGCCGACGTATACAGACTAGCTAGGGCCTACGCGCATTAGCCGAATGCCCCGATGCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGA ::29I(I'955:95:I(9<I<+&6;H':59:3I.&5I(9:I.';:H'6;)3:8<?:5?389I(I/'2358 at 26I)7>I)5784=59;I at -'I(51466;498'62;8G':H'1068689;4:89<8<;;:2I6)I)9597;940I'6<I(7I(16I;+&6474D;;6I(769<797I(55I'8I(G'59H' [...]
simulated.183 0 1 5351 255 135M1I42M1I11M * 0 0 TCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATAGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCACTGTCCATGCCA 6::49=7:I<,'3I(0H'91=I.'6765=54978H'<;I*6592;:8E&6;9I.&:7663I(6I*6I/'<I(<8II1)&879<:I(35:78537G'55I'9447;9I(;6:89862;I)I(73:G'9I)<2:765*I)I(8E&87846H':7587474I(7I.&42I);2I.&I/'48&;5=G'0;9I,: NM:i:3 MD:Z:187C oR:Z:1 oH:i:1 oP:i:5350 oS:A:F XE:i:3 XS:i:0 XI:i:0
-simulated.184 0 1 6899 255 30M1D100M1D28M1I16M1I7M1I11M * 0 0 AGTAATGGAATGATATCCTGCGGGCCCTTCTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGACTTACGGGGAACGTGCACGACTCACCGACAAAAATTTACCGTCGACAGGTGACGAACTCATAA 595I'4D&I'5578:8I(07;I2(I.&I'<I+9<I.'<8935:I(;69<;8:I'83I-&3H'84874;668I)8I(79:5I(F'45:986>8I(55653I-&76I)669I(9F&4I(67;5:I)F&4I1(C8;I)47I:+&G'9:98569996598I(&97IH0)%I/'8E&270%;89I(6;&77I(65;9:H' NM:i:5 MD:Z:30^T100^G62 oR:Z:1 oH:i:1 [...]
+simulated.184 0 1 6899 255 30M1D100M1D28M1I16M1I7M1I11M * 0 0 AGTAATGGAATGATATCCTGCGGGCCCTTCTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGACTTACGGGGAACGTGCACGACTCACCGACAAAAATTTACCGTCGACAGGTGACGAACTCATAA 595I'4D&I'5578:8I(07;I2(I.&I'<I+9<I.'<8935:I(;69<;8:I'83I-&3H'84874;668I)8I(79:5I(F'45:986>8I(55653I-&76I)669I(9F&4I(67;5:I)F&4I1(C8;I)47I:+&G'9:98569996598I(&97IH0)%I/'8E&270%;89I(6;&77I(65;9:H' NM:i:5 MD:Z:30T100G62 oR:Z:1 oH:i:1 oP [...]
simulated.185 16 1 8640 255 61M1I153M * 0 0 AGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCTAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAA 7575;5:7437=88)I1'I>47&F9'H;<;(2I:'I3'F7;(I3=4&F(I*I598&+:I'I'48(3I(I'/I'I8'H'0I'/I'F(2I9678569>9(2I='G:9*I93(I'H564(I'0I0367::8&*9I882(I87=57883969(I22&.I683)I;56 at 6:8&F'I948;67)I.4=649849(I;(I(I8'G'+4II99(I<89093'H NM:i:1 MD:Z:214 [...]
simulated.186 16 1 3091 255 188M * 0 0 CCCTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGA '.IC>588838948'I'F(I'I88=688;<56<7'I:68&-I988676:4'/I&)0II42957;766(I9:29481:7(I<22(I:::98'G45'H@=3(I&.I;8(I'G8(I3;5'0I96'/I'I'I*I'H66',>I:9=4(I&+3II4'F96'.I898',=I'G637)I4)I',=I867(I496:5 NM:i:1 MD:Z:2T185 oR:Z:1 oH:i:1 oP:i:3089 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.187 0 1 8579 255 48M1D58M1D29M1D52M * 0 0 AGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAA 7I2(7I.&;E&?I(7279I(4I'7::I(<H'585I>,'I0'G'439:6I5)8733539I/'6:3:95:5:74;9I(7G'467I'9I(5;9I2(7I)7H'=>G'394DI)E&669IC.(I(7:I0'I(I/'H'9I(I,I1(I(I3(;39869698I0'5F':4I(88I(I':38I'I.&77;862?I( NM:i:3 MD:Z:48^T58^T29^G52 oR:Z:1 oH:i:1 oP:i:8578 oS:A:F XE:i:3 [...]
+simulated.187 0 1 8579 255 48M1D58M1D29M1D52M * 0 0 AGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAA 7I2(7I.&;E&?I(7279I(4I'7::I(<H'585I>,'I0'G'439:6I5)8733539I/'6:3:95:5:74;9I(7G'467I'9I(5;9I2(7I)7H'=>G'394DI)E&669IC.(I(7:I0'I(I/'H'9I(I,I1(I(I3(;39869698I0'5F':4I(88I(I':38I'I.&77;862?I( NM:i:3 MD:Z:48T58T29G52 oR:Z:1 oH:i:1 oP:i:8578 oS:A:F XE:i:3 XS [...]
simulated.188 0 1 5841 255 208M * 0 0 TGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGT 55;7 at I)38I(I(867G'83:6285577878G':8I(5I'::G'6I0'76I)I-&32I0'4264G'<8?:<79I.&I(I9*&89I-&53;I at -'5H'I(I(I)8:4;8:866I(94=;F'9I':I(6I(7I.&48I*I(867736E&78=<6865I.&0H'I(:I1'><99599I:+&3I1(4II<0*&97347:;71137I)I(366 NM:i:0 MD:Z:208 oR:Z:1 oH:i:1 oP:i:5 [...]
simulated.189 16 1 8139 255 197M * 0 0 TCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGC 157)I3803669;3:5&,<I3463(I&-I'F50'H634'I7'I&-I9::5(I1?939'0I<4:7(I'H38(I;879;<5@(I3*I45'G857786(1I(I88'G9595:(I9&F(I:96847)I656=7(I8:(I863:46=6>3&F'I(I'0I(I99796+I77'H7(I67)4I=29*I6)I89493:73796'H6 NM:i:0 MD:Z:197 oR:Z:1 oH:i:1 oP:i:8138 oS:A:R XE:i:0 XS: [...]
-simulated.190 0 1 3247 255 67M1D70M1I1M1I4M1I66M * 0 0 GTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAACTCGACACTGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAA 66=;I;+&I(837I*;I'IB.(639H'69598I(I(;I)9I(:<I1(<7I(::1;87<:369H'9I(C=I at -'5H'I(<665I'85I(I(625I/'9<12IA-(:I(56H'H'249=5I=,'H'I(7I1(95658G'%8':47;&76I/'33F'I';4:994I)6<7:479I(I0'I-&5382G'835:59793969557;7H'4:>46I( NM:i:4 MD:Z:6 [...]
-simulated.191 16 1 2065 255 100M1D63M1I4M1I22M1I28M * 0 0 TGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGACGCACGTACTATCGTTGTAAAGATCTTCGCACGTAGACTACTGGCCTAGCCCTAAT 6696;'-?I4(I979(I3'H75383)I8963(2I698'I7(2I:99)I4'I5596;<5895<8)I<'0I&E:87'/I(I7=(I47'G'F)I&+9I8)I2<B'/I(I62:9*I8:48:9)I76'I51542'H785'/I(I95'*0>II5;9<'-?I48;8'G5=(6296&;483555;=(I27'/I9395)I&47245:43471952(I'HA58 [...]
-simulated.192 0 1 1131 255 32M1I55M1D42M1D60M1I40M * 0 0 TGGATGTCTATAAAACCATGCTAGTGCATGAACGCCGACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCGATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTC :I'8<9;7873I=,'I(4787;766=8:;5E&.3I)85:;97;488629609729I8*&I(<8:58;87I)5;I(6I)47I>,'7599D674I(98;4;67I'18I(?H'I)5.I(;586I.&83I*H'9I7*I)9I(994488G'88I+9::I(9:<I(7855I*I0'=I(5I.'I.&6I.&9I)9G'1&6:I'I<,'5858 [...]
-simulated.193 0 1 2385 255 64M1I67M1D68M * 0 0 CTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACGTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTC 3554;II2*&-2I(I.'I(;7<8I(I.&I(H'8984E&I2(I1(646I(65I(82H'<788<3:&I(9I.&;I(1<I(358I(7:83487I'82388I);9:6I(:.585:;94467I(4I'I(I*E&95I)C7<9:6I(:H'I'5I,&=<489:599:8494875I(4=G'6H'87:68565?>43E&=I'5II1*&97 NM:i:2 MD:Z:131^G68 oR:Z:1 oH:i:1 oP:i:2384 [...]
-simulated.194 0 1 8557 255 162M1D27M * 0 0 GGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCAAGGGCTGCTACTGCCCAGGACAAG H'II5,':868I:+&88I)469/I2(;I0';H'7I(8576H'5I)89:I)5I(539I:+&I/'E&8;;;5I at -'4;88738I0'88>486379:78=I(9I*498I)8I(6:9I.&3F&5I';5E&8:9I(I'I)8:8I<+&I*68I.&G'I/'F'6I(I1(I,I(I.&455:97965I2(6I(;8H': NM:i:1 MD:Z:162^C27 oR:Z:1 oH:i:1 oP:i:8556 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.190 0 1 3247 255 67M1D70M1I1M1I4M1I66M * 0 0 GTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAACTCGACACTGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAA 66=;I;+&I(837I*;I'IB.(639H'69598I(I(;I)9I(:<I1(<7I(::1;87<:369H'9I(C=I at -'5H'I(<665I'85I(I(625I/'9<12IA-(:I(56H'H'249=5I=,'H'I(7I1(95658G'%8':47;&76I/'33F'I';4:994I)6<7:479I(I0'I-&5382G'835:59793969557;7H'4:>46I( NM:i:4 MD:Z:6 [...]
+simulated.191 16 1 2065 255 100M1D63M1I4M1I22M1I28M * 0 0 TGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGACGCACGTACTATCGTTGTAAAGATCTTCGCACGTAGACTACTGGCCTAGCCCTAAT 6696;'-?I4(I979(I3'H75383)I8963(2I698'I7(2I:99)I4'I5596;<5895<8)I<'0I&E:87'/I(I7=(I47'G'F)I&+9I8)I2<B'/I(I62:9*I8:48:9)I76'I51542'H785'/I(I95'*0>II5;9<'-?I48;8'G5=(6296&;483555;=(I27'/I9395)I&47245:43471952(I'HA58 [...]
+simulated.192 0 1 1131 255 32M1I55M1D42M1D60M1I40M * 0 0 TGGATGTCTATAAAACCATGCTAGTGCATGAACGCCGACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCGATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTC :I'8<9;7873I=,'I(4787;766=8:;5E&.3I)85:;97;488629609729I8*&I(<8:58;87I)5;I(6I)47I>,'7599D674I(98;4;67I'18I(?H'I)5.I(;586I.&83I*H'9I7*I)9I(994488G'88I+9::I(9:<I(7855I*I0'=I(5I.'I.&6I.&9I)9G'1&6:I'I<,'5858 [...]
+simulated.193 0 1 2385 255 64M1I67M1D68M * 0 0 CTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACGTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTC 3554;II2*&-2I(I.'I(;7<8I(I.&I(H'8984E&I2(I1(646I(65I(82H'<788<3:&I(9I.&;I(1<I(358I(7:83487I'82388I);9:6I(:.585:;94467I(4I'I(I*E&95I)C7<9:6I(:H'I'5I,&=<489:599:8494875I(4=G'6H'87:68565?>43E&=I'5II1*&97 NM:i:2 MD:Z:131G68 oR:Z:1 oH:i:1 oP:i:2384 [...]
+simulated.194 0 1 8557 255 162M1D27M * 0 0 GGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCAAGGGCTGCTACTGCCCAGGACAAG H'II5,':868I:+&88I)469/I2(;I0';H'7I(8576H'5I)89:I)5I(539I:+&I/'E&8;;;5I at -'4;88738I0'88>486379:78=I(9I*498I)8I(6:9I.&3F&5I';5E&8:9I(I'I)8:8I<+&I*68I.&G'I/'F'6I(I1(I,I(I.&455:97965I2(6I(;8H': NM:i:1 MD:Z:162C27 oR:Z:1 oH:i:1 oP:i:8556 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.195 0 1 3440 255 136M1I54M * 0 0 ATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGAGTTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTT 85:47;5I(<5?79I=,'<6I(II2*&<I.&72986:7I(9I(:I/'54I-&I'9?;4I)89>7I.&9I(6I(:5665:44I'8I/'6H'986I+F'5H'=I/'F'999988I>,'897I/'I(I*<7I)945:84%I(H'I'I(77I*73I5)698=F'I'I'I':;66846I/':I(46F'86I):I0' NM:i:1 MD:Z:190 oR:Z:1 oH:i:1 oP:i:3439 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.196 16 1 1202 255 117M1D64M * 0 0 GCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTA 3)I4(I:7'- at I2360(I;<7&F7349558'G;4)I6)I(I67'H9;68'0I76'I'H7',>I(I5(I614386(I57'G at 99(I568'G4976(I'/I5'G6(2I'/I9(1I7(I8C<66&D&*9I5658776356(I9'F&F8:'F'/I;69876<(1I8@)I76)I>&-I1(I6:'H8 NM:i:1 MD:Z:117^T64 oR:Z:1 oH:i:1 oP:i:1201 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.197 0 2 91 255 59M1I18M1D96M1I12M * 0 0 TGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTCGCCCTCCTCATATTGGCGTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTACGTCGTCCAGCC :I(8I(I(198I'I)4;<75993:7G'6I0'7:I(H'I.&69;66579I.'69857<I():I1(8I(;83:>I'I(85I7*F'558I(I/'H'I)4;I(;I/'H'4557I'3I);I(I(5395/:8:G'86<I*7I*I0'79I8*&I)6I(3I(I)58924I.&I'447;95;9%9937;4G'74I' NM:i:3 MD:Z:77^T108 oR:Z:2 oH:i:1 oP:i:90 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.196 16 1 1202 255 117M1D64M * 0 0 GCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTA 3)I4(I:7'- at I2360(I;<7&F7349558'G;4)I6)I(I67'H9;68'0I76'I'H7',>I(I5(I614386(I57'G at 99(I568'G4976(I'/I5'G6(2I'/I9(1I7(I8C<66&D&*9I5658776356(I9'F&F8:'F'/I;69876<(1I8@)I76)I>&-I1(I6:'H8 NM:i:1 MD:Z:117T64 oR:Z:1 oH:i:1 oP:i:1201 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.197 0 2 91 255 59M1I18M1D96M1I12M * 0 0 TGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTCGCCCTCCTCATATTGGCGTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTACGTCGTCCAGCC :I(8I(I(198I'I)4;<75993:7G'6I0'7:I(H'I.&69;66579I.'69857<I():I1(8I(;83:>I'I(85I7*F'558I(I/'H'I)4;I(;I/'H'4557I'3I);I(I(5395/:8:G'86<I*7I*I0'79I8*&I)6I(3I(I)58924I.&I'447;95;9%9937;4G'74I' NM:i:3 MD:Z:77T108 oR:Z:2 oH:i:1 oP:i:90 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.198 0 1 1715 255 14M1I165M1I19M * 0 0 CGAACGTATGCGCACGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGACCCGTTGACTTATCGACCA 7:H'4937<7579:&69676I(;979H'3;I0'3:8668I;+&I(26218I'88788;8I(765I(G'5I>,'6689I)I'89I1'F'7I(745:;155945:8:I)887=0H'96I/'I-&I(:C6IB.(85 at 7I'5I'E&I'3I(;78I'<979I(I(8289763379AI'I(=8<I(&I-&8G'878I(878;;H'; NM:i:2 MD:Z:198 oR:Z:1 oH:i:1 oP:i:1714 oS [...]
-simulated.199 16 1 291 255 54M1D25M1D111M * 0 0 GCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAATCATCTTGGGATAGGAGGATTCGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTG 86(I658:)I3(I)I(I(I',<I7997*I66&-I9749456(I:;8)I>86634*7I98955(I&.I86;(I:(I:(I3,I787968=8&)0II4)I(I7;7:'.I(3I;:579:=949(I'I&.I477;679A5)4I(I764(I49(I98&-I'I79:737:(I6>3'H:9<8<0(I79774<;85(I5 NM:i:2 MD:Z:54^A25^G111 oR:Z:1 oH:i:1 oP:i:290 oS:A:R XE:i:2 X [...]
-simulated.200 0 1 7793 255 14M1D86M1I121M1D8M * 0 0 CGATTACGGGATAGCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAACGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGCTCATA 658F&:7I/'726;IC.(75I(I,&48>79;6I);;9774537I(7<6I.&;9I.&I.&775I(6I)852:449I)I/'3I*H'9<85:7<8;I9*&6I)'637I(H'8;5?7977I3(54H'8I';H';5I(26:F&6<9465966I(;;I(8293662382<94I)6;8<3I(?I(8I(995G'8I/'89;759<5I/'8I0'I)65 [...]
-simulated.201 0 1 4449 255 94M1D87M1I28M * 0 0 TCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCTAGGTGACGACGAAGTTTCGGCACAGGTG ;39<I(9II2*&96288:I(48462=49<I(G'I(86352I-&8I/'I1'I)7I;+&;899F'<I'87;7628899I.'7I)8=G'I'0775:8D99I)88943467I.&9I(49596:3D&459::4;H'I(79I)8I4)78<:I*:39566585<8I*I.&764I0';.6I(I'9F'78%8I(:::73?;;I'7I2(8I(5829I(55 NM:i:2 MD:Z:94^G115 oR: [...]
+simulated.199 16 1 291 255 54M1D25M1D111M * 0 0 GCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAATCATCTTGGGATAGGAGGATTCGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTG 86(I658:)I3(I)I(I(I',<I7997*I66&-I9749456(I:;8)I>86634*7I98955(I&.I86;(I:(I:(I3,I787968=8&)0II4)I(I7;7:'.I(3I;:579:=949(I'I&.I477;679A5)4I(I764(I49(I98&-I'I79:737:(I6>3'H:9<8<0(I79774<;85(I5 NM:i:2 MD:Z:54A25G111 oR:Z:1 oH:i:1 oP:i:290 oS:A:R XE:i:2 XS: [...]
+simulated.200 0 1 7793 255 14M1D86M1I121M1D8M * 0 0 CGATTACGGGATAGCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAACGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGCTCATA 658F&:7I/'726;IC.(75I(I,&48>79;6I);;9774537I(7<6I.&;9I.&I.&775I(6I)852:449I)I/'3I*H'9<85:7<8;I9*&6I)'637I(H'8;5?7977I3(54H'8I';H';5I(26:F&6<9465966I(;;I(8293662382<94I)6;8<3I(?I(8I(995G'8I/'89;759<5I/'8I0'I)65 [...]
+simulated.201 0 1 4449 255 94M1D87M1I28M * 0 0 TCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCTAGGTGACGACGAAGTTTCGGCACAGGTG ;39<I(9II2*&96288:I(48462=49<I(G'I(86352I-&8I/'I1'I)7I;+&;899F'<I'87;7628899I.'7I)8=G'I'0775:8D99I)88943467I.&9I(49596:3D&459::4;H'I(79I)8I4)78<:I*:39566585<8I*I.&764I0';.6I(I'9F'78%8I(:::73?;;I'7I2(8I(5829I(55 NM:i:2 MD:Z:94G115 oR:Z [...]
simulated.202 16 1 7705 255 197M * 0 0 GGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGC 'G)I(I77(I;3*I'G9:874'I768'G:996<4(I(I(I92:'I8924576&E(I(I;:&-I488&+;I8(I&.I&E(I4::7(I;>44<)I77'0I:8;6&)1II75(I&-I<<;0<;:'I4::89<537(I537'1I<7'.I'0I68:(I3(I95637;0'H'/I6(I'G:;45=43<5&+<I6(I7;7(I'I8 NM:i:0 MD:Z:197 oR:Z:1 oH:i:1 oP:i:7704 oS:A:R XE:i:0 XS: [...]
-simulated.203 0 1 2807 255 119M1D27M1D53M * 0 0 CTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTCGGCTATGGTGACGGCATACCCAGACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACC 9I;+&8I-&5365I(667886858697<I<,&26II5,'98:764H';3<E&439I*::776I'I(;I(25777I(79I(69I'64<9I.&5339;I':57456;5::3;;;H'72768I4)8I(8889I)554 at I)8938I0'7?C8875H'3G'74853<5I(5I(396:89:3I';::288I-&<I.'3I(5H'H' NM:i:2 MD:Z:119^T27^A53 oR:Z:1 oH:i:1 oP:i:2 [...]
-simulated.204 0 1 6279 255 53M1I21M1D41M1I7M1D66M1I3M * 0 0 AAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGTCTATCCGGTTTCCGCAACTAGCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTCGAGCGCTCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTAATA I-&;G'I0'7:4=:=I'5:737996:7939:<8I*97596:4I(4399I.&50'<4:6G'I)I.'I(77I(9373IE/(I'6<I'H'I)1846788I'79;I.'8E&I1(I(3:G'&5355988C;3?58:3<7I(I1(I(=498I.&=75I(90I)846I:+&7>I(;=I+I(H'869I(81I)836H'F&58 NM:i:5 MD:Z:74^C48^C69 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.205 16 1 9060 255 45M1I75M1D32M1D33M * 0 0 AACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCTATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGCATGCACATGATCGTACGCAGGCGCGCGCATTCAAGCGCGGAACCGACAACGGTTTGTTGGCT )I(I24697(2I'H)I2(I934:65(I826(1I(1I78<)I<(I:(6067697(I)I987<84*I7'F:)I'I83)I6(I>8(I:6&E578:'I9:58<76;58&F)I'/I89(I995(I3,I7767:878==;;639::=64)IA597:7=8,I2)I=:54'I(I(I69B(I<'H&.I8(I(I:: NM:i:3 MD:Z:120^G32^T33 oR:Z:1 oH:i:1 oP:i:9059 oS:A:R XE:i:3 XS: [...]
-simulated.206 0 1 182 255 4M1D156M1I32M * 0 0 AGTAGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCGACAAAATCATCTTGGGATAGGAGGATTCGGGT 7797C8I(8:H'I(77H'I(4I(7769336/9I(6I(<I)I(4:@I(I(758;;I(II<0*&:54I(G'94I(I'I-&I)93I*8757I,&:41:I(>4;68:H'7;I(5H'6<74F&8I)F&I(I*I:+&4:86G'55I.&5<89316I)@27F'6786&5:I?-'58974I)I0'6:2I(5I)5I'3I/'9 NM:i:2 MD:Z:4^G188 oR:Z:1 oH:i:1 oP:i:181 oS:A:F XE:i:2 XS [...]
+simulated.203 0 1 2807 255 119M1D27M1D53M * 0 0 CTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTCGGCTATGGTGACGGCATACCCAGACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACC 9I;+&8I-&5365I(667886858697<I<,&26II5,'98:764H';3<E&439I*::776I'I(;I(25777I(79I(69I'64<9I.&5339;I':57456;5::3;;;H'72768I4)8I(8889I)554 at I)8938I0'7?C8875H'3G'74853<5I(5I(396:89:3I';::288I-&<I.'3I(5H'H' NM:i:2 MD:Z:119T27A53 oR:Z:1 oH:i:1 oP:i:280 [...]
+simulated.204 0 1 6279 255 53M1I21M1D41M1I7M1D66M1I3M * 0 0 AAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGTCTATCCGGTTTCCGCAACTAGCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTCGAGCGCTCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTAATA I-&;G'I0'7:4=:=I'5:737996:7939:<8I*97596:4I(4399I.&50'<4:6G'I)I.'I(77I(9373IE/(I'6<I'H'I)1846788I'79;I.'8E&I1(I(3:G'&5355988C;3?58:3<7I(I1(I(=498I.&=75I(90I)846I:+&7>I(;=I+I(H'869I(81I)836H'F&58 NM:i:5 MD:Z:74C48C69 oR:Z:1 oH:i:1 oP:i:62 [...]
+simulated.205 16 1 9060 255 45M1I75M1D32M1D33M * 0 0 AACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCTATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGCATGCACATGATCGTACGCAGGCGCGCGCATTCAAGCGCGGAACCGACAACGGTTTGTTGGCT )I(I24697(2I'H)I2(I934:65(I826(1I(1I78<)I<(I:(6067697(I)I987<84*I7'F:)I'I83)I6(I>8(I:6&E578:'I9:58<76;58&F)I'/I89(I995(I3,I7767:878==;;639::=64)IA597:7=8,I2)I=:54'I(I(I69B(I<'H&.I8(I(I:: NM:i:3 MD:Z:120G32T33 oR:Z:1 oH:i:1 oP:i:9059 oS:A:R XE:i:3 XS:i: [...]
+simulated.206 0 1 182 255 4M1D156M1I32M * 0 0 AGTAGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCGACAAAATCATCTTGGGATAGGAGGATTCGGGT 7797C8I(8:H'I(77H'I(4I(7769336/9I(6I(<I)I(4:@I(I(758;;I(II<0*&:54I(G'94I(I'I-&I)93I*8757I,&:41:I(>4;68:H'7;I(5H'6<74F&8I)F&I(I*I:+&4:86G'55I.&5<89316I)@27F'6786&5:I?-'58974I)I0'6:2I(5I)5I'3I/'9 NM:i:2 MD:Z:4G188 oR:Z:1 oH:i:1 oP:i:181 oS:A:F XE:i:2 XS: [...]
simulated.207 16 1 135 255 25M1I20M1I168M * 0 0 AGTGATTTCGTAGCGAACCTACCCACGCTCTAAGGGTCGGTATGATACCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAA 84=;<&.I77;:389'H(I77&-I:&:935:(I&,I::)I458>3;)'I6=6:'I6(I98'I(I87)I(I<'I5:5488644'I6*I5'I(I728+I'I95529'I&).:II6:5(I(I76(I)I'0I(I9;)I>67<(2I766:)I8889:6(I99(I8'I4795(I4'H(I(I'H&+9I7;47)I2;'.I86=:797'I<8:)I4A8;9;(1I NM:i:2 MD:Z: [...]
-simulated.208 0 1 2481 255 50M1D80M1I26M1I38M * 0 0 CCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATCGGCAGTGTAGGAGCGACTAGATTTTTAGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGG H'567;I'898:85755896I'4I*I'I(I(75I'I'94653I(9H'I(7I,>9::=8:6976968:4;I(59G'9F&;76779966<5<I(6I)8IF/)%A8;G'9:88?873I1(I(4:58766I(78&E&6878;57F'5875365758II1)&)95I(6I-&<8I(:2667558;6I(98;239I(72:7F' NM:i:3 MD:Z:50^T144 oR:Z:1 oH:i:1 oP:i:2480 oS [...]
-simulated.209 0 1 6916 255 7M1I101M1D93M * 0 0 CTGCGGGTCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGA 7794I/'&I3(I(5I.'9;I2(65857;I)8:575:6H'3:I0'8I(;;7867856I(8I(8592I(E&88515:46I);9778I0'6:I(2:9I'3H'3I(667<;I(D1I/'I*8:I(54I>,'I);872:47168;:9I(44IH0)&I/'8I(899=7;I)7374E&.7:4;I'5I'647377669I'>3I'793:I*8 NM:i:2 MD:Z:108^T93 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.210 0 1 1251 255 10M1D195M * 0 0 TTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATT I-&0;I(H'8I7*I(:I(7<>893I'46I(189I(676I(:6/9I'I4)<H'9I0'I/'9I,&:I(7I'787I(I7*&67:2383833I(<I)H'77F'I1'6663937I-&8:I)56I(9I/'7I(18G'G'6376978:47854I)69:564621I?-'8H'8H'78I(6I.&49=8:8I(7I'7:9:88I'?785I(I(;G' NM:i:1 MD:Z:10^A195 oR:Z:1 oH:i:1 oP: [...]
-simulated.211 0 1 4658 255 165M1D39M * 0 0 GCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATC 6I(16254I/';;886:H'7I(46782I0'I)844I(169878I/'985I)I'5/:96I(3;3;I1(3;;5I)77H'7;II3*&I1(I'6I(68;8I(7844G'9584<128IH0)%?18:I'8:8;I)658I<+&9I)9<7H'78H'I(4:F'I.'76I.'6=8I,I(5I(II1)&5467<I'3I(I)54I(69I(:8I)855 NM:i:1 MD:Z:165^T39 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.212 0 1 9159 255 15M1I121M1D39M1I33M * 0 0 CATGAACCGGGTCGGACTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGTACCTCATTGTATTCACGTAACGGGATGAGTTAC 6858I(I(I0':8I(%750I(7I3(698884:64577<:<42995G':<:94=95I1(5I(5::5I'I(H'8:9I';I(I.'7I(I'49:H'9I1(I)6I(65594788H'I(4773I'H'99G'964I'87;799;D548I0'8@=I3(8469=H'8I(9786I(I(626585:6)4I*168I)5>3I(87995H'7I2(53:5:I(71 NM:i:3 MD:Z:136^A [...]
+simulated.208 0 1 2481 255 50M1D80M1I26M1I38M * 0 0 CCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATCGGCAGTGTAGGAGCGACTAGATTTTTAGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGG H'567;I'898:85755896I'4I*I'I(I(75I'I'94653I(9H'I(7I,>9::=8:6976968:4;I(59G'9F&;76779966<5<I(6I)8IF/)%A8;G'9:88?873I1(I(4:58766I(78&E&6878;57F'5875365758II1)&)95I(6I-&<8I(:2667558;6I(98;239I(72:7F' NM:i:3 MD:Z:50T144 oR:Z:1 oH:i:1 oP:i:2480 oS: [...]
+simulated.209 0 1 6916 255 7M1I101M1D93M * 0 0 CTGCGGGTCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGA 7794I/'&I3(I(5I.'9;I2(65857;I)8:575:6H'3:I0'8I(;;7867856I(8I(8592I(E&88515:46I);9778I0'6:I(2:9I'3H'3I(667<;I(D1I/'I*8:I(54I>,'I);872:47168;:9I(44IH0)&I/'8I(899=7;I)7374E&.7:4;I'5I'647377669I'>3I'793:I*8 NM:i:2 MD:Z:108T93 oR:Z:1 oH:i:1 oP:i:6 [...]
+simulated.210 0 1 1251 255 10M1D195M * 0 0 TTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATT I-&0;I(H'8I7*I(:I(7<>893I'46I(189I(676I(:6/9I'I4)<H'9I0'I/'9I,&:I(7I'787I(I7*&67:2383833I(<I)H'77F'I1'6663937I-&8:I)56I(9I/'7I(18G'G'6376978:47854I)69:564621I?-'8H'8H'78I(6I.&49=8:8I(7I'7:9:88I'?785I(I(;G' NM:i:1 MD:Z:10A195 oR:Z:1 oH:i:1 oP:i [...]
+simulated.211 0 1 4658 255 165M1D39M * 0 0 GCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATC 6I(16254I/';;886:H'7I(46782I0'I)844I(169878I/'985I)I'5/:96I(3;3;I1(3;;5I)77H'7;II3*&I1(I'6I(68;8I(7844G'9584<128IH0)%?18:I'8:8;I)658I<+&9I)9<7H'78H'I(4:F'I.'76I.'6=8I,I(5I(II1)&5467<I'3I(I)54I(69I(:8I)855 NM:i:1 MD:Z:165T39 oR:Z:1 oH:i:1 oP:i:4 [...]
+simulated.212 0 1 9159 255 15M1I121M1D39M1I33M * 0 0 CATGAACCGGGTCGGACTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGTACCTCATTGTATTCACGTAACGGGATGAGTTAC 6858I(I(I0':8I(%750I(7I3(698884:64577<:<42995G':<:94=95I1(5I(5::5I'I(H'8:9I';I(I.'7I(I'49:H'9I1(I)6I(65594788H'I(4773I'H'99G'964I'87;799;D548I0'8@=I3(8469=H'8I(9786I(I(626585:6)4I*168I)5>3I(87995H'7I2(53:5:I(71 NM:i:3 MD:Z:136A7 [...]
simulated.213 0 1 530 255 9M1I31M1I144M * 0 0 TTTCGGAAGACGTTTGCATCATTCTGTCGGTCCTTAGTATCGTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGC I.'6I(I'5%57I0'0765:<I(68?77G'1I(I(59>@<6(7;I4)57225I/';9675;:I(5988:;5I-&86I/'7I(:56855;9I(5584==76I(;7I'44I)8<6I(47>II=0*&F'675I/':776H'I)5I-&;55;8<9554I)8:928769173I'7:55869:2I(785H'6 NM:i:2 MD:Z:184 oR:Z:1 oH:i:1 oP:i:529 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.214 0 1 1499 255 143M1D38M * 0 0 GTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGA 1;894;;/<:6966I'I4)3<344I/'57:IH0)%D&I'84I(I):5<848;I0'71;6:66>5G';4:897<65I0'I)796736;>8I'99;469<<89I-&4895:;<I/'7I(;69:G'H'I(5=I<+&8:4I(I<+&0I,6I(27:8I)6;9;I(4H'0I'6I(75956I(87699 NM:i:1 MD:Z:143^A38 oR:Z:1 oH:i:1 oP:i:1498 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.215 16 1 532 255 114M1D22M1D50M1D5M * 0 0 TCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCGGCGTCCCTAGTAAGGATTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAATGG 9;(I*I994&.I869695)I97:95'F7(I'I65758;39'/I46956(2I>947117(I3:6;:<<'/I37)4I8'F:=698<58)I86<53;94'I7;(I<8'H4>6(I4:3(-7II)I787&-I4567)I'G2,I3=:58:0=:;(I6;74;666436(I4<8397508(I857)I625'I55,I9&E NM:i:3 MD:Z:114^C22^T50^A5 oR:Z:1 oH:i:1 oP:i:531 oS:A:R [...]
-simulated.216 0 1 6541 255 209M * 0 0 AACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTGTCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAG F&9:6;9?9I(2G'45647<I/'86F&I(6I(9H'8;48I(::92II1*&I-&3I)<;:7<;;I'I'I(4I'6I)98887;59F';<8766<I(6:56I(I.'8I(494I)G'I(4<7H'I,8'65:5;53:6695I'I)7686:7352<:32G'3H'I(1:666G'29:44I(55I;+&2I2(6:5I.'6II1*&677G'I(:96399 NM:i:2 MD:Z:122T0G85 oR:Z:1 oH:i:1 [...]
-simulated.217 16 1 7806 255 62M1D131M * 0 0 GCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCC 7'+4II86'I'/I3>8668>(I7:9:97371(I<25(2I23&-I'/I96=(I<'G35;573;D&.I8)I'H6;57:4897&+;I6'G599*I'I at 77759>:'/I?9)I1'G8'H5<'I929(I>=6?917<3(I97'I49<3399661;67(I61787)I4'H5(I=:8(I2'/I96788766(1I:&.I*I NM:i:1 MD:Z:62^T131 oR:Z:1 oH:i:1 oP:i:7805 oS:A:R XE:i:1 XS [...]
+simulated.214 0 1 1499 255 143M1D38M * 0 0 GTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGA 1;894;;/<:6966I'I4)3<344I/'57:IH0)%D&I'84I(I):5<848;I0'71;6:66>5G';4:897<65I0'I)796736;>8I'99;469<<89I-&4895:;<I/'7I(;69:G'H'I(5=I<+&8:4I(I<+&0I,6I(27:8I)6;9;I(4H'0I'6I(75956I(87699 NM:i:1 MD:Z:143A38 oR:Z:1 oH:i:1 oP:i:1498 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.215 16 1 532 255 114M1D22M1D50M1D5M * 0 0 TCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCGGCGTCCCTAGTAAGGATTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAATGG 9;(I*I994&.I869695)I97:95'F7(I'I65758;39'/I46956(2I>947117(I3:6;:<<'/I37)4I8'F:=698<58)I86<53;94'I7;(I<8'H4>6(I4:3(-7II)I787&-I4567)I'G2,I3=:58:0=:;(I6;74;666436(I4<8397508(I857)I625'I55,I9&E NM:i:3 MD:Z:114C22T50A5 oR:Z:1 oH:i:1 oP:i:531 oS:A:R XE [...]
+simulated.216 0 1 6541 255 209M * 0 0 AACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTGTCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAG F&9:6;9?9I(2G'45647<I/'86F&I(6I(9H'8;48I(::92II1*&I-&3I)<;:7<;;I'I'I(4I'6I)98887;59F';<8766<I(6:56I(I.'8I(494I)G'I(4<7H'I,8'65:5;53:6695I'I)7686:7352<:32G'3H'I(1:666G'29:44I(55I;+&2I2(6:5I.'6II1*&677G'I(:96399 NM:i:2 MD:Z:122TG85 oR:Z:1 oH:i:1 [...]
+simulated.217 16 1 7806 255 62M1D131M * 0 0 GCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCC 7'+4II86'I'/I3>8668>(I7:9:97371(I<25(2I23&-I'/I96=(I<'G35;573;D&.I8)I'H6;57:4897&+;I6'G599*I'I at 77759>:'/I?9)I1'G8'H5<'I929(I>=6?917<3(I97'I49<3399661;67(I61787)I4'H5(I=:8(I2'/I96788766(1I:&.I*I NM:i:1 MD:Z:62T131 oR:Z:1 oH:i:1 oP:i:7805 oS:A:R XE:i:1 XS: [...]
simulated.218 16 1 4589 255 111M1I36M1I52M * 0 0 CCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGAGTAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTACTCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTC (I3556&F9<6756:4;66'I'.I375'/I273)I'I5)I4=;'H2:>58376(I4(2I4&F2746)I94(I64867&.I=;36<3(I7'G677:9'.I(I7=;)I99339'4&-I985'I)I79838(I4;77'1IB49:)I8?(I8&:&*1II'1I'I4'I<755'H5684'I749774:8&*2II?579'H:9:8)I8 NM:i:2 MD:Z:199 oR:Z:1 oH:i:1 oP:i:4588 [...]
-simulated.219 16 1 35 255 15M1D15M1I111M1I76M * 0 0 TTTATTTCTTCGTGAGGAGTTGACCCATGCTAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATCGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGC (1I;'/I3'F;6141,I:8'H89'/I5774'97'H62524<8*I:'F344:'H5'/I(I97:7:(I:=<3'I895589)I'- at I92<:6'F66?746;:'I59:8'/I:595;6>(I(I72'/I377664(I'0I82(I=6:&848)I3654'H:&F45'G'I:7(I)I7&F59;98>335'I;'H2(I(I7;7'I(I69768'G&).9II5:;'I)I7 [...]
+simulated.219 16 1 35 255 15M1D15M1I111M1I76M * 0 0 TTTATTTCTTCGTGAGGAGTTGACCCATGCTAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATCGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGC (1I;'/I3'F;6141,I:8'H89'/I5774'97'H62524<8*I:'F344:'H5'/I(I97:7:(I:=<3'I895589)I'- at I92<:6'F66?746;:'I59:8'/I:595;6>(I(I72'/I377664(I'0I82(I=6:&848)I3654'H:&F45'G'I:7(I)I7&F59;98>335'I;'H2(I(I7;7'I(I69768'G&).9II5:;'I)I7 [...]
simulated.220 16 1 967 255 27M1I177M * 0 0 CGACGACTTATAGTCAGCTACGGTCCCGTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGT ;;88;<6(I<9:686<7865=&F4'/I%?9(I;(I'/I:8953'G'1I(I4(2I6784(I7&-I648>=8'/I9<88656'I49)I;(I3=669(I)I6485377(I<6&,<I92'I76>23(1I;(I1;'/I9>(I57<7<67954879*I(2I6897:87(I76'I;:978;6<&,<I'F:863277695<74'I8'G:7968 NM:i:1 MD:Z:204 oR:Z:1 oH:i:1 oP:i:96 [...]
-simulated.221 16 1 6869 255 192M1D15M * 0 0 GTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAATTTACCGTCAC 238'I(I'0IB>'G'H3)I4(I56'G405)I78'H8'I'I7959:6'I966(1I(3I'F9'0I96&-I74>;87'H9<8=765)I58'/I6)I697<958<4(I6(I8;56)I(I89::562:(I66594(1I47)I779(I3)I7(I37646(I)I8'/I'H:<)I5:&*9I(I;6<9325:0;39<)I49)/FI'/I='I69=67 NM:i:1 MD:Z:192^A15 oR:Z:1 oH:i: [...]
+simulated.221 16 1 6869 255 192M1D15M * 0 0 GTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAATTTACCGTCAC 238'I(I'0IB>'G'H3)I4(I56'G405)I78'H8'I'I7959:6'I966(1I(3I'F9'0I96&-I74>;87'H9<8=765)I58'/I6)I697<958<4(I6(I8;56)I(I89::562:(I66594(1I47)I779(I3)I7(I37646(I)I8'/I'H:<)I5:&*9I(I;6<9325:0;39<)I49)/FI'/I='I69=67 NM:i:1 MD:Z:192A15 oR:Z:1 oH:i:1 [...]
simulated.222 0 2 140 255 37M1I166M * 0 0 GGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGACCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTC I,:99846I(=I.&1E&=5875I)I'47I>,'I(8:3&I(I0'I(I(;7I':I/'I*576=I(9I(9I(I(67686755I'97:I(9I(I/':7I=,'I(6I'7I'I)95898I0'I'9588569096<95:H'8;I(I1'8358I'68G'53I(365:1;@232>895;83I(9:77169659293I3(I)I(9:7A89<I(: NM:i:1 MD:Z:203 oR:Z:2 oH:i:1 oP:i:138 o [...]
simulated.223 16 1 8889 255 75M1I63M1I80M * 0 0 TACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAAGTGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATAGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCAT 35979;45(I<'I<7'H7647;7>47859'-?I:<)I(I'I(I'I76;>877<:*I4'I(I57(I;'G75<)I'I&=3'I5&-I:897:(I7;:897:557&-I6(I6'G689<:71:9;1)I685)4I938)I774;=&5'I678(I(I<'I675'H27:36990;+I6958&E'H77;94)4I'G)I5)I<;15;9)I679'0I(2I6:2(I8'I=53 NM [...]
-simulated.224 16 1 5409 255 59M1D134M1D3M * 0 0 TGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCAG :3(I5'H9&-I5'H26&*2II46:<5'H84152588'G48)I478558'G69:985?54C(I=98'G7(I566377(I'I8(I039:7'F7:2=6:4:(I3&.I/8(I87'/I&-I/965:'H687'/I79(I'I'/I9(I;898(I;)I999'G9.77956)I5(I<7:895976:77(I1;(I'H548:39D:7 NM:i:2 MD:Z:59^T134^C3 oR:Z:1 oH:i:1 oP:i:5408 oS: [...]
+simulated.224 16 1 5409 255 59M1D134M1D3M * 0 0 TGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCAG :3(I5'H9&-I5'H26&*2II46:<5'H84152588'G48)I478558'G69:985?54C(I=98'G7(I566377(I'I8(I039:7'F7:2=6:4:(I3&.I/8(I87'/I&-I/965:'H687'/I79(I'I'/I9(I;898(I;)I999'G9.77956)I5(I<7:895976:77(I1;(I'H548:39D:7 NM:i:2 MD:Z:59T134C3 oR:Z:1 oH:i:1 oP:i:5408 oS:A: [...]
simulated.225 16 1 3808 255 200M * 0 0 AGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCC ;7944<;76:4655/714:57&-I&E468;(I523(I'/I(I5'I8;65773666)I:(I8'F6776;49(I9'I;:44;59&)/;II529;7;35(I(I8)I79;747:9968='0I692:'I5454(I;4)4I93'I'0I9;48=4367(I)I75=97:665756;&-I5*I47'H:946(I4989=9<'H:(I79(I NM:i:0 MD:Z:200 oR:Z:1 oH:i:1 oP:i:3807 oS:A:R XE:i [...]
simulated.226 16 1 5287 255 44M1I154M * 0 0 CAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCGAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCA 6;6?7(I5425(I(I*I6:49)I'H:57:7:6&.I23'/I:'0I'*I'I9(I/'H7?377684&,I5757;65&+:I1(I>*I956'/I;89696>485'H84(I7558554'F:=4&.I913=;'G6(I<'1I7(I99&*3II57756(I9:449896)I68)I5:;;5:(I69::586=9(I'H37:(I7'F;6375 NM:i:1 MD:Z:198 oR:Z:1 oH:i:1 oP:i:5286 oS:A:R X [...]
simulated.227 0 1 3656 255 34M1I155M * 0 0 AAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGACTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGG I+858I(5D&I?-'76G'=I)265I)I-&I8*&:'9395H'I'964I(37:8201I(94I(4<54I(I*I(71I4)07I(I-&I.'I(7I)52I.&>;593<6;4I-&;=I.'I'8I3(>2I'=66;;93G'9I'8;4;I2(>4I*F'87/H'748:7664687678=986846I/'G'5997I'6:7G' NM:i:1 MD:Z:189 oR:Z:1 oH:i:1 oP:i:3655 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.228 16 1 4613 255 107M1I22M1D76M * 0 0 TACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTAGTCTTTCGCTCCGCTTATCCCCCAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAA >:9&-I757'H(I7(I;7<'I;8:44696(I8'0I5&F8468'G88*I65579'.I884790'G6'I7/573'.I'I:54(I97:838'/I6<>'I(I333>7'H48*94&-I;583'I62(I:8&*3II+I&E:'I<58/'H:;47'F8999::;<&*1II75>6(I::99)I48C&*8I;(I957&F:6(I(I9;'H'.I5<'H NM:i:2 MD:Z:129^A76 oR:Z:1 oH [...]
+simulated.228 16 1 4613 255 107M1I22M1D76M * 0 0 TACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTAGTCTTTCGCTCCGCTTATCCCCCAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAA >:9&-I757'H(I7(I;7<'I;8:44696(I8'0I5&F8468'G88*I65579'.I884790'G6'I7/573'.I'I:54(I97:838'/I6<>'I(I333>7'H48*94&-I;583'I62(I:8&*3II+I&E:'I<58/'H:;47'F8999::;<&*1II75>6(I::99)I48C&*8I;(I957&F:6(I(I9;'H'.I5<'H NM:i:2 MD:Z:129A76 oR:Z:1 oH: [...]
simulated.229 16 1 4796 255 3M1I174M * 0 0 CGTCGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGA 6;6'4'H75*I'I8:)I(1I86'.I:87'/I'G5)I%)0HI85<99'G8(I'H8:'I58*I66)I97557'/I55(I5747:854;77&E9(2I:85)I8',=I85:56'I74(I'I68)I(I7:7:859'H66<'I*I9785:;966686(I5)I0805)I287'H7&-I(I*I893 NM:i:1 MD:Z:177 oR:Z:1 oH:i:1 oP:i:4795 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.230 0 1 665 255 59M1I19M1I142M * 0 0 AGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATCGGACTTACTGTCATCGCGGTCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTC <I(8I5)<<256756;7G'8685 at 5775;5I'5/8124747G'968I)21<G':5I/':&I(7/G'49:8765886AI'%69;:I)75I'46/79I)I'8;86I'I+:I,&I-&I'7//<I-&367496;I>,':78<<:2:@8::B/<98I1(2456:55:897I(7697628487<6784F&6;>2;9:7:7I(5I(G'86I(;25I'9I(2I)I/'I'6 [...]
-simulated.231 16 1 8506 255 74M1D32M1D74M1I9M * 0 0 TGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTAGGTTGTCGG 8)I788=)I6;(I4)I94'F7&-I894:(I9'G9766592'I)I;>>87(I(I'+4II7953&+9I76'H9:63,I9'0I4(I7(I8895(I='I:4;)I5'H596*7I'1I(I2975=&+:I9<::<69'0I56=6>9679978;)I>*I5;8'H:(I<05'/I8(I7'H0:'I784)I%'I'H<59'I NM:i:3 MD:Z:74^G32^A83 oR:Z:1 oH:i:1 oP:i:8505 oS:A:R XE:i [...]
-simulated.232 0 1 8751 255 167M1D29M * 0 0 GCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCTAGGAACCGGTTCGTATCAGTAAGTT 82<7I'I.'93:7645I;+&876I)37B9:655398I(;4I0'538I):897795I(I(7:7:67H'3:4>:427:I(8I(E&9I)II0)&5;F'843:88I'I.&2I(I.'86:H'97;;<G'79I(7I-&I.&I';:8917:55I(5H'67I(885:76:47:67I5)88I(E&I)I'I(8859>27<=I(:I( NM:i:1 MD:Z:167^C29 oR:Z:1 oH:i:1 oP:i:8750 oS:A:F XE:i [...]
-simulated.233 0 1 2783 255 98M1I14M1D88M * 0 0 GTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTACCATCCGACCAGTAGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTG 7:I(I.&I'48879263I<,&3I)=IA-'9I0'6742I)7<6454588:946I=,'7:IH0)&:9:8;6I(189H'899I'58;02I)I(8I(7379<&E&86G'75I(8897I,996;7I)397730:9=95:26G'67744I=,'8I(640<I)927<I(57;2I1';:I(:45<I)6I(8::<4:5I)9H'3;364=8 NM:i:2 MD:Z:112^G88 oR:Z:1 oH:i:1 oP:i:27 [...]
-simulated.234 0 1 2743 255 7M1D57M1D138M * 0 0 TCTTAGATTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCA 67I(=69I,I)62<766:I)7/I(I(6I:+&5577::G'56I)I-&I(7646;36;I9+&7I'5I7*7I-&574:I)8:6:9>64:499;I8*&<9II0)&6:649;I(=:1I(8?<I(64493G'H':I)948=8I)78I'8;I(6977I.'69887I(5959<976875952I':;:68I<,'9I)6478I(7869G'67 NM:i:2 MD:Z:7^T57^T138 oR:Z:1 oH:i:1 oP [...]
-simulated.235 16 1 7904 255 111M1D27M1I60M * 0 0 ACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGCTCATAGTATTGTTGAATTTCACGAGTCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTG 676=3'/I6:'G7(I6)I83(I87=)I7762>97:4(I88'H8;83585:663;:&F;;>78(I6)I:(I765'I7(3I957;38;4(3I8'0I(I786(I*I7598:(I9*I946266649&F7'I7'G'.I83<66'1:51&-I<5(I4:=)I'/I(I58)I8(I588&+;I893858(I<<7=952734)I(I948 NM:i:2 MD:Z:111^G87 oR:Z:1 oH:i:1 oP:i:7903 [...]
-simulated.236 16 1 5988 255 160M1D27M * 0 0 ACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTCTATCTCTTGTCATTCACCCACAGG 6:5?9:53'0I8&E(I5(2I:4;8643&*8I3'/I7&).:II<8166839:646(I'H:;(I672'/I<9>:903864:29<8)I797557'.I7(I65:<877(I5(I58<(I>;:1&)1II9&+;I357)I;4=&-I)I::;7885446:9)I5&*8I,I:7699<7(I:58=&D4:'1I1:7'I NM:i:1 MD:Z:160^T27 oR:Z:1 oH:i:1 oP:i:5987 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.237 16 2 148 255 29M1D50M1D23M1D108M * 0 0 TTGCCCTCCTCATATTGGCGTTTTAACTGCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAACAATCCAAGCAGATTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGA (I;&.I7(I655:8(I'F88&*7I(I:;;D'0I'I(I95(I4(1I(I<:86(I6(I8'I)I5786;577(I8:8)I9'G+I26'- at I(I4'H2'H'I8;599,I(I:78:64<;867477(I9>'G&.I:77:*I71'H9;)I;884478;953757987'G6;3877859:483(1I(I'H74:8959'H)I'I568>87<58'I85=2 NM:i:3 MD:Z:29^C5 [...]
-simulated.238 16 1 1892 255 73M1D14M1I90M1D7M * 0 0 GGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGTGCCTGTCACTACAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCTCCA (I'/I4)I8;7(I7;8;6(I66)I'I<79&F=8:)I58869(I:(I0)I759(I778'H9;868;66(I=689*7I97'H:5<8:5:&8(I1(I6'1I(2I;5736'H5<96(I6'G:6967'+3II57(I76773(I5953=05<5883'H87577'0I:;7'H5(I'0I'G8669@*7I4'H9 NM:i:3 MD:Z:73^G104^C7 oR:Z:1 oH:i:1 oP:i:1891 oS:A:R XE:i:3 XS:i:0 XI:i:0
-simulated.239 0 1 6231 255 122M1D72M * 0 0 ACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAA 505;0:7I.&955I(5;75:6:I0'4:6676I4)68;4:I/'6I)::I:+&6I(I1'25;555F'8/?;13<576<;;A<2I(795;559H'?6<6I/';9:569I'F&I.'H'89H'534;IE/(I(52H'I*E&7<557>8I(6<8I/'9I(I0'I)97D&8;686</H'8698642;3H'I0'I)614:I( NM:i:1 MD:Z:122^C72 oR:Z:1 oH:i:1 oP:i:6230 oS:A:F XE:i:1 X [...]
+simulated.231 16 1 8506 255 74M1D32M1D74M1I9M * 0 0 TGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTAGGTTGTCGG 8)I788=)I6;(I4)I94'F7&-I894:(I9'G9766592'I)I;>>87(I(I'+4II7953&+9I76'H9:63,I9'0I4(I7(I8895(I='I:4;)I5'H596*7I'1I(I2975=&+:I9<::<69'0I56=6>9679978;)I>*I5;8'H:(I<05'/I8(I7'H0:'I784)I%'I'H<59'I NM:i:3 MD:Z:74G32A83 oR:Z:1 oH:i:1 oP:i:8505 oS:A:R XE:i:3 [...]
+simulated.232 0 1 8751 255 167M1D29M * 0 0 GCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCTAGGAACCGGTTCGTATCAGTAAGTT 82<7I'I.'93:7645I;+&876I)37B9:655398I(;4I0'538I):897795I(I(7:7:67H'3:4>:427:I(8I(E&9I)II0)&5;F'843:88I'I.&2I(I.'86:H'97;;<G'79I(7I-&I.&I';:8917:55I(5H'67I(885:76:47:67I5)88I(E&I)I'I(8859>27<=I(:I( NM:i:1 MD:Z:167C29 oR:Z:1 oH:i:1 oP:i:8750 oS:A:F XE:i: [...]
+simulated.233 0 1 2783 255 98M1I14M1D88M * 0 0 GTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTACCATCCGACCAGTAGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTG 7:I(I.&I'48879263I<,&3I)=IA-'9I0'6742I)7<6454588:946I=,'7:IH0)&:9:8;6I(189H'899I'58;02I)I(8I(7379<&E&86G'75I(8897I,996;7I)397730:9=95:26G'67744I=,'8I(640<I)927<I(57;2I1';:I(:45<I)6I(8::<4:5I)9H'3;364=8 NM:i:2 MD:Z:112G88 oR:Z:1 oH:i:1 oP:i:278 [...]
+simulated.234 0 1 2743 255 7M1D57M1D138M * 0 0 TCTTAGATTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCA 67I(=69I,I)62<766:I)7/I(I(6I:+&5577::G'56I)I-&I(7646;36;I9+&7I'5I7*7I-&574:I)8:6:9>64:499;I8*&<9II0)&6:649;I(=:1I(8?<I(64493G'H':I)948=8I)78I'8;I(6977I.'69887I(5959<976875952I':;:68I<,'9I)6478I(7869G'67 NM:i:2 MD:Z:7T57T138 oR:Z:1 oH:i:1 oP:i [...]
+simulated.235 16 1 7904 255 111M1D27M1I60M * 0 0 ACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGCTCATAGTATTGTTGAATTTCACGAGTCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTG 676=3'/I6:'G7(I6)I83(I87=)I7762>97:4(I88'H8;83585:663;:&F;;>78(I6)I:(I765'I7(3I957;38;4(3I8'0I(I786(I*I7598:(I9*I946266649&F7'I7'G'.I83<66'1:51&-I<5(I4:=)I'/I(I58)I8(I588&+;I893858(I<<7=952734)I(I948 NM:i:2 MD:Z:111G87 oR:Z:1 oH:i:1 oP:i:7903 [...]
+simulated.236 16 1 5988 255 160M1D27M * 0 0 ACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTCTATCTCTTGTCATTCACCCACAGG 6:5?9:53'0I8&E(I5(2I:4;8643&*8I3'/I7&).:II<8166839:646(I'H:;(I672'/I<9>:903864:29<8)I797557'.I7(I65:<877(I5(I58<(I>;:1&)1II9&+;I357)I;4=&-I)I::;7885446:9)I5&*8I,I:7699<7(I:58=&D4:'1I1:7'I NM:i:1 MD:Z:160T27 oR:Z:1 oH:i:1 oP:i:5987 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.237 16 2 148 255 29M1D50M1D23M1D108M * 0 0 TTGCCCTCCTCATATTGGCGTTTTAACTGCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAACAATCCAAGCAGATTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGA (I;&.I7(I655:8(I'F88&*7I(I:;;D'0I'I(I95(I4(1I(I<:86(I6(I8'I)I5786;577(I8:8)I9'G+I26'- at I(I4'H2'H'I8;599,I(I:78:64<;867477(I9>'G&.I:77:*I71'H9;)I;884478;953757987'G6;3877859:483(1I(I'H74:8959'H)I'I568>87<58'I85=2 NM:i:3 MD:Z:29C50 [...]
+simulated.238 16 1 1892 255 73M1D14M1I90M1D7M * 0 0 GGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGTGCCTGTCACTACAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCTCCA (I'/I4)I8;7(I7;8;6(I66)I'I<79&F=8:)I58869(I:(I0)I759(I778'H9;868;66(I=689*7I97'H:5<8:5:&8(I1(I6'1I(2I;5736'H5<96(I6'G:6967'+3II57(I76773(I5953=05<5883'H87577'0I:;7'H5(I'0I'G8669@*7I4'H9 NM:i:3 MD:Z:73G104C7 oR:Z:1 oH:i:1 oP:i:1891 oS:A:R XE:i:3 XS:i:0 XI:i:0
+simulated.239 0 1 6231 255 122M1D72M * 0 0 ACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAA 505;0:7I.&955I(5;75:6:I0'4:6676I4)68;4:I/'6I)::I:+&6I(I1'25;555F'8/?;13<576<;;A<2I(795;559H'?6<6I/';9:569I'F&I.'H'89H'534;IE/(I(52H'I*E&7<557>8I(6<8I/'9I(I0'I)97D&8;686</H'8698642;3H'I0'I)614:I( NM:i:1 MD:Z:122C72 oR:Z:1 oH:i:1 oP:i:6230 oS:A:F XE:i:1 XS [...]
simulated.240 0 1 7390 255 123M1I62M * 0 0 GCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGACACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTT 7I(758I0'978;87I(I(<36.;7:56>6:76<7I4);I(849I'5I at -'45779:5:9G'I(57I(G':78799I/'I.&8:31:86I';4I'=I1(I)I(17I'H'545;89988I1'9:(69F&I-&<7I/'F'I-&?4I'I(I(I':6<:98H'3:I(G'5;84I(6:599I':I'9I'I' NM:i:1 MD:Z:185 oR:Z:1 oH:i:1 oP:i:7389 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.241 16 1 1093 255 3M1D88M1D79M1D46M * 0 0 GCTGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCACTTCGTGGTCTGTTTAGCCAATAAAACGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTA 969,I26'H666396537<674'G(1I79745<4(I97(I84987<69&*7I'H7:46:74:75999(I?(I56::275:67:98468558)4I(I86<:5766(I49(I8(I68',<I7688'I::7(I78=6;7;(I45+I9%'ID:;(I88::(1I45'G(I8'- at IC8'H65965;(I27'I:<9*I618'H<874*I(2I9'I3'/I&-I6 NM:i:5 [...]
-simulated.242 0 1 2076 255 127M1I14M1D62M * 0 0 CATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCGTTCATTTTTTGTAGCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCT :;4:I'8I(23522G';47<I.&;67H'6I-&779I(1I(42?:84<6<<8:I'8I/'I)375I1'I):7I(63G'I'I)I;+&9I';8I(I0'I(8765I(;785<;I(94I(65:8;I*777I/'&I'51II:.)&>664I6)67::I'876;/88<8::6>58I)35I0'=468I'6:97;585761<:8I(I(4:;I-&7 NM:i:2 MD:Z:141^C62 oR:Z:1 oH:i:1 [...]
-simulated.243 0 1 2618 255 142M1I6M1D26M1I8M * 0 0 GTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCTAGAACTCGGCGGGGCGAGCGAAGTCCTTTGGTCGCTATGTC 345H'6588964754II1)&96I';I0'9:I(648;9556<8F'3743:6I(8887I)<:73:69<66:95I(765I(:943=<=<:7F':I'7<3199;<5354H'2I>,'66I-&7I0'I;+&67I'885I-&F'9<529(8>I(7:DI(9I;+&96877<I(84I(I.'G'8&>57884:2 NM:i:3 MD:Z:148^C34 oR:Z:1 oH:i:1 oP:i:2617 oS:A:F XE:i:3 XS:i:0 XI:i:0
-simulated.244 16 1 6467 255 54M1I65M1D83M * 0 0 TTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAAGTCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTC 'I68<7898:(I;444(I56(I)I:56787888:4;5(I669(I68>?277&-I&:663547(I69:68459263(I99436<5'H:'I7<9878'.I6;'G(I:'G:'G736;(I9785(.CI'0I9'H8898769'I*I'I;'H9'I78=47499'H:2::3<;(I67;9'H'0I6)I972)I(I(I783(I'0I778749 NM:i:2 MD:Z:119^T83 oR:Z:1 oH:i:1 oP [...]
+simulated.241 16 1 1093 255 3M1D88M1D79M1D46M * 0 0 GCTGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCACTTCGTGGTCTGTTTAGCCAATAAAACGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTA 969,I26'H666396537<674'G(1I79745<4(I97(I84987<69&*7I'H7:46:74:75999(I?(I56::275:67:98468558)4I(I86<:5766(I49(I8(I68',<I7688'I::7(I78=6;7;(I45+I9%'ID:;(I88::(1I45'G(I8'- at IC8'H65965;(I27'I:<9*I618'H<874*I(2I9'I3'/I&-I6 NM:i:5 [...]
+simulated.242 0 1 2076 255 127M1I14M1D62M * 0 0 CATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCGTTCATTTTTTGTAGCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCT :;4:I'8I(23522G';47<I.&;67H'6I-&779I(1I(42?:84<6<<8:I'8I/'I)375I1'I):7I(63G'I'I)I;+&9I';8I(I0'I(8765I(;785<;I(94I(65:8;I*777I/'&I'51II:.)&>664I6)67::I'876;/88<8::6>58I)35I0'=468I'6:97;585761<:8I(I(4:;I-&7 NM:i:2 MD:Z:141C62 oR:Z:1 oH:i:1 o [...]
+simulated.243 0 1 2618 255 142M1I6M1D26M1I8M * 0 0 GTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCTAGAACTCGGCGGGGCGAGCGAAGTCCTTTGGTCGCTATGTC 345H'6588964754II1)&96I';I0'9:I(648;9556<8F'3743:6I(8887I)<:73:69<66:95I(765I(:943=<=<:7F':I'7<3199;<5354H'2I>,'66I-&7I0'I;+&67I'885I-&F'9<529(8>I(7:DI(9I;+&96877<I(84I(I.'G'8&>57884:2 NM:i:3 MD:Z:148C34 oR:Z:1 oH:i:1 oP:i:2617 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.244 16 1 6467 255 54M1I65M1D83M * 0 0 TTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAAGTCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTC 'I68<7898:(I;444(I56(I)I:56787888:4;5(I669(I68>?277&-I&:663547(I69:68459263(I99436<5'H:'I7<9878'.I6;'G(I:'G:'G736;(I9785(.CI'0I9'H8898769'I*I'I;'H9'I78=47499'H:2::3<;(I67;9'H'0I6)I972)I(I(I783(I'0I778749 NM:i:2 MD:Z:119T83 oR:Z:1 oH:i:1 oP: [...]
simulated.245 16 1 709 255 207M * 0 0 GAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCA 79)I9<8'I57'/I7(I88'H872587<3668(I<826'H86(I5:898'I)I965:(I(I;&.I'.I'G275<'/I9744994&*9I7::9948 at 56=845.7:'/I<:<94:73796(I88<45;766687825'IA7:56946;5'H;(I'H88(I?88(I6*I6'F&.I(I796<75)I'I5652:'G8B>&*7I:(I57862 NM:i:0 MD:Z:207 oR:Z:1 oH:i:1 oP:i:708 [...]
simulated.246 16 2 97 255 9M1I104M1I40M1I13M1I41M * 0 0 AAGTATTCCGTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAACGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCACGATTTAATATGATCGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCA )I799&F'G+=899765677(I5'1I4<(I)I'1I58=3=75>'0I275689'I5'.I7(I69739'H'G46',<I'I8:5)I(2I(I(I9='H3'0I(I577='H6(I;(I'H':66;921:(I7;=)I9*I'/I87&+9I)I3'I6(I*I766)79(2I*I94685<)76747573)I99&E(1I;958)I9:'G50(I567:653384 NM:i:4 MD:Z: [...]
-simulated.247 0 2 27 255 89M1D85M * 0 0 CTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTA A7;871I(G'4I0':79654492I(I(536:7I1'81H'7687I(7:468:58?I'469=87996I):F'I(777I(H':687868784D;I-&78I(I(I.&7;36869<I5);:;A36I(5I4);I(76876I(I)54I;+&I(428I(I2(I'I(77I):I0'I*:387D7 NM:i:2 MD:Z:89^T84T oR:Z:2 oH:i:1 oP:i:26 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.248 0 1 1168 255 58M1I82M1D23M1I38M * 0 0 CGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTCGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTACCCACCGTTCATAACCCCACGAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCA 72<59:97272958769I;+&I(9:88657>I)6:I(4H'77I>,':9<;I(554I*;'63417>F&99I)8I*F'84I'<7:1I2(94I(I(;I:+&I(:I)8988:5I(<5H'69<I)825I(85:7I(I2(3I'8I/'I,7I-&:I*5I'8:4I'I;+&69&8<9;78;<I*:G'E&74I+I2(>486647I3(27I':6 NM:i:3 MD:Z:140^T61 oR:Z:1 oH:i: [...]
-simulated.249 16 1 5507 255 21M1I5M1I12M1D5M1I112M1I32M * 0 0 CTTGAAACATTACAAAGGGCAGTGTCCGATGCCCAGTTAACCACCTAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGTAGGCAGAATCTTCCCCAGCTTAGATTAGGTTA 5(I8'.I8:'G7:)4I'0I6;&=08(I&;89&-I35(I'H,I7'I%9:9;)I8*I568(I89;9574)I9(I9599753=94;4(I8:'H)I996688(I4;554?'G74'I?:487:=7494;<>968'H5=?7'I5929/:'/I=3'I?669)I20(7'H6:8'H9:(I',=I:44)I74:'I;)I(I2 NM:i:5 MD:Z:38^C149 oR:Z:1 oH:i:1 oP:i:5506 oS [...]
-simulated.250 16 1 1017 255 193M1D6M * 0 0 CCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCGAT '0I7;<9)I9'0I7:=;57&-I56:1;:7'H66)I:)I15:<9(I*I8676<63(I6:&+<I66(I1;739'0I3'H:8(2I38'G84;5868?:5:68&F'1I676;6/6(I93'I7;;573:<&,<I(I99>3>59657695*I1'H9:5687>89<:49969678&+:I)I7:6:<5=5)I;4'G9(I;:)5I;;7 NM:i:1 MD:Z:193^C6 oR:Z:1 oH:i:1 oP:i:1016 oS:A:R [...]
+simulated.247 0 2 27 255 89M1D85M * 0 0 CTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTA A7;871I(G'4I0':79654492I(I(536:7I1'81H'7687I(7:468:58?I'469=87996I):F'I(777I(H':687868784D;I-&78I(I(I.&7;36869<I5);:;A36I(5I4);I(76876I(I)54I;+&I(428I(I2(I'I(77I):I0'I*:387D7 NM:i:2 MD:Z:89T84T oR:Z:2 oH:i:1 oP:i:26 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.248 0 1 1168 255 58M1I82M1D23M1I38M * 0 0 CGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTCGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTACCCACCGTTCATAACCCCACGAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCA 72<59:97272958769I;+&I(9:88657>I)6:I(4H'77I>,':9<;I(554I*;'63417>F&99I)8I*F'84I'<7:1I2(94I(I(;I:+&I(:I)8988:5I(<5H'69<I)825I(85:7I(I2(3I'8I/'I,7I-&:I*5I'8:4I'I;+&69&8<9;78;<I*:G'E&74I+I2(>486647I3(27I':6 NM:i:3 MD:Z:140T61 oR:Z:1 oH:i:1 [...]
+simulated.249 16 1 5507 255 21M1I5M1I12M1D5M1I112M1I32M * 0 0 CTTGAAACATTACAAAGGGCAGTGTCCGATGCCCAGTTAACCACCTAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGTAGGCAGAATCTTCCCCAGCTTAGATTAGGTTA 5(I8'.I8:'G7:)4I'0I6;&=08(I&;89&-I35(I'H,I7'I%9:9;)I8*I568(I89;9574)I9(I9599753=94;4(I8:'H)I996688(I4;554?'G74'I?:487:=7494;<>968'H5=?7'I5929/:'/I=3'I?669)I20(7'H6:8'H9:(I',=I:44)I74:'I;)I(I2 NM:i:5 MD:Z:38C149 oR:Z:1 oH:i:1 oP:i:5506 oS: [...]
+simulated.250 16 1 1017 255 193M1D6M * 0 0 CCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCGAT '0I7;<9)I9'0I7:=;57&-I56:1;:7'H66)I:)I15:<9(I*I8676<63(I6:&+<I66(I1;739'0I3'H:8(2I38'G84;5868?:5:68&F'1I676;6/6(I93'I7;;573:<&,<I(I99>3>59657695*I1'H9:5687>89<:49969678&+:I)I7:6:<5=5)I;4'G9(I;:)5I;;7 NM:i:1 MD:Z:193C6 oR:Z:1 oH:i:1 oP:i:1016 oS:A:R [...]
simulated.251 16 1 7170 255 3M1I37M1I183M * 0 0 ATACGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCGTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCC =59'*I'/I8&-I9:66(I'G767::>;977528<8697<;&6)I4(I826&.I<3:5'I673(I984(I6(I(I066(I957:76=638;3&*8I9;(I<(I53559556'F(I;6(I64&+:I*I88;;7)I;)I79'/I3;4(I553)I'0I:3'/I694'H337<(I<;8:(I69<:3358*I89699=40:'0I87<9;)I:=83678&+9I: [...]
-simulated.252 0 1 9085 255 92M1I25M1I11M1D75M * 0 0 TTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTACTTCGGGCATGCACATGATCGTACGCGAGGCGCGCGCATTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAAT I);97I0'I-&367I(:H';665:568I(G'837;58I(:I(9G'I(79I'0F'3<I(;7I'5959I)983698;795I)I'I/'>4I*747,I(;I1(47>49?:96:95269;269&6I(::6;776;I,=I(47;4I(I+I(199I'4I(I.&8I(I'798I(;I.&F&4I(=34::9=6I'I'777:H'I)>4I'65:I'9 NM:i:3 MD:Z:128^T75 oR:Z:1 o [...]
-simulated.253 0 1 3281 255 36M1D103M1I79M * 0 0 TACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTACCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACC 1C9I'3I)59I/'7:F'4:56<>87284I'6I'E&;I6)5I(I(9786I'7;H'I':6>I/'7:94I:+&3E&65H'I'<9761I;+&I'I(9I-&486>8I(8569=:9I-&5;I)F&267:7AG'5377653I(I/'&I/'3647I(3;:5:3:688787725;F'2<=59I:+&;;I(II0)&8I-&8553963G'5I)5I/'95I/'I'26:5H' NM:i [...]
-simulated.254 0 1 5186 255 64M1D24M1D129M * 0 0 ATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTATTCAGCGCTGAGTCCTGCTCGGACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGG 7884I(614I)I(89G'I(I2(767I0'I'I)3::4;44778<5I/'587I(1I(I(2I(7:78D9I(92176:9893<I(63418H'D382I0'I/'983/<:F&8679H'I'I(77>9I'H'>6:9967I0'95I/':I0'I(I'8I)5E&647<:865I0'7764885I8*&9H';F&73:I-&;;>;48;;67H'9:I(7<9:42:F&:6:F' NM:i:2 M [...]
-simulated.255 16 1 301 255 81M1D31M1I14M1D18M1D45M * 0 0 ATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAATGGCCTAGCAAACCCTGTCGAGATAGGACCGGGTGTCACGTCAATTCTCGGCTGGATCCCTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCC .(I'I&F'I'-?I:448*I88&.I;679:83(I5<9'H799674(.AI69568'G'/I<34&F6)I5(I<'.I388805:9(/EI2(I(I3838(1I&-I8868687466(I&'G(3I3194864=:,I'G893)I7:(I89'/ID15936<4(I76;'H7;;32@)I6878785:9)I=7(I8(I)I(I NM:i:4 MD:Z:81^A45^A18^T45 oR:Z:1 oH:i:1 oP:i:300 oS: [...]
+simulated.252 0 1 9085 255 92M1I25M1I11M1D75M * 0 0 TTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTACTTCGGGCATGCACATGATCGTACGCGAGGCGCGCGCATTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAAT I);97I0'I-&367I(:H';665:568I(G'837;58I(:I(9G'I(79I'0F'3<I(;7I'5959I)983698;795I)I'I/'>4I*747,I(;I1(47>49?:96:95269;269&6I(::6;776;I,=I(47;4I(I+I(199I'4I(I.&8I(I'798I(;I.&F&4I(=34::9=6I'I'777:H'I)>4I'65:I'9 NM:i:3 MD:Z:128T75 oR:Z:1 oH [...]
+simulated.253 0 1 3281 255 36M1D103M1I79M * 0 0 TACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTACCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACC 1C9I'3I)59I/'7:F'4:56<>87284I'6I'E&;I6)5I(I(9786I'7;H'I':6>I/'7:94I:+&3E&65H'I'<9761I;+&I'I(9I-&486>8I(8569=:9I-&5;I)F&267:7AG'5377653I(I/'&I/'3647I(3;:5:3:688787725;F'2<=59I:+&;;I(II0)&8I-&8553963G'5I)5I/'95I/'I'26:5H' NM:i [...]
+simulated.254 0 1 5186 255 64M1D24M1D129M * 0 0 ATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTATTCAGCGCTGAGTCCTGCTCGGACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGG 7884I(614I)I(89G'I(I2(767I0'I'I)3::4;44778<5I/'587I(1I(I(2I(7:78D9I(92176:9893<I(63418H'D382I0'I/'983/<:F&8679H'I'I(77>9I'H'>6:9967I0'95I/':I0'I(I'8I)5E&647<:865I0'7764885I8*&9H';F&73:I-&;;>;48;;67H'9:I(7<9:42:F&:6:F' NM:i:2 M [...]
+simulated.255 16 1 301 255 81M1D31M1I14M1D18M1D45M * 0 0 ATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAATGGCCTAGCAAACCCTGTCGAGATAGGACCGGGTGTCACGTCAATTCTCGGCTGGATCCCTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCC .(I'I&F'I'-?I:448*I88&.I;679:83(I5<9'H799674(.AI69568'G'/I<34&F6)I5(I<'.I388805:9(/EI2(I(I3838(1I&-I8868687466(I&'G(3I3194864=:,I'G893)I7:(I89'/ID15936<4(I76;'H7;;32@)I6878785:9)I=7(I8(I)I(I NM:i:4 MD:Z:81A45A18T45 oR:Z:1 oH:i:1 oP:i:300 oS:A:R [...]
simulated.256 16 1 8688 255 194M * 0 0 GGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGG )I'I836'- at I(I58'0I)I'/I(I1'H'0I&-I(I&.I7<46;;2:4'.I8(I<8'G97(I)I978)I'.I:448<4:&*9I765(I;96:8854879*I;7(1I:38'I5445<64'I(I<854:>'I<79947856'H5'H'H6&E'+3II8:&D447976(I'0I7)I&.I658+I634:7(I7:'I8(I NM:i:0 MD:Z:194 oR:Z:1 oH:i:1 oP:i:8687 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.257 16 1 4308 255 103M1I20M1D32M1I50M * 0 0 TAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGTCCGTGATCGCGGAGTAGGTTACACCCGTCGCCGATTATCACAAGTTTTTGACGACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCA :'0I;34'H6779'H'/I?72=6;78877(I9)I)I599)I8(I:(I)I325='I:47)I9:2478(I3748&F78>'/I86945:53869568694:&*1II('I56;4662;'H6=6:'I(ID;7'0I:698(I5:(I87589(I8'+3II998%:7:'I?6:4936;8(I'H(I87788(2I:&.I'/I(I;&*9I6:96)I88 NM:i:3 MD:Z:123^A82 oR [...]
-simulated.258 16 1 9118 255 114M1D10M1I70M * 0 0 GTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACACGGTTTGTTCGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGT :569'H1(I@'H(I64'I8(I64)I69(I4769)I8846;5=;30(I)I&-I84'G988'H<'0I9:7554::64:87598>5.8'H:?7<88;=(1I?&D;9;9(I(I(I555C9(I&.I8'H&)I027(I:&-I*I7(I748:5889(I&E:561(I)I73(I8:8'H9562496(I:66(3I67:&.I58;8 NM:i:2 MD:Z:114^A80 oR:Z:1 oH:i:1 oP:i:9117 oS:A:R [...]
+simulated.257 16 1 4308 255 103M1I20M1D32M1I50M * 0 0 TAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGTCCGTGATCGCGGAGTAGGTTACACCCGTCGCCGATTATCACAAGTTTTTGACGACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCA :'0I;34'H6779'H'/I?72=6;78877(I9)I)I599)I8(I:(I)I325='I:47)I9:2478(I3748&F78>'/I86945:53869568694:&*1II('I56;4662;'H6=6:'I(ID;7'0I:698(I5:(I87589(I8'+3II998%:7:'I?6:4936;8(I'H(I87788(2I:&.I'/I(I;&*9I6:96)I88 NM:i:3 MD:Z:123A82 oR: [...]
+simulated.258 16 1 9118 255 114M1D10M1I70M * 0 0 GTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACACGGTTTGTTCGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGT :569'H1(I@'H(I64'I8(I64)I69(I4769)I8846;5=;30(I)I&-I84'G988'H<'0I9:7554::64:87598>5.8'H:?7<88;=(1I?&D;9;9(I(I(I555C9(I&.I8'H&)I027(I:&-I*I7(I748:5889(I&E:561(I)I73(I8:8'H9562496(I:66(3I67:&.I58;8 NM:i:2 MD:Z:114A80 oR:Z:1 oH:i:1 oP:i:9117 oS:A:R X [...]
simulated.259 16 1 1090 255 36M1I130M * 0 0 TAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTCGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAG 79(I66&.I88(I<;596688:;5:6(I'/I6:36;)7:'I78(I=5884:45',=I(I95756973:67<7&D6(I:7<99575:87:88876;6&,<I(I:96777:8)I<9(I8'F69',<I6626'I897'I8898;72(I47(I7'H&F?3(I4;>8'/I48 NM:i:1 MD:Z:166 oR:Z:1 oH:i:1 oP:i:1089 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.260 0 1 5615 255 25M1I66M1D80M1I24M * 0 0 TTCTCTAGTCTGCTGACTACCAGTAGTTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTCGTGTGTCGCTTCCTACCTTCGGTC G'858859>4<:;653778G'6265%G'87<>:5I0'7;E&6=48I(586I,;59G'9<I(I:+&697G'653I(5I+I)4I)9I);7I-&6I,:;9=I1(8:766H'I)5H'>9;5I)::568G'556H':576:4IG0)%F'34I(58967I(I(/;1I(6477I'99I(&B956:57;4I(H'46I)I(6I(79 NM:i:3 MD:Z:91^A104 oR:Z:1 oH:i:1 oP:i:5614 [...]
+simulated.260 0 1 5615 255 25M1I66M1D80M1I24M * 0 0 TTCTCTAGTCTGCTGACTACCAGTAGTTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTCGTGTGTCGCTTCCTACCTTCGGTC G'858859>4<:;653778G'6265%G'87<>:5I0'7;E&6=48I(586I,;59G'9<I(I:+&697G'653I(5I+I)4I)9I);7I-&6I,:;9=I1(8:766H'I)5H'>9;5I)::568G'556H':576:4IG0)%F'34I(58967I(I(/;1I(6477I'99I(&B956:57;4I(H'46I)I(6I(79 NM:i:3 MD:Z:91A104 oR:Z:1 oH:i:1 oP:i:5614 o [...]
simulated.261 0 1 8649 255 174M1I19M1I1M1I23M * 0 0 TACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGACTACAAGCCAATGGAAAAACGTATTCATAGCAAGGGCTTAAATGA 85445I(9I'827I(6I(>99I1(;I(5I)95I(446I(I(I(952I8*&H'9:I-&I(I0'I(7I*I.&I4)I(I.'5:68?;;59I.&7I(69H'75I(D&557I(I-&89694;;IB.(6=9I(=8592<98=77I(;AI0'595I(<47:<72I)I'6735=4I(25:47%6796I*@I'I(4I)II2*&';'6I'36;:58I)I0'8H'I.&83 [...]
simulated.262 16 1 7101 255 18M1I204M * 0 0 CTCTGGATCCTATCGGATCGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGG 748:(I9:&E5;79(I44&'/I7'I)5I89'I23(I(I9(2I'0I046(I7'H7:72&E38(I9952947598)I&.I8&-I5=79'H)I56745<79<36695:586998'I6'G:7:(2I6786)I5<:(I779(I;'H'G48:'I;5519<755935&+9I3:'I5(I7795:743(I(I6:(I27&+;I)I:77<4'I7(I8;&-I981(I867(I&.I [...]
simulated.263 16 1 595 255 51M1I97M1I24M * 0 0 TGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGTCGTAGGATAATCTACGGTTGCATG >435'.I59'0I9(I9544577:*I;4839752(I72(I;7'H>98(I8<6%(,2AII'I:84(1I82:9(I)I7(2I96778797::)I57857757865(I7752=C589(I886(I464)I:8&-I6(I66(I44897659;69'H&:378)I56(I<7779(I(I95772 NM:i:2 MD:Z:172 oR:Z:1 oH:i:1 oP:i:594 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.264 0 1 7864 255 232M * 0 0 AGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGACTTTCACGATCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACT 9997I(I.&8I)I(77<9:::;:I<,'8I(65;I)I)8:66:578I1(43H'4I(?I(58I);<=G'84:8779>8I'84I):5;7788<46295H'<6=<3I(6I(:I(:97I(5I.&597;8457I2(7I/'G'467I(H'6<153I)7I-&969:39288I(7I(=A(I.'88537=836I.&58I(276I(I/'I)6:F&5F&762I7*&@43;84I [...]
simulated.265 16 1 7779 255 43M1I151M * 0 0 CCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGA (I(I'I6977(I6;888(I95&.I687B&+3II97)I(2I743&D868'H<772796:5'I:4<'/I6;'0I(1I534(I2(I7:89743'I&-I6&D'G5<57643;:&*8I<)I:26'I(I27<49698)4I39)I2(I6(I;5(I643)I:95655679(I56)I766=:=;87:8::'I647<<)I:)I8: NM:i:1 MD:Z:194 oR:Z:1 oH:i:1 oP:i:7778 oS:A:R XE:i:1 XS [...]
-simulated.266 16 1 8805 255 25M1I78M1I61M1D60M * 0 0 GTTAATACGTGAACAGTGCTACAAGTCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCGTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAA 6'G'H7<1479(I<B7538687(I8&(I*I<'I&*1II68'I966398'I&.I<'G&-I95:(I8;597*I88(I5(2I(3I(I997:96778(I5*I19'G36(6956666;1:&+;I53'G(I'H)I'H87>958647'G8'H(I66)I:(I756'G(I67'H9,I45435'H57:;5;65<7'0I9)I8(I86479;5396/'H694'1 [...]
-simulated.267 0 1 4542 255 180M1D6M1I6M * 0 0 TGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTCGCTACCGCTT 5I(;=I);1:5693>I0'7I(=:38356I'977288<I(I(86I)8I.&:77?I(:777768999>I'I-&9:9I-&77:G'I(:G'96:I(9;;57;:9E&9I0'4I(5/79F&6>F&99;87I0':9787<I(6G'869;0I1(I';16G'47881<I1(79:I)H'/:2;6F&9979I,98;5-E&89I, NM:i:2 MD:Z:180^T12 oR:Z:1 oH:i:1 oP:i:4541 oS:A:F XE:i:2 [...]
+simulated.266 16 1 8805 255 25M1I78M1I61M1D60M * 0 0 GTTAATACGTGAACAGTGCTACAAGTCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCGTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAA 6'G'H7<1479(I<B7538687(I8&(I*I<'I&*1II68'I966398'I&.I<'G&-I95:(I8;597*I88(I5(2I(3I(I997:96778(I5*I19'G36(6956666;1:&+;I53'G(I'H)I'H87>958647'G8'H(I66)I:(I756'G(I67'H9,I45435'H57:;5;65<7'0I9)I8(I86479;5396/'H694'1 [...]
+simulated.267 0 1 4542 255 180M1D6M1I6M * 0 0 TGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTCGCTACCGCTT 5I(;=I);1:5693>I0'7I(=:38356I'977288<I(I(86I)8I.&:77?I(:777768999>I'I-&9:9I-&77:G'I(:G'96:I(9;;57;:9E&9I0'4I(5/79F&6>F&99;87I0':9787<I(6G'869;0I1(I';16G'47881<I1(79:I)H'/:2;6F&9979I,98;5-E&89I, NM:i:2 MD:Z:180T12 oR:Z:1 oH:i:1 oP:i:4541 oS:A:F XE:i:2 X [...]
simulated.268 0 1 4114 255 210M * 0 0 AGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCG :9?7>:I(:7;I/'5F'I/'I(:I(88:37=8I(5I(3:2<<8I(;I(I)I(H'6I/'G'654I'79:6G'999I3(I(H'3552G'747478I'60I4)97I)5I(446:79067:739I)I0'0I0'I)I(I'5C863=:<68846=<I'I-&39I(6:74I(4G'I(61I.&:6I>,'98898868:I(I0'I.'678I)7778I(7 NM:i:0 MD:Z:210 oR:Z:1 oH:i:1 oP [...]
simulated.269 16 1 6096 255 153M1I40M * 0 0 CATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTCGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAG ?866(I1798'+4II6'- at I859'F997'.I*I4896;>;47469'H;&+;I'/I7349355'F4;72)I87'/I097&.I3985:346777648:99=9'H437*I;98)I49(I7(3I;11:4=)I13779;77 at 27?;4&-I:2<)I977,8619'/I77648;&.I<48:5(1I7(I9;',>I6(I'/I: NM:i:1 MD:Z:193 oR:Z:1 oH:i:1 oP:i:6095 oS:A:R XE:i:1 XS:i [...]
-simulated.270 16 1 2634 255 101M1I15M1D73M1I10M * 0 0 TTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTACTTTGGGGTCTTAGATTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGACGCATCGATA '- at I45(I7'0I<6(I54?467<7;8'I8:45;0)I869;)I5?653;6395756(I858'H;6:6657863)I7(I:;329?=5:365(I7&+<I5;&.I%>&-I'-?I98'G6:7+I&E85=666:'H8;(I'F9'-?I77704;'I86*I&.I(I:;=4?869'-?I0'I;&+<I:'0I7:3<(I;5(3;6716:456 NM:i:3 MD:Z:116^T83 oR:Z:1 oH:i:1 [...]
+simulated.270 16 1 2634 255 101M1I15M1D73M1I10M * 0 0 TTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTACTTTGGGGTCTTAGATTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGACGCATCGATA '- at I45(I7'0I<6(I54?467<7;8'I8:45;0)I869;)I5?653;6395756(I858'H;6:6657863)I7(I:;329?=5:365(I7&+<I5;&.I%>&-I'-?I98'G6:7+I&E85=666:'H8;(I'F9'-?I77704;'I86*I&.I(I:;=4?869'-?I0'I;&+<I:'0I7:3<(I;5(3;6716:456 NM:i:3 MD:Z:116T83 oR:Z:1 oH:i:1 o [...]
simulated.271 16 1 3690 255 196M * 0 0 CTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCA =;48(I'I75;'I;789349(I<8&E8:86(I(I*I;:'/I06'H&.I'/I'I6(I::(1I34946687.&-I74(1I(I:&.I99'H8878<97(I:(I7678'0I73(I'H9;6(I8=:;94774746:96:8934='/I(I77:9(I45:(I'/I)I2)I56:7688;27(I3'H8'G5989;:6(I:*I75; NM:i:0 MD:Z:196 oR:Z:1 oH:i:1 oP:i:3689 oS:A:R XE:i:0 XS:i: [...]
simulated.272 16 1 23 255 200M * 0 0 GCGCTTACAGACTTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCC 46=8)I65:7:6'.I:'/I6'I:6:3='0I75(I:7&.I36;897(I;679575'H:)I777;'F6&.I(I6>9;7&D<54;'H7<:4?5(I&,<I?67:;'G=166989;(I:89<'0I772546:'I(I45'/I4;9786'H(1I<7+I:84758(I:957'F6(I99'G'G84*I(I5(I5;5585447(I5(I6'I NM:i:0 MD:Z:200 oR:Z:1 oH:i:1 oP:i:22 oS:A:R XE:i:0 X [...]
simulated.273 0 1 2872 255 28M1I13M1I161M * 0 0 GCTTATCGTCCATCCGACCAGTAGGGATAGTGCCTATGCAGTCGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTG 88I(71858I(86I(47I'2628I/'7:&5<6I(84866475'589=:9I)95878I:+&3I(987:I'7426H'8987I,&56F'79:5I'<I(8:>8>38I(<I(38:6<:8;H':99275I/'7I2(7H'7I(I(E&742H'3G':4;958;;=4;:4I(9:6;7I)I(I(6I/'6:;I)353:6H'7I(I0'93846=95 NM:i:2 MD:Z:202 oR:Z:1 oH:i:1 oP:i [...]
-simulated.274 0 2 185 255 184M1D13M * 0 0 AGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGAGATTTATCC 577I(7I-&I'9884F'9I(8I)I(58446:79I'782I'=H'I3(56I<,'I(:I)5I(H'7766:I/'I*3?<695566885:6I(27I+I1'=57;I'69I(56I(=8476:.987=87<49=I(:;989>14?6;77I-&I(I(4767<78H'I'I(61::06<65I(944G'66I-&45I7*49;I/'48I( NM:i:1 MD:Z:184^G13 oR:Z:2 oH:i:1 oP:i:184 oS:A:F XE:i [...]
-simulated.275 16 1 5019 255 44M1D83M1I83M * 0 0 TGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGTACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACAT 5)I479'H69(I<;&-I6&)/:II7&+:I(I7964<388'I6:5,I;=)I963)I59677'I7:'H7566(I475;3969>'I6<347)I7<;(I76*I(I:&.I8'I5666 at 9&).:II8873:77%<9<'G8;46&-I78='I7(I438B(I6<89&*9I6'I'0I64:'I635'H(I>6'G(I'.I;:;'0I'H(I568481<::667 NM:i:2 MD:Z:44^G166 [...]
-simulated.276 16 1 7961 255 74M1D89M1I13M1I13M * 0 0 CTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTCACGATCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTAGTCCGACTCGTATCGTCTAATGTGAGT =582/'H6'H9'I728(I2'/I<877;67:(1I8&.I(I402(I(I;8458'H5&.I78;962466(I4'H3&D,I:7;;44878(2I<5(I947*I)4I(I at 7'I;(I67:&+:I99:687)I79<:787;9:(I'H92:476'G'I)I969(I:6(I'G98%36'I7689<5775%9:96'H8<6<:89 NM:i:3 MD:Z:74^T115 oR:Z:1 oH:i:1 oP:i:7960 oS:A:R XE:i [...]
+simulated.274 0 2 185 255 184M1D13M * 0 0 AGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGAGATTTATCC 577I(7I-&I'9884F'9I(8I)I(58446:79I'782I'=H'I3(56I<,'I(:I)5I(H'7766:I/'I*3?<695566885:6I(27I+I1'=57;I'69I(56I(=8476:.987=87<49=I(:;989>14?6;77I-&I(I(4767<78H'I'I(61::06<65I(944G'66I-&45I7*49;I/'48I( NM:i:1 MD:Z:184G13 oR:Z:2 oH:i:1 oP:i:184 oS:A:F XE:i: [...]
+simulated.275 16 1 5019 255 44M1D83M1I83M * 0 0 TGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGTACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACAT 5)I479'H69(I<;&-I6&)/:II7&+:I(I7964<388'I6:5,I;=)I963)I59677'I7:'H7566(I475;3969>'I6<347)I7<;(I76*I(I:&.I8'I5666 at 9&).:II8873:77%<9<'G8;46&-I78='I7(I438B(I6<89&*9I6'I'0I64:'I635'H(I>6'G(I'.I;:;'0I'H(I568481<::667 NM:i:2 MD:Z:44G166 o [...]
+simulated.276 16 1 7961 255 74M1D89M1I13M1I13M * 0 0 CTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTCACGATCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTAGTCCGACTCGTATCGTCTAATGTGAGT =582/'H6'H9'I728(I2'/I<877;67:(1I8&.I(I402(I(I;8458'H5&.I78;962466(I4'H3&D,I:7;;44878(2I<5(I947*I)4I(I at 7'I;(I67:&+:I99:687)I79<:787;9:(I'H92:476'G'I)I969(I:6(I'G98%36'I7689<5775%9:96'H8<6<:89 NM:i:3 MD:Z:74T115 oR:Z:1 oH:i:1 oP:i:7960 oS:A:R XE:i: [...]
simulated.277 0 1 6920 255 193M * 0 0 GGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTA I/'I2(I(8I1(68I.&>98787G'747875?I(78I0'8E&;666:8874H'3H'99;4E&H':68=5079I(4767>I-&9=I*<51I(7I'5G'8?:66F&I):I1(I'79I(:;I;+&I(<58:76748;285E&:7II3*&I/'6I(636:76I)=>77I(14<9<I':I)7765684:<I(<;I*75 NM:i:0 MD:Z:193 oR:Z:1 oH:i:1 oP:i:6919 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.278 16 1 2369 255 183M * 0 0 ATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAG 9;576<8'H3>06;8586483&*2II68'G'/I'I=:69)I'/I(I)I:5<9'I&.I'/I:04(I=7'H:2)I:::?49<)I9&.I:)I46)I:75)I77<?<:9'I96649(I7878(I858686<<<636&E7(I)I(I'I6:'F(I6:677(I7(I'H9&-I7>=44<5678<5::;755 NM:i:0 MD:Z:183 oR:Z:1 oH:i:1 oP:i:2368 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.279 0 1 4667 255 55M1D134M * 0 0 AATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCT I(2<5656I(9I(36025I/'H'27;I(87;9:5I/'545I'I(797:4I)4:4:I+8887I(:@I(5:II4+'I0'I*9I)7624I(<5;5I(976;4:;6II3*&7136I(5:;9I(:9:I=,'9I(5>7I'83G'I(88I)I2(79I-&655I.&I(5I)II4+'66966I)6G'I'9:I*36I(6 NM:i:1 MD:Z:55^T134 oR:Z:1 oH:i:1 oP:i:4666 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.279 0 1 4667 255 55M1D134M * 0 0 AATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCT I(2<5656I(9I(36025I/'H'27;I(87;9:5I/'545I'I(797:4I)4:4:I+8887I(:@I(5:II4+'I0'I*9I)7624I(<5;5I(976;4:;6II3*&7136I(5:;9I(:9:I=,'9I(5>7I'83G'I(88I)I2(79I-&655I.&I(5I)II4+'66966I)6G'I'9:I*36I(6 NM:i:1 MD:Z:55T134 oR:Z:1 oH:i:1 oP:i:4666 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.280 16 1 1987 255 6M1I207M * 0 0 GGGAAACGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAG '/I'0I(57844(I5679(IA'H?8256&)1II76)I57876(I9;85187562:5(I9333;&.I:=:(I6'H'0I(I:7962&+:I3'F676'H8(I58496(I566;'0I898(I9'/I635'I:)I:627;336:7A1&E='/I)I65<(3I(I75'I:8(I&E'H&+;I7'G:6&F'0I&F588='I53?866'I:;(I=:578)I<69 NM:i:1 MD:Z:213 oR: [...]
-simulated.281 16 1 6658 255 13M1I42M1D52M1I87M * 0 0 TCCTTTGCAGTCTCGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATAGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATAC =(I'1I5;54657(886874(I)I7;49866765579(I=(I)I59883(I;9:67C56',>I5&,I859(2I8&*2II7=:'H)I>6?78)I(I6755'H2;'I626%&*7I6::(I3'H7;5)I(I(I)I24:'G(I5',<I)I:&E<;57(I799977)I65658'H=797748:1666(I)I;&-I7)I<77 NM:i:3 MD:Z:55^G139 oR:Z:1 oH:i:1 oP:i:6657 o [...]
+simulated.281 16 1 6658 255 13M1I42M1D52M1I87M * 0 0 TCCTTTGCAGTCTCGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATAGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATAC =(I'1I5;54657(886874(I)I7;49866765579(I=(I)I59883(I;9:67C56',>I5&,I859(2I8&*2II7=:'H)I>6?78)I(I6755'H2;'I626%&*7I6::(I3'H7;5)I(I(I)I24:'G(I5',<I)I:&E<;57(I799977)I65658'H=797748:1666(I)I;&-I7)I<77 NM:i:3 MD:Z:55G139 oR:Z:1 oH:i:1 oP:i:6657 oS [...]
simulated.282 16 1 8138 255 208M * 0 0 GTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACG 7:57(I83886<4;9;9&+:I7:7;(I'/I'G66*I9:<&E7)I'/I56;4)I86866(3I:::8'H(I55'H<6;85=<4(I8'H6=)I54:786&-I'I27'I;22<='I5(I)I5;6924(I698;7(I;6(I47369647:4)I)I'I'0I'H879:3&F66(I='H84(2I6;6(I7)I7;5493135>8&E199(1I(I735 NM:i:0 MD:Z:208 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.283 16 1 2606 255 120M1D93M * 0 0 ATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAG 7;(I;7)I>88473;(I2478263988&)1IIC5(I3(2I53&E37;;979<88(I2<568<'H;9<9)I:?989;173=875'H876(I98996358;4)I6'I:3=6;;:78>7;&F8(3I94'0I=&.I&+:IA5'I695(2I(I36=67:8)I44(I(I5',>I37=83<'G69'H&-I(I755874:7&+;I2*I7(/FI:'/I75:7 NM:i:1 MD:Z:120^G93 [...]
-simulated.284 0 1 1301 255 11M1D174M * 0 0 CGGCAAATTTACCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAG 0F'7I0'I/'8I+7I(;I'6;2H'I:+&3249;88868I(9I(H'77I'I1(785686;I.&>:I'69I(<I0'6I)::I'I'7;55688274885E&45857778/I<+&6I)8I'76I)3I-&754:::I);F&>;6391I)9906I'I)5I0'9I(I(I2(6997;I(84684:I-&:<247 NM:i:1 MD:Z:11^C174 oR:Z:1 oH:i:1 oP:i:1300 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.283 16 1 2606 255 120M1D93M * 0 0 ATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAG 7;(I;7)I>88473;(I2478263988&)1IIC5(I3(2I53&E37;;979<88(I2<568<'H;9<9)I:?989;173=875'H876(I98996358;4)I6'I:3=6;;:78>7;&F8(3I94'0I=&.I&+:IA5'I695(2I(I36=67:8)I44(I(I5',>I37=83<'G69'H&-I(I755874:7&+;I2*I7(/FI:'/I75:7 NM:i:1 MD:Z:120G93 o [...]
+simulated.284 0 1 1301 255 11M1D174M * 0 0 CGGCAAATTTACCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAG 0F'7I0'I/'8I+7I(;I'6;2H'I:+&3249;88868I(9I(H'77I'I1(785686;I.&>:I'69I(<I0'6I)::I'I'7;55688274885E&45857778/I<+&6I)8I'76I)3I-&754:::I);F&>;6391I)9906I'I)5I0'9I(I(I2(6997;I(84684:I-&:<247 NM:i:1 MD:Z:11C174 oR:Z:1 oH:i:1 oP:i:1300 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.285 0 1 2419 255 104M1I82M * 0 0 TCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACACTTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCT =8I(I/'I1'825G'36I'34H'5853338I'5I/'<G'97I)555I(974482;I(9732=I(678:I(2=7;7A346.58I(4I(H'H'G'66I)I'798:3*I(6G'F'8I/'95:975;:5:88478:;I'6;I'2I):512<?;82:68I(6I(8II2*&8:4I)<:9<7556I/'I(5837 NM:i:1 MD:Z:186 oR:Z:1 oH:i:1 oP:i:2418 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.286 0 1 7446 255 49M1D86M1I8M1I56M * 0 0 CAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTAGTTAGTTACTTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGG :99.G'I(:7I'G'664962I1(I/'<;88844I'7=I(7I1'I(G'57CI(28;:66648I0'8397I(I1'77I.&I)I-&58I(I'I'I+68><82I(8;H'I'6:24H'38?6;I)5I)7I(F'417I(76&5I(:8I(9'F&I(9I';6943:<<B8F'5=46;;5:I(<555I(9H'I(999:18<9:8;I)I1( NM:i:3 MD:Z:49^A150 oR:Z:1 oH:i:1 oP: [...]
-simulated.287 0 1 2446 255 40M1I82M1I65M1D23M * 0 0 GACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTCGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATACGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTGTGGCAAATCTTATCTGAG 7:8I)7I1(8I(48I(44:I(9==4476I(84879I)54<+7G'6816:9978845I)6I(H'I(I(75I(I(85175I(7G'I(5I/'678785:<7766>572;I(:9I(8I(7<785>57%87:6I'9H'4II1)&947H':9679;28I/'G'7;7:967H'=<E&:87;;83I)5;35<6:;68IE/(7;I*8I/'4;I):<97487 NM:i:3 MD:Z:18 [...]
-simulated.288 0 1 1667 255 174M1D26M * 0 0 GGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGCATAGGTGGAATTGAATGACCGA H'66562I)654?9I(58996857I(I)I/'I(1G';8G'I(::776<68I'87;:9629253<788I(7995G'43I.&6:9-6BI:+&I(9477:G'4954.::E&986I)I(8I=,'6787G'I(39I4)I'5I)6:5;3876982899H'8:676I*5:I.&I.&I';:6I7*<488I(1H'H'I(8I(;7:I(<7 NM:i:1 MD:Z:174^G26 oR:Z:1 oH:i:1 oP:i:1666 oS: [...]
-simulated.289 0 1 2412 255 11M1D7M1I28M1I22M1D41M1I79M1I13M * 0 0 CGGTTAGTCAATTAAAGTAGAATATTAGTTGTATGACTTACCCTAATAGAATACAACGAGCAGCCGACAGCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACACTTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATAGCTCATGGATGGC 5E&I'7887I)I,I0'6;'8H'22I(9;I(6847:89I(7I2(7I'6(=I(<73I(7723;<;I(6:41:D=788I(94479?357;28I'2I(I(H'I'84I)I(5678:%I(8I(I'<I-&:8779588:699>657:I(84I)9I(379;4>:5:9<9G';I(8II2*&5 at 8I(538485:7I-&I(8%817;90I(86I(7 NM:i:6 MD:Z:11 [...]
+simulated.286 0 1 7446 255 49M1D86M1I8M1I56M * 0 0 CAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTAGTTAGTTACTTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGG :99.G'I(:7I'G'664962I1(I/'<;88844I'7=I(7I1'I(G'57CI(28;:66648I0'8397I(I1'77I.&I)I-&58I(I'I'I+68><82I(8;H'I'6:24H'38?6;I)5I)7I(F'417I(76&5I(:8I(9'F&I(9I';6943:<<B8F'5=46;;5:I(<555I(9H'I(999:18<9:8;I)I1( NM:i:3 MD:Z:49A150 oR:Z:1 oH:i:1 oP:i [...]
+simulated.287 0 1 2446 255 40M1I82M1I65M1D23M * 0 0 GACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTCGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATACGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTGTGGCAAATCTTATCTGAG 7:8I)7I1(8I(48I(44:I(9==4476I(84879I)54<+7G'6816:9978845I)6I(H'I(I(75I(I(85175I(7G'I(5I/'678785:<7766>572;I(:9I(8I(7<785>57%87:6I'9H'4II1)&947H':9679;28I/'G'7;7:967H'=<E&:87;;83I)5;35<6:;68IE/(7;I*8I/'4;I):<97487 NM:i:3 MD:Z:18 [...]
+simulated.288 0 1 1667 255 174M1D26M * 0 0 GGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGCATAGGTGGAATTGAATGACCGA H'66562I)654?9I(58996857I(I)I/'I(1G';8G'I(::776<68I'87;:9629253<788I(7995G'43I.&6:9-6BI:+&I(9477:G'4954.::E&986I)I(8I=,'6787G'I(39I4)I'5I)6:5;3876982899H'8:676I*5:I.&I.&I';:6I7*<488I(1H'H'I(8I(;7:I(<7 NM:i:1 MD:Z:174G26 oR:Z:1 oH:i:1 oP:i:1666 oS:A [...]
+simulated.289 0 1 2412 255 11M1D7M1I28M1I22M1D41M1I79M1I13M * 0 0 CGGTTAGTCAATTAAAGTAGAATATTAGTTGTATGACTTACCCTAATAGAATACAACGAGCAGCCGACAGCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACACTTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATAGCTCATGGATGGC 5E&I'7887I)I,I0'6;'8H'22I(9;I(6847:89I(7I2(7I'6(=I(<73I(7723;<;I(6:41:D=788I(94479?357;28I'2I(I(H'I'84I)I(5678:%I(8I(I'<I-&:8779588:699>657:I(84I)9I(379;4>:5:9<9G';I(8II2*&5 at 8I(538485:7I-&I(8%817;90I(86I(7 NM:i:6 MD:Z:11 [...]
simulated.290 16 1 3123 255 209M * 0 0 GCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCC 4:(I524(3I:86838 at 8&-I'+3II975646;<;&E896847;;:(I959'H<<563'I67(I978'G'0I58(I)I3'H<3=(3I87'/I'I'H(I'I57&+9I7;;9(I'+5II5(I59'/I:6:(.BI(I758)I5(I',<I995'G846:4(I'G8(I6(I:<(1I<7(I7=99517:899)I8'I'H<&+;I5'I'H7;4:(I NM:i:0 MD:Z:209 oR:Z:1 oH:i:1 oP: [...]
simulated.291 16 1 7269 255 151M1I70M * 0 0 GGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGTAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTA 'F59886469'G(I9<'I78&+:I)I>6777(I5*I90'0I>11'I=<5(I'0I87(1I647(I665:(I>937(I:8896569*I79;5767:6'/I2;8;<'H4:6838:&,<I<57(I4(I8:6'0I;646;6(I'I793:<695789*29996*6I9(I9=4(I8&+;I667679:7;'I'H=7)I'I57;7;8'/I(2I8755625'I49)I3'/I7 NM [...]
-simulated.292 0 1 278 255 188M * 0 0 GCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATG 7D:95;:6I(6;H':I'79;6H'5I(G'I'I(I9+&6949I(82I.&54;9929E&984I'935644I:+&>4579I(I1'=64H'7F'8I(7I/'88446448II4+'/I(I(55::I1'I.&:58;994:38I'I*I0'6;958954;I1(H'246F'55H'<:I1(I';76::;4H'09:I(<=8 NM:i:1 MD:Z:0C187 oR:Z:1 oH:i:1 oP:i:276 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.292 0 1 278 255 188M * 0 0 GCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATG 7D:95;:6I(6;H':I'79;6H'5I(G'I'I(I9+&6949I(82I.&54;9929E&984I'935644I:+&>4579I(I1'=64H'7F'8I(7I/'88446448II4+'/I(I(55::I1'I.&:58;994:38I'I*I0'6;958954;I1(H'246F'55H'<:I1(I';76::;4H'09:I(<=8 NM:i:1 MD:Z:C187 oR:Z:1 oH:i:1 oP:i:276 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.293 16 1 6119 255 4M1I63M1I131M1I2M * 0 0 CCATCGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGTATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTAGC 'I25,7'/I(I7;99:373;295)I8',>I'0I9:6:708(I69::'I94&.I<:9'/I;397?56:5(9=775>64:8(I699(I543)I97(I7'/I67:667&E9591884875;:9=&.I775(I<636888'1I528:>8(1I57935'1I<'G::&+;I6'I&.I6823<2(I956766;884<;;;7;(I675':6 NM:i:3 MD:Z:200 oR:Z:1 oH:i:1 oP [...]
-simulated.294 0 1 1978 255 115M1I46M1D20M1I21M * 0 0 CTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCACGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAATTACAATGAACCTTGGGGTACCTCAATTTGGTACGTTCGA 8;6G'7I)3I/'I2(99885I(9896E&7I(;5676II0)&72H';8744I'88:<38:6938.G'-94 at 9I-&57/I'7I)I.'I)8558:IA-(=G';69I(8I)98794I(4&874I2(9<9I(0I.&57<G'6I)=:36<:535586I)2I-&I(77>I*I(5:I'73I)E&E&I8*&&7I(;9H'I0'I);8:7H'8;3 NM:i:3 MD:Z:161^A41 oR:Z:1 oH [...]
+simulated.294 0 1 1978 255 115M1I46M1D20M1I21M * 0 0 CTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCACGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAATTACAATGAACCTTGGGGTACCTCAATTTGGTACGTTCGA 8;6G'7I)3I/'I2(99885I(9896E&7I(;5676II0)&72H';8744I'88:<38:6938.G'-94 at 9I-&57/I'7I)I.'I)8558:IA-(=G';69I(8I)98794I(4&874I2(9<9I(0I.&57<G'6I)=:36<:535586I)2I-&I(77>I*I(5:I'73I)E&E&I8*&&7I(;9H'I0'I);8:7H'8;3 NM:i:3 MD:Z:161A41 oR:Z:1 oH: [...]
simulated.295 0 1 2104 255 7M1I151M1I7M1I36M * 0 0 TCCCGTCTAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTACGACTACTCGGCCTAGCCCTAATCTACGCAACACAGACGGTACGA 8I/'9;6(I(6I(<688;58752;8I(:I0'I(:5=I.'I(;9I(77I(F'G'I:+&7I(78G'I-&I)486:G'698896I)62H'29>6=I)45;I/'I)07II:.)&64;9I9+&6275H'859=48:6585:4;6I'7<I/'8 at 69I'72;94/4'4388767*I(I(2;;I-&:F&9:2<738I';:=6497I(8956: NM:i:3 MD:Z:201 oR:Z:1 oH:i:1 o [...]
simulated.296 16 1 415 255 208M * 0 0 CGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTC ;&.I86<@643:8&-I(I;68)I7=(I45'.I)I6>:568:'H98:)I25=<76(I85 at 5;6646'G;8)I6&F+I(I84&*8I5=838:>'I;6(I(-AI:95(I89'.I7538&-I7'I(I=77'1I:686;9'I:78<7)I<(I(I9657296;'0I/9995'1I>57=565'H8285989'/I<6'/I7(I659763:=(I744 NM:i:0 MD:Z:208 oR:Z:1 oH:i:1 oP:i:4 [...]
-simulated.297 16 1 4736 255 122M1I37M1D8M1I33M * 0 0 TCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTAGTTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGACGTTGCGGCCATCCAATGTCTGCAATATGGAAGCG 5&)1II'/I(I4'G8217(I778<)I476566>8&*3II7556'F9967)I?94&,<I4(I457)I57'F(I48)I'/I9:&-I887'/I(I6(I&)0II76=7:(I<'F(I37(I9;(I<6*(I98566&-I37&F847:8836:;;'G9'/I681'I:*7I8328;&'H;6'G(I?;'F(I878::67'H737(I&D867 NM:i:3 MD:Z:159^G41 oR:Z:1 oH:i:1 [...]
-simulated.298 16 1 5396 255 21M1D188M * 0 0 ATAAGACGGGTGATGCCAGGTGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCA 98(I:69'/I9:766'I:&F8,I7'I66&*1II:2<27'I:<983:99)I89(I44:24>'I5<89:;5::'I(I637&F7)I:77759'G(I:(I<9597(I;6895756)I;&-I69&E4D'.I'/I95723'G865'/I75)I(I(3I4(I:99:+I0(I=75'I587:;55(I9)I44;:76646:95'H<6'I*I;35484'I5 NM:i:1 MD:Z:21^G188 oR:Z:1 o [...]
+simulated.297 16 1 4736 255 122M1I37M1D8M1I33M * 0 0 TCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTAGTTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGACGTTGCGGCCATCCAATGTCTGCAATATGGAAGCG 5&)1II'/I(I4'G8217(I778<)I476566>8&*3II7556'F9967)I?94&,<I4(I457)I57'F(I48)I'/I9:&-I887'/I(I6(I&)0II76=7:(I<'F(I37(I9;(I<6*(I98566&-I37&F847:8836:;;'G9'/I681'I:*7I8328;&'H;6'G(I?;'F(I878::67'H737(I&D867 NM:i:3 MD:Z:159G41 oR:Z:1 oH:i:1 [...]
+simulated.298 16 1 5396 255 21M1D188M * 0 0 ATAAGACGGGTGATGCCAGGTGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCA 98(I:69'/I9:766'I:&F8,I7'I66&*1II:2<27'I:<983:99)I89(I44:24>'I5<89:;5::'I(I637&F7)I:77759'G(I:(I<9597(I;6895756)I;&-I69&E4D'.I'/I95723'G865'/I75)I(I(3I4(I:99:+I0(I=75'I587:;55(I9)I44;:76646:95'H<6'I*I;35484'I5 NM:i:1 MD:Z:21G188 oR:Z:1 oH [...]
simulated.299 0 1 8460 255 174M1I10M * 0 0 GTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGTACGCAAAGTA 1?G'I)6;8786I(I'I0'94<I.'5>I)59I(486;5>27265:74I)8;9>I(6:I'7I*<:I'8I.&/74;F'6I(784:77<H'I'5;5:7I'I(II1)&9669I<,'66I'2;65I0':I.'4I):I(9777I'1I(75;H'5G'958I<,&I3(I(66551I<,&>9:&66::I2(79: NM:i:1 MD:Z:184 oR:Z:1 oH:i:1 oP:i:8459 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.300 16 1 1229 255 46M1I37M1D60M1I41M * 0 0 AGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACTAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGACGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAAC 8?7)I42(I9&E*I<8'H6627'/I4;)I*I4&*8I(I8(I77;84%:'H89*I:58'I96<(I8598(I'/I5(I8'0I(1I5,I5'I>(I688(I&+;I76665566:2'I3'I(I4;'H(1I3965:54&-I09(I36'I5&'0I7'I57(I)I6875=994455<4(I958956869'-?I2 NM:i:3 MD:Z:83^C101 oR:Z:1 oH:i:1 oP:i:1228 oS:A:R XE:i:3 XS:i:0 XI:i:0
-simulated.301 16 1 1404 255 10M1I19M1D45M1D23M1I51M1I39M * 0 0 CAGACAAAACTAAGAATCAAGTTTCTACAGCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAGTGAGAGGAAGTTGGTCGTCTAGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCTACATGTCATCCTATGATATCAAACCATGCACGTATTGTA 3845<&+;I8+(I3(I<:(I4(1I949864D8(I395:68)I7564'G'I:(2I:(I+I'/I8>6;6)I:65986,I749777'I(I;(I'G654:7;%6:739747;>'H'0I3:586&.I79A&)1II(I(I;7'I(I9<768:6'.I'98:=89<47'I=5;48:956&.I'G6:29575;3(I9>< NM:i:5 MD:Z:29^C45^A113 oR:Z:1 oH:i:1 oP:i:1403 [...]
-simulated.302 0 1 7702 255 29M1D172M * 0 0 CGCGGAACCAGAATGCCTTCACTCAAGCAGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCAT ;49I(I'I)88H'37I(I(53:89I(749D8::37;G'I(H'89:I'6<4::7<F&I(I(89I0'67:I;+&;I(I.&I*F'6988I):7677I'67I2(>5 at 9II0)&84I)I/'4589956E&6=5=;4718I'26:I3(87I0'I.&;:8H'4I(677;33:I'I/'9I(I(957;66657I9*&6H':86I(I(988 NM:i:1 MD:Z:29^G172 oR:Z:1 oH:i:1 oP:i:7701 o [...]
-simulated.303 16 1 602 255 153M1I28M1D37M * 0 0 CTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCGTACGGTTGCATGGTTATTTAAAGGCTATCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAG 2:(3I7(I77435944'G::=8;875(I7;(I87)I661)I44B&).9II)I=86(3I;<98(I(I3'.I38:69751?8'G59776<7138A'H6589481:7)I:;9(I5:1'H;4&.I3)I5:'H5=7358834:4(I<:67)I73(I56%878(I)I6:89)I(I6(1I'/I'F7:78,I::58<?<&+9I44;37575>6639:64;&-I45;7 NM:i [...]
-simulated.304 16 1 2652 255 80M1D6M1D87M1I31M * 0 0 CTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTCTTTGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCGATCGATATAAAAGTAAAAATCACTCTTCTAG ::867914)I87<65?)I:?68'I;08577458438=&F4<;(I8642750934(I:(I63<7882967<7(I7&+;I29*I7&,I(1I44(I578(2I'I68677<5)I:8'H'H8',>I3;639:'G55'G(1I(I89666=87',<I=(I=&+:I5(2I3958'H55<86%94978866',<I49&*2II99730:'G9327 NM:i:3 MD:Z:80^T6^G118 oR:Z: [...]
-simulated.305 0 1 5429 255 19M1I162M1I5M1D6M1I24M * 0 0 ACACGTGGAGCTCGCGTTCGATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTCGTTCATCTCTACGTCTGCTGACTACCAGTATTGCGA 787674I(8>598677I(:';G'82577;I(996355948I)I)968I)8I(093666G'G'<I(59545H'9895<57:I'6I0'7<I*88I0'I0':8799H'5.7I0'::I(I)I.&4G'88:8I(:I(997I(727=;53I'7I(8976;689538;I'9;I*I(659865I)98285*<I';:A88696%58<4?531=437G'::72I(; [...]
-simulated.306 16 1 5996 255 57M1D120M * 0 0 TTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACA '/I5(I(I7'/I;=>97:<&+;I9'/I3&).:II87:6:998;;=2(I(I>4(I467,I9;87<9:77?6>=@;'H884:99'0I6'F715298;(I7)I959'H6719&)1II;',>I737(I339'/I(I6656756:5:8:(I6',<I'0I>675326'H7<57'I79'/I83= NM:i:1 MD:Z:57^A120 oR:Z:1 oH:i:1 oP:i:5995 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.300 16 1 1229 255 46M1I37M1D60M1I41M * 0 0 AGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACTAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGACGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAAC 8?7)I42(I9&E*I<8'H6627'/I4;)I*I4&*8I(I8(I77;84%:'H89*I:58'I96<(I8598(I'/I5(I8'0I(1I5,I5'I>(I688(I&+;I76665566:2'I3'I(I4;'H(1I3965:54&-I09(I36'I5&'0I7'I57(I)I6875=994455<4(I958956869'-?I2 NM:i:3 MD:Z:83C101 oR:Z:1 oH:i:1 oP:i:1228 oS:A:R XE:i:3 XS:i:0 XI:i:0
+simulated.301 16 1 1404 255 10M1I19M1D45M1D23M1I51M1I39M * 0 0 CAGACAAAACTAAGAATCAAGTTTCTACAGCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAGTGAGAGGAAGTTGGTCGTCTAGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCTACATGTCATCCTATGATATCAAACCATGCACGTATTGTA 3845<&+;I8+(I3(I<:(I4(1I949864D8(I395:68)I7564'G'I:(2I:(I+I'/I8>6;6)I:65986,I749777'I(I;(I'G654:7;%6:739747;>'H'0I3:586&.I79A&)1II(I(I;7'I(I9<768:6'.I'98:=89<47'I=5;48:956&.I'G6:29575;3(I9>< NM:i:5 MD:Z:29C45A113 oR:Z:1 oH:i:1 oP:i:1403 o [...]
+simulated.302 0 1 7702 255 29M1D172M * 0 0 CGCGGAACCAGAATGCCTTCACTCAAGCAGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCAT ;49I(I'I)88H'37I(I(53:89I(749D8::37;G'I(H'89:I'6<4::7<F&I(I(89I0'67:I;+&;I(I.&I*F'6988I):7677I'67I2(>5 at 9II0)&84I)I/'4589956E&6=5=;4718I'26:I3(87I0'I.&;:8H'4I(677;33:I'I/'9I(I(957;66657I9*&6H':86I(I(988 NM:i:1 MD:Z:29G172 oR:Z:1 oH:i:1 oP:i:7701 oS [...]
+simulated.303 16 1 602 255 153M1I28M1D37M * 0 0 CTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCGTACGGTTGCATGGTTATTTAAAGGCTATCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAG 2:(3I7(I77435944'G::=8;875(I7;(I87)I661)I44B&).9II)I=86(3I;<98(I(I3'.I38:69751?8'G59776<7138A'H6589481:7)I:;9(I5:1'H;4&.I3)I5:'H5=7358834:4(I<:67)I73(I56%878(I)I6:89)I(I6(1I'/I'F7:78,I::58<?<&+9I44;37575>6639:64;&-I45;7 NM:i [...]
+simulated.304 16 1 2652 255 80M1D6M1D87M1I31M * 0 0 CTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTCTTTGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCGATCGATATAAAAGTAAAAATCACTCTTCTAG ::867914)I87<65?)I:?68'I;08577458438=&F4<;(I8642750934(I:(I63<7882967<7(I7&+;I29*I7&,I(1I44(I578(2I'I68677<5)I:8'H'H8',>I3;639:'G55'G(1I(I89666=87',<I=(I=&+:I5(2I3958'H55<86%94978866',<I49&*2II99730:'G9327 NM:i:3 MD:Z:80T6G118 oR:Z:1 [...]
+simulated.305 0 1 5429 255 19M1I162M1I5M1D6M1I24M * 0 0 ACACGTGGAGCTCGCGTTCGATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTCGTTCATCTCTACGTCTGCTGACTACCAGTATTGCGA 787674I(8>598677I(:';G'82577;I(996355948I)I)968I)8I(093666G'G'<I(59545H'9895<57:I'6I0'7<I*88I0'I0':8799H'5.7I0'::I(I)I.&4G'88:8I(:I(997I(727=;53I'7I(8976;689538;I'9;I*I(659865I)98285*<I';:A88696%58<4?531=437G'::72I(; [...]
+simulated.306 16 1 5996 255 57M1D120M * 0 0 TTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACA '/I5(I(I7'/I;=>97:<&+;I9'/I3&).:II87:6:998;;=2(I(I>4(I467,I9;87<9:77?6>=@;'H884:99'0I6'F715298;(I7)I959'H6719&)1II;',>I737(I339'/I(I6656756:5:8:(I6',<I'0I>675326'H7<57'I79'/I83= NM:i:1 MD:Z:57A120 oR:Z:1 oH:i:1 oP:i:5995 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.307 0 1 1679 255 9M1I191M * 0 0 GACCATAGTAGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCA 6;H'473=<(977I(I'I/'I(4F&::I(F'86:17767I)755;77854877696I)359:I(>8I5)73<475I9*&I)56546I):9659A;I'507I*H'7I:+&?:67I(I(68I-&I(3I(4<557<485956:7I'799;6I)73I/'I-&G'7<9I=,'8;;6I)=I)I'H'8I'6>7I*8806I(I(56789 NM:i:1 MD:Z:200 oR:Z:1 oH:i:1 oP:i:1678 oS:A:F [...]
simulated.308 16 1 7763 255 175M1I31M * 0 0 CATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACACGTCCGTGGTGTAGTAGTGTATAACTCTGAAT 86&.I989&+;I5'I'0I)I'H766>'H<449>'I32'0I3568&*1II4:(I'0I74<99:5'F7<9838;77'I:6@&.I45'0I'/I./8'F6(I:69536=(I)5I1'H(I:78977679&*8I:'I775(I'H<9588:;3(2I69)I4&F8'I88(I;4:)I:323268&65'I86'I8:<8:7::8:6?8)I;8:78'I: NM:i:1 MD:Z:206 oR:Z:1 oH:i:1 oP [...]
simulated.309 0 1 4223 255 183M * 0 0 AGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGC 84:88748487I(I.'3I/'I(I)I*:979 at 7;42;:8884F&I.&27G'7886I(9H'I(89I0'98I;+&5:5755847I(I.&I.&998I)979:I'I/'5797443:324I(=G'I(96:I(8I(;I*F'46:5I(356I(9:967=I'470;F&;<6I/'54:7;3665585:9:566 NM:i:0 MD:Z:183 oR:Z:1 oH:i:1 oP:i:4222 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.310 0 1 4940 255 11M1I55M1D134M * 0 0 TATCATGGCAACGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCA 165726I'6I'(87:7I'9:9I(4I.&G'F'87=;G'8I*8994:I(8936;I)9866I(8;4<2=8I,;I-&;8;:766I(837I*57I(48I-&4II=0*&7I=,'H'>6849=6<I(547I/'64I(886I(75675I(96I'5656I(49964;597I(6=795H'646I(55I)G'6I/'6I(4;;348II9.)&: NM:i:2 MD:Z:66^G134 oR:Z:1 oH:i:1 oP:i:4 [...]
+simulated.310 0 1 4940 255 11M1I55M1D134M * 0 0 TATCATGGCAACGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCA 165726I'6I'(87:7I'9:9I(4I.&G'F'87=;G'8I*8994:I(8936;I)9866I(8;4<2=8I,;I-&;8;:766I(837I*57I(48I-&4II=0*&7I=,'H'>6849=6<I(547I/'64I(886I(75675I(96I'5656I(49964;597I(6=795H'646I(55I)G'6I/'6I(4;;348II9.)&: NM:i:2 MD:Z:66G134 oR:Z:1 oH:i:1 oP:i:49 [...]
simulated.311 16 1 1548 255 106M1I70M * 0 0 GTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAACGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTAT 876'/I68;36:22C(I592<95679&.I'G947288822'I977;;;<95='/I>467886'0I4(I5:65'H'H'I6='-?I98='H'- at I2'.I8(I:;88(I%5:<;'I7(I6(I9(I5=:27)I6;5<:'G60367=7:)I'G'/I(I<)I::'I(I988963=:)I211:7 NM:i:1 MD:Z:176 oR:Z:1 oH:i:1 oP:i:1547 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.312 0 1 7524 255 10M1I15M1I178M * 0 0 TCCTTTCTGGTCCAAGGTGTGCAGGTACAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCA 8I(I0'=5I(&I'I(I'7:7?88I(7&5I*I(:05:I(0;677I'5G'8F'G'9;<I(172I(74I)6I)I'7I(45<:<6<233F'787;8779F'4567I(7I(I'<:78679;7>:I(I/'?I(8:I(1I1(I'8::858:6558G'<5-H'58I/'35657I0'418E&<1I(69656;I'G'I(:<I(88I'I(:6><:< NM:i:2 MD:Z:203 oR:Z:1 oH:i:1 oP [...]
-simulated.313 0 2 221 255 155M1D53M * 0 0 GTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTATCCTCATCTCTCTTCTGGGAGGTAGCTAAGCCAATTTAATCAGACTAGGG 98H':I)I0'37I7*&I(<I(8I'H':=4:5I0'I)77678<4:58658<I(55H'I0'7869I(36I*9-I)6259>9;886>798474G'4643?37;78995I/'I(I(978357=H'I'I(;84946<.7H'778I(83I0'6;I<,&6<8I+88I(8<64>:864I(46I1'7I'76752I'8I'D&I1'H'7637<<97I1' NM:i:1 MD:Z:155^T53 oR:Z:2 oH:i: [...]
+simulated.313 0 2 221 255 155M1D53M * 0 0 GTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTATCCTCATCTCTCTTCTGGGAGGTAGCTAAGCCAATTTAATCAGACTAGGG 98H':I)I0'37I7*&I(<I(8I'H':=4:5I0'I)77678<4:58658<I(55H'I0'7869I(36I*9-I)6259>9;886>798474G'4643?37;78995I/'I(I(978357=H'I'I(;84946<.7H'778I(83I0'6;I<,&6<8I+88I(8<64>:864I(46I1'7I'76752I'8I'D&I1'H'7637<<97I1' NM:i:1 MD:Z:155T53 oR:Z:2 oH:i:1 [...]
simulated.314 16 1 2960 255 55M1I63M1I9M1I56M * 0 0 AAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTAGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTACCACGGGACTAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGG 'I6(I7896454)I7(I5783<869(I792739&.I3(1I2(I7'H'I'H36;(I&5(I74648:8647576'G68774'H(I)I9'.I1<4'H=:9;8'G7)I'/I894657;78'/I%)I4:'.I63&(I&+:I'H6;:6578=33'I(I'I(I9<973:57886:)I8:8(1I84?4878A(I NM:i:3 MD:Z:183 oR:Z:1 oH:i:1 oP:i:2959 oS:A:R XE:i:3 XS:i:0 XI:i:0
simulated.315 16 1 552 255 182M * 0 0 CTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTG 69797'I5(I)I5::82567'0I45879&.I<866:5;(I57<;678'0I;7&.I8'F4389:;2<'I:776674=(I87'I:=(I78=(I;9<%(-7II)I816'.I98:8'H(I:'1I5766899898'H68150769752&F74:362888'H375&F::8(I3<(2I6(I89)I7:<< NM:i:0 MD:Z:182 oR:Z:1 oH:i:1 oP:i:551 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.316 16 1 5024 255 42M1I90M1D66M1I3M * 0 0 TAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGTCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCGTCG 8'G99(I=8'0I:&)/;II;',<I(I7667:.74'G446'0I%99*I498'H;88<<(I76'I9669(I675:65528(I57/67(I839'F9<(I'I9&.I6'I389<68%(.9II867874<<88(I9526,I?68'H<'G35<3&E768;',=I2'H'0I984'I;:7(I(I56)I)I'/I6<8&-I)I(I;:483&<3: NM:i:3 MD:Z:132^C69 oR:Z:1 oH:i: [...]
-simulated.317 0 1 6819 255 104M1D89M * 0 0 CATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTA 1955;3I'9295:737=547F&I(8I0'5H'9969;8I'276I(>6I.&=:75I(I(I-&9/I'I)<I'8I(69H'167H'66I):H'I)76488:I'98;I1(I+I)5I/'7<I1(257579I(:188499I(85I/':I)968719836I(7I(;864H'H';6028718H'6:698I-&86I'8:9I(37 NM:i:1 MD:Z:104^C89 oR:Z:1 oH:i:1 oP:i:6818 oS:A:F XE:i:1 XS: [...]
-simulated.318 0 1 4814 255 3M1D47M1D20M1D7M1I24M1I72M * 0 0 AGCAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTACTTGCTCTATGTATCCGTTAGTGGTCGGGGATGACTTGCGGCCATCCAAGTGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTG 693I,=:9I/'G'9I)II2*&79996G'1E&I)64I)78I(9<I(97676I+<:I)51;63834:94H'3I,475I(%6I at -';496=I,9<I(I(73I+I+&5849588I)862E&G';83775464969I)7I(5578H'671I'/I0'I'I'799<I(7I':7=59I)<86< NM:i:5 MD:Z:3^A47^T20^T103 oR:Z:1 oH:i:1 oP:i:4813 oS:A:F XE:i:5 XS:i:0 XI:i:0
-simulated.319 0 1 1186 255 210M * 0 0 GGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGTCGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACA I/'I(7968<299I(65H'7I(8;I=,'89=@I(544H'786853>D7(3I(5I)I(>9I)8;;7I.&56I(F'7I8*&I)3I(:61526I(56I(7::I(7:7I(6577H'I/'9I(5I/'I/'5I4)8I(;I)75:I(I<,'4596;537=<I(6I(H'89I(I/'256562:I/'99H'.9I)5I/'9I(7:I'I)89:949:=?62 NM:i:2 MD:Z:47G0T161 oR:Z:1 oH:i [...]
-simulated.320 16 2 172 255 34M1D70M1D99M * 0 0 AACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGAT (I6;4(I'0I)I*I68'H7&.I(I38>1(I5'H9D'F8:775<84)I<;8)I6)I&-I24&,<I(I8(I6'H(I<717:'0I'G;7<83<8;678678(I69(I,I8897'I88'H53&E78385:<;4:=39=6=4'H;737<>7:>8/5:'0I'I)I;9375;9(I(I'I569<98;54'H1<3'F76&-I<7',=I2=95 NM:i:2 MD:Z:34^T70^T99 oR:Z:2 oH:i:1 [...]
-simulated.321 16 1 8964 255 204M * 0 0 TGCCTAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCG 45'G'8,I9<84<(I6=:4:9846:(1I5)I7(I89:9;544:96(I5<9'0I878'I98::78)I975(I(I:(I:=;'I5798<9642(I3186(I)I::8:9'0I'I(I2&E8699:>'H66>&-I(1I837'H7(I6::5458;'G(I964635(I8(I8(I'I:7'I:'I85(I5<(I5916'H<8655857:8(I(I2 NM:i:2 MD:Z:4A0G198 oR:Z:1 oH:i:1 oP:i:8963 [...]
+simulated.316 16 1 5024 255 42M1I90M1D66M1I3M * 0 0 TAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGTCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCGTCG 8'G99(I=8'0I:&)/;II;',<I(I7667:.74'G446'0I%99*I498'H;88<<(I76'I9669(I675:65528(I57/67(I839'F9<(I'I9&.I6'I389<68%(.9II867874<<88(I9526,I?68'H<'G35<3&E768;',=I2'H'0I984'I;:7(I(I56)I)I'/I6<8&-I)I(I;:483&<3: NM:i:3 MD:Z:132C69 oR:Z:1 oH:i:1 [...]
+simulated.317 0 1 6819 255 104M1D89M * 0 0 CATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTA 1955;3I'9295:737=547F&I(8I0'5H'9969;8I'276I(>6I.&=:75I(I(I-&9/I'I)<I'8I(69H'167H'66I):H'I)76488:I'98;I1(I+I)5I/'7<I1(257579I(:188499I(85I/':I)968719836I(7I(;864H'H';6028718H'6:698I-&86I'8:9I(37 NM:i:1 MD:Z:104C89 oR:Z:1 oH:i:1 oP:i:6818 oS:A:F XE:i:1 XS:i [...]
+simulated.318 0 1 4814 255 3M1D47M1D20M1D7M1I24M1I72M * 0 0 AGCAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTACTTGCTCTATGTATCCGTTAGTGGTCGGGGATGACTTGCGGCCATCCAAGTGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTG 693I,=:9I/'G'9I)II2*&79996G'1E&I)64I)78I(9<I(97676I+<:I)51;63834:94H'3I,475I(%6I at -';496=I,9<I(I(73I+I+&5849588I)862E&G';83775464969I)7I(5578H'671I'/I0'I'I'799<I(7I':7=59I)<86< NM:i:5 MD:Z:3A47T20T103 oR:Z:1 oH:i:1 oP:i:4813 oS:A:F XE:i:5 XS:i:0 XI:i:0
+simulated.319 0 1 1186 255 210M * 0 0 GGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGTCGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACA I/'I(7968<299I(65H'7I(8;I=,'89=@I(544H'786853>D7(3I(5I)I(>9I)8;;7I.&56I(F'7I8*&I)3I(:61526I(56I(7::I(7:7I(6577H'I/'9I(5I/'I/'5I4)8I(;I)75:I(I<,'4596;537=<I(6I(H'89I(I/'256562:I/'99H'.9I)5I/'9I(7:I'I)89:949:=?62 NM:i:2 MD:Z:47GT161 oR:Z:1 oH:i: [...]
+simulated.320 16 2 172 255 34M1D70M1D99M * 0 0 AACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGAT (I6;4(I'0I)I*I68'H7&.I(I38>1(I5'H9D'F8:775<84)I<;8)I6)I&-I24&,<I(I8(I6'H(I<717:'0I'G;7<83<8;678678(I69(I,I8897'I88'H53&E78385:<;4:=39=6=4'H;737<>7:>8/5:'0I'I)I;9375;9(I(I'I569<98;54'H1<3'F76&-I<7',=I2=95 NM:i:2 MD:Z:34T70T99 oR:Z:2 oH:i:1 oP [...]
+simulated.321 16 1 8964 255 204M * 0 0 TGCCTAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCG 45'G'8,I9<84<(I6=:4:9846:(1I5)I7(I89:9;544:96(I5<9'0I878'I98::78)I975(I(I:(I:=;'I5798<9642(I3186(I)I::8:9'0I'I(I2&E8699:>'H66>&-I(1I837'H7(I6::5458;'G(I964635(I8(I8(I'I:7'I:'I85(I5<(I5916'H<8655857:8(I(I2 NM:i:2 MD:Z:4AG198 oR:Z:1 oH:i:1 oP:i:8963 [...]
simulated.322 0 2 158 255 67M1I127M * 0 0 CATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCGTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCA 2957I(F&46I<+&H'677I(I1'I(I(5;I(6I/'I(7986I'0I)6I(I'5657168:I(::9I('4E&I4)8:I8*&H'@I*;I(I(736;7I.&G'77:6894<88:95<I(1;I(I1(:8<;I(8<I'15I'9664;5;58:9<:6978I(:754?<3;48=;8I-&I)I+::4<46=I'I(I(7<46;: NM:i:1 MD:Z:194 oR:Z:2 oH:i:1 oP:i:157 oS:A:F XE:i:1 XS:i: [...]
-simulated.323 0 1 3986 255 27M1I25M1D25M1I16M1D73M * 0 0 TGACTTAGACAGAGGTCCTGCCTGACACGTAAACCCCGCCACACAGCTCGGACTTAAAACAGCTGCCCAAGTTCCGGTAGAGACTCTTTGGATACGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAG 989:I(;57:7<7I(6G'47I(7;34:)7<I.&I=,'9I)633587:67I'62I,I:+&?8>861I3(I):G'I(F'3'7765:77I0'I)<396I,865H'I(I'F':948I';7474G'9I/'78:5:8>85G'4:5I1(8I(I.'I(4F'68::5:8I'8G'984 NM:i:4 MD:Z:52^T41^G73 oR:Z:1 oH:i:1 oP:i:3985 oS:A:F XE:i:4 XS:i:0 XI:i:0
+simulated.323 0 1 3986 255 27M1I25M1D25M1I16M1D73M * 0 0 TGACTTAGACAGAGGTCCTGCCTGACACGTAAACCCCGCCACACAGCTCGGACTTAAAACAGCTGCCCAAGTTCCGGTAGAGACTCTTTGGATACGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAG 989:I(;57:7<7I(6G'47I(7;34:)7<I.&I=,'9I)633587:67I'62I,I:+&?8>861I3(I):G'I(F'3'7765:77I0'I)<396I,865H'I(I'F':948I';7474G'9I/'78:5:8>85G'4:5I1(8I(I.'I(4F'68::5:8I'8G'984 NM:i:4 MD:Z:52T41G73 oR:Z:1 oH:i:1 oP:i:3985 oS:A:F XE:i:4 XS:i:0 XI:i:0
simulated.324 16 1 3709 255 43M1I155M * 0 0 TAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGTCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCG :'I85(I8<58'I(I'H53&.I79(I'1I'0I(I7'I57&-I7(:9677494&.I69'/I)I7(2I48'H6<7989:)I8'I5489'.I7:'I(I;82'I::56<78:<9;3;479556:8&-I(I7759'H588)I'/I)I5'I7<:?;6:8>5(I8&D7(I;;5;;08(I<)I7/73828&)/:II4;88>;23)I> NM:i:1 MD:Z:198 oR:Z:1 oH:i:1 oP:i:3708 oS:A:R X [...]
simulated.325 0 1 7571 255 178M * 0 0 CCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAG H'I);42I'97;I(49I(<I)I(5I(;3:7485769F':;95779:I(67;6I(>F'H'9798:=3D59;G'I.'0H'72I(8I1'I'::568882067I'47:I(6;I/'13888I.'97:E&:7I'4:@786I(I)H':2I(;9I(I)39277E&632I)934;6;H'G'I(965< NM:i:0 MD:Z:178 oR:Z:1 oH:i:1 oP:i:7570 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.326 0 1 3482 255 59M1D53M1I91M * 0 0 GTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTCGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTA 49I/'<6I0'I(4>87I(=7?=I1(9I)9H'78/<;858I(<I-&=I)847I(I(8I(4I+I(;776><I;+&>98I1'E&I'23I'7799:8H'I'I'I*67I(:;I1(94+97I'I(F'I(57>:;67I2(8E&69I(98I(/I:+&5:=3:7I'8884H'29I)8129997H'76:I)7F'I>,'=9H';I'485I(I3(2 NM:i:2 MD:Z:59^G144 oR:Z:1 oH:i:1 o [...]
+simulated.326 0 1 3482 255 59M1D53M1I91M * 0 0 GTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTCGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTA 49I/'<6I0'I(4>87I(=7?=I1(9I)9H'78/<;858I(<I-&=I)847I(I(8I(4I+I(;776><I;+&>98I1'E&I'23I'7799:8H'I'I'I*67I(:;I1(94+97I'I(F'I(57>:;67I2(8E&69I(98I(/I:+&5:=3:7I'8884H'29I)8129997H'76:I)7F'I>,'=9H';I'485I(I3(2 NM:i:2 MD:Z:59G144 oR:Z:1 oH:i:1 oP [...]
simulated.327 0 1 8830 255 179M * 0 0 CCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTC I)I'8I'II2*&:8F&289446I)I/'4H'I-&398I)465;:H'58I(?I/'I-&H'497617:7:I(2I(67I(48541828974;I<,'<6I+H'F'I(I(658566389I(7I(I'47I'8E&;:8I(I(;8I(:I.'89727I(7<;5:355<5I1(:G'6E&887=64832=6 NM:i:0 MD:Z:179 oR:Z:1 oH:i:1 oP:i:8829 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.328 0 1 4980 255 11M1I143M1D47M * 0 0 TGCATTACTGTACCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCA 4729I*;9599*H'9954I+:/;8986I.'9I2(9878578G'299H'<8I(86I.'8II8-(%6I7*&I(4::86966I(66=I3(72F'17=I);4487H'74H'9947I(85957=556I'58?7;H'439I(66I'I(7I-&9I(>567:5II5,':<:759=8=AF';763I,&969I)8F'7879I(477;I;+&6 NM:i:2 MD:Z:154^C47 oR:Z:1 oH:i:1 oP:i [...]
+simulated.328 0 1 4980 255 11M1I143M1D47M * 0 0 TGCATTACTGTACCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCA 4729I*;9599*H'9954I+:/;8986I.'9I2(9878578G'299H'<8I(86I.'8II8-(%6I7*&I(4::86966I(66=I3(72F'17=I);4487H'74H'9947I(85957=556I'58?7;H'439I(66I'I(7I-&9I(>567:5II5,':<:759=8=AF';763I,&969I)8F'7879I(477;I;+&6 NM:i:2 MD:Z:154C47 oR:Z:1 oH:i:1 oP:i: [...]
simulated.329 0 1 1515 255 188M1I21M * 0 0 AAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGGTAAGGTAGTATCGAACGTAT I1'76699I/'7;7II1*&I*I(99I(I(8948875I.':76674:37I(4<:5:86?7I1(I)845:76538I'58544:7497I.&899=6:4I/'=I'47<:H'H'I(67I9*&975I(I9+&:I0'<I)9623I(43:9I(9I(5I(6I(656;4I(55567I'95435575I(I'I-&I(7I'G';H'I)8289<:=9I(24662 NM:i:1 MD:Z:209 oR:Z:1 oH:i [...]
simulated.330 0 1 3672 255 184M1I29M * 0 0 GGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTAGTGCGAGAACTTCAATCAGCTGAATGGTC I(6I(488H'I1(I<,&:98=8I(I(697I(68:7;28I(61I(8:56I(I(I'81I-&<8I(I/'I0'I)6I';1I.'7756<=795I/'36I/'I'7I/'3:I(?863949I(5I(883:I-&97I(G'5;=I)46:857:6<7;5597:;78<5I.&I)9787I(3:9I)I1(I(3H'59;'7967837I(6I+7I(9<<7949I(8I(55 NM:i:1 MD:Z:213 oR: [...]
-simulated.331 0 1 6559 255 163M1D59M * 0 0 GCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCT 74I0':6G'H'9I(7I(9689I(27;8II1)&I0'6I+3<57828I*I(I(9I(6G'668:7677I';889:63I(;<67I(I2(6I(59AH'I'I'587I(I.'7598455959=4=I)I(63999748176>5I(7H'I(56579I(8>647E&:4I?-'7I,7:6I.'6II1*&81:I'F'6>927I)I'8365I(69I(699I8*&6;6G'9I)7;<6 NM: [...]
+simulated.331 0 1 6559 255 163M1D59M * 0 0 GCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCT 74I0':6G'H'9I(7I(9689I(27;8II1)&I0'6I+3<57828I*I(I(9I(6G'668:7677I';889:63I(;<67I(I2(6I(59AH'I'I'587I(I.'7598455959=4=I)I(63999748176>5I(7H'I(56579I(8>647E&:4I?-'7I,7:6I.'6II1*&81:I'F'6>927I)I'8365I(69I(699I8*&6;6G'9I)7;<6 NM: [...]
simulated.332 0 1 4746 255 62M1I62M1I61M * 0 0 CTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGACGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATG 99I'5;87I)6956I(976339=9II0)&783=I(4974G'4;9I:+&8I(:94I*:<I(H'&84I(I1(8-I1(58;I/'I(;I(IH0)&26;84I*9I)I'59I(66I'39H'>7667I0':>I-&:6=546=294<I)9I1(5<3G'4I at -'9>358F&78I(F'75H'I(79795=8H'8998 NM:i:2 MD:Z:185 oR:Z:1 oH:i:1 oP:i:4745 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.333 16 1 5138 255 18M1D5M1I15M1D97M1I44M1D8M * 0 0 CCACGTATGACTAATGCACCGACGTTCGGTCGCTTCACTCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGTAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGCGCCCG (I6994:55688(I574;,I;69&'G2(I92;8*I6<;=)6I;(I'/I669(I:38)I(I69(I'I'/I<7;&-I)I(I7757<8784=9='0I5:7(I9(I'I9(I8886(I8(I:;:4<739333'H<769<'I&'G514'/I(3I1=7455)I1536(I'I(I654:'I(I6663674,I38'/I: NM:i:5 MD:Z:18^C20^C141^G8 oR:Z:1 oH:i:1 oP:i:5137 [...]
-simulated.334 0 2 32 255 18M1D46M1D140M * 0 0 CGGCCGTTTGCGTATATAGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCA 3I)I(0I/'6<3964674CF&:8736I0'7;I(6;65I(46:5767=6I(965<552<5G';H'D2:0I'I'567876691=G'5I/'<9F&I(I/'77877698I0'<67488I'6I2(7I(99772H'I(/7I;+&I(:88I(I0'F'I(55I(8I/'I'958;E&5I':I(I)9886849;I(859G'4H'I-&85I9+&8 NM:i:2 MD:Z:18^G46^A140 oR:Z:2 oH:i: [...]
+simulated.333 16 1 5138 255 18M1D5M1I15M1D97M1I44M1D8M * 0 0 CCACGTATGACTAATGCACCGACGTTCGGTCGCTTCACTCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGTAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGCGCCCG (I6994:55688(I574;,I;69&'G2(I92;8*I6<;=)6I;(I'/I669(I:38)I(I69(I'I'/I<7;&-I)I(I7757<8784=9='0I5:7(I9(I'I9(I8886(I8(I:;:4<739333'H<769<'I&'G514'/I(3I1=7455)I1536(I'I(I654:'I(I6663674,I38'/I: NM:i:5 MD:Z:18C20C141G8 oR:Z:1 oH:i:1 oP:i:5137 oS: [...]
+simulated.334 0 2 32 255 18M1D46M1D140M * 0 0 CGGCCGTTTGCGTATATAGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCA 3I)I(0I/'6<3964674CF&:8736I0'7;I(6;65I(46:5767=6I(965<552<5G';H'D2:0I'I'567876691=G'5I/'<9F&I(I/'77877698I0'<67488I'6I2(7I(99772H'I(/7I;+&I(:88I(I0'F'I(55I(8I/'I'958;E&5I':I(I)9886849;I(859G'4H'I-&85I9+&8 NM:i:2 MD:Z:18G46A140 oR:Z:2 oH:i:1 [...]
simulated.335 16 2 86 255 100M1I24M1I82M * 0 0 CATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAACGAGGTGGGTTACACTTACCGTTAACGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTAC 99868:)I4(I)I998&E(I5845986599(I5'0I96)I'I'/I358877 at 9'/I6699:<(I7)4I7(I=9675(I'I78&+:I'F8:7(I(2I'I(I%6;&F:'/I'H4>5:'H4'G:'G(I'795;2857&E:4=(I6'F'0I69',>I(I7&E4)I(I88597'/I(I:95=826978;98;(I34)I&.I9456'I49(I7; NM:i:2 MD:Z:206 oR:Z:2 oH:i [...]
-simulated.336 0 1 9144 255 93M1D114M * 0 0 TAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTCATTGTATTCACG 5H'9573H'83<6959=87I(I'I0'7;H'787I*9I.'9:;87;32:64590:673;<G'829.8;77I0'8I(7?99I(I(I(866I':I(I+:F'H'524H'6I/'I)9G'3765.456G'G'9477H'G'<;I)99;I'586;6=8H'876I/'996I/'89;25I'4I(:834I(G':16;:6<85I(.=6H'77<I(99:6 NM:i:1 MD:Z:93^T114 oR:Z:1 oH:i:1 [...]
-simulated.337 16 2 149 255 49M1I10M1D41M1I103M1I5M * 0 0 TGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACGACTTACCGTTAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCACGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGTCGAAC 9=*6I9)I5798:'I)I;:',>I'G587(I'.I'I(I;;)I5'/I(I;7&84(I7(I;'HD9<577:77(I5<:'G3'H&-I54'- at I)I7(I:*I)I817'68&.I(I49932879684777)I40'I'/I9896)I6>(I88&F69:75:44776987563)I684394888;3=<(1I'H*I69:88::(I*I'I7785=68%19'G7 NM:i:4 MD:Z [...]
-simulated.338 16 1 4031 255 84M1I84M1D26M * 0 0 CTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCACGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTAGCTGAGGTCGGGCTCCACCAGAGT 3;9'I85'/I&*7I;2;368(2I'G2*I(I'I8765767;'/I(I3458'0I794)I(I'G(I6=47'G:<876'G<(2I79=;(:8596)I<9:&-I6(I'0I)I6'I;:;955;(I2(I875:<<(I4'G*I)I)I8(2I'I596)I>9;7'H40;&.I(I'I567;B;2;5:8(I83&.I:8'F7(I8974' NM:i:3 MD:Z:168^T25A oR:Z:1 oH:i:1 oP:i:4030 oS:A:R [...]
-simulated.339 16 1 1824 255 17M1I53M1D140M * 0 0 CTAACTGGGCCCTTGCTCGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACT 67(I98'/I'0I)I777)&+:I9659'H5(I'H(I8(I:69(I4548)I)I7:8?92:9644(I(I592)I+I8)I796(I8:465&F8:)I)I342'H997)I69:54(I;(I7'G739'G776(I7?763447(I8288&+<I69(I49984438'H:'F2'/I'0I7:::6(I::<5)I<'H9;673%)0GI=4(I35<57(I3;9:9 NM:i:2 MD:Z:70^C140 [...]
-simulated.340 16 1 3180 255 7M1I48M1D9M1D160M1I13M * 0 0 CGGTACCTAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAGAACTGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTAGAACAGTCTACCT 3)I;3(I&5:;(I(2I76'I'H8(I57;&.I5;'/I'G'H(I(I=.',<I867:)I(.DI5(I53,I:58&*9I)I647(I9'F&+;I498)I9;4;7'H(I3(I7'I98'.I<3'H;5<676>9<5:(I7(I(I;'- at I;(I'I3426)I46(I(I758&-I8944&+;I4(I75(I'H9:365&,<I'H(I8' [...]
+simulated.336 0 1 9144 255 93M1D114M * 0 0 TAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTCATTGTATTCACG 5H'9573H'83<6959=87I(I'I0'7;H'787I*9I.'9:;87;32:64590:673;<G'829.8;77I0'8I(7?99I(I(I(866I':I(I+:F'H'524H'6I/'I)9G'3765.456G'G'9477H'G'<;I)99;I'586;6=8H'876I/'996I/'89;25I'4I(:834I(G':16;:6<85I(.=6H'77<I(99:6 NM:i:1 MD:Z:93T114 oR:Z:1 oH:i:1 [...]
+simulated.337 16 2 149 255 49M1I10M1D41M1I103M1I5M * 0 0 TGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACGACTTACCGTTAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCACGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGTCGAAC 9=*6I9)I5798:'I)I;:',>I'G587(I'.I'I(I;;)I5'/I(I;7&84(I7(I;'HD9<577:77(I5<:'G3'H&-I54'- at I)I7(I:*I)I817'68&.I(I49932879684777)I40'I'/I9896)I6>(I88&F69:75:44776987563)I684394888;3=<(1I'H*I69:88::(I*I'I7785=68%19'G7 NM:i:4 MD:Z [...]
+simulated.338 16 1 4031 255 84M1I84M1D26M * 0 0 CTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCACGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTAGCTGAGGTCGGGCTCCACCAGAGT 3;9'I85'/I&*7I;2;368(2I'G2*I(I'I8765767;'/I(I3458'0I794)I(I'G(I6=47'G:<876'G<(2I79=;(:8596)I<9:&-I6(I'0I)I6'I;:;955;(I2(I875:<<(I4'G*I)I)I8(2I'I596)I>9;7'H40;&.I(I'I567;B;2;5:8(I83&.I:8'F7(I8974' NM:i:3 MD:Z:168T25A oR:Z:1 oH:i:1 oP:i:4030 oS:A:R X [...]
+simulated.339 16 1 1824 255 17M1I53M1D140M * 0 0 CTAACTGGGCCCTTGCTCGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACT 67(I98'/I'0I)I777)&+:I9659'H5(I'H(I8(I:69(I4548)I)I7:8?92:9644(I(I592)I+I8)I796(I8:465&F8:)I)I342'H997)I69:54(I;(I7'G739'G776(I7?763447(I8288&+<I69(I49984438'H:'F2'/I'0I7:::6(I::<5)I<'H9;673%)0GI=4(I35<57(I3;9:9 NM:i:2 MD:Z:70C140 [...]
+simulated.340 16 1 3180 255 7M1I48M1D9M1D160M1I13M * 0 0 CGGTACCTAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAGAACTGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTAGAACAGTCTACCT 3)I;3(I&5:;(I(2I76'I'H8(I57;&.I5;'/I'G'H(I(I=.',<I867:)I(.DI5(I53,I:58&*9I)I647(I9'F&+;I498)I9;4;7'H(I3(I7'I98'.I<3'H;5<676>9<5:(I7(I(I;'- at I;(I'I3426)I46(I(I758&-I8944&+;I4(I75(I'H9:365&,<I'H(I8' [...]
simulated.341 16 1 8913 255 5M1I210M * 0 0 TCGAGTCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCG 7 at 45;/',>I77'I(I'I)I)I<8889394<'G8(I(I7:(I3(I892(I'I6:(I7(2I;8957'H7;79:78:;6'/I;'H6(I89667688>97(I883(1I:86'I2872;:(I679(I'I8(I9?8)I7=8747639)I7:7<(I'I633:3(1I'H)I9(I5:4862*I6<7'0I'0I448'I6)I::5496:5(I)I3:3555'I5'H< NM:i:1 MD:Z:215 [...]
simulated.342 0 1 4636 255 18M1I1M1I193M * 0 0 ACGACGAAGTTTCGGCACGACGGTGTCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTT ;79:48I(3I4);I(665%4%H'46&C;69;8I0'85:>77I(;I)876;7I/'F'886F'9;68<:I-&6;3I(G'>57:8I(A=59I-&6<7<I)57F'79II4+'I1(I)>I)8547I)8:76H'67785588II2*&2;<9I(7::5I(76=I=,'8G':68I'84G'I(86I(I1(7<I.&769I0'I(:I(IG/)%78797I(9I)F& NM:i:3 MD:Z:23C [...]
-simulated.343 0 1 2149 255 165M1D28M * 0 0 GAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTAAGATTAACGTCAAAAGTCTTCTACC 4I(I'I'I>,'9I(16I(I.'H'7846H';8><8;I)19I(994:<I'795I2(H'35II9.)&48;7I at -'294:I(68:7897<57:19=7F&87I.&0685E&;5;24;6<886;<4I)I(07:I/'6I)787;617I(7889775I(;76<I'9I)I:+&:I+H':6G'I'9597I;+&668I(82;F' NM:i:1 MD:Z:165^T28 oR:Z:1 oH:i:1 oP:i:2148 oS:A:F XE:i:1 XS: [...]
+simulated.343 0 1 2149 255 165M1D28M * 0 0 GAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTAAGATTAACGTCAAAAGTCTTCTACC 4I(I'I'I>,'9I(16I(I.'H'7846H';8><8;I)19I(994:<I'795I2(H'35II9.)&48;7I at -'294:I(68:7897<57:19=7F&87I.&0685E&;5;24;6<886;<4I)I(07:I/'6I)787;617I(7889775I(;76<I'9I)I:+&:I+H':6G'I'9597I;+&668I(82;F' NM:i:1 MD:Z:165T28 oR:Z:1 oH:i:1 oP:i:2148 oS:A:F XE:i:1 XS:i [...]
simulated.344 0 1 3559 255 173M * 0 0 TTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAAC I-&I'H'>6I):57882I(I)I(I'69I(:6I1'3686I'I(I(H'7464778I1(=G':7I(44I(6I;+&348=63I';<86I(54I(67;787:I'589I(5I(I9+&95H'6I(458I(I1(I?-'9994:E&I'7=:F'6::8786I)34H'7992I(I(I(83I0'6 NM:i:0 MD:Z:173 oR:Z:1 oH:i:1 oP:i:3558 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.345 0 2 24 255 6M1I175M * 0 0 GGACTCTAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACC I(;<47,:;9I(I'8I/'6:8775;<6I(I(16465I3(87I)8944I(5:77564;8I'67:7536=:I(9F'I'995I(H'59?4:65/98I)7I1(65I'I(I.&5=962=9 at I-&654388G'=I.&:I'77899I(I(95I;+&I)9;<G'I.'G'I)97I);I/'I(96:7H'3I' NM:i:1 MD:Z:181 oR:Z:2 oH:i:1 oP:i:23 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.346 16 1 780 255 42M1I152M * 0 0 TATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGACGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGAC <58'.I7=97847',=I959:9573534623/49'0I82774):53:96'H937;5;85<537675(I86;5289>08&E;(I)I66'G7<9(I4'G8(I'0I)I5<.673(I*I5738:(I:67&,<I6(I35848;:35165&+9I)I75>;'0I(I73)4I<5(I<5<6594>96798885679)I857676 NM:i:1 MD:Z:194 oR:Z:1 oH:i:1 oP:i:779 oS:A:R XE:i:1 XS:i [...]
-simulated.347 0 1 2848 255 78M1D104M * 0 0 ACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATA 9697I'87>H'=7>I(;9277F'I)6I(83687I(>:E&87I(9654I/'383;;F&5884<586;>8955I)7;::5I7*3I(9:37I(47<8I)8;35I/'47I)7476H':H'6;45673I(6I(9899;975I(:9:;=8I-&4I-&6I)4I(G'I':67I(9H';6:74;7:85:;6 NM:i:1 MD:Z:78^T104 oR:Z:1 oH:i:1 oP:i:2847 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.347 0 1 2848 255 78M1D104M * 0 0 ACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATA 9697I'87>H'=7>I(;9277F'I)6I(83687I(>:E&87I(9654I/'383;;F&5884<586;>8955I)7;::5I7*3I(9:37I(47<8I)8;35I/'47I)7476H':H'6;45673I(6I(9899;975I(:9:;=8I-&4I-&6I)4I(G'I':67I(9H';6:74;7:85:;6 NM:i:1 MD:Z:78T104 oR:Z:1 oH:i:1 oP:i:2847 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.348 0 2 104 255 62M1I130M1I5M * 0 0 CCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGTCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCGTATAT I(;66189?37<I)6I/'<=I(I)I-&17789;74I/'787576I(/I.&=H'75997H'I('77I:+&I)589I(I0'I'I(98I(4I.&G'6796I'2I)9I)I'B7378837I':63I(3I(I-&78I9+&I(:I'6I)I(;94:9I4)H';:333698788785I'8<I(I1(:63<H'26I(95I)<2&;7884 NM:i:2 MD:Z:197 oR:Z:2 oH:i:1 oP:i:103 oS:A:F [...]
-simulated.349 16 1 2908 255 18M1D175M * 0 0 GCAGTGTGCTACCTATACTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTAT ;6559<37575(I9<:58*7I4'H:;2:'G1845)I8577'/I79(I695:(I5'I8374<59'I6'G68555894(I:4 at 427(3I5&-I;(I7(I'I(I;56'H>'I79;67648326:9)I86@;7&E'H'I4(1I556'G:5756(I7'I'/I?76863958(2I'G9<'1I5;(I&+9I(I6769339 NM:i:1 MD:Z:18^T175 oR:Z:1 oH:i:1 oP:i:2907 oS:A:R XE:i:1 XS [...]
+simulated.349 16 1 2908 255 18M1D175M * 0 0 GCAGTGTGCTACCTATACTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTAT ;6559<37575(I9<:58*7I4'H:;2:'G1845)I8577'/I79(I695:(I5'I8374<59'I6'G68555894(I:4 at 427(3I5&-I;(I7(I'I(I;56'H>'I79;67648326:9)I86@;7&E'H'I4(1I556'G:5756(I7'I'/I?76863958(2I'G9<'1I5;(I&+9I(I6769339 NM:i:1 MD:Z:18T175 oR:Z:1 oH:i:1 oP:i:2907 oS:A:R XE:i:1 XS: [...]
simulated.350 0 1 7560 255 198M * 0 0 GTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTG =56<8I*6I(=H'G'759I(947I(6:H'8E&H'8I(;57:387:39I(9>887?5=I(;:57I)9I'H'<562641=615I(I/'5F&<7I(7I/'I(89;73=96474I'3:9I)79I1'77:86I/'9>;I(:7I)78468:I(I(I'3;I(6:I'I'7876:I(197I(747776I)I(I)956I'5567999> NM:i:0 MD:Z:198 oR:Z:1 oH:i:1 oP:i:7559 oS:A:F XE:i:0 XS [...]
-simulated.351 16 1 5673 255 125M1D63M1I2M * 0 0 TTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCGAT (I&*8I839(I835'H:'H(I8(I5(I97&.I9(1I5398&.I759<6'I'G9'G566;)I55945)I695)I547479&*2II'G26)I96926'I)I:>7(I714:'I85'I52998588<'HD<6)I(I2(I5;8:?67:42(I8675'I44674>6959<*I958?9<(I67'H(I7?8)I<5='6< NM:i:2 MD:Z:125^C65 oR:Z:1 oH:i:1 oP:i:5672 oS:A:R XE:i:2 XS [...]
-simulated.352 16 1 7288 255 116M1I28M1I54M1D15M * 0 0 ATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTACGCCTTGTGTGAGTGCGAGATGCCCACCAGTCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTAAGGCTAATTGAT 7',<I(I=::8:'H8)I;7&-I46:'I56;)I'1I77)4I749(I886;'I1634(I98946<18'I74:=866<8&-I8;59:(I6387458',<I81:(I9'I;77(1I65696(5)I(I:<9:357484:87767&-I0(I8&:9(I7'- at I6=8<8845;)I)I;8'I&F0=369='0I(1I:994584(I07'H:,I*I(I82(I)I655 NM:i:3 [...]
+simulated.351 16 1 5673 255 125M1D63M1I2M * 0 0 TTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCGAT (I&*8I839(I835'H:'H(I8(I5(I97&.I9(1I5398&.I759<6'I'G9'G566;)I55945)I695)I547479&*2II'G26)I96926'I)I:>7(I714:'I85'I52998588<'HD<6)I(I2(I5;8:?67:42(I8675'I44674>6959<*I958?9<(I67'H(I7?8)I<5='6< NM:i:2 MD:Z:125C65 oR:Z:1 oH:i:1 oP:i:5672 oS:A:R XE:i:2 XS: [...]
+simulated.352 16 1 7288 255 116M1I28M1I54M1D15M * 0 0 ATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTACGCCTTGTGTGAGTGCGAGATGCCCACCAGTCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTAAGGCTAATTGAT 7',<I(I=::8:'H8)I;7&-I46:'I56;)I'1I77)4I749(I886;'I1634(I98946<18'I74:=866<8&-I8;59:(I6387458',<I81:(I9'I;77(1I65696(5)I(I:<9:357484:87767&-I0(I8&:9(I7'- at I6=8<8845;)I)I;8'I&F0=369='0I(1I:994584(I07'H:,I*I(I82(I)I655 NM:i:3 [...]
simulated.353 0 1 2175 255 197M * 0 0 GTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATC 6I(399788I)36I)785;7I'988I/'I(9;II9.(%3::2I=,'9979I'774<56 at 485729:6F'7:I1'8:66I(88997969:6652<I(F'2>8I1':H';7:=7:6I(3677975I(5289I*3I(I:+&;I,&I(57I(I(7975I;+&<46I)4 at 5I1(9:I/'9I(168;86::H'7I(75::537 NM:i:0 MD:Z:197 oR:Z:1 oH:i:1 oP:i:2174 oS:A:F XE:i:0 XS:i [...]
simulated.354 16 1 5743 255 198M * 0 0 TAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTC 6(I677>78'+4II'I:9'H96879)I'H9?:'I4747)I<:'G9088=9494(I(I74'I'G2(I:65:659687'I4;85(I7:168746=:7(I9:5:63'G9;(I'H698'G5668838:5553;'I7;(I4(I55(I9(2I8='H'0I88&,I6-:8(I5889833'1I'I&*9I57'0I5;4&+:I;'H)I0 NM:i:0 MD:Z:198 oR:Z:1 oH:i:1 oP:i:5742 oS:A:R XE:i:0 X [...]
simulated.355 16 1 9135 255 177M * 0 0 GCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACG 3:)I68'H09'H6:58'I=547:687:6(I'I'/I95(I79:(I;'0I7872;64=767285877699'F?::165:8(1I6'H97:4'H'I(I<:9)I7'H'/I0)I*I4:8'H3'0I(I6'I=:685488&F'G:3:4(I'H9:'I578(I87;=<;<(I564'/I39>(2I91: NM:i:0 MD:Z:177 oR:Z:1 oH:i:1 oP:i:9134 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.356 16 1 8736 255 41M1I12M1I16M1I129M * 0 0 CCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGACGACATCGTGCGGTATCCCGCTAAGACGATAGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTATCGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTT '.I4)I4:'G=5'G)I769)I'/I<;8:667',=I725(I;'7888<65986(I)47'/I8:6(I43;<0;'5(I(I:87885(I667545455(I8(I&E5(I'+4II95)I694<99(I&-I5(I'/I:28(I885;;)I84C;%&-I'.I(I7:6/:6988'G:)I;:(I9<864:2698;7',=I87)I'I)I(I*I NM:i:5 MD:Z:142A0T54 oR:Z:1 oH:i:1 [...]
+simulated.356 16 1 8736 255 41M1I12M1I16M1I129M * 0 0 CCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGACGACATCGTGCGGTATCCCGCTAAGACGATAGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTATCGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTT '.I4)I4:'G=5'G)I769)I'/I<;8:667',=I725(I;'7888<65986(I)47'/I8:6(I43;<0;'5(I(I:87885(I667545455(I8(I&E5(I'+4II95)I694<99(I&-I5(I'/I:28(I885;;)I84C;%&-I'.I(I7:6/:6988'G:)I;:(I9<864:2698;7',=I87)I'I)I(I*I NM:i:5 MD:Z:142AT54 oR:Z:1 oH:i:1 [...]
simulated.357 16 1 7823 255 104M1I77M * 0 0 GCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATCGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAG 29;(I387876655'H536(2I66'0I&.I97:'G6(I9594949'H&.I@&D'I87:7:886:'-?I6'I617(I(I65993587(2I36)I3)I2'H5;(I:*36'G;=3;79576(I>9'I:727:8877;077(I;6:65)I8)I5'I657'H5'/I249548:2'0I9(3I(I77:6 NM:i:1 MD:Z:181 oR:Z:1 oH:i:1 oP:i:7822 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.358 0 1 3571 255 184M1I17M * 0 0 CTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGTATGTATTTCTAAATTGA 6:542E&I'I'I(54I(54I-&6<99I(I)I(I'8837<:8I.'8I(:<I)42I'8I9+&249854I(=<17I(66I';386476I(6;;I(7I'I:+&77I';I(8:4I)I/'I>,'78:7:I(I(;25I)7377;6:I(2:I(55<5H'I)H':4I0'54I(I0'I-&I(:F'76I1'?665'<9;37I1'7=I1(I(77 NM:i:1 MD:Z:201 oR:Z:1 oH:i:1 oP:i:3570 oS: [...]
-simulated.359 0 1 5000 255 50M1I38M1I16M1I73M1D18M * 0 0 CTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCACTTTTCCGACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTCGCGGCTCGCAGTGCCTAGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCAGGAAATCACCGCTA :94778I/';I.&9357618I(438H'8:I(5;I0'8II6,(8&I=,'I)'::9::877H'4:?I1(67G'896I(97566H'69I(0;&8:H'9<6877665I(7&8879H'::4H'89I*I(3I.&5I(4:12;5II:.)&879;766569E&99=8I2(96>I(7I(5946I(48;4I6*3I(I3(695I(@496 NM:i:6 MD:Z:42C0A133^C18 oR:Z:1 oH:i: [...]
-simulated.360 0 1 5412 255 86M1D88M1I48M * 0 0 CAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCGAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTAC ;7H'7I/'5I(69II1*&64596I(6:89:649H'77I'4@;56;G'28=<226:8I(I(768H':I(7=1A<9I)G';F'87937C666;872:F'9I.&;9I'57I0'I/'7;;:4I(896I0'79I(I'I0';I(5643I(8I(1;2E&:893==9I(1I(9788597897'18I(79I(I);8766<I)246789I(42I(8776483558847965 [...]
+simulated.359 0 1 5000 255 50M1I38M1I16M1I73M1D18M * 0 0 CTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCACTTTTCCGACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTCGCGGCTCGCAGTGCCTAGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCAGGAAATCACCGCTA :94778I/';I.&9357618I(438H'8:I(5;I0'8II6,(8&I=,'I)'::9::877H'4:?I1(67G'896I(97566H'69I(0;&8:H'9<6877665I(7&8879H'::4H'89I*I(3I.&5I(4:12;5II:.)&879;766569E&99=8I2(96>I(7I(5946I(48;4I6*3I(I3(695I(@496 NM:i:6 MD:Z:42CA133C18 oR:Z:1 oH:i:1 [...]
+simulated.360 0 1 5412 255 86M1D88M1I48M * 0 0 CAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCGAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTAC ;7H'7I/'5I(69II1*&64596I(6:89:649H'77I'4@;56;G'28=<226:8I(I(768H':I(7=1A<9I)G';F'87937C666;872:F'9I.&;9I'57I0'I/'7;;:4I(896I0'79I(I'I0';I(5643I(8I(1;2E&:893==9I(1I(9788597897'18I(79I(I);8766<I)246789I(42I(8776483558847965 [...]
simulated.361 0 1 7488 255 9M1I103M1I92M * 0 0 TAAGGCTAACTTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTACTAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCA 5F'I':2I(%I'8<:45:<93I.'9<3:I'I2(67I.'I(I/'48I(E&I(I(7759:2H'68I'G'5A77I';6465I(3H'4F&E&7;8I(71;I(:6I(9I(G'5I(4;4'4;860;BI)72=1::=3I'6:66I)9I(I(468359:=995I(I/';F&99H'4I.'I(9675:6:969?I(77<H':2I/';92;9I1(57 NM:i:2 MD:Z:204 oR:Z:1 oH:i:1 o [...]
-simulated.362 0 1 8271 255 35M1I65M1I9M1I68M1I28M1D18M * 0 0 GAAGTATGCAGATAATTGGCCCGGTCGCGCCATAACGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACCGTGTTAATCTTTGTCGGTCACGTACGGCTGCCTATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTCGAGGAGAGGTGCGTAACCGCAGTCTTCCAATATCCCGTGGTCAATA 6I(37697<6796H'I(I(I5)I(47838I)67H'%9I(52I/'8<4I(<I(999;29=9948I(5:4I/'I(44;6I(69<G'I)79I/'78=I(74484,;;H'4:4E&&45;8:66:<46979646=2I'7:I)896I'944864=7:;I'8>;6I'G'68H'9<7::I)61I*685&71G'278I'48288H'I'8998 [...]
+simulated.362 0 1 8271 255 35M1I65M1I9M1I68M1I28M1D18M * 0 0 GAAGTATGCAGATAATTGGCCCGGTCGCGCCATAACGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACCGTGTTAATCTTTGTCGGTCACGTACGGCTGCCTATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTCGAGGAGAGGTGCGTAACCGCAGTCTTCCAATATCCCGTGGTCAATA 6I(37697<6796H'I(I(I5)I(47838I)67H'%9I(52I/'8<4I(<I(999;29=9948I(5:4I/'I(44;6I(69<G'I)79I/'78=I(74484,;;H'4:4E&&45;8:66:<46979646=2I'7:I)896I'944864=7:;I'8>;6I'G'68H'9<7::I)61I*685&71G'278I'48288H'I'8998 [...]
simulated.363 0 1 666 255 14M1I23M1I85M1I72M * 0 0 GGATTTGCACAGACGTCAATCTAGTCACGTCCGCTAGCGATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCTATCCCGTCGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTC I'2I.'79265388%83I':97;688966:I(4995A;&366I(957F'668I(3<I0'7I'98I'77:77>538:<I(9878I'46I(;:672I)I(;944H'I)3I0'I.'I)3;98I/'79':57;=I;+&692:5:;26:697::86I/'486:6:47990I'23>;859877795:5I(:769185778I(8 NM:i:3 MD:Z:194 oR:Z:1 oH:i:1 oP:i:665 oS:A:F [...]
simulated.364 16 1 4239 255 119M1I81M * 0 0 CGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTACTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCG ?&-I(I(I&D8889675:69:57;3'H&.I52'G3569'I5(I)I55&-I88&+:I;586:9351'I(1I(3I684'I85;7'H(1I6:<68?66;8;(I;(I'I<66'I4(I:(I(I=&65='F767'I5775;7(I3565)I:/6'0I4:59;;5;78755;5756%)0HI'H86:5784>'I7;5:)I'H(I89(1I8 NM:i:1 MD:Z:200 oR:Z:1 oH:i:1 oP:i:4238 oS:A [...]
-simulated.365 0 1 9076 255 9M1D54M1I114M1D32M * 0 0 GCCTCGAGATCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTCGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTATAAGATCTAGAGGAACAGCTTCCGTAATACA 4I'<:685=C59:I/'I2(@4<I(8I(83/86;87I)I'7<573;E&<I)7I*I)98I(7I)7';G'41I(5079I(8768888645G'I)I0'47I(747I(:I1(1:935;455=7997863995E&63567219I-&9I(74;3I)I(I)488I(7I(I/'5I(I'567I(7I/'B7I)7978777<I(I'64=3I(I(63I+7747 NM:i:3 MD:Z:9^T168 [...]
-simulated.366 16 2 116 255 48M1D129M * 0 0 TTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAA *I9'/I79'I(I'.I;84785;7'/I<49697'G8(3I5(I:2371'FC::&*8I'I9<3'I'0I(I(I74(I7'1I'H996;(I5)I;'G)I654:6377)I837&E;)I'1I=:',>I'G8(I3)I)I5;<84'/I)I9=5593B:7723;<'H14(I'1I75<:)I61)I3:(I NM:i:1 MD:Z:48^G129 oR:Z:2 oH:i:1 oP:i:115 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.365 0 1 9076 255 9M1D54M1I114M1D32M * 0 0 GCCTCGAGATCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTCGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTATAAGATCTAGAGGAACAGCTTCCGTAATACA 4I'<:685=C59:I/'I2(@4<I(8I(83/86;87I)I'7<573;E&<I)7I*I)98I(7I)7';G'41I(5079I(8768888645G'I)I0'47I(747I(:I1(1:935;455=7997863995E&63567219I-&9I(74;3I)I(I)488I(7I(I/'5I(I'567I(7I/'B7I)7978777<I(I'64=3I(I(63I+7747 NM:i:3 MD:Z:9T168A [...]
+simulated.366 16 2 116 255 48M1D129M * 0 0 TTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAA *I9'/I79'I(I'.I;84785;7'/I<49697'G8(3I5(I:2371'FC::&*8I'I9<3'I'0I(I(I74(I7'1I'H996;(I5)I;'G)I654:6377)I837&E;)I'1I=:',>I'G8(I3)I)I5;<84'/I)I9=5593B:7723;<'H14(I'1I75<:)I61)I3:(I NM:i:1 MD:Z:48G129 oR:Z:2 oH:i:1 oP:i:115 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.367 16 1 707 255 201M * 0 0 GAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAA 7:96'I6;6(I78'0I:(I8<'G57857<49295'I:8?8)I;7(I34757)I'H;7::)I'F7(2I(1I'F1953'/I9;;528:&+:I3:95483==<;7;:968'/I9759;9>853:(I9<:48;=554?<858'H3965716768&E9)I(I77(I696(I<(I8(I&-I(I6:5<32(I)I7<784(I;68'- at I NM:i:0 MD:Z:201 oR:Z:1 oH:i:1 oP:i:706 oS:A:R XE:i [...]
simulated.368 16 1 795 255 17M1I50M1I122M * 0 0 CCAGATCGTGAGTATACGACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAACGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAG 'H<65;>;6856?5:93&@8'/I2577990<859'H767;>?:<9636847(I76=97?3857'F7(I((I74)I?76(I4(I4(I'0I'H76699<)I'H78<3:)I555'- at I7(I8:;79668;629&+:I)I896=&.I'H6;(2I::'H66848;6758=55;55288'H?847;;)I759<87;6 NM:i:2 MD:Z:189 oR:Z:1 oH:i:1 oP:i:794 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.369 0 1 8071 255 90M1I102M * 0 0 GCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTCGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCC 484I9+&17:76:I):995510968I(I(;;<645I(I(I*759I'8/I(I)554<I)85076<8784595H'<7>768:63;@I=,'39%;3H'I2(I(76F&777I(:I(I0'8:55I'7;876I-&3656I(E&64I(:>83757<I'5I(68I(59:57.I1(I(7AF'7=2;?I(6I(I'756<15F& NM:i:1 MD:Z:192 oR:Z:1 oH:i:1 oP:i:8070 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.370 0 1 7023 255 7M1I190M * 0 0 GTTCAAACGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTG 7H'7I-&.I(76I(;5I?-'I(777698<796=87I'59II2*&I.&0G';68556I(458:I)5744<D&8G'6999<99<9I)95I(;693H':1I/'?G'I3(8<I';6G'I'>I1'I.&782I)8I(4:6:I(92I(99;5:62676I(I.&6I/'8557I'H'694556978<1<62<0;8886I(:I(7:59 NM:i:1 MD:Z:197 oR:Z:1 oH:i:1 oP:i:7022 oS:A:F XE:i: [...]
-simulated.371 0 2 105 255 172M1D24M * 0 0 CTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATG 7578843:579H';I/'67I(I'I/'=775:486I-&8=;8;7I'4I-&6I(67:7<I(I)67I9+&I)391I(I1(I(I(68I*6I0'I(3957I(7E&9G'I(;79886 at 7I)673G'7I(I1'97I;+&I'7H'8I(I)67796I/'I*8456=974448579I(76H'I,;595I(95I':9I)8<:50853 NM:i:1 MD:Z:172^T24 oR:Z:2 oH:i:1 oP:i:104 oS:A:F XE:i:1 [...]
-simulated.372 16 2 26 255 150M1I52M1D10M * 0 0 ACTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTAGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAA 28>2646'H'I7&-I4:;6<58;;&F)I62685&.I:4'H3:57(I9443<7856(I557=54873'I9(I'G8<9(I(I9:703<4864(I:&.I64(I'H'0I27;56 at 7<'0I;867;5(I8'1I6'G77967(I(I47&+9I'G89&2)I'.I(I)I76(I:&-I(I<68:'H:'I3(I&D:768=2<B)I:<>'F6(I,I;:&*8I(I NM:i:2 MD:Z:202^T [...]
-simulated.373 0 1 8823 255 77M1D91M1I41M * 0 0 CTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTCGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGT 9364H'8G'I(8I)II1)&84F&68:543I)I-&3I(I0'3?-I(36;5<I(67I'6I/'I.'I(6B76378;;H':D/:I(68;8=A56:56>I=,'59I'I)I(I(I(696:948::G'5I)H'33I)4I'88BH'H'16I'<I0'95065I(85;965>6>5I3('7I'2I(928433:;>13I(4=8I/'939I)96<68<I(6?5 NM:i:2 MD:Z:77^T132 oR: [...]
-simulated.374 16 1 4047 255 4M1D62M1I6M1I14M1I22M1I81M * 0 0 GCTGCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCGAGCGTACCCACAGGGATTCCCGAACTTGACTGTGAATAACAGACGAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTA 359:*I'G;+I(I'I338654;5&,I&D8:79'/I:75(I'G(I(I8;6:)I:6787'G8&.I379*25<947&-I751'/I9(I(1I%'I9'H5733:68(I6)I>799;%4'F7(I'I(I(I='/I(I431'H4<66(I<96)4I'I'H:8;7'H:67694(I88'/I;6(I6(I66:82676;89:6)I5 NM:i:5 MD:Z:4^C185 oR:Z:1 oH:i:1 oP:i:4046 [...]
+simulated.371 0 2 105 255 172M1D24M * 0 0 CTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATG 7578843:579H';I/'67I(I'I/'=775:486I-&8=;8;7I'4I-&6I(67:7<I(I)67I9+&I)391I(I1(I(I(68I*6I0'I(3957I(7E&9G'I(;79886 at 7I)673G'7I(I1'97I;+&I'7H'8I(I)67796I/'I*8456=974448579I(76H'I,;595I(95I':9I)8<:50853 NM:i:1 MD:Z:172T24 oR:Z:2 oH:i:1 oP:i:104 oS:A:F XE:i:1 [...]
+simulated.372 16 2 26 255 150M1I52M1D10M * 0 0 ACTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTAGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAA 28>2646'H'I7&-I4:;6<58;;&F)I62685&.I:4'H3:57(I9443<7856(I557=54873'I9(I'G8<9(I(I9:703<4864(I:&.I64(I'H'0I27;56 at 7<'0I;867;5(I8'1I6'G77967(I(I47&+9I'G89&2)I'.I(I)I76(I:&-I(I<68:'H:'I3(I&D:768=2<B)I:<>'F6(I,I;:&*8I(I NM:i:2 MD:Z:202T1 [...]
+simulated.373 0 1 8823 255 77M1D91M1I41M * 0 0 CTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTCGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGT 9364H'8G'I(8I)II1)&84F&68:543I)I-&3I(I0'3?-I(36;5<I(67I'6I/'I.'I(6B76378;;H':D/:I(68;8=A56:56>I=,'59I'I)I(I(I(696:948::G'5I)H'33I)4I'88BH'H'16I'<I0'95065I(85;965>6>5I3('7I'2I(928433:;>13I(4=8I/'939I)96<68<I(6?5 NM:i:2 MD:Z:77T132 oR:Z [...]
+simulated.374 16 1 4047 255 4M1D62M1I6M1I14M1I22M1I81M * 0 0 GCTGCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCGAGCGTACCCACAGGGATTCCCGAACTTGACTGTGAATAACAGACGAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTA 359:*I'G;+I(I'I338654;5&,I&D8:79'/I:75(I'G(I(I8;6:)I:6787'G8&.I379*25<947&-I751'/I9(I(1I%'I9'H5733:68(I6)I>799;%4'F7(I'I(I(I='/I(I431'H4<66(I<96)4I'I'H:8;7'H:67694(I88'/I;6(I6(I66:82676;89:6)I5 NM:i:5 MD:Z:4C185 oR:Z:1 oH:i:1 oP:i:4046 o [...]
simulated.375 0 1 1719 255 91M1I52M1I18M1I55M * 0 0 CGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTAATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGGACCGAGCTTCCTATCATAGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCC :73:9;58?588663I'97:9I)89I-&39>879I=,'I'<;216I':793876I(673I)G'9I7*&7979I(I(64I.'I(5I)79:47D&<9551:69I)::767I(78I.&I/'G'65<I<+&97<7I)3I(H'G':G'3D&:H'7996I(I(68<::<&8<79:I(I(398I(I3(8I(<65I):3686I(>4I(I(3:9I'684I(37866G' [...]
simulated.376 16 1 6267 255 190M * 0 0 TCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACA 366&,I4'I76&+;I5'H(2I45>9>6)I8579:49:87<44778'I7755745(I:687'/I9 at 9:99)I)I'.I'I87)I7446&*1II(I64(I'I'G5?<57:9'H6<7'.I5(I'0I(I28(I?8<8:76'I82968=67;(I'/I'H8:;5'0I6=7'I56'I4::&+:I68(I27'H'I)I6; NM:i:0 MD:Z:190 oR:Z:1 oH:i:1 oP:i:6266 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.377 0 1 8849 255 203M * 0 0 AGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTG 884H'I3)=I)I/'954H':7889I(8<I(6I-&I1(I(287649876G'8I(73I(3347:879:5<9I:+&78I'H'I(G'H':268;;78;I'5I*I)8;I)2I'787G'I'77I+7I-&93;:8I(7999857378I1'<G';I'44658=94476H'75>I/';67I':<:7:6I(698I(I(>H'458F&87<8:06 NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:8848 oS:A:F [...]
-simulated.378 0 1 5279 255 59M1I5M1I54M1I10M1I18M1D52M * 0 0 AGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTCGCCGACTGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGAGTAAGACGGGTAGATGCCAGGTGGGTGGTGAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAAC 5I2(I-&97:::8I(88;9I(I(I(5924I(I(;747:78I/'96I/'3I/'I(I'8I(&7I';;(977467I-&4736;92I7*&2H'5I(46:I/';5874;68:<I'74I(6161=6&3I(775I-&3(7::3I(9I(4I-&6H'87IF/)6:684I(797675:=I(37I(633758I(67;476577I(I(37;I(5 NM:i:5 MD:Z:146^A52 oR:Z: [...]
-simulated.379 0 1 6073 255 89M1I91M1D8M1D16M * 0 0 AGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTACATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCTATACACCGATCATTTGTTATA 8:8545I/'9I(;:69663I(7I(899I(;768II1)&6I>,'849H'388I0'H'79;;87:;3613I(:I;+&I1(:07<5>9I'96';<I(7;I/'948I0'68323677576/4995428I(7:5I(:<1I(86I):I1(:48473I)?:5765:6984176I/'754I(9685648I,38=656I+862;5I/'5I'8;: NM:i:3 MD:Z:180^C8^C16 oR:Z:1 [...]
+simulated.378 0 1 5279 255 59M1I5M1I54M1I10M1I18M1D52M * 0 0 AGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTCGCCGACTGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGAGTAAGACGGGTAGATGCCAGGTGGGTGGTGAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAAC 5I2(I-&97:::8I(88;9I(I(I(5924I(I(;747:78I/'96I/'3I/'I(I'8I(&7I';;(977467I-&4736;92I7*&2H'5I(46:I/';5874;68:<I'74I(6161=6&3I(775I-&3(7::3I(9I(4I-&6H'87IF/)6:684I(797675:=I(37I(633758I(67;476577I(I(37;I(5 NM:i:5 MD:Z:146A52 oR:Z:1 [...]
+simulated.379 0 1 6073 255 89M1I91M1D8M1D16M * 0 0 AGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTACATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCTATACACCGATCATTTGTTATA 8:8545I/'9I(;:69663I(7I(899I(;768II1)&6I>,'849H'388I0'H'79;;87:;3613I(:I;+&I1(:07<5>9I'96';<I(7;I/'948I0'68323677576/4995428I(7:5I(:<1I(86I):I1(:48473I)?:5765:6984176I/'754I(9685648I,38=656I+862;5I/'5I'8;: NM:i:3 MD:Z:180C8C16 oR:Z:1 o [...]
simulated.380 16 1 5002 255 191M * 0 0 GACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCG 788@'/I9'/I3;3:767(I577'G55'G9;'/I7&).9II4',=I(I655>36:<(I69<'0I8<(I37;)I5<477(I;9)I357:(I6>3951974'I89:67(I<;6)I:;(I&E8'/I8'H85;857%(-7II69;:566974'G9476'/I154&D6*I5:88(I9974'-?I<(I(1I384(I: NM:i:0 MD:Z:191 oR:Z:1 oH:i:1 oP:i:5001 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.381 0 1 3173 255 62M1D107M * 0 0 GAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTT 8I(96:90I(9:I'87;I'I.&5:I)I(7I';64I.'48I-&I(F&I(I(77I:+&;469I(IA-(9I(97I/'836I:+&I)844I'6I*I8*&457I(8<5;6G'I'9I'3I(7?I0'66E&36251:8793<I'6I*I':I7*&;I(I)778 at I);7I(I(887I( NM:i:1 MD:Z:62^A107 oR:Z:1 oH:i:1 oP:i:3172 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.382 0 1 3924 255 16M1D189M * 0 0 TTCATGCCTATATTGCTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGAT H'<491I)8:<8I(1;I,65I)I/'57<48:5:9I(F'7965<73996;:4I0'7E&65H':75=G'696>778G'5I):9G';264779I.&I;+&8I);2;798777I'5<I/'I7*&96:5;:I/'I(=I(I)I'7833887:I.&G'7497I0'@:1I(E&I'G'8888I(9:896H'6I0'788:<7:69I(94=I1(68 NM:i:1 MD:Z:16^T189 oR:Z:1 oH:i:1 oP: [...]
-simulated.383 16 1 3058 255 20M1I114M1D57M * 0 0 TTCAATTTGATCTGTGCTTTACCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTG 'H7)I(3I886:<96;7'0I&'H96'0I64)I&+9I(I38;;787459'H(I)I(I43857387;95:(I987'0I:48752:<'0I&*2II1<88:;6>;'H393;7<778'H442'G<?;::'G8;(I8=:(I,I85)I(I4'H:97'0I64'0I&D'G(I'I87&+:I7:8<*I&)1II7'G32&.I94 NM:i:2 MD:Z:134^C57 oR:Z:1 oH:i:1 oP:i:3057 oS:A:R XE:i:2 [...]
-simulated.384 0 1 1077 255 108M1D93M * 0 0 GGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAAGTAAACCGTTATCACAGGT I,59H'6805=I/'6I)<7I0'74I(986515748=86>H'I4)8984763I';6I)9463:786I8*&I(5:544666677:8I(7I)8;95.779:6>:5889<34I5)I(8/;67;8;I(?9I(:I(48I=,'8;58I)9:8G'<5886=5I'62H'4I(H':6I(:69;I1(88F'I(&<I7*I'3I(;;8571G'4 NM:i:3 MD:Z:108^G74T0A17 oR:Z:1 oH:i:1 oP:i:1 [...]
-simulated.385 0 1 9107 255 7M1D117M1D60M * 0 0 AGATGTTCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGT <6365I(D:78772I(9I(7I(I(46I(<I(5;I*;6I(6868I(799=578;16I(I)I/'7:H';>8I(=I0'6?83297465=:6784964;I'7=;;7254I0'=I(=:>8I)I'I)674A8I(I1(8E&I)474I)8I/'I)6I(7825;688I)I(989=I(I)7:I'796I(865?: NM:i:2 MD:Z:7^C117^A60 oR:Z:1 oH:i:1 oP:i:9106 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.386 16 1 1848 255 141M2D23M1D50M * 0 0 AGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAA 5(I4(I(I(I8'I97:(I::99*I(I7;89;385;=4(I'H7>;'H(2I4'G656'G80:67(I85(I(I576(I4<:(I69528(I6)I8'I744'I774(I9;<9996<'I2>78&+<I85(I893:7277)I<(I6,I,I=76;8(I;8:7'H?'H7;678'-?I4:'G65995(I:;9<9895577='G:7775(2I;:8*I8(I&-I)I NM:i:3 MD:Z:1 [...]
-simulated.387 0 1 5287 255 52M1D19M1D126M * 0 0 CAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCGATGCATGTTTCTGCTGAGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCAT 5787;I(2655H'I(I(4A:5I)I(94776:9I/':7I/'7I-&I(I*3I(9D47;5=4=5I.&656@<6;I7*4I)4I(69<I0'78=;7953;6H'69I(5876:85G'596I/'764>;G'8I(8I0'7I(42IH0)&8948:I*9:797857I(:6I)5:5496I*827<79<89I(I(8:=H'<I(63568; NM:i:2 MD:Z:52^C19^G126 oR:Z:1 oH:i:1 oP:i:5286 [...]
-simulated.388 0 1 8703 255 88M1I95M * 0 0 GCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATACCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCC <I,I(I3(H'4I(I.'I/'G'I0'68585;98<I2(7I(6;I'12I(I(65;I(I.&5898=:4I<,'<89H'8953887:;9;H'27'I0'77;I'6::?788I(I(7699;3I(:77>6:7;6I(6H'I(7I(IF/)%<7I(6595::I(I/'4I(I3(57<I)49666I)4 at I(5I-&I-& NM:i:2 MD:Z:0C182 oR:Z:1 oH:i:1 oP:i:8701 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.389 0 1 8849 255 31M1D37M1D127M * 0 0 AGCAAGGGCTTAAATGATTACTGTAAGTAATGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTG =46I(I0'4I'I/'8:7I)65=81I(99H'5I,I.'I(538;58736I(8I'7BG'5485=264899:I6)86I)I(I'I(I(;9;88<:56I(7H'I(77I(:I(86:I(I)7:I)9I-&89187G'7;8<79888;I/':I(3I(5745:;82<:4H'678I2(7;>I(998663I':74H'I(;I(;78I(9 NM:i:2 MD:Z:31^G37^C127 oR:Z:1 oH:i:1 oP:i:8848 oS:A [...]
+simulated.381 0 1 3173 255 62M1D107M * 0 0 GAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTT 8I(96:90I(9:I'87;I'I.&5:I)I(7I';64I.'48I-&I(F&I(I(77I:+&;469I(IA-(9I(97I/'836I:+&I)844I'6I*I8*&457I(8<5;6G'I'9I'3I(7?I0'66E&36251:8793<I'6I*I':I7*&;I(I)778 at I);7I(I(887I( NM:i:1 MD:Z:62A107 oR:Z:1 oH:i:1 oP:i:3172 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.382 0 1 3924 255 16M1D189M * 0 0 TTCATGCCTATATTGCTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGAT H'<491I)8:<8I(1;I,65I)I/'57<48:5:9I(F'7965<73996;:4I0'7E&65H':75=G'696>778G'5I):9G';264779I.&I;+&8I);2;798777I'5<I/'I7*&96:5;:I/'I(=I(I)I'7833887:I.&G'7497I0'@:1I(E&I'G'8888I(9:896H'6I0'788:<7:69I(94=I1(68 NM:i:1 MD:Z:16T189 oR:Z:1 oH:i:1 oP:i [...]
+simulated.383 16 1 3058 255 20M1I114M1D57M * 0 0 TTCAATTTGATCTGTGCTTTACCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTG 'H7)I(3I886:<96;7'0I&'H96'0I64)I&+9I(I38;;787459'H(I)I(I43857387;95:(I987'0I:48752:<'0I&*2II1<88:;6>;'H393;7<778'H442'G<?;::'G8;(I8=:(I,I85)I(I4'H:97'0I64'0I&D'G(I'I87&+:I7:8<*I&)1II7'G32&.I94 NM:i:2 MD:Z:134C57 oR:Z:1 oH:i:1 oP:i:3057 oS:A:R XE:i:2 [...]
+simulated.384 0 1 1077 255 108M1D93M * 0 0 GGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAAGTAAACCGTTATCACAGGT I,59H'6805=I/'6I)<7I0'74I(986515748=86>H'I4)8984763I';6I)9463:786I8*&I(5:544666677:8I(7I)8;95.779:6>:5889<34I5)I(8/;67;8;I(?9I(:I(48I=,'8;58I)9:8G'<5886=5I'62H'4I(H':6I(:69;I1(88F'I(&<I7*I'3I(;;8571G'4 NM:i:3 MD:Z:108G74TA17 oR:Z:1 oH:i:1 oP:i:107 [...]
+simulated.385 0 1 9107 255 7M1D117M1D60M * 0 0 AGATGTTCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACACGGTTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGT <6365I(D:78772I(9I(7I(I(46I(<I(5;I*;6I(6868I(799=578;16I(I)I/'7:H';>8I(=I0'6?83297465=:6784964;I'7=;;7254I0'=I(=:>8I)I'I)674A8I(I1(8E&I)474I)8I/'I)6I(7825;688I)I(989=I(I)7:I'796I(865?: NM:i:2 MD:Z:7C117A60 oR:Z:1 oH:i:1 oP:i:9106 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.386 16 1 1848 255 141M2D23M1D50M * 0 0 AGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAA 5(I4(I(I(I8'I97:(I::99*I(I7;89;385;=4(I'H7>;'H(2I4'G656'G80:67(I85(I(I576(I4<:(I69528(I6)I8'I744'I774(I9;<9996<'I2>78&+<I85(I893:7277)I<(I6,I,I=76;8(I;8:7'H?'H7;678'-?I4:'G65995(I:;9<9895577='G:7775(2I;:8*I8(I&-I)I NM:i:3 MD:Z:1 [...]
+simulated.387 0 1 5287 255 52M1D19M1D126M * 0 0 CAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCGATGCATGTTTCTGCTGAGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCAT 5787;I(2655H'I(I(4A:5I)I(94776:9I/':7I/'7I-&I(I*3I(9D47;5=4=5I.&656@<6;I7*4I)4I(69<I0'78=;7953;6H'69I(5876:85G'596I/'764>;G'8I(8I0'7I(42IH0)&8948:I*9:797857I(:6I)5:5496I*827<79<89I(I(8:=H'<I(63568; NM:i:2 MD:Z:52C19G126 oR:Z:1 oH:i:1 oP:i:5286 oS [...]
+simulated.388 0 1 8703 255 88M1I95M * 0 0 GCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATACCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCC <I,I(I3(H'4I(I.'I/'G'I0'68585;98<I2(7I(6;I'12I(I(65;I(I.&5898=:4I<,'<89H'8953887:;9;H'27'I0'77;I'6::?788I(I(7699;3I(:77>6:7;6I(6H'I(7I(IF/)%<7I(6595::I(I/'4I(I3(57<I)49666I)4 at I(5I-&I-& NM:i:2 MD:Z:C182 oR:Z:1 oH:i:1 oP:i:8701 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.389 0 1 8849 255 31M1D37M1D127M * 0 0 AGCAAGGGCTTAAATGATTACTGTAAGTAATGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTG =46I(I0'4I'I/'8:7I)65=81I(99H'5I,I.'I(538;58736I(8I'7BG'5485=264899:I6)86I)I(I'I(I(;9;88<:56I(7H'I(77I(:I(86:I(I)7:I)9I-&89187G'7;8<79888;I/':I(3I(5745:;82<:4H'678I2(7;>I(998663I':74H'I(;I(;78I(9 NM:i:2 MD:Z:31G37C127 oR:Z:1 oH:i:1 oP:i:8848 oS:A:F [...]
simulated.390 16 1 5848 255 204M * 0 0 CGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTAT 4:'I(I;68(I7<46858696969(I<3(I7(IA7(I2'.I7@(I'/I83'/I>6=6(I4767;49'.I(I&,<I;7&,I=57',=I3(I)I'H'I4:7:8;599)I:?28)I9)I8'H6(I4'0I88'H)I6=86:7(I76;38454'0I9(I(I5'.I6:6:806&+;I8&-I6'+2 at II:4;4<65:1797'H'I68(I:= NM:i:0 MD:Z:204 oR:Z:1 oH:i:1 oP:i:5847 oS: [...]
-simulated.391 16 1 6754 255 129M1D72M * 0 0 TGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTAT ;77(I6=(I;68',>I:86)I=(I696(I'I(I(I67<'G'F3&+;I'I9'I93:6)I5<6;6='H3:=16'H498:85776;;7(I'G9&.I6+I453386)I1:9(I:8'/I38?4)I(I'/I46(IA6&F;'I26'I<76)I57'H;)I'G865686'H;57&.I&-I(I8'/I4=&-I;75365'I798318:(I95 NM:i:1 MD:Z:129^G72 oR:Z:1 oH:i:1 oP:i:6753 [...]
-simulated.392 16 1 3761 255 84M1D25M1I19M1D32M1D51M * 0 0 TTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAATTCGGAGTGTGCGAGAACTTCAACTCAGCTGAATGGTCACGAGAAAAATGATCGTGCCGGTAATGTATGCGAGACTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCG 'H8;'/I'H8'/I;4(I;7465;6(I6(I4:;4'/I75)I(I<9=(I6:747;926=485:76:66=9&.I(I;787(I978(I,I(I<'I<36483=799)I:'H<)I'3:26654(I4)I9518737(,6II738;8:79(I'F?(I=88417:85994,I:;89&E6984(I73&.I96)I'/I;?:78:7:6(I(I9647:6546857 NM:i:4 M [...]
-simulated.393 16 1 1805 255 35M1I9M1D159M * 0 0 ACAGTATGATCGAGAATGACTAACTGGGCCCTTGCGTGGGGCATAGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGG 189:6969444265(I7:393'I67(3I'/I(I9:&5&+<I>;86B6(I(I(I5'G=<8&E<59=(I(I9:74:977664(I(I736&D'0I<)I98:'F371:0(I87(I(I989'H5;7(I49899)I4(I6(I61<'G16<'H739:::94)I8785&+:I96&E:79863:3(I5(I3&.I'0I:6373'G9176)I8(I NM:i:2 MD:Z:44^G159 oR:Z:1 oH:i:1 [...]
+simulated.391 16 1 6754 255 129M1D72M * 0 0 TGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTAT ;77(I6=(I;68',>I:86)I=(I696(I'I(I(I67<'G'F3&+;I'I9'I93:6)I5<6;6='H3:=16'H498:85776;;7(I'G9&.I6+I453386)I1:9(I:8'/I38?4)I(I'/I46(IA6&F;'I26'I<76)I57'H;)I'G865686'H;57&.I&-I(I8'/I4=&-I;75365'I798318:(I95 NM:i:1 MD:Z:129G72 oR:Z:1 oH:i:1 oP:i:6753 o [...]
+simulated.392 16 1 3761 255 84M1D25M1I19M1D32M1D51M * 0 0 TTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAATTCGGAGTGTGCGAGAACTTCAACTCAGCTGAATGGTCACGAGAAAAATGATCGTGCCGGTAATGTATGCGAGACTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCG 'H8;'/I'H8'/I;4(I;7465;6(I6(I4:;4'/I75)I(I<9=(I6:747;926=485:76:66=9&.I(I;787(I978(I,I(I<'I<36483=799)I:'H<)I'3:26654(I4)I9518737(,6II738;8:79(I'F?(I=88417:85994,I:;89&E6984(I73&.I96)I'/I;?:78:7:6(I(I9647:6546857 NM:i:4 M [...]
+simulated.393 16 1 1805 255 35M1I9M1D159M * 0 0 ACAGTATGATCGAGAATGACTAACTGGGCCCTTGCGTGGGGCATAGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGG 189:6969444265(I7:393'I67(3I'/I(I9:&5&+<I>;86B6(I(I(I5'G=<8&E<59=(I(I9:74:977664(I(I736&D'0I<)I98:'F371:0(I87(I(I989'H5;7(I49899)I4(I6(I61<'G16<'H739:::94)I8785&+:I96&E:79863:3(I5(I3&.I'0I:6373'G9176)I8(I NM:i:2 MD:Z:44G159 oR:Z:1 oH:i:1 o [...]
simulated.394 16 1 8989 255 46M1I29M1I70M1I21M1I31M1I23M * 0 0 TTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAAGTTGAATGATTGCATGTGCGTTGCACAACCTACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTAGGCGGTGAACTAACTGCGGATACGTACATGAACCGGGTCGGCTATTCGGGCATAGCACATGATCGTACGCAGGCGCG '/I;'H:(I7;857873/69)I<13'0I74:'I5898<:'G:95*I%'I<(I489'G256958>8:)I69;8'I(I,924=6'.I(I)I7'H66<3<6&F8<<&-I'/I678'H4(I26:83:89)I'I;7;:86'I8(I5(I(I89,'H8'I:7(I:4)I:9;3'F3:&82789;5;'I(I'.I/6(I776*I:'/I<8=,7 [...]
simulated.395 0 1 774 255 40M1I14M1I158M * 0 0 AAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACTAAAGTAGAGCGAGCTAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCT I/'I(:85;I.&7>6=9:6I at -'448828?;>287852:76I0'2;5:7898586*I(91;776348:28758I'::5999:596G'<I)I)77D&8=;I(1I(3I(I/'H'168:?6I(I'99:67G':<8I=,'7I)64>5957<5897IA-'I(3856I1(I(63I0'74I(799773:76:348;53758I(87:8;7I(:787:97:58 NM:i:2 MD:Z:212 [...]
simulated.396 16 1 3177 255 170M1I31M * 0 0 TGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTACTTTTCGGAGAACCGCTATAAAACCAAGTTT 866?)I:6(I742(I'/I76'G(I5&E=88(2I69'.I)I(I'I(I39&+:I9<29)I&*3II8'H<6&.I778'-?I(I75;'I8'I',<I686&D77976'H)I=)I6'H51'0I74'G787567;47<6(I4(I'G4',>I9'H(I=9;4(I55(I'I565(1I896&;&+9I3(I61(I&E57779',>I'I(I;'/I NM:i:1 MD:Z:201 oR:Z:1 oH:i:1 oP:i:3176 oS [...]
simulated.397 16 1 2424 255 170M * 0 0 TTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAG (I(1I855(I:4)I86(I65:1658(I8(2I3'H54(I:88'G8623589'I9 at 503(I343;(I8:3=46:;1716(I4'I'H(I(I47(I(I28568)I7'I&E:'/I6:9:578:;8775>9=5'I6:)I;'F8687732?8598'H9*I6%)0GI79.(I72:188 NM:i:0 MD:Z:170 oR:Z:1 oH:i:1 oP:i:2423 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.398 0 1 1445 255 209M * 0 0 ACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAA 66679I(I(4I/'6G'I'I.'7968<I(4;94?;I.&;972:8I'I'9I)G'5564269568;8278=I(I2(9846:I.&;95II3+'G'I)15I(G'7794696I.&954:4958:I(;;7:7<;66I/'F'946;76<96G'5:<5;65;97I-&7838=93I1(8I';/=7I'I(I(9?I<,':88H'I<+&6I0'>F'9545H' NM:i:0 MD:Z:209 oR:Z:1 oH:i:1 oP:i [...]
simulated.399 16 1 1947 255 193M * 0 0 GCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGA 85)I648715:3'F<625',>I6:(I38548881'H4'F7&.I'/I7:<77&F:6:7(I5'G56785&)1II38'I5686:(I6;14655975:6(I767<:'0I953(I;&F(2I(I89;59&+:I<'I462)I6(I54459(I849:'1I;=2(I8'/I;58)I6)I6668:66:9667(I<'/I)I9785 NM:i:0 MD:Z:193 oR:Z:1 oH:i:1 oP:i:1946 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.400 0 2 69 255 164M1D19M * 0 0 CAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGAT 4I'9467>=88;I(6788<9687I(<I(I(939H'I(;:58558<78H'3I/'87H'I'I.&86;86388I1'65:76>H'3I/'3I)3B578I'I(:7I9+&I(5?;I'I/'I)I':6I(:I0'I(2733I(7I(7I'H'58=33478G':68I(5I)I0':7I7*F'3I(7I)I(865874 NM:i:1 MD:Z:164^C19 oR:Z:2 oH:i:1 oP:i:68 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.401 16 1 5769 255 9M1I72M1I31M1I5M1D38M1D42M * 0 0 ATTATATTGTCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGACCGGACTAACGCATGAGCGTCGTTCGTTGCCTACTTGAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCG 6'H6:;'F8&567(I75*I727771:75(I(I49(I(I8)I9858625344'G84-='H47:37<47686(I77899;(I48**I)I279(I46788<5:977::(I7:)I7'H'39+I4,I1;(I'.I93'/I9346(I7;87966(3I(I',=I5;,I364&*8I4'I(I(I'H919792:A9(I5447(I<(I1*I8 NM:i:5 MD:Z:117^A38^G42 oR:Z: [...]
-simulated.402 16 1 3667 255 112M1I15M1D75M * 0 0 TTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCACGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCA (2I94(I5(I6<4(I(3I(-AI92=95)I(I:96&F77=4657(I0;'F478:(I'I'F53(1I99(I&-I'.I'G4(I8<'/I27:=5379:'0I74'/I*I9'/I4:(I7'2:<;89'H7'G:776,I/7)I'H756(I>3887;448:7;39471 at 993'0I'I94:7'I946'G(2I(I8'F58395675A:)I9(I:9 NM:i:2 MD:Z:127^T75 oR:Z:1 oH:i:1 o [...]
+simulated.400 0 2 69 255 164M1D19M * 0 0 CAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGAT 4I'9467>=88;I(6788<9687I(<I(I(939H'I(;:58558<78H'3I/'87H'I'I.&86;86388I1'65:76>H'3I/'3I)3B578I'I(:7I9+&I(5?;I'I/'I)I':6I(:I0'I(2733I(7I(7I'H'58=33478G':68I(5I)I0':7I7*F'3I(7I)I(865874 NM:i:1 MD:Z:164C19 oR:Z:2 oH:i:1 oP:i:68 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.401 16 1 5769 255 9M1I72M1I31M1I5M1D38M1D42M * 0 0 ATTATATTGTCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGACCGGACTAACGCATGAGCGTCGTTCGTTGCCTACTTGAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCG 6'H6:;'F8&567(I75*I727771:75(I(I49(I(I8)I9858625344'G84-='H47:37<47686(I77899;(I48**I)I279(I46788<5:977::(I7:)I7'H'39+I4,I1;(I'.I93'/I9346(I7;87966(3I(I',=I5;,I364&*8I4'I(I(I'H919792:A9(I5447(I<(I1*I8 NM:i:5 MD:Z:117A38G42 oR:Z:1 [...]
+simulated.402 16 1 3667 255 112M1I15M1D75M * 0 0 TTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCACGCTAGATTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCA (2I94(I5(I6<4(I(3I(-AI92=95)I(I:96&F77=4657(I0;'F478:(I'I'F53(1I99(I&-I'.I'G4(I8<'/I27:=5379:'0I74'/I*I9'/I4:(I7'2:<;89'H7'G:776,I/7)I'H756(I>3887;448:7;39471 at 993'0I'I94:7'I946'G(2I(I8'F58395675A:)I9(I:9 NM:i:2 MD:Z:127T75 oR:Z:1 oH:i:1 oP [...]
simulated.403 16 1 1388 255 197M * 0 0 TGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCAC <:85676:@:'I:8596;87='- at I6'H0'H:2)I5'.I<673=:(I6(I4:7778'G88<5*I(I3(1I5&E'I&.I9:698'I>56667&-I:4>295'F(I6)I(I4788;;;35<963284(I'/I17 at 58(2I5::&)1II'G(I;1(I'I:3=>::8'/I;:1B:9485'H<=988;947'/I'G663:79 NM:i:0 MD:Z:197 oR:Z:1 oH:i:1 oP:i:1387 oS:A:R XE:i:0 XS: [...]
-simulated.404 0 1 8120 255 62M1D142M * 0 0 TCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCT 5I(7579E&@75<959646:62G'77;9776:<87IA-'4:68I(I2(I)28G'658H'4I(I+<78;I)664A=I.'2787I)I(96I(2<6;7694I(1I(6;I):355;5I/'G'3=I(96063I(3I'I(4:5:76I(6789;I)5=I(883>77>9:;I(I'I(I0'I)9567;I)9;I(4I):9I/'4;5I(6I+88= NM:i:1 MD:Z:62^C142 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.405 0 1 4727 255 104M1D63M1D39M * 0 0 CTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAG <6I(78I(59II3*&I/'I'8I(2878H'9355I(88787:5;II3*&6;68I(7568G'3::I8*&1I(967I*66I(I';8I'I,&46I3(2<8I-&I(6I(IC.(97945H';I'I)7;I(5;H';7H'5::89I2(76I(:6667358:89I'3I-&18:I(3I7*9:963I+93I'I)49H'I(7708<99I(988H'I(B NM:i:2 MD:Z:104^A63^G39 oR:Z:1 [...]
-simulated.406 16 1 5866 255 20M1D184M * 0 0 GCGTCGTTCGTTGCCACTTGAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATAC 5238:9'H>5(I8(I69'G7+I98(I'/I7:'0I:78:'H7655597(1I(I'-AI3<'/I658(.DI;(I'H'I(I6;2<:66:7(I;5=7'I=(I5)I2'I8'0I6;'G'F;997::(I<;387946'0I4'H'F5'/I<6:6:7:&+:I6(1I=&).9II<57355726889'G'I47)I;67'1I5879<:477;37:45 NM:i:1 MD:Z:20^A184 oR:Z:1 oH:i:1 oP:i [...]
-simulated.407 16 1 6744 255 22M1D164M * 0 0 CATCAGGCCGTGAGGCTGGTATGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTT 8829<(I(I4659(I33(I878*6I3;6(I8'F6;6'I'G(I'I287*I'I9',=I(I6(I6723)I9>8B27(I4785;(I6596663=7261'H(I5&.I5(I297<:7)I98=(I88&-I756:)I(I'0I52'H'I7'H4(I57*I533(I99'F7(I'I7653;2'G?7:'/I'/I(I5'H NM:i:1 MD:Z:22^G164 oR:Z:1 oH:i:1 oP:i:6743 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.404 0 1 8120 255 62M1D142M * 0 0 TCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCT 5I(7579E&@75<959646:62G'77;9776:<87IA-'4:68I(I2(I)28G'658H'4I(I+<78;I)664A=I.'2787I)I(96I(2<6;7694I(1I(6;I):355;5I/'G'3=I(96063I(3I'I(4:5:76I(6789;I)5=I(883>77>9:;I(I'I(I0'I)9567;I)9;I(4I):9I/'4;5I(6I+88= NM:i:1 MD:Z:62C142 oR:Z:1 oH:i:1 oP:i:8 [...]
+simulated.405 0 1 4727 255 104M1D63M1D39M * 0 0 CTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAG <6I(78I(59II3*&I/'I'8I(2878H'9355I(88787:5;II3*&6;68I(7568G'3::I8*&1I(967I*66I(I';8I'I,&46I3(2<8I-&I(6I(IC.(97945H';I'I)7;I(5;H';7H'5::89I2(76I(:6667358:89I'3I-&18:I(3I7*9:963I+93I'I)49H'I(7708<99I(988H'I(B NM:i:2 MD:Z:104A63G39 oR:Z:1 o [...]
+simulated.406 16 1 5866 255 20M1D184M * 0 0 GCGTCGTTCGTTGCCACTTGAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATAC 5238:9'H>5(I8(I69'G7+I98(I'/I7:'0I:78:'H7655597(1I(I'-AI3<'/I658(.DI;(I'H'I(I6;2<:66:7(I;5=7'I=(I5)I2'I8'0I6;'G'F;997::(I<;387946'0I4'H'F5'/I<6:6:7:&+:I6(1I=&).9II<57355726889'G'I47)I;67'1I5879<:477;37:45 NM:i:1 MD:Z:20A184 oR:Z:1 oH:i:1 oP:i: [...]
+simulated.407 16 1 6744 255 22M1D164M * 0 0 CATCAGGCCGTGAGGCTGGTATGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTT 8829<(I(I4659(I33(I878*6I3;6(I8'F6;6'I'G(I'I287*I'I9',=I(I6(I6723)I9>8B27(I4785;(I6596663=7261'H(I5&.I5(I297<:7)I98=(I88&-I756:)I(I'0I52'H'I7'H4(I57*I533(I99'F7(I'I7653;2'G?7:'/I'/I(I5'H NM:i:1 MD:Z:22G164 oR:Z:1 oH:i:1 oP:i:6743 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.408 16 1 6113 255 50M1I36M1I135M * 0 0 GGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCTATTCACCCACAGGGTGCATATCGATGTACATCGCCGTATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCT '0I47;(I455&.I'H=853=9616785'H;&+:I'0I6666;25(I4<9(4)I98'0I7>5&.I3<77461548:7:847:85'H;'69&F937'I65(I5&.I631958&F6478/664573745&-I;:6&D15:57=8'/I58966='0I;69<7'0I8'I=7&+9I9'I'0I93;577)I7:82;5969:=5=;31(I>:9<9:1)I<;57(1I [...]
simulated.409 16 1 5569 255 46M1I161M * 0 0 GCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCACTTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATAT ;54'I:)I<4;586697754(I66'G'G:96587(I79:889'I99&'I;668=6:6<879?7141'H3=:8)I<65736(2I94'G6689(I;<8(I879'G7;)I'-?I377)I99;)I8(I'G='H3(I67&-I5(2I<76:&.I67;<3'G(I3(I8;;8'I95768(I88:'G7878:8&*2II'G71&F:5699'I)I62=9 NM:i:1 MD:Z:207 oR:Z:1 oH:i:1 [...]
-simulated.410 16 1 9005 255 9M1D42M1I153M * 0 0 CGTCTTCGCGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGACACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGC <;43'H6=9+I;7:)I667643'I744'I(I<)I6;>(I<78939234'I6';:5)I(I;6;;<'/I'G)I6(I65887;(I9:6'/I'0I86:(I5'G91476:66'H(I745596(I=(I4)I'G35(I6)I84'G95(I46<6(I7:<585:>8;)I)I'/I:7'G499'I8&.I68658586;6453:7;5<72'I86689 NM:i:2 MD:Z:9^G195 oR:Z:1 oH:i:1 [...]
-simulated.411 0 1 6463 255 14M1D83M1D79M * 0 0 CGTGTTATAGTAGCGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAA 7283H'47484687D789<I(:7I*I(379957676?65;H'7=8H'667927<I0'6;87;67I(3:<68458877I)6997987I(0I(548958I,63G'I(6G'4I(7959I(966;II3+&I.';I*31985:4I'I(I(4G'9H'95845 at 8<I'4<:866:I(79;8I' NM:i:2 MD:Z:14^G83^A79 oR:Z:1 oH:i:1 oP:i:6462 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.410 16 1 9005 255 9M1D42M1I153M * 0 0 CGTCTTCGCGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGACACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGC <;43'H6=9+I;7:)I667643'I744'I(I<)I6;>(I<78939234'I6';:5)I(I;6;;<'/I'G)I6(I65887;(I9:6'/I'0I86:(I5'G91476:66'H(I745596(I=(I4)I'G35(I6)I84'G95(I46<6(I7:<585:>8;)I)I'/I:7'G499'I8&.I68658586;6453:7;5<72'I86689 NM:i:2 MD:Z:9G195 oR:Z:1 oH:i:1 [...]
+simulated.411 0 1 6463 255 14M1D83M1D79M * 0 0 CGTGTTATAGTAGCGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAA 7283H'47484687D789<I(:7I*I(379957676?65;H'7=8H'667927<I0'6;87;67I(3:<68458877I)6997987I(0I(548958I,63G'I(6G'4I(7959I(966;II3+&I.';I*31985:4I'I(I(4G'9H'95845 at 8<I'4<:866:I(79;8I' NM:i:2 MD:Z:14G83A79 oR:Z:1 oH:i:1 oP:i:6462 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.412 0 1 8161 255 54M1I148M * 0 0 GTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCGTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACCGTGTTAATCTTTGT 65I'I0'I)8;I(>36I(4I'I2(46:8I(29:.4I1(;88;I(I(:7G'6248'7684I)1I(:6I(968798I/'H'49I'9;:26F&4I(I'3 at 5645H'73859H'<5I(4;967828;3I)I(H'I2(G':6878I(:4I(5I)99I.&<86I*8I(59189887;9/I)37:I1(I(37:7I(>23I(I(8:I2(97 NM:i:1 MD:Z:202 oR:Z:1 oH:i:1 oP:i:8160 o [...]
-simulated.413 0 2 206 255 158M1D38M * 0 0 TTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGTCGGGGAGATTTATCCTCATCTCTCTTCTGGGAGGT I)G':787:899I(@95I);I'I1'92I:+&H':I(5I(H'8<;54I.'I(;;@66377:86694I(=4I)I/'65:8I(>?I)87I*378237637858957:9I)5873699665684I2(I(H'687?:66I'I)I(87955:75<F':89G'<;I,45I9+&987I0'4;I)948185879G'97I.&7H'2 NM:i:1 MD:Z:158^G38 oR:Z:2 oH:i:1 oP:i:205 oS:A:F XE:i:1 [...]
+simulated.413 0 2 206 255 158M1D38M * 0 0 TTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGTCGGGGAGATTTATCCTCATCTCTCTTCTGGGAGGT I)G':787:899I(@95I);I'I1'92I:+&H':I(5I(H'8<;54I.'I(;;@66377:86694I(=4I)I/'65:8I(>?I)87I*378237637858957:9I)5873699665684I2(I(H'687?:66I'I)I(87955:75<F':89G'<;I,45I9+&987I0'4;I)948185879G'97I.&7H'2 NM:i:1 MD:Z:158G38 oR:Z:2 oH:i:1 oP:i:205 oS:A:F XE:i:1 [...]
simulated.414 16 1 7837 255 173M * 0 0 GGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTA (I:;3'.I45'/I'/I976)I7(I7677245(I&.I<(I(I55799=87;&+9I3*I7;9(I*I200696;5'/I77(I6(I4'I;9'G977)I45=:89=:8)I89(I<6584?6;=4/6?'I484:6(I:'G8(I58.)I:'0I195=8195'/I5'0I(I394'I(I266 NM:i:0 MD:Z:173 oR:Z:1 oH:i:1 oP:i:7836 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.415 0 1 8603 255 21M1I3M1D80M1D25M1I9M1I39M * 0 0 AGAAGTTCGTAAAACCCAAGTAGCGTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAGGATTGGGCCCAAGGGCTGCTACGTGCCCAGGACCAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACAT 17I'5I)788I:+&I/'I)25'98;I4)619185:I0'668496773895;I'5E&549I)8I)8:6I1(7E&8I(44I(:3<H'H'I(:55I:+&G';8I.'I)I,G'5I)I1(I.'I)I0'9=8;6;8%62I0'7I(1F'I'98I(I(5;4G'I1(834=756I=,'677I';75474 NM:i:5 MD:Z:24^T80^A73 oR:Z:1 oH:i:1 oP:i:8602 oS:A:F XE:i:5 XS:i:0 XI:i:0
-simulated.416 0 1 2355 255 146M1D38M * 0 0 CGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCG 84184I(7I(3999<99;987G'7486:;5=8666II2*&;5E&I-&I(:367I(I0'I(I)6878I)I-&I2(256I(95I)98I(8695775G'9I0'2I(;1G'678I(>46771>I(<:6:7I(64<:I(2847468=7:56D2I(I(I)I(<4I'I)6;572I)6I'I(8I.'72<7:3 NM:i:1 MD:Z:146^T38 oR:Z:1 oH:i:1 oP:i:2354 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.417 16 1 5689 255 24M1D143M1D39M * 0 0 AGGTTACCGCCGCTTTCAAACTCATTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCG 2'F'I4*I9(I74'1I4(1I:>89+I96<35'I(I0'I5946(I:;668(I847(I9:4;5;&+3II(I8;(I95:54'H'I5:;(I:3<@(I at 8)I;5:7;6379'F'I6>)I)I8(I3?8681;565'I8:7;)I649:8=6:947'H8553;6)I38'H)I193B86979 at 7577595(I55(I6'F99'H:&.I65'G&,I8 NM:i:2 MD:Z:24^T143^A39 oR:Z: [...]
-simulated.418 16 1 1216 255 110M1D46M1D53M1I3M * 0 0 TGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTACTA =4'I<5;)I37;7356)I9;)I>(I(I;3)I6868'/I7:'G)I5',>I'H:'I7;8:94'H56)I86<'I567(I5854(I(1I2(I5&,I'.I8'/I6(I9(I8>8'H)5I99596<68:7)I8(I(I35(I&.I672:979&-I86)I;7(I5+I7)I81'H(I=:7940847986:'I6=9:67475&+:I6(I6(I66(I4'0I&997 NM:i:3 MD:Z [...]
-simulated.419 0 1 309 255 13M1D87M1I28M1I62M1I12M * 0 0 ATTTTCGACAATGCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGACTAGGCCGGGTGTCACGTCAAATTCTCGGTCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACGACGTATGGATAA 7I?-'5:86I(<8I,5<59998I(8:9G'6268>9I;+&;2;8;I(I/'>4<I'9I)6I'8I0';4:>8887II2*&8I'I'6554I1(I.&778:576:(<7I(I(I.&;4=797955I.'H'986I)'28I'77I-&I)699537:I(:76I(6476?<I(76964:404I'75H'7H'I(G';8I>,'<%069886I*83I* NM:i:4 MD:Z:13^C189 oR:Z [...]
-simulated.420 16 1 8628 255 42M1D59M1I96M * 0 0 TTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTA '0I98:766;'0I7766<55483888(I7(I67<(I6'G37:+I>(I<'I58(I?98(I'G(I666&+;I(I=4&-I'I'0I'H;'H'1I&.I(I&-I593'G583=5(1I:+I:3'I88'I'I69:(I(1I8;74766&*9I98:(I5168:83<:8:(I55&,I8:5(I5495;67)I(I844:37(I<386==96 NM:i:2 MD:Z:42^A155 oR:Z:1 oH:i:1 oP:i:8627 oS [...]
-simulated.421 16 1 7518 255 39M1I62M1I35M1D64M * 0 0 TTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTAGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAACTAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCC (I4:(2I(I(1I:9'I(I'H(I5549>6'I?5'G+I5;5%:(I63679(I9'I8(I)I956'I-93)I64)I9)I*I7)I642:<:5667(I;753292='I&88;<'H5'I)I:<<6;573675'G&-I4)I<3'H8,I(I693<65;:;78'I45:(I68'0I=5778&.I>34'I87'I8226A3(I(I'I8;(I87(I NM:i:3 MD:Z:136^C64 oR:Z:1 oH:i:1 [...]
-simulated.422 0 2 98 255 154M1D22M1I23M * 0 0 AGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTAATATGATGTCGTCGTCCAGTCCTTTGACTAATATTACAATCTA 6:53I(F'972876A58:I'7I0';5I'I)I.&268:7647I1(9;8:25I)=I.':I':8879I'I(29I?-'I'95<I(I1(I'E&7;H'7I-&I)7897I'7I(4I(G'97557:82I(99<E&8H'I/'58I?-'G'7G'7H'I'96787I+I(97786278387<78I(6:'I'I/'7=<8I)16I'54G'4246 NM:i:2 MD:Z:154^T45 oR:Z:2 oH:i:1 oP:i:97 oS [...]
-simulated.423 0 1 2828 255 19M1I22M1D152M1I8M * 0 0 TCGATATAAAAGTAAAAATACACTCTTCTAGGTGCAAGCGCTCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTACGAGCTGAT 6;686;2I<+&:5II1*&:%>:568I(=38H'867I(559 at 9BI(6I(;68:;I(70I(83I'4B94I.':6797I)/4182627979=9:I(98963I<+&5I(0:37I(:949H'6:<6I.&99I(7358F&<I(98:6=3<F'4I':154<5<6I(<889:4I0'9I/'9F'7I(I(I(657I)=I(8568&83963766 NM:i:3 MD:Z:41^C160 oR:Z:1 oH:i: [...]
+simulated.415 0 1 8603 255 21M1I3M1D80M1D25M1I9M1I39M * 0 0 AGAAGTTCGTAAAACCCAAGTAGCGTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAGGATTGGGCCCAAGGGCTGCTACGTGCCCAGGACCAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACAT 17I'5I)788I:+&I/'I)25'98;I4)619185:I0'668496773895;I'5E&549I)8I)8:6I1(7E&8I(44I(:3<H'H'I(:55I:+&G';8I.'I)I,G'5I)I1(I.'I)I0'9=8;6;8%62I0'7I(1F'I'98I(I(5;4G'I1(834=756I=,'677I';75474 NM:i:5 MD:Z:24T80A73 oR:Z:1 oH:i:1 oP:i:8602 oS:A:F XE:i:5 XS:i:0 XI:i:0
+simulated.416 0 1 2355 255 146M1D38M * 0 0 CGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCG 84184I(7I(3999<99;987G'7486:;5=8666II2*&;5E&I-&I(:367I(I0'I(I)6878I)I-&I2(256I(95I)98I(8695775G'9I0'2I(;1G'678I(>46771>I(<:6:7I(64<:I(2847468=7:56D2I(I(I)I(<4I'I)6;572I)6I'I(8I.'72<7:3 NM:i:1 MD:Z:146T38 oR:Z:1 oH:i:1 oP:i:2354 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.417 16 1 5689 255 24M1D143M1D39M * 0 0 AGGTTACCGCCGCTTTCAAACTCATTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCG 2'F'I4*I9(I74'1I4(1I:>89+I96<35'I(I0'I5946(I:;668(I847(I9:4;5;&+3II(I8;(I95:54'H'I5:;(I:3<@(I at 8)I;5:7;6379'F'I6>)I)I8(I3?8681;565'I8:7;)I649:8=6:947'H8553;6)I38'H)I193B86979 at 7577595(I55(I6'F99'H:&.I65'G&,I8 NM:i:2 MD:Z:24T143A39 oR:Z:1 [...]
+simulated.418 16 1 1216 255 110M1D46M1D53M1I3M * 0 0 TGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTACTA =4'I<5;)I37;7356)I9;)I>(I(I;3)I6868'/I7:'G)I5',>I'H:'I7;8:94'H56)I86<'I567(I5854(I(1I2(I5&,I'.I8'/I6(I9(I8>8'H)5I99596<68:7)I8(I(I35(I&.I672:979&-I86)I;7(I5+I7)I81'H(I=:7940847986:'I6=9:67475&+:I6(I6(I66(I4'0I&997 NM:i:3 MD:Z [...]
+simulated.419 0 1 309 255 13M1D87M1I28M1I62M1I12M * 0 0 ATTTTCGACAATGCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGACTAGGCCGGGTGTCACGTCAAATTCTCGGTCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACGACGTATGGATAA 7I?-'5:86I(<8I,5<59998I(8:9G'6268>9I;+&;2;8;I(I/'>4<I'9I)6I'8I0';4:>8887II2*&8I'I'6554I1(I.&778:576:(<7I(I(I.&;4=797955I.'H'986I)'28I'77I-&I)699537:I(:76I(6476?<I(76964:404I'75H'7H'I(G';8I>,'<%069886I*83I* NM:i:4 MD:Z:13C189 oR:Z: [...]
+simulated.420 16 1 8628 255 42M1D59M1I96M * 0 0 TTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTA '0I98:766;'0I7766<55483888(I7(I67<(I6'G37:+I>(I<'I58(I?98(I'G(I666&+;I(I=4&-I'I'0I'H;'H'1I&.I(I&-I593'G583=5(1I:+I:3'I88'I'I69:(I(1I8;74766&*9I98:(I5168:83<:8:(I55&,I8:5(I5495;67)I(I844:37(I<386==96 NM:i:2 MD:Z:42A155 oR:Z:1 oH:i:1 oP:i:8627 oS: [...]
+simulated.421 16 1 7518 255 39M1I62M1I35M1D64M * 0 0 TTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTAGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAACTAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCC (I4:(2I(I(1I:9'I(I'H(I5549>6'I?5'G+I5;5%:(I63679(I9'I8(I)I956'I-93)I64)I9)I*I7)I642:<:5667(I;753292='I&88;<'H5'I)I:<<6;573675'G&-I4)I<3'H8,I(I693<65;:;78'I45:(I68'0I=5778&.I>34'I87'I8226A3(I(I'I8;(I87(I NM:i:3 MD:Z:136C64 oR:Z:1 oH:i:1 [...]
+simulated.422 0 2 98 255 154M1D22M1I23M * 0 0 AGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTAATATGATGTCGTCGTCCAGTCCTTTGACTAATATTACAATCTA 6:53I(F'972876A58:I'7I0';5I'I)I.&268:7647I1(9;8:25I)=I.':I':8879I'I(29I?-'I'95<I(I1(I'E&7;H'7I-&I)7897I'7I(4I(G'97557:82I(99<E&8H'I/'58I?-'G'7G'7H'I'96787I+I(97786278387<78I(6:'I'I/'7=<8I)16I'54G'4246 NM:i:2 MD:Z:154T45 oR:Z:2 oH:i:1 oP:i:97 oS: [...]
+simulated.423 0 1 2828 255 19M1I22M1D152M1I8M * 0 0 TCGATATAAAAGTAAAAATACACTCTTCTAGGTGCAAGCGCTCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTACGAGCTGAT 6;686;2I<+&:5II1*&:%>:568I(=38H'867I(559 at 9BI(6I(;68:;I(70I(83I'4B94I.':6797I)/4182627979=9:I(98963I<+&5I(0:37I(:949H'6:<6I.&99I(7358F&<I(98:6=3<F'4I':154<5<6I(<889:4I0'9I/'9F'7I(I(I(657I)=I(8568&83963766 NM:i:3 MD:Z:41C160 oR:Z:1 oH:i:1 [...]
simulated.424 0 1 22 255 45M1I157M * 0 0 TGCGCTTACAGACTTTATTTCTTCGTGAGGGAGTTGACCCATGCACGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCT 7553:H'579:58I1';I.'8I'8;968I-&:9I'69I/';28;2(:I(8986788H'<I(83:8I'3I/'I(98>8;I*2563I)4;5534I(I:+&74977I(45:7;843I*76;;I0'52;8776I)I(65I/':8:665G'I/'8<H'56;=85I'55;9I':I(87F'I(69I(I(2I(?15028477I(8I)6I)3 NM:i:1 MD:Z:202 oR:Z:1 oH:i:1 oP:i:21 oS:A: [...]
simulated.425 0 2 206 255 202M * 0 0 TTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGCTA I)E&75;67897I(896I(:H'I1(86I>,'I)<H'=G'F'39986I3(I(4;864553799887I(75I(I.'549=H'7=I(66I(:;16:738467466199I(885685:5<392=I-&I'I)89;9779I(I(I)<42775687I'447I)7:I4)75I;+&684I/'06I(8;;754845I)75I2(6I)1A;88; NM:i:0 MD:Z:202 oR:Z:2 oH:i:1 oP:i:205 oS:A:F XE: [...]
-simulated.426 0 1 2578 255 158M1D7M1I28M * 0 0 CCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGGTACTTAGATTTAAGCATCAGAACTCCGGCG II2*&85<I(50873<5:I0'I(668>95<F'8=I)::89475I(696:=67388IG0)%4=H'4I-&73I);575827954G'446594I)66:8I(8714:<5<74884I'846I(7:83:33;7;H'3E&89974999<=:7I(8I;+&87I0'4I+I=,'6'7I(873I.&I(683888=I'59I(I(86 NM:i:2 MD:Z:158^T35 oR:Z:1 oH:i:1 oP:i:2577 oS:A:F XE:i [...]
+simulated.426 0 1 2578 255 158M1D7M1I28M * 0 0 CCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGGTACTTAGATTTAAGCATCAGAACTCCGGCG II2*&85<I(50873<5:I0'I(668>95<F'8=I)::89475I(696:=67388IG0)%4=H'4I-&73I);575827954G'446594I)66:8I(8714:<5<74884I'846I(7:83:33;7;H'3E&89974999<=:7I(8I;+&87I0'4I+I=,'6'7I(873I.&I(683888=I'59I(I(86 NM:i:2 MD:Z:158T35 oR:Z:1 oH:i:1 oP:i:2577 oS:A:F XE:i: [...]
simulated.427 0 1 4715 255 203M * 0 0 TCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAA 6I(;54:I.'75=:H'64I):;II2*&I0'I);I'8396I(;746I)9577;485II1*&7958I)7587E&37:I9+&5G'868F'34I)I(85H'I.&79I2(584I/'I(4I(II1*&325:5I(7H'G'96I(88I(48I(4:8<9I/'62I)67<4;68=>97I(@I.&91;I)7I<,&8444?I(86E&I(;:I(I( NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:4714 oS:A:F [...]
simulated.428 0 2 186 255 119M1I62M * 0 0 GAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATCGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGG 52H'8I0'F'6896I(6I);I)I(857;:9:9I(227I(9H'I/'3;I8*&H';I(3I)I)89<<8I/'G';58=865;82>86>I*:6F&I/'2;98H'23G'=5I'7537:=6<3;7&5<;788I)?9732:<497858I1(I(G'5=>98<3I(I(I(4737=8:67E&0<;I(56I.' NM:i:1 MD:Z:181 oR:Z:2 oH:i:1 oP:i:185 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.429 0 1 3262 255 25M1I110M1D78M * 0 0 GTTAAAACGCGGCATGATTAACGGTACCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCAT 6I)I<,&68:G';8478I)I(2I'9&I':7I/'87H'9589925<556I(3H'I(=I=,'8I(I(666:I)49I(I)<77I/':>68I=,';I*86F'I*9:878I<+&I(I(9I/'8 at 88>I'54:;9:8I/':9DI(;837;4I)@:71439I'I-&I.'826;I(77649:79>65:;8:78F':55<9I>,'58I(IG0)%7I.'6625: NM:i:2 MD:Z:13 [...]
+simulated.429 0 1 3262 255 25M1I110M1D78M * 0 0 GTTAAAACGCGGCATGATTAACGGTACCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCAT 6I)I<,&68:G';8478I)I(2I'9&I':7I/'87H'9589925<556I(3H'I(=I=,'8I(I(666:I)49I(I)<77I/':>68I=,';I*86F'I*9:878I<+&I(I(9I/'8 at 88>I'54:;9:8I/':9DI(;837;4I)@:71439I'I-&I.'826;I(77649:79>65:;8:78F':55<9I>,'58I(IG0)%7I.'6625: NM:i:2 MD:Z:13 [...]
simulated.430 16 1 2663 255 201M * 0 0 GATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAA 788:4)I87>:'H44;55:99777<7(I886(I5575<;27:8)I;)I9:6=9875677=(I7',>I88&-I5&,I'-?I=7(I147(1I)I6768:7:(I89'I)I:&+:I7794;;+I66'G(1I)I87579;:7&+<I8&F4&+9I:'0I7967(I87949488;5676&*9I4;&*3II38789?'I745(I78<*I NM:i:0 MD:Z:201 oR:Z:1 oH:i:1 oP:i:2662 oS:A:R XE [...]
-simulated.431 16 1 5655 255 3M1I63M1I5M1D131M * 0 0 CATCGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGACCGGCAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTA 7:6'3)I754(I:7;&E87(I'-?I756(I685'I4'G(I8)I7'I6:(2I;'.I8987'0I=:;90'(I(I8C7639'G9<95;)I828'I:17;A:&)0II(I<;(I;9894(I(I4;9'H7464(I94)I397:4;/26'G'H=<*I)I;(I68897;3454(I58B6'I67777433389(I6 at 565:(I56'H'F;416 NM:i:3 MD:Z:71^A131 oR:Z:1 oH: [...]
-simulated.432 0 1 1590 255 160M1I3M1D13M * 0 0 GTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCGACTCCCTTGAGACGGC :964876<<:I/':758:78I3(7I(4714I'I(I(46I<+&7;7I(I;+&7I/'6H'67;<H'7:7<H'9I)8I(:I(6695:I(=9467I(5:3:;::9G'I'I/'F&:I'=4I)I'71781868I(85889749754>747I(5499I(59I3(7:8';<;I7*I(83922G'; NM:i:2 MD:Z:163^C13 oR:Z:1 oH:i:1 oP:i:1589 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.431 16 1 5655 255 3M1I63M1I5M1D131M * 0 0 CATCGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGACCGGCAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTA 7:6'3)I754(I:7;&E87(I'-?I756(I685'I4'G(I8)I7'I6:(2I;'.I8987'0I=:;90'(I(I8C7639'G9<95;)I828'I:17;A:&)0II(I<;(I;9894(I(I4;9'H7464(I94)I397:4;/26'G'H=<*I)I;(I68897;3454(I58B6'I67777433389(I6 at 565:(I56'H'F;416 NM:i:3 MD:Z:71A131 oR:Z:1 oH:i [...]
+simulated.432 0 1 1590 255 160M1I3M1D13M * 0 0 GTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCGACTCCCTTGAGACGGC :964876<<:I/':758:78I3(7I(4714I'I(I(46I<+&7;7I(I;+&7I/'6H'67;<H'7:7<H'9I)8I(:I(6695:I(=9467I(5:3:;::9G'I'I/'F&:I'=4I)I'71781868I(85889749754>747I(5499I(59I3(7:8';<;I7*I(83922G'; NM:i:2 MD:Z:163C13 oR:Z:1 oH:i:1 oP:i:1589 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.433 16 1 8540 255 119M1I55M1I32M * 0 0 ACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTCGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGACTTGGGCCCAAGGGCTGCTACTGCCTAGGACAA 26865;'H)I679<6'I(I&)1II=;:6&,<I4:)I675:(2I2'/I7*I9'H4686'I8'H945'G7'I9:5(.BI'.I'I;4<44&+;I9;;4366'0I8:947868:@:65(I8(I&=79'F8)I65;&.I7(I7(I;;*I6:;&E)I'I;9;',>I(I87'1I(I'/I(I9''G)4I(1I(I&-I6::624<84+I)6'I:6(I NM:i:3 MD:Z:198C7 oR:Z:1 [...]
-simulated.434 0 1 739 255 32M1D73M1D112M * 0 0 GCGGCGTAGGATAATCTACGGTTGCATGGTTATTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATAT A8F'8868I'97I(<=9;5I'I'64;3I(I(5I,I/'I)9775I/'<8;;6?@I8*&?:357957567;<8915I1(65957365;77I)5=73667;;792=:6D27:8569:8=I*;I(G'37I(<99G'<I)9I(I0'F'8>967:I(I(6:75:E&:38I:+&6I(555:797:83;8I:+&I(4339I/'H'87I1(;4I)95<31 at 88778 NM:i:2 MD [...]
+simulated.434 0 1 739 255 32M1D73M1D112M * 0 0 GCGGCGTAGGATAATCTACGGTTGCATGGTTATTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATAT A8F'8868I'97I(<=9;5I'I'64;3I(I(5I,I/'I)9775I/'<8;;6?@I8*&?:357957567;<8915I1(65957365;77I)5=73667;;792=:6D27:8569:8=I*;I(G'37I(<99G'<I)9I(I0'F'8>967:I(I(6:75:E&:38I:+&6I(555:797:83;8I:+&I(4339I/'H'87I1(;4I)95<31 at 88778 NM:i:2 MD [...]
simulated.435 0 1 2728 255 195M1I14M * 0 0 GGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTACTACTTTTCGGCTAT I)75I1'<I/'IA.(56F'789I2(I'6;1753?I(38I'I'7I?-'<8672;I'54I(I3(I'218699:<I=,'5I'4I:+&=I,&777;I(96877568552;7I9*&75II3+'797446I(062I(93;E&6:897I'I)5I):676:I'96I'79I)==24I/'384;5I)9:776:<45;75;:I(6<(693I=,'7I(96<: NM:i:1 MD:Z:209 oR:Z:1 oH:i [...]
-simulated.436 16 1 2600 255 10M1I30M1I95M1I18M1D48M * 0 0 ATGCTCATGGTATGGCAGTGTAGGAGCGACTAGATTTTTGTAGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTACTTTGGGGTCTTAGATTTAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCC 0=<98885'I%:5(I8:62677(I49;5<7501:&*2II97&'G4&.I67(I4645758447'H=64668(I4468)I:567148687658(I448(I5978329=68(I5(I8>788<:;<9;:'I9',=I;8'0I&2&-I',<I::'I46;'0IC9458;7:'G79(I(I8&*7I968<99(I95&E&.I(I;9955757'H NM:i:4 MD:Z:153^A48 oR:Z [...]
-simulated.437 16 1 8807 255 30M1D164M * 0 0 TAATACGTGAACAGTGCTACAAGCCAATGGAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTC :)I995471(I933356253&E4'H(I2)I(/DI:<'H43>>8:'F'0I5)I&,I354&E86664)I84'F:&.I&,I'H24718:4:2(I5'G46'I987664575;4=&+:I97(I)I(I(I(I974883763)I;'G*I<8(I6'F486)I'I46(I8'0I676=8'H95427:;776(1I6*I?'H9653 NM:i:1 MD:Z:30^A164 oR:Z:1 oH:i:1 oP:i:8806 oS:A:R XE:i:1 [...]
-simulated.438 0 2 39 255 89M1D113M1I4M * 0 0 TTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAACTCCA H'74::9275;F'I)=9745I0'37F&8579I(655858;84I(3:6::6>77I(9H'G'3:5I(I'7864;=62-3F&5I-&59I(I)I,6<8:769/I1(48384:H'2I-&5I(4562;I(I(86I9+&I(:75I(I0'I(I)4;H'7I.&H'4<35I(;I)4I(I(:98<:765I(953H'6I(I/'87I>,'G'<H'(<H'4 NM:i:2 MD:Z:89^C117 oR:Z:2 oH:i [...]
-simulated.439 16 1 5532 255 47M1I116M1D28M * 0 0 CATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCTACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACGCCGCTTTCAAACTCATTTGTATGCCG 8::6'.I:;(I)I'/I6)I48>='H9'I<99'G8<97::7)I7'G76)6::974;2;;'I0:(I(I2:1676(I86:83:(I45(I429<6;A2>:9>323;6'H<<86)I769587&-I85'G>347'F;67(I8;9(I98(I&*8I82@(I78='I:'H(I3B7'G;<(3I6'0I=762(3I56799'I5 NM:i:2 MD:Z:163^C28 oR:Z:1 oH:i:1 oP:i:5531 oS:A:R XE:i:2 [...]
-simulated.440 0 1 1168 255 108M1D49M1D23M * 0 0 CGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCACAGACTGCGCCACCGGAGT 88::<5;5:;978<7:7I=,'I(985875;6E&95I(8I'76I=,'6577F&872I(18/3476I(74H'9I)G'48I(0:69I.'80I'I(7I=,'I(3I)=:8;<8B::G'884I'45:I'3=38H'I.&6D&;I-&I/'9I2(2G'9H'9:;I(I4)8=6996788=I(7I(I)767 NM:i:2 MD:Z:108^G49^C23 oR:Z:1 oH:i:1 oP:i:1167 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.441 0 2 195 255 131M1D79M * 0 0 TACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGC =7563I(7I)6I'I(878566;9I)489I(8I(I2(8;I9+&I(7I'8F'I(78:76I2(I(67:<6777;478=:G'6;I*I0'842;G'9=I(36I(797;3847477:7<295F'57=7:65;1955;I,I(I'5:7;86;I(I(I(744:79890I)>57I(34I-&;7I9*&6:8I-&16G'895865:;5I(96I0'=I)?:68 NM:i:1 MD:Z:131^A79 oR:Z:2 o [...]
-simulated.442 0 1 4345 255 148M1D58M * 0 0 CGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTG 44I)>I(8I(I(9275I(866G'=8:9=7I'6659I(3;<I0'678578;7;:97576758II1*&I(;8596679I(8A:5I(I'I(79I-&5;75H'97I(67997I)3II3+'432474I(896::4744I(I)I(:<97:I0'9I+I2(I'4I:+&7:;5G'<I)57;;457:59I0'9G'81I+I(4::836I(77I(465 NM:i:1 MD:Z:148^T58 oR:Z:1 oH:i:1 o [...]
-simulated.443 0 1 7320 255 188M1D19M * 0 0 GGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCTGCACCTTTCATTTCCT I/';4I.&775F'989;I(<:87I(<9475749I(584594757I.';A8>>I(987:356I<,'=;5I(6G'786I0'7377=9I(I(9978:5:65:907947I/'9E&767I)8I<,'8578378:7I'I*:<I(I'864576I/'I0'76684=7I)52I(8I2(I)I(65F&I'77593:;57I,9991F&I0'86I/'G'6 NM:i:1 MD:Z:188^C19 oR:Z:1 oH:i:1 [...]
-simulated.444 16 1 3433 255 29M1D99M1I44M1I21M1D10M * 0 0 CGTGACTATGTGATAAGTATCAAAATCAACCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTCGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTAGAGATCGGGAGGATGGTGTTATTTGTCTACG ;7987548>06867'H<93<9&*9I67(I(/EI6&-I0<6:26=(I5'G2'.I<6'/I*I2568'I6:9:(1I6'I4(I6824;<:8(I5'.I:(I79;)I'G9'H9&-I(I3>2::8(.AI;=7(2I((I'H79(I149775'I)I(I)I6:(I;8'0I<:89)I(I'H'I2)<;5687&-I8(I78(I16*I5)5I29><627 NM:i:4 MD:Z:29^C164^T1 [...]
-simulated.445 16 2 99 255 19M1I159M1D28M * 0 0 GTATTCCTGTCAGAGCGTTAAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATGCATG 927'H'H9678976468'H&E'1I6;(I(I'0I836404;6'.I5;6834'G7&.I6'G7=68:'H(I43&+;I'I578'I&-I(I(I6:)I<'0I(I:;8:*I:(I<)I'H9796?6<9(I:69)I7(I'/I:5&+<I'I9'H6(I'G at 7892&.I'H764;=;97:=>:73'G<8(I+I5998(I88)I67(I67:83697:>:8 NM:i:2 MD:Z:178^T28 oR:Z:2 oH [...]
-simulated.446 16 1 4386 255 70M1D36M1D35M1D3M1I9M1I35M1I23M * 0 0 TTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTATGTCCTTCGCACGTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCGACTTGGAGCCGCCCTACTCCTAG 'G:8><9124:=2?>82837',5II(I768:6889(I97<:'I(I(I63(1I6764(I52(I8496:(I9)/FI6:9249)I987876597'H(I(I898=9&-I=,I'/I)I4&+;I95;9'H1'I2992965:89(2I1C5:&'H'G<7:96(6'I74(I2/6:8953&-I5'I3:85857'I778:4(78(I)I99'G8'1I0>48(I [...]
-simulated.447 16 1 5161 255 152M1I11M1D40M * 0 0 CTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCCTACTCGGGCGCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTC 7'F;(I9?85(I;:::',=I8'H(1I877+I516(I'I64(I)I&.I886'1I(I(I7;6=<5549599(1I642(I7)I(I3(I957/'H2'H5978;898:64(I8665:)I)I946&.I(1I2>:;47)I7758(I(I(I9874'I(I6&F86;74&-I==,I7'0I)I(I7(I6'I827:9776'0I5:29501',=I98 NM:i:2 MD:Z:163^C40 oR:Z:1 oH:i:1 [...]
-simulated.448 16 1 7753 255 89M1D33M1I11M1I72M * 0 0 ATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGATAAATTTCAGAAGAACAGAGTCTTCCCACCGAATCGTCTCAGACCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTAT 5=77(I'I(I:7(1I9;9',<I5(I(3I(I'G9;;B'H::757(I2:(1I9797&)1II94(I'1I99<6=C9'G57675:9<<)I=08,I58&.I'/I1:2'H4(I36596:5'I'0I6'G&'I663766782%&*8I5(I682)I(I;278<4:9(2I57'I9'I7(I35'G573'I7;25673?6(I:9(I26:69<:==;769 NM:i:3 MD:Z:89^G116 oR: [...]
+simulated.436 16 1 2600 255 10M1I30M1I95M1I18M1D48M * 0 0 ATGCTCATGGTATGGCAGTGTAGGAGCGACTAGATTTTTGTAGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTACTTTGGGGTCTTAGATTTAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCC 0=<98885'I%:5(I8:62677(I49;5<7501:&*2II97&'G4&.I67(I4645758447'H=64668(I4468)I:567148687658(I448(I5978329=68(I5(I8>788<:;<9;:'I9',=I;8'0I&2&-I',<I::'I46;'0IC9458;7:'G79(I(I8&*7I968<99(I95&E&.I(I;9955757'H NM:i:4 MD:Z:153A48 oR:Z: [...]
+simulated.437 16 1 8807 255 30M1D164M * 0 0 TAATACGTGAACAGTGCTACAAGCCAATGGAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTC :)I995471(I933356253&E4'H(I2)I(/DI:<'H43>>8:'F'0I5)I&,I354&E86664)I84'F:&.I&,I'H24718:4:2(I5'G46'I987664575;4=&+:I97(I)I(I(I(I974883763)I;'G*I<8(I6'F486)I'I46(I8'0I676=8'H95427:;776(1I6*I?'H9653 NM:i:1 MD:Z:30A164 oR:Z:1 oH:i:1 oP:i:8806 oS:A:R XE:i:1 X [...]
+simulated.438 0 2 39 255 89M1D113M1I4M * 0 0 TTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAACTCCA H'74::9275;F'I)=9745I0'37F&8579I(655858;84I(3:6::6>77I(9H'G'3:5I(I'7864;=62-3F&5I-&59I(I)I,6<8:769/I1(48384:H'2I-&5I(4562;I(I(86I9+&I(:75I(I0'I(I)4;H'7I.&H'4<35I(;I)4I(I(:98<:765I(953H'6I(I/'87I>,'G'<H'(<H'4 NM:i:2 MD:Z:89C117 oR:Z:2 oH:i: [...]
+simulated.439 16 1 5532 255 47M1I116M1D28M * 0 0 CATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCTACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACGCCGCTTTCAAACTCATTTGTATGCCG 8::6'.I:;(I)I'/I6)I48>='H9'I<99'G8<97::7)I7'G76)6::974;2;;'I0:(I(I2:1676(I86:83:(I45(I429<6;A2>:9>323;6'H<<86)I769587&-I85'G>347'F;67(I8;9(I98(I&*8I82@(I78='I:'H(I3B7'G;<(3I6'0I=762(3I56799'I5 NM:i:2 MD:Z:163C28 oR:Z:1 oH:i:1 oP:i:5531 oS:A:R XE:i:2 [...]
+simulated.440 0 1 1168 255 108M1D49M1D23M * 0 0 CGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCACAGACTGCGCCACCGGAGT 88::<5;5:;978<7:7I=,'I(985875;6E&95I(8I'76I=,'6577F&872I(18/3476I(74H'9I)G'48I(0:69I.'80I'I(7I=,'I(3I)=:8;<8B::G'884I'45:I'3=38H'I.&6D&;I-&I/'9I2(2G'9H'9:;I(I4)8=6996788=I(7I(I)767 NM:i:2 MD:Z:108G49C23 oR:Z:1 oH:i:1 oP:i:1167 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.441 0 2 195 255 131M1D79M * 0 0 TACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGC =7563I(7I)6I'I(878566;9I)489I(8I(I2(8;I9+&I(7I'8F'I(78:76I2(I(67:<6777;478=:G'6;I*I0'842;G'9=I(36I(797;3847477:7<295F'57=7:65;1955;I,I(I'5:7;86;I(I(I(744:79890I)>57I(34I-&;7I9*&6:8I-&16G'895865:;5I(96I0'=I)?:68 NM:i:1 MD:Z:131A79 oR:Z:2 oH [...]
+simulated.442 0 1 4345 255 148M1D58M * 0 0 CGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTG 44I)>I(8I(I(9275I(866G'=8:9=7I'6659I(3;<I0'678578;7;:97576758II1*&I(;8596679I(8A:5I(I'I(79I-&5;75H'97I(67997I)3II3+'432474I(896::4744I(I)I(:<97:I0'9I+I2(I'4I:+&7:;5G'<I)57;;457:59I0'9G'81I+I(4::836I(77I(465 NM:i:1 MD:Z:148T58 oR:Z:1 oH:i:1 oP [...]
+simulated.443 0 1 7320 255 188M1D19M * 0 0 GGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCTGCACCTTTCATTTCCT I/';4I.&775F'989;I(<:87I(<9475749I(584594757I.';A8>>I(987:356I<,'=;5I(6G'786I0'7377=9I(I(9978:5:65:907947I/'9E&767I)8I<,'8578378:7I'I*:<I(I'864576I/'I0'76684=7I)52I(8I2(I)I(65F&I'77593:;57I,9991F&I0'86I/'G'6 NM:i:1 MD:Z:188C19 oR:Z:1 oH:i:1 [...]
+simulated.444 16 1 3433 255 29M1D99M1I44M1I21M1D10M * 0 0 CGTGACTATGTGATAAGTATCAAAATCAACCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTCGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTAGAGATCGGGAGGATGGTGTTATTTGTCTACG ;7987548>06867'H<93<9&*9I67(I(/EI6&-I0<6:26=(I5'G2'.I<6'/I*I2568'I6:9:(1I6'I4(I6824;<:8(I5'.I:(I79;)I'G9'H9&-I(I3>2::8(.AI;=7(2I((I'H79(I149775'I)I(I)I6:(I;8'0I<:89)I(I'H'I2)<;5687&-I8(I78(I16*I5)5I29><627 NM:i:4 MD:Z:29C164T10 [...]
+simulated.445 16 2 99 255 19M1I159M1D28M * 0 0 GTATTCCTGTCAGAGCGTTAAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATGCATG 927'H'H9678976468'H&E'1I6;(I(I'0I836404;6'.I5;6834'G7&.I6'G7=68:'H(I43&+;I'I578'I&-I(I(I6:)I<'0I(I:;8:*I:(I<)I'H9796?6<9(I:69)I7(I'/I:5&+<I'I9'H6(I'G at 7892&.I'H764;=;97:=>:73'G<8(I+I5998(I88)I67(I67:83697:>:8 NM:i:2 MD:Z:178T28 oR:Z:2 oH: [...]
+simulated.446 16 1 4386 255 70M1D36M1D35M1D3M1I9M1I35M1I23M * 0 0 TTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTATGTCCTTCGCACGTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCGACTTGGAGCCGCCCTACTCCTAG 'G:8><9124:=2?>82837',5II(I768:6889(I97<:'I(I(I63(1I6764(I52(I8496:(I9)/FI6:9249)I987876597'H(I(I898=9&-I=,I'/I)I4&+;I95;9'H1'I2992965:89(2I1C5:&'H'G<7:96(6'I74(I2/6:8953&-I5'I3:85857'I778:4(78(I)I99'G8'1I0>48(I [...]
+simulated.447 16 1 5161 255 152M1I11M1D40M * 0 0 CTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCCTACTCGGGCGCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTC 7'F;(I9?85(I;:::',=I8'H(1I877+I516(I'I64(I)I&.I886'1I(I(I7;6=<5549599(1I642(I7)I(I3(I957/'H2'H5978;898:64(I8665:)I)I946&.I(1I2>:;47)I7758(I(I(I9874'I(I6&F86;74&-I==,I7'0I)I(I7(I6'I827:9776'0I5:29501',=I98 NM:i:2 MD:Z:163C40 oR:Z:1 oH:i:1 [...]
+simulated.448 16 1 7753 255 89M1D33M1I11M1I72M * 0 0 ATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGATAAATTTCAGAAGAACAGAGTCTTCCCACCGAATCGTCTCAGACCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTAT 5=77(I'I(I:7(1I9;9',<I5(I(3I(I'G9;;B'H::757(I2:(1I9797&)1II94(I'1I99<6=C9'G57675:9<<)I=08,I58&.I'/I1:2'H4(I36596:5'I'0I6'G&'I663766782%&*8I5(I682)I(I;278<4:9(2I57'I9'I7(I35'G573'I7;25673?6(I:9(I26:69<:==;769 NM:i:3 MD:Z:89G116 oR:Z [...]
simulated.449 16 1 7120 255 103M1I50M1I29M * 0 0 GGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCTATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGACATGCTGGCCATCCTATTTTAACATAGTT (I8(I'1I64+I78(I'H8&.I'/I569'I:(I<:7:'H<8(I83 at 677:5:9(I'0I3'/I4779(I(I993565;7<7289<8;7:835)I6)I999&-I8&595)I768(I767'G:(I'I:37'G:67647413984',<I<3(I4'H:8%6:8:73)I'I8:'H:7&+;I'H7286<'H NM:i:2 MD:Z:182 oR:Z:1 oH:i:1 oP:i:7119 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.450 16 1 5916 255 3M1D35M1I16M1D117M * 0 0 CTTAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCGTGCATTGAATCCGAACGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACT 3(I)6I7B&.I:8?&*9I5&E)I(I(I86<89:76:'H':766)I4(I:(I3&F:+I67(I'H0968;6(I78693<95&.I8(I(I6'/I789934:&*9I6'1I7&)/;II68:437679:68(I(I?9*I:;>'/I75;5586:6.;5473(I;<9725&.I5)I9:99 NM:i:3 MD:Z:3^A51^G117 oR:Z:1 oH:i:1 oP:i:5915 oS:A:R XE:i:3 XS:i:0 XI:i:0
-simulated.451 0 1 8113 255 194M1D5M * 0 0 TGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAGCGG >8I(<<I(I(;63:I(::54:64294598I(959865576:4I=,'6343H'I1'I(:7I)555F&5I(I0'4795I)99496I.'6853I*I'28H'18:23479I'8I):7I)?@9<6:I/'I)85G'1;5=3I(6G'I(;59866I(39594G'48I(97 at 658:=67I'G'H'I-&I(358>6I(8;F':C:4I( NM:i:1 MD:Z:194^A5 oR:Z:1 oH:i:1 oP:i:8112 oS:A:F [...]
-simulated.452 0 1 3274 255 147M1D70M * 0 0 CATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTT >9757I'I(9I(;H'56I.'55H'97;42?8<692H'3I*G':I=,'4I'I)44:7E&57I(I'727I1(8779I:+&6I(9;I(I':<842I=,'I'I(7I-&58:34I(8728:5<I/'85F'G'97477<I(5679767I(I0'I,3743H'646886237:88789:8I(;617<I8*&66H'II0)&5I2(529;596H'3I'7I0':9I0' NM:i:1 MD:Z:1 [...]
+simulated.450 16 1 5916 255 3M1D35M1I16M1D117M * 0 0 CTTAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCGTGCATTGAATCCGAACGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACT 3(I)6I7B&.I:8?&*9I5&E)I(I(I86<89:76:'H':766)I4(I:(I3&F:+I67(I'H0968;6(I78693<95&.I8(I(I6'/I789934:&*9I6'1I7&)/;II68:437679:68(I(I?9*I:;>'/I75;5586:6.;5473(I;<9725&.I5)I9:99 NM:i:3 MD:Z:3A51G117 oR:Z:1 oH:i:1 oP:i:5915 oS:A:R XE:i:3 XS:i:0 XI:i:0
+simulated.451 0 1 8113 255 194M1D5M * 0 0 TGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAGCGG >8I(<<I(I(;63:I(::54:64294598I(959865576:4I=,'6343H'I1'I(:7I)555F&5I(I0'4795I)99496I.'6853I*I'28H'18:23479I'8I):7I)?@9<6:I/'I)85G'1;5=3I(6G'I(;59866I(39594G'48I(97 at 658:=67I'G'H'I-&I(358>6I(8;F':C:4I( NM:i:1 MD:Z:194A5 oR:Z:1 oH:i:1 oP:i:8112 oS:A:F X [...]
+simulated.452 0 1 3274 255 147M1D70M * 0 0 CATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTT >9757I'I(9I(;H'56I.'55H'97;42?8<692H'3I*G':I=,'4I'I)44:7E&57I(I'727I1(8779I:+&6I(9;I(I':<842I=,'I'I(7I-&58:34I(8728:5<I/'85F'G'97477<I(5679767I(I0'I,3743H'646886237:88789:8I(;617<I8*&66H'II0)&5I2(529;596H'3I'7I0':9I0' NM:i:1 MD:Z:1 [...]
simulated.453 0 1 7623 255 191M * 0 0 GGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTG I(3I(F&:8356<77<64I(I.'4I):/E&9I.&I(4;9867669:9H'87=I)/6I0'9996:I0';7;I'31I)98886:I)G'H':8H'5;I(I(8186:I(5:8G':687;9I'H'I*917I(<=6:=8:G'I(I(<5I.'837I<+&7I'I/'F&I(98>8I(40;7>I(:<I1(88<7II1*&54 NM:i:0 MD:Z:191 oR:Z:1 oH:i:1 oP:i:7622 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.454 0 1 2352 255 56M1D126M * 0 0 TCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTG 589>9<89I*6I(87689:66:<?I(.:=750:66<32IH0)&97I'I/'G':675CI0'H'I(5744I)I2(I0':54I'71I(9?G'867:77<I(5I/'1E&7;I*28:I(>894<89I)77557I(489:I+>26;96555568H'8E&I(I(I(:8I)I(38767I(4G'G':I1'4 NM:i:1 MD:Z:56^G126 oR:Z:1 oH:i:1 oP:i:2351 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.454 0 1 2352 255 56M1D126M * 0 0 TCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTG 589>9<89I*6I(87689:66:<?I(.:=750:66<32IH0)&97I'I/'G':675CI0'H'I(5744I)I2(I0':54I'71I(9?G'867:77<I(5I/'1E&7;I*28:I(>894<89I)77557I(489:I+>26;96555568H'8E&I(I(I(:8I)I(38767I(4G'G':I1'4 NM:i:1 MD:Z:56G126 oR:Z:1 oH:i:1 oP:i:2351 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.455 0 1 2304 255 183M1I27M * 0 0 AAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGTAATCGCGTGATACATTGCCTTGGAATC E&6E&I;+&2I0'I)59I)I(3:67I=,':98H'536I1'57I.&0F&988;6429I(4H'27764953476I)8>9;84288856II1)&46H'I.&I'548:I(I1(I(G':934I(I-&I2(:47I'82I'=7I(6568543I(7I/'9E&7;H'968I)368798:I)3;864I(81;4&I(927;7;;95793I)8I(I(I)I'3; NM:i:1 MD:Z:210 oR:Z:1 oH [...]
simulated.456 0 1 1996 255 57M1I159M * 0 0 CAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGTCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTT 95I(6597H'8I(8;6;4II6,(=4I(;:587I(2668;35589:3I(59889I-&=&57H'2I'I/'D&::<<4I;+&:I(685I(8I(94595F&:98;I.'583I)7I/'98:I';I)<:5787877378I(7I2(H'967I-&H'67I(:2I(I)I(I<,&5I)46I)I2(I(8<9:I)887950I):4E&5895-I'5=<I1(I(=9II4+' NM:i:1 MD:Z:2 [...]
-simulated.457 16 1 2699 255 39M2D58M1I37M1D37M * 0 0 GACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATCGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGG 99<;576'I6(I9:45:7:5=969)I6'-?I72'.I4,I)5I;7(I;16&-I(I7889687(I47(I(I=&+:I>39759)I89'I'/I(I500382'5:&+<I:'H<',=I8(3I5<76(I24:=683898589(3I>5%)0GI228::6(I955)I17:'H984 at 6'G*I NM:i:4 MD:Z:39^TG95^A37 oR:Z:1 oH:i:1 oP:i:2698 oS:A:R XE:i:4 XS:i:0 XI:i:0
-simulated.458 0 2 180 255 97M1D30M1I25M1I56M1I3M * 0 0 GGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATGCATGTCGTACTTATAGCGCGCACATAAACCAACTCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTACTC I(I)I(64I)7I3(I)756;I(>I(:H'I);;<787:6I(982I(4I(I0'86I?-'I(8I(6G'I'8;677I2(I)=8834;56719:83I(7:G'I+826<I(71I'=:H'85<6:877835485&857H':=89739:5769<I0'F'G'&7766:76I(I(I(:96===2<8I(879I(65I0':9I at -'478I2(6;I(::7<27&A76 NM:i:4 [...]
-simulated.459 0 1 8103 255 52M1D137M1D9M * 0 0 CTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGTCGCGCCA ::6I(I(I(7:5G'8<I'I'7=<7I'98963964=6;3:I(8645469=48;I7*6675I(I.'I(6>I(46:I'5I(I1'6=87I(05=47I2(=777I(I(;7I):9689578I(4I(33I(539::<I0'I':8I)996<2I(2G'I(34<78:F':;:9:F'75I'9:695;:.<7I)I)G'I1'C<;649F&7 NM:i:2 MD:Z:52^A137^G9 oR:Z:1 oH:i:1 oP:i:8102 [...]
+simulated.457 16 1 2699 255 39M2D58M1I37M1D37M * 0 0 GACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATCGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGG 99<;576'I6(I9:45:7:5=969)I6'-?I72'.I4,I)5I;7(I;16&-I(I7889687(I47(I(I=&+:I>39759)I89'I'/I(I500382'5:&+<I:'H<',=I8(3I5<76(I24:=683898589(3I>5%)0GI228::6(I955)I17:'H984 at 6'G*I NM:i:4 MD:Z:39TG95A37 oR:Z:1 oH:i:1 oP:i:2698 oS:A:R XE:i:4 XS:i:0 XI:i:0
+simulated.458 0 2 180 255 97M1D30M1I25M1I56M1I3M * 0 0 GGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATGCATGTCGTACTTATAGCGCGCACATAAACCAACTCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTACTC I(I)I(64I)7I3(I)756;I(>I(:H'I);;<787:6I(982I(4I(I0'86I?-'I(8I(6G'I'8;677I2(I)=8834;56719:83I(7:G'I+826<I(71I'=:H'85<6:877835485&857H':=89739:5769<I0'F'G'&7766:76I(I(I(:96===2<8I(879I(65I0':9I at -'478I2(6;I(::7<27&A76 NM:i:4 [...]
+simulated.459 0 1 8103 255 52M1D137M1D9M * 0 0 CTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGTCGCGCCA ::6I(I(I(7:5G'8<I'I'7=<7I'98963964=6;3:I(8645469=48;I7*6675I(I.'I(6>I(46:I'5I(I1'6=87I(05=47I2(=777I(I(;7I):9689578I(4I(33I(539::<I0'I':8I)996<2I(2G'I(34<78:F':;:9:F'75I'9:695;:.<7I)I)G'I1'C<;649F&7 NM:i:2 MD:Z:52A137G9 oR:Z:1 oH:i:1 oP:i:8102 oS [...]
simulated.460 16 1 8416 255 164M1I39M * 0 0 ATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCACGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACC 985;'G<876)I(I87(I988?7(I77'H995>:'G358'H68968(I'H;39=38(I(I&.I7;6'1I69)I>7(I:52<6766>6589='I8545)I66(I9(I64)I9'0I688:(I5'H;:6558/(I'I876=3(I(I&*3II8>87&+;I9<(I737='&-I4(2I7'H:(I44:9(I5(I299(I7(I95;&+;I'I NM:i:1 MD:Z:203 oR:Z:1 oH:i:1 oP:i:841 [...]
-simulated.461 0 2 30 255 5M1D34M1D173M * 0 0 AGCGGCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATC 74;I(D5I-&3=9:8897;I)I'<::72I0'74H'6:5;D?54759537H'686306;57I(9I'G'7<9I)G';39<894382I(9I0'7<I(I)I3(485626>9I1(7999:9I(6I1'9F'5;6:5I)I)65I;+&I(875H'I3(I)I(2;I':I.&I(;5:;F':I':I(I(7=6<7;67I(7:8I(8I(I.'8;I:+&G'9I)48 NM:i:2 MD:Z:5^C34^A17 [...]
-simulated.462 16 1 2952 255 159M1D42M1I21M * 0 0 AGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCGAGTGTTCTGTCGCTATTGAGA 69(I765@'G6)I;663385(I6'G86856952'I7<=9;3'/I:'0I8(I7'F'H'I948'I8(I/878><867:473'H;5576'F'I'H6'0I::8'I00:99*I;'H'.I55483437>&.I'I67'/I8;(I&+:I(I48:4877287'H'I(IA7655416687:7'F8<9&-I5<7<3697)4I&*1II<6:96&?766'I==766888=(I [...]
-simulated.463 0 2 95 255 33M1D14M1I21M1I27M1D96M * 0 0 CCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCGTATCTCTGGGTACTACGTTGCCCTCCTCATATTAGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATA I)G'556H'H'548=58466>I'9I3(:6I(I(I,79687478I-&<&74759I)6I,&6I(99795I'&H'68I<,&I(7:5I'I0'I)I)87F&6I)I)6794I)3I)9I(I)::;:48:7I(55;I':I'I2(:4I;+&I)4I':H'I(7<99:I,&I)8<6238;7515:7<I)75I)I3(8448H';9 NM:i:4 MD:Z:33^C62^G96 oR:Z:2 oH:i:1 oP:i:94 oS:A [...]
-simulated.464 16 1 7708 255 38M1I124M1D37M * 0 0 ACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTACTAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGC :'I<8(I68'G+I1578;(I975(I2:6:92'H(I'H:&89'G56;9594(I'H'I89&-I591&*7I7'I(1I(I'I5525'H87459(I78&.I65:7&*1II:9(I&.I::961:9)I5:37;4379'I87;&-I<7'0I&.I764)I6(I7159466'I+I6'H'I785765879',>I7)I689'H(I475;=6= NM:i:2 MD:Z:162^C37 oR:Z:1 oH:i:1 oP:i:77 [...]
-simulated.465 16 1 1818 255 147M1D47M * 0 0 GAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTA ;(I86772(I78'/I(3I'H747',<I75:6)I7(I(I(I@(I5:9'H;<74(I(I7849;63::7<&F)I6::'I'0I9)I:56(I78B<5)I8;'G'I;91(I759(I7:<:6'I:'I6'G663'H498(I169856:<(I79:8*7I66)I=:795385'G:'F9'0I'/I<:572(I98=3'H7'G4574 NM:i:1 MD:Z:147^G47 oR:Z:1 oH:i:1 oP:i:1817 oS:A:R XE:i:1 [...]
-simulated.466 16 1 7674 255 56M1I98M1I3M1I16M1D46M * 0 0 TGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCTAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAAGTCTACAGTATGGCGCGGGATAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAA >'H21&-I:9886(3I=:9(I0:'G8;7=96(I(I(I9:(I74(I(I69;68'I96&6'G4988:7)I(I'I7;8'I4587:2;+I'H'I94'.I98>'-?I7&E&.I'I(I6678'H34885'I>6(2I567;&)1II;5'I'/I868<7<;*I(89:(;84554(I;96&-I7:,I&,I6:5'I8(I;597797(I'0I:(I'I>474:: [...]
+simulated.461 0 2 30 255 5M1D34M1D173M * 0 0 AGCGGCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATC 74;I(D5I-&3=9:8897;I)I'<::72I0'74H'6:5;D?54759537H'686306;57I(9I'G'7<9I)G';39<894382I(9I0'7<I(I)I3(485626>9I1(7999:9I(6I1'9F'5;6:5I)I)65I;+&I(875H'I3(I)I(2;I':I.&I(;5:;F':I':I(I(7=6<7;67I(7:8I(8I(I.'8;I:+&G'9I)48 NM:i:2 MD:Z:5C34A173 [...]
+simulated.462 16 1 2952 255 159M1D42M1I21M * 0 0 AGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCGAGTGTTCTGTCGCTATTGAGA 69(I765@'G6)I;663385(I6'G86856952'I7<=9;3'/I:'0I8(I7'F'H'I948'I8(I/878><867:473'H;5576'F'I'H6'0I::8'I00:99*I;'H'.I55483437>&.I'I67'/I8;(I&+:I(I48:4877287'H'I(IA7655416687:7'F8<9&-I5<7<3697)4I&*1II<6:96&?766'I==766888=(I [...]
+simulated.463 0 2 95 255 33M1D14M1I21M1I27M1D96M * 0 0 CCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCGTATCTCTGGGTACTACGTTGCCCTCCTCATATTAGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATA I)G'556H'H'548=58466>I'9I3(:6I(I(I,79687478I-&<&74759I)6I,&6I(99795I'&H'68I<,&I(7:5I'I0'I)I)87F&6I)I)6794I)3I)9I(I)::;:48:7I(55;I':I'I2(:4I;+&I)4I':H'I(7<99:I,&I)8<6238;7515:7<I)75I)I3(8448H';9 NM:i:4 MD:Z:33C62G96 oR:Z:2 oH:i:1 oP:i:94 oS:A:F [...]
+simulated.464 16 1 7708 255 38M1I124M1D37M * 0 0 ACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTACTAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGC :'I<8(I68'G+I1578;(I975(I2:6:92'H(I'H:&89'G56;9594(I'H'I89&-I591&*7I7'I(1I(I'I5525'H87459(I78&.I65:7&*1II:9(I&.I::961:9)I5:37;4379'I87;&-I<7'0I&.I764)I6(I7159466'I+I6'H'I785765879',>I7)I689'H(I475;=6= NM:i:2 MD:Z:162C37 oR:Z:1 oH:i:1 oP:i:770 [...]
+simulated.465 16 1 1818 255 147M1D47M * 0 0 GAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTA ;(I86772(I78'/I(3I'H747',<I75:6)I7(I(I(I@(I5:9'H;<74(I(I7849;63::7<&F)I6::'I'0I9)I:56(I78B<5)I8;'G'I;91(I759(I7:<:6'I:'I6'G663'H498(I169856:<(I79:8*7I66)I=:795385'G:'F9'0I'/I<:572(I98=3'H7'G4574 NM:i:1 MD:Z:147G47 oR:Z:1 oH:i:1 oP:i:1817 oS:A:R XE:i:1 X [...]
+simulated.466 16 1 7674 255 56M1I98M1I3M1I16M1D46M * 0 0 TGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCTAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAAGTCTACAGTATGGCGCGGGATAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAA >'H21&-I:9886(3I=:9(I0:'G8;7=96(I(I(I9:(I74(I(I69;68'I96&6'G4988:7)I(I'I7;8'I4587:2;+I'H'I94'.I98>'-?I7&E&.I'I(I6678'H34885'I>6(2I567;&)1II;5'I'/I868<7<;*I(89:(;84554(I;96&-I7:,I&,I6:5'I8(I;597797(I'0I:(I'I>474:: [...]
simulated.467 0 1 8034 255 210M * 0 0 ATTTCACGATCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGC <I/'64666895=I/'89I(74:I'I/'I'<5E&6I(2=6I9*&897882I(8595:655;8I'I(85:9=8H'I(I);:6I(9BH'H'4894I(733456674;:79I*65748633736I:+&7>>5D&I0'I(:AI'765I)6I(I0':>57I(97<49I-&4394I*H'76H'66857593H'7G';8I(5657;7I/'I'58I(< NM:i:0 MD:Z:210 oR:Z:1 oH:i:1 oP [...]
-simulated.468 0 1 4966 255 78M1D127M * 0 0 TTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCT I)I);565I(8I(676:6G'48875I'>686H'9997956I/'?I-&87942:1I)988I)8=I(24I3(7II7-(%7I7*I)8:972<7>I(58;I.&6=I(7;7I(46965H'<7I(85;>I(85;44<:65I(67776I)74:H'78I(I(8I0'3I)977476II;/)&2693585:::I)<388I.&1?<I(5I(818/: NM:i:1 MD:Z:78^T127 oR:Z:1 oH:i:1 oP: [...]
+simulated.468 0 1 4966 255 78M1D127M * 0 0 TTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCT I)I);565I(8I(676:6G'48875I'>686H'9997956I/'?I-&87942:1I)988I)8=I(24I3(7II7-(%7I7*I)8:972<7>I(58;I.&6=I(7;7I(46965H'<7I(85;>I(85;44<:65I(67776I)74:H'78I(I(8I0'3I)977476II;/)&2693585:::I)<388I.&1?<I(5I(818/: NM:i:1 MD:Z:78T127 oR:Z:1 oH:i:1 oP:i [...]
simulated.469 16 1 6699 255 124M1I43M * 0 0 GGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATACTAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTG 'G56633(I474::'H:6&*8I<'0I6;8)5I9&*2II6=<'G'F5;61<'I'I4@:7'I69(I6::',=I971(I4)I;6<(I'I'I(I376'H)I5(.AI*I8)I::44&E:97<72(I5/<.5<)I:9567628648:(I'F?'0I7)I5:8:94'G489'H876 NM:i:1 MD:Z:167 oR:Z:1 oH:i:1 oP:i:6698 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.470 0 1 7102 255 173M * 0 0 TCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCA 286I(7<I(=:3:I'9;I,&6I(I.'69I(;9I(I(2I-&I1(885I'9I(@6>:I)38H'5127839:=4I(I/'6I/';959I(I(:7:6:952439A998<5<;46H'7I)597I1(>7;5I)257I'486I(5I)I*3:9I(5783459865;6I9+&6:H'1G'47:6 NM:i:0 MD:Z:173 oR:Z:1 oH:i:1 oP:i:7101 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.471 0 1 6627 255 4M1I106M1I108M * 0 0 CATGTAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTACTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTG 9156.;7I)4773I(I1(6G'88:I)I'F&85>I)I0'4=68462787869I(H';8 at 1<67174854I(2G'I(76<<7I(;5;74I*6?I;+&3I-&=26I-&7II3+&&878I(F'26788G'I'89:5I(26I(726I9+&3:9I)5I'9:6H'I)G'I(252I(I)7I8*&I'9I(7;=2I)268758E&66978I'606;93:;8985I(H'8: NM [...]
simulated.472 16 1 528 255 144M1I38M1I3M1I15M * 0 0 AGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTAGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGTAGGACGACCATAAATGGAC 58(3I8(I'G957'.I<7;478'I9>277'H5(I)I1;:5678;'/I;433:'1I6290<:9)I8:>4457&-I82'/I9(I469666><'G7;7>7675)I66)I49'H478(I:77&)/;II(I7:9'/I7744(I'G:(1I&9966;98766(I8:98565<<8:(I66;:2647>'G:/&6'G&565(I98'0I7)I<6 NM:i:3 MD:Z:200 oR:Z:1 oH:i:1 oP [...]
-simulated.473 16 1 4562 255 38M1I35M1I62M1I4M1D35M1D10M1I3M * 0 0 CGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGTCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTCGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGACGATAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCAAACCTACCT 9664<343(I967676;'I'I6=(I5'0I899:)I8?4&82695587'H&-I689&.I197*I(I=(I;77&E9%4:@<984'I5'0I9'I;577'F=8(I68:4@&-I:65<65(I7'H=1655'.I)I865(I;;(?880,I496(I'G8877:&F8558'0I017;'F<=(I78(/EI&,I'F4()I; NM:i:6 MD:Z:139^A35^C13 oR:Z:1 oH:i:1 oP:i [...]
-simulated.474 16 2 15 255 23M1D51M1I29M1I40M1I65M * 0 0 AACTCGTTTGGACTCAGCGGCCGTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATACGTGGTCCAAGTATTCCTGTCAGAGCGTTACGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCGATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTC (I8676'.I'H787=5;9*I'I9,I;:::3476=(I(I7699;'0I32'G6853'G9;7589587(I8484<55%7:(I8'H)I5;8)I(I;8:8:46588'H<('1I39)I(I'/I:5<8;8:<(3I;57885(I3&-I:)I6<'674)I'F:7'- at I&F679*I'/I(I)I67(I:'0I(I9777(I<)I;'H'F45979:58*I56:5 NM:i:4 MD:Z: [...]
-simulated.475 0 1 1226 255 125M1I22M1D66M * 0 0 GACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTAGGGCGCATCTCCCGAGGCAGGAGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCAT 9=997:I(@<I)4I(I+=3I(55<2I-&8;H'I)6I<,'I'8I(:1::;7I(35I(758I'999I)44=1F'I0';I(7I3(I/'4I/'3I(4I'78<H'I<,'949:6=;7<4I'9H'I(67I(&I0'247<858I/'33I(98D&5I+8I(73I(I)915:87.;=;8;8I):594:6846I;+&3I'8I(59G'8I/'839978I(0I(79 NM:i:2 MD:Z:14 [...]
-simulated.476 0 1 8021 255 26M1D171M * 0 0 ATAGTATTGTTGAATTTCACGATCGCGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAG 84526:I(5I(6I(I/'656:63485I,55I,588F'I,&I)56I(9G'7<6I;+&467883I(843;;4>479F&I):57;33G'I(I'795I'97I(I'6<:;I';735>?5>.735;G'9:4:;859376I8*&7994I(I1'I)78H'96:I(6I(I.&375;I(:8777I0'3427I(I(93E&66554:44 NM:i:1 MD:Z:26^G171 oR:Z:1 oH:i:1 oP:i:8020 oS:A:F XE [...]
+simulated.473 16 1 4562 255 38M1I35M1I62M1I4M1D35M1D10M1I3M * 0 0 CGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGTCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTCGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGACGATAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCAAACCTACCT 9664<343(I967676;'I'I6=(I5'0I899:)I8?4&82695587'H&-I689&.I197*I(I=(I;77&E9%4:@<984'I5'0I9'I;577'F=8(I68:4@&-I:65<65(I7'H=1655'.I)I865(I;;(?880,I496(I'G8877:&F8558'0I017;'F<=(I78(/EI&,I'F4()I; NM:i:6 MD:Z:139A35C13 oR:Z:1 oH:i:1 oP:i:4 [...]
+simulated.474 16 2 15 255 23M1D51M1I29M1I40M1I65M * 0 0 AACTCGTTTGGACTCAGCGGCCGTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATACGTGGTCCAAGTATTCCTGTCAGAGCGTTACGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCGATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTC (I8676'.I'H787=5;9*I'I9,I;:::3476=(I(I7699;'0I32'G6853'G9;7589587(I8484<55%7:(I8'H)I5;8)I(I;8:8:46588'H<('1I39)I(I'/I:5<8;8:<(3I;57885(I3&-I:)I6<'674)I'F:7'- at I&F679*I'/I(I)I67(I:'0I(I9777(I<)I;'H'F45979:58*I56:5 NM:i:4 MD:Z: [...]
+simulated.475 0 1 1226 255 125M1I22M1D66M * 0 0 GACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTAGGGCGCATCTCCCGAGGCAGGAGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCAT 9=997:I(@<I)4I(I+=3I(55<2I-&8;H'I)6I<,'I'8I(:1::;7I(35I(758I'999I)44=1F'I0';I(7I3(I/'4I/'3I(4I'78<H'I<,'949:6=;7<4I'9H'I(67I(&I0'247<858I/'33I(98D&5I+8I(73I(I)915:87.;=;8;8I):594:6846I;+&3I'8I(59G'8I/'839978I(0I(79 NM:i:2 MD:Z:14 [...]
+simulated.476 0 1 8021 255 26M1D171M * 0 0 ATAGTATTGTTGAATTTCACGATCGCGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAG 84526:I(5I(6I(I/'656:63485I,55I,588F'I,&I)56I(9G'7<6I;+&467883I(843;;4>479F&I):57;33G'I(I'795I'97I(I'6<:;I';735>?5>.735;G'9:4:;859376I8*&7994I(I1'I)78H'96:I(6I(I.&375;I(:8777I0'3427I(I(93E&66554:44 NM:i:1 MD:Z:26G171 oR:Z:1 oH:i:1 oP:i:8020 oS:A:F XE: [...]
simulated.477 16 1 795 255 76M1I129M * 0 0 CCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTACCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATG (I:8585797988869755&-I99588468467)I586;?891=62<<<8(I<562437:82'H7'I'G28'G888('H:(I5'H'0I'H67793:)I(I43;;5(I7<6&+:I4(I88957575=699',=I'G<?85(1I'I19'/I8<(I75<;69;<66949:5898;'I48388;&D=9=5;776:<68)I3'/I46(I;< NM:i:1 MD:Z:205 oR:Z:1 oH:i:1 oP:i: [...]
simulated.478 0 1 5291 255 225M * 0 0 CGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACA <I)6747I(I(H'2559H'I'8778788I/'6<I3(9I.&I(I*7I)7E&788;A998I-&8=7694;I8*&;I'9I(674I/'639<247245I(96H'8:83877G':98I.&5=493I*3I(9I2(7I(64II2*&97<<6I';66:6598I':6D&=79687I*57:29;8:7I(I(:57I):I(;;76:6I(I'5I(965::I'697>9>87I);I-&5; NM [...]
-simulated.479 16 1 6487 255 6M1I25M1I31M1I55M1I76M * 0 0 ATGGAGTCGTATGAGTCATTGCGTTCACACTGTAAATCGATCTAACTGATAGTATGAACGCGTACGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGACGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCA 5D(I74%9644646;6<2)I3;7(I479<<59(&.I5889;86(I73747;7766:'I4;;9C6'6'I6)I643989&-I98)I&E6)I:)I5;91(I<796'+5II'0I;)I48972;3&'F'H(I8(I6&F8251<15='I:7:63:6(I=545(I&-I8(I664(I'I&E69;'F'0I6492:377?349<'H5 NM:i:5 MD:Z:0T192 oR:Z:1 oH:i:1 oP:i:64 [...]
+simulated.479 16 1 6487 255 6M1I25M1I31M1I55M1I76M * 0 0 ATGGAGTCGTATGAGTCATTGCGTTCACACTGTAAATCGATCTAACTGATAGTATGAACGCGTACGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGACGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCA 5D(I74%9644646;6<2)I3;7(I479<<59(&.I5889;86(I73747;7766:'I4;;9C6'6'I6)I643989&-I98)I&E6)I:)I5;91(I<796'+5II'0I;)I48972;3&'F'H(I8(I6&F8251<15='I:7:63:6(I=545(I&-I8(I664(I'I&E69;'F'0I6492:377?349<'H5 NM:i:5 MD:Z:T192 oR:Z:1 oH:i:1 oP:i:648 [...]
simulated.480 0 2 86 255 72M1I157M * 0 0 CATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTACATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTAT 5757>:I'7I'I)75/E&G'54:67653;>I)9I2(18I)I'I3(9456-486I0':97;46I)<I1(9I)7&5889I)I(7?I>,'I)386I)I.&I'I(3:H'4I0'I*74::I*;I)6I*I(:6647646I(:67I)6I+I1(8:I>,'I)0H'7I*F&19:73I0'I(86726785;46:56E&3<I(I0'=987I)66H'95I'85;;966858= [...]
-simulated.481 0 1 7296 255 11M1I13M1D60M1D118M * 0 0 ATAGTTATTAGACCCATGTTCGACCGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTG 57/3I(<I)8:'I.&788I(851I(I,:7I.&86<I*4=:9F'3324I'365645:=I(9384B6:;8I0'66:76I)7827673I5)7?4I'6I)895I1(67;886G'I'09874895648597:;I0'9H':78H'4I9+&86;422796F&H'7;I'I'<78=64I.'I.&92;7794I(25I(9I2(I'I'54I'I'< NM:i:3 MD:Z:24^G60^A118 oR:Z:1 [...]
-simulated.482 16 1 8604 255 55M1I22M1D37M1D99M * 0 0 GAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTAGCAGGTCCGTGAAACTTGCCGCATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAAC 6(I7(I889'-?I&-I(I<48=:',=I>77:896'/I:1888=7397868'I8'I*877)I8'I:9:&.I=(I8)I:1C;2:(I'I*I at 85&+:I(I;<(2I'G&.I(I5'I&.I,I'G'/I847;59848'.I2*I76'I48(I'I365'I(3I;886517',<I9=7(I998;592=5<6'I7<'0IB77)I:66777:'G(I89:1=6(I8 NM:i:3 MD [...]
-simulated.483 0 1 2219 255 33M1I77M1D74M * 0 0 CCATCACCAGCGCAGTACTATCGTTGTAAAGATACTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTT F&:84:H'6368;<459:859A;I(36I-&7<@&8G'68::8:4:43>7:6I)I'5=6I1(5E&7?26;4=I(6:46<:7I(9:98E&4I(I<+&9I0'I(99I(I(<566I7*934G':7<I0'8:I/'8I(88465479I(2I)439;71772;8I(:5<7312568:5II4+'4BF'I0'G' NM:i:2 MD:Z:110^A74 oR:Z:1 oH:i:1 oP:i:2218 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.484 0 1 9125 255 63M1I49M1D91M * 0 0 CCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCTACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGA I)9I(I(39H'7H'69I(8/H'8;73I(6>958<743:I(I'I0'8:I*=58H'9I1(77659';846556778699;6E&82883546I.'6I(7:84G'I(I(533I(5I(I,6G'I(7:3I(5I/'I'4H'9:684<6<I(H'73=:I(H'65I(576H'=5<488=I(979I/'697I.&56507I(:I);389I'I(78 NM:i:2 MD:Z:112^T91 oR:Z:1 oH:i:1 o [...]
+simulated.481 0 1 7296 255 11M1I13M1D60M1D118M * 0 0 ATAGTTATTAGACCCATGTTCGACCGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTG 57/3I(<I)8:'I.&788I(851I(I,:7I.&86<I*4=:9F'3324I'365645:=I(9384B6:;8I0'66:76I)7827673I5)7?4I'6I)895I1(67;886G'I'09874895648597:;I0'9H':78H'4I9+&86;422796F&H'7;I'I'<78=64I.'I.&92;7794I(25I(9I2(I'I'54I'I'< NM:i:3 MD:Z:24G60A118 oR:Z:1 oH [...]
+simulated.482 16 1 8604 255 55M1I22M1D37M1D99M * 0 0 GAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTAGCAGGTCCGTGAAACTTGCCGCATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCAAGGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAAC 6(I7(I889'-?I&-I(I<48=:',=I>77:896'/I:1888=7397868'I8'I*877)I8'I:9:&.I=(I8)I:1C;2:(I'I*I at 85&+:I(I;<(2I'G&.I(I5'I&.I,I'G'/I847;59848'.I2*I76'I48(I'I365'I(3I;886517',<I9=7(I998;592=5<6'I7<'0IB77)I:66777:'G(I89:1=6(I8 NM:i:3 MD [...]
+simulated.483 0 1 2219 255 33M1I77M1D74M * 0 0 CCATCACCAGCGCAGTACTATCGTTGTAAAGATACTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTT F&:84:H'6368;<459:859A;I(36I-&7<@&8G'68::8:4:43>7:6I)I'5=6I1(5E&7?26;4=I(6:46<:7I(9:98E&4I(I<+&9I0'I(99I(I(<566I7*934G':7<I0'8:I/'8I(88465479I(2I)439;71772;8I(:5<7312568:5II4+'4BF'I0'G' NM:i:2 MD:Z:110A74 oR:Z:1 oH:i:1 oP:i:2218 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.484 0 1 9125 255 63M1I49M1D91M * 0 0 CCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCTACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTGTTGGCTATTATTTAATAAGATCTAGAGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGA I)9I(I(39H'7H'69I(8/H'8;73I(6>958<743:I(I'I0'8:I*=58H'9I1(77659';846556778699;6E&82883546I.'6I(7:84G'I(I(533I(5I(I,6G'I(7:3I(5I/'I'4H'9:684<6<I(H'73=:I(H'65I(576H'=5<488=I(979I/'697I.&56507I(:I);389I'I(78 NM:i:2 MD:Z:112T91 oR:Z:1 oH:i:1 oP [...]
simulated.485 0 1 900 255 200M * 0 0 TCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGC 8327I=,'6I(95277;958788I?-'E&7795I0'I(6:I0'97H'>859<52;:945;6694<;G'/2:476I(;6713;=96729I(5I-&;:I);I'I0':76;6I)I-&D&6I1(8657I'8I1(763598I.'7848<68I(6;I(9I(5658=I(I)>;867:5H'8 at I<+&43I(<6766I/'8I(35I1(7 NM:i:0 MD:Z:200 oR:Z:1 oH:i:1 oP:i:899 oS:A:F XE:i:0 [...]
-simulated.486 0 1 975 255 42M1D78M1D26M1I54M * 0 0 TATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGCATTAGCTGCGTACATCGGTTTGCGACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAG 737<8776:5:58F&9I/'66I(5G'I-&:8768E&I.&I)9I,5794I+2I0'8:6643I,&68<858;I*54I(1I)5;75<F'I(94839:6F'77I?-'36I(99764I.&9I(::I,94I(B:566<:97@::8H'I0'94%<;65;I)87I)9?;34?98I>,'I(68:88:788:;54F'6F&79541<75:56 NM:i:3 MD:Z:42^C78^G80 oR:Z:1 oH:i:1 [...]
-simulated.487 16 1 4487 255 94M1D103M * 0 0 ATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACAT <7'.I4'0I(1I'I7',>I2785'I5(I;83;995293'/I<'H35(I'H73468;'G84'H;72:8844'1I8(I757722:(I;93:;<2(ID9='I6'/I;:38'G:68=4>6:176'I(1I61<(1I4;2'G(I<'I:87)I795;6695(I5'/I8'G8786'I:6)I89776'0I<997;6'I6+I;7685 NM:i:1 MD:Z:94^G103 oR:Z:1 oH:i:1 oP:i:4486 oS:A:R X [...]
-simulated.488 16 1 6006 255 138M1D36M1I15M * 0 0 TTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCTTTCTATCTCTTGTCATTCTACCACAGGGTGCAGTATCGATGTACATCG (I4676554',>I3'/I6&).:II7;<146417830(I(I1='H59;'/I356476<7679:856'I487:7;'.I3)I;86;>47(I:(I39;(I2893',6II4&+9I586(I489'1I+I8438466>9>78(I5*7I(3I<979765'I86;9)I2%9,I77:'0I942:(85245799<787657 NM:i:4 MD:Z:138^C22A0C27 oR:Z:1 oH:i:1 oP:i:6005 oS:A:R XE:i: [...]
-simulated.489 0 2 159 255 3M1I56M1D18M1D4M1I106M * 0 0 ATAGTTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTCGTCCTGGTTTGTCCCCACAACTCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTA 979'I)I'95I:+&I(;86I)I/'I)I(55F'7I/'H'9882H'5I(=I*F'7576<753D79;I(4G'I-&6;I=,'C<I'(:H'H'56698I.&I'92:69698595<:8I(75I)I-&328;I)47I(87I)5;69;887:4776=563I);3=4309305959I/'H'I'95<7558G'I)I)84 NM:i:4 MD:Z:59^T18^A110 oR:Z:2 oH:i:1 oP:i:158 oS:A:F XE: [...]
-simulated.490 0 1 3893 255 60M1I62M1D45M1D48M * 0 0 AAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCGATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTT I.'9762239 at I(I'5I):837;:895449I1':559G'1957H'88I.'::I(I/'=68'<85765H'I(8::6<9<6;7723I4)8I'6:G'<338I)7939773I(>H'83I':7<7957I,I=,'6I)8776:9759I(37I/'I>,'5A958;I/'I(9F&I(B9:691579I0'I(7463I/'932I(I(I(I'65:7F&:6978F'6I' NM:i:3 [...]
-simulated.491 0 1 7198 255 16M1D195M * 0 0 GCGCGTGTAGTCTCCTGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTG 3;:5878:3978<I(5D496I0'<6;4H'45;I'6:<I(:H'I'989I(6:67379<49<=I:+&98G'8I(98=94563H'H'59I)50I8*&I'85693I*4H'76I.&74AI(76:G'I0'85I2(764H':683I):45:I(8:346786I(7;7946755I1(79374I(5995578I9+&:>7I'6I'419I0';69977I'H'6 NM:i:1 MD:Z:16^G195 oR:Z: [...]
-simulated.492 0 1 3563 255 27M1D21M1D103M1I16M1I20M * 0 0 GTTCATTGCTCGATTAATTGGTATTCGTTGTGATTCCGGCCTGAGATCGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGTATGATTAACCACAAACGACCTTTGGGTTGCCTACCCG :I)58I(8<>884G'I(I'I(69I(<?I,2655I(I(I(G'=8;::38I+5H'6:I)58I'=I;+&:62895I'89:7E&87I)769:759I):4;I(9I(I9*&61I)3I(;85G'I-&I at -'65697I(I(2:7I(6:365;9I(9:G'&5;79I(G'I)2:I,&4'6H'I2(I/'I)6F'<;I/'5 NM:i:4 MD:Z:27^T21^G139 oR:Z:1 oH:i:1 oP:i:3562 oS:A:F [...]
-simulated.493 0 1 7021 255 104M1D100M * 0 0 TGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATC 9I)H'9I-&I'85I(55I9*&I)7::34821;87::I):7IG0)%I-&;I(7657=8I(4378I)78976I(5I(172956>98H'4;F'88:6I(38I.'7F'I,99G'9=I(I(=I0'I/'797I(9I(:7<8G'2:I(8898949567I'I/'4I1(9478I)I(99536:887:;57868:6397I):G'697I.&;<98 NM:i:1 MD:Z:104^T100 oR:Z:1 oH:i:1 oP: [...]
+simulated.486 0 1 975 255 42M1D78M1D26M1I54M * 0 0 TATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGCATTAGCTGCGTACATCGGTTTGCGACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAG 737<8776:5:58F&9I/'66I(5G'I-&:8768E&I.&I)9I,5794I+2I0'8:6643I,&68<858;I*54I(1I)5;75<F'I(94839:6F'77I?-'36I(99764I.&9I(::I,94I(B:566<:97@::8H'I0'94%<;65;I)87I)9?;34?98I>,'I(68:88:788:;54F'6F&79541<75:56 NM:i:3 MD:Z:42C78G80 oR:Z:1 oH:i:1 oP [...]
+simulated.487 16 1 4487 255 94M1D103M * 0 0 ATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACAT <7'.I4'0I(1I'I7',>I2785'I5(I;83;995293'/I<'H35(I'H73468;'G84'H;72:8844'1I8(I757722:(I;93:;<2(ID9='I6'/I;:38'G:68=4>6:176'I(1I61<(1I4;2'G(I<'I:87)I795;6695(I5'/I8'G8786'I:6)I89776'0I<997;6'I6+I;7685 NM:i:1 MD:Z:94G103 oR:Z:1 oH:i:1 oP:i:4486 oS:A:R XE [...]
+simulated.488 16 1 6006 255 138M1D36M1I15M * 0 0 TTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCTTTCTATCTCTTGTCATTCTACCACAGGGTGCAGTATCGATGTACATCG (I4676554',>I3'/I6&).:II7;<146417830(I(I1='H59;'/I356476<7679:856'I487:7;'.I3)I;86;>47(I:(I39;(I2893',6II4&+9I586(I489'1I+I8438466>9>78(I5*7I(3I<979765'I86;9)I2%9,I77:'0I942:(85245799<787657 NM:i:4 MD:Z:138C22AC27 oR:Z:1 oH:i:1 oP:i:6005 oS:A:R XE:i:4 [...]
+simulated.489 0 2 159 255 3M1I56M1D18M1D4M1I106M * 0 0 ATAGTTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTCGTCCTGGTTTGTCCCCACAACTCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTA 979'I)I'95I:+&I(;86I)I/'I)I(55F'7I/'H'9882H'5I(=I*F'7576<753D79;I(4G'I-&6;I=,'C<I'(:H'H'56698I.&I'92:69698595<:8I(75I)I-&328;I)47I(87I)5;69;887:4776=563I);3=4309305959I/'H'I'95<7558G'I)I)84 NM:i:4 MD:Z:59T18A110 oR:Z:2 oH:i:1 oP:i:158 oS:A:F XE:i: [...]
+simulated.490 0 1 3893 255 60M1I62M1D45M1D48M * 0 0 AAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCGATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTT I.'9762239 at I(I'5I):837;:895449I1':559G'1957H'88I.'::I(I/'=68'<85765H'I(8::6<9<6;7723I4)8I'6:G'<338I)7939773I(>H'83I':7<7957I,I=,'6I)8776:9759I(37I/'I>,'5A958;I/'I(9F&I(B9:691579I0'I(7463I/'932I(I(I(I'65:7F&:6978F'6I' NM:i:3 [...]
+simulated.491 0 1 7198 255 16M1D195M * 0 0 GCGCGTGTAGTCTCCTGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTG 3;:5878:3978<I(5D496I0'<6;4H'45;I'6:<I(:H'I'989I(6:67379<49<=I:+&98G'8I(98=94563H'H'59I)50I8*&I'85693I*4H'76I.&74AI(76:G'I0'85I2(764H':683I):45:I(8:346786I(7;7946755I1(79374I(5995578I9+&:>7I'6I'419I0';69977I'H'6 NM:i:1 MD:Z:16G195 oR:Z:1 [...]
+simulated.492 0 1 3563 255 27M1D21M1D103M1I16M1I20M * 0 0 GTTCATTGCTCGATTAATTGGTATTCGTTGTGATTCCGGCCTGAGATCGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGTATGATTAACCACAAACGACCTTTGGGTTGCCTACCCG :I)58I(8<>884G'I(I'I(69I(<?I,2655I(I(I(G'=8;::38I+5H'6:I)58I'=I;+&:62895I'89:7E&87I)769:759I):4;I(9I(I9*&61I)3I(;85G'I-&I at -'65697I(I(2:7I(6:365;9I(9:G'&5;79I(G'I)2:I,&4'6H'I2(I/'I)6F'<;I/'5 NM:i:4 MD:Z:27T21G139 oR:Z:1 oH:i:1 oP:i:3562 oS:A:F X [...]
+simulated.493 0 1 7021 255 104M1D100M * 0 0 TGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATC 9I)H'9I-&I'85I(55I9*&I)7::34821;87::I):7IG0)%I-&;I(7657=8I(4378I)78976I(5I(172956>98H'4;F'88:6I(38I.'7F'I,99G'9=I(I(=I0'I/'797I(9I(:7<8G'2:I(8898949567I'I/'4I1(9478I)I(99536:887:;57868:6397I):G'697I.&;<98 NM:i:1 MD:Z:104T100 oR:Z:1 oH:i:1 oP:i [...]
simulated.494 16 1 1834 255 193M * 0 0 CCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCT 'I(I177&+:I8799)I?(I'I(I<'I:44'I;8:='G'F<<9;3456A7;'H(I:31(I'1I9(I:<='I:9:43(I69(I(I=<5)I<59(I8999;)I8'I=(I9/:(I844)I;6=5=7;6'G;86=&+<I86'I85?<8;<3'I7'H7&-I'/I777>6(I9.<:(I>(I50:;;&*2II71(I1796 NM:i:0 MD:Z:193 oR:Z:1 oH:i:1 oP:i:1833 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.495 16 1 8391 255 47M1I79M1D6M1I64M * 0 0 GCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCGACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGTGGCTCGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGTCTTC 5/39753;)I:;)I553(I7>4:5494:5'I7674(I'I;6)I6768&<)I6;'H86:65)I7:6'H96768'I'I87>48;'I)I(3I:85(2I99)I67)I46389687;47956*I3589(I:;D4)I1:&'H4&.I7<86'I2(I3;9:486)I'G84;<3(I'H'+4II<4A7&+;I56'F22;7'0I&6+I: NM:i:5 MD:Z:126^G65C0T3 oR:Z:1 oH:i:1 oP:i [...]
+simulated.495 16 1 8391 255 47M1I79M1D6M1I64M * 0 0 GCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCGACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGTGGCTCGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGTCTTC 5/39753;)I:;)I553(I7>4:5494:5'I7674(I'I;6)I6768&<)I6;'H86:65)I7:6'H96768'I'I87>48;'I)I(3I:85(2I99)I67)I46389687;47956*I3589(I:;D4)I1:&'H4&.I7<86'I2(I3;9:486)I'G84;<3(I'H'+4II<4A7&+;I56'F22;7'0I&6+I: NM:i:5 MD:Z:126G65CT3 oR:Z:1 oH:i:1 oP:i:8 [...]
simulated.496 0 1 5024 255 199M * 0 0 TAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATC 1I(74I(43I1'5II</)&7I<+&I':992879=I):73I/'67I(785I(9378=I)94I(669:I)859826829I)44695E&:28I(64G'I(7I/'3I)876887II;/)&=?9<981989H':36?I0'5;9I)6I(7<@5I(3=9:I;+&7I(I1'<38H'635I*I)87I'E&I.&758I0'I'G'<;99< NM:i:0 MD:Z:199 oR:Z:1 oH:i:1 oP:i:5023 oS:A:F XE:i:0 [...]
-simulated.497 0 1 6839 255 84M1D47M1I67M1D13M * 0 0 CCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTAGTTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGAACGTGCACG I)F&0I,&6G'761953I)669I(98I/'6:64G'I'I,&47I'F'7H'7I(8:H'326G'87H'7I'H'6777:7I'15:I/'I,H'9I-&64I0'<564:4I(9<@646<I(9<I-&?I'778::7778&I):I'1766I(I)69@:8<:8I(75:7>I0'53H'5A5F'5H':I(74<9:I'I(>I0'I);8I(36I7*I(<7564<93 NM:i:3 MD:Z:84 [...]
-simulated.498 0 1 8814 255 2M1D15M1I22M1D134M1D8M1I10M1I16M * 0 0 TGACAGTGCTACAAGCCGAATGGAAAAAGATTCATAGCAAGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTGCCGAACGCTCATGCGTACTTCGCGGGAGATTAT <8D97/296657I+<I(&I'>I(IG0)%95I(8;86>7G'I+9I(I0';>4I(:8798I(69I(9I1(I0'I'583699444H'9H'77I(88774<888765I<,'77I'I'I(I(H'4;:869:55G'4I(I(72F';I*28?D&G'96I(7I2(56689I(4365>078;1I,6I(5H'&469925:;3=&=F'8:7I4)607I(46 NM:i [...]
+simulated.497 0 1 6839 255 84M1D47M1I67M1D13M * 0 0 CCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTAGTTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGAACGTGCACG I)F&0I,&6G'761953I)669I(98I/'6:64G'I'I,&47I'F'7H'7I(8:H'326G'87H'7I'H'6777:7I'15:I/'I,H'9I-&64I0'<564:4I(9<@646<I(9<I-&?I'778::7778&I):I'1766I(I)69@:8<:8I(75:7>I0'53H'5A5F'5H':I(74<9:I'I(>I0'I);8I(36I7*I(<7564<93 NM:i:3 MD:Z:84 [...]
+simulated.498 0 1 8814 255 2M1D15M1I22M1D134M1D8M1I10M1I16M * 0 0 TGACAGTGCTACAAGCCGAATGGAAAAAGATTCATAGCAAGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTGCCGAACGCTCATGCGTACTTCGCGGGAGATTAT <8D97/296657I+<I(&I'>I(IG0)%95I(8;86>7G'I+9I(I0';>4I(:8798I(69I(9I1(I0'I'583699444H'9H'77I(88774<888765I<,'77I'I'I(I(H'4;:869:55G'4I(I(72F';I*28?D&G'96I(7I2(56689I(4365>078;1I,6I(5H'&469925:;3=&=F'8:7I4)607I(46 NM:i [...]
simulated.499 16 1 2944 255 158M1I26M1I27M * 0 0 GCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATCGTCTTCCAATTATCGTATAGCGCAAGTCGCCCACATCGCTGGGCCCCCAGATCA 8<77;'0I28'H76=;'H7(I;949747)I9'I?;8956;9'H;88652'0I9&-I8(I7)I'I'I53@(I3)I6589834;59547)I78173(I(I&E7&.I696(I871=7(I8)I(1I684:572;1'.I(I57'0I77)I',<I*I:886595&657*I'F'G&E968375648676(I3359(3I94:;;377'1I&)1II7:7578 NM:i:2 MD:Z:211 [...]
simulated.500 16 1 1867 255 146M1I46M * 0 0 AGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTACGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATA 79:(I)I:34443=;<:7'G)I;88(I&.I6(I47='I7876<(I8@)I'I;;;'I956(I:>=6:(I5(I9&F562(I762*I:<79:847)I:98;&+:I65'F:69957:8'H;'HC'/I&-I<:;63(I:48<'H9)I652217&*1II98)I9:676'G6956:8<@<7 at 8'H778:5(1I299'I79 NM:i:1 MD:Z:192 oR:Z:1 oH:i:1 oP:i:1866 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.501 16 1 7651 255 42M1I144M1D9M * 0 0 CCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATCGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGCGCGGGAT &F7'0I'H;36571288?4(I976(I74'0I>:67:&.I9:6&)I89'H759796(I'H)I47)I2>)I(I88227&E8:4(I7;=34:'G'I(I;9:'H09;6:64(I(I(I9:'/I337&+;I9'G'.I'H'H5167&F;9266(I69'.I8<3:&*2II9>'H'/I9>78:38'H:549:46<7D774&.I<4 NM:i:2 MD:Z:186^G9 oR:Z:1 oH:i:1 oP:i:7650 oS:A:R [...]
-simulated.502 16 1 8888 255 150M1D19M1I26M * 0 0 GTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGATGATTGCATGTGCGTTGCAACAACCACTACAAAGGAAGCCTCGAG :44;958;7'H6'I>8)I938;6<876656(.BI at 6'F'G'I'H(I8;5578466&F8(I)I31(I7'I87;'G(I:8'G<(2I8877:'I;353:686::'/I6(I>'I:;7877897<7(I839'.I:77)I664890'H at 67(I(I8D;5:)I<8=85;465)I79&E5(I)I;6998'/I'I'I4(I;9879 NM:i:2 MD:Z:150^A45 oR:Z:1 oH:i:1 oP:i:8887 oS:A: [...]
+simulated.501 16 1 7651 255 42M1I144M1D9M * 0 0 CCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATCGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGCGCGGGAT &F7'0I'H;36571288?4(I976(I74'0I>:67:&.I9:6&)I89'H759796(I'H)I47)I2>)I(I88227&E8:4(I7;=34:'G'I(I;9:'H09;6:64(I(I(I9:'/I337&+;I9'G'.I'H'H5167&F;9266(I69'.I8<3:&*2II9>'H'/I9>78:38'H:549:46<7D774&.I<4 NM:i:2 MD:Z:186G9 oR:Z:1 oH:i:1 oP:i:7650 oS:A:R X [...]
+simulated.502 16 1 8888 255 150M1D19M1I26M * 0 0 GTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGATGATTGCATGTGCGTTGCAACAACCACTACAAAGGAAGCCTCGAG :44;958;7'H6'I>8)I938;6<876656(.BI at 6'F'G'I'H(I8;5578466&F8(I)I31(I7'I87;'G(I:8'G<(2I8877:'I;353:686::'/I6(I>'I:;7877897<7(I839'.I:77)I664890'H at 67(I(I8D;5:)I<8=85;465)I79&E5(I)I;6998'/I'I'I4(I;9879 NM:i:2 MD:Z:150A45 oR:Z:1 oH:i:1 oP:i:8887 oS:A:R [...]
simulated.503 16 1 8299 255 62M1I61M1I67M * 0 0 GCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACCGTGTTAATCTTTAGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTCGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGG 8'G;7&F;'H9:'.I485)I:'G:=477978896'I744'/I(I<89;(I398)I'I=8'.I'63<'H4;:47=<'G855(I8879552;42899764566&E<6'G:7<*I129::64969(I%3576)I'G48'H8;=8:)I77'H88563)I<8:(I5:526(I'I378::6(I'H'/I::8'.I>;)I NM:i:2 MD:Z:190 oR:Z:1 oH:i:1 oP:i:8298 oS:A:R XE:i:2 XS:i [...]
simulated.504 0 1 4422 255 67M1I112M * 0 0 GAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATACCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGC 677;8I'I(I(62I/'7;54F'64I(26238I(7II2*&25:767I(87667=347I'I'I(77649&I.'9I.'I/'I)=I;+&5557I(7I)5474<6:785I-&=H'39I(H'164768I(5:G'8635:3::I1(5H'91466?7G'4981186I(I(50I)6I/'9597I(3756 NM:i:1 MD:Z:179 oR:Z:1 oH:i:1 oP:i:4421 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.505 0 1 3174 255 203M * 0 0 AACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTT I'47656I(=8I'786I)I3(59I*I'7I(945I/'3;I.&I)I(I(F&7:I:+&<797I(II0)&;G'85I-&33<I>,'I)376I)<I(I9*&688I(;3815I'I(<E&9I(65I-&6-I*3483;87;28:I(<G'E&4I8*&:I(E&5698I(7;I(I(<79I.&:673I;+&9I(;;I)I(705:7I<+&G'I):I) NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:3173 oS:A:F [...]
-simulated.506 0 1 8172 255 186M1D13M * 0 0 GGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACCGTGTTAATCTTGTCGGTCACGA I(;7;I'6I(I-&8737I(876:=I.'<688I*I(7:H'69997963I)5G'76I(:785:5I3(H'<6I(7359?I(6I(I(;4659:I'9;716G'59I(5<>48947;7I*I(I)I.'H'98784I)76I(6I)76I3(3::G'5H'6987969<645I*@76I0'I'9737E&:48H'I(68I,828H':69988 NM:i:1 MD:Z:186^T13 oR:Z:1 oH:i:1 oP:i:8171 oS:A: [...]
-simulated.507 0 1 8843 255 177M1D36M * 0 0 ATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATATGATGAATGTAATTGAATGATTGCATGTGCGTTG 5I(83466:I(I3(:E&I.&89;H'5;577I'66I(<I1'I,&I)36<464765I(4I(76I)3688/964;<54I9+&:2I(I(I(I(I(6;8487855I'4H'I)7:H'8I*:<7I(I(84I)2I0'36<:8I*5=18=9568>I2(5I)<I'3669779<857F&663I0'8;6D7564<6I);17F'I(5H'649I(;<684698/G'8 NM:i:1 MD:Z:177^T36 o [...]
+simulated.506 0 1 8172 255 186M1D13M * 0 0 GGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACCGTGTTAATCTTGTCGGTCACGA I(;7;I'6I(I-&8737I(876:=I.'<688I*I(7:H'69997963I)5G'76I(:785:5I3(H'<6I(7359?I(6I(I(;4659:I'9;716G'59I(5<>48947;7I*I(I)I.'H'98784I)76I(6I)76I3(3::G'5H'6987969<645I*@76I0'I'9737E&:48H'I(68I,828H':69988 NM:i:1 MD:Z:186T13 oR:Z:1 oH:i:1 oP:i:8171 oS:A:F [...]
+simulated.507 0 1 8843 255 177M1D36M * 0 0 ATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATATGATGAATGTAATTGAATGATTGCATGTGCGTTG 5I(83466:I(I3(:E&I.&89;H'5;577I'66I(<I1'I,&I)36<464765I(4I(76I)3688/964;<54I9+&:2I(I(I(I(I(6;8487855I'4H'I)7:H'8I*:<7I(I(84I)2I0'36<:8I*5=18=9568>I2(5I)<I'3669779<857F&663I0'8;6D7564<6I);17F'I(5H'649I(;<684698/G'8 NM:i:1 MD:Z:177T36 oR [...]
simulated.508 0 1 2166 255 55M1I98M1I29M * 0 0 ATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCGATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAACGATTAACGTCAAAAGTCTTCTACCCACGG 3I0'I(9854G'59:479I)72I(9939;I)669I/'I(:6II9.(&9<96I8*&%086<I'/:;7<994=366494I(29I-&7:89I)755355:22774<9I)H'9<3I-&5I)2:<<4:7I(77<7456I'13;4F'<I(I;+&2I-&I)&89I(I(6695I:+&477I)4;;I/'88I( NM:i:2 MD:Z:182 oR:Z:1 oH:i:1 oP:i:2165 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.509 0 1 6871 255 5M1D19M1I75M1D13M1I5M1I57M * 0 0 CTTAACCTACCGGCAAGCCTACCAGTCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATCAATCTAGGTTACGCAGAGTGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGT 5I(I(I,79I(I'7I)9I*65I(3':/I)55I(6I'I)876948I(86=I0'I1'H'8I/'6;I0'7637:7I)6446416G'26I2(5I)87:48<959D;I(4769I'I);%::89C'97I'497:7I0'69I(384I(;I(>I(96778I'G'9I0'I'98H';6I:+&G'648 NM:i:5 MD:Z:5^C94^T75 oR:Z:1 oH:i:1 oP:i:6870 oS:A:F XE:i:5 XS:i:0 XI:i:0
+simulated.509 0 1 6871 255 5M1D19M1I75M1D13M1I5M1I57M * 0 0 CTTAACCTACCGGCAAGCCTACCAGTCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATCAATCTAGGTTACGCAGAGTGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGT 5I(I(I,79I(I'7I)9I*65I(3':/I)55I(6I'I)876948I(86=I0'I1'H'8I/'6;I0'7637:7I)6446416G'26I2(5I)87:48<959D;I(4769I'I);%::89C'97I'497:7I0'69I(384I(;I(>I(96778I'G'9I0'I'98H';6I:+&G'648 NM:i:5 MD:Z:5C94T75 oR:Z:1 oH:i:1 oP:i:6870 oS:A:F XE:i:5 XS:i:0 XI:i:0
simulated.510 0 1 952 255 218M * 0 0 AGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACG 98:=:6529<4256I)77>@37I'564;7<<95:88I(8I1(85G'8I)I1(:8539I(I2(H'=I,&6:55I)1I-&;48:97I.'8976885H'39I(;I(:597;I)I(:988596I'95I?-':9I':47<6I.'<I(81I-&97I(8=6;:49584;58I(I.&=835884G'>8I(71783965I>,'I(876<7:7440669I)5I(6=4; NM:i:0 MD:Z:218 o [...]
simulated.511 16 1 5022 255 151M1I59M * 0 0 AGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTACACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCC :=9(I8=(I95&-I9&).:II:&+:I)I:5665:7:'I886&.I36(I7=<(I=579:(I:2)I7751'I8496;68<6)I97;98'I1;1(I9:&E'H5'/I9(I883764%(-8II5:738?7365)I554;'.I757'H6(I7875)I*87>;',>I8'I'0I937'I5=4)I)I36(I'I&-I>84(1I'H(I287998374543(I NM:i:1 MD:Z:210 oR:Z:1 o [...]
simulated.512 0 1 5781 255 61M1I98M1I52M * 0 0 GGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATAGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTACCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGT H'7:I'7486:9643I(I'79I)I'7I)795C:4727;I':9>7I(;947>:;4687I(65&788 at I)69I)I)566G';8:799;;76877I(9;I'6H'48I(8I-&82I'I/'98I0'6568F&876;478I.&I(I8*&67I/'><7I:+&8I(I(&I)I'517:79469I'4686I'6I)5I(9I(9I0'65I'G';57778I(679< NM:i:2 MD:Z:211 o [...]
-simulated.513 0 1 148 255 91M1D24M1I13M1I15M1I30M1I17M1I15M * 0 0 CGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGTAGCCGGCACCGGCCCGGCGTAACAGCGGGAGTAGCCATACACTTCTGGTCAATCGCTTATTAAGGAATTTTCGACAATGTCCCGATCTATAATCTGGTACGCACAAAATCATC 99I(I);:I0'<:5957I'I-&78I(687654I+81=9I'7I'::I*I)99I'I(2G'578437673I(3I(1H'I(580G'I)<8876I'II6,(754I'H'2<I'I(I2(I*8'9I'9:38I/'577)1I(:<4@<<I*73I(&3I'8587G'8I(G'I(I(I;+&=:77I)47'I/'98=>886I)<5:H'%966261I<,'46599 NM:i [...]
-simulated.514 16 2 49 255 43M1D135M1D15M * 0 0 AGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAACAATC 4)I'I65764'.I54(I9657'I57=335:85(I6986A<567D8(I(I598'I(I5>:78<5398(I2&.I;>(I(I'0I:5:74497'1I:7:443(I4&-I8'H73:;8)I)I<9&+9I'I;2:(I'0I'F'I79(I9'1I(I66:;(I6&E5(I'I6:826847'G976'I6(I,I:7',=I'H:'I89 NM:i:2 MD:Z:43^G135^T15 oR:Z:2 oH:i:1 oP:i:48 oS:A:R XE:i [...]
+simulated.513 0 1 148 255 91M1D24M1I13M1I15M1I30M1I17M1I15M * 0 0 CGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGTAGCCGGCACCGGCCCGGCGTAACAGCGGGAGTAGCCATACACTTCTGGTCAATCGCTTATTAAGGAATTTTCGACAATGTCCCGATCTATAATCTGGTACGCACAAAATCATC 99I(I);:I0'<:5957I'I-&78I(687654I+81=9I'7I'::I*I)99I'I(2G'578437673I(3I(1H'I(580G'I)<8876I'II6,(754I'H'2<I'I(I2(I*8'9I'9:38I/'577)1I(:<4@<<I*73I(&3I'8587G'8I(G'I(I(I;+&=:77I)47'I/'98=>886I)<5:H'%966261I<,'46599 NM:i [...]
+simulated.514 16 2 49 255 43M1D135M1D15M * 0 0 AGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAACAATC 4)I'I65764'.I54(I9657'I57=335:85(I6986A<567D8(I(I598'I(I5>:78<5398(I2&.I;>(I(I'0I:5:74497'1I:7:443(I4&-I8'H73:;8)I)I<9&+9I'I;2:(I'0I'F'I79(I9'1I(I66:;(I6&E5(I'I6:826847'G976'I6(I,I:7',=I'H:'I89 NM:i:2 MD:Z:43G135T15 oR:Z:2 oH:i:1 oP:i:48 oS:A:R XE:i:2 [...]
simulated.515 16 1 2970 255 53M1I113M * 0 0 CTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGTAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACA ;4'I7(I984<7=<1(I><<671'/I6'/I7'G6(I(I&E5:2(I3(I0:?87&3987?792&E419:9(I'F'I5'0I9:6)I64:;6'I5(I(1I4177<?3:5'.I)I:5'.I66*I&+;I(I<4799:6<67(I(I(I'I033?546;95;3'H<69&-I:44 NM:i:1 MD:Z:166 oR:Z:1 oH:i:1 oP:i:2969 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.516 16 1 6620 255 88M1I99M * 0 0 CGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAACGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCG ::54'I89=:635'G:535'G&.I<'I238)I'I'H3<8'I&.I533;37=45867:'I'I95=6=778964=;'H7)I'H4;87:'F&78:38(I57&+;I8'0I<=6(1I:'+3II6><)I(I5:8;8(I(I9656(I;6)I4:7&+:I99:(I7)I?16)I'H'G(I253'I(I9'- at I,I7)I5 NM:i:1 MD:Z:187 oR:Z:1 oH:i:1 oP:i:6619 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.517 0 1 8549 255 2M1I15M1I51M1D129M * 0 0 GACTCATCCGGCCCCCGCGTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAG ;4%>?77I(H'II2*&5;(;;I8*&79I(:669I0';I0'4H'4I'8725I*:I)864I)8I(8=9I=,'I+I'572:7I<,'4646:69I1(::35763776845I(5I)6:5I(7G'897I1(7I)5I(::I(778H'I(I'577I:+&I)66I1'I(I.&I(4I(I.'I.&I(I3(5<4;:4196I/':I(66G'6 NM:i:3 MD:Z:68^C129 oR:Z:1 oH:i:1 oP:i:8 [...]
+simulated.517 0 1 8549 255 2M1I15M1I51M1D129M * 0 0 GACTCATCCGGCCCCCGCGTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAG ;4%>?77I(H'II2*&5;(;;I8*&79I(:669I0';I0'4H'4I'8725I*:I)864I)8I(8=9I=,'I+I'572:7I<,'4646:69I1(::35763776845I(5I)6:5I(7G'897I1(7I)5I(::I(778H'I(I'577I:+&I)66I1'I(I.&I(4I(I.'I.&I(I3(5<4;:4196I/':I(66G'6 NM:i:3 MD:Z:68C129 oR:Z:1 oH:i:1 oP:i:85 [...]
simulated.518 16 1 5968 255 70M1I30M1I92M * 0 0 AACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGTACATCCGGCGTTATGAAACTGTACAGTACAGTACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTT (I5'.I2;(I(I;=:96;)I87683:9;'/I9(I)I9'0I69:76<7&+;I6&,I7%(-8II61:::7=7'5;<<(I)I9;'H4<4&-I7989?3759>4<);56)I6:8678&.I:&E:;6::74*I6'I8=4'H;6;8'+4II7',>I496'H987'/I'I64453<3;3>87'H:',=I&.I7;4<668'H NM:i:2 MD:Z:192 oR:Z:1 oH:i:1 oP:i:5967 oS:A:R XE:i:2 [...]
simulated.519 0 1 7452 255 145M1I40M * 0 0 GGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTACTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCG I'26I)I*:7559?I2(I0'686D775I'6>I)6I-&H'I(97I(H'6:77<;579I/';667I(I/':6I0'G'I-&8;G'I(H'H'5:2587I(17H'I'548?I'96675H'7I(2H'I(457I(366I'82I)9I'I)5I('899999<775I(;967775;I(5594F&>I(H'99362>7 NM:i:1 MD:Z:185 oR:Z:1 oH:i:1 oP:i:7451 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.520 0 1 1168 255 15M1I35M1I140M * 0 0 CGTATACAGACTAGCGTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGACCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCA 9:57899485:;897'56I:+&F&7686535:I)47I)8I(8;I:+&78:6%I(628I'8387=<6I(37I'6I(H';8I(81<8I1'57H'I(4I>,'I(9F'/<8;=9I(93I(748I(733I(4<89G'I1'7G'3I/'I.'1I/'7I(6I';47G'I:+&12;;9=8457H'?I(I(<5H'I/'9:64 NM:i:2 MD:Z:190 oR:Z:1 oH:i:1 oP:i:1167 oS:A:F XE:i:2 XS:i [...]
-simulated.521 16 2 5 255 87M1I72M1D27M * 0 0 AACCATTTATAACTCGTTTGGACTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGCGTTTTAACTGTCCGGTTAAGAGGTG (I'H3'/I-5(I9884'.I)I:487659(I'I5'/I27;7?5:94(I&E77581'1I73(I8:13'H?36557;:8(I9873<449:&-I7(I(I9;4)I(I<:77883569(I7'0I95)I'H&-I797::938'0I:<6685(I9'.I3(I89;8>)ID64'-?I(I:8:'(I,I(I(I38(I18 NM:i:4 MD:Z:159^G12C1G12 oR:Z:2 oH:i:1 oP:i:4 oS:A:R XE:i:4 XS:i:0 XI:i:0
-simulated.522 0 1 342 255 57M1D122M * 0 0 CACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCA 674I:+&95;68I'I/'417I(9I(1I)6I.&966;;65;IG0)%8I'G';877I1'I+495<798848I(I*I-&8984;:76;I/'I(356H'39I)<4I.&I'746<77;I'847I'7742:8I(78<1:=787I':6I'4I)I)I)29I8*&576:4:7I(:;I(I<,'986I'4 NM:i:1 MD:Z:57^C122 oR:Z:1 oH:i:1 oP:i:341 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.523 0 2 1 255 30M1I120M1D44M * 0 0 CGCAAACCATTTATAACTCGTTTGGACTCACGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTT 9<8I2(I)<I2(16I*896>I0'I(89723*65I(I'9I.'484429768H'I(48<:6I/'46I(:987G'6978875;6I(;4:6:3985H'7G'I(599I(H':499883768I(5I4)78I)I'I2(3:::554:I.&75;95;G'9I+3I(5777<I'I(14I<,'H'568F'I-&F'I(39I'7I/'I' NM:i:2 MD:Z:150^C44 oR:Z:2 oH:i:1 oP:i:0 oS:A:F XE:i:2 [...]
-simulated.524 16 1 5011 255 123M1D42M1D14M * 0 0 CCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCAGGAAATCACC (I377:8;4'G967'H48)I;5'1I6&)/:II6',>I'I:5:56946'I57='0I<:(I372(I24;78*I88'I9587(I4::5?77;8(I64864(I;8;(I7;(I(I7'.I2(I:24698(,6II29;4<74;4;'G4595'0I6<4(I5(I;9;9(I367:*6I:(I'.I<7;'I NM:i:2 MD:Z:123^C42^C14 oR:Z:1 oH:i:1 oP:i:5010 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.525 16 2 136 255 139M1D18M1I27M * 0 0 TCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCTTTGACTAATATTACAAGTCTATATGCATGTCTACTTATAGCGCG 595'/I9878:6'G4(2I9(I;998:'G(I;8&,<I'H475(I(3I(I(I55(I='1I&F64:7)I7'G1'I)I6<46;=8;(I<75(I9(I'0I77',=I)I6'I8(I'G:74A4&.I(I83474762:779:9'F97D'.I8.;5'I99(I67(I%981:6:438357>6242'G6:5;4::0 NM:i:2 MD:Z:139^C45 oR:Z:2 oH:i:1 oP:i:135 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.521 16 2 5 255 87M1I72M1D27M * 0 0 AACCATTTATAACTCGTTTGGACTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGCGTTTTAACTGTCCGGTTAAGAGGTG (I'H3'/I-5(I9884'.I)I:487659(I'I5'/I27;7?5:94(I&E77581'1I73(I8:13'H?36557;:8(I9873<449:&-I7(I(I9;4)I(I<:77883569(I7'0I95)I'H&-I797::938'0I:<6685(I9'.I3(I89;8>)ID64'-?I(I:8:'(I,I(I(I38(I18 NM:i:4 MD:Z:159G12C1G12 oR:Z:2 oH:i:1 oP:i:4 oS:A:R XE:i:4 XS:i:0 XI:i:0
+simulated.522 0 1 342 255 57M1D122M * 0 0 CACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCA 674I:+&95;68I'I/'417I(9I(1I)6I.&966;;65;IG0)%8I'G';877I1'I+495<798848I(I*I-&8984;:76;I/'I(356H'39I)<4I.&I'746<77;I'847I'7742:8I(78<1:=787I':6I'4I)I)I)29I8*&576:4:7I(:;I(I<,'986I'4 NM:i:1 MD:Z:57C122 oR:Z:1 oH:i:1 oP:i:341 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.523 0 2 1 255 30M1I120M1D44M * 0 0 CGCAAACCATTTATAACTCGTTTGGACTCACGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTT 9<8I2(I)<I2(16I*896>I0'I(89723*65I(I'9I.'484429768H'I(48<:6I/'46I(:987G'6978875;6I(;4:6:3985H'7G'I(599I(H':499883768I(5I4)78I)I'I2(3:::554:I.&75;95;G'9I+3I(5777<I'I(14I<,'H'568F'I-&F'I(39I'7I/'I' NM:i:2 MD:Z:150C44 oR:Z:2 oH:i:1 oP:i:0 oS:A:F XE:i:2 X [...]
+simulated.524 16 1 5011 255 123M1D42M1D14M * 0 0 CCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCAGGAAATCACC (I377:8;4'G967'H48)I;5'1I6&)/:II6',>I'I:5:56946'I57='0I<:(I372(I24;78*I88'I9587(I4::5?77;8(I64864(I;8;(I7;(I(I7'.I2(I:24698(,6II29;4<74;4;'G4595'0I6<4(I5(I;9;9(I367:*6I:(I'.I<7;'I NM:i:2 MD:Z:123C42C14 oR:Z:1 oH:i:1 oP:i:5010 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.525 16 2 136 255 139M1D18M1I27M * 0 0 TCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCTTTGACTAATATTACAAGTCTATATGCATGTCTACTTATAGCGCG 595'/I9878:6'G4(2I9(I;998:'G(I;8&,<I'H475(I(3I(I(I55(I='1I&F64:7)I7'G1'I)I6<46;=8;(I<75(I9(I'0I77',=I)I6'I8(I'G:74A4&.I(I83474762:779:9'F97D'.I8.;5'I99(I67(I%981:6:438357>6242'G6:5;4::0 NM:i:2 MD:Z:139C45 oR:Z:2 oH:i:1 oP:i:135 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.526 16 1 7630 255 166M1I22M * 0 0 CAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGACTTACGGGATAGCCCCCTGCCTT 6;:65;689:6(I(1I7(I9;(I6'1I'I628<24:4045(I689(I99(2I<2;88&-I6<6'H77(I:69596'I'G)I78(I63'I(I:6<35(I868(I967;33*I(I(I858'G7938;99(I'I)I98'0I775'-?I6'G&-I'I(I794:(I7=6;4&(I:5&-I8;97&*1II77'H)I NM:i:1 MD:Z:188 oR:Z:1 oH:i:1 oP:i:7629 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.527 0 1 1307 255 148M1D30M1I38M * 0 0 ATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTGCCGGCCCGCACAGGCAGTACAAAGTGACGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGC 9I1'7I/'5I(9I(<87I(I8*&;8;5748247I(7I)I(78I'I-&4;895;:I,&56H';7H'5I-&1I'9.F&I+99<9696547593I(7688779=3I:+&7I(7I)7:I'3I0'774777I(4I(;5685:H'=>86H'I(5I,;I)F'I0'75878H'8>6749I1'8:87&;4I(I(:I'G':6;896368776=915I(I2(728<57 NM:i:2 M [...]
-simulated.528 16 1 3857 255 72M1I11M1D74M1D9M1I62M * 0 0 TGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATCGCCTATATTGCTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAACCCCGCCGACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCG 1<9997)I6(I<(I87<8778(I7(I;;<:698&)/;II5653464;&F(I5*I748:09:2:87:(1I6:7%9(I8282&D?4,I89)I&.I78:6759:<+I)I7;763;7787;58'/I>'I58(I<6;9(I5799669'I8(I5<(I2874888,I&*8I;'I&647=88899(I81&.I&+;I3=1786&-I(I8'H'F [...]
-simulated.529 16 2 118 255 30M1D144M * 0 0 AGGGTCTTGGCCCGTATCTCTGGGTCTACGTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACA 7'1I65(I'H(2I<;:59=65'.I59695:B4'.I9(I9<<65'I'G57'- at I)I:51(I'0I)I&D88'H6'0I'I33<6(I6+I9)I'I3:8<7354*I;98'I5'H(1I>6'-?I(I3'I9'H'G75;=7'0I(I3<3843/<527;84(I:9)I&-I858:'I9;)I697 NM:i:1 MD:Z:30^T144 oR:Z:2 oH:i:1 oP:i:117 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.530 0 1 6088 255 18M1D30M1I153M1I1M * 0 0 TCAGCCGCCATGCCGCTGTTTTCGGGGTCACCATGTTTCCTAGCTACACGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTAG <603I)5I)>69I(3<;:ID.(@I=,':8;I(;44I3(F&34797:98%7<78I(8IC.(I/'585 at 3A5I(4967I)38I2(4;:I/'579:5<6<6689997892;H';42I(>7=I(<5I(7I-&>?:6;6I'8:<79889852556I/'696H'8836>55I/'668;86I1'57979I/'6I'67I9*&:I'I5)39%< NM:i:3 MD:Z:18^T184 oR:Z:1 oH: [...]
-simulated.531 16 1 6461 255 19M1I161M1D6M * 0 0 ACCGTGTTATAGTAGCGGTACATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCATTG 6)I75;(I4:76:8;9(I6%5:2'H66'H'H8777679;56479(I766'G6<65:87'/I847:;43'H;8<85666965'I86<7877(I7)I57673:'.I43(I'H5(I:(I2469'G693=&*1II'0I8'H49898:8'H)I'H5'H<(I8784;647+I3877554(I7:78'G,I4(I8 NM:i:2 MD:Z:180^C6 oR:Z:1 oH:i:1 oP:i:6460 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.527 0 1 1307 255 148M1D30M1I38M * 0 0 ATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTGCCGGCCCGCACAGGCAGTACAAAGTGACGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGC 9I1'7I/'5I(9I(<87I(I8*&;8;5748247I(7I)I(78I'I-&4;895;:I,&56H';7H'5I-&1I'9.F&I+99<9696547593I(7688779=3I:+&7I(7I)7:I'3I0'774777I(4I(;5685:H'=>86H'I(5I,;I)F'I0'75878H'8>6749I1'8:87&;4I(I(:I'G':6;896368776=915I(I2(728<57 NM:i:2 M [...]
+simulated.528 16 1 3857 255 72M1I11M1D74M1D9M1I62M * 0 0 TGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATCGCCTATATTGCTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAACCCCGCCGACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCG 1<9997)I6(I<(I87<8778(I7(I;;<:698&)/;II5653464;&F(I5*I748:09:2:87:(1I6:7%9(I8282&D?4,I89)I&.I78:6759:<+I)I7;763;7787;58'/I>'I58(I<6;9(I5799669'I8(I5<(I2874888,I&*8I;'I&647=88899(I81&.I&+;I3=1786&-I(I8'H'F [...]
+simulated.529 16 2 118 255 30M1D144M * 0 0 AGGGTCTTGGCCCGTATCTCTGGGTCTACGTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACA 7'1I65(I'H(2I<;:59=65'.I59695:B4'.I9(I9<<65'I'G57'- at I)I:51(I'0I)I&D88'H6'0I'I33<6(I6+I9)I'I3:8<7354*I;98'I5'H(1I>6'-?I(I3'I9'H'G75;=7'0I(I3<3843/<527;84(I:9)I&-I858:'I9;)I697 NM:i:1 MD:Z:30T144 oR:Z:2 oH:i:1 oP:i:117 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.530 0 1 6088 255 18M1D30M1I153M1I1M * 0 0 TCAGCCGCCATGCCGCTGTTTTCGGGGTCACCATGTTTCCTAGCTACACGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTAG <603I)5I)>69I(3<;:ID.(@I=,':8;I(;44I3(F&34797:98%7<78I(8IC.(I/'585 at 3A5I(4967I)38I2(4;:I/'579:5<6<6689997892;H';42I(>7=I(<5I(7I-&>?:6;6I'8:<79889852556I/'696H'8836>55I/'668;86I1'57979I/'6I'67I9*&:I'I5)39%< NM:i:3 MD:Z:18T184 oR:Z:1 oH:i [...]
+simulated.531 16 1 6461 255 19M1I161M1D6M * 0 0 ACCGTGTTATAGTAGCGGTACATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCATTG 6)I75;(I4:76:8;9(I6%5:2'H66'H'H8777679;56479(I766'G6<65:87'/I847:;43'H;8<85666965'I86<7877(I7)I57673:'.I43(I'H5(I:(I2469'G693=&*1II'0I8'H49898:8'H)I'H5'H<(I8784;647+I3877554(I7:78'G,I4(I8 NM:i:2 MD:Z:180C6 oR:Z:1 oH:i:1 oP:i:6460 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.532 0 2 92 255 191M * 0 0 GGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGAC G'5I'I'2;=I(I'96785157:6I(7I1'3:I*G'I/'==9=:278I2(>;5756I):I0'9I)6>367G'I(77I<,&I(677I'I.&H'H'=7I(8I1(I(5:14I(;I(:H'G'9639:7;;G'77:I(6I)I/'>>I:+&I(8H'9I(H'5:779I-&I)1A30529;877786I':6I(I0':8: NM:i:0 MD:Z:191 oR:Z:2 oH:i:1 oP:i:91 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.533 0 2 159 255 41M1I126M1D30M * 0 0 ATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACGTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAACCAATCATCTCTTCCGGTAGTCAGCGAA 978I)I(24I9*&I(767I(I2(I(I(85H'8I5)I(;67;&I)4H'7I'I)9=585989H':56I);I(I/'85I=,'I'7G'6I)I*96983I.'E&37=83:968779=4I(69H'I/'1466I)98H'76F&7:?64@:83:8647669I*6:8;6888<=937I,H'I(4<025:3I*I(I(>45;83954I( NM:i:2 MD:Z:167^A30 oR:Z:2 oH:i:1 oP:i:158 oS:A [...]
-simulated.534 0 1 6519 255 55M1I44M1I21M1D77M1D10M * 0 0 AATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTAGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACGTGCGTATTGCATGAGCCAGATACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCTAAAGCT I(7;:8825I'6<88;888997H'9:45289I)7I(99>5<9I.'89I)G'7H'7'G'95B9I(5:7:II3+&I/'6F'6688585I*I'E&1G'4I(35(959646H'4766937I(7474BI1'=I(852H'H'I)665I(I2(;?6:6347:369<I'I(8=62375934575G'9I)I(646;9I';5717I(36I6)6I/';65 NM:i:4 MD:Z:120 [...]
-simulated.535 16 1 8555 255 32M1I51M1I68M1D36M * 0 0 CCGGCCCCCGCTCAAAATACCATCAGGGCTTTACGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCGAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGA (I'F&)0II7=99',=I61(I5977(2I:'0I'<'I2(I57<5(I8(I689(I9(I6:3&*8I&-I'I55:;2&,<I3:59775)'.I7;888=<68;;:7)I9(I366(I1(I7:1'0I3*I8(I96(I7:8'I'H'I:89&*8I(I89(1IB&-I'H8)I'/I(1I'I'0I8;6787:28(2I7(I4 NM:i:3 MD:Z:151^T36 oR:Z:1 oH:i:1 oP:i:8554 oS:A:R XE:i:3 X [...]
-simulated.536 0 1 2659 255 6M1I97M1D111M * 0 0 TCCTGACTACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGC 6I(5==&969H'5;89I(74965666;83<:G'499H'892776543>I':I)85::567766:;I)5I:+&88I/';I0'I<,'71I(:?8I1'I'78:<689B85I(I)/I;+&885669I(67I'I-&I(3:958649I<+&6I(8I<+&5I2(8766I(7=55:887559<:I8*&66II2*&=<5<9;I(782I(559I*7683;H'I(= NM:i:2 MD:Z:1 [...]
+simulated.533 0 2 159 255 41M1I126M1D30M * 0 0 ATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACGTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAACCAATCATCTCTTCCGGTAGTCAGCGAA 978I)I(24I9*&I(767I(I2(I(I(85H'8I5)I(;67;&I)4H'7I'I)9=585989H':56I);I(I/'85I=,'I'7G'6I)I*96983I.'E&37=83:968779=4I(69H'I/'1466I)98H'76F&7:?64@:83:8647669I*6:8;6888<=937I,H'I(4<025:3I*I(I(>45;83954I( NM:i:2 MD:Z:167A30 oR:Z:2 oH:i:1 oP:i:158 oS:A: [...]
+simulated.534 0 1 6519 255 55M1I44M1I21M1D77M1D10M * 0 0 AATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTAGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACGTGCGTATTGCATGAGCCAGATACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCTAAAGCT I(7;:8825I'6<88;888997H'9:45289I)7I(99>5<9I.'89I)G'7H'7'G'95B9I(5:7:II3+&I/'6F'6688585I*I'E&1G'4I(35(959646H'4766937I(7474BI1'=I(852H'H'I)665I(I2(;?6:6347:369<I'I(8=62375934575G'9I)I(646;9I';5717I(36I6)6I/';65 NM:i:4 MD:Z:120 [...]
+simulated.535 16 1 8555 255 32M1I51M1I68M1D36M * 0 0 CCGGCCCCCGCTCAAAATACCATCAGGGCTTTACGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCGAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGA (I'F&)0II7=99',=I61(I5977(2I:'0I'<'I2(I57<5(I8(I689(I9(I6:3&*8I&-I'I55:;2&,<I3:59775)'.I7;888=<68;;:7)I9(I366(I1(I7:1'0I3*I8(I96(I7:8'I'H'I:89&*8I(I89(1IB&-I'H8)I'/I(1I'I'0I8;6787:28(2I7(I4 NM:i:3 MD:Z:151T36 oR:Z:1 oH:i:1 oP:i:8554 oS:A:R XE:i:3 XS [...]
+simulated.536 0 1 2659 255 6M1I97M1D111M * 0 0 TCCTGACTACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGC 6I(5==&969H'5;89I(74965666;83<:G'499H'892776543>I':I)85::567766:;I)5I:+&88I/';I0'I<,'71I(:?8I1'I'78:<689B85I(I)/I;+&885669I(67I'I-&I(3:958649I<+&6I(8I<+&5I2(8766I(7=55:887559<:I8*&66II2*&=<5<9;I(782I(559I*7683;H'I(= NM:i:2 MD:Z:1 [...]
simulated.537 16 1 3755 255 80M1I106M * 0 0 ATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTAGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCT 687:3'1I48&.I(I6(2I86(I<679877(I6*I5>89'.I9:'I(I:56(I5887>7969;=<>=476:96:'0I(I?&2;7'G894'I(1I(I8'G9256485:<7(I7(I3)I78;67=8)I>(I:479<96&)/:II46=788 at 8'I&F3(I4699954=4::3'0I8985(I4:71(I:;< NM:i:1 MD:Z:186 oR:Z:1 oH:i:1 oP:i:3754 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.538 0 1 8492 255 80M1I36M1D61M1D5M * 0 0 ATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAAGTACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAACTT :<5548566698769I)6948H'89I'6I(4:I(4I/':;6:I'=I)79:569=I(I(<8:88G'I(II1*&8=45I;+&'6;I(7;:0I1'6I/'6G'8I(9677I)@I)699I)7D888I<,&I.'I(85980I;+&69<182=I.&49:8<?899<<76I(4I(;57G'3I(889I+5I( NM:i:3 MD:Z:116^T61^A5 oR:Z:1 oH:i:1 oP:i:8491 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.538 0 1 8492 255 80M1I36M1D61M1D5M * 0 0 ATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAAGTACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAACTT :<5548566698769I)6948H'89I'6I(4:I(4I/':;6:I'=I)79:569=I(I(<8:88G'I(II1*&8=45I;+&'6;I(7;:0I1'6I/'6G'8I(9677I)@I)699I)7D888I<,&I.'I(85980I;+&69<182=I.&49:8<?899<<76I(4I(;57G'3I(889I+5I( NM:i:3 MD:Z:116T61A5 oR:Z:1 oH:i:1 oP:i:8491 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.539 16 1 3460 255 159M1I31M1I15M * 0 0 AACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGAGTGGTGTTATTTTGTCTACGGTCTACCACTTGTATCTAGAAGCTCCGC 'G'+3II6'/I5=3::<6)I:'G8'0I26'/I'H85;0'H74:4&.I:(I6&E8=568966'I9'/I4(I:79'G)I8'I8'/I'F4;:;3:&*8I::9'.I(I'H56(I8:3475'H)I'H(I48(I3:'.I2<56(I(I(I'H9858351(2I3)I8)7(I88)I5&+;I689741)I37=8)I:6(I8(589679)I:D2)I59 NM:i:2 MD:Z:205 oR:Z:1 oH:i [...]
-simulated.540 16 1 322 255 118M1D28M1D42M1D9M * 0 0 GCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGATCCCTTAGTCGCATTAGTCCATGCAGACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGATACCA 9+I;::6988(I5=6(I65;:68&+9I96988'I'0I495)I:'F<'H8(1I=746:358&*2II4(I(I4=<9'.I'0I98:9986;84(I(I'/I8487:68:9(3I(I771(I:6D09'1I'G<56767<*I646)I973686C76479/38:'G>5(I3(I'H*I69',>I9277;88'G:5(I)6I573'I9 NM:i:4 MD:Z:0C117^G28^A42^G9 oR:Z:1 oH:i:1 o [...]
-simulated.541 0 1 2422 255 12M1I24M1I14M1I42M1D99M * 0 0 ATTTAAAGTGAACTATTAGTTGTATGACTTACCCTAAGTGAATACAACGAGCTAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGG 3I0'I.&678I)&63I(98I)79865=4I(7I.&6I)&?<I(759I(667<7(5<G'19826I)=777I(66C:88:257::I(7I(I(I'I(89CI(><883I'6F'I(;I/'6;696588598924.52I(76I(;I(<63674:8:748I(:I*8II4+':5;I)6;3676:7I2(G'566658>I(8:I( NM:i:4 MD:Z:92^T99 oR:Z:1 oH:i:1 oP:i:2421 oS [...]
-simulated.542 0 1 2307 255 145M1D48M * 0 0 CCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACA H'I>,'7I.'I(69F&I(9887I<,'397I'83:I/'47I.'6I)<9629993I(8I(;753;;;77:4I'77:7441:77::IH0)%99I)I.&G'8:<4I(I1(I(I(9:<7I(I2(I-&586I)92I'>;I(9847959I)5I+=I'73G'86<I)948;59BI'74894H'44?9I+786:786::554 NM:i:1 MD:Z:145^C48 oR:Z:1 oH:i:1 oP:i:2306 oS:A:F XE:i:1 XS: [...]
+simulated.540 16 1 322 255 118M1D28M1D42M1D9M * 0 0 GCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGATCCCTTAGTCGCATTAGTCCATGCAGACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGATACCA 9+I;::6988(I5=6(I65;:68&+9I96988'I'0I495)I:'F<'H8(1I=746:358&*2II4(I(I4=<9'.I'0I98:9986;84(I(I'/I8487:68:9(3I(I771(I:6D09'1I'G<56767<*I646)I973686C76479/38:'G>5(I3(I'H*I69',>I9277;88'G:5(I)6I573'I9 NM:i:4 MD:Z:C117G28A42G9 oR:Z:1 oH:i:1 oP:i: [...]
+simulated.541 0 1 2422 255 12M1I24M1I14M1I42M1D99M * 0 0 ATTTAAAGTGAACTATTAGTTGTATGACTTACCCTAAGTGAATACAACGAGCTAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGG 3I0'I.&678I)&63I(98I)79865=4I(7I.&6I)&?<I(759I(667<7(5<G'19826I)=777I(66C:88:257::I(7I(I(I'I(89CI(><883I'6F'I(;I/'6;696588598924.52I(76I(;I(<63674:8:748I(:I*8II4+':5;I)6;3676:7I2(G'566658>I(8:I( NM:i:4 MD:Z:92T99 oR:Z:1 oH:i:1 oP:i:2421 oS: [...]
+simulated.542 0 1 2307 255 145M1D48M * 0 0 CCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACA H'I>,'7I.'I(69F&I(9887I<,'397I'83:I/'47I.'6I)<9629993I(8I(;753;;;77:4I'77:7441:77::IH0)%99I)I.&G'8:<4I(I1(I(I(9:<7I(I2(I-&586I)92I'>;I(9847959I)5I+=I'73G'86<I)948;59BI'74894H'44?9I+786:786::554 NM:i:1 MD:Z:145C48 oR:Z:1 oH:i:1 oP:i:2306 oS:A:F XE:i:1 XS:i [...]
simulated.543 0 1 2997 255 37M1I88M1I17M1I59M * 0 0 AAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGTCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGACGCAAGCGCCCACATCGTCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGAT I3(9I(8I)I(I':98I(6I(;6789:6>8=85<I(6+:3<8I(I)I(;I/':68I(<8577I'9I)I0'69::985<4I-&F'36I/'=:I'I9*&I*34<:94;<35I*I)I(H':66<7:8;:%447I'445I.'76;583'84I0'II1*&99834<66 at G'763:6B0;8I'7<9H':8877G'8;I':77I'I0'07; NM:i:3 MD:Z:201 oR:Z:1 oH:i:1 [...]
-simulated.544 16 1 4795 255 91M1D111M * 0 0 CCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCA (I774)I78)I'G4<&F&-I9;(2I776&.I(I3'G&*1II=:876)I3(I'I56'I36'H5<'I5149:(2I:8(I5<8924@:898'H9+I<69'I9&+;I:9;55'H82(I'I9:(I(I;8<4<66'H1:1(I(I876=7:879647(I9(I6985'H894'I8'/I'H'F69<7)I6'F79966)I:6526'H63969 NM:i:1 MD:Z:91^T111 oR:Z:1 oH:i:1 oP:i:479 [...]
-simulated.545 16 1 2551 255 82M1D138M * 0 0 GGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCG 'G88'I7'I7;348646679:(I2'I4&)1II393(I884;438;'.I'H55;5758'G<5(I86:9762'H=72673445;(.DI54'G7&-I58(I6<9?495A<<'G559786'I5478(I4<889>3:;=877'I;;4(I997:6:>289(I4'H67967863<575'I7',=I=<'0I9'.I',=I78(I871&.I*I7789397(I77(I'H97 NM:i:1 [...]
-simulated.546 0 1 5595 255 107M1D9M1I9M1I74M * 0 0 GGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTCAAACTCTATTTGTATGTCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCG I(8659:5F'793857I(89I(8346:756367764?0>F&610:F';7;626I.':6I(4867I)8>8I(642I(28I(I<+&6::H'9:9I)8I'I'5I*<I)62I+7I0'519+:I/'76495(I)I(6I)4=9;I(7;7:7G'5=4I(769732II2*&I(85I(5:5;8H'H'776G':538I*54I)46;65<76 NM:i:3 MD:Z:107^T92 oR:Z:1 oH:i:1 oP: [...]
-simulated.547 0 1 8514 255 13M1D74M1I75M1I26M1D15M * 0 0 TCTGGTGGCTGGATTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGACAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGACCGCAATAGTTGGTTGTCGGGGCCAGCCTTAAAGGATTGGG 7=;I(7I(67F'7I,76:5I):I(:2858=2I(I(7;1:8I(I)II2*&=99;I;+&88F'474;I-&5I4)6I(:I)797:I(9I''7:6I(6I'37<I7*&I/'I+:556<I?-'8626=81I/'3=><;789:@597I)9I'77:I(;I(8 at 7I/'8I'5&I(95I(615I*I(I(983I<,'I(6;I+I(I.&I*9I)I.' NM:i:4 MD:Z:13^T175^C15 [...]
-simulated.548 16 1 8107 255 58M1D152M * 0 0 GAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGC 4)I)I736)I77(I(I9659'H66587:85967:4(I99656456647',<I7:97(I,I(I:<'G474(I8'I&-I2596'H:83>?(3I59:7(I'I25'H::=:<57:(I7(I;;)I747:67&,I(I49(I6<077(I9'I'H4368:9)I<<:>6*I57'H:99946875;(I(I(I(1I'H778:5&D=5'I/(I76'0I;57: NM:i:1 MD:Z:58^C152 oR:Z:1 [...]
+simulated.544 16 1 4795 255 91M1D111M * 0 0 CCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCA (I774)I78)I'G4<&F&-I9;(2I776&.I(I3'G&*1II=:876)I3(I'I56'I36'H5<'I5149:(2I:8(I5<8924@:898'H9+I<69'I9&+;I:9;55'H82(I'I9:(I(I;8<4<66'H1:1(I(I876=7:879647(I9(I6985'H894'I8'/I'H'F69<7)I6'F79966)I:6526'H63969 NM:i:1 MD:Z:91T111 oR:Z:1 oH:i:1 oP:i:4794 [...]
+simulated.545 16 1 2551 255 82M1D138M * 0 0 GGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCG 'G88'I7'I7;348646679:(I2'I4&)1II393(I884;438;'.I'H55;5758'G<5(I86:9762'H=72673445;(.DI54'G7&-I58(I6<9?495A<<'G559786'I5478(I4<889>3:;=877'I;;4(I997:6:>289(I4'H67967863<575'I7',=I=<'0I9'.I',=I78(I871&.I*I7789397(I77(I'H97 NM:i:1 [...]
+simulated.546 0 1 5595 255 107M1D9M1I9M1I74M * 0 0 GGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTCAAACTCTATTTGTATGTCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCG I(8659:5F'793857I(89I(8346:756367764?0>F&610:F';7;626I.':6I(4867I)8>8I(642I(28I(I<+&6::H'9:9I)8I'I'5I*<I)62I+7I0'519+:I/'76495(I)I(6I)4=9;I(7;7:7G'5=4I(769732II2*&I(85I(5:5;8H'H'776G':538I*54I)46;65<76 NM:i:3 MD:Z:107T92 oR:Z:1 oH:i:1 oP:i [...]
+simulated.547 0 1 8514 255 13M1D74M1I75M1I26M1D15M * 0 0 TCTGGTGGCTGGATTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGACAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGACCGCAATAGTTGGTTGTCGGGGCCAGCCTTAAAGGATTGGG 7=;I(7I(67F'7I,76:5I):I(:2858=2I(I(7;1:8I(I)II2*&=99;I;+&88F'474;I-&5I4)6I(:I)797:I(9I''7:6I(6I'37<I7*&I/'I+:556<I?-'8626=81I/'3=><;789:@597I)9I'77:I(;I(8 at 7I/'8I'5&I(95I(615I*I(I(983I<,'I(6;I+I(I.&I*9I)I.' NM:i:4 MD:Z:13T175C15 o [...]
+simulated.548 16 1 8107 255 58M1D152M * 0 0 GAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGC 4)I)I736)I77(I(I9659'H66587:85967:4(I99656456647',<I7:97(I,I(I:<'G474(I8'I&-I2596'H:83>?(3I59:7(I'I25'H::=:<57:(I7(I;;)I747:67&,I(I49(I6<077(I9'I'H4368:9)I<<:>6*I57'H:99946875;(I(I(I(1I'H778:5&D=5'I/(I76'0I;57: NM:i:1 MD:Z:58C152 oR:Z:1 [...]
simulated.549 16 1 8068 255 128M1I75M * 0 0 TAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGTCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCT :)I754&+:I;;3729'I<58:69>9:7'H)I78:654)I'I(I:;5)I96+I(I75;5'H94<3575568:@;'G645266<6787&*8I<>76'G(2I(I84(I7?4(I8'G'/I898@(I9:797&(1I8524'I'H8;)I799488;9'I6)I89(I956596'/I(I24(I7;;8<(I:*I(I:79:58*I969<7(I8 NM:i:1 MD:Z:203 oR:Z:1 oH:i:1 oP:i:806 [...]
-simulated.550 0 1 623 255 50M1I68M1D38M1I13M1D38M * 0 0 ATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGACACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCGTATCCCGTGACTACCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGC ;262;I(6=I)48I'474I(7<;II:/)&I(987I.&867:H'I(6I0':'49988:798I(6?4:78=:<66I(5:68>368>G'<78I(<79H'73I.&8I)27I(8:857:69858C;95:F'42I)673=8E&I(7569I(I):I-&I1(H'6&:06I.';<<7787I6*99;98:;3968:77777I/'73967386697I(78 NM:i:4 MD:Z:118^ [...]
-simulated.551 0 1 6303 255 40M1D143M1I5M * 0 0 GTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATAGTTGGA :8268:494I)4:42639I'4;87I/'353:4;H'I'I0'D96I)4474II1)&H'66I)I)I(:767658I(849I/'3I(I0'G';8H'53=:877G'9854797=:H'I1(I';475I/'484I'8:I(27:I;+&:8I(87I(I)I(:32I(86I'888I(:<742:66I(78=7I'79/H'I(8 NM:i:2 MD:Z:40^C148 oR:Z:1 oH:i:1 oP:i:6302 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.552 16 1 2082 255 131M1I29M1D39M * 0 0 GCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTCGTAGCCCCATCACCAGCGCAGTACTATCGTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAA :'G2678;(IA547'/I354)I1'0I979'I9(I=;6877:89852(I;(1I'G849'/I(I95)I77'I(I(I'-?I<'I68)I&.I(I8;22'I638:63'H98(I8;5<9(I737&.I'H9;&).:II'65:9&+:I;39='H3C;88<4854??789D99&.I4:6;'G744899<655<8;9(I)I568&,I8(I NM:i:2 MD:Z:160^T39 oR:Z:1 oH:i:1 oP:i:20 [...]
-simulated.553 16 1 4437 255 151M1D19M1D26M1I4M * 0 0 CGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCTACTCCTAGCGATCGTCAGGGTACTTTGTGTTGGCAATCAGGTCGACG 9:696'H7/'G:9=77'I7&)0HI<;79:8'H9:5=5358<)I'G(I9717=&.I7&-I(1I(I7&*8I6586)I7*I72:678;;85'0I6(I63'H)I=988;9(I99'I87>>:749&.I6'G757=996'I99197:5(I(I=7(I6,I5:54)I7415836/797D'.I4:9'0I8;:)I'H=)I89:(I:%636: NM:i:3 MD:Z:151^C19^A30 oR:Z:1 oH:i [...]
-simulated.554 16 2 3 255 7M1D166M1I22M * 0 0 CAAACCATTATAACTCGTTTGGACTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGACCGGGTTAAGAGGTGGGTTACA 3(1I(I9,I;7'F6866&-I'G55<054;'F'H5'/I9=18=<798)I(I>76:8(2I6<(I8697(I2<5172268(I686769:7:'G=(I'G985(I)I8748/;:696'I=(2I57'I'F(2I544:8899'/I9.:756(I6'/I9'H<:6;4(I(I5;&+<I(I::5&(I(1I)I'G5:'I8'0I(I195 NM:i:2 MD:Z:7^T188 oR:Z:2 oH:i:1 oP:i:2 oS:A:R XE:i:2 [...]
+simulated.550 0 1 623 255 50M1I68M1D38M1I13M1D38M * 0 0 ATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGACACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCGTATCCCGTGACTACCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGC ;262;I(6=I)48I'474I(7<;II:/)&I(987I.&867:H'I(6I0':'49988:798I(6?4:78=:<66I(5:68>368>G'<78I(<79H'73I.&8I)27I(8:857:69858C;95:F'42I)673=8E&I(7569I(I):I-&I1(H'6&:06I.';<<7787I6*99;98:;3968:77777I/'73967386697I(78 NM:i:4 MD:Z:118G [...]
+simulated.551 0 1 6303 255 40M1D143M1I5M * 0 0 GTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATAGTTGGA :8268:494I)4:42639I'4;87I/'353:4;H'I'I0'D96I)4474II1)&H'66I)I)I(:767658I(849I/'3I(I0'G';8H'53=:877G'9854797=:H'I1(I';475I/'484I'8:I(27:I;+&:8I(87I(I)I(:32I(86I'888I(:<742:66I(78=7I'79/H'I(8 NM:i:2 MD:Z:40C148 oR:Z:1 oH:i:1 oP:i:6302 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.552 16 1 2082 255 131M1I29M1D39M * 0 0 GCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTCGTAGCCCCATCACCAGCGCAGTACTATCGTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAA :'G2678;(IA547'/I354)I1'0I979'I9(I=;6877:89852(I;(1I'G849'/I(I95)I77'I(I(I'-?I<'I68)I&.I(I8;22'I638:63'H98(I8;5<9(I737&.I'H9;&).:II'65:9&+:I;39='H3C;88<4854??789D99&.I4:6;'G744899<655<8;9(I)I568&,I8(I NM:i:2 MD:Z:160T39 oR:Z:1 oH:i:1 oP:i:208 [...]
+simulated.553 16 1 4437 255 151M1D19M1D26M1I4M * 0 0 CGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCTACTCCTAGCGATCGTCAGGGTACTTTGTGTTGGCAATCAGGTCGACG 9:696'H7/'G:9=77'I7&)0HI<;79:8'H9:5=5358<)I'G(I9717=&.I7&-I(1I(I7&*8I6586)I7*I72:678;;85'0I6(I63'H)I=988;9(I99'I87>>:749&.I6'G757=996'I99197:5(I(I=7(I6,I5:54)I7415836/797D'.I4:9'0I8;:)I'H=)I89:(I:%636: NM:i:3 MD:Z:151C19A30 oR:Z:1 oH:i:1 [...]
+simulated.554 16 2 3 255 7M1D166M1I22M * 0 0 CAAACCATTATAACTCGTTTGGACTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGACCGGGTTAAGAGGTGGGTTACA 3(1I(I9,I;7'F6866&-I'G55<054;'F'H5'/I9=18=<798)I(I>76:8(2I6<(I8697(I2<5172268(I686769:7:'G=(I'G985(I)I8748/;:696'I=(2I57'I'F(2I544:8899'/I9.:756(I6'/I9'H<:6;4(I(I5;&+<I(I::5&(I(1I)I'G5:'I8'0I(I195 NM:i:2 MD:Z:7T188 oR:Z:2 oH:i:1 oP:i:2 oS:A:R XE:i:2 [...]
simulated.555 0 1 1506 255 17M1I45M1I108M1I39M * 0 0 CGTCGTACCAAATCGTGTCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATCGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAACGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTAT 61877>8I(I2(16968%I/'/75II1)&I*F';:I)F'9:94776I2(=;::776=6I)58?&8785:4I3(I'26>88?973H':7:7683:27I.'44<<<97I.';I)595:I'I)I)=:I<+&:::G'I9+&6I2(6I(9887I(357:I(1I)7I)7G'96688I)&76<6:I'6668=978H'I(I/'I'7H'49H'I'4:7868 NM:i:3 MD:Z:2 [...]
-simulated.556 16 1 7001 255 11M1D48M1D94M1I43M * 0 0 GTCTTGACGGTATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGACAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTG 3;9(I265'I7B6'H857 at 3(I(I:&-I(I=4*I7;&+<I'I57859>816769;(I7@(.AI(3I8)I;83<<7(I7;75*I:.984'G0(I2<8536-7;'H:9'I7<7:(I95'0I6(I(1I76(I15(I(I9'0I'1I67:(I3(I648%6'I;:(I4:35:4:646(I(2I;'/I88;7)I'I<;6789683 NM:i:3 MD:Z:11^A48^A137 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.557 16 1 6428 255 152M1D41M * 0 0 ACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCG 27(I78(I;46&+9I=<(I:9(I(I(I:2;'F:6(I787(I96<6508>'I3;73'I68'G(I9:64:738:;>;4'I775'F8563547'.I43=<:;5'F96987:66526'G;78779;(I6(I:1957;&.I<6&E(I9'I5'H at 4:7D;688&)1II&-I6(I85;6636&E(I)I6(I6'I737997 NM:i:1 MD:Z:152^C41 oR:Z:1 oH:i:1 oP:i:6427 oS:A:R XE:i:1 XS [...]
-simulated.558 16 1 7649 255 143M1I15M1D11M * 0 0 CTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGACTCGATTACGGGATAGCCCCTGCCTTT 59'G6'0I)I56797<6379<(I656)I:8&-I82839&.I983(I84'H2801;8(I'I)I69)I96'G(I798;5&D?74'H586:=4'G*I(I776'G;68<:-8(I'G*I:8'/I755',>I9'I'.I'I'H4:83)I;(7;:8'I18(2I6637(/EI3;(I(3I NM:i:2 MD:Z:158^C11 oR:Z:1 oH:i:1 oP:i:7648 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.559 0 1 9046 255 33M1I55M1D95M * 0 0 CATGTGCGTTGCACAACCACTACAAAGGAAGCCGTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCG 4:6;5?:8I(5:88E&F&77=68I.&I(I(7G'*669943I*769I1'I.&8:8I(:I'9:5278::I'G'577378I'7I(>I(I(65C9I'53I*;<I(9<7:I'64=2677=44I(I(I/'44I';65I)9I1':567866699:73<66:9<5I)977542;:I-&8I(9438I(I(H'7 NM:i:2 MD:Z:88^G95 oR:Z:1 oH:i:1 oP:i:9045 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.560 0 1 3745 255 98M1D113M * 0 0 CTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGA 5:3I/'96888768:I1'9:I0'I)4I/'<6I(8453646H'9I(8687I,&5;G'I'69;I)3=8;8>778986;:76896:7I/'I)86;:I)587CI.&I(5I'6985065649H'9I(8G'4994868H':G'7688876II7-(%76846;87I)I(8E&25845:9::483I0'60=7I)A4:>I(<:I.'85I(I-&9488664 NM:i:1 MD:Z:98^G113 oR:Z: [...]
-simulated.561 16 1 1024 255 47M1D124M * 0 0 GGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGGCCTACGC 'I6&.I839524'/I757<836(I<9'G:(I58<58)I'H35659<6C:3',<I7?(I:67>7'/I=(I6B(1I88(I34795:4887:7=(I'/I656856<'G97)I<89:845@&*8I'I971;496696677'G;(I:962<697773:959:;6:',>I'H86;85 NM:i:1 MD:Z:47^A124 oR:Z:1 oH:i:1 oP:i:1023 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.562 0 1 1677 255 138M1I15M1D10M1D47M * 0 0 CTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATACGAGAATGACTAACTGGCCCTTGCTGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGG 0685I'99<47455F&F'I/'I(8G'98G'H';56:?257I(7499=69747;8::<I(5;<5I(77I.&544=;6I=,'F'27674I(<676876I)9:8G'I(;I?-'7585I'H'53I/'I'8I';8<5847796&37;6I(5;799G'76I,I-&I'88:I5)55;7I(0I)I(I(7I'9::I(834<I)I'85988:63>85I(I( NM:i:3 MD:Z:153 [...]
+simulated.556 16 1 7001 255 11M1D48M1D94M1I43M * 0 0 GTCTTGACGGTATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGACAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTG 3;9(I265'I7B6'H857 at 3(I(I:&-I(I=4*I7;&+<I'I57859>816769;(I7@(.AI(3I8)I;83<<7(I7;75*I:.984'G0(I2<8536-7;'H:9'I7<7:(I95'0I6(I(1I76(I15(I(I9'0I'1I67:(I3(I648%6'I;:(I4:35:4:646(I(2I;'/I88;7)I'I<;6789683 NM:i:3 MD:Z:11A48A137 oR:Z:1 oH:i:1 oP:i:70 [...]
+simulated.557 16 1 6428 255 152M1D41M * 0 0 ACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCG 27(I78(I;46&+9I=<(I:9(I(I(I:2;'F:6(I787(I96<6508>'I3;73'I68'G(I9:64:738:;>;4'I775'F8563547'.I43=<:;5'F96987:66526'G;78779;(I6(I:1957;&.I<6&E(I9'I5'H at 4:7D;688&)1II&-I6(I85;6636&E(I)I6(I6'I737997 NM:i:1 MD:Z:152C41 oR:Z:1 oH:i:1 oP:i:6427 oS:A:R XE:i:1 XS: [...]
+simulated.558 16 1 7649 255 143M1I15M1D11M * 0 0 CTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGACTCGATTACGGGATAGCCCCTGCCTTT 59'G6'0I)I56797<6379<(I656)I:8&-I82839&.I983(I84'H2801;8(I'I)I69)I96'G(I798;5&D?74'H586:=4'G*I(I776'G;68<:-8(I'G*I:8'/I755',>I9'I'.I'I'H4:83)I;(7;:8'I18(2I6637(/EI3;(I(3I NM:i:2 MD:Z:158C11 oR:Z:1 oH:i:1 oP:i:7648 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.559 0 1 9046 255 33M1I55M1D95M * 0 0 CATGTGCGTTGCACAACCACTACAAAGGAAGCCGTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCG 4:6;5?:8I(5:88E&F&77=68I.&I(I(7G'*669943I*769I1'I.&8:8I(:I'9:5278::I'G'577378I'7I(>I(I(65C9I'53I*;<I(9<7:I'64=2677=44I(I(I/'44I';65I)9I1':567866699:73<66:9<5I)977542;:I-&8I(9438I(I(H'7 NM:i:2 MD:Z:88G95 oR:Z:1 oH:i:1 oP:i:9045 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.560 0 1 3745 255 98M1D113M * 0 0 CTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGA 5:3I/'96888768:I1'9:I0'I)4I/'<6I(8453646H'9I(8687I,&5;G'I'69;I)3=8;8>778986;:76896:7I/'I)86;:I)587CI.&I(5I'6985065649H'9I(8G'4994868H':G'7688876II7-(%76846;87I)I(8E&25845:9::483I0'60=7I)A4:>I(<:I.'85I(I-&9488664 NM:i:1 MD:Z:98G113 oR:Z:1 [...]
+simulated.561 16 1 1024 255 47M1D124M * 0 0 GGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGGCCTACGC 'I6&.I839524'/I757<836(I<9'G:(I58<58)I'H35659<6C:3',<I7?(I:67>7'/I=(I6B(1I88(I34795:4887:7=(I'/I656856<'G97)I<89:845@&*8I'I971;496696677'G;(I:962<697773:959:;6:',>I'H86;85 NM:i:1 MD:Z:47A124 oR:Z:1 oH:i:1 oP:i:1023 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.562 0 1 1677 255 138M1I15M1D10M1D47M * 0 0 CTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATACGAGAATGACTAACTGGCCCTTGCTGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGG 0685I'99<47455F&F'I/'I(8G'98G'H';56:?257I(7499=69747;8::<I(5;<5I(77I.&544=;6I=,'F'27674I(<676876I)9:8G'I(;I?-'7585I'H'53I/'I'8I';8<5847796&37;6I(5;799G'76I,I-&I'88:I5)55;7I(0I)I(I(7I'9::I(834<I)I'85988:63>85I(I( NM:i:3 MD:Z:153 [...]
simulated.563 16 1 8304 255 22M1I120M1I49M * 0 0 AAGAAGCGGGACGCCGCCGCTCGTGCAGACGGCGATTTCCACGACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGACTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATA )I2)I89)4I848(I:(I?527'9573292(I328'/I(I46;<'I6:6*I(I35(1I7::'H555>89;'I388'H3<=3564=67=4<1<=<?:'H;7(I446'I73<6577553(I8993)I)I97'G7874;'I73)I=(48=;'H586)I;9:61(I(I89=716(I(I'/I68;'/I46)I97'H=: NM:i:2 MD:Z:191 oR:Z:1 oH:i:1 oP:i:8303 oS:A:R XE:i:2 X [...]
simulated.564 0 1 7281 255 212M * 0 0 CCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGG I)56I(8?I8*&H'4895;I)3I(79I2(<07I(:97G'I/'77I.'899I)7999E&3879F';=38213;F'5;5:;951 at I/'=69:=I(86?9557I=,'996I'5I(988I0'97776<G'H'498790977487474=I/'6G'567I'7I:+&44976:;:8I(I';6I(I)86>8;=I-&I/'8;78574I(:9I)7I.&H'I) NM:i:0 MD:Z:212 oR:Z:1 oH:i: [...]
-simulated.565 16 2 22 255 13M1I144M1D22M * 0 0 TTGGACTCAGCGGTCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGTTAAGAGGTGGGTTACACTT &E)I599A<26'I&'H7'0I5289=6945'I(I;7<96&.I45'H6245(I;;6687774'H27479:;;6)I6(I(I967'H(I<543447885'H:&,I75(I)I&-I8568574:'0I289768(I:'0I8(I:78;6'H'H<6(.AI'G589*I,I(I)I89'H?'0I+I=::8)I NM:i:2 MD:Z:157^G22 oR:Z:2 oH:i:1 oP:i:21 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.566 0 1 6215 255 75M1I37M1D89M * 0 0 GATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTAGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGG <6<6759E&:5;:7:8865<7<:I/'377I'6:89469I0'==29;:I1'=9756I3(<I(86I;+&7I(I.&94':782I':58378;78574:287I';585597I(576>I,;46664G'F'I0'I(:AI)<666II3*&I'95G'I)I)9799519I'876I/':I'I0'I(;7H';47:75=I)869;<8884E&I( NM:i:2 MD:Z:112^A89 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.567 16 1 3653 255 13M1D126M1I19M1I40M * 0 0 TAGAAGCTCCGCCTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGACGTTTATGGTTGCGCCAGTGACTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCG ;6:'H8;6'I;(I)5I7<)I7)I658'H'0I&+;I697=7'I(I456&E2664:58(I:5(I8699'G(I(I8:'/I92)I'1I'/I(I8'I66'/I394617898(2I08&-I*I9'0I:9(I678;467)I<'I526&6&-I5;'I&E;5;(I8884%5:;595:=<959:88<6&-I'I:45<)I;79(I(2I)I66 NM:i:3 MD:Z:13^T185 oR:Z:1 oH:i:1 oP [...]
+simulated.565 16 2 22 255 13M1I144M1D22M * 0 0 TTGGACTCAGCGGTCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGTTAAGAGGTGGGTTACACTT &E)I599A<26'I&'H7'0I5289=6945'I(I;7<96&.I45'H6245(I;;6687774'H27479:;;6)I6(I(I967'H(I<543447885'H:&,I75(I)I&-I8568574:'0I289768(I:'0I8(I:78;6'H'H<6(.AI'G589*I,I(I)I89'H?'0I+I=::8)I NM:i:2 MD:Z:157G22 oR:Z:2 oH:i:1 oP:i:21 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.566 0 1 6215 255 75M1I37M1D89M * 0 0 GATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTAGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGG <6<6759E&:5;:7:8865<7<:I/'377I'6:89469I0'==29;:I1'=9756I3(<I(86I;+&7I(I.&94':782I':58378;78574:287I';585597I(576>I,;46664G'F'I0'I(:AI)<666II3*&I'95G'I)I)9799519I'876I/':I'I0'I(;7H';47:75=I)869;<8884E&I( NM:i:2 MD:Z:112A89 oR:Z:1 oH:i:1 oP:i:6 [...]
+simulated.567 16 1 3653 255 13M1D126M1I19M1I40M * 0 0 TAGAAGCTCCGCCTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGACGTTTATGGTTGCGCCAGTGACTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCG ;6:'H8;6'I;(I)5I7<)I7)I658'H'0I&+;I697=7'I(I456&E2664:58(I:5(I8699'G(I(I8:'/I92)I'1I'/I(I8'I66'/I394617898(2I08&-I*I9'0I:9(I678;467)I<'I526&6&-I5;'I&E;5;(I8884%5:;595:=<959:88<6&-I'I:45<)I;79(I(2I)I66 NM:i:3 MD:Z:13T185 oR:Z:1 oH:i:1 oP: [...]
simulated.568 0 1 8157 255 202M * 0 0 AAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACCGTGTTAATCT I)8489I)I/'I)86I(52<G'6I(I4)3;49I(57:;3I3(75;<I)G'35I(689:8:85I(3I(84I(839678I0'I(;4I(67599I(7I'I'22:48:I(3;789I)9:I(6;:5=86749I(I*I(I0'I(?9688I(68I'8I(63I/'879I(5D&87783A95623I(;<8I,&I(>898I(<89I(I(;88 NM:i:0 MD:Z:202 oR:Z:1 oH:i:1 oP:i:8156 oS:A:F X [...]
-simulated.569 16 1 8376 255 27M1D10M1I171M * 0 0 TGCCATCTCACGCGCGCACGTCTCCGTCACGAAGTATAGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCT 76'H6;9;85779545:8;5947'I7;D798)I9587'33:897(I548@(I'I96(I:7673(I44(I=4;62*I673(I464:>(I'H64888:(I(I&-I=:7&-I7:'G86(I678794436:;477'I7479(I03(I7(I97(I8'/I894:&F4'G83295;:'I(I996:6(I(I&)0II?669',>I39'G6:76'0I77 NM:i:2 MD:Z:27^C181 oR: [...]
+simulated.569 16 1 8376 255 27M1D10M1I171M * 0 0 TGCCATCTCACGCGCGCACGTCTCCGTCACGAAGTATAGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCT 76'H6;9;85779545:8;5947'I7;D798)I9587'33:897(I548@(I'I96(I:7673(I44(I=4;62*I673(I464:>(I'H64888:(I(I&-I=:7&-I7:'G86(I678794436:;477'I7479(I03(I7(I97(I8'/I894:&F4'G83295;:'I(I996:6(I(I&)0II?669',>I39'G6:76'0I77 NM:i:2 MD:Z:27C181 oR:Z [...]
simulated.570 0 1 863 255 217M * 0 0 GCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGT =46I(;67H'5I':I)I1'I(=87529I(I);5955I(:65I8*&6I)9564;7538289I9*&I';1:4I/'I'55I0':4I'98768<:494366689:87I(7:5393G'9<77;8:6;278F&8I.'65H'6F'I1(388<6I'I.&I'=I/'5663I)9I.'87553;I3(7:72993I'76I(6I'7:59=I(G'>983994I)74I<,'7 NM:i:0 MD:Z:217 oR: [...]
-simulated.571 16 1 2516 255 42M1I14M1D105M1I16M * 0 0 GGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTCGGACAGCATAGCATATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCAGTCGCAGAGATCGGTGA &E28875)I3'I*I6(2I:>7807672:373959='I<3(I<*(I96<9377989=7D8(I7&)0II3;6(I88858388&.I+I4<6877>(I<4'I796:;=9(I81:58:73:5&)1II71'H9&.I76'I58:3<4:<46(I:767>9(I6<89'H86%;7594;9::65'I:87 NM:i:3 MD:Z:56^A121 oR:Z:1 oH:i:1 oP:i:2515 oS:A:R XE:i:3 XS:i:0 XI:i:0
-simulated.572 0 1 6880 255 162M1D27M * 0 0 ACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGACGTGCACGACTCACCACAAAAATTTA <I'G'4I(6I(86I)76<I(48I(6I'H'591575I(394I-&I/'I'1I/'86I-&;74488G':77893:I(67I1'5I)89:5565;:I(3G'5:67I(I(837=3945I)>6786I1(::E&888I'9H'2I'7;867H'I'4I-&F&<8I)33I<,'D=;;6::8:86277F&;7II1*&I/'4 NM:i:1 MD:Z:162^A27 oR:Z:1 oH:i:1 oP:i:6879 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.573 16 1 2181 255 75M1I67M1D61M * 0 0 CTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGACACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTG :8=(I79'I87768(I8:6'0I'G34&)/;II84?8&+:I88:8(I;813;6676949:8B)I47&-I656:(I7&3977876787;<:'I(I<35&.I6(I:8>3928&E;638:84(I9:48(I8(I',>I8'/I(I<7(ID42:7&+;I95:(I68:&-I4;&-I7'I96=8;562)I2(I8<347837:8:&F4845958 NM:i:2 MD:Z:142^A61 oR:Z:1 oH:i:1 [...]
-simulated.574 0 1 6845 255 44M1D66M1D3M1D79M * 0 0 GGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCATCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGG G'8I(73663<G'580I)=:I2(9775I(H'I2(97I(H'5E&6C65I)856I'67I(7H'I(:077:6H'955I-&I2(I(7I0'9:I.&729:58I(76<6<>6I(:4I,:C69;3=9666I(9I)7326I(I)85559898I'7:5<8I/'79H'8:6H'4F&7I(<3:84I(H'7I.&I(54I(8:F' NM:i:3 MD:Z:44^C66^C3^T79 oR:Z:1 oH:i:1 oP:i:6844 oS:A: [...]
+simulated.571 16 1 2516 255 42M1I14M1D105M1I16M * 0 0 GGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTCGGACAGCATAGCATATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCAGTCGCAGAGATCGGTGA &E28875)I3'I*I6(2I:>7807672:373959='I<3(I<*(I96<9377989=7D8(I7&)0II3;6(I88858388&.I+I4<6877>(I<4'I796:;=9(I81:58:73:5&)1II71'H9&.I76'I58:3<4:<46(I:767>9(I6<89'H86%;7594;9::65'I:87 NM:i:3 MD:Z:56A121 oR:Z:1 oH:i:1 oP:i:2515 oS:A:R XE:i:3 XS:i:0 XI:i:0
+simulated.572 0 1 6880 255 162M1D27M * 0 0 ACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGACGTGCACGACTCACCACAAAAATTTA <I'G'4I(6I(86I)76<I(48I(6I'H'591575I(394I-&I/'I'1I/'86I-&;74488G':77893:I(67I1'5I)89:5565;:I(3G'5:67I(I(837=3945I)>6786I1(::E&888I'9H'2I'7;867H'I'4I-&F&<8I)33I<,'D=;;6::8:86277F&;7II1*&I/'4 NM:i:1 MD:Z:162A27 oR:Z:1 oH:i:1 oP:i:6879 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.573 16 1 2181 255 75M1I67M1D61M * 0 0 CTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGACACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTG :8=(I79'I87768(I8:6'0I'G34&)/;II84?8&+:I88:8(I;813;6676949:8B)I47&-I656:(I7&3977876787;<:'I(I<35&.I6(I:8>3928&E;638:84(I9:48(I8(I',>I8'/I(I<7(ID42:7&+;I95:(I68:&-I4;&-I7'I96=8;562)I2(I8<347837:8:&F4845958 NM:i:2 MD:Z:142A61 oR:Z:1 oH:i:1 o [...]
+simulated.574 0 1 6845 255 44M1D66M1D3M1D79M * 0 0 GGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCATCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGG G'8I(73663<G'580I)=:I2(9775I(H'I2(97I(H'5E&6C65I)856I'67I(7H'I(:077:6H'955I-&I2(I(7I0'9:I.&729:58I(76<6<>6I(:4I,:C69;3=9666I(9I)7326I(I)85559898I'7:5<8I/'79H'8:6H'4F&7I(<3:84I(H'7I.&I(54I(8:F' NM:i:3 MD:Z:44C66C3T79 oR:Z:1 oH:i:1 oP:i:6844 oS:A:F X [...]
simulated.575 0 1 7124 255 203M * 0 0 CTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACC <I2(59I*58I)H'9I/'I0'765I'7I':8>8I(7<G'66;5659525I'I0'8I/'5788I)G'9:;::85;884:5:889716:I'6I'460I.&8575I(897I'876I)<H'I'6>9I'729:78948762I8*&75I)7I(;4382/66I)I)94H'73I8*&H'84857I(6I)80I/'475I(;86I'I.&27I' NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:7123 oS:A:F [...]
simulated.576 0 1 6082 255 203M * 0 0 ACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTT >I(959 at 948I*8I(7=4H'<71:II3*&9I8*&85:I'85=I-&I(356655;?;96>I(<I?-'I0'673=>;7I(714?I(95I/';77I4)445588;36458:9>8:69G'287G'66;I,88I)=I2(4578:7I(/478>777599:6:I-&5=4I'7:83:74I0'79<465I0'76573I1':H'59I>,'5I( NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:6081 oS:A:F [...]
simulated.577 0 1 3848 255 181M1I2M * 0 0 TTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACTAG I(6I*858735818:I(5H'9I)489:;57I(9I(:<46975II9.(%688785=<E&I(9I(<799464;6768I.&:4=7I(2278I';9I/'6:H'I/'66956 at 873I(I';6::77:8/6799I0'7I(65I'9<44I(966886=H'>I(;8I(424:729I.&I:+&7I)6365*29 NM:i:1 MD:Z:183 oR:Z:1 oH:i:1 oP:i:3847 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.578 16 1 2217 255 63M1D38M1I93M * 0 0 CCCGATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAACGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCC '.I)<546&E698:7:93:99634:)I;7&,I8693&F659:9494679952)I(I779'0I7D57><42<&E868=;85(I9<4:(I:'I&*8I8(1I'F)97(I'I6847&+:I538(I588'/I24&-I6(I7;:@97;2&F:'I85B76;7893:'I:8698<<77754&*1II98(I'/I'I673;(I'F NM:i:3 MD:Z:3C59^A131 oR:Z:1 oH:i:1 oP:i:2217 oS:A:R [...]
-simulated.579 16 1 5015 255 86M1I21M1D78M1I5M * 0 0 CGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGTCCTGTCTCCATGTTGTCCAAGTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCGAAGGT 47:86(I=76'G<>'I79&.I6%(.9II9&*8I'G69:86:68'I5;:&.I;5'F:66(I;3975)I7;'H8698*I5946/<:9:%(I6936>*I863'I87*I(I6*I;(I;C;904&).:II=6877832=5'H;326'0I297(I6(I7996(I7665&*8I;(I(1I774(I=17'H(I8:)(I(I: NM:i:3 MD:Z:107^T83 oR:Z:1 oH:i:1 oP:i:5014 oS:A:R XE: [...]
-simulated.580 0 1 3867 255 23M1D56M1I99M * 0 0 TCAATCAGCTGAATGGTCACGAGAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCGAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAAC ;5H'57;77:;I(6I)97999;7II6,'7488=:7;H'G':G'8:0=55<68=76I.&6;::I(8956I)60I/'4;H'(I-&:<87668:6I(I(7=7965:57405;I/'8I(63I*77::I'7;14:?4I'6I)64H'65;84<4I.&I:+&;H'657775656I(;8I4)I;+&9 NM:i:2 MD:Z:23^A155 oR:Z:1 oH:i:1 oP:i:3866 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.581 0 1 6870 255 59M1D157M * 0 0 TCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAAC 26I(I(I-&84I)I(;I)7I)=;G'909H';9I(5I)I(:452=1I'<97I0'I-&I)3I,:8I-&7;7953I'9484567G'84I.&7G'363359455H'6I(1683G'H'9>:96936I'75:;6I3(84I(:77E&0I'9I(8:389G'I(9I-&F';8I(8;I at -'I'1477:76844>29I':;IF/)%I/'<I'24;<74I(99;;I(: NM:i:1 MD:Z:59^ [...]
-simulated.582 0 1 5067 255 36M1I31M1D33M1I95M * 0 0 GTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCGTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTACGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTG <G'449I'77868H'94G';89:E&579:7768:H'%398/7F&<56I(8;I(H'=I/'2I';7;978II5,'475987768>I'3877I/'477I(4I(;%343I(<86;I9*&8I(I/'737I*52;H'E&8;I)H'I2(688I/'G'H'76:07=:<87;8I-&6<5I(7G'I(8I'8;79I(5I(158>87:= NM:i:3 MD:Z:67^C128 oR:Z:1 oH:i:1 oP:i:5066 [...]
+simulated.578 16 1 2217 255 63M1D38M1I93M * 0 0 CCCGATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAACGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCC '.I)<546&E698:7:93:99634:)I;7&,I8693&F659:9494679952)I(I779'0I7D57><42<&E868=;85(I9<4:(I:'I&*8I8(1I'F)97(I'I6847&+:I538(I588'/I24&-I6(I7;:@97;2&F:'I85B76;7893:'I:8698<<77754&*1II98(I'/I'I673;(I'F NM:i:3 MD:Z:3C59A131 oR:Z:1 oH:i:1 oP:i:2217 oS:A:R [...]
+simulated.579 16 1 5015 255 86M1I21M1D78M1I5M * 0 0 CGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGTCCTGTCTCCATGTTGTCCAAGTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCGAAGGT 47:86(I=76'G<>'I79&.I6%(.9II9&*8I'G69:86:68'I5;:&.I;5'F:66(I;3975)I7;'H8698*I5946/<:9:%(I6936>*I863'I87*I(I6*I;(I;C;904&).:II=6877832=5'H;326'0I297(I6(I7996(I7665&*8I;(I(1I774(I=17'H(I8:)(I(I: NM:i:3 MD:Z:107T83 oR:Z:1 oH:i:1 oP:i:5014 oS:A:R XE:i [...]
+simulated.580 0 1 3867 255 23M1D56M1I99M * 0 0 TCAATCAGCTGAATGGTCACGAGAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCGAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAAC ;5H'57;77:;I(6I)97999;7II6,'7488=:7;H'G':G'8:0=55<68=76I.&6;::I(8956I)60I/'4;H'(I-&:<87668:6I(I(7=7965:57405;I/'8I(63I*77::I'7;14:?4I'6I)64H'65;84<4I.&I:+&;H'657775656I(;8I4)I;+&9 NM:i:2 MD:Z:23A155 oR:Z:1 oH:i:1 oP:i:3866 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.581 0 1 6870 255 59M1D157M * 0 0 TCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAAC 26I(I(I-&84I)I(;I)7I)=;G'909H';9I(5I)I(:452=1I'<97I0'I-&I)3I,:8I-&7;7953I'9484567G'84I.&7G'363359455H'6I(1683G'H'9>:96936I'75:;6I3(84I(:77E&0I'9I(8:389G'I(9I-&F';8I(8;I at -'I'1477:76844>29I':;IF/)%I/'<I'24;<74I(99;;I(: NM:i:1 MD:Z:59T [...]
+simulated.582 0 1 5067 255 36M1I31M1D33M1I95M * 0 0 GTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCGTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTACGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTG <G'449I'77868H'94G';89:E&579:7768:H'%398/7F&<56I(8;I(H'=I/'2I';7;978II5,'475987768>I'3877I/'477I(4I(;%343I(<86;I9*&8I(I/'737I*52;H'E&8;I)H'I2(688I/'G'H'76:07=:<87;8I-&6<5I(7G'I(8I'8;79I(5I(158>87:= NM:i:3 MD:Z:67C128 oR:Z:1 oH:i:1 oP:i:5066 o [...]
simulated.583 0 2 130 255 14M1I166M * 0 0 CGTATCTCTGGGTCGTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTA 8;7164;14I/'56%6/98I(;I/';I'99757H'I)::I?-'H'58;I(I0'I(I(;;I'5I0'I'0?77I(7I(7I(D&5958687:I)444I(<I'I1'62I?-'H'>I)=F&I(87;69I-&I);49:6:3=9:4975E&94H'I-&9567I'59I'8=I(77893<6;6:487876 NM:i:1 MD:Z:180 oR:Z:2 oH:i:1 oP:i:129 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.584 16 1 5745 255 77M1I97M1D14M * 0 0 ATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCACGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAATCGGGTATAAA ;/53:45&*2II'H65(I:6736'H'I068'I59;8'I99'I:3;87<83:)I(I74'I(I7(I9836986479'H:%744'G89:688769:7)I665988)I<5'G*I:49(I1719893:666>4(I:<'I8(I86(I7'0I:9(I(1I39'/I8898(I795<477'0I(I)6I51&.I:37'1I NM:i:2 MD:Z:174^A14 oR:Z:1 oH:i:1 oP:i:5744 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.585 16 1 5278 255 32M1D92M1D95M * 0 0 TAGGGTTTGCAGACGGACAGCCTTGGTACATTAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTAT 29'0I'0I898573'H:7;9'I'I(I969:'IC>696454'.I:;&,I5'.I'I'I='I9)I896;<6;7'.I56:0:5:(.AI7*I3(I;>:&.I7788876659'F6<'G<868857)I9;6+I85461'H7'G;(1I8'I:3&*3II7;:8;(I:85;6:7<(I77(I;9;86=(I89;7<5:48(I(I733(I;(I97;566(I'H4'H89763% NM:i [...]
-simulated.586 16 1 7805 255 37M1D134M1D21M * 0 0 AGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCACCCATAGCGATCCCGTTTC 97&*3II9:(I'0I:4;;689'H<8349776=(I;57,I73'/I'0I9<8(I7(I87787<:'I&.I7'G)I;64738568',=I6(I9>9(I*I49846445&.I89'I6*I9(I<5(I628(I77599588<(I=5'H4398977817;67(I:<944'H7)I:'H967B7'1I8:786:23'/I6&.I; NM:i:2 MD:Z:37^G134^C21 oR:Z:1 oH:i:1 oP:i:7804 oS:A:R XE [...]
+simulated.584 16 1 5745 255 77M1I97M1D14M * 0 0 ATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCACGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAATCGGGTATAAA ;/53:45&*2II'H65(I:6736'H'I068'I59;8'I99'I:3;87<83:)I(I74'I(I7(I9836986479'H:%744'G89:688769:7)I665988)I<5'G*I:49(I1719893:666>4(I:<'I8(I86(I7'0I:9(I(1I39'/I8898(I795<477'0I(I)6I51&.I:37'1I NM:i:2 MD:Z:174A14 oR:Z:1 oH:i:1 oP:i:5744 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.585 16 1 5278 255 32M1D92M1D95M * 0 0 TAGGGTTTGCAGACGGACAGCCTTGGTACATTAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTAT 29'0I'0I898573'H:7;9'I'I(I969:'IC>696454'.I:;&,I5'.I'I'I='I9)I896;<6;7'.I56:0:5:(.AI7*I3(I;>:&.I7788876659'F6<'G<868857)I9;6+I85461'H7'G;(1I8'I:3&*3II7;:8;(I:85;6:7<(I77(I;9;86=(I89;7<5:48(I(I733(I;(I97;566(I'H4'H89763% NM:i [...]
+simulated.586 16 1 7805 255 37M1D134M1D21M * 0 0 AGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCACCCATAGCGATCCCGTTTC 97&*3II9:(I'0I:4;;689'H<8349776=(I;57,I73'/I'0I9<8(I7(I87787<:'I&.I7'G)I;64738568',=I6(I9>9(I*I49846445&.I89'I6*I9(I<5(I628(I77599588<(I=5'H4398977817;67(I:<944'H7)I:'H967B7'1I8:786:23'/I6&.I; NM:i:2 MD:Z:37G134C21 oR:Z:1 oH:i:1 oP:i:7804 oS:A:R XE:i [...]
simulated.587 0 1 6069 255 183M * 0 0 ACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTA 37I':84<7<I2(9I(8<4<787I(3I(6;9I*7447II2*&:I=,'=88I':65I-&I(5699<75785 at 7I)5I<+&I0';97=:68F'6695H':4I.'6@;I3(5997565785<7986<179G'948I'955I(=6H'9I/'7377:6I)68>;597688<=74I2(981G'68573@ NM:i:0 MD:Z:183 oR:Z:1 oH:i:1 oP:i:6068 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.588 0 1 4270 255 70M1D139M * 0 0 CAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACC <I(:6:=I*8I*G'89I-&66I=,'69>465:65I(I1(I0':;5I)94:5I(I/'870880:497;I(4DF&87=I(1I)3I(I'3199I';74I);8779=E&5=8:I'597I3(466:6918527:4577;7II3+'I(9278;;=<G'482;I'I(E&26I3(:153I*7;I(25996I'5II2*&35688=I(76875:657I' NM:i:1 MD:Z:70^A139 oR:Z:1 oH [...]
+simulated.588 0 1 4270 255 70M1D139M * 0 0 CAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACC <I(:6:=I*8I*G'89I-&66I=,'69>465:65I(I1(I0':;5I)94:5I(I/'870880:497;I(4DF&87=I(1I)3I(I'3199I';74I);8779=E&5=8:I'597I3(466:6918527:4577;7II3+'I(9278;;=<G'482;I'I(E&26I3(:153I*7;I(25996I'5II2*&35688=I(76875:657I' NM:i:1 MD:Z:70A139 oR:Z:1 oH: [...]
simulated.589 16 1 8769 255 207M * 0 0 AACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCG )I<95)I<5648;98789(I59&-I586'G565:579&F(I599857'G5>68:7887(I4'H'I;)I&)1II79(I375486)I(1I:'H'/I=78'I88757'H;4(I7&-I'/I(I;89993905(I8'H84(I5:852=569:57&+:I36&F'I(I'I'I:1;754692(I4(I'H85)I5(I984(I(I67)I6'/I829> NM:i:0 MD:Z:207 oR:Z:1 oH:i:1 oP:i:87 [...]
simulated.590 0 1 2446 255 119M1I85M * 0 0 GACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCGATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTT 37:E&9I/'8F&73I(598I)83798>9I'679;8H'939;I(:6;;>993=71<I(6H'I'I(I)95I(I(58566I'3I'G'5I-&54:45643;4><49793I'46I(5H'37883(446:999I)<I)<II2*&9:4I(;2736474I2(H'8754668I):=I(565:=72H'<78978766=II0)&7;H'1I-&<8F& NM:i:1 MD:Z:204 oR:Z:1 oH:i:1 oP:i:24 [...]
-simulated.591 16 2 77 255 51M1D94M1I29M1D8M1I24M * 0 0 ACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTACCTGGTTTGTCCCCAACAATCCAAGCAGATTAATATGTATGTCGTCGTCCAGCCTTTGACTA 553=)I4:856888:(I8&D)I:65'I'I4969644548)I='1I<=(I(I,I77679768(2I5597::(I9'/I:)I68929'G(I48&*9I(I3=:'G&-I'I(I;5'H9&.I(I46<3(I;'H5)I)I694892;6)I:94&'I<'I&-I49&+;I&E7(I8'H'H<8:88,I'I7495&949;:78<8:(I68(I(1I373=7 NM:i:4 MD:Z:51^C123 [...]
-simulated.592 16 1 4782 255 49M1D60M1I75M * 0 0 ATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTAGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGT :;;'G=85&+;I:(I847&D9='G(I93'H'0I6<'/I866'/I'I7)I(/FI7=896*I4'I(I9:'I8='F87'F:686.'.I87'H585:1:71953(I6(2I4:5%(I:&,<I8;1<7'G69(I)I9;(I)I922944:&F9=3(I'I6596:24659;8'I8(I88<7'I3>5(I9'.I5 NM:i:2 MD:Z:49^A135 oR:Z:1 oH:i:1 oP:i:4781 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.593 16 1 3665 255 180M1D39M * 0 0 CTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTC D'-?I8:'G1'I767(I'/I&+:I90;2=)I'H95;)I@:?388<(I=7(I:6;4(I'H(I97&.I77'G'/I(2I'I:(I17'0I;68765936(1I37'/I(I:'.I87'G9=55866(I5(I7679'0I=7'I'F3:8&E898;76467>7379;8<56:5'/I'G;6:6(I59:(I+I'I:(I36<4<;9513)I7'I7(I8853627(I7'I6: NM:i:1 M [...]
+simulated.591 16 2 77 255 51M1D94M1I29M1D8M1I24M * 0 0 ACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTACCTGGTTTGTCCCCAACAATCCAAGCAGATTAATATGTATGTCGTCGTCCAGCCTTTGACTA 553=)I4:856888:(I8&D)I:65'I'I4969644548)I='1I<=(I(I,I77679768(2I5597::(I9'/I:)I68929'G(I48&*9I(I3=:'G&-I'I(I;5'H9&.I(I46<3(I;'H5)I)I694892;6)I:94&'I<'I&-I49&+;I&E7(I8'H'H<8:88,I'I7495&949;:78<8:(I68(I(1I373=7 NM:i:4 MD:Z:51C123T [...]
+simulated.592 16 1 4782 255 49M1D60M1I75M * 0 0 ATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTAGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGT :;;'G=85&+;I:(I847&D9='G(I93'H'0I6<'/I866'/I'I7)I(/FI7=896*I4'I(I9:'I8='F87'F:686.'.I87'H585:1:71953(I6(2I4:5%(I:&,<I8;1<7'G69(I)I9;(I)I922944:&F9=3(I'I6596:24659;8'I8(I88<7'I3>5(I9'.I5 NM:i:2 MD:Z:49A135 oR:Z:1 oH:i:1 oP:i:4781 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.593 16 1 3665 255 180M1D39M * 0 0 CTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTC D'-?I8:'G1'I767(I'/I&+:I90;2=)I'H95;)I@:?388<(I=7(I:6;4(I'H(I97&.I77'G'/I(2I'I:(I17'0I;68765936(1I37'/I(I:'.I87'G9=55866(I5(I7679'0I=7'I'F3:8&E898;76467>7379;8<56:5'/I'G;6:6(I59:(I+I'I:(I36<4<;9513)I7'I7(I8853627(I7'I6: NM:i:1 M [...]
simulated.594 0 1 5671 255 1M1I213M1I14M * 0 0 TACTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTAGAAATGTTCCCGAG :'7I(I8*&587I(2:9I(:I)G';I'5I(7>I0'8I.'2546I-&4592;I(I)8G'9179I*47037I(466I(<8499:II1)&H'83I'371:3I(I(5:;I(<:69I'77I(584?88<66I)I)34I(D&;E&56477<6864I'4376I(;:6:98<?558I':97273I':7I(I(>58I'87:85>6856::9I(66G'8I'25I [...]
simulated.595 16 1 5531 255 105M1I43M1I62M * 0 0 CCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCTAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCGAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAA (I778'0I3<)I'I(2I7'H7=74'F;(I688'H0697755)I7)I687668;::849,I:5'I*I=67712'H776699'H;=(I69/759777847A38:8*I2355;*I694488'1I82(I<595(I956(I384)I77'I',<I':96'G7:5'G6(I'F3(I5(I<7'0I5(2I716<&-I5587:'F(I5(I575;*I8;878'H NM:i:2 MD:Z:210 o [...]
-simulated.596 0 1 829 255 18M1I154M1I16M1D13M * 0 0 AGCTACACATGATCTACCTATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGACCCTGATGCCTTTAATCCTAGCGGCGGGT 4;8784=4;97;;5<9I(&8876:65<;0I'6I(F'=7I(729I'<I*;H'I/'I(85;6;7E&H'64688I(978I8*&8I(5:73:5=5<86;I>,'I(8385I1(G';4I0'9;I(<::6:73234;;734;8:7G'642:8:I)579426:78599I(6I0'<5G'<I)*I2(49775F&I.&I(<I,5676G'8I0'; NM:i:3 MD:Z:188^C13 oR:Z:1 oH:i: [...]
+simulated.596 0 1 829 255 18M1I154M1I16M1D13M * 0 0 AGCTACACATGATCTACCTATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGACCCTGATGCCTTTAATCCTAGCGGCGGGT 4;8784=4;97;;5<9I(&8876:65<;0I'6I(F'=7I(729I'<I*;H'I/'I(85;6;7E&H'64688I(978I8*&8I(5:73:5=5<86;I>,'I(8385I1(G';4I0'9;I(<::6:73234;;734;8:7G'642:8:I)579426:78599I(6I0'<5G'<I)*I2(49775F&I.&I(<I,5676G'8I0'; NM:i:3 MD:Z:188C13 oR:Z:1 oH:i:1 [...]
simulated.597 0 2 155 255 9M1I93M1I57M1I32M * 0 0 CCTCATATTAGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAACTATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTAGTAGCGCGCACATAAACCAATCATCTCTTCCGG I)73528H'&I(6:I;+&I(675H'I,&I'I(7;I)3I.'I(84=:I'9I(9I(I'77:47:98G'56=I(5I(I0'7:I9*&I'8H'1E&H'9;835I.&I'%:9<3<554356388I(>;I(I/'8928I):;I)98I(98<867977;=69673:I*7%869498;;385<I0'I(G'54:736:I(E&I* NM:i:3 MD:Z:191 oR:Z:2 oH:i:1 oP:i:154 oS:A:F XE:i:3 [...]
-simulated.598 0 1 671 255 32M1I71M1D82M1I22M * 0 0 TGCACAGACTCAATCTAGTCACGTCCGCTAGCGATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACGTTCAAGGCAGGTGTCCGCCTGG =4657989592I(;?57:67<>46I'::9;<7'985I(968I'9<5I(69I-&8I)66I(8:6978677<<I(::92I)97G'58955I)I(:647G'G'9I.'I+I'5456I.'<396778I9+&738<9:;95>56=94==I0'858<999<8:<H'58295571;<67639I(953:889640(I(7I)I'79I(68=I(6G'9I) NM:i:3 MD:Z:103^A104 [...]
+simulated.598 0 1 671 255 32M1I71M1D82M1I22M * 0 0 TGCACAGACTCAATCTAGTCACGTCCGCTAGCGATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACGTTCAAGGCAGGTGTCCGCCTGG =4657989592I(;?57:67<>46I'::9;<7'985I(968I'9<5I(69I-&8I)66I(8:6978677<<I(::92I)97G'58955I)I(:647G'G'9I.'I+I'5456I.'<396778I9+&738<9:;95>56=94==I0'858<999<8:<H'58295571;<67639I(953:889640(I(7I)I'79I(68=I(6G'9I) NM:i:3 MD:Z:103A104 o [...]
simulated.599 0 1 8050 255 185M * 0 0 TCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTG 7:H'8=6I)I0'I(59I(8I(956I:+&356665I(:566535467I(I(4746;7G'I)E&944F'9<F&I(5805I(;7896;6495557F'4:72638:197I=,'5<;6H'I,&H';8I(66<I(9I(I/'51;4G'52357I1(9766I)I(93H'7:;6;=4;I'7H';7I'8476413 NM:i:0 MD:Z:185 oR:Z:1 oH:i:1 oP:i:8049 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.600 0 1 6815 255 61M1D78M1I61M * 0 0 CTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTACTCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATA 8=5I'9<=8:I(38=9>:7279:6I'I)6I.&;I(:57;46I)694H'89I1(=;:8H'I(I,:8F'I'8I)9I(36I(:=:I(86I'5H'I(732463I)67;I.&I1'I(9I0':9I1'561558I'9398=94I(6&:I2(<I)9;989:774G'4H'566;I(I(:8431=89G'9:<67I-&36H'1:6I)7I(<5 NM:i:2 MD:Z:61^C139 oR:Z:1 oH:i:1 oP:i:68 [...]
+simulated.600 0 1 6815 255 61M1D78M1I61M * 0 0 CTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTACTCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATA 8=5I'9<=8:I(38=9>:7279:6I'I)6I.&;I(:57;46I)694H'89I1(=;:8H'I(I,:8F'I'8I)9I(36I(:=:I(86I'5H'I(732463I)67;I.&I1'I(9I0':9I1'561558I'9398=94I(6&:I2(<I)9;989:774G'4H'566;I(I(:8431=89G'9:<67I-&36H'1:6I)7I(<5 NM:i:2 MD:Z:61C139 oR:Z:1 oH:i:1 oP:i:681 [...]
simulated.601 16 1 5642 255 174M1I21M * 0 0 GCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCGTCACCAGACGGATATAGTAGT 3933:9&-I:7(I83<1(I733)I9;<'I84(I',<I=<8(I539(I7(I'I8(I7'I58(1I6&-I4:;9'/I6695:)I'H8(I<49;(I96749(I694(I8614:7%)0GI+I:7(I7:895'H(I887(I7886(I77'F;746757<4(I(I48)I)I9&F9743733&878)I155<'H:56687487< NM:i:1 MD:Z:195 oR:Z:1 oH:i:1 oP:i:5641 oS:A:R XE:i:1 [...]
simulated.602 0 1 4897 255 19M1I176M * 0 0 GGATGACTTGCGGCCATCCGAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGG I(6:787I(:5I)G'98I''F&2979719I'566I'I(5<569:3497:7I'8I(86<=I(8;3I(;I2(I)I'><:7I*5I)62559I*69<7/I(7;;;I(;7<5030I1(6I2(9:49888I)167I'3:G'5:I.&8II9.(&5I:+&I(888<5:68I(96<I.':4I(725E&8:5:<I(8=I(5873I' NM:i:1 MD:Z:195 oR:Z:1 oH:i:1 oP:i:4896 oS:A:F XE:i:1 X [...]
-simulated.603 0 2 200 255 28M1D133M1I26M * 0 0 TTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGGCGGGTCGGGGAGATTTATCCTCATC I)9F'4I(H'<;;;996:D&62=G'4I(I,76IA-'I'7I(3I(I)56985I/'I(>7716=59;568;3I(15I)I0'6:<3G';5I)8AI*46;6;56989695=67:I(59435;4785869I-&I'I(=46574=I(I)E&9742:77<8I'3::F'E&9I1(66I;+&976I-&;9I*>;467 NM:i:2 MD:Z:28^T159 oR:Z:2 oH:i:1 oP:i:199 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.604 0 1 5410 255 7M1D21M1I72M1D100M * 0 0 GCCAGGTGGTGGTGAAAAACACGTGGAGACTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGT 5I(8I(:I+7I)6:II2*&83478G'34*55>:75G'41G'884669I):<42483::I(H'802I(6I(747628G'I(3I)436;;I(;77>4=94I)9I,67F';4I2(I/'6/608I(5:6I0'99G'I(I.'9G'797 at I(9I)75:G'6=6:6;9H'=I)5<91985:71:6I)87E&I(68;577G'76:8793 NM:i:3 MD:Z:7^G93^A100 oR:Z:1 oH:i:1 [...]
+simulated.603 0 2 200 255 28M1D133M1I26M * 0 0 TTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGGCGGGTCGGGGAGATTTATCCTCATC I)9F'4I(H'<;;;996:D&62=G'4I(I,76IA-'I'7I(3I(I)56985I/'I(>7716=59;568;3I(15I)I0'6:<3G';5I)8AI*46;6;56989695=67:I(59435;4785869I-&I'I(=46574=I(I)E&9742:77<8I'3::F'E&9I1(66I;+&976I-&;9I*>;467 NM:i:2 MD:Z:28T159 oR:Z:2 oH:i:1 oP:i:199 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.604 0 1 5410 255 7M1D21M1I72M1D100M * 0 0 GCCAGGTGGTGGTGAAAAACACGTGGAGACTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGT 5I(8I(:I+7I)6:II2*&83478G'34*55>:75G'41G'884669I):<42483::I(H'802I(6I(747628G'I(3I)436;;I(;77>4=94I)9I,67F';4I2(I/'6/608I(5:6I0'99G'I(I.'9G'797 at I(9I)75:G'6=6:6;9H'=I)5<91985:71:6I)87E&I(68;577G'76:8793 NM:i:3 MD:Z:7G93A100 oR:Z:1 oH:i:1 o [...]
simulated.605 0 1 2452 255 56M1I142M * 0 0 CCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTCGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTT I4)9I(@6I'507I'76<496;E&6969=I)5841I'0883553:7=79I(4I(I)&I(I(7:I'I(:;4:1I*5I)I(6I/'87759491<79697877I(:7H'<I)798<6B88<3<<I(7G'5II0)&939H'87:4:>55I0'I)7.98666I(85I';453472I(:7747;7914II2*&86G'.I-&:6I( NM:i:1 MD:Z:198 oR:Z:1 oH:i:1 oP:i:2451 oS:A:F XE [...]
-simulated.606 0 2 141 255 59M1D76M1D85M * 0 0 GTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAG :9849=9I)7I0';I(1;578I)I':8I;+&I(888I)I,&H'G'38I(:I1'H'5785C7I)5H'I(54>6:7;6F&878I)7I)I0'9<I<,'G'7I'6I(H'8:8<:I/'G'3<6696768<76>5I(77H'I,:<6?I'68I)97I(95997755:967976:6I)765698;887788I2(I)I+:49:687F&I'I(22:998898H'577F&9 NM:i [...]
-simulated.607 0 1 4968 255 65M1D14M1I82M1I48M * 0 0 CCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGTCCCCCCATTTTACCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGACATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTC I*5<9;H';I'67485I*72816I'7588I(76:<;:>I.'9I-&8757=66I(;8<I(9;H';8I+8II</*&;I8*&&I(:;95;763I(126I3(78I';3;G'?;584G'77I)::7:I(/2:94;967I)774;7I):6:I(<7H'G';I/'5I(<:(<694II</)&:86::9<389I(;588I/'858G'8I'::96I'794;< NM:i:3 MD:Z:65^G [...]
+simulated.606 0 2 141 255 59M1D76M1D85M * 0 0 GTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAG :9849=9I)7I0';I(1;578I)I':8I;+&I(888I)I,&H'G'38I(:I1'H'5785C7I)5H'I(54>6:7;6F&878I)7I)I0'9<I<,'G'7I'6I(H'8:8<:I/'G'3<6696768<76>5I(77H'I,:<6?I'68I)97I(95997755:967976:6I)765698;887788I2(I)I+:49:687F&I'I(22:998898H'577F&9 NM:i [...]
+simulated.607 0 1 4968 255 65M1D14M1I82M1I48M * 0 0 CCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGTCCCCCCATTTTACCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGACATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTC I*5<9;H';I'67485I*72816I'7588I(76:<;:>I.'9I-&8757=66I(;8<I(9;H';8I+8II</*&;I8*&&I(:;95;763I(126I3(78I';3;G'?;584G'77I)::7:I(/2:94;967I)774;7I):6:I(<7H'G';I/'5I(<:(<694II</)&:86::9<389I(;588I/'858G'8I'::96I'794;< NM:i:3 MD:Z:65G1 [...]
simulated.608 0 1 7735 255 191M * 0 0 GATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAA 7926G'I)I)838H'7?4<6:6I'I(I(48I,&853I9*&9H'I-&G'I(:98:G';7549I(73I.&6486IG0)%36I'I/'2762:75I)999.=75;5E&<0<I-&5:I0'I0'7<6E&6I(99<56:<I)I-&4I'I(864278787I=,'5I(74=I)H'9<66?868I.':5I'5F'4H':4I( NM:i:0 MD:Z:191 oR:Z:1 oH:i:1 oP:i:7734 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.609 16 2 197 255 66M1I41M1I38M1I50M1I17M * 0 0 CACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATAGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCACTGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTACCGGTAGTCAGCGAACTGAAGCGGGTCGGGGAGATTTATCCTCATCTCTCGTTCTGGGAGGTAGCTAA 675(I9)I7&E'I<84391=6(I15<(I6(I(3I68&*8I'H9'F<(I)I8:<>6'/I'I1>866;'936>:965)I86(I(3I=?4:&F86(I9;(I4646;9:86:&68:7;=5(I5557489>759=:'/I(I'G:936:75'I)(I)I;>685:;<7&E769)I92'0I78&*9I796'1I78(I=7:4656:9&'I68(1I3(I89476(I N [...]
simulated.610 16 1 248 255 191M * 0 0 CCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGC )I'I7:(I'I&.I(I96(I8?9:&.I96;8'I:6649;(I54(I9'G6688'I8(I'H'H(I&+9I5879'H99'/I6:99446'G36<'F6394:=&*9I95/87(I(1I9;=(I6'G8'H9&-I7867667:'+3II4(I'G1A54'.I'0I76;8>47630&D'H'/I=32676348'1I(I768(I5 NM:i:0 MD:Z:191 oR:Z:1 oH:i:1 oP:i:247 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.611 16 1 6338 255 185M * 0 0 GGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATC )I'0I(I15(I9885&*2II'I75'H)I'F3:797:8'I598&-I5(I'1I(I7:'H6624;82'I54977:@7:'H'.I'G863@&-I358(I89'I7;4',>I;7(I88'I(I(I39:&E79(I7:6'I463766:<)I45;9'I98(I)I<457;46867888'H5:7(I66:;<57'0I64 NM:i:0 MD:Z:185 oR:Z:1 oH:i:1 oP:i:6337 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.612 0 1 3553 255 52M1I80M1D52M1D9M1D17M * 0 0 CCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCGTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGTTGCCTACCGCAGATGTATTTCTA I-&7<5I.&I(H'68I(;6974;I*E&I(I+69I)7:I.':786I(I(H'I(&3::6 at 28I2(9I)48I)6>I(8I=,'?4;=86I(38:6G'85E&48:6:57I'664I)5I)I7*&78I(7I)266I'I3(I7*</84>I'I(97<I(:75:6<:I'56I*8746I(H'I)86I/'87I(I5)I,I(;I(79I,8<2765:8:I2(:92 NM:i:4 MD:Z: [...]
-simulated.613 16 1 8347 255 129M1D74M1I23M * 0 0 CCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGACTCATCCGGCCCCCGCTCAAAATA (I9;7'G'I77'/I656(I7387;:7)I:96(I701<6:9342389;79724'I96&E8<6'G889777;5::(I3845'I(I=:(I65685'H37'G77768(I90:(I5:=68(I)I7:<::4)I(I,I838&-I76)I86(I587566578:9;87)I2553(I58(I4(I47(I7&.I58;:(I7'G99:985<(I(I9'5876'G)I&*1 [...]
+simulated.612 0 1 3553 255 52M1I80M1D52M1D9M1D17M * 0 0 CCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCGTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGTTGCCTACCGCAGATGTATTTCTA I-&7<5I.&I(H'68I(;6974;I*E&I(I+69I)7:I.':786I(I(H'I(&3::6 at 28I2(9I)48I)6>I(8I=,'?4;=86I(38:6G'85E&48:6:57I'664I)5I)I7*&78I(7I)266I'I3(I7*</84>I'I(97<I(:75:6<:I'56I*8746I(H'I)86I/'87I(I5)I,I(;I(79I,8<2765:8:I2(:92 NM:i:4 MD:Z: [...]
+simulated.613 16 1 8347 255 129M1D74M1I23M * 0 0 CCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGACTCATCCGGCCCCCGCTCAAAATA (I9;7'G'I77'/I656(I7387;:7)I:96(I701<6:9342389;79724'I96&E8<6'G889777;5::(I3845'I(I=:(I65685'H37'G77768(I90:(I5:=68(I)I7:<::4)I(I,I838&-I76)I86(I587566578:9;87)I2553(I58(I4(I47(I7&.I58;:(I7'G99:985<(I(I9'5876'G)I&*1 [...]
simulated.614 16 2 31 255 39M1I161M * 0 0 GCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCGAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTT ::'I)I;'/I6733876;8(I(I89799'/I58(I=876&'I7745:5655'H78:>:2;88'H5(I(I889*I)I6678478998(I;'/I69(I'I&-I888;8:99'/I57654=(I6&-I:&E3855;(I'H::',=I(I:78'H)5I*I)I59'H4(1I'H:857)I6(I<'G)I26:84765'I779'H9'I&.I NM:i:1 MD:Z:200 oR:Z:2 oH:i:1 oP:i:30 oS:A:R X [...]
simulated.615 16 1 2381 255 204M * 0 0 TGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTC 485767856'+4II77(I'/I)I8:64)I'/I'H'H95:2(I&.I'/I=75)I8;*I86(I6877<63(I>(2I8(I7<(I437(I=948:99'H97988'I751:(I66;93=:6846:'H1'H'F'G(I4:&E(I75:6;'H8(I'I<(2I77798:78678567895)I9:'H6'I:35;676959;6(I:(I8&*1II>6 NM:i:0 MD:Z:204 oR:Z:1 oH:i:1 oP:i:2380 oS: [...]
-simulated.616 16 1 4123 255 17M1I22M1I19M1I18M1D28M1I47M1I10M1I67M * 0 0 CAGGGATTCCCAACTTGTACTGTGAATAACAGACAGGTCCGAATTGGCGGGTTACTGGCGACGAACATCCCAAGGCTCGTAGCTGAGGTCGGGCTCCACCAGAGAGACGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCTATAACTTGGCGACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGG 6;&.I=)I&.I(I7'H8';<=67;)I;'F858466(I6'F')I(I'I8'.I(I703'I6<&65)I?87'/I)I(I87=:D85695;)I88&.I9:'F4*I7975896'596499(I'/I9'1I(I'H(I7>3128:77:::666'I'/I73(I:9'98'I:(I(I<&:'0I37&+9I992457: [...]
-simulated.617 0 1 4525 255 10M1D192M * 0 0 GGGTAATGCCTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGC I.&@I(49G'C;:3545H'78I(859:8:68I-&:I(>9776<<I'6886;:9I(I(<:I'4I/'8::9I'2797;62444:H'I3(874I.&669I*I*9I(773I(697:282>I(4I3(8I)<956I(36I*3 at 848I.&56?;39I(6I(55444I.'I'986I(;::564I/'87:I(I(6769?G'5256I2(595 NM:i:1 MD:Z:10^T192 oR:Z:1 oH:i:1 oP:i:4524 [...]
+simulated.616 16 1 4123 255 17M1I22M1I19M1I18M1D28M1I47M1I10M1I67M * 0 0 CAGGGATTCCCAACTTGTACTGTGAATAACAGACAGGTCCGAATTGGCGGGTTACTGGCGACGAACATCCCAAGGCTCGTAGCTGAGGTCGGGCTCCACCAGAGAGACGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCTATAACTTGGCGACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGG 6;&.I=)I&.I(I7'H8';<=67;)I;'F858466(I6'F')I(I'I8'.I(I703'I6<&65)I?87'/I)I(I87=:D85695;)I88&.I9:'F4*I7975896'596499(I'/I9'1I(I'H(I7>3128:77:::666'I'/I73(I:9'98'I:(I(I<&:'0I37&+9I992457: [...]
+simulated.617 0 1 4525 255 10M1D192M * 0 0 GGGTAATGCCTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGC I.&@I(49G'C;:3545H'78I(859:8:68I-&:I(>9776<<I'6886;:9I(I(<:I'4I/'8::9I'2797;62444:H'I3(874I.&669I*I*9I(773I(697:282>I(4I3(8I)<956I(36I*3 at 848I.&56?;39I(6I(55444I.'I'986I(;::564I/'87:I(I(6769?G'5256I2(595 NM:i:1 MD:Z:10T192 oR:Z:1 oH:i:1 oP:i:4524 [...]
simulated.618 0 1 2161 255 177M * 0 0 CCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTT I(5:I'I/'I'5774I(A9<845H':7E&54738H'8;6I.'I(60II:.)&28=8I9+&8567I(7<645=774364<9=G'69I1(:59>I)90765;797789/6I(I)5<:I0'9I(84:?/2>H'62786:9G'8571I(1G'I<,'<I0'I*82I'I(99 at 5I:+&9:2I( NM:i:0 MD:Z:177 oR:Z:1 oH:i:1 oP:i:2160 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.619 16 1 4712 255 73M1I32M1I115M * 0 0 GTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCGTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCGAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGG 7<56&F0378&.I<898'I24&F:9&*1II'/I(I4(I8:85(I3867(I:5458698&)1II7675'I55<7''G645&+;I6)I8:2(I66'I)I69'F&.I6:''.I;<6'0I'F='G'+3II9;;97(I/'I(I9;(I36)I48(I32:48&-I39'H94974;>9687'I9&-I783'F6&+;I;6966'H49(I'G85'G(I786=063'I86; [...]
simulated.620 0 1 785 255 136M1I63M * 0 0 CGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGTCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAG 9865:6<4I;+&<::8A6579::59836;I0'74755817698F'6679=8475;:>4<:H':>5595?<5<I(7H'I'14D&454I(>I(8I(I5)I)876893I(I'679:<I(777I>,'9G':689:48556%84I9*&I(5447I-&H'66I-&94I(98:7795>77;45676278I(89677=I)8:7:;667 NM:i:1 MD:Z:199 oR:Z:1 oH:i:1 oP:i:784 oS:A:F XE [...]
simulated.621 16 1 3821 255 27M1I68M1I123M * 0 0 ACGTCTCTCCCGGTGACAACATGGAAAGTTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATCGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACT :8<83:B4'/I'H5656(I:35(I'.I&)I2'H;2797::642'I4'G8'I3<95584'G;'I:5779:6&*/<II9;544386(I'I;(I77578'6898:58'0I6=9:'I6598(I95&.I4@(I(1I4837<8:60'H)I69591:7978;71(3I7*I74)I at 268(I836427;)I4(I6<*I99;:65;)5I&*9I6(I651636;83(I559 N [...]
-simulated.622 16 1 5104 255 30M1D95M1D65M1I7M * 0 0 GTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACGAGCCTTG 8;74(I8:8(I35(I(I0'.I5(I38>6;6(-7II9655553<44'I8<75'0I::;*I5&F32;9'I7797',<I:(I'/I3::*I;67*I'I<4(I(I(2I>84&-I'I'I786=7767:44<,I78;(I7(I'H:'I989<(I9(I298678:455;(I;:<67'I(I7:5'/I'/I697382(I84'95*I'G: NM:i:3 MD:Z:30^C95^C72 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.623 16 1 4530 255 80M1D116M * 0 0 ATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCG :@;(I'I>88447)I:8)I65777277(2I;(I:7792;6(I>8096=4'H(I84'H8(2I6159'H668:946;729'F+I336&-I:35)I'I8)I976(I;2;;75:1'I2'0I3'I:98;'I29)I87555'0I69437;)I8&F56879(1I*I699(I784;;;&-I469'H'H76@:6(I65:>'/I67 NM:i:1 MD:Z:80^G116 oR:Z:1 oH:i:1 oP:i:4529 oS:A:R XE: [...]
-simulated.624 0 1 8108 255 11M1D24M1I158M * 0 0 AATTCTGAATGTCCGTGTCCGACTCGTATGTCTAAGTGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCC I)I(767I'<4CI(8:59I(2:95273479076I)&7599949555:I9+&8565I(I0'I(;9F'523I(6I(I/':=6:H'97=9:I.'6394I)I)83I*786:8558I(7G';:G'8338:;I/'I(;;I(=7<94H'7H'I(=;869:I):3355I(/<I*87:9969275I(G'I(I1(I(658:2I( NM:i:2 MD:Z:11^T182 oR:Z:1 oH:i:1 oP:i:8107 oS:A:F XE: [...]
-simulated.625 16 1 7828 255 18M1I41M1D21M1D128M * 0 0 TCTCAGTATGGCGCGGGACTAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCTAAGACAAGGCATACGCTGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTT 9429252<;'F3;5'/I7&7'.I'0I7?8'I;(I57:8<39'I(1I4)I'H:973:6<55)5I8(I58:'G)I<8866588,IA6)I;(I0(I;;)I499)I<6<689=;4'G45&E9?89248685878(I558=5'H8)I6'H4;8'I8'0I;7856=98&,I6'/I'I2<8'I'G59896'H:'/I899:47514(I>(I9&E(1I NM:i:3 MD:Z:59^C21 [...]
+simulated.622 16 1 5104 255 30M1D95M1D65M1I7M * 0 0 GTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACGAGCCTTG 8;74(I8:8(I35(I(I0'.I5(I38>6;6(-7II9655553<44'I8<75'0I::;*I5&F32;9'I7797',<I:(I'/I3::*I;67*I'I<4(I(I(2I>84&-I'I'I786=7767:44<,I78;(I7(I'H:'I989<(I9(I298678:455;(I;:<67'I(I7:5'/I'/I697382(I84'95*I'G: NM:i:3 MD:Z:30C95C72 oR:Z:1 oH:i:1 oP:i:51 [...]
+simulated.623 16 1 4530 255 80M1D116M * 0 0 ATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCG :@;(I'I>88447)I:8)I65777277(2I;(I:7792;6(I>8096=4'H(I84'H8(2I6159'H668:946;729'F+I336&-I:35)I'I8)I976(I;2;;75:1'I2'0I3'I:98;'I29)I87555'0I69437;)I8&F56879(1I*I699(I784;;;&-I469'H'H76@:6(I65:>'/I67 NM:i:1 MD:Z:80G116 oR:Z:1 oH:i:1 oP:i:4529 oS:A:R XE:i [...]
+simulated.624 0 1 8108 255 11M1D24M1I158M * 0 0 AATTCTGAATGTCCGTGTCCGACTCGTATGTCTAAGTGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCC I)I(767I'<4CI(8:59I(2:95273479076I)&7599949555:I9+&8565I(I0'I(;9F'523I(6I(I/':=6:H'97=9:I.'6394I)I)83I*786:8558I(7G';:G'8338:;I/'I(;;I(=7<94H'7H'I(=;869:I):3355I(/<I*87:9969275I(G'I(I1(I(658:2I( NM:i:2 MD:Z:11T182 oR:Z:1 oH:i:1 oP:i:8107 oS:A:F XE:i [...]
+simulated.625 16 1 7828 255 18M1I41M1D21M1D128M * 0 0 TCTCAGTATGGCGCGGGACTAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCTAAGACAAGGCATACGCTGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTT 9429252<;'F3;5'/I7&7'.I'0I7?8'I;(I57:8<39'I(1I4)I'H:973:6<55)5I8(I58:'G)I<8866588,IA6)I;(I0(I;;)I499)I<6<689=;4'G45&E9?89248685878(I558=5'H8)I6'H4;8'I8'0I;7856=98&,I6'/I'I2<8'I'G59896'H:'/I899:47514(I>(I9&E(1I NM:i:3 MD:Z:59C21G [...]
simulated.626 16 1 3508 255 199M1I6M * 0 0 AAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTACGTAAT 'H<'I67:036=6'H3'/I7(I94<(I(I:'G>'0I)I>:<;76&*8I688'0I(I(I?2&E556;47'G(I(I'H6:)I44&.I5677(I'I(I'I897;:57'0I9(I95'H48&E8&+:I69:;9:'F6<:8(I76'I8:=7859'GA<7&E<(I&+:I42(I<(I43<)I'.I&+:I8:<26(I'H359)I9286)45:(I7 NM:i:1 MD:Z:205 oR:Z:1 oH:i:1 oP:i: [...]
simulated.627 16 1 1247 255 74M1I136M * 0 0 TCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTACATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATT 8686&-I54(I&E=&*8I(I7'I648538'H96(I63;(I787)I:859(I&-I5(I;&.I'/I9&-I>)I:(I&;8<'I&*7I;13399<9:>&E:(I(I;5'I'0I;66977>&-I<9)I=7'I9'0I9(I?2'H(I59;9<976<4:97(I86==6:782&+:I8'G4(I97'F8'0I854:79(I<(I977499(I9858)I(I9(I NM:i:1 MD:Z:210 oR:Z:1 o [...]
-simulated.628 0 1 6045 255 99M1D128M * 0 0 GCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTT 467I'6;;I-&9995886;9667<6:I(98;778I1'8I*99346:4F&6I(92BI)564;II3+'4I<,'997I*::7I0'G'655874:49627G':I5)I/'3:/7763F'<698I)67I/'947I/'1::7::<:77916:;89:8I'899E&:82I(<1E&6I.'737858I(/>71;5<97<8485I-&869I(::;;477I.'<8988;I/'48 [...]
-simulated.629 0 1 8532 255 95M1D53M1I38M1D21M * 0 0 ACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCGAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCAAGGGCTGCTACTGCCCAG ;7I)1I*885871:I(I(598:6G'I*II1)&1959I:+&79I)77>9I0':I/'8I';I(839<G'7I):8:I);I(9?8I:+&I.&H'677:4I5)44.:664I-&1557<1<775498I(5I)67:I(9I(;;6I.&@F&6I(8:)H'6?;I(H'I(7<8I?-'I(8;I.'I(I.&I(6I(I/'I*E&I.':86770897I/'<4 NM:i:3 MD:Z:95^T91^C21 [...]
-simulated.630 16 1 8525 255 29M1I54M1D18M1D88M1I11M * 0 0 GATTTGTACTTGAAGACTACGAAGGATCAGTCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTCGTAAAACCCAAGTGCGTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTAGGGCCCAAGGG 78(1I<864)I8'G6678398(I(I8886*4'G'H&*2II6>85&+;I3:'G;7:7&.I7'0I7'G4'I8488(I8(I:49)I3D=72&*7I&.I'H=5;15)6I3463788'.I8=655871>8587'I7'H649'I3'I;46&-I;)I8(I48(I954'F(I'G97:&+;I(I74&.I)I&-I(I6'F&'0I'/I'F'/I NM:i:4 MD:Z:83^T18^T99 oR:Z: [...]
-simulated.631 16 1 6953 255 3M1D25M1D59M1I47M1I24M1I50M * 0 0 TATCCATTCAGTATGTATTCAATCTAGGTAGCAGATGCCTAGCGAGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGTAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCGATAATCCACACGCTCTGGATCCTACTCGGATGGAACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTT 2;3,I9'I6979:7968(I6(I4498)ID8=5<:368(I8776%8,I94(I565&E9)I:&E89915&E(I8(3I(I?7)I;1&*7I&)I66=959594:7=3(I53%)0GI)4I8'H983696(I7566(I7>;'72(I4(I57884:877'F3?)I;9'76(I38,I&D(I'/I57'F58'I)I5'.I&.I56/(I6'F398>(I76)I NM:i:8 [...]
+simulated.628 0 1 6045 255 99M1D128M * 0 0 GCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTT 467I'6;;I-&9995886;9667<6:I(98;778I1'8I*99346:4F&6I(92BI)564;II3+'4I<,'997I*::7I0'G'655874:49627G':I5)I/'3:/7763F'<698I)67I/'947I/'1::7::<:77916:;89:8I'899E&:82I(<1E&6I.'737858I(/>71;5<97<8485I-&869I(::;;477I.'<8988;I/'48 [...]
+simulated.629 0 1 8532 255 95M1D53M1I38M1D21M * 0 0 ACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCGAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCAAGGGCTGCTACTGCCCAG ;7I)1I*885871:I(I(598:6G'I*II1)&1959I:+&79I)77>9I0':I/'8I';I(839<G'7I):8:I);I(9?8I:+&I.&H'677:4I5)44.:664I-&1557<1<775498I(5I)67:I(9I(;;6I.&@F&6I(8:)H'6?;I(H'I(7<8I?-'I(8;I.'I(I.&I(6I(I/'I*E&I.':86770897I/'<4 NM:i:3 MD:Z:95T91C21 o [...]
+simulated.630 16 1 8525 255 29M1I54M1D18M1D88M1I11M * 0 0 GATTTGTACTTGAAGACTACGAAGGATCAGTCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTCGTAAAACCCAAGTGCGTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTAGGGCCCAAGGG 78(1I<864)I8'G6678398(I(I8886*4'G'H&*2II6>85&+;I3:'G;7:7&.I7'0I7'G4'I8488(I8(I:49)I3D=72&*7I&.I'H=5;15)6I3463788'.I8=655871>8587'I7'H649'I3'I;46&-I;)I8(I48(I954'F(I'G97:&+;I(I74&.I)I&-I(I6'F&'0I'/I'F'/I NM:i:4 MD:Z:83T18T99 oR:Z:1 [...]
+simulated.631 16 1 6953 255 3M1D25M1D59M1I47M1I24M1I50M * 0 0 TATCCATTCAGTATGTATTCAATCTAGGTAGCAGATGCCTAGCGAGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGTAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCGATAATCCACACGCTCTGGATCCTACTCGGATGGAACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTT 2;3,I9'I6979:7968(I6(I4498)ID8=5<:368(I8776%8,I94(I565&E9)I:&E89915&E(I8(3I(I?7)I;1&*7I&)I66=959594:7=3(I53%)0GI)4I8'H983696(I7566(I7>;'72(I4(I57884:877'F3?)I;9'76(I38,I&D(I'/I57'F58'I)I5'.I&.I56/(I6'F398>(I76)I NM:i:8 [...]
simulated.632 16 1 4256 255 192M * 0 0 CGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATT 96665:58&E'0I6:(I64=;)I6'I)I96&-I74&+:I21>67796:'G(3I&.I:;1'I5234(I(2I46688956596)I:'I)I76<'H6'G7(I(I635;(I626'H5545<6)I835<(I3::'/I<955::957968=56616%)0GI(I64746:32(I55;1'G(I)I34&-I97:6*I4;'F NM:i:0 MD:Z:192 oR:Z:1 oH:i:1 oP:i:4255 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.633 16 1 2651 255 136M1D25M1I42M * 0 0 TCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTGGTGCTATGTCCCCTAACTTTTGTAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTC 95;6163?;'H4;8728'I7<:2'H76?5:369:27::'I:94(I65:775;8<7(I8'I4533666:389;(I4',>I51&.I8(2I&+:I;6'G558'/I(I57798>6(I61(I(I3&+9I;9876?(I34'G,I(I;4:73564&+;I8)I:'- at I6&&-I75:8(I<5545768897;5&+:I6<&)0HI987947(I7 NM:i:2 MD:Z:136^T67 oR:Z:1 oH:i:1 [...]
+simulated.633 16 1 2651 255 136M1D25M1I42M * 0 0 TCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTGGTGCTATGTCCCCTAACTTTTGTAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTC 95;6163?;'H4;8728'I7<:2'H76?5:369:27::'I:94(I65:775;8<7(I8'I4533666:389;(I4',>I51&.I8(2I&+:I;6'G558'/I(I57798>6(I61(I(I3&+9I;9876?(I34'G,I(I;4:73564&+;I8)I:'- at I6&&-I75:8(I<5545768897;5&+:I6<&)0HI987947(I7 NM:i:2 MD:Z:136T67 oR:Z:1 oH:i:1 [...]
simulated.634 16 1 6817 255 78M1I113M * 0 0 ACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCTATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGA 6)I6=977(I6576;80994;6(I)I7&,I5'H58<64;)I796'I58(2I9989(I(I'0I5;(I'I<(I6(I95'G%7;6(I55(I:)I(I746765'I773&-I'/I(I5&.I8;'0I676:89'H1273489(I68&-I9'I977556;44(I4'H687:(I(I9:976644(I74626&-I68'F38 NM:i:1 MD:Z:191 oR:Z:1 oH:i:1 oP:i:6816 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.635 16 1 8824 255 3M1D141M1D45M * 0 0 TACAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCG 87:C8(I'G9(I&)1II67+I59=7;9'H'/I9(I&-I:=5'I;9:74'H45(I8&.I'0I+I9::8;7469'G;(I98(I3755=6::<623&+;I87(I'G(I'H)I71:3:9867'I1(I'I34(I5'G3=4)I(I93*I5,I;;546(I859756:736&-I8(I7(I77464962657)I7668 NM:i:2 MD:Z:3^A141^G45 oR:Z:1 oH:i:1 oP:i:8823 oS:A:R XE:i:2 XS: [...]
+simulated.635 16 1 8824 255 3M1D141M1D45M * 0 0 TACAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCG 87:C8(I'G9(I&)1II67+I59=7;9'H'/I9(I&-I:=5'I;9:74'H45(I8&.I'0I+I9::8;7469'G;(I98(I3755=6::<623&+;I87(I'G(I'H)I71:3:9867'I1(I'I34(I5'G3=4)I(I93*I5,I;;546(I859756:736&-I8(I7(I77464962657)I7668 NM:i:2 MD:Z:3A141G45 oR:Z:1 oH:i:1 oP:i:8823 oS:A:R XE:i:2 XS:i: [...]
simulated.636 16 1 6159 255 19M1I185M * 0 0 TGTCATTCACCCACAGGGTCGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACAC 7;7;6'I87(1I77;&.I6(679<;>:7;=655;95>>'I334(I=<9)I;7(I5&.I689995&E9<5557:;>97623'/I54=(I;4557;;'.I<47582&-I49262&-I9'I59&+;I5(I(1I650;@6'H7757667855789577)I8374564'I3857'/I595475'G(I&.I'H76(I958>&*2II&F945 NM:i:1 MD:Z:204 oR:Z:1 oH:i:1 oP:i:6 [...]
-simulated.637 16 1 4206 255 13M1D66M1D116M * 0 0 AGGTCGGGCTCCACAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAG 6)I58'/I;<(I:?36365:93766=5(I'0I6&-I)I&E'G36776.87<748779(I'0I59'G<5:6'H7'H)I5;,I33',>I68792:566)I'/I&-I970)I<787(I'/I6865787999<(I8'H'I487(IA)I7&E'H6485*I7::(I4=:8:3(I4899(I355'1I87:564694494789 NM:i:2 MD:Z:13^C66^C116 oR:Z:1 oH:i:1 oP:i:4205 oS: [...]
+simulated.637 16 1 4206 255 13M1D66M1D116M * 0 0 AGGTCGGGCTCCACAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAG 6)I58'/I;<(I:?36365:93766=5(I'0I6&-I)I&E'G36776.87<748779(I'0I59'G<5:6'H7'H)I5;,I33',>I68792:566)I'/I&-I970)I<787(I'/I6865787999<(I8'H'I487(IA)I7&E'H6485*I7::(I4=:8:3(I4899(I355'1I87:564694494789 NM:i:2 MD:Z:13C66C116 oR:Z:1 oH:i:1 oP:i:4205 oS:A: [...]
simulated.638 0 1 7262 255 172M1I25M * 0 0 AATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCGAAGCCCCACAGACAGCAAGGACAAG H'7>I);H'9778779;H'I)16I(99I at -'I(657>9I(1I(;7I/'?99I(768I(I.&5;I.&888F'55;9H'4668I(62;65798F&=:59=:9<4I-&886:6I'29;6463I8*&5:1E&6I(:98I/'923946I(F&787917;8884;4586I0':I)278&I(3I:+&:914;595:I(I)98I(9 NM:i:1 MD:Z:197 oR:Z:1 oH:i:1 oP:i:7261 oS:A:F XE:i [...]
simulated.639 0 1 8784 255 154M1I56M * 0 0 TGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTACTCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGC 8:>H'38I/'057G'7585:96F&I(;6:9?9I(8;6:788;7G'2I(I)9I(IG0)%65F&5::396F'I1'2I)I-&:1<I'49<73H'>6I(;I0'I.'I(68968;975I*9I'69H';63;86<9 at 738I@-'8;H'I(I(I'I(94:4*54<5;I'=G'H'=:I(8I)898I(I'47G'6I1(865;4I(8696896;4=I1'75 NM:i:1 MD:Z:210 oR:Z:1 oH [...]
-simulated.640 0 2 74 255 45M1D71M1D56M1I14M * 0 0 CGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGACAGATTTAATATGA :54</95I)99:848657I(7I,I)754I)I(6;85:44887I'6I,75I)I(I0'75787=39I,&:87496G'<I.&:I);6656H'H'87I<,'E&639I)I.'I'E&9:I':I+I':74<I)8I(BF'H'5;94789;I*856I*7F&I2(38I;+&I(6G'1H'I):&>975I.'I(;8754 NM:i:3 MD:Z:45^G71^G70 oR:Z:2 oH:i:1 oP:i:73 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.640 0 2 74 255 45M1D71M1D56M1I14M * 0 0 CGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGACAGATTTAATATGA :54</95I)99:848657I(7I,I)754I)I(6;85:44887I'6I,75I)I(I0'75787=39I,&:87496G'<I.&:I);6656H'H'87I<,'E&639I)I.'I'E&9:I':I+I':74<I)8I(BF'H'5;94789;I*856I*7F&I2(38I;+&I(6G'1H'I):&>975I.'I(;8754 NM:i:3 MD:Z:45G71G70 oR:Z:2 oH:i:1 oP:i:73 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.641 16 2 183 255 186M * 0 0 TAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTC 0(I65(I:'/I'H17<6)I:'I6'G)I26825852(I4/3)I4'F'/I89',=I'H6(I1(I)I75;68(2I'H:<9;9:875:;7:3'G3;'G&-I=599(I84(I96)I65;:63644:=984587'G6946642583:9:'0I&E&F:8=5572'H)I(I3>685<<86'H896'H68(3I74 NM:i:0 MD:Z:186 oR:Z:2 oH:i:1 oP:i:182 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.642 0 1 5820 255 94M1D126M * 0 0 CAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACA 783=;I)9<5866:674:H'<89;>7I(85I'I)777I':7986:8;64>5?I(39F':I(89I(4I-&:8H'I.&46I,&3689I(457::4;I+I(I8*&8<I3(748I;+&>I(H'I(I'87688:::9I(88>:I(6E&5I(7I'3I0'7<G'H'66=7;9I);59:2757I2(8E&I(6I2(5;4;779I at -':I/';II</*&5643;543;:6 NM:i:1 [...]
+simulated.642 0 1 5820 255 94M1D126M * 0 0 CAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACA 783=;I)9<5866:674:H'<89;>7I(85I'I)777I':7986:8;64>5?I(39F':I(89I(4I-&:8H'I.&46I,&3689I(457::4;I+I(I8*&8<I3(748I;+&>I(H'I(I'87688:::9I(88>:I(6E&5I(7I'3I0'7<G'H'66=7;9I);59:2757I2(8E&I(6I2(5;4;779I at -':I/';II</*&5643;543;:6 NM:i:1 [...]
simulated.643 0 1 4084 255 204M * 0 0 TCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACC 15I(I)I(I'575:G'76673I'8I2(:87632865I)75<I/'6I(I1(I(=I(9;07;:8I(9I(683687G'<I(I(I)I)8I2(I(495I(6;86I(829I/'I)G'8;68I'8977<8I'83I0'98I(<H';:74755758964I'I3(>I0'I(I)I(866744357734445I(I/'87I)4688I(4I'I(48I( NM:i:0 MD:Z:204 oR:Z:1 oH:i:1 oP:i:4083 oS:A [...]
simulated.644 16 1 119 255 176M * 0 0 AGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAA ;7805&D<8;6:857(I7>8:&.I7976707(I(I7;(1I5:99:6)I'0I8<'I786866(I2769'H9'H59)I'H78(I(I9)I8;6675862&F6(I='G*I687&D'I8863?'G&).:II888'H(I58'G)I'.I&E46(I:693'.I;946(I:=847;(I8='I9(I NM:i:0 MD:Z:176 oR:Z:1 oH:i:1 oP:i:118 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.645 16 2 29 255 4M1D28M1I57M1D16M1I94M * 0 0 CAGCGCCGTTTGCGTATATAGGAATAGCAGGGTCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGTCTTGGCCCGTATCGTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTT 8775D)I8'.I;6<:78995'I(I45476'0I(98'G9421*I84>86;361(I4<?3088:7'G9(I'H5=6(I(I8586585695(I<+I76)I'I(2I:9651'857'1I:36@:6(I7'0I8'G;8897)I)I:9(.DI(I3<5(I'/I(I(I6<'I;(2I'H776=(I?&E7'G(I9879;859'I28=(I2'I(I NM:i:4 MD:Z:4^G85^G110 oR:Z:2 oH: [...]
-simulated.646 0 1 4580 255 30M1D10M1I116M1D46M1I3M * 0 0 TGGAGCCGCCCTACTCCTAGCGATCGTCAAGGTACTTTGTAGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATACTT <E&=6I(7I0'748;F&6;82889:5;4F'I,749I.&<8(4H'I(3I(538G'6=8=;749I(?I.&;I'7=69I'99I(<>496I2(8:6538I'8F'=:297I/'I(777I(49994:I.&<91I(H'55896H'5666I/'739:F':<H':;IC.(I0'I)=G'563:I)7>5<G'97:6;491II2*&7823I(>>3'6G' NM:i:4 MD:Z:30^G126 [...]
-simulated.647 0 1 5192 255 13M1D153M1D53M * 0 0 GCTAATTGCAAGGTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCC 85:I'I*;4I(I*I,787I/'I(F'8 at A958:;8:94I.&:68F'4I)I(7I'@:68I'8I(99549789458H'5:695I*I(558I.&I0'96;958I(7>55E&I)E&5975G'I)<:51<06I/'86I-&:I/'I(I*:G'5I(395=8;;9I,&0774;1;I6)6H'1I(758I1(9356;87443I*<3I'=67:698H'627I-&/=94;I) NM:i [...]
-simulated.648 0 1 2559 255 154M1I23M1D10M * 0 0 GACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACTAGCATAGTGATTCGGGGTGTTTCTTGGGGTCTT 2?4:744838395I'8F&1II2*&<;4I'A6696599I3(I(::6:328I(7;I(5:699:6I*75755;>8;3II2*&9 at I(=I0'83I(57728<66;4I(588776F'899;G'98:335:86:343I(:<4F'628:64<<67I(8I)94'9725945585I'7I<,&42I/'7I,I8*&87I' NM:i:2 MD:Z:177^T10 oR:Z:1 oH:i:1 oP:i:2558 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.649 16 1 1426 255 174M1D9M * 0 0 TCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAGTCGCGT =8:6469)I6'G4::397'I5786(I(I4'/I6(I(I&-I79687(I684;9;'/I88;2::'I)I6'F'G8;?5>9;;7979@:;;(I'/I<5523(1I874&*3II'H)I97(I)I:6:<;98&-I:7:;<7699'H47:;6867;'.I(I804<6:823'I87758<4:<4,I7348767 NM:i:1 MD:Z:174^A9 oR:Z:1 oH:i:1 oP:i:1425 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.645 16 2 29 255 4M1D28M1I57M1D16M1I94M * 0 0 CAGCGCCGTTTGCGTATATAGGAATAGCAGGGTCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGTCTTGGCCCGTATCGTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTT 8775D)I8'.I;6<:78995'I(I45476'0I(98'G9421*I84>86;361(I4<?3088:7'G9(I'H5=6(I(I8586585695(I<+I76)I'I(2I:9651'857'1I:36@:6(I7'0I8'G;8897)I)I:9(.DI(I3<5(I'/I(I(I6<'I;(2I'H776=(I?&E7'G(I9879;859'I28=(I2'I(I NM:i:4 MD:Z:4G85G110 oR:Z:2 oH:i: [...]
+simulated.646 0 1 4580 255 30M1D10M1I116M1D46M1I3M * 0 0 TGGAGCCGCCCTACTCCTAGCGATCGTCAAGGTACTTTGTAGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATACTT <E&=6I(7I0'748;F&6;82889:5;4F'I,749I.&<8(4H'I(3I(538G'6=8=;749I(?I.&;I'7=69I'99I(<>496I2(8:6538I'8F'=:297I/'I(777I(49994:I.&<91I(H'55896H'5666I/'739:F':<H':;IC.(I0'I)=G'563:I)7>5<G'97:6;491II2*&7823I(>>3'6G' NM:i:4 MD:Z:30G126C [...]
+simulated.647 0 1 5192 255 13M1D153M1D53M * 0 0 GCTAATTGCAAGGTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCC 85:I'I*;4I(I*I,787I/'I(F'8 at A958:;8:94I.&:68F'4I)I(7I'@:68I'8I(99549789458H'5:695I*I(558I.&I0'96;958I(7>55E&I)E&5975G'I)<:51<06I/'86I-&:I/'I(I*:G'5I(395=8;;9I,&0774;1;I6)6H'1I(758I1(9356;87443I*<3I'=67:698H'627I-&/=94;I) NM:i [...]
+simulated.648 0 1 2559 255 154M1I23M1D10M * 0 0 GACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACTAGCATAGTGATTCGGGGTGTTTCTTGGGGTCTT 2?4:744838395I'8F&1II2*&<;4I'A6696599I3(I(::6:328I(7;I(5:699:6I*75755;>8;3II2*&9 at I(=I0'83I(57728<66;4I(588776F'899;G'98:335:86:343I(:<4F'628:64<<67I(8I)94'9725945585I'7I<,&42I/'7I,I8*&87I' NM:i:2 MD:Z:177T10 oR:Z:1 oH:i:1 oP:i:2558 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.649 16 1 1426 255 174M1D9M * 0 0 TCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAGTCGCGT =8:6469)I6'G4::397'I5786(I(I4'/I6(I(I&-I79687(I684;9;'/I88;2::'I)I6'F'G8;?5>9;;7979@:;;(I'/I<5523(1I874&*3II'H)I97(I)I:6:<;98&-I:7:;<7699'H47:;6867;'.I(I804<6:823'I87758<4:<4,I7348767 NM:i:1 MD:Z:174A9 oR:Z:1 oH:i:1 oP:i:1425 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.650 0 1 8780 255 205M * 0 0 ATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTA 9:77279I(8:I/'994I(98=:677I(I)9;889>I'24786:873I+1I'I(6G'II1*&52I(643:39I(I0'8I'I/';<:G'9;:6<I'5=I(6I2(I0'I(689645569I(9H'<6I(37<759<::662I;+&5 at I)I'I'I(I(68857;;68I(9I(I(:3I'8H'8::I(H'13I(7I/':6;65F'<8;17; NM:i:0 MD:Z:205 oR:Z:1 oH:i:1 oP:i:8779 oS [...]
simulated.651 16 1 8251 255 20M1I3M1I175M * 0 0 AAGGTGATGTCCACTCTCCTAGAACGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTG )I'H:97497'H8;446)I6%7)I&386839679;)I'I(I'0I'I9B47<(I8:(I;(I96'.I898)I4'G588:715994:(I72='/I(I4869'I9;<(I(I::'.I975'I7:::6;8(I797(I;8;238;83:5;:666858'H55(I576(I6888;;858;'I:8;7(I'I87'G;::77,I8:'I9785 NM:i:2 MD:Z:198 oR:Z:1 oH:i:1 oP:i:8250 oS [...]
simulated.652 16 1 1231 255 204M * 0 0 CGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCC >(I16'H6'G'G<8)I13=8'/I=9)I(I6&+9I(I2(I<47433(I76'I57:'H>7:'I;:<7(I'/I8'G7&-I'0I4'/I9(I4)I:=7(I&+:I4:96;884<:(I5(I'F54'H)4I;1>9877'/I66)I76(I7'0I9(I5;'H'I788999748:779(I<7:939549&+<I6(I4(I:=(I3'/I9945:7'I NM:i:0 MD:Z:204 oR:Z:1 oH:i:1 oP:i:1230 oS: [...]
-simulated.653 0 1 487 255 151M1I8M1D13M1I48M * 0 0 AAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTACGACCAGACCCCCGGCGTCCCGTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGG I*I*I';8I>,'65:78:1F'9=I'I>,'906I)94I2(8988I/'2I(I(7;:I/'7:9563I';9638I(4H'I(98897536I/'<8869I.&459;>75I'88<998<I/'89I0'8I'78532794I(4<>6;;=:I(48I'78I)%6:?I(7=8II7-(H'971I.&'57;5I(I)6I/'584:7988<3I(:/87;896=76I(9:67:41 [...]
-simulated.654 0 1 8963 255 26M1D12M1I99M1I63M * 0 0 ATGCCAGGGCGCGCGGTCACTACGAGTTGCCGAAGCTCGATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGTCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGA <;6H'6I/'67784I'?:6;649375I+9H'8H'2862&4566678I(684I1(556I)766<57H'64BI)I'9I(647I*:45346/89I(789=F&I'6<68:I/'I(I(3I'77:6;:I(959I/'I/'776H'&6I'6;5:788<I'G'96;96;I(8H'7I'I)5AI(4H'9=F'59I(8679I(:19;2 at 56:7: NM:i:3 MD:Z:26^T174 oR:Z:1 oH:i:1 [...]
-simulated.655 16 1 797 255 123M1I16M1D52M * 0 0 AGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATCGCACCCCGGATAGCCCTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACG 69;657;7:65 at 78;87&-I48796239829*I86?:87:492:659B*I>55967=172(I9(I'I87(I59?'I4(I8(I'/I(I;66486(I&E;469:'G669'- at I8'G54867>0 at 8'<4:&+:I(I66=8&.ID77&-I96(I7799:496:9626378824(I3766<3(I98;=3;=9:4772 NM:i:2 MD:Z:139^T52 oR:Z:1 oH:i:1 oP:i:796 oS:A:R XE:i:2 X [...]
-simulated.656 0 1 357 255 31M1I32M1I24M1D105M * 0 0 GGATAGGAGGATTCGGGTGTGTCGCAAAAATAGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTAGTCACGTCAAATTCTCGGCTGGATCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCA I'67:H'6I):G'7I.&;9;;4887II3*&6&I(I(8;76I/'I.&9848;@>:>:I(I)I2(6&37<757>8I0'I*5:8G'4;I(15I,I)3:878>;I(697I(4;7:65H'?9;>5466<H'76I(4G'G'H':=I;+&8885:66F'97H'I=,'686I(;<I1'6::6I-&5I(I(9;=I0'7:7366 NM:i:3 MD:Z:87^C105 oR:Z:1 oH:i:1 oP:i:356 oS:A:F [...]
-simulated.657 16 1 5319 255 84M1D88M * 0 0 GGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATA (1I91&-I9'.I&F*I9)I;'F:84457?4'/I9776777&+;I;)I<(I778&.I868;9=;6:4(I97&E9776659(I57;+I77935(I:(I9&.I5'I7:&)1II;8758'G485978=<)I89(I:63689)I765487699'G'I567(I5*I4=9>75'G)I40 NM:i:1 MD:Z:84^G88 oR:Z:1 oH:i:1 oP:i:5318 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.658 0 2 178 255 191M1D14M * 0 0 CGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGAGATTTATCCT 8I0'I'I'<8F'6I.&I(34:8I)7G'3I(I)7775617<I'9<0I(6I(I1'5:I:+&F'9I(;I(I(97739I/'I(883476799;6;45I'87G'I/';696I(78I(19H'95<645498975580;;I(5787;9544;6;5I-&I'I'96:1987I(I(I);6=::7489I*957E&97I/'45I7*39:I.'=7I)9 NM:i:1 MD:Z:191^G14 oR:Z:2 oH:i:1 oP:i [...]
-simulated.659 0 1 8854 255 26M1D132M1I50M * 0 0 GGGCTTAAATGATTACTGTAAGTAATGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGACGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAAC I1'8I(I0'87>I'49989I(16I)8I,I0'I(>9:8729:8I(5I(66I'8;697997>;::I9*&;:F'I(I'I'I(:28977475I(2I'G'5:G'=I'7;9F'I(48I'2I/'3:3;3I(969:?9:88;I2(3I(6E&=79777;9:75I(91%6I.&:89I(:869:6I(466I(I(:I)878I(<:<873954I)8:88I(7 NM:i:2 MD:Z:26^G182 oR:Z [...]
-simulated.660 16 1 5083 255 49M1I73M1D75M * 0 0 GAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCACTACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAG 8(I;834'H8774<:?96(I/78:9'H9;8)I92)I(I8(2I1'I<375&4;&).9II9:>53:5760(I434:&.I5:9(I4'H76>6(I=736&,<I:'H(1I86;'I578)I(I<A)I(I,I2?9&.I(I'H4:5357269563&-I785(I?)I(I3(I7;<7'G6(I:388555;947'G94<77(I)I::;8 NM:i:2 MD:Z:122^T75 oR:Z:1 oH:i:1 oP:i:5082 oS [...]
-simulated.661 0 1 7885 255 44M1I62M1D20M1I35M1D47M * 0 0 AGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCGAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCGTTTCCACAGGAACTAGCTAACGGGCTCATAGTATTGTTGAATTTCACGATCGCGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCAC 5;I9+&3I)663I(I(58;68486I.&7:H':I)9I)36I(7=4)I(=09886945I(/5I(3<6859659:5<9I(88<47I(3I)7I(2:3I'@I/'3807455:I,8I1(I'5<?I(H'<8875(I'7I1(/9=88<675F'8I)6I'I-&747677;02I,:5I)6:8I)I0'I(36I(5I(977IC.(83:9:7G'6=771567; NM:i:4 MD:Z:1 [...]
-simulated.662 16 1 231 255 91M1D33M1D25M1I45M * 0 0 CGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCGATCTATAATCTGGACGCACAAAATCATCTTGGATAGGAGGATTCGGGTGTGTCGCGAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGT 777954(I%(-7II7<8'G(I88'I(I'/I(I27)I8679'.I<:36'H359::7(I99(I8'G7:7:'H5)I'F'I'I&+9I4639'G47,I7778676+I559(I908;6:&+<I>7627'I,I5:9)I6)I<(I2'0I87967:93%%)/FI6'I)I;658&.I&.I6834751979(I(I'.I68==7498 NM:i:3 MD:Z:91^C33^G70 oR:Z:1 oH:i:1 oP:i:230 oS [...]
+simulated.653 0 1 487 255 151M1I8M1D13M1I48M * 0 0 AAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTACGACCAGACCCCCGGCGTCCCGTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGG I*I*I';8I>,'65:78:1F'9=I'I>,'906I)94I2(8988I/'2I(I(7;:I/'7:9563I';9638I(4H'I(98897536I/'<8869I.&459;>75I'88<998<I/'89I0'8I'78532794I(4<>6;;=:I(48I'78I)%6:?I(7=8II7-(H'971I.&'57;5I(I)6I/'584:7988<3I(:/87;896=76I(9:67:41 [...]
+simulated.654 0 1 8963 255 26M1D12M1I99M1I63M * 0 0 ATGCCAGGGCGCGCGGTCACTACGAGTTGCCGAAGCTCGATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGTCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGA <;6H'6I/'67784I'?:6;649375I+9H'8H'2862&4566678I(684I1(556I)766<57H'64BI)I'9I(647I*:45346/89I(789=F&I'6<68:I/'I(I(3I'77:6;:I(959I/'I/'776H'&6I'6;5:788<I'G'96;96;I(8H'7I'I)5AI(4H'9=F'59I(8679I(:19;2 at 56:7: NM:i:3 MD:Z:26T174 oR:Z:1 oH:i:1 o [...]
+simulated.655 16 1 797 255 123M1I16M1D52M * 0 0 AGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATCGCACCCCGGATAGCCCTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACG 69;657;7:65 at 78;87&-I48796239829*I86?:87:492:659B*I>55967=172(I9(I'I87(I59?'I4(I8(I'/I(I;66486(I&E;469:'G669'- at I8'G54867>0 at 8'<4:&+:I(I66=8&.ID77&-I96(I7799:496:9626378824(I3766<3(I98;=3;=9:4772 NM:i:2 MD:Z:139T52 oR:Z:1 oH:i:1 oP:i:796 oS:A:R XE:i:2 XS [...]
+simulated.656 0 1 357 255 31M1I32M1I24M1D105M * 0 0 GGATAGGAGGATTCGGGTGTGTCGCAAAAATAGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTAGTCACGTCAAATTCTCGGCTGGATCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCA I'67:H'6I):G'7I.&;9;;4887II3*&6&I(I(8;76I/'I.&9848;@>:>:I(I)I2(6&37<757>8I0'I*5:8G'4;I(15I,I)3:878>;I(697I(4;7:65H'?9;>5466<H'76I(4G'G'H':=I;+&8885:66F'97H'I=,'686I(;<I1'6::6I-&5I(I(9;=I0'7:7366 NM:i:3 MD:Z:87C105 oR:Z:1 oH:i:1 oP:i:356 oS:A:F X [...]
+simulated.657 16 1 5319 255 84M1D88M * 0 0 GGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATA (1I91&-I9'.I&F*I9)I;'F:84457?4'/I9776777&+;I;)I<(I778&.I868;9=;6:4(I97&E9776659(I57;+I77935(I:(I9&.I5'I7:&)1II;8758'G485978=<)I89(I:63689)I765487699'G'I567(I5*I4=9>75'G)I40 NM:i:1 MD:Z:84G88 oR:Z:1 oH:i:1 oP:i:5318 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.658 0 2 178 255 191M1D14M * 0 0 CGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGAGATTTATCCT 8I0'I'I'<8F'6I.&I(34:8I)7G'3I(I)7775617<I'9<0I(6I(I1'5:I:+&F'9I(;I(I(97739I/'I(883476799;6;45I'87G'I/';696I(78I(19H'95<645498975580;;I(5787;9544;6;5I-&I'I'96:1987I(I(I);6=::7489I*957E&97I/'45I7*39:I.'=7I)9 NM:i:1 MD:Z:191G14 oR:Z:2 oH:i:1 oP:i: [...]
+simulated.659 0 1 8854 255 26M1D132M1I50M * 0 0 GGGCTTAAATGATTACTGTAAGTAATGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGACGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAAC I1'8I(I0'87>I'49989I(16I)8I,I0'I(>9:8729:8I(5I(66I'8;697997>;::I9*&;:F'I(I'I'I(:28977475I(2I'G'5:G'=I'7;9F'I(48I'2I/'3:3;3I(969:?9:88;I2(3I(6E&=79777;9:75I(91%6I.&:89I(:869:6I(466I(I(:I)878I(<:<873954I)8:88I(7 NM:i:2 MD:Z:26G182 oR:Z: [...]
+simulated.660 16 1 5083 255 49M1I73M1D75M * 0 0 GAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCACTACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAG 8(I;834'H8774<:?96(I/78:9'H9;8)I92)I(I8(2I1'I<375&4;&).9II9:>53:5760(I434:&.I5:9(I4'H76>6(I=736&,<I:'H(1I86;'I578)I(I<A)I(I,I2?9&.I(I'H4:5357269563&-I785(I?)I(I3(I7;<7'G6(I:388555;947'G94<77(I)I::;8 NM:i:2 MD:Z:122T75 oR:Z:1 oH:i:1 oP:i:5082 oS: [...]
+simulated.661 0 1 7885 255 44M1I62M1D20M1I35M1D47M * 0 0 AGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCGAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCGTTTCCACAGGAACTAGCTAACGGGCTCATAGTATTGTTGAATTTCACGATCGCGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCAC 5;I9+&3I)663I(I(58;68486I.&7:H':I)9I)36I(7=4)I(=09886945I(/5I(3<6859659:5<9I(88<47I(3I)7I(2:3I'@I/'3807455:I,8I1(I'5<?I(H'<8875(I'7I1(/9=88<675F'8I)6I'I-&747677;02I,:5I)6:8I)I0'I(36I(5I(977IC.(83:9:7G'6=771567; NM:i:4 MD:Z:1 [...]
+simulated.662 16 1 231 255 91M1D33M1D25M1I45M * 0 0 CGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCGATCTATAATCTGGACGCACAAAATCATCTTGGATAGGAGGATTCGGGTGTGTCGCGAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGT 777954(I%(-7II7<8'G(I88'I(I'/I(I27)I8679'.I<:36'H359::7(I99(I8'G7:7:'H5)I'F'I'I&+9I4639'G47,I7778676+I559(I908;6:&+<I>7627'I,I5:9)I6)I<(I2'0I87967:93%%)/FI6'I)I;658&.I&.I6834751979(I(I'.I68==7498 NM:i:3 MD:Z:91C33G70 oR:Z:1 oH:i:1 oP:i:230 oS:A [...]
simulated.663 16 1 7413 255 39M1I162M * 0 0 GAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAACGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATA 6;;9778;;56?'/I6(I665'H;&*9I;74858475)I&(I66'I&F7:<:8:&.I'0I6986;26'I66(I8&.I(I'G28'F(I;86746445&-I1686(I&-I95&.I(I&,I:4'I(I'H'F618::9(I95'G'H4694(I:5788*I8)I7)I'H9;6(I840(I9?'I9(I'I6(I794;66=389'G;7;24 NM:i:1 MD:Z:201 oR:Z:1 oH:i:1 oP:i:7412 oS [...]
-simulated.664 16 1 3097 255 10M1D82M1D92M * 0 0 CGTATGTCTTCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAA :698=64:'IC(I'I7<97<7893996(I=68'/I<:386648&-I&)1II9962;78;6'G8276:5665'I9:5)I696<<(I87(I969C&-I78'I(I8(I5:7&-I77(1I(I*I'H'I:8',>I739:'I&)1II5(I;8'/I552&+:I(I886'G<(I&,<I7;:(I<559@(I)I NM:i:2 MD:Z:10^C82^G92 oR:Z:1 oH:i:1 oP:i:3096 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.665 0 1 1763 255 20M1D189M * 0 0 CGGCTATGCGTTGTATTCCACCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCC 6I)6727:79I(699I(I'9I7*6599I'I)74I2(I'8I*6:96763566:764I(39481F&?3I1(I-&I+65:I9*&6989H'7H'I(I(8I(76;I)498:H'H'8487:87=8A;G'I)767I(I2(9G'56:I(7686=I'53H'I(46;I(977I):7:61F'9I(0I(876H':99I(6=56>=57I(6563I8*&69G' NM:i:1 MD:Z:20^C189 oR:Z:1 oH [...]
-simulated.666 16 1 7601 255 34M1I96M1D56M * 0 0 AGTACGAATGATAGCGAATAGTGGTGGAACAGTGTCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAG 977686'I:794:;58'G4783'I8(I(I57785'66988=(I'/I8'G47(I<)4I'F:6;66<864?7(I598(I68'/I599:5'/I=68)I46(I177976'F(I)I83'H66(I&D56;7;'G778D7<:877(I'G(I949'H94 at 6:58)I(I)I54'0I758&+;I;'G&.I'I'G:67 NM:i:2 MD:Z:130^G56 oR:Z:1 oH:i:1 oP:i:7600 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.664 16 1 3097 255 10M1D82M1D92M * 0 0 CGTATGTCTTCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAA :698=64:'IC(I'I7<97<7893996(I=68'/I<:386648&-I&)1II9962;78;6'G8276:5665'I9:5)I696<<(I87(I969C&-I78'I(I8(I5:7&-I77(1I(I*I'H'I:8',>I739:'I&)1II5(I;8'/I552&+:I(I886'G<(I&,<I7;:(I<559@(I)I NM:i:2 MD:Z:10C82G92 oR:Z:1 oH:i:1 oP:i:3096 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.665 0 1 1763 255 20M1D189M * 0 0 CGGCTATGCGTTGTATTCCACCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCC 6I)6727:79I(699I(I'9I7*6599I'I)74I2(I'8I*6:96763566:764I(39481F&?3I1(I-&I+65:I9*&6989H'7H'I(I(8I(76;I)498:H'H'8487:87=8A;G'I)767I(I2(9G'56:I(7686=I'53H'I(46;I(977I):7:61F'9I(0I(876H':99I(6=56>=57I(6563I8*&69G' NM:i:1 MD:Z:20C189 oR:Z:1 oH: [...]
+simulated.666 16 1 7601 255 34M1I96M1D56M * 0 0 AGTACGAATGATAGCGAATAGTGGTGGAACAGTGTCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAG 977686'I:794:;58'G4783'I8(I(I57785'66988=(I'/I8'G47(I<)4I'F:6;66<864?7(I598(I68'/I599:5'/I=68)I46(I177976'F(I)I83'H66(I&D56;7;'G778D7<:877(I'G(I949'H94 at 6:58)I(I)I54'0I758&+;I;'G&.I'I'G:67 NM:i:2 MD:Z:130G56 oR:Z:1 oH:i:1 oP:i:7600 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.667 16 1 9043 255 217M * 0 0 TTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAG 'I=88536876'I=638(I'I4;869'0I(I&D8'I55:574(I1;9&.I&.I097'H5(I>6365997'I)I88753<'H;)I;)I'I;7)I5(I96)I99'H484<&F:484678779)I'G&.I=2(I716)I9'/I:778:965;;;903:47:<:)I=6587793&.I8'I6<64(I(I'H6;9'G:(I'/I;)I(I7>6(I5&.I)I8'G3 NM:i:0 MD:Z:217 o [...]
simulated.668 16 1 559 255 13M1I161M1I41M * 0 0 TCCTTAGTATCTACTTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTCGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTT 4)I(I79:;59<7%(2I7::<8(3I7264;3:(I499?;46'0I87'/I;'I7<87:9=5(I6546683;'I89'I:8(I996(I529&)/;II(I<99(1I59<4'G(I;&.I<:9:.59879)I:766;57:874'H237879943'H657'H765'I31(1I5(I:6)I6;5%6:3<<9:4)I55:<)I43(I99696)I)I47;7(I'H1'/I NM:i:2 M [...]
-simulated.669 0 1 8671 255 17M1D53M1I81M1I31M1D18M * 0 0 AACTTGCCGCAATAGTTGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGTACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGACTACAAGCCAATGGAAAAAGATTCATAGCAAGGCTTAAATGATTACTGT I(;I(:G'55I'/35G'DI)579I9+&G'56I0'H'I/'H'9H'I0'I1'I'I/'65937:384I0':I(&7:I(;8I'I(;:9I(I/'77:6?59I=,'<<3G'4595:5875:>H'39I.&88<I'/27=439I(I)88;497I(:8749&3597I(5G'H'5I*II1*&99I)5=4<76G'I,3I)I/'38;I'37695 NM:i:4 MD:Z:17^G165^G18 oR:Z: [...]
+simulated.669 0 1 8671 255 17M1D53M1I81M1I31M1D18M * 0 0 AACTTGCCGCAATAGTTGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGGCTGCTACTGCCCAGGTACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGACTACAAGCCAATGGAAAAAGATTCATAGCAAGGCTTAAATGATTACTGT I(;I(:G'55I'/35G'DI)579I9+&G'56I0'H'I/'H'9H'I0'I1'I'I/'65937:384I0':I(&7:I(;8I'I(;:9I(I/'77:6?59I=,'<<3G'4595:5875:>H'39I.&88<I'/27=439I(I)88;497I(:8749&3597I(5G'H'5I*II1*&99I)5=4<76G'I,3I)I/'38;I'37695 NM:i:4 MD:Z:17G165G18 oR:Z:1 [...]
simulated.670 0 2 116 255 132M1I44M1I31M * 0 0 TTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGTCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACGAATCTATATGCATGTCTACTTATAGCGCGCA H'=I0';5I(I(I.'<6;:2556I1(579869I(9I.'7I(:5998I(I,:5I9*&I)91;G'I/'I'I(5:I)8I0'H'933:H'8I(7H'I,926=8786I(669I'=H'I.&74I9*&I(6I)6I)I(7(4884I0'I)78=786>967=556I'87I'I0':528F&46I(76'I(=65?9<:4;3>7:99:4I)95;5683785 NM:i:2 MD:Z:207 oR:Z:2 oH [...]
-simulated.671 16 1 273 255 37M1D45M1D25M1D27M1I74M * 0 0 GAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGATAGGAGGATTCGGGTGTGTCGCAAAATGGCCTAGCAAACCCTGTCGAGAGTAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGA <9=39'GD679:7'G89'H8(I5555'H:(I(I(I'I*7I;>78'I29&-I7834774'I583(I=36948',<I6:=26'G,I957(I<(I:)I3'.I8468>96:(/FI8(I(I9:4:'/I'0I375;<987(8<'I(I'1I889A6>;86'0I&E<7:'F86)I77'0I)I76:4687)I628)I97946;(I;:95468:9(I:> NM:i:4 MD:Z:37^ [...]
-simulated.672 16 1 7207 255 12M1D142M1I1M * 0 0 GTCTCCTGGCGTGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCAGT 6842*I2'I96:,I:456(I675(I:39)I6(I'G87<)I5296845:766:&*9I86(I8'G65874914)I(I;8'H69&+;I(I077>:'I5'I9>&-I636(I793)I'/I9;'/I664(I6971(I>69:'I667/?<:4(I56==976'9 NM:i:2 MD:Z:12^G143 oR:Z:1 oH:i:1 oP:i:7206 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.671 16 1 273 255 37M1D45M1D25M1D27M1I74M * 0 0 GAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGATAGGAGGATTCGGGTGTGTCGCAAAATGGCCTAGCAAACCCTGTCGAGAGTAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGA <9=39'GD679:7'G89'H8(I5555'H:(I(I(I'I*7I;>78'I29&-I7834774'I583(I=36948',<I6:=26'G,I957(I<(I:)I3'.I8468>96:(/FI8(I(I9:4:'/I'0I375;<987(8<'I(I'1I889A6>;86'0I&E<7:'F86)I77'0I)I76:4687)I628)I97946;(I;:95468:9(I:> NM:i:4 MD:Z:37T [...]
+simulated.672 16 1 7207 255 12M1D142M1I1M * 0 0 GTCTCCTGGCGTGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCAGT 6842*I2'I96:,I:456(I675(I:39)I6(I'G87<)I5296845:766:&*9I86(I8'G65874914)I(I;8'H69&+;I(I077>:'I5'I9>&-I636(I793)I'/I9;'/I664(I6971(I>69:'I667/?<:4(I56==976'9 NM:i:2 MD:Z:12G143 oR:Z:1 oH:i:1 oP:i:7206 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.673 0 2 70 255 182M1I17M * 0 0 AATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGACTTTAATATGATGTCGTC I)27559?4.6I(69633;855I';H'I'<66I'I)89736:<<86I(6I-&34I(I(I.'78969476I/'569453E&:I/'7I(82457I(I(3:I8*&I)983I(I-&E&G'49I'9I0'I(8=95H'8I(3I(I(7:624;59I)6:9I'7I(I2(89I;+&H';I*:I)I(3966A%I/'I);;<8<5?68787 NM:i:1 MD:Z:199 oR:Z:2 oH:i:1 oP:i:69 oS:A:F XE:i [...]
-simulated.674 0 1 5345 255 9M1I49M1D10M1I58M1I71M * 0 0 CATGTTTCTAGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGTGATGCCACGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCTACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTT 876<I3(79*:<997I=,'7I';I(798I-&64868257=9I(43I(:64:7<5F&288I,86930I(6&I'3I-&:I(37II2*&864;5I(57:7:;::G';8G'7557?5I';;7578955I)I(&548I*=I(83974:I(I)5I):36:6G':3844<<;E&9I/':;I*=8I.&I/'8699:I(974I1(0:I) NM:i:4 MD:Z:58^G139 oR:Z:1 oH:i:1 [...]
-simulated.675 0 2 153 255 5M1I6M1D26M1D41M1D37M1I6M1D78M * 0 0 CTCCTACATATTGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTACCAGCCTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGA 8:I(6%7467I'C68I;+&I(887I)I-&I(I'<0I'9I,I)8673I)5I'3I(I'5487:6<;G'627H':I'I/'67I7*I)6I'<I(G'349;7I/'I'2565536897657?(E&5=I)I,4788H'>6I(93G'5:4775683>6977:56I(929787;973695I/'I)I)7;98:48I'I'I(884873;968 NM:i:6 MD:Z:11^G26^G41^C4 [...]
-simulated.676 0 1 3285 255 90M1D104M * 0 0 GTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAA 08I)29I0':9F&:617946;:8;H'4I)I(:I=,'9G'I(8=6;I(<2I)I(929I/'7379I=,'=I(65G'I(689;6I at -'I)H'7I+3<693I(599>?85I/'65I)E&:;58=5I(.4:85;5I)I/'I/'<8==I(7978948<119;3:9;4I):7;64I=,'53G'II2*&6I.'897:796I( NM:i:1 MD:Z:90^T104 oR:Z:1 oH:i:1 oP:i:3284 oS:A:F XE:i:1 X [...]
-simulated.677 0 1 8777 255 42M1I64M1D61M1I24M1D31M * 0 0 GACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACTAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAACGTTGGATAACGGTAGTTAATGCCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCT 96>:>648=9F'89I.':;7E&68:9694G'I)895398I(9%;8879797I'7I'I(2I(II0)&32I(@677 at 4I(I0'<G'I/'477H'66;=7I(:7I'7I/'I,I'1:44<9<<0I(6H'85I(89:866154252I>,'<4I(H'G'I(I(85624:<C<I)(9I(I(56I)8H'543H'I(69I)6I+86;34H';298689: [...]
-simulated.678 0 1 3794 255 22M1I32M1D101M1I11M1I23M1D9M * 0 0 TTTATGGTTGCGCCAGTGCTAGTATCGTACGTCTCTCCCGGTGACAACATGGAAATCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAAGTGCATGAGTAAGTTGACTGCGTCGCGCGGGTAAGTATGACTTAG I.&88I'H'692I(=5736937&7758777683=72I.&I)==6<I*574H'I-&D3I(7777<67:78H'1I*7I'33:8874I(9I)8886759II9.)&58347844I(I(5I)35985;2>;896I0'8956G'88;<I(6<I1(48I(I3(&;</726278I(%H'59276:7915994I0'7I(88C3697G'<9 NM:i:5 MD:Z:54^T135^A9 oR: [...]
+simulated.674 0 1 5345 255 9M1I49M1D10M1I58M1I71M * 0 0 CATGTTTCTAGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGTGATGCCACGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCTACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTT 876<I3(79*:<997I=,'7I';I(798I-&64868257=9I(43I(:64:7<5F&288I,86930I(6&I'3I-&:I(37II2*&864;5I(57:7:;::G';8G'7557?5I';;7578955I)I(&548I*=I(83974:I(I)5I):36:6G':3844<<;E&9I/':;I*=8I.&I/'8699:I(974I1(0:I) NM:i:4 MD:Z:58G139 oR:Z:1 oH:i:1 o [...]
+simulated.675 0 2 153 255 5M1I6M1D26M1D41M1D37M1I6M1D78M * 0 0 CTCCTACATATTGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTACCAGCCTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGA 8:I(6%7467I'C68I;+&I(887I)I-&I(I'<0I'9I,I)8673I)5I'3I(I'5487:6<;G'627H':I'I/'67I7*I)6I'<I(G'349;7I/'I'2565536897657?(E&5=I)I,4788H'>6I(93G'5:4775683>6977:56I(929787;973695I/'I)I)7;98:48I'I'I(884873;968 NM:i:6 MD:Z:11G26G41C43T7 [...]
+simulated.676 0 1 3285 255 90M1D104M * 0 0 GTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAA 08I)29I0':9F&:617946;:8;H'4I)I(:I=,'9G'I(8=6;I(<2I)I(929I/'7379I=,'=I(65G'I(689;6I at -'I)H'7I+3<693I(599>?85I/'65I)E&:;58=5I(.4:85;5I)I/'I/'<8==I(7978948<119;3:9;4I):7;64I=,'53G'II2*&6I.'897:796I( NM:i:1 MD:Z:90T104 oR:Z:1 oH:i:1 oP:i:3284 oS:A:F XE:i:1 XS [...]
+simulated.677 0 1 8777 255 42M1I64M1D61M1I24M1D31M * 0 0 GACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACTAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAACGTTGGATAACGGTAGTTAATGCCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCT 96>:>648=9F'89I.':;7E&68:9694G'I)895398I(9%;8879797I'7I'I(2I(II0)&32I(@677 at 4I(I0'<G'I/'477H'66;=7I(:7I'7I/'I,I'1:44<9<<0I(6H'85I(89:866154252I>,'<4I(H'G'I(I(85624:<C<I)(9I(I(56I)8H'543H'I(69I)6I+86;34H';298689: [...]
+simulated.678 0 1 3794 255 22M1I32M1D101M1I11M1I23M1D9M * 0 0 TTTATGGTTGCGCCAGTGCTAGTATCGTACGTCTCTCCCGGTGACAACATGGAAATCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAAGTGCATGAGTAAGTTGACTGCGTCGCGCGGGTAAGTATGACTTAG I.&88I'H'692I(=5736937&7758777683=72I.&I)==6<I*574H'I-&D3I(7777<67:78H'1I*7I'33:8874I(9I)8886759II9.)&58347844I(I(5I)35985;2>;896I0'8956G'88;<I(6<I1(48I(I3(&;</726278I(%H'59276:7915994I0'7I(88C3697G'<9 NM:i:5 MD:Z:54T135A9 oR:Z: [...]
simulated.679 0 1 6377 255 154M1I35M * 0 0 AGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACGTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGC 9<8I/'5I(I0'I):7I'8263;78I(7::6977=7I'I.'H'739;I0'968I(63F&969I8*&5:I*79I(I'I(9;9I(87I(569G':56<99:6I(5826F'=5I)I)<95<5:396;=45F'576I*9;9749;I0'<59;94<I*6&9<6;877656H'290;67:I*;I(6;466<I/':= NM:i:1 MD:Z:189 oR:Z:1 oH:i:1 oP:i:6376 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.680 0 1 8505 255 2M1I44M1I8M1D8M1D136M * 0 0 GTAGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGAGTCATCCGGCCCCGCTCAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCC 6;*I(78>6I':9I(9I(14D&6I.'58;8I(4I(;3862;4H'I(<';96:F'I(IE/(9666I7*46G';578I.';I/'4I(8I(5776I(7I)145I(6H'8:6I;+&I1'I(987;;I=,'65:695;I.&686:8:3994467G'2I'79:E&7I'66:I/'4I(6I(97I(334H'I*I(969I<+&I(<7I* NM:i:4 MD:Z:54^C8^A136 oR:Z:1 oH:i: [...]
-simulated.681 16 1 7197 255 37M1I26M1D135M1D16M * 0 0 TGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGACATTCGGAAGTCAAGTCATATATGAGAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCTCGTAGCCTTGTGT 878565;:9>6:69'F9(I83<&.I:786(I987)I8163'I2'I(I574(I4797<<5955::)5I4:)I5(I699749:8'H'I48)I;8&*8I'I8698<'H4)I57&-I367'I99:(I'/I77&.I6>=(I5:89(I7:77(I98:7975=)I6486:=5:8'0I66975'H;394:7<&,<I958'I:(I87:+I4;88:6'I'I958: NM:i:3 [...]
+simulated.680 0 1 8505 255 2M1I44M1I8M1D8M1D136M * 0 0 GTAGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGAGTCATCCGGCCCCGCTCAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCC 6;*I(78>6I':9I(9I(14D&6I.'58;8I(4I(;3862;4H'I(<';96:F'I(IE/(9666I7*46G';578I.';I/'4I(8I(5776I(7I)145I(6H'8:6I;+&I1'I(987;;I=,'65:695;I.&686:8:3994467G'2I'79:E&7I'66:I/'4I(6I(97I(334H'I*I(969I<+&I(<7I* NM:i:4 MD:Z:54C8A136 oR:Z:1 oH:i:1 [...]
+simulated.681 16 1 7197 255 37M1I26M1D135M1D16M * 0 0 TGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGACATTCGGAAGTCAAGTCATATATGAGAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCTCGTAGCCTTGTGT 878565;:9>6:69'F9(I83<&.I:786(I987)I8163'I2'I(I574(I4797<<5955::)5I4:)I5(I699749:8'H'I48)I;8&*8I'I8698<'H4)I57&-I367'I99:(I'/I77&.I6>=(I5:89(I7:77(I98:7975=)I6486:=5:8'0I66975'H;394:7<&,<I958'I:(I87:+I4;88:6'I'I958: NM:i:3 [...]
simulated.682 0 1 6081 255 209M * 0 0 GACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGT <7I(799;835I(8I(7:4I'8:<7II2*&:I:+&387I':65I/'I'97296768;756I(<I;+&I/':65668=I(7/7=I(87I0'686I-&738298>666688;4=745I'5:8I(6;6I(98I(4I.&<6>;7:I)4:::94889::9:5I-&748I(2=1786;I1(775968I.&87488I-&2I(75I?-'5I(I/'88 NM:i:0 MD:Z:209 oR:Z:1 oH:i:1 oP:i [...]
-simulated.683 0 1 7653 255 118M1D66M * 0 0 ACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATG 9I0'I)54577252598G';;5I(66I0'8;6;8I.&643I(76I)593742F'I(H'88I(64I'H'277>7I(7<4E&499/78I(I(H'367I*8:38>69I(F'I'64I1(7;3I4)7I)I0'I)H'79<2F'7449?I'7:I-&6784II2*&76I(I.&6789886I(7;7:894<9< NM:i:1 MD:Z:118^G66 oR:Z:1 oH:i:1 oP:i:7652 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.683 0 1 7653 255 118M1D66M * 0 0 ACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATG 9I0'I)54577252598G';;5I(66I0'8;6;8I.&643I(76I)593742F'I(H'88I(64I'H'277>7I(7<4E&499/78I(I(H'367I*8:38>69I(F'I'64I1(7;3I4)7I)I0'I)H'79<2F'7449?I'7:I-&6784II2*&76I(I.&6789886I(7;7:894<9< NM:i:1 MD:Z:118G66 oR:Z:1 oH:i:1 oP:i:7652 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.684 16 1 5169 255 51M1I145M * 0 0 GCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCTATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTC 75'G4:78',=I;'H)4I566'G97:(I(I78(I(I&.I797'/I'H(I75'9<4;;35:58(2I=57)I;(I*I;'G9:8;(I5(I6=78689:85:(I54768(I+I596(1I&.I6;5638)I5787&F)I(I<7;8)I(I:476297'/I88'.I<(2I'F'H:(I4'G85544266(1I96<15:9&*8I<8 NM:i:1 MD:Z:196 oR:Z:1 oH:i:1 oP:i:5168 oS:A:R XE:i: [...]
-simulated.685 0 1 5576 255 38M1I49M1I24M1D95M1I4M * 0 0 GTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCTATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGTAGGCAGAATCTTCCCCAGCTTAGATAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGACATT 85:5:=35=767<I(97I'I(<3;392I(7<:85:I(:)7H'2966;5798:=70:977I'7999I)53:694I.'56I(876;I(7:';I(37:H'77I'I8*&:68G'7:;D6I)I(5I*4I)=;I/'7I/'7587I/'75596I'I+6G':8:7I)99:23I(968G'987885II0)&I(78I)9399:I(I);55H'7;4?I(&69I( NM:i:4 M [...]
-simulated.686 0 1 3590 255 37M1D38M1D98M1D32M * 0 0 TTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAATTGAAACTCCAGCTAGATTGAACGAGTTTA I1(8693I)I)I'I(8877365I/'5I*88G'3:I)8I6)775626I)789<I*26I(:958857I(679I)9G'I7*67F'8I'7<7I)I0'I<,&95497I(H'9;;I(5<475:9H':<H':577H'I(I)78I0'75G'I.&I-&G'9H'73I/'0863:5;77I-&:5I,I(5I0'87G'967:868I(4I(65;8I.&9 NM:i:3 MD:Z:37^T38^T98^A32 o [...]
-simulated.687 0 2 73 255 93M1I84M1I2M1D40M * 0 0 GCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGTCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCACGATTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACA :67:6486I)674636:5=G'8I(I(757I(I(857:7<>89:I'4I0'5;I'E&I1(77;/8695I/'85<598G'2I.'2I(4768<I)I'';9I<,'I)559I)I3(I(I(76I(7I/'I(79>7I(;I):I(I(?@7889;3I)867F':I'I.&9;I=,'I(7I(:I(I'7;8*;6I,I(847;755678875<F'49G'I/'1868I(87I(82: [...]
+simulated.685 0 1 5576 255 38M1I49M1I24M1D95M1I4M * 0 0 GTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCTATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGTAGGCAGAATCTTCCCCAGCTTAGATAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGACATT 85:5:=35=767<I(97I'I(<3;392I(7<:85:I(:)7H'2966;5798:=70:977I'7999I)53:694I.'56I(876;I(7:';I(37:H'77I'I8*&:68G'7:;D6I)I(5I*4I)=;I/'7I/'7587I/'75596I'I+6G':8:7I)99:23I(968G'987885II0)&I(78I)9399:I(I);55H'7;4?I(&69I( NM:i:4 M [...]
+simulated.686 0 1 3590 255 37M1D38M1D98M1D32M * 0 0 TTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAATTGAAACTCCAGCTAGATTGAACGAGTTTA I1(8693I)I)I'I(8877365I/'5I*88G'3:I)8I6)775626I)789<I*26I(:958857I(679I)9G'I7*67F'8I'7<7I)I0'I<,&95497I(H'9;;I(5<475:9H':<H':577H'I(I)78I0'75G'I.&I-&G'9H'73I/'0863:5;77I-&:5I,I(5I0'87G'967:868I(4I(65;8I.&9 NM:i:3 MD:Z:37T38T98A32 oR:Z [...]
+simulated.687 0 2 73 255 93M1I84M1I2M1D40M * 0 0 GCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGTCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCACGATTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACA :67:6486I)674636:5=G'8I(I(757I(I(857:7<>89:I'4I0'5;I'E&I1(77;/8695I/'85<598G'2I.'2I(4768<I)I'';9I<,'I)559I)I3(I(I(76I(7I/'I(79>7I(;I):I(I(?@7889;3I)867F':I'I.&9;I=,'I(7I(:I(I'7;8*;6I,I(847;755678875<F'49G'I/'1868I(87I(82: [...]
simulated.688 16 1 1014 255 127M1I67M * 0 0 AATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTACTAAAACCATGCTAGTGCATGAAGCCGACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAA &E8'/I7852(I5'0I=08571&-I698796;'I35'I7'G96:7/'I'H:348755(I7?'- at I18(I;:944'/I2(I5='.I<<'I;45548:A46395)I'0I3082645'I=;'G;81:5:7'7&+:I'I8866956:539:3(I7(I;46:8>853368:;792;7&,<I+I8984<9<<)I9;'I>'H NM:i:1 MD:Z:194 oR:Z:1 oH:i:1 oP:i:1013 oS:A:R XE:i:1 XS [...]
simulated.689 16 1 3761 255 200M * 0 0 TTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAA 'H76'/I(I:'1I47'G6;68399(I8(I886:'/I69)I'I:58'I9186828662578836;4958(3I&E5:46(I:78)I&.I(I='I>886576:65(I5(I8(I75075:;(I6'I4>7;266%(-8II:96:5687)I(I4(I4<749:63;@:3&.I7:7;'I;6:5(I67'/I67)I'0I7769996;9(I NM:i:0 MD:Z:200 oR:Z:1 oH:i:1 oP:i:3760 oS:A:R XE:i [...]
-simulated.690 0 1 7614 255 151M1I35M1D17M * 0 0 GCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCAGTTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGATAGCCCCCTGCCTT 8<7I'7788I(:I)H'42>45:9>964I(I-&:I'<6H'0I-&I(37843547:99I(26>I(47I0';9=96I2(;65H'83I(668997H'I)I):=I(97I)I*54547I'54<I(78::38H'I'I(;49I(666<7:9I'I)E&53-I0';77I;+&8I)I2(I*G'8676G'975:4I(64I+6758IG0)%57G'I( NM:i:2 MD:Z:186^G17 oR:Z:1 oH:i:1 [...]
-simulated.691 16 1 8680 255 33M1I11M1D14M1I113M1D55M * 0 0 CAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGTATTGGGCCCAAGGCTGCTACTGCCCTAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTC 4(I27:'I)I)I:48&+<I'I59'/I*I&-I'I(7'G(2I'/I'I+I3749::749(1I':(I:?*I6=(I(I65;'I'0I9836;33'-?I7:4'G;>362;<6;;9'I69(1I783(I;888343(I(I35?7::(I7<55666>5'H8'I'H7(I'+4II6:(I:419:7D'0I>(I&-I9<8'G:<577)I26(I5'/I' [...]
-simulated.692 16 1 5482 255 41M1D176M * 0 0 TCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCC ;8:8)I'H4'I:46;8'H564;4159'I4'0I6:(I:3'0I,I54::3(I78:'0I?:'H&D&.I7)I5276&E5'G/77(I:67:;<8'H8'I267578664::6'I38(I'G:76;5;'I=9:?49(I:8'H9858:67961;79:35;(I:785)I56138:'0I;9'H9:59'I655'G458(I92)I'- at I<;:(I588(I:(I'H:(I6'G NM:i:1 MD:Z: [...]
-simulated.693 16 2 227 255 6M1D119M1I16M1D49M * 0 0 GTTTGTCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGACGAACTGAAGCGGGTCGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGCTAAGCCAATTTAA 5'/I79(3I'G6'I5(I(I4344:(2I*I45<3:56/9<:96:(I7;(I(1I7954'H98'I32'H74:639588;7:<965;(I7362734966:86'/I(I'H32<8:25'I*I)I7675289);8)I6;4'I/8'.I76*7I542'/I:;(I7>:856566'H0<'/I;)I:;7;9'H:'I'I'0I(I NM:i:3 MD:Z:6^C135^G49 oR:Z:2 oH:i:1 oP:i:226 oS:A:R XE: [...]
-simulated.694 16 1 4143 255 84M1I64M1D65M * 0 0 GTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGTAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCC 533)I8*I69677:'H5(I'I'F(I:(2I(I:35&F-7:4'F937(3I(I'F75:6(I;86>48(I=>(3I<1)I8(I1907=7+7=95113(I'/I7&-I'G(I'G855:6;778349944(I&.I58'H:779(I8'I'I17&.I74*6I472?15944(I&,I(1I8;8'H4576'H'/I7977187657:(I4*I(I536(I9)I8'I'H NM:i:2 MD:Z:14 [...]
-simulated.695 0 1 8148 255 48M1D62M1I90M * 0 0 AGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATCGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACC 8565679I;+&694:I)I-&G'?7I(;:9I(5H'I/'93:8I(4=<95I,8<:9I(I'74I(899:882;I(7G'3;E&47446;I/'I(83I*;=556I)7I(G'6569*=5I'6<3<8I)66I'4:55576686I(I)I(I2(I)46599I'87H'7I)>5I1'48:I(6I(<6786661654I)4<<I0'G'4777I( NM:i:2 MD:Z:48^C152 oR:Z:1 oH:i:1 oP:i:81 [...]
-simulated.696 16 1 6618 255 99M1D24M1I13M1I11M1D47M * 0 0 TGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCTAAAGCTGGGCTTTTTCTGAAGTTCATCAGGCCGTCGAGGCTGGTATGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTC 97:689(I at 688537'H6:85)I(2I:(I265(I(I'H659'H'/I6667956745397*I(I75568:5<59993'I6'H(I:967:(I57984*I77*7I9'/I=49'0I7&*2II3<5'G%)I5768>(I(I5:(:8(I8:'I;78*7I:77)I6'I:=6(I'G)I'H314'H(I8&+<I'I1(I=763&F35 NM:i:4 MD:Z:99^C48^G47 oR:Z:1 oH:i:1 oP: [...]
-simulated.697 16 1 3391 255 27M1D85M1D77M1I6M * 0 0 GAAAGACCGGTATGTGAACAGTCTACCTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTCGGTATT 9'/I49(I&E8=9788(I8374;58&F,I&-I57:;(I4;:46936283799::8(I>:9;6(.BI:8(I',5II1(1I=43:4:9'I@'G<'/I64&.I'H2;29'H?8;1,I;&E5(I6<865868&F3(2I9'G;9:(I)I9(I4'0I(I:<?76;&+9I461'/I(I'H7;'I39859;'H(I(I('H73)I NM:i:3 MD:Z:27^T85^G83 oR:Z:1 oH:i:1 oP:i:3390 [...]
-simulated.698 16 1 3569 255 21M1D52M1D138M * 0 0 TGCTCGATTAATTGGTATTCGTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCT 9464;6<(I'I'I'H;;'H:;,I9887'I(I(I'H6624:<5(2I;)I6:)I:9(I6'-?I8;5825'I<:94C46&F5<9470@(I35<(I7(I&*9I;6(I5)I887)I&.I&+:I4<86<'G(I95>)I17:;817(I69(I7;5:'G(I'H98'/I7;(I'.I&.I'I3(I:9'0I55=<;6565'0I36'/I'H;'/I=4(I556< NM:i:2 MD:Z:21^T52^ [...]
-simulated.699 16 1 7005 255 134M1D33M1D42M * 0 0 TGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGG 78?5'F>(I3&E68375(I'I7(2I)I5;(I3;&+:I'F=7:84456856;7(I3<&)1II'.I9(I7;:65<)I:748'H979;7(I7(I4735191:7'H76(I<648'G=1'0I7'I'0I78(I88'I(I6,I'0I;76(I4(I9833'H<7(I377=484:3:D(2I6'1I8775*I'I:16766969<6588:5:7786(I8)I NM:i:2 MD:Z:134^T33^G42 [...]
+simulated.690 0 1 7614 255 151M1I35M1D17M * 0 0 GCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCAGTTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGATAGCCCCCTGCCTT 8<7I'7788I(:I)H'42>45:9>964I(I-&:I'<6H'0I-&I(37843547:99I(26>I(47I0';9=96I2(;65H'83I(668997H'I)I):=I(97I)I*54547I'54<I(78::38H'I'I(;49I(666<7:9I'I)E&53-I0';77I;+&8I)I2(I*G'8676G'975:4I(64I+6758IG0)%57G'I( NM:i:2 MD:Z:186G17 oR:Z:1 oH:i:1 o [...]
+simulated.691 16 1 8680 255 33M1I11M1D14M1I113M1D55M * 0 0 CAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGTATTGGGCCCAAGGCTGCTACTGCCCTAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTC 4(I27:'I)I)I:48&+<I'I59'/I*I&-I'I(7'G(2I'/I'I+I3749::749(1I':(I:?*I6=(I(I65;'I'0I9836;33'-?I7:4'G;>362;<6;;9'I69(1I783(I;888343(I(I35?7::(I7<55666>5'H8'I'H7(I'+4II6:(I:419:7D'0I>(I&-I9<8'G:<577)I26(I5'/I' [...]
+simulated.692 16 1 5482 255 41M1D176M * 0 0 TCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCC ;8:8)I'H4'I:46;8'H564;4159'I4'0I6:(I:3'0I,I54::3(I78:'0I?:'H&D&.I7)I5276&E5'G/77(I:67:;<8'H8'I267578664::6'I38(I'G:76;5;'I=9:?49(I:8'H9858:67961;79:35;(I:785)I56138:'0I;9'H9:59'I655'G458(I92)I'- at I<;:(I588(I:(I'H:(I6'G NM:i:1 MD:Z: [...]
+simulated.693 16 2 227 255 6M1D119M1I16M1D49M * 0 0 GTTTGTCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGACGAACTGAAGCGGGTCGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGCTAAGCCAATTTAA 5'/I79(3I'G6'I5(I(I4344:(2I*I45<3:56/9<:96:(I7;(I(1I7954'H98'I32'H74:639588;7:<965;(I7362734966:86'/I(I'H32<8:25'I*I)I7675289);8)I6;4'I/8'.I76*7I542'/I:;(I7>:856566'H0<'/I;)I:;7;9'H:'I'I'0I(I NM:i:3 MD:Z:6C135G49 oR:Z:2 oH:i:1 oP:i:226 oS:A:R XE:i: [...]
+simulated.694 16 1 4143 255 84M1I64M1D65M * 0 0 GTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGTAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCC 533)I8*I69677:'H5(I'I'F(I:(2I(I:35&F-7:4'F937(3I(I'F75:6(I;86>48(I=>(3I<1)I8(I1907=7+7=95113(I'/I7&-I'G(I'G855:6;778349944(I&.I58'H:779(I8'I'I17&.I74*6I472?15944(I&,I(1I8;8'H4576'H'/I7977187657:(I4*I(I536(I9)I8'I'H NM:i:2 MD:Z:14 [...]
+simulated.695 0 1 8148 255 48M1D62M1I90M * 0 0 AGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATCGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACC 8565679I;+&694:I)I-&G'?7I(;:9I(5H'I/'93:8I(4=<95I,8<:9I(I'74I(899:882;I(7G'3;E&47446;I/'I(83I*;=556I)7I(G'6569*=5I'6<3<8I)66I'4:55576686I(I)I(I2(I)46599I'87H'7I)>5I1'48:I(6I(<6786661654I)4<<I0'G'4777I( NM:i:2 MD:Z:48C152 oR:Z:1 oH:i:1 oP:i:814 [...]
+simulated.696 16 1 6618 255 99M1D24M1I13M1I11M1D47M * 0 0 TGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCTAAAGCTGGGCTTTTTCTGAAGTTCATCAGGCCGTCGAGGCTGGTATGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTC 97:689(I at 688537'H6:85)I(2I:(I265(I(I'H659'H'/I6667956745397*I(I75568:5<59993'I6'H(I:967:(I57984*I77*7I9'/I=49'0I7&*2II3<5'G%)I5768>(I(I5:(:8(I8:'I;78*7I:77)I6'I:=6(I'G)I'H314'H(I8&+<I'I1(I=763&F35 NM:i:4 MD:Z:99C48G47 oR:Z:1 oH:i:1 oP:i: [...]
+simulated.697 16 1 3391 255 27M1D85M1D77M1I6M * 0 0 GAAAGACCGGTATGTGAACAGTCTACCTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTCGGTATT 9'/I49(I&E8=9788(I8374;58&F,I&-I57:;(I4;:46936283799::8(I>:9;6(.BI:8(I',5II1(1I=43:4:9'I@'G<'/I64&.I'H2;29'H?8;1,I;&E5(I6<865868&F3(2I9'G;9:(I)I9(I4'0I(I:<?76;&+9I461'/I(I'H7;'I39859;'H(I(I('H73)I NM:i:3 MD:Z:27T85G83 oR:Z:1 oH:i:1 oP:i:3390 o [...]
+simulated.698 16 1 3569 255 21M1D52M1D138M * 0 0 TGCTCGATTAATTGGTATTCGTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCT 9464;6<(I'I'I'H;;'H:;,I9887'I(I(I'H6624:<5(2I;)I6:)I:9(I6'-?I8;5825'I<:94C46&F5<9470@(I35<(I7(I&*9I;6(I5)I887)I&.I&+:I4<86<'G(I95>)I17:;817(I69(I7;5:'G(I'H98'/I7;(I'.I&.I'I3(I:9'0I55=<;6565'0I36'/I'H;'/I=4(I556< NM:i:2 MD:Z:21T52C1 [...]
+simulated.699 16 1 7005 255 134M1D33M1D42M * 0 0 TGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGG 78?5'F>(I3&E68375(I'I7(2I)I5;(I3;&+:I'F=7:84456856;7(I3<&)1II'.I9(I7;:65<)I:748'H979;7(I7(I4735191:7'H76(I<648'G=1'0I7'I'0I78(I88'I(I6,I'0I;76(I4(I9833'H<7(I377=484:3:D(2I6'1I8775*I'I:16766969<6588:5:7786(I8)I NM:i:2 MD:Z:134T33G42 o [...]
simulated.700 16 1 6606 255 125M1I67M * 0 0 TTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGTCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCT (I'G5(I5(I7>74>:87(I557:69>)I8><6'H'0I6(I46;)I(I*I58.(I)4I8;59:87;;;6:4(I'I5648A;::533<4)I:&E(I76?8/'F2:45:(I8=&*8I5'.I952'0I&6&*3II347(I'I?:497(I'F68<<'I49'H79=&*9I355(I5(I7;7(I(I'I'G781(I(I94 NM:i:1 MD:Z:192 oR:Z:1 oH:i:1 oP:i:6605 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.701 16 2 129 255 31M1I53M1I44M1I47M1I42M * 0 0 CCGTATCTCTGGGTCTACGTTGCCCTCCTCACTATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGTCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAACTATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCAGTGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGG 'I56<53<33'.I=75556(I9&-I5(I76:(6:)I)I47&+:I)I;9:)I'.I)I'F5:)I<&.I*I6081&E;(I7(I(I647&:88;9'H4<4'I1*I(3I27&+:I'I:(I:(I'I46:33(1I(I%9<7:679398;31:'I9;(I'0I8759'H6<)I96'H6;6879><44&:893722(I7<73956316459'0I)I)I8/::; [...]
-simulated.702 0 1 2189 255 28M1D64M1I86M * 0 0 ACTGAGTTGAGCCCTTCATTTTTTGTAGCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAAGTCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTC :3686;I(4;6I/'I(/7II;/)&758:I5)557<I'599;76595676902I(77I/'7<6;I(463:<6B55;:48:I(I(6<7I2(1I*(969384>I(=:524:4I'1;:8I)<H'I<,&<I0'H'::I(I)/78;I?-'8 at 7I(649I-&95I1(9I(/6845677I(4I'487 NM:i:2 MD:Z:28^C150 oR:Z:1 oH:i:1 oP:i:2188 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.702 0 1 2189 255 28M1D64M1I86M * 0 0 ACTGAGTTGAGCCCTTCATTTTTTGTAGCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAAGTCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTC :3686;I(4;6I/'I(/7II;/)&758:I5)557<I'599;76595676902I(77I/'7<6;I(463:<6B55;:48:I(I(6<7I2(1I*(969384>I(=:524:4I'1;:8I)<H'I<,&<I0'H'::I(I)/78;I?-'8 at 7I(649I-&95I1(9I(/6845677I(4I'487 NM:i:2 MD:Z:28C150 oR:Z:1 oH:i:1 oP:i:2188 oS:A:F XE:i:2 XS:i:0 XI:i:0
simulated.703 16 1 5483 255 202M * 0 0 CATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTA 6::'I)I6'H49946'H5:77;978(I2&.I:9'I49'0I&-I8:335'F378'/I55'H(I'0I5(I57:9'I7)I97:'H67846;/'I7'H17596::85884'H57'I(I<68965'G858876)I<7'F695884777<75:57:7'H5695(I69;7:4'/I79)I57<:(I68@&E654)I;5'I&+:I=;<(I; NM:i:0 MD:Z:202 oR:Z:1 oH:i:1 oP:i:5482 oS:A:R [...]
-simulated.704 0 1 2597 255 59M1I80M1D44M1D15M * 0 0 TTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGACGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAGTCCTTTGGTGCTA I(I'48B776:I)26I(97976:5I'169497;654II2*&94G'4I1(<:I(47;:53%7;59I*9:6>6:G'7348F&75538:?742278I)596I)258758;98=I(8I(9657;648886>I(=I?-'6:I-&6I,I8*&68G'868I1(I(>8602=6I'4;I)I(:I<,&C7925;D88I*I/'I(3<685 NM:i:3 MD:Z:139^T44^A15 oR:Z:1 oH:i:1 oP [...]
-simulated.705 16 1 7280 255 40M1D66M1I50M1D50M * 0 0 GCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATAGTCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATT 5&E54'H6;',=I)I78565'I<'H86&,I8;6(I767(I+I7:'/I49<(I94;=(I5:79(I6;65>;56(I737>87755'1I89986(I938479;(-AI41);'I7(I269'0I677:37(I&F81<195/3<467486<&.I4(IA88(I4*7I6:5387659'G'G4;(I(I0;477:'/I(2I93;8996'G87'I7)I NM:i:3 MD:Z:40^G116^C50 [...]
-simulated.706 16 1 8665 255 59M1D61M1I69M * 0 0 CCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGTCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAG (I625(3I6'H6'H5;'I559)I(I)I7:7&+<I'H73'.I(I'0I(I4'I&-I'0I'I+I393986488&-I8(I<9(I;5(I(I373)I'/I7:;::89&+:I>:9)I=6;:495956'7(I;8(2I25;(I7928;59'H+I84;:56'H3839:9436)I:'H(I9'I&)0II77'I7:8658'I8 NM:i:2 MD:Z:59^G130 oR:Z:1 oH:i:1 oP:i:8664 oS:A:R XE:i:2 XS:i [...]
-simulated.707 16 1 1712 255 54M1I121M1D6M1D11M * 0 0 TATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGTCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGCTCGGCCGTTGACTTA 3:=;7*I57:63554;6636;5'G:978'G67&-I6<:/67&+:I'I;/477(I%8;77705(I387(I(I4&*7I6558(I'I91'.I'H6(I:99:;2974095:5'I;3663(I68'0I'0I)I9B7&*9I6795(I7(I'G)I5&F199'I6847'H'G87:8687>6:8)IB897'H+I8)I657(I7 NM:i:3 MD:Z:175^G6^C11 oR:Z:1 oH:i:1 oP:i:1711 oS:A [...]
-simulated.708 0 1 1395 255 90M1I2M1I64M1D57M * 0 0 ATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGTAGTAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCG 258I'4:19778:3I9+&5I'9I(56I(;I/';35778I)6I'6976;8I(7944H'I)9I-&<I)I(I0'787;5I(3:5498I/'?;8'85&7F&G'6I'G'8555576637646<57I(I/'?5476I1(826II1*&I'I(79I(I'?5867:5I,58355955;F'35554?886I1(H'4>9733877I(::658:5783I-&789818 NM:i:3 MD [...]
+simulated.704 0 1 2597 255 59M1I80M1D44M1D15M * 0 0 TTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGACGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAGTCCTTTGGTGCTA I(I'48B776:I)26I(97976:5I'169497;654II2*&94G'4I1(<:I(47;:53%7;59I*9:6>6:G'7348F&75538:?742278I)596I)258758;98=I(8I(9657;648886>I(=I?-'6:I-&6I,I8*&68G'868I1(I(>8602=6I'4;I)I(:I<,&C7925;D88I*I/'I(3<685 NM:i:3 MD:Z:139T44A15 oR:Z:1 oH:i:1 oP:i [...]
+simulated.705 16 1 7280 255 40M1D66M1I50M1D50M * 0 0 GCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATAGTCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATT 5&E54'H6;',=I)I78565'I<'H86&,I8;6(I767(I+I7:'/I49<(I94;=(I5:79(I6;65>;56(I737>87755'1I89986(I938479;(-AI41);'I7(I269'0I677:37(I&F81<195/3<467486<&.I4(IA88(I4*7I6:5387659'G'G4;(I(I0;477:'/I(2I93;8996'G87'I7)I NM:i:3 MD:Z:40G116C50 o [...]
+simulated.706 16 1 8665 255 59M1D61M1I69M * 0 0 CCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCAAGGCTGCTACTGCCCAGGACAAGCAAGGCGTGGTTTCGTGACTAAAACTAGGAGACATCGTGTCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAG (I625(3I6'H6'H5;'I559)I(I)I7:7&+<I'H73'.I(I'0I(I4'I&-I'0I'I+I393986488&-I8(I<9(I;5(I(I373)I'/I7:;::89&+:I>:9)I=6;:495956'7(I;8(2I25;(I7928;59'H+I84;:56'H3839:9436)I:'H(I9'I&)0II77'I7:8658'I8 NM:i:2 MD:Z:59G130 oR:Z:1 oH:i:1 oP:i:8664 oS:A:R XE:i:2 XS:i: [...]
+simulated.707 16 1 1712 255 54M1I121M1D6M1D11M * 0 0 TATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGTCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGCTCGGCCGTTGACTTA 3:=;7*I57:63554;6636;5'G:978'G67&-I6<:/67&+:I'I;/477(I%8;77705(I387(I(I4&*7I6558(I'I91'.I'H6(I:99:;2974095:5'I;3663(I68'0I'0I)I9B7&*9I6795(I7(I'G)I5&F199'I6847'H'G87:8687>6:8)IB897'H+I8)I657(I7 NM:i:3 MD:Z:175G6C11 oR:Z:1 oH:i:1 oP:i:1711 oS:A:R [...]
+simulated.708 0 1 1395 255 90M1I2M1I64M1D57M * 0 0 ATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGTAGTAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCG 258I'4:19778:3I9+&5I'9I(56I(;I/';35778I)6I'6976;8I(7944H'I)9I-&<I)I(I0'787;5I(3:5498I/'?;8'85&7F&G'6I'G'8555576637646<57I(I/'?5476I1(826II1*&I'I(79I(I'?5867:5I,58355955;F'35554?886I1(H'4>9733877I(::658:5783I-&789818 NM:i:3 MD [...]
simulated.709 16 1 7028 255 4M1I23M1I129M1I24M * 0 0 AAGGTACTTACGGGGAACGTGCACGACTACACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTAGTGAACCGCTAGTGTGCGCGTGTAG 'H(I(>4(I8:&*7I(I6973896=:<:%58'G59'+3II'/I7(I657859(I5894(I45:66*I6(I8946;795='H;6(I4;:5(I95&.I7)I'/I;5(I76'H'H8'/I'/I.<9*I6(I879:'I95)I8956489895'G'.I9(2I98)75(I'G5796;5570=56=28;59 NM:i:3 MD:Z:180 oR:Z:1 oH:i:1 oP:i:7027 oS:A:R XE:i:3 XS:i:0 XI:i:0
simulated.710 0 1 5903 255 202M * 0 0 ATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCT 69E&2708:80I.&I(I<+&69I5)8:5I;+&:G'H'H'F'8980:8:57G'389;G'5I'2I(:I)6I/'5:I(F&<29788H'79:35675I/'2G'I(7I.&?678986I>,'8I0';II;/)&=58:;2;8;457I(E&9?I'73:I0'4258:6856563474H'94;;;3I3(1I'359845:I(5I'254G':77 NM:i:0 MD:Z:202 oR:Z:1 oH:i:1 oP:i:5902 oS:A:F X [...]
-simulated.711 16 1 3467 255 54M1D129M1I27M * 0 0 ACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGAGTCTAGAAGCTCCGCCTTTTGCGGACCT :'.I575986?)I:(I8&-I=8&.I'G26;5&F:75:&-I4(I6(I:>9573<;@7(1I:'I7>7&E)I7'F7(2I(I;87882&*9I4:;(1I(I&D43)I=68918'H'H'I'I65'H13(1I3984(I(I'I(I969769<'/I9)I36&F67(I=&*8I996974(I8465'I77&F7>&:7655(I4:='I9'I&+9I35(I2'G4 NM:i:2 MD:Z:54^C156 [...]
+simulated.711 16 1 3467 255 54M1D129M1I27M * 0 0 ACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGAGTCTAGAAGCTCCGCCTTTTGCGGACCT :'.I575986?)I:(I8&-I=8&.I'G26;5&F:75:&-I4(I6(I:>9573<;@7(1I:'I7>7&E)I7'F7(2I(I;87882&*9I4:;(1I(I&D43)I=68918'H'H'I'I65'H13(1I3984(I(I'I(I969769<'/I9)I36&F67(I=&*8I996974(I8465'I77&F7>&:7655(I4:='I9'I&+9I35(I2'G4 NM:i:2 MD:Z:54C156 [...]
simulated.712 0 1 7013 255 13M1I194M * 0 0 ATAATGCGTGGTTACAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTG 56G'4935 at G'G''=I.&F'68I(86I:+&I)9848:<5793647I)90II2*&I1(5I(7;77:8I)9398I'5956:I(9I(275527;98I(;7I(845:H'56I0'4I)I.'::I(79G'I(:I1(I0'755H';I)8;59I(35I(;;35==88;7I*I/'0I/'5747I(H'55<77655587;7977?93:3I(9I(:43: NM:i:1 MD:Z:207 oR:Z:1 oH:i:1 o [...]
-simulated.713 0 1 6035 255 3M1I60M1I39M1I7M1D10M1I83M1D16M * 0 0 TAGTACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCAGTGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACACGACGAAGCCCTTTCTATACTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCTATAACGTGTATCC 755':95:I(E&;5I)979I/'4739682;7447<9;I)966376I/'6H';575235I(.I(9'74I':69<IG0)%:I<,&977I(543I2(I'<698;7;8,084.I)7I7*I0'3755&::0I)1:47I)79I/'69:I1(5;855884885<8:88586I(6:5I)5;6H';<I'7I.&6<;4::I)67329;55:187 [...]
+simulated.713 0 1 6035 255 3M1I60M1I39M1I7M1D10M1I83M1D16M * 0 0 TAGTACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCAGTGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACACGACGAAGCCCTTTCTATACTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCTATAACGTGTATCC 755':95:I(E&;5I)979I/'4739682;7447<9;I)966376I/'6H';575235I(.I(9'74I':69<IG0)%:I<,&977I(543I2(I'<698;7;8,084.I)7I7*I0'3755&::0I)1:47I)79I/'69:I1(5;855884885<8:88586I(6:5I)5;6H';<I'7I.&6<;4::I)67329;55:187 [...]
simulated.714 0 1 7026 255 26M1I161M1I10M1I12M * 0 0 CAAAGGACTTACGGGGAACGTGCACGTACTCACCACAAAAATTTACCGTCACAGGTGCGAACTCATAATCCACACGCTCTGGATCCTATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCGTGGCGTGGGCTATCAACACAAGC 9I.'I(62I(68I:+&I(=8585;<5+7;576H'@7II3+'I.&<I)67947:I'7647I(47:36I(5I(496:;2786I*76I(;6::I(6:I.':F&I5)49I'::I'I)3I0'I0'<72H'7I(6:7=I(;0I'::94983963I(I2(2I1(29,6H'I':;867=364666687<7:<56I(&5I);74I/'3%997I(679I(69 NM:i:3 MD:Z:2 [...]
-simulated.715 16 1 1938 255 76M1D78M1I3M1D27M * 0 0 CTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCACGCTCCTACAATCCCGTCAACTTAGCGAGAC 5)I826)I436'I976;58>9(I7946',=I8<)I=6976785)I9'H7'/I&.I68=7:'I7736(I8'I67375(.CI6=(I:/::;(I77:8:6645993(I56?15'/I974(I7'H&-I(I at 8799&+:I1)I77:'G8(I6:143(I6&<77,I;;5'F6(1I586(I;)I75:98:34 NM:i:3 MD:Z:76^A81^C27 oR:Z:1 oH:i:1 oP:i:1937 oS:A:R XE:i:3 XS:i:0 XI:i:0
+simulated.715 16 1 1938 255 76M1D78M1I3M1D27M * 0 0 CTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCACGCTCCTACAATCCCGTCAACTTAGCGAGAC 5)I826)I436'I976;58>9(I7946',=I8<)I=6976785)I9'H7'/I&.I68=7:'I7736(I8'I67375(.CI6=(I:/::;(I77:8:6645993(I56?15'/I974(I7'H&-I(I at 8799&+:I1)I77:'G8(I6:143(I6&<77,I;;5'F6(1I586(I;)I75:98:34 NM:i:3 MD:Z:76A81C27 oR:Z:1 oH:i:1 oP:i:1937 oS:A:R XE:i:3 XS:i:0 XI:i:0
simulated.716 16 1 2085 255 188M * 0 0 GCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCC 9775@*I8648(3I;75'I7'0I9;6'I8'I<9:299;=6448)I6'/I)I=77&.I(I74'G4;(I'H'G&+9I8'G5:(I(2I)I48:/(I788979(I54)I:5996'I578)5I'I=9%(-7II3:79&*8I<9?:'I8899<?:50/:83>9(I7=(1I75;4'F2557:45>2;877;(I'F NM:i:0 MD:Z:188 oR:Z:1 oH:i:1 oP:i:2084 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.717 16 1 4015 255 26M1D164M1I7M * 0 0 AAACCCCGCCACACAGCTCGGACTTTAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGTAGGTCGG &-I'-AI='G7886:2>;9(I:;'0I)5I9;85::'/I'I8(I(I'I28864<<5(1I(I3544'/I75='H'I(I'F=987'H2;6;6(I;(2I98:686695'H673&.I7'H)4I'H3&E7?6;8<8(I7(I675;37'I<'I(I'F(I9)6I)I989'H>;>8'I683'.I'G(I:3;8'I5=@:<'9)I48&F NM:i:2 MD:Z:26^A171 oR:Z:1 oH:i:1 oP:i:4014 oS [...]
-simulated.718 0 1 5022 255 175M1D33M * 0 0 AGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATGCAAGGTTTGATGGGTTGGTCATCTCGACATC ;84I(;6I'48I/';II=0*';I:+&H'589B8567I(:8<I-&3>I(9<5I)7858:I(</I)@798H'779779:66I(39575I'985G'67I(I(6I-&5E&66:47;II9.)&335>987847G'775;I0';0;I'8I(7866G'1:67I;+&:I(I/':96I)858I(B57G'I(I3(1:8I0'I(I(58678=557>:76 NM:i:1 MD:Z:175^T33 oR:Z:1 oH:i [...]
+simulated.717 16 1 4015 255 26M1D164M1I7M * 0 0 AAACCCCGCCACACAGCTCGGACTTTAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGTAGGTCGG &-I'-AI='G7886:2>;9(I:;'0I)5I9;85::'/I'I8(I(I'I28864<<5(1I(I3544'/I75='H'I(I'F=987'H2;6;6(I;(2I98:686695'H673&.I7'H)4I'H3&E7?6;8<8(I7(I675;37'I<'I(I'F(I9)6I)I989'H>;>8'I683'.I'G(I:3;8'I5=@:<'9)I48&F NM:i:2 MD:Z:26A171 oR:Z:1 oH:i:1 oP:i:4014 oS: [...]
+simulated.718 0 1 5022 255 175M1D33M * 0 0 AGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATGCAAGGTTTGATGGGTTGGTCATCTCGACATC ;84I(;6I'48I/';II=0*';I:+&H'589B8567I(:8<I-&3>I(9<5I)7858:I(</I)@798H'779779:66I(39575I'985G'67I(I(6I-&5E&66:47;II9.)&335>987847G'775;I0';0;I'8I(7866G'1:67I;+&:I(I/':96I)858I(B57G'I(I3(1:8I0'I(I(58678=557>:76 NM:i:1 MD:Z:175T33 oR:Z:1 oH:i: [...]
simulated.719 0 1 3295 255 172M1I8M1I11M * 0 0 ATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCTACCCAGCACTGTAATGGTAA 3I(659:;::8897I'9E&I(7I<,'<I'I(3;<8I)56I(I(9<7I1(<257I:+&5I(<4I)I(9:852I9+&G'H'8I.'36149F'5:87856I.&>9I(I(7<838<E&687;3:3I(I1'I.'5859I(<:6799477<8;16597I(48744I:+&57I)II1*&'9I2(:=67&499H'3I(7I' NM:i:2 MD:Z:191 oR:Z:1 oH:i:1 oP:i:3294 oS:A:F XE:i:2 XS: [...]
-simulated.720 16 1 980 255 56M1D21M1I90M1I36M * 0 0 TCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGGTCGACTAGGCACCAGGTCACGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCGATGCTAGTGCATGAAGCCGACGTATACAGACTAGCT ?777<::2(I7)5I67'H<'H'0I78686(I'1I(I7(1I5984(I:&.I;5;8A8,I:8:<597(I92)I:'H:98)46'I'I;=957=8(I53',<I82(I9475:'0I5'H>9'0I6<'I7898585;46:66(I'0I9=21485'I96)I64577659',=I)I(/88463:9:<67;(I:(I943955787756957;9; NM:i:3 MD:Z:56^G147 oR:Z:1 o [...]
+simulated.720 16 1 980 255 56M1D21M1I90M1I36M * 0 0 TCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTGTAGCGGTCGACTAGGCACCAGGTCACGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTCTATAAAACCGATGCTAGTGCATGAAGCCGACGTATACAGACTAGCT ?777<::2(I7)5I67'H<'H'0I78686(I'1I(I7(1I5984(I:&.I;5;8A8,I:8:<597(I92)I:'H:98)46'I'I;=957=8(I53',<I82(I9475:'0I5'H>9'0I6<'I7898585;46:66(I'0I9=21485'I96)I64577659',=I)I(/88463:9:<67;(I:(I943955787756957;9; NM:i:3 MD:Z:56G147 oR:Z:1 oH [...]
simulated.721 0 1 1872 255 22M1I47M1I140M * 0 0 CCTATCATGATACAAGGCTCGGTCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTAGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGA H'43A2=<76<2;I*F&:47H''I/'?I)<58I(;6268I)98I(E&695H'358I(834:5I(;I*8I(&932I(837H'973856;8G'7867I?-'36H'33;89:5 at I(9I(6I0'I/'375;7I(757:I)8I(6::82II3+&76G'9:7>9I(68879;935:44I)56:57I.&853H'5I(I2(G'979=7I?-';G'3:<9 NM:i:2 MD:Z:209 oR:Z [...]
simulated.722 16 1 8812 255 54M1I122M * 0 0 CGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGACTTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGA 6:56(I:<:<57;9;&EC'I(I8)I&*2II65(I::46<9'H'.I5'I(2I897'(I40;85(I77)I5'/I'.I)I77;7548>3(I8(I6;'H8;<87<869:78&+;I54'G(I)I&E*I6226<:28<(I9'I*I68'I7(I:27)I)I;:'G4&-I87;:6'H9133593:6 NM:i:1 MD:Z:176 oR:Z:1 oH:i:1 oP:i:8811 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.723 16 2 120 255 8M1D35M1D68M1D18M1D48M * 0 0 GGTCTTGGCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGATTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATAT 'H89)I'I,I948;8:77'/I568;25)I6'0I;'I::545'HD36&+;I(I;=8'H'.I*I(I99'I7'0I(I6864'I;'G7(I'G;65<3392)I669(I6'H'.I76)5I(I7&F9'H(I=6=92+I)I<71:4:65;96695)I=:(I'/I8:4<(I74(I76(I::14568 NM:i:4 MD:Z:8^C35^G68^C18^T48 oR:Z:2 oH:i:1 oP:i:119 oS:A:R XE:i:4 XS:i:0 XI:i:0
-simulated.724 16 1 832 255 56M1I34M1I95M1D11M * 0 0 TACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCACGACCTTCTCTGTTCATAAAACTTACGCATGATGCTACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCTAGCGGCGG 56695855:@695*I9866697;68)I;)I'G9<'I:57(I7'I8(I&-I'F3;97&:5&F'G25995&E3;8&,<I5(I5899<99388<&9',>I(I983:&.I(I77(1I66'I8<25:8:391968768547(I97=745(I6;7:5;;2;=:1(I6'1I7:'I8(I'1I=:166)I&-I'H1,I:546(I8,I NM:i:3 MD:Z:185^C11 oR:Z:1 oH:i:1 oP:i:831 [...]
+simulated.723 16 2 120 255 8M1D35M1D68M1D18M1D48M * 0 0 GGTCTTGGCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGATTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATAT 'H89)I'I,I948;8:77'/I568;25)I6'0I;'I::545'HD36&+;I(I;=8'H'.I*I(I99'I7'0I(I6864'I;'G7(I'G;65<3392)I669(I6'H'.I76)5I(I7&F9'H(I=6=92+I)I<71:4:65;96695)I=:(I'/I8:4<(I74(I76(I::14568 NM:i:4 MD:Z:8C35G68C18T48 oR:Z:2 oH:i:1 oP:i:119 oS:A:R XE:i:4 XS:i:0 XI:i:0
+simulated.724 16 1 832 255 56M1I34M1I95M1D11M * 0 0 TACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCACGACCTTCTCTGTTCATAAAACTTACGCATGATGCTACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCTAGCGGCGG 56695855:@695*I9866697;68)I;)I'G9<'I:57(I7'I8(I&-I'F3;97&:5&F'G25995&E3;8&,<I5(I5899<99388<&9',>I(I983:&.I(I77(1I66'I8<25:8:391968768547(I97=745(I6;7:5;;2;=:1(I6'1I7:'I8(I'1I=:166)I&-I'H1,I:546(I8,I NM:i:3 MD:Z:185C11 oR:Z:1 oH:i:1 oP:i:831 [...]
simulated.725 0 1 4827 255 178M1I27M * 0 0 AGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACGTGGGTCCCATCGCATGGAGTAATGTTG :5I(II4+':47?6I)<H'I(95I(96I'7=I(9;884I-&<8I'8874>9=;5<7I(5I/'738I(0I>,'4D4?6I(97H'I'9:I(G'8598989I(899I)I(776;;6967:89H';I*98:<H'7:;I(9I0'I(F'7698I'3I(46;98I(46895E&8276G'577284&2I-&:I/'<7866:;I(3;8I(59I*8 NM:i:1 MD:Z:205 oR:Z:1 oH:i:1 oP:i: [...]
simulated.726 0 1 2267 255 194M * 0 0 CTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGA 6;I)I)787I3(9F'2;759>4I*9748:45I(3757I(:I)I<,&;I.&I)78I(G'76:8I?-'499I(812I2(73I-&:F&65579709I(:H'7:6866@<275I)84:4933785;9II0)&9;H'I1(I(9667I(I1'I(I(95?3I(I-&I4):53I'7:I)85D&9699779H'7I-&5I(;7: NM:i:0 MD:Z:194 oR:Z:1 oH:i:1 oP:i:2266 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.727 0 1 702 255 213M * 0 0 CATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGCATGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGC 4>51I(.8<H'69<I(>:I.&8F&51I*8893967::87I(6977I)93I(2<:<8I(I(;897I(F'8I1(I0'I(748 at I/'7576365I>,'45:9335:+6:=8<:86I3(64;47985849I):6638468;:683;1I(885965;87=G'8G'I*91G'542I(8I(5I(I1(I(759778G'I'885:6I'975I;+&6E&:7:4 NM:i:0 MD:Z:213 oR:Z:1 oH:i [...]
-simulated.728 16 1 7488 255 34M1D88M1I82M * 0 0 TAAGGCTAATTGATGCATATCCCTGCACCTTTCATTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGTATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCAT 4'H'H36'H'H4<6755924'/I:538(I&.I9:+I'I&.I54)I)I)I(I66::88'I57'I'G8676(I95756)I3)I4'I'I48@'H7:6(I=4'H4)I'I=(I6876637977'F47%67:8;='H=688(I4(I*I786;498678:)I'/I5(I?>'I;'0I)I8:424362884*I977(I6:(1I9=999(3I<:: NM:i:2 MD:Z:34^T170 oR:Z:1 oH:i: [...]
-simulated.729 0 1 6384 255 13M1I48M1D60M1I66M * 0 0 GGTTTGGTCTTGACGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTAGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGC G'I1(I(3;I*<;'3;996E&3:38675 at 8I(I/'I)6;;;I/'865I(79H'588I8*&9;D87I(I(I):84I'65I'878I*7:4:969=I(2557I(8;I(H'66<2=46:76;<:I'%279I)76:;484I1(6:;5247I(;7566:988;8I(53>8679I'8F&43;227I2(77I(I'63 NM:i:3 MD:Z:61^T126 oR:Z:1 oH:i:1 oP:i:6383 oS:A:F XE:i:3 XS [...]
-simulated.730 0 1 5450 255 7M1I41M1D161M * 0 0 TACGCTGTAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGT 8:29967(I(99;9988;8I(F'653I'6I(;38;77I)F&7I)<=788C:98;<4;4I)=I1(85I'=6I-&I.'39;:<I(715I/'87I'G'I-&7H'6318I(4I'8=7I(5353=79I':G'7277<7835496I'66G'I(98977;H'855784I(79I(4:>26999986<:353;I'6:;8I(5;8679I.'<4I(48;59 NM:i:2 MD:Z:48^T161 oR: [...]
+simulated.728 16 1 7488 255 34M1D88M1I82M * 0 0 TAAGGCTAATTGATGCATATCCCTGCACCTTTCATTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGTATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCAT 4'H'H36'H'H4<6755924'/I:538(I&.I9:+I'I&.I54)I)I)I(I66::88'I57'I'G8676(I95756)I3)I4'I'I48@'H7:6(I=4'H4)I'I=(I6876637977'F47%67:8;='H=688(I4(I*I786;498678:)I'/I5(I?>'I;'0I)I8:424362884*I977(I6:(1I9=999(3I<:: NM:i:2 MD:Z:34T170 oR:Z:1 oH:i:1 [...]
+simulated.729 0 1 6384 255 13M1I48M1D60M1I66M * 0 0 GGTTTGGTCTTGACGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTAGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGC G'I1(I(3;I*<;'3;996E&3:38675 at 8I(I/'I)6;;;I/'865I(79H'588I8*&9;D87I(I(I):84I'65I'878I*7:4:969=I(2557I(8;I(H'66<2=46:76;<:I'%279I)76:;484I1(6:;5247I(;7566:988;8I(53>8679I'8F&43;227I2(77I(I'63 NM:i:3 MD:Z:61T126 oR:Z:1 oH:i:1 oP:i:6383 oS:A:F XE:i:3 XS: [...]
+simulated.730 0 1 5450 255 7M1I41M1D161M * 0 0 TACGCTGTAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGT 8:29967(I(99;9988;8I(F'653I'6I(;38;77I)F&7I)<=788C:98;<4;4I)=I1(85I'=6I-&I.'39;:<I(715I/'87I'G'I-&7H'6318I(4I'8=7I(5353=79I':G'7277<7835496I'66G'I(98977;H'855784I(79I(4:>26999986<:353;I'6:;8I(5;8679I.'<4I(48;59 NM:i:2 MD:Z:48T161 oR:Z [...]
simulated.731 16 1 1589 255 210M * 0 0 TGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCC 8=776936873'0I:995786'/I>'I99:6(I(I(I49&+;I754)I&*9I8&-I;'F9>7:)I9456(I6)I5(I8)I453;:(I86857(I5:876997(I)I&-I(I9(I?>(I'F<:6;4;89(I64666619718786>'G9355'I87(1I754::<',<I'H48337'H975<889)I863(I'I6&+:I534;'I'H6;(I NM:i:0 MD:Z:210 oR:Z:1 oH:i:1 o [...]
-simulated.732 16 1 1986 255 164M1I6M1D6M * 0 0 TGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGTAACCTTGGGACC :&.I(3I=<4=7'I897.(I9'H8:5;5&)0II67)I<896:&F547996594:5:'H4<3<8'1I99='I5'G&-I)I::36:',<I2'I58<&F1'G15::7(I6671(1I:9:(I8'/I;62(I4(I9765599:5575)I7(2I(I856'/I)I68(I99%)I&E'I)6I:'I NM:i:2 MD:Z:170^G6 oR:Z:1 oH:i:1 oP:i:1985 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.732 16 1 1986 255 164M1I6M1D6M * 0 0 TGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGTAACCTTGGGACC :&.I(3I=<4=7'I897.(I9'H8:5;5&)0II67)I<896:&F547996594:5:'H4<3<8'1I99='I5'G&-I)I::36:',<I2'I58<&F1'G15::7(I6671(1I:9:(I8'/I;62(I4(I9765599:5575)I7(2I(I856'/I)I68(I99%)I&E'I)6I:'I NM:i:2 MD:Z:170G6 oR:Z:1 oH:i:1 oP:i:1985 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.733 0 1 772 255 112M1I74M1I16M * 0 0 TTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTACTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATCGCGAGCGACCGACGAC I(I/'G'59:6I-&4447968I at -'868985995687246=9I.'6762::::664I(6::683676855767H'42:9::<95=I*4I(I(:7G':86I(9I(7I(I/'I(&654369I+I(584<9I'814IA-'6I(9<5;55596527I<,'I':6;6I0'H'B7I/';9H'957>;=7:7<<%798;266:I(99997: NM:i:2 MD:Z:202 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.734 0 1 26 255 5M1I4M1D153M1D14M1D33M * 0 0 CTTACTAGACTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCACGGAATCAAGGCGCTCATGCGTGGATTGCCTTGACTTCCGTAGCT ;I(0?&66;5I,9I0':I)<7:8;I.&96F'96I-&597457I(6787629I(:H'9;55I)5I-&E&69847H'7466I(8=4<<;I'I7*&8;:36I(9548=5;5I':82;I0'594:697I)H'94I1(96<:95I'I3(70I(95:719I(:5:9I'9C76G'H'86I'I)9D646==:587I(2I(9I)G'474I(F':5;<9: NM:i:4 MD:Z:9^T1 [...]
-simulated.735 16 1 1694 255 136M1D45M1I50M * 0 0 GCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTACTCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTA :(2I'IA)I:4(I(I=5<88566'H:=6:925<7=6AC79(I5955(I88'0I99>8;:&*8I)I85857(I792=<98'H1:4&F'H3&*8I97>.'I)I76)4I*IA(I3544?67<8;>387(I59;49&E97,I'/I'H144&*8I7:;4)I5(I'I'H7'G9;3&F2396'G)I59+685676748(I'G997(I'0I9'G685& [...]
+simulated.734 0 1 26 255 5M1I4M1D153M1D14M1D33M * 0 0 CTTACTAGACTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCACGGAATCAAGGCGCTCATGCGTGGATTGCCTTGACTTCCGTAGCT ;I(0?&66;5I,9I0':I)<7:8;I.&96F'96I-&597457I(6787629I(:H'9;55I)5I-&E&69847H'7466I(8=4<<;I'I7*&8;:36I(9548=5;5I':82;I0'594:697I)H'94I1(96<:95I'I3(70I(95:719I(:5:9I'9C76G'H'86I'I)9D646==:587I(2I(9I)G'474I(F':5;<9: NM:i:4 MD:Z:9T15 [...]
+simulated.735 16 1 1694 255 136M1D45M1I50M * 0 0 GCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTACTCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTA :(2I'IA)I:4(I(I=5<88566'H:=6:925<7=6AC79(I5955(I88'0I99>8;:&*8I)I85857(I792=<98'H1:4&F'H3&*8I97>.'I)I76)4I*IA(I3544?67<8;>387(I59;49&E97,I'/I'H144&*8I7:;4)I5(I'I'H7'G9;3&F2396'G)I59+685676748(I'G997(I'0I9'G685& [...]
simulated.736 0 1 9024 255 198M * 0 0 GATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCAAGCG 803;I(685I*I)7H'8;7I(656195565H'4554I(I)61388I.&I'I):I(48789:I)763I/'I/'895I'6G'463:1696I*I)61;;78I(3H'5I(I(86I(5I*:6I(77I(8<67I(239:;66969I(I(I-&76I'932I'7I.&7997785;7;;7::655649I'995;:934I/'6H'568 NM:i:0 MD:Z:198 oR:Z:1 oH:i:1 oP:i:9023 oS:A:F XE:i:0 XS [...]
simulated.737 16 1 5039 255 15M1I185M * 0 0 CCCCATTTTCCACATACATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTA &+;I=',=I(I9859&;;55'G47:'0I95'I37:(I5;977'H-8'G:943(I;=7697;47*I58:27(I55;*I=8'G'H<&.I5'I5674:6%(-7II:94579::=:(I1198&.I458'G7)I5074'H3<56&,<I7(I&-I797'H648(I&E84(I'I&-I42;'0I(I(I;=731:637929'0I5=4&D3 NM:i:1 MD:Z:200 oR:Z:1 oH:i:1 oP:i:5038 oS:A [...]
-simulated.738 16 1 3928 255 12M1D22M1I67M1I107M * 0 0 TGCCTATATTGCTTATCCAAATGCATGAGTAATTAGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACACGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAAC 8;'G6.:6(I88+I54'G'.I8:@9798;9)I)I(689866<75639:&-I8'G94(I75<;)I;856=:@'H4)I:9(I4>:7796&-I&+9I8'I4:554*7865'H56'0I&+9I86;?28&.I(I3(I(I'I1>06;883'0I'I88;9&.I278'I(I'I)I3868(I;988:'I7&-I86;868767(I34:'.I6'G&-I'H: NM:i:3 MD:Z:12^T [...]
-simulated.739 16 1 1678 255 66M1D132M * 0 0 TGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTAT ;96(I=7497663(I(I&-I(I4'I::(I'I<:98448<'G756553;:8557:48(I;647(I53,I486996&+:I&E77<6;'G46;:794(I4;;(I'I4&+9I726?(I*I;7&.I'H4'H2987363991716>)I76=95*I69(2I&.I(I<35&*7IB248(I;(I)I(I7(I847'H684:)I'I859 NM:i:1 MD:Z:66^G132 oR:Z:1 oH:i:1 oP:i:1677 oS:A:R [...]
-simulated.740 0 1 7489 255 198M1D13M * 0 0 ACGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTCATGGACAATC 2%I)88E&I)85:7;9988I2(5<46I(I/';8I/'I(I.&46I(I(I(I+659;88I(=8I'I(=/73G'85974I(8I)9I)I(87:I(64<I'86G'9I(I';G'678:9;74:;G'82;;>552I(<848I(:I(I(764<:57633;I(I2(:G';4I'<I,&I(8:195:;<347I)778I(86I0'7266;I+::8I'53I)5= NM:i:2 MD:Z:1A196^T13 oR: [...]
-simulated.741 16 1 8522 255 173M1D19M * 0 0 CTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGCCAGCCCTTAAAGGAT ;8'H:'0I48;4'F2*I:384=48'H)I:68=8(I'I&*3II7734&+;I89&E>57:&-I6&-I:(I8(I619:)I;'I576)I7(I7;5&*8I'/I'H9848;',<I97<5/:5'.I798:75<754426(I4(I7<7)I:(I598'/I9(I9'G5:(I3;;'F'I'H785*7I(I4:&-I(I'1I(I39 NM:i:1 MD:Z:173^G19 oR:Z:1 oH:i:1 oP:i:8521 oS:A:R XE:i:1 XS:i [...]
-simulated.742 16 1 2608 255 70M1I53M1I5M1D44M1I4M * 0 0 GGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCAGTCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTAGTTTCTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGTAAGT (I49(I984<548)I:6927<5735'+4II96'I7'/I8;(I<77;;69784'I;84977)I7;86(I:=%9:948556475'H257(I7=2856775<*I8)I at 5955;38:565)I7&*8I8(6'0I5,I&,<I98'G372&-I)I?:5725:(I3:*I(I?&+:I=996;6))I96 NM:i:4 MD:Z:128^T48 oR:Z:1 oH:i:1 oP:i:2607 oS:A:R XE:i:4 XS:i:0 XI:i:0
-simulated.743 0 2 206 255 8M1I155M1D40M * 0 0 TTAAGAGCTATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGCTAAG I(I*6.75&55;7H':;3H'7I(I0'79I=,'I(5I)<I(G'86954I.&F'7:>=:776898<66I(89I'I.&694<I'26F&93H'6;75;:;7?<4A536;7I(894897889657:I/'H'I(9:559:8I'I'F'567846839H'8:7I(8;I.&53I6)972I.&?:I'<7:85:688I(8<I/'7I(5767:I(8 NM:i:2 MD:Z:163^G40 oR:Z:2 oH:i:1 oP [...]
-simulated.744 16 1 1942 255 7M1D21M1I89M1D90M * 0 0 CATTCGCTACGACTCTGGTATAGGGGTGTCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGA 54&E97:D67691644'I5368&*9I85%'I4;;86526)I;)I7&.I(2I6:9:8'H8=67(I9(I>6799&*2II79'G979:5'G77:9478;6477'G46463'/I7=5'H7)I,I*I76792&+:I6*I<76(I9(I7:9<:*I<565&.I:8?(I.&.I967(I6'G76;:186;4:7:'I;(1I(I955'/I'H55'I1;6 NM:i:3 MD:Z:7^T110^C90 [...]
-simulated.745 16 1 3385 255 5M1I90M1I84M1D34M * 0 0 TGACACTGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAAGTGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTCATTGCTCGATTAATTGGTATTCGTTTGTGATT 8897-(7?'0I54)I'G436;88(I:883556(I'/I&.I6534'H;9:7953765748;=;3'I>7:04&*8I<:(I&*2II5'/I6<<6374(I)=)I7'1I57'1I(I6;8='I6989&-I6'G9(I588<7752*I<&.I5'G75;'I(I7'I6&.I(I64479:',=I756&,I(ID69(I7964:>*I(I(I(I=2'H58'0I879:'H NM:i:3 M [...]
+simulated.738 16 1 3928 255 12M1D22M1I67M1I107M * 0 0 TGCCTATATTGCTTATCCAAATGCATGAGTAATTAGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACACGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAAC 8;'G6.:6(I88+I54'G'.I8:@9798;9)I)I(689866<75639:&-I8'G94(I75<;)I;856=:@'H4)I:9(I4>:7796&-I&+9I8'I4:554*7865'H56'0I&+9I86;?28&.I(I3(I(I'I1>06;883'0I'I88;9&.I278'I(I'I)I3868(I;988:'I7&-I86;868767(I34:'.I6'G&-I'H: NM:i:3 MD:Z:12T1 [...]
+simulated.739 16 1 1678 255 66M1D132M * 0 0 TGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCATGCTTCAGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTAT ;96(I=7497663(I(I&-I(I4'I::(I'I<:98448<'G756553;:8557:48(I;647(I53,I486996&+:I&E77<6;'G46;:794(I4;;(I'I4&+9I726?(I*I;7&.I'H4'H2987363991716>)I76=95*I69(2I&.I(I<35&*7IB248(I;(I)I(I7(I847'H684:)I'I859 NM:i:1 MD:Z:66G132 oR:Z:1 oH:i:1 oP:i:1677 oS:A:R [...]
+simulated.740 0 1 7489 255 198M1D13M * 0 0 ACGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTCATGGACAATC 2%I)88E&I)85:7;9988I2(5<46I(I/';8I/'I(I.&46I(I(I(I+659;88I(=8I'I(=/73G'85974I(8I)9I)I(87:I(64<I'86G'9I(I';G'678:9;74:;G'82;;>552I(<848I(:I(I(764<:57633;I(I2(:G';4I'<I,&I(8:195:;<347I)778I(86I0'7266;I+::8I'53I)5= NM:i:2 MD:Z:1A196T13 oR:Z [...]
+simulated.741 16 1 8522 255 173M1D19M * 0 0 CTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGCCAGCCCTTAAAGGAT ;8'H:'0I48;4'F2*I:384=48'H)I:68=8(I'I&*3II7734&+;I89&E>57:&-I6&-I:(I8(I619:)I;'I576)I7(I7;5&*8I'/I'H9848;',<I97<5/:5'.I798:75<754426(I4(I7<7)I:(I598'/I9(I9'G5:(I3;;'F'I'H785*7I(I4:&-I(I'1I(I39 NM:i:1 MD:Z:173G19 oR:Z:1 oH:i:1 oP:i:8521 oS:A:R XE:i:1 XS:i: [...]
+simulated.742 16 1 2608 255 70M1I53M1I5M1D44M1I4M * 0 0 GGATGGCAGTGTAGGAGCGACTAGATTTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCAGTCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTAGTTTCTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGTAAGT (I49(I984<548)I:6927<5735'+4II96'I7'/I8;(I<77;;69784'I;84977)I7;86(I:=%9:948556475'H257(I7=2856775<*I8)I at 5955;38:565)I7&*8I8(6'0I5,I&,<I98'G372&-I)I?:5725:(I3:*I(I?&+:I=996;6))I96 NM:i:4 MD:Z:128T48 oR:Z:1 oH:i:1 oP:i:2607 oS:A:R XE:i:4 XS:i:0 XI:i:0
+simulated.743 0 2 206 255 8M1I155M1D40M * 0 0 TTAAGAGCTATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGCGGGTCGGGAGATTTATCCTCATCTCTCTTCTGGGAGGTAGCTAAG I(I*6.75&55;7H':;3H'7I(I0'79I=,'I(5I)<I(G'86954I.&F'7:>=:776898<66I(89I'I.&694<I'26F&93H'6;75;:;7?<4A536;7I(894897889657:I/'H'I(9:559:8I'I'F'567846839H'8:7I(8;I.&53I6)972I.&?:I'<7:85:688I(8<I/'7I(5767:I(8 NM:i:2 MD:Z:163G40 oR:Z:2 oH:i:1 oP: [...]
+simulated.744 16 1 1942 255 7M1D21M1I89M1D90M * 0 0 CATTCGCTACGACTCTGGTATAGGGGTGTCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGA 54&E97:D67691644'I5368&*9I85%'I4;;86526)I;)I7&.I(2I6:9:8'H8=67(I9(I>6799&*2II79'G979:5'G77:9478;6477'G46463'/I7=5'H7)I,I*I76792&+:I6*I<76(I9(I7:9<:*I<565&.I:8?(I.&.I967(I6'G76;:186;4:7:'I;(1I(I955'/I'H55'I1;6 NM:i:3 MD:Z:7T110C90 o [...]
+simulated.745 16 1 3385 255 5M1I90M1I84M1D34M * 0 0 TGACACTGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAAGTGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTCATTGCTCGATTAATTGGTATTCGTTTGTGATT 8897-(7?'0I54)I'G436;88(I:883556(I'/I&.I6534'H;9:7953765748;=;3'I>7:04&*8I<:(I&*2II5'/I6<<6374(I)=)I7'1I57'1I(I6;8='I6989&-I6'G9(I588<7752*I<&.I5'G75;'I(I7'I6&.I(I64479:',=I756&,I(ID69(I7964:>*I(I(I(I=2'H58'0I879:'H NM:i:3 M [...]
simulated.746 16 1 3888 255 187M * 0 0 AGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTGG 74&)/<II85684802)I)I8(I=7>8;:45;798'/I897;(I9665'I99'/I86(I'0I;4<365;9;(I)I756;459549:95'/I8&E24(I9556(I:665<98'G7(I98'H5927662&-I',=ID)I1767;:856(I78'/I',=I:;88<8(1I'I=(I(I'H66446976+I)I NM:i:1 MD:Z:185T1 oR:Z:1 oH:i:1 oP:i:3887 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.747 0 1 6009 255 164M * 0 0 TGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCAC 441286I:+&=I.&6II;/)&8947:65:6;7;I(I(65I(865I-&479:47<;65272;7F&69:777I0'8I(49 at 2453I(8I(;5<I(:7;7II2*&6I at -'394I(868I0'H':;5247576<<7I(3I at -'I.'875;96 at I)9551G'37I2(47 NM:i:0 MD:Z:164 oR:Z:1 oH:i:1 oP:i:6008 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.748 16 1 2213 255 31M1I164M * 0 0 GTAGCCCCATCACCAGCGCAGTACTATCGTTAGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGT 7686(.AI:6;4'F06:89826765:858'I%69)4I38;4'I;4747=9;87=99;'I(I7:7&.I2'H7:>:85='G69:;694(I9593(I9'G'-AI=(1I'I<7(I(I7827'-?I579'H354(1I96'/I?(I85<587;7(I5(I784;82559<7'G979<:7;75 at 79&*1II67'I'/I(I:68; NM:i:1 MD:Z:195 oR:Z:1 oH:i:1 oP:i:2212 oS:A:R XE:i:1 [...]
@@ -753,93 +753,93 @@ simulated.749 16 1 312 255 215M * 0 0 TTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATC
simulated.750 16 1 1541 255 10M1I49M1I125M * 0 0 GAAGATAGTGTCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACGAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATG <)I6676793''0I87874375=(I8:<9:76=8&.I(I774679679(I7856575778&&.I9;54997(2I2)I96;9)I'H(I5:'-?I89;*I&*9I8'/I:)I:973(I75:9(I>'I8'I;(I2995<'H28:76)I3;267969(I(I)4I(I8(I84(I'G:959:<:7(I483:76 NM:i:2 MD:Z:184 oR:Z:1 oH:i:1 oP:i:1540 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.751 16 1 458 255 188M * 0 0 AGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGA 9;8(I93878:(I79993<979(I47)I5'I'G(I:8&+9I:=649@='H43*I'-?I588'I:6'/I5231(1I6'H(I869'/I9=5659)I4988:(I8)I'I86287978'1I794:4'/I<7:4878'I:8;687;&-I74(1I:)I6745<566)I23946268(I89)I57)I997&E;:8 NM:i:0 MD:Z:188 oR:Z:1 oH:i:1 oP:i:457 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.752 16 1 7112 255 220M * 0 0 ATCGGATGGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTAGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTG 56>(I25'0I;'H'0I6:(I88)I*I4&.I'0I;82)I:'H6:29)I99'F895=:759<7&E(1I0'0IA<54'I'I483:<3=6;9983:8356365(I:'I:85&,I68;1'I697'I537(I7'I(I<27'H;<<:65;5576:&*9I:8(I<(I85;>=64:(I)I55)I94&+9I(I6651:(I7(I68'/I757'G5;3)I&-I86'.I6897 NM:i:1 MD:Z [...]
-simulated.753 16 1 7843 255 31M1D133M1I23M * 0 0 GGATAAATTTCAGAAGAACAGAGTCTTCCCACAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACGTAGCAACGGGCTCATAGTATTGT )I58(2I'0I389(I8(I=;85::6(I&-I2C'H88;55759>(.CI2'G>99(I'I65773579&.I13(I;'G=(I82(I834&F51<6;;636(I9='H6<8:459:?9968'I1>;:6(I5'H8&E73:(I7'/I<3895::<(1I8'.I(I8;:(I'H8&868:'H6'/I3:;7:<885(I<7 NM:i:2 MD:Z:31^C156 oR:Z:1 oH:i:1 oP:i:7842 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.754 16 1 253 255 40M1D96M1I64M * 0 0 ACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGACCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCG 6'G(I&.I'H74(I4:74(2I6995(I=68874)I74'I7D87;9(I3'H'H)I(I',=I7:87'G9:&.I86<<678)I97<(I45=96;&+;I76:88(I'0I746'I8'F:(I7(1I68:84887&)1II8(I%(I6653'/I&.I72::6:8567(I)I'0I6389<6877'0I'H648'G64(I8;(2I(I;34:9 NM:i:2 MD:Z:40^A160 oR:Z:1 oH:i:1 oP:i:25 [...]
-simulated.755 0 1 5195 255 71M1D6M1D134M * 0 0 AATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCTGCTCGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTG I(I(7:I'I(I0'<55I.&I)I(558652859:@1I0'975I'9G'I(:H'<:43I*6I(58258::5548C=565:CI*9=<I/'I.'<88><7I(6874I(I(I'7>44I(I(56>6;;8I.&:8I/'2I1'I(I);I)7I)89498956I0':::9;53I:+&9H'6F'5;=I2(379989::58I(:5G'<987;88I'8:7I.&85 NM:i:2 MD:Z:71^C6^G13 [...]
+simulated.753 16 1 7843 255 31M1D133M1I23M * 0 0 GGATAAATTTCAGAAGAACAGAGTCTTCCCACAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACGTAGCAACGGGCTCATAGTATTGT )I58(2I'0I389(I8(I=;85::6(I&-I2C'H88;55759>(.CI2'G>99(I'I65773579&.I13(I;'G=(I82(I834&F51<6;;636(I9='H6<8:459:?9968'I1>;:6(I5'H8&E73:(I7'/I<3895::<(1I8'.I(I8;:(I'H8&868:'H6'/I3:;7:<885(I<7 NM:i:2 MD:Z:31C156 oR:Z:1 oH:i:1 oP:i:7842 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.754 16 1 253 255 40M1D96M1I64M * 0 0 ACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGACCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCG 6'G(I&.I'H74(I4:74(2I6995(I=68874)I74'I7D87;9(I3'H'H)I(I',=I7:87'G9:&.I86<<678)I97<(I45=96;&+;I76:88(I'0I746'I8'F:(I7(1I68:84887&)1II8(I%(I6653'/I&.I72::6:8567(I)I'0I6389<6877'0I'H648'G64(I8;(2I(I;34:9 NM:i:2 MD:Z:40A160 oR:Z:1 oH:i:1 oP:i:252 [...]
+simulated.755 0 1 5195 255 71M1D6M1D134M * 0 0 AATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCTGCTCGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTG I(I(7:I'I(I0'<55I.&I)I(558652859:@1I0'975I'9G'I(:H'<:43I*6I(58258::5548C=565:CI*9=<I/'I.'<88><7I(6874I(I(I'7>44I(I(56>6;;8I.&:8I/'2I1'I(I);I)7I)89498956I0':::9;53I:+&9H'6F'5;=I2(379989::58I(:5G'<987;88I'8:7I.&85 NM:i:2 MD:Z:71C6G134 [...]
simulated.756 16 1 1495 255 88M1I84M1I22M * 0 0 GGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCTACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGCCGGGGCAAACAACACTAAGTGTAACGGAGGTAGGTACATAAGCTGACCATAGTG 'G355;:55180;54<77)I&-I>669;'/I1:7&+3II(I*I86'I)I8677576&,I::/>69661'F67;809567(1I(I78<5*5;878'G6843697998(2I<48956=(3I3(I865<&E'H)I65&+:I965'I&*8I7'/I5'I692:(I5:58(I5(I8'I:&(I6<488'F464?4&F69:94: NM:i:2 MD:Z:194 oR:Z:1 oH:i:1 oP:i:1494 oS:A:R XE: [...]
-simulated.757 0 1 5273 255 86M1D7M1I25M1I62M * 0 0 GGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGTCCGTCCTATAAAGTGACACTGTCCTGAACGTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACG I(I(766I.&I-&71:5:=I'5635I*I(I)8978I(I)9596967I0'69I/'8I2(I'I(4I):I*5688898;I.'<9<798;I7*7G'7%I(9>>I/'79;778;>57I(4:I(8,36?673I)9;9I0'95553I'4I*<I1'6I(6;II1*&47833F'377;4768H'84H'B;6 NM:i:3 MD:Z:86^G94 oR:Z:1 oH:i:1 oP:i:5272 oS:A:F XE:i:3 XS:i:0 XI:i:0
-simulated.758 0 1 3842 255 3M1D32M1D88M1I54M * 0 0 TGGAATTCGGAGTGTGCGAGAACTTCAATCAGCTGATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTAGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCC 3I)I+I(8I(759947376:I)8I(4I'677789?D8I(91:5587II;/)&376844:8I(I(1I'8654;7<6847<I-&4;77G'755<I)6?I-&<8I(I.'392877<7;I(I)?865'9595=7846I-&7I(44H'789:I(58389:2H'1G':1I*7;80788I4)I.' NM:i:3 MD:Z:3^A32^A142 oR:Z:1 oH:i:1 oP:i:3841 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.757 0 1 5273 255 86M1D7M1I25M1I62M * 0 0 GGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGTCCGTCCTATAAAGTGACACTGTCCTGAACGTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACG I(I(766I.&I-&71:5:=I'5635I*I(I)8978I(I)9596967I0'69I/'8I2(I'I(4I):I*5688898;I.'<9<798;I7*7G'7%I(9>>I/'79;778;>57I(4:I(8,36?673I)9;9I0'95553I'4I*<I1'6I(6;II1*&47833F'377;4768H'84H'B;6 NM:i:3 MD:Z:86G94 oR:Z:1 oH:i:1 oP:i:5272 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.758 0 1 3842 255 3M1D32M1D88M1I54M * 0 0 TGGAATTCGGAGTGTGCGAGAACTTCAATCAGCTGATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTAGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCC 3I)I+I(8I(759947376:I)8I(4I'677789?D8I(91:5587II;/)&376844:8I(I(1I'8654;7<6847<I-&4;77G'755<I)6?I-&<8I(I.'392877<7;I(I)?865'9595=7846I-&7I(44H'789:I(58389:2H'1G':1I*7;80788I4)I.' NM:i:3 MD:Z:3A32A142 oR:Z:1 oH:i:1 oP:i:3841 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.759 0 1 5092 255 118M1I73M * 0 0 CTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGAGTGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGG 457 at 8472:I'86468I+378G'88I(I(4I-&9H'4539<7II9.)&658646;676I'569:I/'064I(3I(56:8I(4234I<,&7I(I0':58I(989I)G'96G'I(I0'64*9I4)I)I(3;89683:8987I.&7::I'3I)I)3I(;889I(4I'3597<:4:777I)39866I(H'977I5) NM:i:1 MD:Z:191 oR:Z:1 oH:i:1 oP:i:5091 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.760 0 1 3619 255 31M1I85M1I88M * 0 0 TGGTGTTATTTTGTCTACGGTCTACCACTTGAATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCGTTTGGGTAGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTAC 9I*83F&6I;+&354648I'=778I'38I):E&67785I(>;;I'8E&I>,'7 at I(6I(568G'I-&I?-':9><8I(I(443I(<8<8467I(8:G'9989I'I(I(7:I2(@7I(%I2(I0'D'7I(77I.'2782<84:8I1'77I/'I(:I1'2<I'77.8;;=I(6I(8098I/'43I(I(867I(?44;99578759952 NM:i:3 MD:Z:123T80 oR:Z:1 oH:i: [...]
simulated.761 16 1 9180 255 37M1I50M1I99M * 0 0 GGGCATGCACATGATCGTACGCAGGCGCGCGCATTTCGAAGCGCGGAACCGACAACGGTTTGTTGGCTATTATTTAATAAGATCTAGACGGAACAGCTTCCGTAATACAATCTGTATAATGTAAACTGCCCACGTACCGCCAGAGAATTGATCGTCGACCTCATTGTATTCACGTAACGGGATGAGTT '0I?7844476<6765566:898(I8779937<'0I8('I:49/'I'I'F>8:(I8(I'.I<'H'I978(I8(2I(I8)I6:3:;;:6''I(I5887&F)I97'F286'F6:9:988&F41>'0I894'0I:67=3(I6(I:;7@'G(I742354476'I;:5'H5AA(I;693;'I;'/I946:8(I NM:i:2 MD:Z:186 oR:Z:1 oH:i:1 oP:i:9179 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.762 0 1 2241 255 195M * 0 0 GTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATA >I(:5I1(6:97I*75786675:78865I(F'=88I0'5I'4268657G'83:778:E&6877H'7I(I<,&6I0'I)38H'I(6457I9+&675I(965I/':4I1(;H';654:5;5I(9G':727=6567=3F':7:2?5293295IF/)%::E&I.'I)<689H'I.&I(I(4799I'I.'I/':83I':9 NM:i:0 MD:Z:195 oR:Z:1 oH:i:1 oP:i:2240 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.763 0 1 400 255 210M * 0 0 CCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACC I(4:5:565737I(I'I2(:879;9=<1I.&I(793G'57I(24I.&I)1<1572:I(768I(968799I'78<8974:/I(07F'4I'I(G'46IA-'9686686F':4I(I:+&956I'8<I/'7747I0';H'H'<97I.'8:888:I)67975I'7I)I(75<65365I,&77768I.';;5978:F':;74685I.'96I2(6I) NM:i:0 MD:Z:210 oR:Z:1 oH:i:1 oP: [...]
-simulated.764 0 1 9002 255 112M1D75M * 0 0 ATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCAC 637<767I(<>2I/'549I(8;6627H'896I)F&4I)44;I*385;:9;96I*;645I'I'977=8I-&I(I(3I)47:477H'?76I.&I.'>;9I(:I(5856B389I(B4:959;H'6I(:H'I(75I'<G'96I)5=H'76=5I(;2<76:3=18I(I*I.':4I)888I(;I0'7474<78 NM:i:1 MD:Z:112^C75 oR:Z:1 oH:i:1 oP:i:9001 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.765 0 1 4560 255 1M1I27M1D92M1I82M * 0 0 GACCGCTAGTCGGTGATCACTTGGAGCCGCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCTACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAG 7%F':486479I(78>9986I)I(39I(<I+7555G'779699;9796H'I2(488I0':45I(H'4I'289I(9138;2:;F'5I/'9D&7;16I':9I(;93<6I.&7;::19I':I(;'8;45I/'I(6;:I(:99947I.&645G'I'47<87I)8;46I1'::59H'=5I)25IG0)%I/'G'9I(8538I(935<I'4 NM:i:3 MD:Z:28^C174 oR:Z:1 oH:i [...]
-simulated.766 16 1 2181 255 19M1D163M * 0 0 CTATTATAACTGAGTTGAGCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCT 496'G7:(I98:5=)I593,I'H57%(-8II3845&*8I<:46'I8;95:78;9:8=;94(I67'/I9268(I;45:::695::5B9(I'H<;8'/I8(I772838;*I85=496;)I8784)I7(I'- at I7'/I'G76(I*I77:4&+:I>69'G687&.I77(3I7)I7>944993'G;9 NM:i:1 MD:Z:19^C163 oR:Z:1 oH:i:1 oP:i:2180 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.767 0 2 71 255 174M1D7M * 0 0 ATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAGCAGAT 746;40:615I(7=6<96<:=I(5I(I'89:H'I(86 at 6:95:96H';I/';8I(I'I,&;:837874I2(:886<4H'8I.'<I(5<47<I(I):;I:+&I'397I*I-&I'G'79H';I2(I(4738F'0I)2I(F'8::68=<7I'643I(7I'I-&5;I at -'I(8F':H'B8;1863 NM:i:1 MD:Z:174^A7 oR:Z:2 oH:i:1 oP:i:70 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.768 0 1 2383 255 104M1D35M1I96M * 0 0 TGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGATCGCGTGATACATTGCCTTGGAATCTTGGCTACAGTTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTG 655:794II1*&98I'I1'I(8837I'I1'I)I(>;53I*I1'I.&:86I(67I*73G'<=454<:I(<I0';I'::I'36;I'64;1749I(32888I(:649D7525=8;977:5I)9I(H'I(I(;6I(I'775:6*I)9I(I'2I.'<259;8<837:73;879I(26I'8I(73::8:>:3;4:I)<I*6II2*&5:4G'97 [...]
-simulated.769 0 1 4033 255 124M1I31M1D53M * 0 0 CGGACGTTTAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACACGGTCCAATTGGCGGGTTACTGGCGCGAACATCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGG 9I(:8&I0'I7*4848<7I/'I'5I)I)G'873999=7I1'I(3:57I3(?72I'I(I(I(8;48I(55468I(8I/'51:349786I*6:7I0'9I(I3(H'<I+846:>03I'9H'573766%E&3G'I(I(H'5I/'I(77:I(6785I(856I,I)I);556I'8<7266I'89I1(46I(9I(68>8;53640;68I'I3(:I( NM:i:4 MD:Z:5T2A146^C53 [...]
-simulated.770 16 1 8478 255 72M1I9M1D117M * 0 0 ATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGTATCATCCGGCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTG :863'/I6;'H75)I9984866475893?(I8:15(I59(I8'H87(I5'.I5885'G:(I9:8:585'I)I)67255(I'I(.BI7:74&+9I=7(I;717'/I8(1I;'I3)I7=83'G3'H78@'G9'H596',=I&.I'H55613(.BI6;::8;0'/I86624:6:>7444(I9&E373'G7'I976(2I8'G7 NM:i:2 MD:Z:81^C117 oR:Z:1 oH:i:1 oP:i:8477 [...]
-simulated.771 0 1 536 255 26M1D91M1I15M1I63M1I5M1I7M * 0 0 AAGCGTTTGCATCATTCTGTCGGTCCTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGACGTCCCTAGTAAGGAGTTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACGTGTCAGTCGCGGC G'758I/':825?8I'8:377I'8I'B98138694I1(97796I-&8898;66I(828515:I0'7?I.&6H'14=8:689I(8859342;I);/G'99I*83:H'66:II</*&I('537I4):736I)I(:&I0'6>56772:9;I(786499;777:I)679;::79:I)427F'76>H'89I.'2H'87I'9:&88;67';33?E&= NM:i:5 MD [...]
-simulated.772 0 1 190 255 25M1I5M1I28M1D26M1I17M1I90M * 0 0 CACGGAATCAAGGCGGCTCATGCGTCGGATTAGCCTTGACTTCCGTAGCTTGGGGGGTAGCGGCACCGGCCCGGCTAACAGCGGGACGTGCCATACACTTCTGGTCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGC 886G'I'76I'I)6I(98;6;;569&I*;G'%8G'I(776F'H'5598;I'II</*&977CI'57I'I)I1(I(64I(:@<3I1'9'778I)85?7<9I(4:I('<H'8=67I(2H'I)H'I(I9*&549:I(85I.&8<6>733H'993G'77:<;3I9+&81:52I*I/'<86I(7I':H':I3(7:5=;9:8 NM:i:5 MD:Z:58^C133 oR:Z:1 oH:i:1 oP:i:1 [...]
-simulated.773 16 1 8512 255 90M1I15M1D27M1I78M * 0 0 ATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGACAGAAGTTCGTAAAACCAAGTGCGTTTTGCGACGCAAAGTAGTCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCA 2&D90&E6'I87(I:&.I349:)I7'G7879878(I(I767:4(I(I&*1II6=5=&+;I28(I4563&.I;(2I8(I8(I7<79'F9)I';68(I4'H?=9&+:I+I(I587>6&+;I?:6:5:7(2I9?:>'8>7276:96)I8'I964(I4&F;5;&-I4(I6'F8:(I:45'G(I)I>76&*9I(I19&-I'H&-I(I:&F'0I'.I5 NM:i:3 MD:Z:1 [...]
+simulated.764 0 1 9002 255 112M1D75M * 0 0 ATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGGCATGCAC 637<767I(<>2I/'549I(8;6627H'896I)F&4I)44;I*385;:9;96I*;645I'I'977=8I-&I(I(3I)47:477H'?76I.&I.'>;9I(:I(5856B389I(B4:959;H'6I(:H'I(75I'<G'96I)5=H'76=5I(;2<76:3=18I(I*I.':4I)888I(;I0'7474<78 NM:i:1 MD:Z:112C75 oR:Z:1 oH:i:1 oP:i:9001 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.765 0 1 4560 255 1M1I27M1D92M1I82M * 0 0 GACCGCTAGTCGGTGATCACTTGGAGCCGCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCTACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAG 7%F':486479I(78>9986I)I(39I(<I+7555G'779699;9796H'I2(488I0':45I(H'4I'289I(9138;2:;F'5I/'9D&7;16I':9I(;93<6I.&7;::19I':I(;'8;45I/'I(6;:I(:99947I.&645G'I'47<87I)8;46I1'::59H'=5I)25IG0)%I/'G'9I(8538I(935<I'4 NM:i:3 MD:Z:28C174 oR:Z:1 oH:i: [...]
+simulated.766 16 1 2181 255 19M1D163M * 0 0 CTATTATAACTGAGTTGAGCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCT 496'G7:(I98:5=)I593,I'H57%(-8II3845&*8I<:46'I8;95:78;9:8=;94(I67'/I9268(I;45:::695::5B9(I'H<;8'/I8(I772838;*I85=496;)I8784)I7(I'- at I7'/I'G76(I*I77:4&+:I>69'G687&.I77(3I7)I7>944993'G;9 NM:i:1 MD:Z:19C163 oR:Z:1 oH:i:1 oP:i:2180 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.767 0 2 71 255 174M1D7M * 0 0 ATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAGCAGAT 746;40:615I(7=6<96<:=I(5I(I'89:H'I(86 at 6:95:96H';I/';8I(I'I,&;:837874I2(:886<4H'8I.'<I(5<47<I(I):;I:+&I'397I*I-&I'G'79H';I2(I(4738F'0I)2I(F'8::68=<7I'643I(7I'I-&5;I at -'I(8F':H'B8;1863 NM:i:1 MD:Z:174A7 oR:Z:2 oH:i:1 oP:i:70 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.768 0 1 2383 255 104M1D35M1I96M * 0 0 TGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGATCGCGTGATACATTGCCTTGGAATCTTGGCTACAGTTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTG 655:794II1*&98I'I1'I(8837I'I1'I)I(>;53I*I1'I.&:86I(67I*73G'<=454<:I(<I0';I'::I'36;I'64;1749I(32888I(:649D7525=8;977:5I)9I(H'I(I(;6I(I'775:6*I)9I(I'2I.'<259;8<837:73;879I(26I'8I(73::8:>:3;4:I)<I*6II2*&5:4G'97 [...]
+simulated.769 0 1 4033 255 124M1I31M1D53M * 0 0 CGGACGTTTAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACACGGTCCAATTGGCGGGTTACTGGCGCGAACATCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGG 9I(:8&I0'I7*4848<7I/'I'5I)I)G'873999=7I1'I(3:57I3(?72I'I(I(I(8;48I(55468I(8I/'51:349786I*6:7I0'9I(I3(H'<I+846:>03I'9H'573766%E&3G'I(I(H'5I/'I(77:I(6785I(856I,I)I);556I'8<7266I'89I1(46I(9I(68>8;53640;68I'I3(:I( NM:i:4 MD:Z:5T2A146C53 o [...]
+simulated.770 16 1 8478 255 72M1I9M1D117M * 0 0 ATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGTATCATCCGGCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTG :863'/I6;'H75)I9984866475893?(I8:15(I59(I8'H87(I5'.I5885'G:(I9:8:585'I)I)67255(I'I(.BI7:74&+9I=7(I;717'/I8(1I;'I3)I7=83'G3'H78@'G9'H596',=I&.I'H55613(.BI6;::8;0'/I86624:6:>7444(I9&E373'G7'I976(2I8'G7 NM:i:2 MD:Z:81C117 oR:Z:1 oH:i:1 oP:i:8477 o [...]
+simulated.771 0 1 536 255 26M1D91M1I15M1I63M1I5M1I7M * 0 0 AAGCGTTTGCATCATTCTGTCGGTCCTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGACGTCCCTAGTAAGGAGTTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACGTGTCAGTCGCGGC G'758I/':825?8I'8:377I'8I'B98138694I1(97796I-&8898;66I(828515:I0'7?I.&6H'14=8:689I(8859342;I);/G'99I*83:H'66:II</*&I('537I4):736I)I(:&I0'6>56772:9;I(786499;777:I)679;::79:I)427F'76>H'89I.'2H'87I'9:&88;67';33?E&= NM:i:5 MD [...]
+simulated.772 0 1 190 255 25M1I5M1I28M1D26M1I17M1I90M * 0 0 CACGGAATCAAGGCGGCTCATGCGTCGGATTAGCCTTGACTTCCGTAGCTTGGGGGGTAGCGGCACCGGCCCGGCTAACAGCGGGACGTGCCATACACTTCTGGTCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGC 886G'I'76I'I)6I(98;6;;569&I*;G'%8G'I(776F'H'5598;I'II</*&977CI'57I'I)I1(I(64I(:@<3I1'9'778I)85?7<9I(4:I('<H'8=67I(2H'I)H'I(I9*&549:I(85I.&8<6>733H'993G'77:<;3I9+&81:52I*I/'<86I(7I':H':I3(7:5=;9:8 NM:i:5 MD:Z:58C133 oR:Z:1 oH:i:1 oP:i:18 [...]
+simulated.773 16 1 8512 255 90M1I15M1D27M1I78M * 0 0 ATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGACAGAAGTTCGTAAAACCAAGTGCGTTTTGCGACGCAAAGTAGTCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGGATTGGGCCCA 2&D90&E6'I87(I:&.I349:)I7'G7879878(I(I767:4(I(I&*1II6=5=&+;I28(I4563&.I;(2I8(I8(I7<79'F9)I';68(I4'H?=9&+:I+I(I587>6&+;I?:6:5:7(2I9?:>'8>7276:96)I8'I964(I4&F;5;&-I4(I6'F8:(I:45'G(I)I>76&*9I(I19&-I'H&-I(I:&F'0I'.I5 NM:i:3 MD:Z:1 [...]
simulated.774 16 1 1254 255 2M1I100M1I16M1I79M * 0 0 AGTCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGTCATCTCCCGAGGCAGGTAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACT 5:&(I&E7&+9I*I:+I::75;8(I;6'H38;)I9:6(I3859'F'/I7(I6(2I'0I6(1I<'I;(I7;5*I&+:I4::9750777)I6(I(I7<(I&.I;8'7<928'.I8;(I:=&E&6&.I6&E;5*I(I69:94796;995='H:7766669;&+;I8(I7'F:4)I9'.I8=787<)I6(I?295<:(I7:884 NM:i:3 MD:Z:197 oR:Z:1 oH:i:1 oP:i:12 [...]
-simulated.775 0 1 3053 255 16M1I182M1D9M * 0 0 ATGTCTTCAATTTGATACTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTGGTATC 58=<6I(:H'I1(5;6'6<:85;I0'H';4I/'3:I)I at -'I(5<79967760I(I(I(I(637;9;888945I):98I/'6868=885I1(II1)&;964;8297I*793?;;656I(951I'5;965I(74I(2=8I'I/'76E&I(<F'464I4)6:I.&I(I)I(G'46I<,'3733I(IG0)%:H'9<I.&792I7*I(745; NM:i:2 MD:Z:198^T9 oR:Z:1 o [...]
-simulated.776 0 1 898 255 24M1I52M1D39M1D81M * 0 0 GTTCATAAAACTTACGCATGATGCGACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCT =I(976I<,'4I(-8:56:87456&6I:+&F'75=8I0'I)2:I-&47I(98;5:6577;9>46;:672E&796654C777986;;:;;8I(7I-&87I(:I'I2(6=878I(I.&A=I/'995<I(3I0'71=853I1(:746480G'87I)8I'6469;I(I)466:374I'68I9*&86I(497<9I0'7I'57 NM:i:3 MD:Z:76^T39^A81 oR:Z:1 oH:i:1 oP:i:897 [...]
+simulated.775 0 1 3053 255 16M1I182M1D9M * 0 0 ATGTCTTCAATTTGATACTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTGGTATC 58=<6I(:H'I1(5;6'6<:85;I0'H';4I/'3:I)I at -'I(5<79967760I(I(I(I(637;9;888945I):98I/'6868=885I1(II1)&;964;8297I*793?;;656I(951I'5;965I(74I(2=8I'I/'76E&I(<F'464I4)6:I.&I(I)I(G'46I<,'3733I(IG0)%:H'9<I.&792I7*I(745; NM:i:2 MD:Z:198T9 oR:Z:1 oH [...]
+simulated.776 0 1 898 255 24M1I52M1D39M1D81M * 0 0 GTTCATAAAACTTACGCATGATGCGACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCT =I(976I<,'4I(-8:56:87456&6I:+&F'75=8I0'I)2:I-&47I(98;5:6577;9>46;:672E&796654C777986;;:;;8I(7I-&87I(:I'I2(6=878I(I.&A=I/'995<I(3I0'71=853I1(:746480G'87I)8I'6469;I(I)466:374I'68I9*&86I(497<9I0'7I'57 NM:i:3 MD:Z:76T39A81 oR:Z:1 oH:i:1 oP:i:897 o [...]
simulated.777 16 1 8300 255 23M1I45M1I16M1I112M * 0 0 CCATAAGAAGCGGGACGCCGCCGACTCTGCAGACGGCGATTTCCACGACCGTGTTAATCTTTGTCGGTCTACGACGGCTGCCATCTACACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAG 'I89'H7(I46'1I68;'I7)I9'64:5557;69(I967'/I(I<39=(I975'F'I59'/I745(I45&42:77(I7::(I4933'854646<:4798369'I=7+I486(I<7854:785=(I354<(I*I6:'H96:17'I47(I;167;)I85<)I9;9<8(I'I986;;4(I+I'1I893'.I78(I78(I3;4 NM:i:3 MD:Z:196 oR:Z:1 oH:i:1 oP:i:829 [...]
-simulated.778 16 1 4120 255 11M1D25M1D177M * 0 0 CCACAGGGATTCCAACTTGACTGTGAATAACAGACAGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCG )I8A<(2I7(I+I'G7'I<48:>:8'G6*I>454<7D2)I'H(I'H5(3I)I88:)I2697(I4:7&-I(I'H:894&F=:2;7=)I:5'.I:;(I8'I55:/6<765957;'I&.I6'/I'H'F(I=897873779775:3'G(2I97(I77;9(I7(I)I<7&-I23',>I=3;8748:5(I)6I'/I::4'I4=:8(I'/I7886>;6:9 NM:i:2 MD:Z:11^ [...]
+simulated.778 16 1 4120 255 11M1D25M1D177M * 0 0 CCACAGGGATTCCAACTTGACTGTGAATAACAGACAGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGAGAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCG )I8A<(2I7(I+I'G7'I<48:>:8'G6*I>454<7D2)I'H(I'H5(3I)I88:)I2697(I4:7&-I(I'H:894&F=:2;7=)I:5'.I:;(I8'I55:/6<765957;'I&.I6'/I'H'F(I=897873779775:3'G(2I97(I77;9(I7(I)I<7&-I23',>I=3;8748:5(I)6I'/I::4'I4=:8(I'/I7886>;6:9 NM:i:2 MD:Z:11C [...]
simulated.779 16 1 5177 255 203M * 0 0 CCCCAGGAAATCACCGCTAATTGCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGAC ',=I:'I&-I993'G431(I)I3:'G'I&.I88>(1I(I'I;;879855:;97&-I:89(I9(I'I6(I2446)I6'I8;7<86<73<;'F;;:56(I(I98;&.I'/I><9758(I4>88&F(I'I1444(I'H6;97756'/I87'/I8&.I(I(I:'I5(I7986686:&.I89955.2(.BI?'G:'I46<(1I6;89< NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:5176 oS:A: [...]
-simulated.780 0 1 8964 255 5M1D60M1I30M1I84M * 0 0 TGCCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAACTGTAATTGAATGATTGCATGTGCGTTGCACTAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAAC 96I(7I,=2069I(3656659<<=I/'7I(8E&574:977=696I(546I.'608I):8;77;H'+789I)I)8I(799G'?54977;3<I'58:9(H'I(9534;I/'I'I(8I)247957I'<:8I2(I/'=84I(7H'96338674I(I)7:6945I(2I*3I'I';9I(8I):6I'8 NM:i:3 MD:Z:5^G174 oR:Z:1 oH:i:1 oP:i:8963 oS:A:F XE:i:3 XS:i:0 XI:i:0
-simulated.781 16 1 6873 255 42M1D145M1D11M * 0 0 TAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAATTTACCG 4'I(1I36'I(I5'I;'F68)I:73)I38'G<(I(I4.8759D848&.I(2I'I8(1I;9'0I6427::'G6;839<5)I93)5I8(I57;868977'I5(I713?)I(I=7457;8:'I:86;7&-I47(I277'F8)I9(I82;;3'F(I4)4I(I43(I<3&+;I'H59:797<35:686'G86(.BI(2I2'G7 NM:i:2 MD:Z:42^C145^A11 oR:Z:1 oH:i:1 oP:i:68 [...]
-simulated.782 16 1 6655 255 62M1D39M1I103M * 0 0 CAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGACGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTAC 9172'G'0I57;:6;7759<29'H(I55566763997=5'I4'F)I93366(I<6681'I;4)6I9(2I;72'/I:&*2II558'H(I6=:95(I'H<<9=%(I:6(I798'-?I?;7'I6(I53<)I)I(I(I756'H&F5'-?I(I:'I0548(I274:67'I9:267'I7B665997:48:)I)I:'/I3'I8;589:)I55 NM:i:2 MD:Z:62^C142 oR:Z:1 oH:i [...]
-simulated.783 16 1 6750 255 44M1D65M1I35M1I1M1I57M * 0 0 GCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACGACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCGACTCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATAT 8(I:838)I92)I9>8&+;I69:(I9'H/78(I'I(I&E767'FC5'- at I(I:(I45;8'G4398;:)I<=;97'I8588<5:7=8<6(I'I8&.I6'G97::79'H37):(I07'1I:519(I(I'.I67(I'G6(I8)I75)I(9&7B(I<5)I6'I(I487659'I:27'/I(2I(I5'.I88'0I8:368='I77;;4498 NM:i:4 MD:Z:44^G158 oR: [...]
-simulated.784 16 1 2796 255 75M1D100M1D16M * 0 0 ATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGCTTCACGCTGTCCTG 886<&*9I:'I;(/DI9(1I8749(I8<6:67644 at 77:&+<I5>&*1II at 9@<36(I:59&D834(I456=8'IC:(I=<9?8&F97'I66'H:4<;'/I645;1*I2:8@=48;78:2;6(I88;37'- at I6'H5277(I6A<:(I5659(1I56(I8998'H5(I9778:>:D8(I848:::45'F:< NM:i:2 MD:Z:75^G100^G16 oR:Z:1 oH:i:1 oP:i:2795 oS:A:R XE:i [...]
+simulated.780 0 1 8964 255 5M1D60M1I30M1I84M * 0 0 TGCCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAACTGTAATTGAATGATTGCATGTGCGTTGCACTAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAAC 96I(7I,=2069I(3656659<<=I/'7I(8E&574:977=696I(546I.'608I):8;77;H'+789I)I)8I(799G'?54977;3<I'58:9(H'I(9534;I/'I'I(8I)247957I'<:8I2(I/'=84I(7H'96338674I(I)7:6945I(2I*3I'I';9I(8I):6I'8 NM:i:3 MD:Z:5G174 oR:Z:1 oH:i:1 oP:i:8963 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.781 16 1 6873 255 42M1D145M1D11M * 0 0 TAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGTGCACGACTCACCACAAAATTTACCG 4'I(1I36'I(I5'I;'F68)I:73)I38'G<(I(I4.8759D848&.I(2I'I8(1I;9'0I6427::'G6;839<5)I93)5I8(I57;868977'I5(I713?)I(I=7457;8:'I:86;7&-I47(I277'F8)I9(I82;;3'F(I4)4I(I43(I<3&+;I'H59:797<35:686'G86(.BI(2I2'G7 NM:i:2 MD:Z:42C145A11 oR:Z:1 oH:i:1 oP:i:6872 [...]
+simulated.782 16 1 6655 255 62M1D39M1I103M * 0 0 CAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGACGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTAC 9172'G'0I57;:6;7759<29'H(I55566763997=5'I4'F)I93366(I<6681'I;4)6I9(2I;72'/I:&*2II558'H(I6=:95(I'H<<9=%(I:6(I798'-?I?;7'I6(I53<)I)I(I(I756'H&F5'-?I(I:'I0548(I274:67'I9:267'I7B665997:48:)I)I:'/I3'I8;589:)I55 NM:i:2 MD:Z:62C142 oR:Z:1 oH:i: [...]
+simulated.783 16 1 6750 255 44M1D65M1I35M1I1M1I57M * 0 0 GCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACGACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCGACTCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATAT 8(I:838)I92)I9>8&+;I69:(I9'H/78(I'I(I&E767'FC5'- at I(I:(I45;8'G4398;:)I<=;97'I8588<5:7=8<6(I'I8&.I6'G97::79'H37):(I07'1I:519(I(I'.I67(I'G6(I8)I75)I(9&7B(I<5)I6'I(I487659'I:27'/I(2I(I5'.I88'0I8:368='I77;;4498 NM:i:4 MD:Z:44G158 oR:Z [...]
+simulated.784 16 1 2796 255 75M1D100M1D16M * 0 0 ATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGCTTCACGCTGTCCTG 886<&*9I:'I;(/DI9(1I8749(I8<6:67644 at 77:&+<I5>&*1II at 9@<36(I:59&D834(I456=8'IC:(I=<9?8&F97'I66'H:4<;'/I645;1*I2:8@=48;78:2;6(I88;37'- at I6'H5277(I6A<:(I5659(1I56(I8998'H5(I9778:>:D8(I848:::45'F:< NM:i:2 MD:Z:75G100G16 oR:Z:1 oH:i:1 oP:i:2795 oS:A:R XE:i:2 [...]
simulated.785 16 1 2056 255 189M * 0 0 ATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTG 97(I'0I'I3653='- at I9(I488(I9(I;5768(I:956'0I<37(I6'/I873'I5'G=4369<853939(I:&-I'I467'/I(I67'H=6'I'H'I&+;I4(I57(I'/I(I664:)I::5:=:(I66(I58:95'H96:&.I'I:3&).:II9556&+;I6948'G:7:4:2=5:<34745)I4 NM:i:0 MD:Z:189 oR:Z:1 oH:i:1 oP:i:2055 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.786 16 1 2141 255 99M1I99M * 0 0 ATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATACGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTC :(I58(I=4(I(I(I',=I<(I46'I&-I'G9565'H866666)I97(I89955*I477&.I(I36%(-8II76;8',=I7844(I;55<8663587;8&85(I8;&.I3877'I948<8566556689'H&F69:'0I6'I68:<659(I468A965&D25:3(I<'I&*8I7&.I(I8>(I)I56:4'- at I37<(I2 NM:i:1 MD:Z:198 oR:Z:1 oH:i:1 oP:i:2140 oS:A:R XE [...]
-simulated.787 16 1 3320 255 28M1D84M1I21M1D41M1I37M * 0 0 TGCCGGTCAGCCTCGGAATAGTTTGCTCTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATACGTGACTATGTGATAAGTATCAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGACGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTC 75'I'H8456'I07'H'I;>:'0I7<88)4I8)I98(I'G45729&*8I'I(I7&.I93256'I8:<;:;9'.I1:(I(I9:9996)I<64:858(I&-I'/I8679'I:83'676:598<>8 at 885&F:5;9:)5I69(I&*2II;'0I9556:99(I9(I3&-I>2'0I(I4;&<<'I7546'0I8(I3&F99:67=;8(I8'/I?&E947 NM:i:4 [...]
+simulated.787 16 1 3320 255 28M1D84M1I21M1D41M1I37M * 0 0 TGCCGGTCAGCCTCGGAATAGTTTGCTCTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATACGTGACTATGTGATAAGTATCAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGACGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTC 75'I'H8456'I07'H'I;>:'0I7<88)4I8)I98(I'G45729&*8I'I(I7&.I93256'I8:<;:;9'.I1:(I(I9:9996)I<64:858(I&-I'/I8679'I:83'676:598<>8 at 885&F:5;9:)5I69(I&*2II;'0I9556:99(I9(I3&-I>2'0I(I4;&<<'I7546'0I8(I3&F99:67=;8(I8'/I?&E947 NM:i:4 [...]
simulated.788 0 2 180 255 184M * 0 0 GGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGCGAACTGAAGC H'I(I(47H'5I1(H'465;I'7H'>I'D&799/;347I'8;9I(8H'I/'79IB.(I(:I(2I'H'558?5I,&I(6;:9586;8<755:I(89G'I1(43=4I(;4I'<6H'4759>@8;79:768>55I(679885;609966I-&E&H'98;/<77I(I'I':73;64789I(;98E&7: NM:i:0 MD:Z:184 oR:Z:2 oH:i:1 oP:i:179 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.789 16 1 5943 255 101M1D8M1D98M * 0 0 TACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGCGTTATGAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTC ;92;<:7?6;'G>472'G9'I6'H;*I:(1I88(I(I6;:798(I2:8:6662&.I7(I*I5'1I<717868&,<I:'0I5%(-8II69969475 at 93:'IC78(I::3,I4766:59;7699369(I6=93?6'.I6)I:549=68(I8)I284(I6:56&*2II=&*9I:74'I968'0I'G8;699;<79668'H;',=I'/I0 NM:i:2 MD:Z:101^G8^A98 oR:Z: [...]
+simulated.789 16 1 5943 255 101M1D8M1D98M * 0 0 TACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGCGTTATGAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTC ;92;<:7?6;'G>472'G9'I6'H;*I:(1I88(I(I6;:798(I2:8:6662&.I7(I*I5'1I<717868&,<I:'0I5%(-8II69969475 at 93:'IC78(I::3,I4766:59;7699369(I6=93?6'.I6)I:549=68(I8)I284(I6:56&*2II=&*9I:74'I968'0I'G8;699;<79668'H;',=I'/I0 NM:i:2 MD:Z:101G8A98 oR:Z:1 [...]
simulated.790 0 1 2735 255 62M1I147M * 0 0 CTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTACTGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACG 4I4)I9*&77H'2:6I1(I)6585587I(68I(I)6I<,&:6746:I(79I*I0'H'54;86'899I;+&6I)9I7*&5I0'5::5F&74;/6999;;7=9I;+&6;II0)&8;9775I(5=8I)686I(=5483I)I(5I(95=57H'68I(76I(9:;0I2(::766I(66964768:955=4H'974;6I;+&8I(178:I'74877 NM:i:1 MD:Z:209 oR:Z:1 oH:i [...]
-simulated.791 0 1 4421 255 1M1I103M1D84M * 0 0 GCGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAA 5:D528;I(I'H'98I.&9875H'85I(:3789F':II1)&9<69<8I)63<685=99G'I)I'31843I4)6I-&I-&I(9I<,&:37;F&<I'54<8678;83I,7I':3I(I)842695I(;8I';6866769I/'9I'6548756I'798583:I(F&<8I(8I-&3:43I'384:6<49;45I) NM:i:2 MD:Z:104^G84 oR:Z:1 oH:i:1 oP:i:4418 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.792 0 2 44 255 13M1I2M1D175M * 0 0 TATATAGGAATAGACAGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCC 74486;I(E&6;8%9:I,79I(858:I(8:64744:5I)8:5>666<?I)6I'I'289I'E&=966><82:6I(5I0'86I(I(I/'45787:28I.&59;666I(8I.'<G'48=37I)I(59I=,'I(357I'I-&I)I(96I'6I0'I)6643I)7H'7F'I(:77<5;84G'533I)9I(I/'79I( NM:i:2 MD:Z:15^G175 oR:Z:2 oH:i:1 oP:i:43 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.793 0 1 5515 255 20M1I138M1D43M * 0 0 ATTACAAAGGGCATGTCCATAGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTG 7I)76I/'I/'3;:;8I(;4(;I/'77I)E&I-&7H'6385I(8H':3:H'97<6:38H'8I(97-38677;6;=I'=5I(H'9917:6E&973:<9I)91I(97833623::=3<;58:I)758:I)645:67I.'85E&8=96I(::6F'8:<I)4;CI:+&656I(;93I(>I'I(6G'=I*97I/'9I1';78:I-&; NM:i:2 MD:Z:158^T43 oR:Z:1 oH:i:1 oP:i [...]
-simulated.794 0 1 3081 255 142M1I12M1D50M * 0 0 CGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGACACCCCGCTATTAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGG 6I0':5I(I<,&I(:94895:7:8I(I(I(H'77758>;79566I'623I/'78:70::7I0'IG0)%:954747:;I(7949><89>I)<=8I(;6:72H'7;I(364I'I0'58G'H'4H'C;6I.&:7I2(I(I'I*H''87I7*&9996I)IB.(;G';:I/'8:8I9*&I)589I(9I)I:+&7>6I'96:85I)I'6I( NM:i:2 MD:Z:154^A50 oR:Z:1 oH:i: [...]
+simulated.791 0 1 4421 255 1M1I103M1D84M * 0 0 GCGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAA 5:D528;I(I'H'98I.&9875H'85I(:3789F':II1)&9<69<8I)63<685=99G'I)I'31843I4)6I-&I-&I(9I<,&:37;F&<I'54<8678;83I,7I':3I(I)842695I(;8I';6866769I/'9I'6548756I'798583:I(F&<8I(8I-&3:43I'384:6<49;45I) NM:i:2 MD:Z:104G84 oR:Z:1 oH:i:1 oP:i:4418 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.792 0 2 44 255 13M1I2M1D175M * 0 0 TATATAGGAATAGACAGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCC 74486;I(E&6;8%9:I,79I(858:I(8:64744:5I)8:5>666<?I)6I'I'289I'E&=966><82:6I(5I0'86I(I(I/'45787:28I.&59;666I(8I.'<G'48=37I)I(59I=,'I(357I'I-&I)I(96I'6I0'I)6643I)7H'7F'I(:77<5;84G'533I)9I(I/'79I( NM:i:2 MD:Z:15G175 oR:Z:2 oH:i:1 oP:i:43 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.793 0 1 5515 255 20M1I138M1D43M * 0 0 ATTACAAAGGGCATGTCCATAGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTG 7I)76I/'I/'3;:;8I(;4(;I/'77I)E&I-&7H'6385I(8H':3:H'97<6:38H'8I(97-38677;6;=I'=5I(H'9917:6E&973:<9I)91I(97833623::=3<;58:I)758:I)645:67I.'85E&8=96I(::6F'8:<I)4;CI:+&656I(;93I(>I'I(6G'=I*97I/'9I1';78:I-&; NM:i:2 MD:Z:158T43 oR:Z:1 oH:i:1 oP:i: [...]
+simulated.794 0 1 3081 255 142M1I12M1D50M * 0 0 CGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGACACCCCGCTATTAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGG 6I0':5I(I<,&I(:94895:7:8I(I(I(H'77758>;79566I'623I/'78:70::7I0'IG0)%:954747:;I(7949><89>I)<=8I(;6:72H'7;I(364I'I0'58G'H'4H'C;6I.&:7I2(I(I'I*H''87I7*&9996I)IB.(;G';:I/'8:8I9*&I)589I(9I)I:+&7>6I'96:85I)I'6I( NM:i:2 MD:Z:154A50 oR:Z:1 oH:i:1 [...]
simulated.795 16 1 8882 255 27M1I41M1I126M * 0 0 GCCCAAGTACACGTATTGTTCAGGTCTAGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGTATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAA ;(1I(I8978;54:7'H9'H9:*I966*0659:71 at 4',=I;6'I)I(I(I'I878;;3865)I6'F)I&8;(I:'G556)I(I94'G8(3I>86;@&F;<27>959;8'/I9(I5'G:92575:6758'F877'/I2<4(I2;3;78(I8<;(I'G8(I86<*I5?5688675&F:696*I)I66869'0I)I(I NM:i:2 MD:Z:194 oR:Z:1 oH:i:1 oP:i:8881 oS:A:R XE [...]
-simulated.796 16 1 3460 255 137M1D47M * 0 0 AACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACC (I&)1II:'/I8477?79'I6(I6&.I78'/I'I6269'G6545(1I<(I6(I95<7727=(I;(1I4)I:;8(I(I3&E9'/I(I7777>;',=I=52(2I&E'G39(I496<;9(I)I)I'I:<*I;<'0I9766D)I'H)I268:15;&.I8'H=7'I9:'I4&+9I9;7:49'H:84<(I NM:i:1 MD:Z:137^T47 oR:Z:1 oH:i:1 oP:i:3459 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.796 16 1 3460 255 137M1D47M * 0 0 AACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACC (I&)1II:'/I8477?79'I6(I6&.I78'/I'I6269'G6545(1I<(I6(I95<7727=(I;(1I4)I:;8(I(I3&E9'/I(I7777>;',=I=52(2I&E'G39(I496<;9(I)I)I'I:<*I;<'0I9766D)I'H)I268:15;&.I8'H=7'I9:'I4&+9I9;7:49'H:84<(I NM:i:1 MD:Z:137T47 oR:Z:1 oH:i:1 oP:i:3459 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.797 0 1 8784 255 219M * 0 0 TGCGGATCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCA 653I(86I-&883I)3;979:9I)I)737;47G'79>83:7<6I(9I(I'6I(II1)&89I)<<6724I(I-&7I'I-&77:I(45454I(58I*7I-&I1(F'<8994:776G'6G'7:G'86449:9<:894I:+&:7H'H'I(I(I'756=98353I(=I(I(<:I)4I(685H'I)52I':I0'56<83I(63689645=7I0'8I'4I'78876 NM:i:0 MD:Z:21 [...]
-simulated.798 16 1 5320 255 39M1D25M1I32M1D87M * 0 0 GGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGTCCGCCTATAAAGTGACACTGTACCTGAACTCAGATAAGACGGGTGATGCCAGGTGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAG (I87&.I=(3I(I)I4'H5)I7766;;47&-I79:757:*7I9)I6(I925&-I4699;:9958*&E39'I:798686'I66:&.I=983:(I8(I8,I5'G:8&*2II97;<<'H:;7>9767'I:5(I9668<7(I;:6898445)I(I5=7(I6'I7986-;(I'I2(I9;:;5*I138<: NM:i:3 MD:Z:39^G57^G87 oR:Z:1 oH:i:1 oP:i:5319 oS:A:R XE:i:3 XS:i:0 XI:i:0
-simulated.799 0 1 7844 255 136M1D65M * 0 0 GATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTTCACGATCG 38:I/'I2(796I)6I(664;04:H'I.'8H'I)57?57;3;2I=,'2I(9=6I*G'9767<58:I1(6;I(7I(;I*98I);56I'57=:9:688I)=3E&:947:856:5797I(2;:53I)5H'8I(566I(2I,7;595<78I.'/I.&I(349I(I(7<669I(4I/'848,4:5<3I(7I);G'I/':556;317 NM:i:1 MD:Z:136^C65 oR:Z:1 oH:i:1 oP:i:7843 o [...]
-simulated.800 16 1 7582 255 72M1D115M1I27M * 0 0 GTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTACGGGGCAACCCAACCTAGTGGATCGAT 3(I<4'I?'H'G3(I773:2;;87='I2 at 84591:'IA:95)I='G(I88:19;:6755(I(1I8'I:7&E7,I)I6489;68655<'I=68)I=9&-I52955&-I567)I:;)I168;59'H'I*I;4(I3:(I'G:2978'H9;9'G96;;8;'G)I'I4;7(I533<.68'I'G(I43&.I77&>',=I=(I)4I'I)I67:?)I869795 NM:i:2 MD:Z [...]
-simulated.801 16 1 5991 255 183M1D27M * 0 0 TAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGTGCATATCGATGTACATCGCCGATA 4554:&.I5(I'I3'/I695379:&+;I8'.I6&).:II87:<7<364798'H'G28'I78<(1I;99:3774;98=6?9)I9997;7&.I4(I6;67587(I8'I?9:'G9=95&*2II6'- at I49:(I=53'/I'H99<496:35954(I4'-?I'1I57:7:39'I2989)I38&-I683+I:83;688:39<7;36782:(I7687 NM:i:1 MD:Z:183^G27 oR:Z:1 [...]
-simulated.802 16 1 3512 255 154M1D62M * 0 0 CTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACA 86:5;8957(I9&.I;(I:4:)I)I8'G4(2I(I7:57:6&*9I859&.I(I)I;9(I<6969;(I'I)I(I68&E88&.I::67(I(I'I'H86896:7(3I6'I77'G47(I2&+:I7:5;87&F>487(I46)I6:68>58'F:43'G9'I)5I>6(I<'H37:'I&.I'- at I889<9(I&E57=(I8663:4/(I at 6(I5887'F'I(I974 NM:i:1 MD:Z:15 [...]
+simulated.798 16 1 5320 255 39M1D25M1I32M1D87M * 0 0 GGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGTCCGCCTATAAAGTGACACTGTACCTGAACTCAGATAAGACGGGTGATGCCAGGTGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAG (I87&.I=(3I(I)I4'H5)I7766;;47&-I79:757:*7I9)I6(I925&-I4699;:9958*&E39'I:798686'I66:&.I=983:(I8(I8,I5'G:8&*2II97;<<'H:;7>9767'I:5(I9668<7(I;:6898445)I(I5=7(I6'I7986-;(I'I2(I9;:;5*I138<: NM:i:3 MD:Z:39G57G87 oR:Z:1 oH:i:1 oP:i:5319 oS:A:R XE:i:3 XS:i:0 XI:i:0
+simulated.799 0 1 7844 255 136M1D65M * 0 0 GATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTTCACGATCG 38:I/'I2(796I)6I(664;04:H'I.'8H'I)57?57;3;2I=,'2I(9=6I*G'9767<58:I1(6;I(7I(;I*98I);56I'57=:9:688I)=3E&:947:856:5797I(2;:53I)5H'8I(566I(2I,7;595<78I.'/I.&I(349I(I(7<669I(4I/'848,4:5<3I(7I);G'I/':556;317 NM:i:1 MD:Z:136C65 oR:Z:1 oH:i:1 oP:i:7843 oS [...]
+simulated.800 16 1 7582 255 72M1D115M1I27M * 0 0 GTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTACGGGGCAACCCAACCTAGTGGATCGAT 3(I<4'I?'H'G3(I773:2;;87='I2 at 84591:'IA:95)I='G(I88:19;:6755(I(1I8'I:7&E7,I)I6489;68655<'I=68)I=9&-I52955&-I567)I:;)I168;59'H'I*I;4(I3:(I'G:2978'H9;9'G96;;8;'G)I'I4;7(I533<.68'I'G(I43&.I77&>',=I=(I)4I'I)I67:?)I869795 NM:i:2 MD:Z [...]
+simulated.801 16 1 5991 255 183M1D27M * 0 0 TAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGTGCATATCGATGTACATCGCCGATA 4554:&.I5(I'I3'/I695379:&+;I8'.I6&).:II87:<7<364798'H'G28'I78<(1I;99:3774;98=6?9)I9997;7&.I4(I6;67587(I8'I?9:'G9=95&*2II6'- at I49:(I=53'/I'H99<496:35954(I4'-?I'1I57:7:39'I2989)I38&-I683+I:83;688:39<7;36782:(I7687 NM:i:1 MD:Z:183G27 oR:Z:1 [...]
+simulated.802 16 1 3512 255 154M1D62M * 0 0 CTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACA 86:5;8957(I9&.I;(I:4:)I)I8'G4(2I(I7:57:6&*9I859&.I(I)I;9(I<6969;(I'I)I(I68&E88&.I::67(I(I'I'H86896:7(3I6'I77'G47(I2&+:I7:5;87&F>487(I46)I6:68>58'F:43'G9'I)5I>6(I<'H37:'I&.I'- at I889<9(I&E57=(I8663:4/(I at 6(I5887'F'I(I974 NM:i:1 MD:Z:15 [...]
simulated.803 16 1 3387 255 141M1I61M * 0 0 ACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGTAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTC 39:88&-I8:*I(I7:3;49)I:436544(I&,I&-I7:68(I617736569;4:7;9;8(I25895',=I39(I%)0HI5'0IA868853)I6&E8&-I4;&-I'H6804(I;580(1I5'G8)I48479;59'H6&.I6.(I4::'F)I7*I:'0I'I:67839',=I;;9&-I)I'I86'I646;67(I*I(I(I66)I8 NM:i:1 MD:Z:202 oR:Z:1 oH:i:1 oP:i:3386 [...]
simulated.804 0 1 3364 255 75M1I132M * 0 0 ATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACGTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTG 85I>,'I(D&5I1(80769I'86;6595I2(67I(F'9:9>8=I(7B63658I)I0'I1(3<8;I(66:7;7995%4808<897I);8876ID.(59I)II1)&9I.'9487896I'5I(7I.&69I.&H'@853G':78<I.&6E&;I*4*8865<6I(9I.&6I(6;8F'I(>I(6I0'I(958377I8*&7:5I/'I(I(4:I(: NM:i:1 MD:Z:207 oR:Z:1 oH:i:1 o [...]
-simulated.805 0 1 7730 255 16M1I61M1D131M * 0 0 AGGTCGATGAAGGTTACTAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAG 4I);;4297I(I(I'9%43I)8583461I'H'I)93I,&984I9*&6F&I/'I(I'5;47I*64765I)73I2(759:IC.(6/I'I0'8?66449I'97:68B795I(6:;I0'78I1(I0'85<I(7H'=85868<I(I.&:I(I(765985679I;+&6I(4<4I(G'<5<16357I-&49I(:I):I(=7I(966I(5;:67368 NM:i:2 MD:Z:77^C131 oR:Z [...]
-simulated.806 16 1 378 255 4M1D13M1D47M1D122M * 0 0 TCGCAAAATGGCCTAGCAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGT 3697(.CI8'I(I95:8,I&.I9<52366669)I)I'/I:77756:56(2I*I775'G48'G78+I(I66;9878(I<86'F4=55;=(I7:7899566)I77)I8(I(I'H5;(/DI4161:=:'H55(I',>I>46'H57'0I52;5'0I5)I(I5:1'/I:77>>6(I64696(I<'I'G9:3 NM:i:3 MD:Z:4^A13^A47^C122 oR:Z:1 oH:i:1 oP:i:377 oS:A:R XE:i:3 XS [...]
-simulated.807 16 1 8018 255 12M1D124M1D47M1D16M * 0 0 CTCATAGTATTGTGAATTTCACGATCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGTTATGGACGCTGAGC 4:65:5264'G=D3'H'.I;;375=>57'0I<9(I:54(I(3I(I8;(I6(I776',>I45<587'H7898480:65(I)I:4:362'I&E&E:3>'H79(I)I3814(I64:6554766;99'F0=9/5=9<789)6I377<&E'1I*I77*I879'I5'I'0I8679'I;4<86'.I7638D'G=7)I89<77=:05 NM:i:3 MD:Z:12^T124^A47^G16 oR:Z:1 oH: [...]
+simulated.805 0 1 7730 255 16M1I61M1D131M * 0 0 AGGTCGATGAAGGTTACTAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAG 4I);;4297I(I(I'9%43I)8583461I'H'I)93I,&984I9*&6F&I/'I(I'5;47I*64765I)73I2(759:IC.(6/I'I0'8?66449I'97:68B795I(6:;I0'78I1(I0'85<I(7H'=85868<I(I.&:I(I(765985679I;+&6I(4<4I(G'<5<16357I-&49I(:I):I(=7I(966I(5;:67368 NM:i:2 MD:Z:77C131 oR:Z: [...]
+simulated.806 16 1 378 255 4M1D13M1D47M1D122M * 0 0 TCGCAAAATGGCCTAGCAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGT 3697(.CI8'I(I95:8,I&.I9<52366669)I)I'/I:77756:56(2I*I775'G48'G78+I(I66;9878(I<86'F4=55;=(I7:7899566)I77)I8(I(I'H5;(/DI4161:=:'H55(I',>I>46'H57'0I52;5'0I5)I(I5:1'/I:77>>6(I64696(I<'I'G9:3 NM:i:3 MD:Z:4A13A47C122 oR:Z:1 oH:i:1 oP:i:377 oS:A:R XE:i:3 XS:i: [...]
+simulated.807 16 1 8018 255 12M1D124M1D47M1D16M * 0 0 CTCATAGTATTGTGAATTTCACGATCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGTTATGGACGCTGAGC 4:65:5264'G=D3'H'.I;;375=>57'0I<9(I:54(I(3I(I8;(I6(I776',>I45<587'H7898480:65(I)I:4:362'I&E&E:3>'H79(I)I3814(I64:6554766;99'F0=9/5=9<789)6I377<&E'1I*I77*I879'I5'I'0I8679'I;4<86'.I7638D'G=7)I89<77=:05 NM:i:3 MD:Z:12T124A47G16 oR:Z:1 oH:i:1 [...]
simulated.808 16 1 1347 255 219M * 0 0 AGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGAAGTTGGTCGTCTGCTCGTCGTACCAAATCGTGCCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCCT @9'H&.I4=83476&-I::(I93)I;&.I:*I8;*I)I89><53=66:497(I;5893<586',<I:'H6)I6;'I=&-I56;897'G8'H8;76=8'H9:56)I(I8'/I;)I)I'.I33646(I9=7366'0I:86844(I'H5'G(I98:9<33<<97:8:<<(I(1I38791(1I749&*2II)I&E39(I(I958:68:'/I36967>458'I7 NM:i:0 MD:Z:2 [...]
-simulated.809 0 1 34 255 49M1I67M1D80M * 0 0 CTTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGTCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTC 4I0'9I0'7I'46578I/'9;H'97I/'979;>9I(967=99<I'7I(;/:99I(7I1'G'68752I)55<2I+773278I(I=,'656:4I(5924<=53H'8468I0'596988:DI(:;I-&:9656;I(I/'94H'384517I'==<5I(;I(9:I'I)87I)I(9I(;5=69714<I(3I(5I)I(5<3I'9 NM:i:2 MD:Z:116^A80 oR:Z:1 oH:i:1 oP:i:33 oS:A:F XE [...]
-simulated.810 0 1 4732 255 85M1D13M1D63M1D10M * 0 0 CTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAACGATTTAAGCCAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGACTT 9I(28II3*&I-&I):H'6858I)7?;7I)5:3==:69II0)&59:7I'9220I)9;1I<,'6I'834G'56I(I*98I(I2(95I+:;;I/'I(=I)ID.(>777:I(9I(I)76I(>3I(5;I(<:6:7I0'68I(75:9:63>676I)5I-&8=7I(BI6)57:99I) NM:i:3 MD:Z:85^A13^A63^G10 oR:Z:1 oH:i:1 oP:i:4731 oS:A:F XE:i:3 XS:i:0 XI:i:0
-simulated.811 0 1 3365 255 56M1D75M1I27M1D38M * 0 0 TAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGTACCAGACGGGCAAGCCTCTCAGTGCCTAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTG :I:+&I'I(<I5)8:;=:I(8;;6789I0'76H'I(:<::;2I(59::;26H'I.&I,63;3I*89668<6936;6396;<I'79573I;+&46I*II2*&3I0'76:5484I)5H'7I0'5:I/'G'666(<I)=0;5I0'8I'9I(977479;4G'<I,8I(<5<I'I(DI'2I0'G'979958I8*&868I-&; NM:i:3 MD:Z:56^C102^A38 oR:Z:1 oH:i:1 oP:i:3 [...]
-simulated.812 0 2 42 255 84M1I28M1I74M1D24M * 0 0 CGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTCGGCCCGTATCTCTGGGTCTACGTTGCCCGTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAACAATCCAAGCAGAT 11969969I*I(5:697I/'7<I'416;H';=84;8988I(<35===<<5I'3I'I'697I(I(6:776=876;I):I2(76I()H'I.&76475:4:I/'6<658;I(7I.&%5H'29996I(E&:7I8*&F'675G'I.'I*I'3<I(:I/'I(7495I'3I(4I)I)5<788953H'834I(8I)I+84I=,'I)<I(8I(I(7777>6 NM:i:3 MD:Z:186^ [...]
+simulated.809 0 1 34 255 49M1I67M1D80M * 0 0 CTTTATTTCTTCGTGAGGGAGTTGACCCATGCAGAACGAGAGCTTGCCGTCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTC 4I0'9I0'7I'46578I/'9;H'97I/'979;>9I(967=99<I'7I(;/:99I(7I1'G'68752I)55<2I+773278I(I=,'656:4I(5924<=53H'8468I0'596988:DI(:;I-&:9656;I(I/'94H'384517I'==<5I(;I(9:I'I)87I)I(9I(;5=69714<I(3I(5I)I(5<3I'9 NM:i:2 MD:Z:116A80 oR:Z:1 oH:i:1 oP:i:33 oS:A:F XE: [...]
+simulated.810 0 1 4732 255 85M1D13M1D63M1D10M * 0 0 CTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAACGATTTAAGCCAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGATGACTT 9I(28II3*&I-&I):H'6858I)7?;7I)5:3==:69II0)&59:7I'9220I)9;1I<,'6I'834G'56I(I*98I(I2(95I+:;;I/'I(=I)ID.(>777:I(9I(I)76I(>3I(5;I(<:6:7I0'68I(75:9:63>676I)5I-&8=7I(BI6)57:99I) NM:i:3 MD:Z:85A13A63G10 oR:Z:1 oH:i:1 oP:i:4731 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.811 0 1 3365 255 56M1D75M1I27M1D38M * 0 0 TAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGTACCAGACGGGCAAGCCTCTCAGTGCCTAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTG :I:+&I'I(<I5)8:;=:I(8;;6789I0'76H'I(:<::;2I(59::;26H'I.&I,63;3I*89668<6936;6396;<I'79573I;+&46I*II2*&3I0'76:5484I)5H'7I0'5:I/'G'666(<I)=0;5I0'8I'9I(977479;4G'<I,8I(<5<I'I(DI'2I0'G'979958I8*&868I-&; NM:i:3 MD:Z:56C102A38 oR:Z:1 oH:i:1 oP:i:336 [...]
+simulated.812 0 2 42 255 84M1I28M1I74M1D24M * 0 0 CGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTCGGCCCGTATCTCTGGGTCTACGTTGCCCGTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTGTCCCCAACAATCCAAGCAGAT 11969969I*I(5:697I/'7<I'416;H';=84;8988I(<35===<<5I'3I'I'697I(I(6:776=876;I):I2(76I()H'I.&76475:4:I/'6<658;I(7I.&%5H'29996I(E&:7I8*&F'675G'I.'I*I'3<I(:I/'I(7495I'3I(4I)I)5<788953H'834I(8I)I+84I=,'I)<I(8I(I(7777>6 NM:i:3 MD:Z:186T [...]
simulated.813 0 1 5438 255 120M1I106M * 0 0 GCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCACGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGA 8786739I'74I':56574I)845864<65I(H'57;I(:I*7;<7:7I'G'=I(2=4>4I)=548=;6:I(4I.';5I'4:I7*I0'5978:I'5;5I/'5/I'I*I-&9I(59A5I(8)I)566F&47:534:E&8H'55989895:8:6I'66H'G'8>2488F'4:588:I(07I)259396;5<:4996857I)69;5I)7:697<I/'69E&39 [...]
simulated.814 16 1 4226 255 196M * 0 0 GAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCG 7:725;83)I'/I7&-I(I'I'G:7728:968:488:;(I(1I65'I:569'H5'F(I87&.I:5',>I886751812'I(2I&.I:8;(I8387(I'1I78875476596)I6(I(I8;8(I6(I4&E)I54=1(I86;'G6<3564(I9<99)I835'/IA:98668:8539<86:;4&*2II(I949.75;:9 NM:i:0 MD:Z:196 oR:Z:1 oH:i:1 oP:i:4225 oS:A:R XE:i:0 XS:i: [...]
simulated.815 16 1 8137 255 201M * 0 0 TGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCCGCTCTGCAGACGGCGA 9:897(I;3754394::7&*9I454:)I'/I)I54(I:75'G9*I'1I=;5:(I47?62&-I5749(I'I7:'F67777628(I:'I/6'H;88<96'/I(I4:)I98=7:(I2)I'H:D382;'I74:32(I3:'I7:58<068:<'I(I(I(1I'I5<617'I99'I6'F86&.I458'G6)I25::5679586(I567 NM:i:0 MD:Z:201 oR:Z:1 oH:i:1 oP:i:8136 oS:A:R XE [...]
-simulated.816 16 1 141 255 68M1I30M1D118M * 0 0 TTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCTATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGG 'I:7:9<69(I(I68(2I:57;9='H&-I73'H4877;7'I;698'H8'H:6)I(I5:(I'I7)I390(827686(I5(I6'I(I35:(I(I;;9:6)I(-7II72;)I)I:7(I)I'/I)I5:(I38=5'/I4987'I987985(I75(I7'I56;3'H7(I)I(I(I',<I7793(I8=&-I:395847'I865(I579547&+:I39466(I&E NM:i:2 M [...]
-simulated.817 16 1 1176 255 23M1D10M1I51M1D112M * 0 0 GACTAGCTAGGGGCCTACGCGCATAGCCGAATGTCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAG 886;;250;&*7I(I863:4805D68(I;(I:4&',=I8768'H98:(I566;:76(I73)I<)I(I67(I749;&.I86(I(I9)4I(I7(I79>973)I67&E>8;(I789(I5:>7)I'/I8)I:'0I'.I9'0I9(I9(I7:5(I&+:I39729::95:&E8'F(I95'H(2I37::796&.I<6)I94'I=: NM:i:3 MD:Z:23^T61^A112 oR:Z:1 oH:i:1 oP:i [...]
-simulated.818 16 1 7905 255 75M1D125M * 0 0 CGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTTCACGATCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTC 4664'.I56'I7&E5'G85'I787(I8:9388746'I8:(I@;:26957<9;9-)I;8::7)I;(I5'G7:6'H9+I2276><5:'/I1'/I(I962)I)I6;6;7(I6(2I623<246;1(I5&F<(I'/I=782=9:5:'/I89'G=89(I'/I'H8<'G2(I984&+9I:6:596)I5<:66=5<:4)I(I6367:8 NM:i:1 MD:Z:75^C125 oR:Z:1 oH:i:1 oP:i:7904 oS [...]
+simulated.816 16 1 141 255 68M1I30M1D118M * 0 0 TTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCTATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGG 'I:7:9<69(I(I68(2I:57;9='H&-I73'H4877;7'I;698'H8'H:6)I(I5:(I'I7)I390(827686(I5(I6'I(I35:(I(I;;9:6)I(-7II72;)I)I:7(I)I'/I)I5:(I38=5'/I4987'I987985(I75(I7'I56;3'H7(I)I(I(I',<I7793(I8=&-I:395847'I865(I579547&+:I39466(I&E NM:i:2 M [...]
+simulated.817 16 1 1176 255 23M1D10M1I51M1D112M * 0 0 GACTAGCTAGGGGCCTACGCGCATAGCCGAATGTCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAACCGTTATCACAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAG 886;;250;&*7I(I863:4805D68(I;(I:4&',=I8768'H98:(I566;:76(I73)I<)I(I67(I749;&.I86(I(I9)4I(I7(I79>973)I67&E>8;(I789(I5:>7)I'/I8)I:'0I'.I9'0I9(I9(I7:5(I&+:I39729::95:&E8'F(I95'H(2I37::796&.I<6)I94'I=: NM:i:3 MD:Z:23T61A112 oR:Z:1 oH:i:1 oP:i:1 [...]
+simulated.818 16 1 7905 255 75M1D125M * 0 0 CGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTTCACGATCGCGGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTC 4664'.I56'I7&E5'G85'I787(I8:9388746'I8:(I@;:26957<9;9-)I;8::7)I;(I5'G7:6'H9+I2276><5:'/I1'/I(I962)I)I6;6;7(I6(2I623<246;1(I5&F<(I'/I=782=9:5:'/I89'G=89(I'/I'H8<'G2(I984&+9I:6:596)I5<:66=5<:4)I(I6367:8 NM:i:1 MD:Z:75C125 oR:Z:1 oH:i:1 oP:i:7904 oS: [...]
simulated.819 16 1 8790 255 198M1I9M * 0 0 TCCCGCTAAGACGATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGACGTTTGCCGA <(2I<:5'H::2<:77(I(I55;269'I57<57<586(I4'G'I9)I',6II34(I894956'I&.I=)I'/I:87'I65787(I64(I<'0I'0I'G7968<=786(I2(I98(I416:;38;5877',<I78'I'I(I&E(I157@:837:'I8'G(I;2'I9'I67:(I(I4:'F<(1I:6784'I8:7464<75&:(2I8'I:: NM:i:1 MD:Z:207 oR:Z:1 oH:i:1 o [...]
-simulated.820 16 1 6546 255 113M1D95M * 0 0 GTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGT 3678'F4'I49>=:9'0I67)I(I8(I:(I8996(I8642&*1II(2I:&F8978=88'H(I)I3(I6&E99:8<896(I:4553:9)I5;<9'H'0I8'H:78(I(I'G78CD'/I6673674885995'G(I:2878:;46869:'I9'I(I68984(I6:?84'I7;&+:I>&-I8;5&,I7'+3II4:4'G'I8566:'G(I;6 NM:i:1 MD:Z:113^C95 oR:Z:1 oH: [...]
+simulated.820 16 1 6546 255 113M1D95M * 0 0 GTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGT 3678'F4'I49>=:9'0I67)I(I8(I:(I8996(I8642&*1II(2I:&F8978=88'H(I)I3(I6&E99:8<896(I:4553:9)I5;<9'H'0I8'H:78(I(I'G78CD'/I6673674885995'G(I:2878:;46869:'I9'I(I68984(I6:?84'I7;&+:I>&-I8;5&,I7'+3II4:4'G'I8566:'G(I;6 NM:i:1 MD:Z:113C95 oR:Z:1 oH:i [...]
simulated.821 0 1 7588 255 194M * 0 0 TATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCA 48I'I*7I(5979686933I(;6>58385I(6940I(<F'I(;;1071=3377I(I.&;E&:8I'4I-&I'68323::/>49I(::9H'67I/':4;;9I/'75<I'<:I(256464I(I(I+44I*77I(H'48;94H'6=;I*92:96:F'I)I(9<6I(64;;:;8I(I)I(7:I0'80:I9*&=I(I.'9 NM:i:0 MD:Z:194 oR:Z:1 oH:i:1 oP:i:7587 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.822 0 1 6744 255 32M1D179M * 0 0 CATCAGGCCGTGAGGCTGGTATGGGGTGCAACTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTAT 373:3H'I(4=68I)::I(448I9+&<57I(4D499I+I'F'I(667I)I)5I:+&E&7E&3456I(;:018<E&86;87I(?963:2?7:88AF'I(<I0':H'97553;I(247G'98I-&;8;2I(I)I-&75I(I(7I)6I(78I(964I(@8H'2I+H'@919:9I)758I1(I/'I(7I2(55I.&9=8358H'8536898I(25 NM:i:1 MD:Z:32^T179 oR:Z: [...]
+simulated.822 0 1 6744 255 32M1D179M * 0 0 CATCAGGCCGTGAGGCTGGTATGGGGTGCAACTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTAT 373:3H'I(4=68I)::I(448I9+&<57I(4D499I+I'F'I(667I)I)5I:+&E&7E&3456I(;:018<E&86;87I(?963:2?7:88AF'I(<I0':H'97553;I(247G'98I-&;8;2I(I)I-&75I(I(7I)6I(78I(964I(@8H'2I+H'@919:9I)758I1(I/'I(7I2(55I.&9=8358H'8536898I(25 NM:i:1 MD:Z:32T179 oR:Z:1 [...]
simulated.823 0 2 59 255 185M * 0 0 GGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATC I0'39H'0;79I(=228;98::F'35281787;F&9I(I(;;;E&I(0714758:;?D&6I.&;2F'I)I1'8779616;I.&3954<5I)8I/'3I'85;;:I(I(2<I=,'I(8;2I'I0'I(I*48I(7I/'I(5989I(;I(7I(I(47697;=9I'67:I'=I(I/'89I=,'I(6H'59 NM:i:0 MD:Z:185 oR:Z:2 oH:i:1 oP:i:58 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.824 16 2 132 255 185M * 0 0 TATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAG 6;=2:78(2I77974:'H3'/I6&F59176'G)I:9',>I(I66;'H'1I)I'H98'H8'0I'G:/37(I8+I9'I'I85954799'H;69(I6(I'0I54',=I(I?'H8(I'I86952&.I(I76>84;98777695&E87'I'.I86?9(I38&E:4(I=28;3;;897775:86=(I57;0 NM:i:0 MD:Z:185 oR:Z:2 oH:i:1 oP:i:131 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.825 16 1 3281 255 110M1I74M * 0 0 AACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATAGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCC (I5'I9(I96'/I59'I6;7357:6878(I8&D'G7&+<I;(I(I7579)I77'F'I6:6'0I:5=;(-AI?)I:4(I)I8/463&+;I(I'F9&.I78<85(I><8763&7'/I62'H)I466::9(I8443755'I&-I'.I3685'G=57323659=5940:66'I<95<5',=I>4)I'/I NM:i:1 MD:Z:184 oR:Z:1 oH:i:1 oP:i:3280 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.826 16 1 2074 255 54M1I89M1D73M * 0 0 TCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGACGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAA :)I:73*I6&F96865)I:46<'0I934'H7&-I6;3'H8'I6449:898563:&(I8'/I(I766&.I(I;5&E38'F'I'H&+;I7(I:8(I&-I*I<659)I675/7=(I=8'I==548)I8;8'0I(I88&).9II4277)6I9:85(I7;544753;;88464(I46'.I8578(I=9;93>;6;77::6(I'I365'/I6(I288=86;(I NM:i:2 M [...]
-simulated.827 16 1 3699 255 130M1D73M * 0 0 CTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGT 8<(I757794:(I76(I775<(I)I&E@='/I<1&E&-I(3I(I3'I;6'/I7>6677669&.I96'0I'H7'1I95(I72<5588(I8(I4667'.I<5'I(I987)I36:83584898796653>569+I(I:245'G862*I'/I&E6'H563<;85679'I4&E8'I89758:8(I9'F8733775&(.9II5875:5; NM:i:1 MD:Z:130^C73 oR:Z:1 oH:i:1 oP:i:3 [...]
+simulated.826 16 1 2074 255 54M1I89M1D73M * 0 0 TCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGACGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAA :)I:73*I6&F96865)I:46<'0I934'H7&-I6;3'H8'I6449:898563:&(I8'/I(I766&.I(I;5&E38'F'I'H&+;I7(I:8(I&-I*I<659)I675/7=(I=8'I==548)I8;8'0I(I88&).9II4277)6I9:85(I7;544753;;88464(I46'.I8578(I=9;93>;6;77::6(I'I365'/I6(I288=86;(I NM:i:2 M [...]
+simulated.827 16 1 3699 255 130M1D73M * 0 0 CTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGT 8<(I757794:(I76(I775<(I)I&E@='/I<1&E&-I(3I(I3'I;6'/I7>6677669&.I96'0I'H7'1I95(I72<5588(I8(I4667'.I<5'I(I987)I36:83584898796653>569+I(I:245'G862*I'/I&E6'H563<;85679'I4&E8'I89758:8(I9'F8733775&(.9II5875:5; NM:i:1 MD:Z:130C73 oR:Z:1 oH:i:1 oP:i:36 [...]
simulated.828 16 1 1541 255 94M1I103M * 0 0 GAAGATAGTGCCCACATGTCATCCTATGATATCAAACCATGCACGTATTGTACTAGCACAAAGTCGCGTGGGTCCGTGTCCGGCCATAAAACAGACCGGGGCAAACAACACTAAGTGTAACGGAGGTGGTACATAAGCTGACCATAGTGCGTTGGCCCGGCTTGTAAGGTAGTATCGAACGTATGCGCAGCTGACCAT 5(I8:74976(3I219;47=:2*I46473<4:7'.I'H599:49995'H<289:276<4'.I8>9::47(1I2(I6928(I(I&E:=',>I794*'I&+:I2'0I:(I6844'I892:)I9(I<)I=)I7;;98(I8;?95'F7;>;:;99(I(I'.I'H3(I63)I'H89979598'G2560 at 6787<<0884(I76 NM:i:1 MD:Z:197 oR:Z:1 oH:i:1 oP:i:1540 oS:A:R XE: [...]
simulated.829 16 1 8327 255 63M1I123M * 0 0 GCAGACGGCGATTTCCACGACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGACGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACA 3<<995'G347(3I(I=176(I55?)I(I97'/I;6<'I3>2:880(I4;5)I9<88687867&7658 at 3>95(I8<)I7<5'G7=;87:4647)I8397'I'I;7(I48888'I65'G4=9;7)I:83(I65>:5'I)I9853:5'H(I'.I:7;'1I27(I68'H<7=3 at 4483;5797'I:;65 NM:i:1 MD:Z:186 oR:Z:1 oH:i:1 oP:i:8326 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.830 0 1 7503 255 191M * 0 0 CATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATG @58;7I/'49:8I(I.'62I/'I(I.'94I)I)I(I(987778I(83I)I(7987I)37996I(5H':I'I'820I(697I'84G'=I'I(7I(78<969;=23I(747<5998I(51;4G'5I(I)49:62<7<976I(I/'3I'66G'8I-&H'487=84:7956I(744G'87I3(54548I.&<89; NM:i:0 MD:Z:191 oR:Z:1 oH:i:1 oP:i:7502 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.831 0 1 8062 255 93M1D58M1I56M * 0 0 CCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGTCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCC I(78I(8I(9:2I=,';47699I'15687;6636I'I(8969;8H'I)I)519I(69H'I(6867I(93868298567<4I(75=4989:476I7*;777G'I-&H'46I(75:I(:G'I0':6:7I(5<370I-&;564I)I(96I'66?&38<59I(7H'96I)7:8<99I2(H'=7H'3:=68I(;I'I'475670I)=459:I( NM:i:2 MD:Z:93^A114 oR:Z:1 [...]
-simulated.832 16 2 20 255 1M1I36M1I2M1D79M1D57M * 0 0 GTTTTGGACTCAGCGGCCGTTTGCGTATATAGGAATAGTCAGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTA 6&*7I(I9<86763'I(I3&.I886386578*I)I37<&79,I88'F6;46'I9782<6;4='G::7:43748'H6(I)I5:8'H'H669<895598(I3(1I7:'I'I'0I;697943=,I63547;(I3'1I=)I2:942'H'H;1&+:I(I7=8(I&-I(I'I68'G2&,I)I3 NM:i:4 MD:Z:39^G79^G57 oR:Z:2 oH:i:1 oP:i:19 oS:A:R XE:i:4 XS:i:0 XI:i:0
+simulated.831 0 1 8062 255 93M1D58M1I56M * 0 0 CCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGTCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCACTCTCC I(78I(8I(9:2I=,';47699I'15687;6636I'I(8969;8H'I)I)519I(69H'I(6867I(93868298567<4I(75=4989:476I7*;777G'I-&H'46I(75:I(:G'I0':6:7I(5<370I-&;564I)I(96I'66?&38<59I(7H'96I)7:8<99I2(H'=7H'3:=68I(;I'I'475670I)=459:I( NM:i:2 MD:Z:93A114 oR:Z:1 o [...]
+simulated.832 16 2 20 255 1M1I36M1I2M1D79M1D57M * 0 0 GTTTTGGACTCAGCGGCCGTTTGCGTATATAGGAATAGTCAGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTA 6&*7I(I9<86763'I(I3&.I886386578*I)I37<&79,I88'F6;46'I9782<6;4='G::7:43748'H6(I)I5:8'H'H669<895598(I3(1I7:'I'I'0I;697943=,I63547;(I3'1I=)I2:942'H'H;1&+:I(I7=8(I&-I(I'I68'G2&,I)I3 NM:i:4 MD:Z:39G79G57 oR:Z:2 oH:i:1 oP:i:19 oS:A:R XE:i:4 XS:i:0 XI:i:0
simulated.833 0 1 5291 255 68M1I140M * 0 0 CGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGACGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTAT 7I'8949H'I)I(:785H'G'7=>;5;5I/'7;I0'<I/'I'I)7I(5I'896<;:9;I0'385:=87'I;+&6I)2I(:6<I/':6:4538=57G';9I)8866568I)676I.&16947I(<F'7I.&3H';4IG0)%6586;I'9968@;80I)6:I(885468I(8<7652>39I(I)666H'4I(65:46:I(I(7I*;989;9 NM:i:1 MD:Z:208 oR:Z:1 oH:i:1 [...]
-simulated.834 16 1 5796 255 71M1I19M1D70M1I25M1I18M * 0 0 TTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGACGTCGTTCGTTGCCACTTGAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGACATTGAATCCGAACGGGTATTGGCACGCTCTTACGTAGTCTTTG (I(I88'G'H9'H99:7:99467(I;98=(I7175<74997;(I694785(I5C(I(I/7;)I9:7>7827'34983'I42)I;'G9:(I/,I27(I'/I98'0I<=76(I;59:5<='0I&F&*8I9:'0I<=8',=I7'I'H(I'H8;>81397:(I67'91'I4)I2'I;)I6'/I88(I)I57&4195*I75617=31'/I5 NM:i:4 MD:Z:90^A113 [...]
+simulated.834 16 1 5796 255 71M1I19M1D70M1I25M1I18M * 0 0 TTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTAACGCATGAGACGTCGTTCGTTGCCACTTGAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGACATTGAATCCGAACGGGTATTGGCACGCTCTTACGTAGTCTTTG (I(I88'G'H9'H99:7:99467(I;98=(I7175<74997;(I694785(I5C(I(I/7;)I9:7>7827'34983'I42)I;'G9:(I/,I27(I'/I98'0I<=76(I;59:5<='0I&F&*8I9:'0I<=8',=I7'I'H(I'H8;>81397:(I67'91'I4)I2'I;)I6'/I88(I)I57&4195*I75617=31'/I5 NM:i:4 MD:Z:90A113 o [...]
simulated.835 16 1 8330 255 157M1I34M * 0 0 GACGGCGATTTCCACGACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTAGGTCAATAGTATGCAGCTGTGGTACATTCTGGTG 764(I954'.I'I5::;)I668(I(I;6&-I:65)I8:06;99(I5<9)I587657:57:53447;:75*I69'I78=(I691;7;;;34(I9697'H(I57'H:83:7(I;9*I61586'H756)I965;1)I)I89:18;'I'I(2I544'/I4<%'I59(I24898<64477766(I739:'H/;)I9; NM:i:1 MD:Z:191 oR:Z:1 oH:i:1 oP:i:8329 oS:A:R XE:i:1 XS:i:0 XI:i:0
simulated.836 16 1 1726 255 76M1I28M1I108M * 0 0 GCAGCTGACCATGCTTCAGGGCTCACTCCCCTTGAGACGGCTATGCGTTGTATTCCACCCCGAGACCTTGTCCCTTAGCCACAGTATGATCGAGAATGACTAACTAGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAA 674=:688'I7:76'H45(1I7<>36:&+;I(I56656'H5604589)I473(I(I7',>I8:46'I)I87'0I(I-6(I55868:96997356'I7773?'H67(&-I&-I'I766&*7I:5?8(I<(I'G&E6(I84:)I7:76&F'I85827:5;88=(I)I;:5'H(2I;)I997'F67566(I5;'G(I7:7(I;99'I6>618'G:&E NM:i:2 MD:Z:2 [...]
simulated.837 16 1 85 255 140M1I74M * 0 0 GAATGGGAACATCGCCGACGTTAGAGATGGCCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTCGACTTCCGTAGCTTGGGGGGTAGCCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGC 7'G7'0I(I94757(I95<6(I:6:763'F&+:I96;59'G;4885773(I7;38&-I?8566@:'H(I<;&-I8:8973(I'0I:1'G8<57=5)I85;4'F5'I56(I(I5;)I'H7'H88;556387)I<&E:'F)I%<57(I(I5987:'I%(.9II156(I(I56'I(I'/I(I71'H=7:3&-I:867(I962=78(I;:'H;'I9>;; NM:i:1 MD:Z:214 oR [...]
simulated.838 16 1 6836 255 211M * 0 0 ACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGGAACGT 59:'H(I7(2I8)I56;687'I5<:(I98(2I6796(I(I'/I:>(I(I4'I7'I76)I947(I59)I7)I'I14:795'G27<'0I(2I(I;(3I87'/I574979)I86<45:9'H98'/I8(I47>9:69;2(I6(I57>:(I*I;8;:6799)I99:75&-I7:)I=;6(I5)I7'G5<588)I)I4(1I(I56(I8=&+:I(I:66 NM:i:0 MD:Z:211 oR:Z:1 oH:i:1 [...]
-simulated.839 0 1 8977 255 100M1D96M * 0 0 GGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGG I(877:688:5<I/'8I(6I(7879<4;3;79I(364I1(5;8I(575839I(85;I)I(9I(975I)78?888977I*1675I(G'3;7:9I1'G'I)5C:79865H'48<I.&I.&7;4I(/I'98:76;:7I(I)867998I(7I)3I*H'>6I'9I)68I(95I'889;I'696585<453I(I(I.'3;I( NM:i:1 MD:Z:100^C96 oR:Z:1 oH:i:1 oP:i:8976 oS:A:F XE:i [...]
+simulated.839 0 1 8977 255 100M1D96M * 0 0 GGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCTCGAGATTCATGGGCCCGTCGGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGG I(877:688:5<I/'8I(6I(7879<4;3;79I(364I1(5;8I(575839I(85;I)I(9I(975I)78?888977I*1675I(G'3;7:9I1'G'I)5C:79865H'48<I.&I.&7;4I(/I'98:76;:7I(I)867998I(7I)3I*H'>6I'9I)68I(95I'889;I'696585<453I(I(I.'3;I( NM:i:1 MD:Z:100C96 oR:Z:1 oH:i:1 oP:i:8976 oS:A:F XE:i: [...]
simulated.840 16 1 2906 255 188M * 0 0 ATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCT 0753975925:7<'H4987;&*7I:(I5688'I5694'I682;(1I66(I94;7(I6(I7558 at 4:(I8(I62477577*I695575&-I7'0I6)I2'G&E(I387)I7'H76766996;4:<8(IB35:6'F'G(I7&.I65;(I68297)I8)I'0I65;85?8::'1I'I51&-I96(I',<I8 NM:i:0 MD:Z:188 oR:Z:1 oH:i:1 oP:i:2905 oS:A:R XE:i:0 XS:i:0 XI:i:0
simulated.841 16 1 3987 255 67M1I130M * 0 0 GACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCGAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGA 33;(I7;:8865)I7)I8:'H:47:476'/I&+;I3(I7=>967169'H98'/I&*8I955654(1I'(I1'I'I(I79:79857&-I(I4567(3I666(I'H(I(I556>(I148:6)I5(1I:903:4378'I819&.I8)I&.I)I=(I4348797(I7(I565748'G8'H'H'H+I,'0I)I:57(I63873 NM:i:1 MD:Z:197 oR:Z:1 oH:i:1 oP:i:3986 oS:A:R XE: [...]
simulated.842 0 1 4638 255 69M1I137M * 0 0 GACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGTCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCT 7:7;I(7I.&:I)6956I(32G'54447I/'54;<25I)8I*6;782I1(E&98 at I*27<436I-&864&I'I(657:9I(3687I/'73:9G'59I(74II1*&I3(I*5I(4<87I)88=/I(8<765669II3+'8<03I'67?:I'726I<,'5I(663I'88I)I(69I'I0'68I-&8:9I2(I(5I)II3*&<65:7I(7 NM:i:1 MD:Z:206 oR:Z:1 oH:i:1 oP: [...]
@@ -848,111 +848,111 @@ simulated.844 0 1 1523 255 197M * 0 0 CCCGCGTTTTTCCTTATGGAAGATAGTGCCCACATGTCATCC
simulated.845 16 1 6165 255 199M * 0 0 TCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACC 664(1I889'0I;7;7:8:7985=77;:62:'G73:*I7?3'H8=*I8(1I6:<77>(I578:6946459<74&-I494'H3897=59&-I596996'0I755=3'/I7'I35(/FI7'G(2I96:459&F=695375786679724(I88;626:(I71<:&-I:5=739(I)I(1I'G:3'I1::8&*2II'H;:(I NM:i:0 MD:Z:199 oR:Z:1 oH:i:1 oP:i:6164 oS:A:R XE:i:0 [...]
simulated.846 0 1 248 255 81M1I104M * 0 0 CCGGCACCGGCCCGGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCGTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATT I(G'8:I(H'I/'F&86I(6089I/'97=4I*586321I(0?I'=I'9;=<F'6H'F'I)I(I9*&6463G'97I1'<958'681I(;46H'699141I9+&77466H'I-&9:7I(4G'8I(<I-&95176986II3*&9I(I'997:I2(I1(6:585;:959I(I)I1(4;96=:748I0'I' NM:i:1 MD:Z:185 oR:Z:1 oH:i:1 oP:i:247 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.847 0 1 7340 255 97M1I7M1I99M * 0 0 CTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGACCCCACACGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGT 1:;H'<6376858H'7=7553368I2(<7487I(45764:9I;+&663I(;H'556I.&89846;I)I(9647899:9373<838I-&4I'6:=I'4'I?-'93;&977133H'I(:8I(I'87;677I0'I1(6>85646I'78I'5I4)G'I(78H'I)478>=8:99I1';758I)I.&:<I.'I(I.&62I)H'G'H'987 NM:i:2 MD:Z:203 oR:Z:1 oH:i:1 oP:i [...]
-simulated.848 0 1 5079 255 55M1D65M1I61M * 0 0 AGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGC 7F'47I':649I(446661688I(:6=;8I(6:9H'69F'I(7I/':H'355276II2*&97557:=;5:I(6:>7I0':;8I)<I(669;G'3948I:+&9E&I.&837I(76>I(F';F&H'I)I-&889I,&I(I(:68;4579:545I2(465I)AI'I(7G'555:I)5I)5:62;9 NM:i:2 MD:Z:55^C126 oR:Z:1 oH:i:1 oP:i:5078 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.849 0 1 486 255 37M1D48M1I8M1I63M1I34M1I17M * 0 0 CAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTACTTTCTCAGTCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCTAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACACGACTCAATCTAGTCACG 9I'H'H'27I9*&328<9?8I*75I(I>,':82G'73I,5355I/'4F&I'56=I1(5276:5I(74>88H'6I(I';6388996&I.';29:3'I/'2758/76H'7536866I1(07I,&7I(4536;976I(779:8<:9I)56I(76I(?7>I*(897II9.)&I(878I.&8:8:I(G'8I1(4668<'6;968H'7;8359=B93 NM:i:5 M [...]
-simulated.850 0 1 544 255 24M1I18M1I13M1D135M1I20M * 0 0 GCATCATTCTGTCGGTCCTTAGTAGTCTATTTCTCAGCCCACTACACGAATACTGTCTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTACATCGCGGCGTAGGATAATC 655:66F&4885>I(7G'I*8768&897;I.&757?8I1(677%/;62I(58::;5:I,19I1(5I)54976694I(:6;94664G'4;H'68I'6=2I(697II>1*'I(6:4I2(6C5?H'I):I.'9:194:8868I(7755:65553<I)7988=66B8I(7:7I)675I(64I2(4H'66I'7:9;2&2858 at 6I(8:87I(;3I'56 NM:i:4 [...]
-simulated.851 0 1 3276 255 56M1I23M1I35M1I1M1I71M1D20M * 0 0 TGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCGTCGGAATAGTTTGCTCTTTTCGGTAGAACCGCTATAAAACCAAGTTTAGCTGAATGACAGTCGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCACCCAGCATGTAATGG 397I(G'5I)9I(38I0'65I(678>1239784I'7I(I(8I;+&5I*I(4577I'&78I'H'4;4I0'58;9I?-'8I(&7 at I)I(:6;73I9*&G'I(7I/':1996H'=:7<9%?&5I-&?=I(I*482689I)7649668I(I1'I/'7778I(78545793799574935I'46:5<I>,'9;I(ID.(5I,&5<5889<I):I( NM:i:5 MD [...]
+simulated.848 0 1 5079 255 55M1D65M1I61M * 0 0 AGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCCAAGGTTTGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGC 7F'47I':649I(446661688I(:6=;8I(6:9H'69F'I(7I/':H'355276II2*&97557:=;5:I(6:>7I0':;8I)<I(669;G'3948I:+&9E&I.&837I(76>I(F';F&H'I)I-&889I,&I(I(:68;4579:545I2(465I)AI'I(7G'555:I)5I)5:62;9 NM:i:2 MD:Z:55C126 oR:Z:1 oH:i:1 oP:i:5078 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.849 0 1 486 255 37M1D48M1I8M1I63M1I34M1I17M * 0 0 CAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAGTAGTTTCGGAAGCGTTTGCATCATTCTGTCGGTCCTTAGTATCTACTTTCTCAGTCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCTAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACACGACTCAATCTAGTCACG 9I'H'H'27I9*&328<9?8I*75I(I>,':82G'73I,5355I/'4F&I'56=I1(5276:5I(74>88H'6I(I';6388996&I.';29:3'I/'2758/76H'7536866I1(07I,&7I(4536;976I(779:8<:9I)56I(76I(?7>I*(897II9.)&I(878I.&8:8:I(G'8I1(4668<'6;968H'7;8359=B93 NM:i:5 M [...]
+simulated.850 0 1 544 255 24M1I18M1I13M1D135M1I20M * 0 0 GCATCATTCTGTCGGTCCTTAGTAGTCTATTTCTCAGCCCACTACACGAATACTGTCTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTACATCGCGGCGTAGGATAATC 655:66F&4885>I(7G'I*8768&897;I.&757?8I1(677%/;62I(58::;5:I,19I1(5I)54976694I(:6;94664G'4;H'68I'6=2I(697II>1*'I(6:4I2(6C5?H'I):I.'9:194:8868I(7755:65553<I)7988=66B8I(7:7I)675I(64I2(4H'66I'7:9;2&2858 at 6I(8:87I(;3I'56 NM:i:4 [...]
+simulated.851 0 1 3276 255 56M1I23M1I35M1I1M1I71M1D20M * 0 0 TGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCGTCGGAATAGTTTGCTCTTTTCGGTAGAACCGCTATAAAACCAAGTTTAGCTGAATGACAGTCGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCACCCAGCATGTAATGG 397I(G'5I)9I(38I0'65I(678>1239784I'7I(I(8I;+&5I*I(4577I'&78I'H'4;4I0'58;9I?-'8I(&7 at I)I(:6;73I9*&G'I(7I/':1996H'=:7<9%?&5I-&?=I(I*482689I)7649668I(I1'I/'7778I(78545793799574935I'46:5<I>,'9;I(ID.(5I,&5<5889<I):I( NM:i:5 MD [...]
simulated.852 16 1 8049 255 65M1I139M * 0 0 GTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTAGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAA <96)I284(I'0I(I:6(I5(I775',>I<73:>4)I397;:66354)I(I:8572;'H(I(I77(9(I87(I(I587:)I54677>6;6;:78'H73:.8766:85',=I7567'H'0I)I48'I3;8(I9'I(1I:8<7(I:8855(2I=54:(I(I7:)I94:=77=9)I9(I:7'I729>4<'0I(I97)I67645'I:*I NM:i:1 MD:Z:204 oR:Z:1 oH:i:1 oP:i:8 [...]
-simulated.853 16 1 445 255 96M1D98M1I20M * 0 0 CCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGTACCAGACCCCCCGGCGTCCC )I(I5886=5:'H985(I7/8887(I885479544'H74(I7(I(I(I95&+;I;745775'I54(I&+;I986&D59&.I786<(1I9'I'I7;5,I589867'I77847,I6'G)I;;?6;277&.I96755&.I8445597'H667?>9:(2I59'1I:'G<5;51>::(I7<777673'H47(I;=(I:3%8*I;68&(.9II'I785'/I NM:i:2 MD:Z:9 [...]
-simulated.854 0 1 8921 255 3M1D20M1I69M1D87M * 0 0 CTAGAACCGGTTCGTATCAGTAACGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGC ;95DF'I)E&H'56:3796:4I(&6I(F&58I';I)454I)I)86I(;I-&7;85;I(5574:77741I/'7I(:I(?8974189653E&8::I,648H'829:14I(7;6I)I(<H'679I)69998;:>6I(59:5I(I)49975I/'I*F&:I(84789;I)978I-&I0'632H'5 NM:i:3 MD:Z:3^G89^G87 oR:Z:1 oH:i:1 oP:i:8920 oS:A:F XE:i:3 XS:i:0 XI:i:0
-simulated.855 16 1 5165 255 46M1I35M1I34M1D29M1D42M * 0 0 GGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATCGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTCGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGTTTGCAGACGGACAGCCTTGGTACATTAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTC (I9676(I7759&*8I6(I'.I356(I7;4(I'I7>(I(I'/I9:8&'/I'H'H;<285;587492'0I;;2'G9(I*I?(I';68:(I8'F=846=:98;94)I777;6(I'G35;,I&-I9:68;=(I<843'I'G(I5;:7(ID=8;=964&-I9:&.I:'/I(I(I7*I5'G44869854'/I; NM:i:4 MD:Z:115^G29^A42 oR:Z:1 oH:i:1 oP:i:5164 oS:A:R X [...]
+simulated.853 16 1 445 255 96M1D98M1I20M * 0 0 CCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTGCATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGTACCAGACCCCCCGGCGTCCC )I(I5886=5:'H985(I7/8887(I885479544'H74(I7(I(I(I95&+;I;745775'I54(I&+;I986&D59&.I786<(1I9'I'I7;5,I589867'I77847,I6'G)I;;?6;277&.I96755&.I8445597'H667?>9:(2I59'1I:'G<5;51>::(I7<777673'H47(I;=(I:3%8*I;68&(.9II'I785'/I NM:i:2 MD:Z:9 [...]
+simulated.854 0 1 8921 255 3M1D20M1I69M1D87M * 0 0 CTAGAACCGGTTCGTATCAGTAACGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGAGATTATGATGAATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGGC ;95DF'I)E&H'56:3796:4I(&6I(F&58I';I)454I)I)86I(;I-&7;85;I(5574:77741I/'7I(:I(?8974189653E&8::I,648H'829:14I(7;6I)I(<H'679I)69998;:>6I(59:5I(I)49975I/'I*F&:I(84789;I)978I-&I0'632H'5 NM:i:3 MD:Z:3G89G87 oR:Z:1 oH:i:1 oP:i:8920 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.855 16 1 5165 255 46M1I35M1I34M1D29M1D42M * 0 0 GGTCGCTTCACTCCCCAGGAAATCACCGCTAATTGCAAGGTTTGATCGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTCGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGTTTGCAGACGGACAGCCTTGGTACATTAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTC (I9676(I7759&*8I6(I'.I356(I7;4(I'I7>(I(I'/I9:8&'/I'H'H;<285;587492'0I;;2'G9(I*I?(I';68:(I8'F=846=:98;94)I777;6(I'G35;,I&-I9:68;=(I<843'I'G(I5;:7(ID=8;=964&-I9:&.I:'/I(I(I7*I5'G44869854'/I; NM:i:4 MD:Z:115G29A42 oR:Z:1 oH:i:1 oP:i:5164 oS:A:R XE: [...]
simulated.856 0 1 5640 255 203M * 0 0 TTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATG I)6:3627I,&=8I(7669I)866I)886I(77I)I:+&559I)0:6I':I+E&:I'5I';:I.&8I-&84<6I0';93:;I(G'<I(4884I(45;89I':17H'0519:3II3+'I(59H'46:37I(I(65/I'7:76H'84I(96;;14332I(I(:;I)I(>H'88<;2=4<36I(1894I*;;;65885:66G'9:9 NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:5639 oS:A:F [...]
simulated.857 0 1 5451 255 42M1I166M * 0 0 ACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAAGTACTATTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATG >547;:I(8:79868:7I(I):63I(8I(86944;H'G'5I'*76593I(787507A4H'7I/'37I)85I0'I0'95;96G'361I/'8;I(I(I2(4I(?<76I(5I(687I*5644685I(5I(9;.96;75;8:2I(65I'I(<46053H'839767I(49I(56433695868667797I)5<93H'269547I/'57I)7;3: NM:i:1 MD:Z:208 oR:Z:1 oH:i:1 [...]
simulated.858 16 1 261 255 173M1I43M * 0 0 GGCTAACAGCGGGAGTGCCATACACTTCTGGCAATCGCTTATTAAGGAATTTTCGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCGTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCA 'G65'G7448'/I9=87(I839468(I67'H8&D7657'H5'G)I(I)I'-?I79:<'F56&-I69:5296'G6:;)I866;;<&*8I78736(I&-I984(I3'H<(I9'0I;:476?9;&)1II7'I'I39<9(1I&-I:73863;3:@(I)I'/I<;8396679&.I*I6)57'G:7(I:4'0I(I829;>4:'G=34(I759=8:)I84667: NM:i:1 MD:Z:2 [...]
-simulated.859 16 1 1287 255 39M1D18M1D145M * 0 0 CTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCACAGACTGCGCCACCGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGA 3:8'G535;(I'/I4'H8&.I'/I<&,I:)I:(I56:'I*7I6:31;72877(I;'IC95)I'1I8886=99&-I78'G3:'I<&-I8'I;5(I)I;6>;:822866<7'I883663697&+:I;'I=(I9<(I2'/I<56367'I9'I;27766(I49;9(I(I8(1I9(I(I&.I448:5)I:<7777&.I967689(I@ NM:i:2 MD:Z:39^C18^G145 oR:Z:1 oH:i:1 [...]
+simulated.859 16 1 1287 255 39M1D18M1D145M * 0 0 CTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCACAGACTGCGCCACCGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTTGGATTTGCCGGCCCGCACAGGCAGTACAAAGTGAGAGGA 3:8'G535;(I'/I4'H8&.I'/I<&,I:)I:(I56:'I*7I6:31;72877(I;'IC95)I'1I8886=99&-I78'G3:'I<&-I8'I;5(I)I;6>;:822866<7'I883663697&+:I;'I=(I9<(I2'/I<56367'I9'I;27766(I49;9(I(I8(1I9(I(I&.I448:5)I:<7777&.I967689(I@ NM:i:2 MD:Z:39C18G145 oR:Z:1 oH:i:1 o [...]
simulated.860 16 1 5206 255 209M * 0 0 TAGATGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGCAGACGGACAGCCTTGGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAC 8%666&.I*I'G68;598<76556'/I794(I3(I'H8)I39<>)I9*I997::466:76(I45;57'I)I898'0I'.I;86838(I;593)I(I'I6587(I(I<549266'0I;4&.I;(1I'G(I:'H@'G4236:195'/I=;:782:&+:I6(I4'H59:&.I68>76;:49='H71'I6:79:75'I846'.I573::)I:' NM:i:2 MD:Z:1T206G oR:Z:1 oH:i:1 [...]
simulated.861 16 1 4286 255 41M1I39M1I107M1I11M1I13M * 0 0 CCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGAGTGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGTCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACTATCTACCTTGGTCACATCCCGTTTC '0I;4&+9I76653:8::'I'/I'.I737'I6;<5)I&.I5-/8;6;7<7<8'H6(I)I933'G9'H7)I(I675:)I486**I592888'I74:9'H999'0I485765489<746:5829&*1II'I78958?A5'G:856'I*I(I55'/I7797'H67)I::688'H5%)0GI399;5:)I58:4'87978'G'F)I*87?>0'0I;'/I7 N [...]
simulated.862 0 1 8246 255 17M1I43M1I133M * 0 0 TATTCAAGGTGATGTCCTACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAACGAAGCGGGACGCCGCCGCTCTGCAGACGGCGATTTCCACGACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCA 99E&9I)I(577:8;I(&79298I(78I(8>87=31<:<I(H'I'I0'I(67586I(8<I(&9I(57I/':64I(7I(439:486:48;H'95:I-&G'75<7I)888I(H'18I2(857G'873;776I(358H':69755;:9776D7883?6I(47I)88:I(7;39776867I'5:5<I)I(8>H'86993 NM:i:2 MD:Z:193 oR:Z:1 oH:i:1 oP:i:8245 oS:A:F XE:i: [...]
simulated.863 16 2 28 255 213M * 0 0 TCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACA 79496&E)I;'/I79;664469(I)I6;792'/I<7*I73<9'G7;5:33696'F97;5;4879&D:(I(I58<'G'I8:<884;6;5(I5&.I<6(I'I'/I59679;7>&-I487674&E9'0I:&F743;2(I'H5:',>I'G752(I'/I'I'I4:)I7(1I)I9266(I8)I:'H'I;98795@=)I264(I6)I'0I89&+:I'H<7 NM:i:0 MD:Z:213 oR:Z:2 oH:i [...]
-simulated.864 0 1 3409 255 159M1I22M1D11M * 0 0 CAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCACTTGCTCGATTAATTGGTATTCGTTGTGATTCCG 69;1179I(I4)I2(76:2I'56955747586564547I(4<9>8I7*&58I(II2*&7I-&598:9?8I)3I(5I-&69I.&F&694:I(5864I.'3I'8I*98585219I(3I0'8F&957I)I(6I(:I/'I)744574I:+&583I/'I(E&96%I(:68<;5I)I)I'I':;I'<6I,6:8;I(G'; NM:i:2 MD:Z:181^T11 oR:Z:1 oH:i:1 oP:i:3408 oS:A:F XE:i: [...]
+simulated.864 0 1 3409 255 159M1I22M1D11M * 0 0 CAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCACTTGCTCGATTAATTGGTATTCGTTGTGATTCCG 69;1179I(I4)I2(76:2I'56955747586564547I(4<9>8I7*&58I(II2*&7I-&598:9?8I)3I(5I-&69I.&F&694:I(5864I.'3I'8I*98585219I(3I0'8F&957I)I(6I(:I/'I)744574I:+&583I/'I(E&96%I(:68<;5I)I)I'I':;I'<6I,6:8;I(G'; NM:i:2 MD:Z:181T11 oR:Z:1 oH:i:1 oP:i:3408 oS:A:F XE:i:2 [...]
simulated.865 16 1 1250 255 42M1I160M * 0 0 GTTTAGCCAATAAAACCGTTATCACAGGTGTTATGTTCTCAACTGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGGGCGCATCTCCCGAGGCAGGAGGGATTAGTTAAGTCTGTCTACATGTTGCGACAGACAAAACAAGAATCAAGTTTCTACAGCCGCCATCTCTAACTACTT 9'/I7:'I*I9&*8I(I;'H7<<9<6)I=3)I1;5'I25;(I&2976(I'0I3)I6'0I'/I7'.I8)I8(I:76'I',>I8969;6;13:)I;)I(I35)I&-I5::635;'/I;7(I55(I6'.I?'I7D'G'H=<:98>6976555'I4:2484:29&*8I0,I9)I68+I<'.I8:6952)I6'I77<:57(I8285(I NM:i:1 MD:Z:202 oR:Z:1 oH:i:1 oP:i:1249 [...]
-simulated.866 0 1 8323 255 14M1I145M1D37M1I15M * 0 0 CTCTGCAGACGGCGTATTTCCACGACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTAGGCTGGATTTGTACT 857469:67;I(6268I0'G'7785I'788I(I(95I-&669I(547449;G'6:7G'47=99;17725:;7388=:I(78I(94;I(;@4759/587G'095<G'I(:7I)379:8I(9>E&747:8I';76H'39:8<I'I(688=6;I)I'I.'985I,::I*6/E&7;5772;;:5:7:8I(;;61I(<8I'8)I(<8I(:I.'7:4<8 NM:i:3 MD:Z [...]
-simulated.867 16 1 3585 255 143M1D85M * 0 0 ATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCT 5&F9;'/I:60;'H'I(I(I277=563&.I2)I64)I6<(I6'- at I6=9936(I6:59(I4<'H9;84;74(I584(I8'G',>I56'F7(I>75'H'/I&*8I639:6)I(I;84'G<:87:58(I:8'I7299(I'I)I95,I:@'H&.I&,I(I2'I>:'.I::5:726:5(3I5;(2I'G4'1I49(I6652;1='I3(I65<3(1I55)I(I4< [...]
+simulated.866 0 1 8323 255 14M1I145M1D37M1I15M * 0 0 CTCTGCAGACGGCGTATTTCCACGACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTAGGCTGGATTTGTACT 857469:67;I(6268I0'G'7785I'788I(I(95I-&669I(547449;G'6:7G'47=99;17725:;7388=:I(78I(94;I(;@4759/587G'095<G'I(:7I)379:8I(9>E&747:8I';76H'39:8<I'I(688=6;I)I'I.'985I,::I*6/E&7;5772;;:5:7:8I(;;61I(<8I'8)I(<8I(:I.'7:4<8 NM:i:3 MD:Z [...]
+simulated.867 16 1 3585 255 143M1D85M * 0 0 ATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCT 5&F9;'/I:60;'H'I(I(I277=563&.I2)I64)I6<(I6'- at I6=9936(I6:59(I4<'H9;84;74(I584(I8'G',>I56'F7(I>75'H'/I&*8I639:6)I(I;84'G<:87:58(I:8'I7299(I'I)I95,I:@'H&.I&,I(I2'I>:'.I::5:726:5(3I5;(2I'G4'1I49(I6652;1='I3(I65<3(1I55)I(I4< [...]
simulated.868 16 1 4548 255 200M * 0 0 ACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCT 76<8:6568'1I<'I<463936(I=455766(I(I67(I6(1I599.'F88:797;6946&F&-I946&-I2:5(I(I;(I441(I97658:75'G5'/I;'I96;5(I77'H9:;;2(2I:267;;(I;'H88785'0I(I:<5(I1496;7'/I621(I(I=5368(I;845'/I5?5;)I:3)I;3&*2II'0I*I9 NM:i:0 MD:Z:200 oR:Z:1 oH:i:1 oP:i:4547 oS:A:R XE:i [...]
-simulated.869 0 2 171 255 8M1D120M1I8M1I45M1I29M * 0 0 TAACTGCCGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATACTGCATGTCGTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGACGAACTGAAGCGGGTCGGGGAGATTTATC 5I(566I(I+I(H'96H'=I.&G'45;9I(4I(6I(I(578>7:84I(1;8G':H'I1(6>I8*&F'8I)8I(I)7679:I0'I)84:79;75:8777>I(4:F&I0'7986I(55I*7;H'>=987:'4283645<(789I(;:45;?574:9;6I/'I'I(:766456I'I(H'4658878&39I(553I(74I2(86I<+&496I/'64: NM:i:4 MD [...]
-simulated.870 16 1 5350 255 71M1D68M1I8M1I42M * 0 0 TTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAACTAATACTAGTTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCA )I8;64=58&+;I5)I4(I765&.I5346:56:4:'G8:(I9968302)I57:&.I9:683'G9(I5(1I7B/9&*1II79>:6)I75667695(I88)I77;5>7&F739657644(I)I567(I8(I8:96<7'G'H&5'I86:52&&F97897:99(I8'/I57(I87'0I'0I:5449)I967'.I3 NM:i:3 MD:Z:71^G118 oR:Z:1 oH:i:1 oP:i:5349 oS:A:R XE:i: [...]
-simulated.871 16 1 6346 255 7M1D183M * 0 0 CAACTAGCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAG ;'I8::8(/EI'G98'H(I'I98:7846'I4 at 7(1I4'I'/I(I66(I664;:<9'G63:;;4:02'I&.I&E22?4'/I87:+I65(I4;1&+;I:;(I81)I(I(I4;6'F/7(I646(I5=?:8<=4(I<7;7(I88)I)I5897:7:94;476&D:99(I877:767'0I2486657'H:677797 NM:i:1 MD:Z:7^C183 oR:Z:1 oH:i:1 oP:i:6345 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.872 16 1 2786 255 55M1D141M * 0 0 CTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCT 6(1I'G7846;=97&+;I:(I:&*8I8(1I4770(I797;;;758;153&*9I44)/FI75?:96(I875'G945)I64665(I)I6'I729/8(I46(I68)I87::'0I59744'H848=2646:68468'G85964',=I2(I9983(I:9:9(I7644'/I96)I7648(I<'I:995::5(I5'H38;<<: NM:i:1 MD:Z:55^A141 oR:Z:1 oH:i:1 oP:i:2785 oS:A:R XE: [...]
+simulated.869 0 2 171 255 8M1D120M1I8M1I45M1I29M * 0 0 TAACTGCCGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATACTGCATGTCGTACTTATAGCGCGCACATAAACCAATCATCTCTTCCGGTAGTCAGACGAACTGAAGCGGGTCGGGGAGATTTATC 5I(566I(I+I(H'96H'=I.&G'45;9I(4I(6I(I(578>7:84I(1;8G':H'I1(6>I8*&F'8I)8I(I)7679:I0'I)84:79;75:8777>I(4:F&I0'7986I(55I*7;H'>=987:'4283645<(789I(;:45;?574:9;6I/'I'I(:766456I'I(H'4658878&39I(553I(74I2(86I<+&496I/'64: NM:i:4 MD [...]
+simulated.870 16 1 5350 255 71M1D68M1I8M1I42M * 0 0 TTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAACTAATACTAGTTGCGAGCTCTTGAAACATTACAAAGGGCATGTCCATGCCCA )I8;64=58&+;I5)I4(I765&.I5346:56:4:'G8:(I9968302)I57:&.I9:683'G9(I5(1I7B/9&*1II79>:6)I75667695(I88)I77;5>7&F739657644(I)I567(I8(I8:96<7'G'H&5'I86:52&&F97897:99(I8'/I57(I87'0I'0I:5449)I967'.I3 NM:i:3 MD:Z:71G118 oR:Z:1 oH:i:1 oP:i:5349 oS:A:R XE:i:3 [...]
+simulated.871 16 1 6346 255 7M1D183M * 0 0 CAACTAGCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAG ;'I8::8(/EI'G98'H(I'I98:7846'I4 at 7(1I4'I'/I(I66(I664;:<9'G63:;;4:02'I&.I&E22?4'/I87:+I65(I4;1&+;I:;(I81)I(I(I4;6'F/7(I646(I5=?:8<=4(I<7;7(I88)I)I5897:7:94;476&D:99(I877:767'0I2486657'H:677797 NM:i:1 MD:Z:7C183 oR:Z:1 oH:i:1 oP:i:6345 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.872 16 1 2786 255 55M1D141M * 0 0 CTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGGATGTGCCTATGCAGTGTGCTACCTATACTTTTCGGCTATGGTGACGGCATACCCAGAACGATAAGCCAGTCGCTGGCTTCACGCT 6(1I'G7846;=97&+;I:(I:&*8I8(1I4770(I797;;;758;153&*9I44)/FI75?:96(I875'G945)I64665(I)I6'I729/8(I46(I68)I87::'0I59744'H848=2646:68468'G85964',=I2(I9983(I:9:9(I7644'/I96)I7648(I<'I:995::5(I5'H38;<<: NM:i:1 MD:Z:55A141 oR:Z:1 oH:i:1 oP:i:2785 oS:A:R XE:i [...]
simulated.873 0 1 490 255 56M1I40M1I98M * 0 0 GCCGTAAAACACGTATGGATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCTATCATTCTGTCGGTCCTTAGTATCTATTTCTCAGCCCACTACACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACAGGTACCTGTTCGACCAGACCCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAA 8I(29I=,'957588:I'77F&I?-':7:I(89I-&376AI0'6I)I*=8:I0'7:&7<:3E&85877I,<I(I(:7<6348AI.&:5567I.&8:8%2654I)5675<?7I-&9;I-&5I)597:678<I(72<57>95I(9;I'58I(68:I(5<9II9.(&I(84:I0':6;;G'I)7I.&7;28;5758?I' NM:i:2 MD:Z:194 oR:Z:1 oH:i:1 oP:i:489 oS:A:F XE:i:2 [...]
simulated.874 16 1 6205 255 16M1I175M * 0 0 ATTCGCCAGGGATCAGACGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTG 4'G77(I7'.I6996;'7(I;;:759933<7686'.I526(I<;5463>'/I8:5<59&-I=3;75(2I5(I68',=I3'I&,I976:43'H4;96<420<28863:6'I::86873&F4398'/I4::391(I'H'0I(I4<(I;63;&*2II'G><)I'I(I969347<'G5::'/I4(I'0I'H84'H6 NM:i:1 MD:Z:191 oR:Z:1 oH:i:1 oP:i:6204 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.875 16 1 375 255 19M1I101M1D12M1I42M1D3M1I14M * 0 0 GTGTCGCAAAAATGGCCTACGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAACACGTATGGTATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATCTAGTCGGTCCTTAGTA 809196/(-7II6'I(I86(55'1I&-I;@8?05:357'H(I'0I7543<7669&.I(I757(I9>'I98&.I(I947<;63)I:98'H1883<2(I5376::489'H77(I>)I'H'H76*7I77989:;)I&:6&E'-?I587(I67(1I3>;4'0I6(I)I97B(2I6377;<D93'829(I7*I(I6855 NM:i:5 MD:Z:120^A54^T17 oR:Z:1 oH:i:1 oP [...]
+simulated.875 16 1 375 255 19M1I101M1D12M1I42M1D3M1I14M * 0 0 GTGTCGCAAAAATGGCCTACGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAACACGTATGGTATAAGGGGATACCAGAAAGTAGTTTCGGAAGCGTTTGCATCATCTAGTCGGTCCTTAGTA 809196/(-7II6'I(I86(55'1I&-I;@8?05:357'H(I'0I7543<7669&.I(I757(I9>'I98&.I(I947<;63)I:98'H1883<2(I5376::489'H77(I>)I'H'H76*7I77989:;)I&:6&E'-?I587(I67(1I3>;4'0I6(I)I97B(2I6377;<D93'829(I7*I(I6855 NM:i:5 MD:Z:120A54T17 oR:Z:1 oH:i:1 oP:i [...]
simulated.876 16 1 1135 255 23M1I117M1I78M * 0 0 TGTCTATAAAACCATGCTAGTGCTATGAAGCCGACGTATACAGACTAGCTAGGGGCCTACGCGCATTAGCCGAATGCCCCGATGCCTCGCCTGACAGCGGTGCCATTCCGTGGTCTGTTTAGCCAATAAAACCGTTATCACTAGGTGTTATGTTCTCAATGAGTTAAACGGCAAATTTACCCACCGTTCATAACCCCACAGACTGCGCCACCGGAGTTGG 9976;:A&+;I(I77759:3859.077)I2)I577887::3;684274>76&+:I)I98<:>8:3'H52(I2'I9:&*8I4868'I63;)I97469;=(I95(I8(I(I58'F585=&-I5;(I)I/&+:I'H8(I;565B&2(I9>)I935(I389'H5735*I(2I8(I8&-I'0I9'/I3(I9)I5:3(I',=I8;837?9;;;*I7'F(I78(I&E N [...]
simulated.877 0 1 914 255 40M1I55M1I130M * 0 0 CATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGTATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGTCCTTTAATCCCTAGCGGCGGGTGTAGCGGGTCGACTAGGCACCAGGTCAGCAACCTGACTAGAAGCGGGGTCAAGCGTGTTTAGGCTGGGCATTAGCTGCGTACATCGGTTTGCACTGTGGCTGGATGTC ;:9696799I at -'H'9=;7I/'G'98I2(7;I(8;34889'4;97;7;18978I(:0>844I(84;:39576787I'7I.'78I)7I(I1(;9386'I(I.&I(9I0'8859I(:I.';977:6I1(>795:84I':8I(,I'47<96I(I(6868:94H':8I9+&97I(<>877I0'2I(92I-&18G'<967<13878<92I'I/'1366825I [...]
simulated.878 0 1 7564 255 62M1I155M1I4M * 0 0 TGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTAGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAAACC 7G'8G'7I)I'419I*877I(:7I(4I(I(5I(6576794:;9I(<9868777H'3689I(3%I'I(654<979;865I)I/'7I)89I(3I0'G';<389<374;2I(776I)37I/'=<6=6I.';66I'86H'8799<4I(G'H':7I(64I)F&9;99:G'45:I(9645;9I(I'I';;6I'6727:?:H'I(H'98I/'0:8I=,';H'I.'I,& [...]
-simulated.879 0 1 7293 255 17M1I68M1I2M1I27M1D29M1D72M * 0 0 AACATAGTTATTAGCCCTATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTCGTACAAAATATCCGCCATGCCCTCGTAGCCTGTGTGAGTGCGAGATGCCCACCATCAAGCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCC I'96436H':I'?/I-&&677I)3;6I(I.'<3I/'407I)5756I(7753I(;48:7584I)79<7:=686I0'4;C<8I'8565(66&:I;+&668I'6I'47>I2(3=<98:I(C788:2917<53<8887I/'2F'/;3I)6I4)<98387319H'I'8;H'I(538765I,&I.&88545:=I(>5I)<I.&F&I'48I(I(53846 [...]
-simulated.880 16 1 6455 255 62M1I35M1I43M1D45M * 0 0 CAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTAGAAATCGATCTAACTGATAGTATGAACGCGTAGTTCGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAA 49:(I;6'G785'I;73833<:(I><87)I98'I(I6;8;<8978;769(I8::'I232:66+6&-I9:47749'F8:5=>977786(I66659>9(I)9(I:?:79:&.I<:+I)I2'H8'G=645'H9:59&)1II'0I1D459<995'G'G'H8'I;)I=76?:/67(I7394=92(I86>5)I NM:i:3 MD:Z:140^T45 oR:Z:1 oH:i:1 oP:i:6454 oS:A:R XE:i:3 XS:i: [...]
+simulated.879 0 1 7293 255 17M1I68M1I2M1I27M1D29M1D72M * 0 0 AACATAGTTATTAGCCCTATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTCGTACAAAATATCCGCCATGCCCTCGTAGCCTGTGTGAGTGCGAGATGCCCACCATCAAGCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCC I'96436H':I'?/I-&&677I)3;6I(I.'<3I/'407I)5756I(7753I(;48:7584I)79<7:=686I0'4;C<8I'8565(66&:I;+&668I'6I'47>I2(3=<98:I(C788:2917<53<8887I/'2F'/;3I)6I4)<98387319H'I'8;H'I(538765I,&I.&88545:=I(>5I)<I.&F&I'48I(I(53846 [...]
+simulated.880 16 1 6455 255 62M1I35M1I43M1D45M * 0 0 CAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTAGAAATCGATCTAACTGATAGTATGAACGCGTAGTTCGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAA 49:(I;6'G785'I;73833<:(I><87)I98'I(I6;8;<8978;769(I8::'I232:66+6&-I9:47749'F8:5=>977786(I66659>9(I)9(I:?:79:&.I<:+I)I2'H8'G=645'H9:59&)1II'0I1D459<995'G'G'H8'I;)I=76?:/67(I7394=92(I86>5)I NM:i:3 MD:Z:140T45 oR:Z:1 oH:i:1 oP:i:6454 oS:A:R XE:i:3 XS:i:0 XI:i:0
simulated.881 16 1 1979 255 217M * 0 0 TCAACAATCGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGT 49)I7'I6(,I(1I686:7'H7547)I9(I23;7<&)1II97(I5:49:(I86;53:;8<737'H359C6(1I765)I7(I'0I(I676:5',>I6'I7;6(I7(I69335)I4756(2I:25'I5&,I569)I<*I177<98766844(I='/I)I977&-I(I83)I:6'I(I'G&+:I4(I29'I'0I(I7799(I>81=;8(I54'I6=626< NM:i:1 MD:Z:8G208 [...]
simulated.882 16 1 8107 255 144M1I5M1I66M * 0 0 GAATTCTGAATGTTCCGTGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCTAAGGTCGATGTCCACTCTCCTGAAGTATGCAGATAATTGGCCCGGTCGCGCCATAAGAAGCGGGACGCCGCC 7'H'H6<9'I77'G'I9586(I4976;29;83;97'I;8789;758>6&*7I9:7<(I&.I(I48(I56>'I7*I'/I3874)I5:<58'0I:9:5)I'I53'H2;57<186(I8'H8='I37<8::'/I(I9:(I96995'F6''I)I7'39838(I6:6;5(I96(I529690:776'I'I*I(1I(I:7859'H64*I7)I=8'1I<86*I5(I NM:i:2 M [...]
-simulated.883 0 1 561 255 16M1I50M1I19M1D116M1I8M * 0 0 CTTAGTATCTATTTCTACAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACTAGGTACCTGTTCGACCAGACCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGACATGGTTA 7I'8993:767I/'97(855I0'42656=7I'6575;6:I1(;8I0'8H';896<69:I'2<:367:'7I)68I'7>I(947H'469II7-(G':75I0'5:;8H'I(3I0'7:<6878:=8H'7;8:7894766I'4:7743562I'963I(79>G':;I.'1I*44I(=9=-84<<537I(4927F&26I'197?9G'I)9'855I)I(5 NM:i:4 MD: [...]
+simulated.883 0 1 561 255 16M1I50M1I19M1D116M1I8M * 0 0 CTTAGTATCTATTTCTACAGCCCACTCACGAATACTGTCTTTCTCCCACCTATACATGAAGTCATACTAGGTACCTGTTCGACCAGACCCCCGGCGTCCCTAGTAAGGATTTGCACAGACTCAATCTAGTCACGTCCGCTAGCATCGGAGAGGCGACCATAAATGGACTTACTGTCATCGCGGCGTAGGATAATCTACGGTTGACATGGTTA 7I'8993:767I/'97(855I0'42656=7I'6575;6:I1(;8I0'8H';896<69:I'2<:367:'7I)68I'7>I(947H'469II7-(G':75I0'5:;8H'I(3I0'7:<6878:=8H'7;8:7894766I'4:7743562I'963I(79>G':;I.'1I*44I(=9=-84<<537I(4927F&26I'197?9G'I)9'855I)I(5 NM:i:4 MD: [...]
simulated.884 16 1 822 255 20M1I190M * 0 0 GCGAGCAAGCTACACATGATACTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGTCCCTCAATGGCCCTGATGCCTTTAATCCCTAGCGGCGGGTG 68;77:+I76665:637:7:*48;)I97888643;9'H5'I'F83(I48;'H1'I6(I'/I'H458716'I(I6459:'H649',=I;(I56<1677;59<6&*7I'I145;&-I'I7;&,I65(I8878:7;75.<=866296<'H643836'I:437;68;6855)I5'/I58)I8(I'/I7;73:)I'/I'G<'0I7475'I2'0I76 NM:i:1 MD:Z:210 oR:Z:1 oH [...]
simulated.885 0 1 3503 255 29M1I160M * 0 0 CGGGCAAGCCTCTCAGTGCCTAAAGAAGTACGGTTGCCTGGGCCGTCACACCCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCT 7I.'7I)6I(=7775464I(6I/'7I*73&5I'I(7I)5I.&I(69:7:5I:+&954I-&I(I)7<I(87652AG'I*I(I(68F'66I0'65::I(I(I(G'95948:8I.'7I(:7H'57I(3I<,'7646:9G'9498E&26I)49:6585I(8=6I(5I(I9*&:8I)8I(85:G'I-&I;+&3:4 NM:i:1 MD:Z:189 oR:Z:1 oH:i:1 oP:i:3502 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.886 0 1 1964 255 96M1D116M * 0 0 AGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGT 2I<,'26I)85997:;7H'7I)7I-&I0':48:6H'4799I(8I(7;8:5II2*&97H'08>:2I(76:7;7758:65I*689>7I.&379G'>I(I+I(8;51:ID.(7I(956I'4I(=785:I(2503I.&632I)5I1'7:7I'9I(=9896448::50I(5I.&I(558I/'I)53I'92G'F'I'I=,'4I)75I(I.&H'98978 NM:i:1 MD:Z:96^C116 oR: [...]
-simulated.887 16 1 4221 255 12M1I133M1D65M1I1M * 0 0 AGAGAGAGTCGACGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTACA 674:987856 at 2,3'H'.I3'/I(I'H'I6.37588996:7164*I(1I66(I4663(I=(I(I:7'0I75&,<I5689=9789(I'/I(2I716*I8628*I'/I25168569383(I6'H(I<;:(I:(I>(I'I5;;9(I5<8D<2:5<5'F=:86'H579'0I0798380;8678899<89&*1II(I713;4285(I;>46)I(IC65 NM:i:3 MD:Z [...]
+simulated.886 0 1 1964 255 96M1D116M * 0 0 AGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTGGGGACCTCAATTTGGTACGT 2I<,'26I)85997:;7H'7I)7I-&I0':48:6H'4799I(8I(7;8:5II2*&97H'08>:2I(76:7;7758:65I*689>7I.&379G'>I(I+I(8;51:ID.(7I(956I'4I(=785:I(2503I.&632I)5I1'7:7I'9I(=9896448::50I(5I.&I(558I/'I)53I'92G'F'I'I=,'4I)75I(I.&H'98978 NM:i:1 MD:Z:96C116 oR:Z [...]
+simulated.887 16 1 4221 255 12M1I133M1D65M1I1M * 0 0 AGAGAGAGTCGACGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGGACTAGCGCTCCTTTAAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTACA 674:987856 at 2,3'H'.I3'/I(I'H'I6.37588996:7164*I(1I66(I4663(I=(I(I:7'0I75&,<I5689=9789(I'/I(2I716*I8628*I'/I25168569383(I6'H(I<;:(I:(I>(I'I5;;9(I5<8D<2:5<5'F=:86'H579'0I0798380;8678899<89&*1II(I713;4285(I;>46)I(IC65 NM:i:3 MD:Z [...]
simulated.888 16 1 2182 255 229M * 0 0 TATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCCTTTTCTTTAAGATTAACGTCAAAAGTCTTCTACCCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGC 69(I55'H43:;0)I559'.I(I38&).9II<79:&*8I39=8(I<9<5;<;9<=<6969(I74'0I66;6'H4799688;@3=6:6(I'I687'0I:(I9<66:62(I?5<8948)I3875(I9'I&*9I8'0I'H98'G(I::5.',<I7:9(I9<8'0I:<(3I7)I:97:9878(I8)I;:37332:<55(I;468:=49:879&*2II57(I'/I(I8 [...]
-simulated.889 0 1 5861 255 3M1I3M1I19M1D75M1I88M * 0 0 CATCGAGACGTCGTTCGTTGCCACTTGAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGTAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTT 975-6=5%@77>8I(55G'4I'69I(9I,94I(I-&5:I-&4789H'7688661I/'I)I8*&6AI1'677I<,'7I(I(I(I'9:6;52<5<I(;243I(;'I(7I)4I(9I.'57I(I(34:797I(751995:/I.'0H'I)8I0'45?175:I at -';I0'8II9.)&8557846286;;I(I(74I* NM:i:4 MD:Z:25^A163 oR:Z:1 oH:i:1 oP:i:5860 oS:A:F XE [...]
+simulated.889 0 1 5861 255 3M1I3M1I19M1D75M1I88M * 0 0 CATCGAGACGTCGTTCGTTGCCACTTGAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGTAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTT 975-6=5%@77>8I(55G'4I'69I(9I,94I(I-&5:I-&4789H'7688661I/'I)I8*&6AI1'677I<,'7I(I(I(I'9:6;52<5<I(;243I(;'I(7I)4I(9I.'57I(I(34:797I(751995:/I.'0H'I)8I0'45?175:I at -';I0'8II9.)&8557846286;;I(I(74I* NM:i:4 MD:Z:25A163 oR:Z:1 oH:i:1 oP:i:5860 oS:A:F XE: [...]
simulated.890 0 1 5622 255 23M1I36M1I39M1I72M * 0 0 GTCTGCTGACTACCAGTATTGCGTACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGTCTTAGATTAGGTTACCGCCGCTTTCAAACTCATTTGTATAGCCGGCAAGCAGCCGTATCAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTG :;7::9:;>767I(6766I(578&;93I-&74I(67;4I(5<9I(487G':7I(I8*&;7%4I(6:8I(3G'I(8I'9I)4>I1'5I.&89=8I.&839;*9I'H'3E&5945I(93097I(875E&8;4;99II3+'F'<7I'7:664H'I(665I(<;85I(8:I)677;? NM:i:3 MD:Z:170 oR:Z:1 oH:i:1 oP:i:5621 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.891 0 2 24 255 174M1I22M1I13M * 0 0 GGACTCAGCGGCCGTTTGCGTATATAGGAATAGCAGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACGACTTACCGTTAAGAGCATCGTTACGTCCTGGTTTGT I)1957834I(H':I-&99794:4<4I'I(<:747I/'43I(7697I(8447:667<I(78::58:99I(7G'I(737I)G';83;<97:58F&;I0'77H'F'I.'89:6:;45I4)638:?9H'9I3(7I(983;3I(I*47I<+&E&6;5I(I1(I*G'<7I'6I0'H'99&<9I(8I*:I)G'876:777.F'%38:I(7I)I0'7: NM:i:2 MD:Z:209 oR:Z:2 [...]
-simulated.892 16 1 8510 255 67M1I25M1I104M1D10M * 0 0 ACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCACTCAGGGCTTTCGGTCCGCTCTTAGGTCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTAAAGGATTG ;98)I47(I6'H89'H:&.I3375)I4)I589:589'I+I;99<6)I(I&*1II6897&*8I89)I6(;9:'/I4&.I:(I='H84;3)I;(I&6<5)I4(I79:(.BI'0I(I:687;&+9I5<54788'0I5::9635476;67(I7(I99<)I7'I<36&-I5'I9(I:2)I892)I&F(I<64&+;I(I74'0ID(3I'H9(I8 NM:i:3 MD:Z:196^T10 [...]
-simulated.893 0 2 129 255 47M1I57M1D91M * 0 0 CCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTCGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACA I':<848587I/'4554>7I*5I0'9I)77954I'I(93I;+&I(3?(7F'I2(I(I(83I(:I/'I(4899I(6I';I)H'5868=:33I)4;5I(8I(I-&3;I6)I(7G'=I)I(8?65:I/'I(:95<>5538<66:7I)9;I'I/':58 at I(:7I)9;I(4759;04747567<855I(;56<29::9659 NM:i:2 MD:Z:104^C91 oR:Z:2 oH:i:1 oP:i:128 oS:A:F XE [...]
+simulated.892 16 1 8510 255 67M1I25M1I104M1D10M * 0 0 ACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCACTCAGGGCTTTCGGTCCGCTCTTAGGTCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTAAAGGATTG ;98)I47(I6'H89'H:&.I3375)I4)I589:589'I+I;99<6)I(I&*1II6897&*8I89)I6(;9:'/I4&.I:(I='H84;3)I;(I&6<5)I4(I79:(.BI'0I(I:687;&+9I5<54788'0I5::9635476;67(I7(I99<)I7'I<36&-I5'I9(I:2)I892)I&F(I<64&+;I(I74'0ID(3I'H9(I8 NM:i:3 MD:Z:196T10 o [...]
+simulated.893 0 2 129 255 47M1I57M1D91M * 0 0 CCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTCGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGCACA I':<848587I/'4554>7I*5I0'9I)77954I'I(93I;+&I(3?(7F'I2(I(I(83I(:I/'I(4899I(6I';I)H'5868=:33I)4;5I(8I(I-&3;I6)I(7G'=I)I(8?65:I/'I(:95<>5538<66:7I)9;I'I/':58 at I(:7I)9;I(4759;04747567<855I(;56<29::9659 NM:i:2 MD:Z:104C91 oR:Z:2 oH:i:1 oP:i:128 oS:A:F XE: [...]
simulated.894 0 1 5931 255 171M * 0 0 AAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCC I>,'8I'I(I(I)899497396H'3:83I':I(7H':I(5I1(85F'I)787:6:I(:<558:83I2(3I(I(:I/'<978679I:+&4I1(:II;/)&47947<6977:6H'I(<<I(668I0'47<:81946596716I(9:6537I0'=G'2478:89I(;I)995I( NM:i:0 MD:Z:171 oR:Z:1 oH:i:1 oP:i:5930 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.895 0 1 4770 255 47M1D47M1D95M * 0 0 CCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGA II1*&=9<=I(72:6I(;96I:+&2I(838F'96G'F';8I)I-&69I,;0=I.'I(4I(II3+';4843I):I'I(8;H';5I(79I):66;@I+8:I(48:37755747I(2I0'868H';ID/(<62?6I'37I(I(24I(I'96<8866I(:87H'G';7786545;9<7I)4I':;:7I(6785 NM:i:2 MD:Z:47^A47^T95 oR:Z:1 oH:i:1 oP:i:4769 oS:A:F XE:i:2 XS:i [...]
-simulated.896 0 1 8502 255 111M1D90M * 0 0 GCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGC 78<87E&:784I(>9I(:I'38I(6I1(7<32I*6G'96:84;1I(G'7;033D&I)IH0)%777;I<,'3:I(7A48I0';I/'6I(4I'6:64G'9E&6;3I):H'8:9I6*I2(F&::385I:+&6269:98I1(68838887669<6I(9G'3=7I(6I(95:I3(8I(5I(89I(6:3I*F'I)968IB.(H'6;7 NM:i:1 MD:Z:111^A90 oR:Z:1 oH:i:1 oP:i:8501 o [...]
-simulated.897 0 1 7231 255 28M1I48M1D130M * 0 0 AAGCATTCGGAAGTCAAGTCATATATGACGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGC I'868I'9I(I(668I(9=9:4458;77&8IA-'46I)8I(9689785;I(G'85I)68I>,'I)7<5::I(5G'84I,<4:I(758I'I/'7:I.&;96I)>198I(9698I(.6448565I(9=<<5::96I/'>;:6>I(9379587I:+&837H'6I(<47I0'47@>:=G'I(<26;4467;796748:I0'6I(949I(85 NM:i:2 MD:Z:76^C130 oR:Z:1 o [...]
-simulated.898 16 1 3688 255 40M1I37M1D10M1D85M1I33M * 0 0 AGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACTAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAATTGAAACTCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGACGAACTTCAATCAGCTGAATGGTCACGAGAAAAA 678695'G'HA65(I677::29(I96(I5887(I(I'H98%&.I56'G'1I'0I'F7(I67'0I:758<67=:(3I27,I(I4&.I49D;277;67'I6(I6878&.I47'H(I797(I9;7908:77::3493=;276:'0I*I4963(I577'F'/I(I8)I;;<467:69)9'I:'I7'I<8:;653'I8'H:;68695',6II NM:i:4 MD:Z:77^A10 [...]
-simulated.899 0 1 6673 255 42M1I2M1D65M1D51M1I43M * 0 0 TGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGTCACCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACACTACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACC 97;:I)I'6689;45:48:58I'6I(I(59766I(<956:I(&9<I7*8I-&657I/'8II3+'867I(I(;4965I'I'3637I(89I'375I=,';=4I(9I(874I)DH'I(857H'H'7I:+&I'7I(4686F'4;=6=7F'7<226F'<699:5:1'3742I)G'8I2(;I(896796I(570G':7I-&7858I(I(I( NM:i:4 MD:Z:44^C65^C94 o [...]
+simulated.895 0 1 4770 255 47M1D47M1D95M * 0 0 CCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGA II1*&=9<=I(72:6I(;96I:+&2I(838F'96G'F';8I)I-&69I,;0=I.'I(4I(II3+';4843I):I'I(8;H';5I(79I):66;@I+8:I(48:37755747I(2I0'868H';ID/(<62?6I'37I(I(24I(I'96<8866I(:87H'G';7786545;9<7I)4I':;:7I(6785 NM:i:2 MD:Z:47A47T95 oR:Z:1 oH:i:1 oP:i:4769 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.896 0 1 8502 255 111M1D90M * 0 0 GCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGC 78<87E&:784I(>9I(:I'38I(6I1(7<32I*6G'96:84;1I(G'7;033D&I)IH0)%777;I<,'3:I(7A48I0';I/'6I(4I'6:64G'9E&6;3I):H'8:9I6*I2(F&::385I:+&6269:98I1(68838887669<6I(9G'3=7I(6I(95:I3(8I(5I(89I(6:3I*F'I)968IB.(H'6;7 NM:i:1 MD:Z:111A90 oR:Z:1 oH:i:1 oP:i:8501 oS [...]
+simulated.897 0 1 7231 255 28M1I48M1D130M * 0 0 AAGCATTCGGAAGTCAAGTCATATATGACGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGC I'868I'9I(I(668I(9=9:4458;77&8IA-'46I)8I(9689785;I(G'85I)68I>,'I)7<5::I(5G'84I,<4:I(758I'I/'7:I.&;96I)>198I(9698I(.6448565I(9=<<5::96I/'>;:6>I(9379587I:+&837H'6I(<47I0'47@>:=G'I(<26;4467;796748:I0'6I(949I(85 NM:i:2 MD:Z:76C130 oR:Z:1 oH [...]
+simulated.898 16 1 3688 255 40M1I37M1D10M1D85M1I33M * 0 0 AGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACTAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAATTGAAACTCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGACGAACTTCAATCAGCTGAATGGTCACGAGAAAAA 678695'G'HA65(I677::29(I96(I5887(I(I'H98%&.I56'G'1I'0I'F7(I67'0I:758<67=:(3I27,I(I4&.I49D;277;67'I6(I6878&.I47'H(I797(I9;7908:77::3493=;276:'0I*I4963(I577'F'/I(I8)I;;<467:69)9'I:'I7'I<8:;653'I8'H:;68695',6II NM:i:4 MD:Z:77A10C [...]
+simulated.899 0 1 6673 255 42M1I2M1D65M1D51M1I43M * 0 0 TGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGTCACCCTAAAGCTGGGCTTTTTCTGAATTCATCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACACTACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACC 97;:I)I'6689;45:48:58I'6I(I(59766I(<956:I(&9<I7*8I-&657I/'8II3+'867I(I(;4965I'I'3637I(89I'375I=,';=4I(9I(874I)DH'I(857H'H'7I:+&I'7I(4686F'4;=6=7F'7<226F'<699:5:1'3742I)G'8I2(;I(896796I(570G':7I-&7858I(I(I( NM:i:4 MD:Z:44C65C94 oR: [...]
simulated.900 16 1 8099 255 26M1I138M1I24M * 0 0 CGTGCTCGGAATTCTGAATGTTCCGTAGTCCGACTCGTATGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCATGTAACACAGCCCACACGGTTATGGACGCTGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCCGACTCTCCTGAAGTATGCAGATAAT 85:9855)I(I(I;98'F:8(I'H<4&:8(I966887677768;(I<<497687729&*8I<277)I(2I(I::(I;81'H8&F(1I:932(I735;<'1I9956(I'H31(I84;26:15'G7)I<2'I565487(2I(I;8(I=4687(I4(I(I4789;8(I%5656;(I:8'I5498<79;95(I3 NM:i:2 MD:Z:188 oR:Z:1 oH:i:1 oP:i:8098 oS:A:R XE:i:2 XS:i:0 XI:i:0
-simulated.901 16 1 7790 255 10M1D146M1I17M * 0 0 GATCGATTACGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTCGTAGTAGTGTATAACTC ;57?:='H43,I778<&*2II59*I'/I9689675)I74:64;24@'I7=:(1I7;'/I(2I:=:(I7)I489;3::(I'.I8)I)I4:737<58=&*9I8)I8><(I'I78793957'0I49(I;'H7(I84'H967(I7:497.466'I54(I2'58:7;55:58:8'H85; NM:i:2 MD:Z:10^G163 oR:Z:1 oH:i:1 oP:i:7789 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.901 16 1 7790 255 10M1D146M1I17M * 0 0 GATCGATTACGGATAGCCCCCTGCCTTTAGCTGCGAATCTCAGTATGGCGCGGGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTCGTAGTAGTGTATAACTC ;57?:='H43,I778<&*2II59*I'/I9689675)I74:64;24@'I7=:(1I7;'/I(2I:=:(I7)I489;3::(I'.I8)I)I4:737<58=&*9I8)I8><(I'I78793957'0I49(I;'H7(I84'H967(I7:497.466'I54(I2'58:7;55:58:8'H85; NM:i:2 MD:Z:10G163 oR:Z:1 oH:i:1 oP:i:7789 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.902 0 1 1807 255 189M1I14M * 0 0 AGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATACAGGTGTACCTGGA 358716=::5;:I'67684I(97I/'I0'H'86;I;+&58;5I(:F'I)I):G'549I*9879I)I(77274<73579I(I(775G'I.&:I(<;<I(;5688I(48I'I(877I'9<8I(69;7:I(9I(3E&16=I(855I'48537766I)988<I at -'7:I(9545::@?E&8G'8I.'I.&499(47I(466:G'8H'7 NM:i:1 MD:Z:203 oR:Z:1 oH:i:1 oP:i:1806 [...]
-simulated.903 16 1 7466 255 1M1I60M1D79M1D7M1I37M * 0 0 CACCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGATGATAGTCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTC 57+I'.I::65578'I3:'H5'0I(I'G44'I)I78489:847'/I8892'F(1I37&-I'I,I96(I)I'G&F1=57;2(I7:(I)I9687'I66=67(I6(I5(I)I585'H4:7(I74(I0'I(I5'I5:8:55;:26B89<<56':8'H5196'G7(I)I6;5>78:83:8)I'0I7)I466 NM:i:4 MD:Z:61^T79^A44 oR:Z:1 oH:i:1 oP:i:7463 oS:A:R XE:i:4 X [...]
-simulated.904 0 1 5380 255 80M1I51M1D58M * 0 0 ACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACTAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTG 6787;I)84I)6<7:667I(7<8I.&665:7H'6G'5I.'7I(;<II3+'5:89;I(;8<68688I*;9I(;193<7I'1&:7898::8D&I)364I(6I)545;35I(H'7G'6=6<6I(63461647I(9I,8;I)54I,&I0';728:H':5>I-&;;H'H'I0'9I(66:5I'9I)896I'6788: NM:i:2 MD:Z:131^A58 oR:Z:1 oH:i:1 oP:i:5379 oS:A:F XE:i:2 XS:i: [...]
-simulated.905 16 1 3895 255 17M1I41M1I118M1D16M * 0 0 ATGATCGTGCCGGTAATCGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCGATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTGGATACGGGATCGG 742:9:83='G(I<)I;)637786:7569(2I967=*I4<;9)I56&.I79&E&.I6:9%=95788)I'H5<65::659<788'/I8&E8;(I68>:'G4::7769)I5'I37(I9477769(2I',>I9'I/96786568'H98&-I&*8I788767'.I'G9(I'I'H2=86<955,I'I9;88&.I595(I NM:i:3 MD:Z:176^T16 oR:Z:1 oH:i:1 oP:i:3894 oS:A [...]
-simulated.906 0 1 8502 255 66M1D125M * 0 0 GCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGT >3:34G'6755I(:8E&7I)3:F'8I.&:255I)2I)9=48<;8I(H'7:=39H'I(II1)&6;77I7*37E&94:6I-&8I.&6I)7I+9296G':I';54I)7I(458I<,&I1'I)876:7I>,'6658636I/'7978=:88:6819H'4F'843I(9H'648I.&8I)9I'::I(948H'I'I*67 NM:i:1 MD:Z:66^A125 oR:Z:1 oH:i:1 oP:i:8501 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.907 16 1 7614 255 93M1D29M1I28M1D9M1I35M * 0 0 GCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGACCAGAATGCCTTCACTCAAGCAGGTCGAGTGAAGGTTATAGGCTGATCTGGCCGGCATTCTCGGGGACAACCCAACCTAGTGGATCGATTACGGGATAGCCC @;8)I885=*I6'G(I99949349586)I'/I7(I5;'I6&.I&E;9:88887788(I548(I8;&-I6;7:7'/I/;5'H6:'H9986:6'ID'H75(I9;'I'G4268<(I7=8)I6668&87'G*I(I367&E75=3:<<'I'H(I56+I9<4',>I&;(I'0I'I'F2569'I88::8'F87&.I4967&.I NM:i:4 MD:Z:93^A57^T44 oR:Z:1 oH:i:1 oP:i [...]
-simulated.908 0 1 3063 255 26M1D19M1I148M1I3M * 0 0 TTTGATCTGTGCTTTCCACGGGACAACCCTTGACGTATGTCTTCCTAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTTAT I/'6099=;446I-&F'7;I/'7<G'I5)I)6736:55446H'I(%I(I)695969?853;6G'884I/'4:85;538I1(II2*&96;4;7477I'36384:9;6H'379I(568?0I'67I)664I)I/'8;I)I'8I'657I3(74I1'G'H'I)I)33IA-'5889I(IH0)%9I';5I.&>84I;+&H'F'29 NM:i:3 MD:Z:26^C170 oR:Z:1 oH:i:1 oP:i:306 [...]
-simulated.909 16 2 97 255 94M1D100M * 0 0 AAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTAC 'I758(I(I57<78<9>;7'I?(2I87'H(I&-I667<7358&.I9;6;34(I5'0I;)I8389:(I'I4;&,<I(I:87'H(1I(I'I85*I5+I'I6:73'I9'H8(I'G68955943(I76;(I9)I'.I4=&+:I(I8(I>'H(I7:499&-I'H608::954965893(I>5(I&-I9;45,I78(I;9 NM:i:1 MD:Z:94^G100 oR:Z:2 oH:i:1 oP:i:96 oS:A:R XE:i:1 XS:i [...]
-simulated.910 16 1 8346 255 128M1D98M * 0 0 ACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAAT ='I5;4'I)I7;(3I43<(I6::9=66(I868)I8;796<676:665:98466(I<9(I<9<(I45573384>9'I7278(I'H68(I59<;@'I:9'I84;5=(I785(I878:8'G'I464:<7'GD&-I699'/I16(I=7'H967;892291=<;9(I7478'G59)I4(I58(I9'.I95>5(I7'H<994678(I(I88968(I'H&*2II63:: [...]
+simulated.903 16 1 7466 255 1M1I60M1D79M1D7M1I37M * 0 0 CACCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGATGATAGTCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTC 57+I'.I::65578'I3:'H5'0I(I'G44'I)I78489:847'/I8892'F(1I37&-I'I,I96(I)I'G&F1=57;2(I7:(I)I9687'I66=67(I6(I5(I)I585'H4:7(I74(I0'I(I5'I5:8:55;:26B89<<56':8'H5196'G7(I)I6;5>78:83:8)I'0I7)I466 NM:i:4 MD:Z:61T79A44 oR:Z:1 oH:i:1 oP:i:7463 oS:A:R XE:i:4 XS: [...]
+simulated.904 0 1 5380 255 80M1I51M1D58M * 0 0 ACTGTCCTGAACTCAGATAAGACGGGTGATGCCAGGTGGGTGGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACTAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTG 6787;I)84I)6<7:667I(7<8I.&665:7H'6G'5I.'7I(;<II3+'5:89;I(;8<68688I*;9I(;193<7I'1&:7898::8D&I)364I(6I)545;35I(H'7G'6=6<6I(63461647I(9I,8;I)54I,&I0';728:H':5>I-&;;H'H'I0'9I(66:5I'9I)896I'6788: NM:i:2 MD:Z:131A58 oR:Z:1 oH:i:1 oP:i:5379 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.905 16 1 3895 255 17M1I41M1I118M1D16M * 0 0 ATGATCGTGCCGGTAATCGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCGATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTGGATACGGGATCGG 742:9:83='G(I<)I;)637786:7569(2I967=*I4<;9)I56&.I79&E&.I6:9%=95788)I'H5<65::659<788'/I8&E8;(I68>:'G4::7769)I5'I37(I9477769(2I',>I9'I/96786568'H98&-I&*8I788767'.I'G9(I'I'H2=86<955,I'I9;88&.I595(I NM:i:3 MD:Z:176T16 oR:Z:1 oH:i:1 oP:i:3894 oS:A: [...]
+simulated.906 0 1 8502 255 66M1D125M * 0 0 GCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGT >3:34G'6755I(:8E&7I)3:F'8I.&:255I)2I)9=48<;8I(H'7:=39H'I(II1)&6;77I7*37E&94:6I-&8I.&6I)7I+9296G':I';54I)7I(458I<,&I1'I)876:7I>,'6658636I/'7978=:88:6819H'4F'843I(9H'648I.&8I)9I'::I(948H'I'I*67 NM:i:1 MD:Z:66A125 oR:Z:1 oH:i:1 oP:i:8501 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.907 16 1 7614 255 93M1D29M1I28M1D9M1I35M * 0 0 GCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGACCAGAATGCCTTCACTCAAGCAGGTCGAGTGAAGGTTATAGGCTGATCTGGCCGGCATTCTCGGGGACAACCCAACCTAGTGGATCGATTACGGGATAGCCC @;8)I885=*I6'G(I99949349586)I'/I7(I5;'I6&.I&E;9:88887788(I548(I8;&-I6;7:7'/I/;5'H6:'H9986:6'ID'H75(I9;'I'G4268<(I7=8)I6668&87'G*I(I367&E75=3:<<'I'H(I56+I9<4',>I&;(I'0I'I'F2569'I88::8'F87&.I4967&.I NM:i:4 MD:Z:93A57T44 oR:Z:1 oH:i:1 oP:i:7 [...]
+simulated.908 0 1 3063 255 26M1D19M1I148M1I3M * 0 0 TTTGATCTGTGCTTTCCACGGGACAACCCTTGACGTATGTCTTCCTAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTTAT I/'6099=;446I-&F'7;I/'7<G'I5)I)6736:55446H'I(%I(I)695969?853;6G'884I/'4:85;538I1(II2*&96;4;7477I'36384:9;6H'379I(568?0I'67I)664I)I/'8;I)I'8I'657I3(74I1'G'H'I)I)33IA-'5889I(IH0)%9I';5I.&>84I;+&H'F'29 NM:i:3 MD:Z:26C170 oR:Z:1 oH:i:1 oP:i:3062 [...]
+simulated.909 16 2 97 255 94M1D100M * 0 0 AAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTAC 'I758(I(I57<78<9>;7'I?(2I87'H(I&-I667<7358&.I9;6;34(I5'0I;)I8389:(I'I4;&,<I(I:87'H(1I(I'I85*I5+I'I6:73'I9'H8(I'G68955943(I76;(I9)I'.I4=&+:I(I8(I>'H(I7:499&-I'H608::954965893(I>5(I&-I9;45,I78(I;9 NM:i:1 MD:Z:94G100 oR:Z:2 oH:i:1 oP:i:96 oS:A:R XE:i:1 XS:i: [...]
+simulated.910 16 1 8346 255 128M1D98M * 0 0 ACCGTGTTAATCTTTGTCGGTCACGACGGCTGCCATCTCACGCGCGCACGTCTCCGTCCACGAAGTATGCATCATTGTCGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAAT ='I5;4'I)I7;(3I43<(I6::9=66(I868)I8;796<676:665:98466(I<9(I<9<(I45573384>9'I7278(I'H68(I59<;@'I:9'I84;5=(I785(I878:8'G'I464:<7'GD&-I699'/I16(I=7'H967;892291=<;9(I7478'G59)I4(I58(I9'.I95>5(I7'H<994678(I(I88968(I'H&*2II63:: [...]
simulated.911 16 1 314 255 98M1I101M * 0 0 CGACAATGCCCGATCTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATACGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAG 8<87(I:6'1I8:5>276+I468&E859939'-?I64;>=(I&.I787(I1(I<'I7'0I78=56716&*2II8)I(I8388'0I(2I=635:6<9=4'(I)I'0I595753<:4(1I(I:89(I64)I8:&-I'G9886957)I81:(I>;8938(I77=757268'G<;(I3'I(I'H86&+;I593A48;'I39)I: NM:i:1 MD:Z:199 oR:Z:1 oH:i:1 oP:i:313 oS:A:R X [...]
simulated.912 16 1 6037 255 211M * 0 0 GACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACG 739:2*I'G58(I:5;(1I76767:><98:6637'I747348'0I9'G8453575'H8(I5>;'H5844&*2II4&*7I496'I1;2'/I'I:5864979;95;(I7&,<I'0I;88;9:=(I8>40(I96'.I757&.I474:588844478<28975(I263(I8=4'I07'G7'.I75464:(I6=676:6949:794'/I5::(I82 NM:i:0 MD:Z:211 oR:Z:1 oH:i:1 [...]
-simulated.913 16 1 74 255 2M1I39M1D123M1D31M * 0 0 AGACTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGTAGCCGGCACCGGCCCGGCTAACAGC :6&6(I7(I6:89'I7&.I'H64889'I>757'I8<5;:<(I)6I8;:25'I88953578(I;84:'0I2484669'H(I88'1I595565(I'.I;6'I477<7:)I8=67)I7(I85'G)I55'H'I6(I3=<87:37;(I6'I7'I(I5:6(I(I5774:)I',5II3<8)I'I5:'I'G'/I(I70)I57=9 NM:i:3 MD:Z:41^C123^G31 oR:Z:1 oH:i:1 oP:i:73 o [...]
+simulated.913 16 1 74 255 2M1I39M1D123M1D31M * 0 0 AGACTTGCCGCTGAATGGGAACATCGCCGACGTTAGAGATGGCCCAGACAGGCATATCGTAAGTGATTTCGTAGCGAACCTACCCAGCTCTAAGGGTCGGTATGATCCAGTAGGTCCACGGAATCAAGGCGGCTCATGCGTGGATTGCCTTGACTTCCGTAGCTTGGGGGTAGCCGGCACCGGCCCGGCTAACAGC :6&6(I7(I6:89'I7&.I'H64889'I>757'I8<5;:<(I)6I8;:25'I88953578(I;84:'0I2484669'H(I88'1I595565(I'.I;6'I477<7:)I8=67)I7(I85'G)I55'H'I6(I3=<87:37;(I6'I7'I(I5:6(I(I5774:)I',5II3<8)I'I5:'I'G'/I(I70)I57=9 NM:i:3 MD:Z:41C123G31 oR:Z:1 oH:i:1 oP:i:73 oS: [...]
simulated.914 0 1 6267 255 38M1I13M1I172M * 0 0 TCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTACAGTAGACCTGTGTCTCGGAGACAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTG 8<6I.'7H'2:I9+&8H'I0';55659I(B<882;;B9'09:487 at I(=>7<&8:<I(8765I0'962747F&I(I1(I(67I(99=<II5,'I(<3I(I(I)2640=;7I(6;2I2(2I(I/'I'98H'7579495I'39534991:I(I-&I'76;>I.':5;I(7:I(:94I at -'6=I'8:I(I)E&797G'48I(426I(=5265883I(;435 [...]
-simulated.915 0 1 6851 255 187M1D20M * 0 0 ACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGAACGTGCACGACTCACC :2667I(7>6I(7<I.'8953I(I(I1(;:G'G'9I';I)74H'472I(;6E&9I)I)931879I(757I0'I1'I);I/'76I.&:79877I(2959741I(6:I0'6I(:78;87644I(:I';3:;I*H';:6::488I'2:996I/'6=F&978I)7I)<I'76:35I'F&5I.'G'2>I(64I6*I(56568889=65:8I( NM:i:1 MD:Z:187^G20 oR:Z:1 oH:i:1 [...]
-simulated.916 0 1 2950 255 132M1D35M * 0 0 CCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGACAACCCCTTGACGTATGTCTTCCAATTATCGT I(56I(4=88I(4I(729?:34H'7I(5>:;7586I)941>76I1'3I.&:F&4I(I)I(39<I(8I(=6;7;7<?;9942I);8:77I(I*H'7I.&68;I(489;3I(8I)I3(84:89<578I0'I(78I,37I(I=,'H'9<>:752745I'I)I(I)8838: NM:i:1 MD:Z:132^G35 oR:Z:1 oH:i:1 oP:i:2949 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.915 0 1 6851 255 187M1D20M * 0 0 ACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGGCCCTTCTTTAGTTTCTCGCTAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGTTAGCAGATGCCTAGCAGGGTCTTGACGGTAATAATGCGTGGTTCAAAGGACTTACGGGAACGTGCACGACTCACC :2667I(7>6I(7<I.'8953I(I(I1(;:G'G'9I';I)74H'472I(;6E&9I)I)931879I(757I0'I1'I);I/'76I.&:79877I(2959741I(6:I0'6I(:78;87644I(:I';3:;I*H';:6::488I'2:996I/'6=F&978I)7I)<I'76:35I'F&5I.'G'2>I(64I6*I(56568889=65:8I( NM:i:1 MD:Z:187G20 oR:Z:1 oH:i:1 [...]
+simulated.916 0 1 2950 255 132M1D35M * 0 0 CCAGAACGATAAGCCAGTCGCTGGCTTCACGCTGTCCTGTCATAAATAAAGCCTAACCTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGACAACCCCTTGACGTATGTCTTCCAATTATCGT I(56I(4=88I(4I(729?:34H'7I(5>:;7586I)941>76I1'3I.&:F&4I(I)I(39<I(8I(=6;7;7<?;9942I);8:77I(I*H'7I.&68;I(489;3I(8I)I3(84:89<578I0'I(78I,37I(I=,'H'9<>:752745I'I)I(I)8838: NM:i:1 MD:Z:132G35 oR:Z:1 oH:i:1 oP:i:2949 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.917 0 1 3049 255 12M1I26M1I175M * 0 0 TCTTATGTCTTCGAATTTGATCTGTGCTTTCCACGGGACTAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTATCC <7D&5878:I'5(I(I0'6<1;896;9I/'I(29I-&9:%I(I8*&I(6<;:69;75;I)I(I)I(54<44:549779H'772I0'9:596677I.'II1*&:9388;787F'<7428:686I(6=6I(8732<I*54I(799I(I/'7;I'I(6I'745I,&<9I0'H'I(I(I'46I;+&<345I)II4+'BG';4I1':84I;+&I)9?9I( NM:i:2 MD:Z: [...]
simulated.918 0 1 3842 255 192M * 0 0 TGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAAATGCATGAGTAATTGACTGCGTCGCGCGGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGCCACACAGCTC 7G'I,&I'9I)77:8377644I';I(4I(5;;9785I*6I(675:7<1II8-(%;587572:I'I)8I(64773;880897I1(0;85I(5;88I'19I-&7<I(I0'81:578447I'I)<247;85536591I.&7I(;7H'86;3H'9:87:85I';I(83I(979856>I.'I;+&4G'6::9888:6 NM:i:0 MD:Z:192 oR:Z:1 oH:i:1 oP:i:3841 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.919 0 1 4463 255 94M1D111M * 0 0 CACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAA 869:I(8<86987;5I(I(I)67:7:I3(0I1(I0'H'7I:+&79>6I);I(=0;4<67884I-&8I(7:G'I*<66:85I'96E&84<29568I,4I(7788=68E&;<516;6G'I'79I(:I.&;=96I*:3756588;66I(I0'586I0'398F'I)3I(528I(77747548I';I0'4I)::>6G'95I(@:743I1( NM:i:1 MD:Z:94^T111 oR:Z:1 oH:i:1 oP: [...]
-simulated.920 0 2 51 255 8M1I107M1I42M1D19M1D7M * 0 0 GAATAGCACGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGTCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAGAGCATCGTTCGTCCTGGTTGTCCC 9I(7;6<4&I0'78F&9556I(:9927;7<6I(2=2557849I)8I(F&876I(I':6855;197:I*:I0'96I(H'I/'6896491:I/'<::837I(;I.&5I':956=I(I(*95I9*&I'688I)I0'I'I)>9D&6I.&I(75;2I(9F'7I)B:0;3666<I'86;I)<I(I,87I-& NM:i:4 MD:Z:157^A19^T7 oR:Z:2 oH:i:1 oP:i:50 oS:A:F XE:i:4 XS:i:0 XI:i:0
-simulated.921 16 1 762 255 142M1D68M * 0 0 GCATGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGA 77?:)I(I8'/I&-I'I:<67&-I5347774&+:I498<8849836649869'0I<69869735<7(I658;<37713756<6(I6:97?>9;>9(I:(I(I=:'I6>8'G9'G4(I'0I(I5;:8:;(I'I86:;8(I664)5I>'H866749;77794&+;I'I698<&-I'H98'/I48'I1;7=694740:58:;96;8(I8>7:2 NM:i:1 MD:Z:142^A68 oR:Z:1 [...]
+simulated.919 0 1 4463 255 94M1D111M * 0 0 CACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAA 869:I(8<86987;5I(I(I)67:7:I3(0I1(I0'H'7I:+&79>6I);I(=0;4<67884I-&8I(7:G'I*<66:85I'96E&84<29568I,4I(7788=68E&;<516;6G'I'79I(:I.&;=96I*:3756588;66I(I0'586I0'398F'I)3I(528I(77747548I';I0'4I)::>6G'95I(@:743I1( NM:i:1 MD:Z:94T111 oR:Z:1 oH:i:1 oP:i [...]
+simulated.920 0 2 51 255 8M1I107M1I42M1D19M1D7M * 0 0 GAATAGCACGGGCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGTCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAGAGCATCGTTCGTCCTGGTTGTCCC 9I(7;6<4&I0'78F&9556I(:9927;7<6I(2=2557849I)8I(F&876I(I':6855;197:I*:I0'96I(H'I/'6896491:I/'<::837I(;I.&5I':956=I(I(*95I9*&I'688I)I0'I'I)>9D&6I.&I(75;2I(9F'7I)B:0;3666<I'86;I)<I(I,87I-& NM:i:4 MD:Z:157A19T7 oR:Z:2 oH:i:1 oP:i:50 oS:A:F XE:i:4 XS:i:0 XI:i:0
+simulated.921 16 1 762 255 142M1D68M * 0 0 GCATGGTTATTTAAAGGCTATCCCGTGACTACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCCTTCTCAGACCTTCTCTGTTCATAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGA 77?:)I(I8'/I&-I'I:<67&-I5347774&+:I498<8849836649869'0I<69869735<7(I658;<37713756<6(I6:97?>9;>9(I:(I(I=:'I6>8'G9'G4(I'0I(I5;:8:;(I'I86:;8(I664)5I>'H866749;77794&+;I'I698<&-I'H98'/I48'I1;7=694740:58:;96;8(I8>7:2 NM:i:1 MD:Z:142A68 oR:Z:1 o [...]
simulated.922 0 1 6512 255 206M * 0 0 ACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACACTAAGATCTGGCAC 79967>I1'9887>76I*79<83;6<B9:G'8=96685I*4E&759859I.&95I(I(5I(9I)9893I(7659II2*&I0'8G'7794662G'I'I'<I(5I(84A93998I(6:<;378I(6886I(I.&7I(489I'I'F&877H'I/'<284989487823I)I*:<5<2:3:1:6::I(7I)I(4648:I'96668E&;96 NM:i:0 MD:Z:206 oR:Z:1 oH:i:1 oP:i:6511 [...]
-simulated.923 16 1 5898 255 82M1I40M1I79M * 0 0 AGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGTCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGTAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCAT 9+I8795(I8279767(1I*I&*9I96'0I<;4&*8I9(I)I(I'I88::9:95>'I73;<(I9(I<)I6'G4'/I7:)I(I)85763;(I:542:143'0I6'H(I6'.I:6=6997'- at I8&(1I8%(-7II48/9;548996>'H'I97'H93:(1I5354>6=56579;96'G?5:9;7(2I?'G:8=58<;'G4(I38 NM:i:3 MD:Z:0G200 oR:Z:1 oH:i:1 oP:i [...]
-simulated.924 0 1 8803 255 80M1D104M * 0 0 ATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGA 778I(I(9;;<36I(37<95995=I(<I)F&8I'II2*&66G'57;9:1I'I1(5H'I1(548I(7<886H';5I(3I0'I,G'677658798I)6I)37I(7673?40;5>96I8*&98I)I'G'I(G';45579=65G'5I'H':7I)3I(696I*I(>:F'=I6)49<20H'<89868999 NM:i:1 MD:Z:80^C104 oR:Z:1 oH:i:1 oP:i:8802 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.925 16 1 8548 255 74M1I89M1D35M * 0 0 GGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAACGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAG 'G58<9;(I'I&*1II7676',>I7:(I6;67'/I6(1I=)I8'I7:66(I:(I778(I6)I9B9&,<I'0I(I&6;884',<I5815845&-I96;=844423458+I5'H479(I:(I46>'0I8(I;(I8>)I6:9)I(I)I7;7',<I)I6>'0I(I&.ID:'H&.I'1I'H)4I7868797=7&,I6)I>9'F; NM:i:2 MD:Z:163^G35 oR:Z:1 oH:i:1 oP:i:8547 [...]
-simulated.926 0 1 3225 255 10M1D81M1D100M1D21M * 0 0 CCCCGCTATTAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTCCCGACTAACATCGTGACT I9*&6733I(IC.(=I(A9I0'5=4I;+&H'845F&7F&I?-':5:G'67667I'G'5I*8I)65I-&87I(8786:5:9447I*5I'I(?I6)8I'H'3616I(60I(I(6;:I0'4;48I;+&4I'68I(I)4=376I;+&I(I(7I0'5134<I(3553698I.&97H'I)=5;87<I(557:6:9I(I,I0';=43H'46;;9;8<26 NM:i:3 MD:Z:1 [...]
-simulated.927 16 1 2128 255 28M1D152M * 0 0 GGTAAATTGTGAAATTACAATGAACCTTGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCC (I>&.I(I53;(1I'H8>(I3:(I(I'H)5I4)I17(I'0I)I5:69(I7867=='F82'I?3396(I875'0I'I97%(.8II483:&+:I678;'G25;8583<2876459(I;7'.I4;:=(I34<:7353966496)I'G607(1I9'G5579:58(I8:87;4<(I;627'G8(I NM:i:1 MD:Z:28^G152 oR:Z:1 oH:i:1 oP:i:2127 oS:A:R XE:i:1 XS:i:0 XI:i:0
-simulated.928 16 1 4793 255 99M1D2M1D78M1D15M * 0 0 ATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGCGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTGCCGTGCATTACTG 98'FA8:'I?9(I*I8<'F'.I85'/I867&.I(I9(I&*2II7:87:(I9)I'H:6'I50)I89(I83686(1IA5(I96:6698>4;4(I8'0I678D9*7I5842;'I5<'H(I5:)I(I4306:89'I/84'G'I42957588;555)I2&E4<88'F?16'H5'/I(I'H>948C5'G55755)I917< NM:i:3 MD:Z:99^G2^G78^T15 oR:Z:1 oH:i:1 oP:i:4792 [...]
-simulated.929 0 1 7119 255 170M1D34M * 0 0 GGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTAACATAGTTATTAGCCCATGTTCGACCGGGT I/'4I)I1(77I)87I(I(>I.&I.&739I'9I)4647I(59H'49974784:3I)I1(7I/'8965I(I(99877747652658846>458I(9I(989I0';957I'479I(:43E&8H'F&648H'5:3938866439I7*&<8G'<I(8678::56H'I(37H'87I5)I(9;60:I'4G'<4I-&=57I)587I'I/'5 NM:i:1 MD:Z:170^T34 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.930 0 1 8457 255 67M1D54M1I46M1I17M * 0 0 TGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCGAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGTCGTTTTGCGACGCAAAG 38796F'I'586994I'H'I0'58:I-&8;I(58I(668298=9<998:<I)=8::I(:7G'8I)76D5I/'74:;F'3I(86<<249I(G'7<@86I(I(II0)&6538I<,&23I)82:%/I/'3I.&:G'9F'24:8I(7I)4;4H'=H'76>I7*&I1(I(6;<&8<IA-'37677:=I/'5 NM:i:3 MD:Z:67^G117 oR:Z:1 oH:i:1 oP:i:8456 oS:A:F XE:i:3 XS:i:0 XI:i:0
+simulated.923 16 1 5898 255 82M1I40M1I79M * 0 0 AGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGTCAGCTCTTACGTAGTCTTTGCCGGATTTCTGAGTGAAAAGTAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCAT 9+I8795(I8279767(1I*I&*9I96'0I<;4&*8I9(I)I(I'I88::9:95>'I73;<(I9(I<)I6'G4'/I7:)I(I)85763;(I:542:143'0I6'H(I6'.I:6=6997'- at I8&(1I8%(-7II48/9;548996>'H'I97'H93:(1I5354>6=56579;96'G?5:9;7(2I?'G:8=58<;'G4(I38 NM:i:3 MD:Z:G200 oR:Z:1 oH:i:1 oP:i: [...]
+simulated.924 0 1 8803 255 80M1D104M * 0 0 ATGTTAATACGTGAACAGTGCTACAAGCCAATGGAAAAAGATTCATAGCAAGGGCTTAAATGATTACTGTAAGTAATGGGCCAAGTACACGTATTGTTCAGGTCTGCTATCGAGCCCCTAGGAACCGGTTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGA 778I(I(9;;<36I(37<95995=I(<I)F&8I'II2*&66G'57;9:1I'I1(5H'I1(548I(7<886H';5I(3I0'I,G'677658798I)6I)37I(7673?40;5>96I8*&98I)I'G'I(G';45579=65G'5I'H':7I)3I(696I*I(>:F'=I6)49<20H'<89868999 NM:i:1 MD:Z:80C104 oR:Z:1 oH:i:1 oP:i:8802 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.925 16 1 8548 255 74M1I89M1D35M * 0 0 GGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAACGTGCGTTTTGCGACGCAAAGTAGCACGTACGTAAGTTGCAGGTCCGTGAAACTTGCCGCAATAGTTGGTTGTCGGGGCCAGCCCTTAAAGATTGGGCCCAAGGGCTGCTACTGCCCAGGACAAG 'G58<9;(I'I&*1II7676',>I7:(I6;67'/I6(1I=)I8'I7:66(I:(I778(I6)I9B9&,<I'0I(I&6;884',<I5815845&-I96;=844423458+I5'H479(I:(I46>'0I8(I;(I8>)I6:9)I(I)I7;7',<I)I6>'0I(I&.ID:'H&.I'1I'H)4I7868797=7&,I6)I>9'F; NM:i:2 MD:Z:163G35 oR:Z:1 oH:i:1 oP:i:8547 o [...]
+simulated.926 0 1 3225 255 10M1D81M1D100M1D21M * 0 0 CCCCGCTATTAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTCCCGACTAACATCGTGACT I9*&6733I(IC.(=I(A9I0'5=4I;+&H'845F&7F&I?-':5:G'67667I'G'5I*8I)65I-&87I(8786:5:9447I*5I'I(?I6)8I'H'3616I(60I(I(6;:I0'4;48I;+&4I'68I(I)4=376I;+&I(I(7I0'5134<I(3553698I.&97H'I)=5;87<I(557:6:9I(I,I0';=43H'46;;9;8<26 NM:i:3 MD:Z:1 [...]
+simulated.927 16 1 2128 255 28M1D152M * 0 0 GGTAAATTGTGAAATTACAATGAACCTTGGGACCTCAATTTGGTACGTTCGACTATTATAACTGAGTTGAGCCCTTCATTTTTTGTAGCCCCATCACCAGCGCAGTACTATCGTTGTAAAGATCTTGCACGTAGACTACTGGCCTAGCCCTAATCTACGCAACACAGACGGTACGAAGCC (I>&.I(I53;(1I'H8>(I3:(I(I'H)5I4)I17(I'0I)I5:69(I7867=='F82'I?3396(I875'0I'I97%(.8II483:&+:I678;'G25;8583<2876459(I;7'.I4;:=(I34<:7353966496)I'G607(1I9'G5579:58(I8:87;4<(I;627'G8(I NM:i:1 MD:Z:28G152 oR:Z:1 oH:i:1 oP:i:2127 oS:A:R XE:i:1 XS:i:0 XI:i:0
+simulated.928 16 1 4793 255 99M1D2M1D78M1D15M * 0 0 ATCCGTGTTCTAAGGCGTTAAAGCAAACGATTTAAGCCAAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGCGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTGCCGTGCATTACTG 98'FA8:'I?9(I*I8<'F'.I85'/I867&.I(I9(I&*2II7:87:(I9)I'H:6'I50)I89(I83686(1IA5(I96:6698>4;4(I8'0I678D9*7I5842;'I5<'H(I5:)I(I4306:89'I/84'G'I42957588;555)I2&E4<88'F?16'H5'/I(I'H>948C5'G55755)I917< NM:i:3 MD:Z:99G2G78T15 oR:Z:1 oH:i:1 oP:i:4792 oS: [...]
+simulated.929 0 1 7119 255 170M1D34M * 0 0 GGGACCTTTAGAATGTTCCGTTTCCCGTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTAACATAGTTATTAGCCCATGTTCGACCGGGT I/'4I)I1(77I)87I(I(>I.&I.&739I'9I)4647I(59H'49974784:3I)I1(7I/'8965I(I(99877747652658846>458I(9I(989I0';957I'479I(:43E&8H'F&648H'5:3938866439I7*&<8G'<I(8678::56H'I(37H'87I5)I(9;60:I'4G'<4I-&=57I)587I'I/'5 NM:i:1 MD:Z:170T34 oR:Z:1 oH:i:1 oP:i:7 [...]
+simulated.930 0 1 8457 255 67M1D54M1I46M1I17M * 0 0 TGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCGAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGTCGTTTTGCGACGCAAAG 38796F'I'586994I'H'I0'58:I-&8;I(58I(668298=9<998:<I)=8::I(:7G'8I)76D5I/'74:;F'3I(86<<249I(G'7<@86I(I(II0)&6538I<,&23I)82:%/I/'3I.&:G'9F'24:8I(7I)4;4H'=H'76>I7*&I1(I(6;<&8<IA-'37677:=I/'5 NM:i:3 MD:Z:67G117 oR:Z:1 oH:i:1 oP:i:8456 oS:A:F XE:i:3 XS:i:0 XI:i:0
simulated.931 0 1 4612 255 209M * 0 0 GTACTTTGTGTTGGCAATCAGGTGACGACGAAGTTTCGGCACAGGTGCCGCATCAAATAGTGTAACTTCACATGGGTTCTCAACGCGATAAAGCGCCTTCGTATCCTATCTTTCGCTCCGCTTATCCCCCAAACCTCCTCATGGAGCTAAGCTAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCAAAC 7561I0'76;F'I)8I(894I(3:69195<I(8I-&5I(<9:8I(62I'967;3I1(48579:I'7I(84248I-&H'875I(9<7:<;I2(=39H'I(:518=I(788:I.'6367G'5<I)9;II1*&I.'I)0I*7596I)98;8I)6<6677?4II2*&574:G'3774I(47:I at -'6I':.8I)46H'I(8=I'I0';5I2(9 NM:i:0 MD:Z:209 oR:Z:1 oH:i:1 oP:i [...]
-simulated.932 16 1 8450 255 55M1I122M1D18M1I14M * 0 0 GGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTCGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTGCGACGCAAAGTAGCGACGTACGTAAGTTG (I6;9)I9984?(I'G699<79'G(I(2I745'/I65(I69'H8696<7776934(97)I;498(I69&D:'H>2'I7&.I77=0(I9(I93>9546)I'I6817?)I'I'+4II0;55&+;I68'I5:76&-I5(1I3(I5(I7475(I7'I5;9'G9(I969&+:I&-I*I36;6;)6I53:?6;?(1I;-297&75882694(I:'I5 NM:i:3 MD:Z:17 [...]
+simulated.932 16 1 8450 255 55M1I122M1D18M1I14M * 0 0 GGAGAGGTGCGTAACCGCAGTCTTCCAAATATCCCGTGGTCAATAGTATGCAGCTCGTGGTACATTCTGGTGGCTGGATTTGTACTTGAAGACTACGAAGGATCATCCGGCCCCCGCTCAAAATACCATCAGGGCTTTCGGTCCGCTCTTAGGCAGAAGTTCGTAAAACCCAAGTGCGTTTGCGACGCAAAGTAGCGACGTACGTAAGTTG (I6;9)I9984?(I'G699<79'G(I(2I745'/I65(I69'H8696<7776934(97)I;498(I69&D:'H>2'I7&.I77=0(I9(I93>9546)I'I6817?)I'I'+4II0;55&+;I68'I5:76&-I5(1I3(I5(I7475(I7'I5;9'G9(I969&+:I&-I*I36;6;)6I53:?6;?(1I;-297&75882694(I:'I5 NM:i:3 MD:Z:17 [...]
simulated.933 0 1 4945 255 211M * 0 0 TGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCCACGTATGACTAATGCA 4I(7I(;8=8E&:91H'5I1(I(I(99;<I':I'68859I(45:94F'=;71I(67<676:I1'7I.&9;76=;9F';99I(78I'4:I0':II?1+';I9+&I)9739;96:H':66I-&;7I(544I(7;426I'31I(8777I(9<4=24456I(:8 at 8<I'977E&76I(I(8I-&8I(:8>8=9II9.)&76:9853:::G'35?8 NM:i:0 MD:Z:211 oR:Z:1 oH:i:1 [...]
-simulated.934 0 1 3540 255 12M1D202M * 0 0 TGGGCCGTCACACCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAG 8I/'I)9:4;77I5)997I/'I(H'36I(;56374I(I*I(I(;6I(56I1(;992I)I)I(I'77846;7I.':I(8<F':9I(7I8*&96778:I'68:9I)78I(:795:65I(468I(8I'I<,&:8I(9I'568F'I.&I8*&87;55I'G'=4:I'94878:=I(<7E&7A37I'I'I)89I0'56I(I1(I1'H'8E&<8I/'7996 NM:i:1 MD:Z:12^C202 [...]
-simulated.935 16 1 4220 255 7M1I64M1D17M1D102M * 0 0 CAGAGAGTAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGACTAGCGCTCCTTTAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGC 766<78<':678658'H'/I8&.I*I(I(I6;516:74;4<6<55(I(1I82)I:;85'I5'I)I36'0I;9)5I9778966<5(I&.I,I:8;)I3889)I(1I:6978<49;:4(I8'H(I999'I8)I<(I(I862:*I855(I878745'H3799)I;;8&-I=65876565::3825323&)1II5 NM:i:3 MD:Z:71^G17^A102 oR:Z:1 oH:i:1 oP:i:4219 oS:A:R [...]
-simulated.936 0 1 5937 255 49M1I19M1I19M1D127M * 0 0 ATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCGTTACGTAGTCTTTGCCGGAGTTTCTGAGTGAAAAGAAAGCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTC ;I(I(I(895598:;9I(5:66I(8I(9I(;I'8I.&95H'I(3678:3&I)29492 at 6:I0'6I(H'5'I1'464@:87ID.(9I.'7II6,(;:6<<79;3843F'I(66I(75=I1'33C<<8:368:8<95E&;=7;76I2(9H'5.89:;7I):I(69<I(0:29IG0)%0I:+&6:6I(8=9I-&I(51;35;624862I'9I9*&I0'5 NM:i: [...]
+simulated.934 0 1 3540 255 12M1D202M * 0 0 TGGGCCGTCACACCCGACTTTGGTTCATTGCTCGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAG 8I/'I)9:4;77I5)997I/'I(H'36I(;56374I(I*I(I(;6I(56I1(;992I)I)I(I'77846;7I.':I(8<F':9I(7I8*&96778:I'68:9I)78I(:795:65I(468I(8I'I<,&:8I(9I'568F'I.&I8*&87;55I'G'=4:I'94878:=I(<7E&7A37I'I'I)89I0'56I(I1(I1'H'8E&<8I/'7996 NM:i:1 MD:Z:12C202 [...]
+simulated.935 16 1 4220 255 7M1I64M1D17M1D102M * 0 0 CAGAGAGTAGTCGAGTTAAACGGGCCAACCTACTCGTCGTCGAGTGGTTTACAAGCATAACTTGGCACCCGCGGGACTAGCGCTCCTTTAATGTCCAGCACCGGGATGTGTGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGC 766<78<':678658'H'/I8&.I*I(I(I6;516:74;4<6<55(I(1I82)I:;85'I5'I)I36'0I;9)5I9778966<5(I&.I,I:8;)I3889)I(1I:6978<49;:4(I8'H(I999'I8)I<(I(I862:*I855(I878745'H3799)I;;8&-I=65876565::3825323&)1II5 NM:i:3 MD:Z:71G17A102 oR:Z:1 oH:i:1 oP:i:4219 oS:A:R XE [...]
+simulated.936 0 1 5937 255 49M1I19M1I19M1D127M * 0 0 ATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCGTTACGTAGTCTTTGCCGGAGTTTCTGAGTGAAAAGAAAGCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCAGCCGCCATGCCGCTGTTTTTCGGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTC ;I(I(I(895598:;9I(5:66I(8I(9I(;I'8I.&95H'I(3678:3&I)29492 at 6:I0'6I(H'5'I1'464@:87ID.(9I.'7II6,(;:6<<79;3843F'I(66I(75=I1'33C<<8:368:8<95E&;=7;76I2(9H'5.89:;7I):I(69<I(0:29IG0)%0I:+&6:6I(8=9I-&I(51;35;624862I'9I9*&I0'5 NM:i: [...]
simulated.937 0 1 7145 255 198M * 0 0 GTCAACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTAGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCATATATGAGAAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTA 578I'>I(:368I(8;H'694;9765:9I'I1(6I-&9529I)I(99563;566:5:79757645;I(7I(7:6I.&557>I)792I(251I(7I(I(45:E&5;4;64536673I9*&38I(6I*48876958I(I)5;H'83I;+&I(:873;I)6I(69I0'39=I(652I(I.'8:I0'577I(831:I(55:> NM:i:0 MD:Z:198 oR:Z:1 oH:i:1 oP:i:7144 oS:A:F XE:i:0 XS [...]
-simulated.938 0 1 5477 255 43M1D41M1I81M1I27M * 0 0 CGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTAGTCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGACGACGTTTCTGGCATGTTCGAGGCAGA 7I(755995I(I'9I(29383I(;88;;67=I)6I2(7:I(83I,I-&/6847G'886I0'<6I'I)I.&7I):869I*9H'87&7I(;9>4569I*:I(9797938::756H'92F'G'>85994I)8;358:H'99I)58;7484798428;768I(8;69I(<&=7;:;I1(5;I'58;8H'498I(6544 NM:i:3 MD:Z:43^A149 oR:Z:1 oH:i:1 oP:i:5476 oS:A:F [...]
-simulated.939 0 1 3280 255 37M1D174M * 0 0 TAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTT 7I(8I(7I)18I/'72G';4:6175:7:<I(9F'I(6I6)2I(I'6978I)4;H'I)593I-&9718I<,&5F'<7I(I(5955<I8*&H'I(6I0'8944:I(65898:9I0':9I(I):676;3I)58;A59:I(I/'I.'9=48I(79878;27:37<745:7I*=78:>I:+&22I(II0)&9I/'9=9886>G';I(:I1(97I1' NM:i:1 MD:Z:37^T174 oR:Z: [...]
-simulated.940 16 1 6715 255 17M1D11M1I22M1I157M * 0 0 CACCCCTAAAGCTGGGCTTTTCTGAATTACATCAGGCCGTGAGGCTGGTATCGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGG 2:&+<I7'/I695'0I4)/FI9?1)I(I(6<6>;(I(I727:'G<7(I748&&+;I674*I='G:57'G*I)I'G/89(I'G;&+:I(I;'H<956(I749684'F88:=7*I7>>666867654&F(I4'/I:(I5838;2)I748(I49'/I::69'H'F'/I:<(I(I<(I7'H:9(I763)I9>)I5)I(I266:67(I6:7'/I NM:i:3 MD:Z:17^T19 [...]
-simulated.941 0 1 8985 255 63M1I45M1D22M1I64M1D11M * 0 0 CGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCACTGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCGTCGGCGGCATAGATGTTCCGTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGCATGCACAT 8286I.'>I)8I)>8:779;7:9;I'59;I/'685H'2:7:;8G'878I(I(6I*836I(>85'7545;4I'78:4G'H'66694I.'F&I'2G'957:66I(674I-&I,?8=I'6I)=579877?G'I((86<868I'9G'6H'I(63I(8I*1<I)5:I'6659I'<9650=:4>6I(I'I.&82G'688I(7I,886925377 NM:i:4 MD:Z:108^C86 [...]
-simulated.942 16 1 6349 255 113M1D34M1I45M * 0 0 CTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACGTGTTATAGTAGCGGTCATAATATTGGAGCGTACTGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGA 269;&*1II'H8>(I'H*I6775565'G877'/I9'I'0I'I86)I94=5<29'I;48694869*I'/I(I:>:8)4I55<'H78(I5=4&+9I5;(I87(I'H'H779)I;5D75;'H;:8:884;(I864;(I34)I(I;79762-54:@4:5'G988(I;8<4876'0I44684:7'H3>;39<5:08;; NM:i:2 MD:Z:113^C79 oR:Z:1 oH:i:1 oP:i:6348 oS:A:R XE:i [...]
-simulated.943 0 1 4385 255 26M1D39M1I29M1D117M * 0 0 TTTAGTGACGTGATATAGTGCGGGGGCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCGACAAGTTTTTGACACATTCTACATCTACCTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCT I0';6;58993:966442<86II4+'C87454598H'>678I'I(H'79I1(8158I)4:I(674&;7H'8II0)&575464I(7=7758:67I'DE&74614I0':I.'I0'I+<I:+&5<;<I(5I)4:@=75;377I.';I(=9I'I(797;98G'69I(7458874=I/'9G'7635674H'87;8526I(I(:;I)5I/':8;8I)4 NM:i:3 MD:Z:2 [...]
-simulated.944 0 1 6510 255 51M1D99M1D33M * 0 0 TCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTGCAGTCTGATGTACCAATACTCTCGCATATC 9884<7:2I1(5299:57F'869899:=669G'59;?746H'7I(9<9:79I+44I(G'9I(;I(>887I';57;II4+'I/';I(7775;54F'I)I(:I)7E&6653=97;I(=:7635;G':6:7I(I/'6I(7;9H'I)I(764I(I*68464:665=77;I(I)7<::38=7776;8; NM:i:2 MD:Z:51^A99^T33 oR:Z:1 oH:i:1 oP:i:6509 oS:A:F XE:i:2 XS:i:0 XI:i:0
-simulated.945 0 1 8363 255 30M1I31M1I52M1D47M1D36M * 0 0 CGGTCACGACGGCTGCCATCTCACGCGCGCGACGTCTCCGTCCACGAAGTATGCATCATTGTACGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGATTTGTACTTGAAGACTACGAAGGATCATCCGGCC <I(:73:378I(4?=H'4;85:8;022;54(:569<4E&6<I'=;2I)8188::6<97I)=9'97I(I(37I(35799I(8:I(72638I(794G'=7<?6I(I)855:36I(I(I,7;5I/'97I'53I(96;657;7:753=8I(7758G'75H'5H'<6D8I/'9637I';I':9:9:;5I(H'689<<I'H'I( NM:i:4 MD:Z:113^A47^G36 oR:Z:1 oH:i:1 [...]
-simulated.946 16 1 4764 255 53M1I14M1D123M * 0 0 TAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCTAAACGATTTAAGCCAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACG 887661'+4II6781(I669:'H697&+:I9'H5<7(I7;'G(I43(I'0I6@('/I485(3I(I7'I(/DI6=869(I:(I(I86'I48'H64'G28:66&,I54)I489<6:=8:6<'I;'/I945'I9&*7I:9:56'H;9'H(I68'I(I99:<267(I967(I(I3A95:38869=7'H7'G589: NM:i:2 MD:Z:67^A123 oR:Z:1 oH:i:1 oP:i:4763 oS:A:R XE:i:2 X [...]
-simulated.947 16 1 2390 255 33M1D48M1I98M1I8M * 0 0 GGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCGAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCTATAATCCA '+3II;2(I'/I'H8:6;(I(2I'I(I:466'G,I'/I?43&E96(I28'G?794367'H9'/I3)I7>(I676)I29998':>)I45225+I7569)I:86577976658(I8)I*I'G*I91'H'H782:5(I7&E(I6'0I<;78598?;74<53958'H-9(I:(I=97:88;::7&;7(I7'H5 NM:i:3 MD:Z:33^T154 oR:Z:1 oH:i:1 oP:i:2389 oS:A:R XE:i:3 XS [...]
-simulated.948 16 1 1949 255 22M1D172M * 0 0 TTACGACTCTGGTATAGGGGTGCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATT 'I74<75424(I6764&+:I86D:3;2=7:=(I5'I8&.I(2I7457:'I<484(I7(I:971<%)0GI5>)I:853:(I6931;<:674;1)I58963'0I474*I:)I(2I'I568=1&+;I6'G444(I5(I56:<9(I2401'.I:63'F8&.I365'H;(I757759863979'H<'/I)I58:'0I'I NM:i:1 MD:Z:22^C172 oR:Z:1 oH:i:1 oP:i:1948 oS:A:R XE:i:1 [...]
-simulated.949 16 1 5070 255 64M1D49M1I4M1I23M1I43M * 0 0 CTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGTAAATACACCGCTAATTGCAAGGTTTGATCGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTAT 787(I63754&E56(I7847(I87858?:@6'H797<;)I7;7)I<8(I&E2&-I;(I55972<',6II646<=<;548'H<8<A&-I:76'I6(I5;66(I94<7&+9I2(I&&.I:%7/(I66<(I)I7;(I'G'/I77<%'0I)I'I69;:<75:;;6:&-I:55(I8(I(I4'G3380)I;9 NM:i:4 MD:Z:64^C119 oR:Z:1 oH:i:1 oP:i:5069 oS:A:R XE:i:4 XS: [...]
-simulated.950 0 1 5592 255 79M1I35M1D32M1I63M * 0 0 TAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAAGTCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAACTCATTTGTATGCCGGCAAGCAGCCGTATCGAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTA 9E&I'599;5:I'=65:78I(<:I'7686=<767:8963969I(8607H'>68=97I0'87I(7846I'9:8I':99H'';7I(I<,';63I)445I*9I'I(2I(4I)53I.'2I,;197I.&4385:I(I(7I(<>66G'84445,I)677I(567574II3*&I(32F&46<:8I)G'49:I)6665I'2/I)175:4616:I(I(:7 NM:i:3 MD:Z:114^ [...]
-simulated.951 16 1 3785 255 9M1D37M1D10M1D103M1D32M * 0 0 TTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGTGACAACATGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAATGCATGAGTAATTGACTGCGTCGCGCGGGT 'F7'I78;7,I97(I(I66:'H928<887187372956=685:'1ID6;:8(I587C(2I(I6'H646:37579:)I8&E7(I7:<594<'I4)I;7<663?&).:II456>9/9;(I*I6(I?44:19:34<99&-I4<54&F6:55(I85(2I7:(I,I3:7671784'F(I7<76775:38199'.I4 NM:i:4 MD:Z:9^T37^G10^G103^A32 oR:Z:1 oH:i:1 oP:i: [...]
-simulated.952 16 1 8932 255 96M1D48M1I13M1D15M1I19M * 0 0 TTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGTCCTCGAGATTCATGGCCCGTCGGCGGCAGTAGATGTTCCTCGTCACCG (I7817836;7(I6(I(I=5'H3+I=77)I(I7<(I4(1I;757<'H72744384<8'/I;'H:'F:6971=87353(I696'/I::;)I94:589D67:'H'F4'I6<9(I=:;394955(I8<59'G(I69966'0I(I'I7-'I3;2664)I587+I(1I530(I8(I88'8:=6<8(I)I:87569(I9 NM:i:4 MD:Z:96^A61^G34 oR:Z:1 oH:i:1 oP:i:8931 [...]
+simulated.938 0 1 5477 255 43M1D41M1I81M1I27M * 0 0 CGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTAGTCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGACGACGTTTCTGGCATGTTCGAGGCAGA 7I(755995I(I'9I(29383I(;88;;67=I)6I2(7:I(83I,I-&/6847G'886I0'<6I'I)I.&7I):869I*9H'87&7I(;9>4569I*:I(9797938::756H'92F'G'>85994I)8;358:H'99I)58;7484798428;768I(8;69I(<&=7;:;I1(5;I'58;8H'498I(6544 NM:i:3 MD:Z:43A149 oR:Z:1 oH:i:1 oP:i:5476 oS:A:F [...]
+simulated.939 0 1 3280 255 37M1D174M * 0 0 TAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCCAGCATGTAATGGTAAATCTTT 7I(8I(7I)18I/'72G';4:6175:7:<I(9F'I(6I6)2I(I'6978I)4;H'I)593I-&9718I<,&5F'<7I(I(5955<I8*&H'I(6I0'8944:I(65898:9I0':9I(I):676;3I)58;A59:I(I/'I.'9=48I(79878;27:37<745:7I*=78:>I:+&22I(II0)&9I/'9=9886>G';I(:I1(97I1' NM:i:1 MD:Z:37T174 oR:Z:1 [...]
+simulated.940 16 1 6715 255 17M1D11M1I22M1I157M * 0 0 CACCCCTAAAGCTGGGCTTTTCTGAATTACATCAGGCCGTGAGGCTGGTATCGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGCGTCTTAACCCTACCGGCAAGCCTACCATCAAGTAATGGAATGATATCCTGCGGG 2:&+<I7'/I695'0I4)/FI9?1)I(I(6<6>;(I(I727:'G<7(I748&&+;I674*I='G:57'G*I)I'G/89(I'G;&+:I(I;'H<956(I749684'F88:=7*I7>>666867654&F(I4'/I:(I5838;2)I748(I49'/I::69'H'F'/I:<(I(I<(I7'H:9(I763)I9>)I5)I(I266:67(I6:7'/I NM:i:3 MD:Z:17T190 [...]
+simulated.941 0 1 8985 255 63M1I45M1D22M1I64M1D11M * 0 0 CGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGCACTGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCGTCGGCGGCATAGATGTTCCGTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACATGAACCGGGTCGGCTATTCGGCATGCACAT 8286I.'>I)8I)>8:779;7:9;I'59;I/'685H'2:7:;8G'878I(I(6I*836I(>85'7545;4I'78:4G'H'66694I.'F&I'2G'957:66I(674I-&I,?8=I'6I)=579877?G'I((86<868I'9G'6H'I(63I(8I*1<I)5:I'6659I'<9650=:4>6I(I'I.&82G'688I(7I,886925377 NM:i:4 MD:Z:108C86G [...]
+simulated.942 16 1 6349 255 113M1D34M1I45M * 0 0 CTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACGTGTTATAGTAGCGGTCATAATATTGGAGCGTACTGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGA 269;&*1II'H8>(I'H*I6775565'G877'/I9'I'0I'I86)I94=5<29'I;48694869*I'/I(I:>:8)4I55<'H78(I5=4&+9I5;(I87(I'H'H779)I;5D75;'H;:8:884;(I864;(I34)I(I;79762-54:@4:5'G988(I;8<4876'0I44684:7'H3>;39<5:08;; NM:i:2 MD:Z:113C79 oR:Z:1 oH:i:1 oP:i:6348 oS:A:R XE:i: [...]
+simulated.943 0 1 4385 255 26M1D39M1I29M1D117M * 0 0 TTTAGTGACGTGATATAGTGCGGGGGCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCGACAAGTTTTTGACACATTCTACATCTACCTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGCCCTACTCCT I0';6;58993:966442<86II4+'C87454598H'>678I'I(H'79I1(8158I)4:I(674&;7H'8II0)&575464I(7=7758:67I'DE&74614I0':I.'I0'I+<I:+&5<;<I(5I)4:@=75;377I.';I(=9I'I(797;98G'69I(7458874=I/'9G'7635674H'87;8526I(I(:;I)5I/':8;8I)4 NM:i:3 MD:Z:2 [...]
+simulated.944 0 1 6510 255 51M1D99M1D33M * 0 0 TCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGAGGTTGGCAAGTTACTGCGTATTGCATGAGCCAGATAACCCATTGACTTGGCCAGTCCTTGCAGTCTGATGTACCAATACTCTCGCATATC 9884<7:2I1(5299:57F'869899:=669G'59;?746H'7I(9<9:79I+44I(G'9I(;I(>887I';57;II4+'I/';I(7775;54F'I)I(:I)7E&6653=97;I(=:7635;G':6:7I(I/'6I(7;9H'I)I(764I(I*68464:665=77;I(I)7<::38=7776;8; NM:i:2 MD:Z:51A99T33 oR:Z:1 oH:i:1 oP:i:6509 oS:A:F XE:i:2 XS:i:0 XI:i:0
+simulated.945 0 1 8363 255 30M1I31M1I52M1D47M1D36M * 0 0 CGGTCACGACGGCTGCCATCTCACGCGCGCGACGTCTCCGTCCACGAAGTATGCATCATTGTACGCCAACTCCGCGCACCTATTGCTGAGGAGAGGTGCGTAACCGCAGTCTTCCAATATCCCGTGGTCAATAGTATGCAGCTGTGGTACATTCTGGTGGCTGATTTGTACTTGAAGACTACGAAGGATCATCCGGCC <I(:73:378I(4?=H'4;85:8;022;54(:569<4E&6<I'=;2I)8188::6<97I)=9'97I(I(37I(35799I(8:I(72638I(794G'=7<?6I(I)855:36I(I(I,7;5I/'97I'53I(96;657;7:753=8I(7758G'75H'5H'<6D8I/'9637I';I':9:9:;5I(H'689<<I'H'I( NM:i:4 MD:Z:113A47G36 oR:Z:1 oH:i:1 o [...]
+simulated.946 16 1 4764 255 53M1I14M1D123M * 0 0 TAGAGACCCCCTGCGCCTATCTTCGCAAAATCCGTGTTCTAAGGCGTTAAAGCTAAACGATTTAAGCCAAAAGATCACCTCCTTCATTCACCTATTATCAGTTTACTTGCTCTATGTATCCGTTTAGTGGCGGGGATGACTTGCGGCCATCCAATGTCTGCAATATGGAAGCGTCGTATCATGGCAAGACG 887661'+4II6781(I669:'H697&+:I9'H5<7(I7;'G(I43(I'0I6@('/I485(3I(I7'I(/DI6=869(I:(I(I86'I48'H64'G28:66&,I54)I489<6:=8:6<'I;'/I945'I9&*7I:9:56'H;9'H(I68'I(I99:<267(I967(I(I3A95:38869=7'H7'G589: NM:i:2 MD:Z:67A123 oR:Z:1 oH:i:1 oP:i:4763 oS:A:R XE:i:2 XS [...]
+simulated.947 16 1 2390 255 33M1D48M1I98M1I8M * 0 0 GGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTAAAGTGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCGAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGCTAGGTACCTGGACAGCATAGCTATAATCCA '+3II;2(I'/I'H8:6;(I(2I'I(I:466'G,I'/I?43&E96(I28'G?794367'H9'/I3)I7>(I676)I29998':>)I45225+I7569)I:86577976658(I8)I*I'G*I91'H'H782:5(I7&E(I6'0I<;78598?;74<53958'H-9(I:(I=97:88;::7&;7(I7'H5 NM:i:3 MD:Z:33T154 oR:Z:1 oH:i:1 oP:i:2389 oS:A:R XE:i:3 XS: [...]
+simulated.948 16 1 1949 255 22M1D172M * 0 0 TTACGACTCTGGTATAGGGGTGCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATT 'I74<75424(I6764&+:I86D:3;2=7:=(I5'I8&.I(2I7457:'I<484(I7(I:971<%)0GI5>)I:853:(I6931;<:674;1)I58963'0I474*I:)I(2I'I568=1&+;I6'G444(I5(I56:<9(I2401'.I:63'F8&.I365'H;(I757759863979'H<'/I)I58:'0I'I NM:i:1 MD:Z:22C172 oR:Z:1 oH:i:1 oP:i:1948 oS:A:R XE:i:1 X [...]
+simulated.949 16 1 5070 255 64M1D49M1I4M1I23M1I43M * 0 0 CTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGTCCAAGTTTACCAGCATACCCCCACGTATGACTAATGCACCCGACTTCGGTCGCTTCACTCCCCAGGTAAATACACCGCTAATTGCAAGGTTTGATCGGGTTGGTCATCTCGACATCCCATCTTACCAAGTTGTAGTTAT 787(I63754&E56(I7847(I87858?:@6'H797<;)I7;7)I<8(I&E2&-I;(I55972<',6II646<=<;548'H<8<A&-I:76'I6(I5;66(I94<7&+9I2(I&&.I:%7/(I66<(I)I7;(I'G'/I77<%'0I)I'I69;:<75:;;6:&-I:55(I8(I(I4'G3380)I;9 NM:i:4 MD:Z:64C119 oR:Z:1 oH:i:1 oP:i:5069 oS:A:R XE:i:4 XS:i [...]
+simulated.950 0 1 5592 255 79M1I35M1D32M1I63M * 0 0 TAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAAGTCTTCCCCAGCTTAGATTAGGTTACCGCCGCTTTCAACTCATTTGTATGCCGGCAAGCAGCCGTATCGAACGTAATCGCATAAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTCCTA 9E&I'599;5:I'=65:78I(<:I'7686=<767:8963969I(8607H'>68=97I0'87I(7846I'9:8I':99H'';7I(I<,';63I)445I*9I'I(2I(4I)53I.'2I,;197I.&4385:I(I(7I(<>66G'84445,I)677I(567574II3*&I(32F&46<:8I)G'49:I)6665I'2/I)175:4616:I(I(:7 NM:i:3 MD:Z:114A [...]
+simulated.951 16 1 3785 255 9M1D37M1D10M1D103M1D32M * 0 0 TTGAACGAGTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGTGACAACATGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATATTGCTTTATCCAATGCATGAGTAATTGACTGCGTCGCGCGGGT 'F7'I78;7,I97(I(I66:'H928<887187372956=685:'1ID6;:8(I587C(2I(I6'H646:37579:)I8&E7(I7:<594<'I4)I;7<663?&).:II456>9/9;(I*I6(I?44:19:34<99&-I4<54&F6:55(I85(2I7:(I,I3:7671784'F(I7<76775:38199'.I4 NM:i:4 MD:Z:9T37G10G103A32 oR:Z:1 oH:i:1 oP:i:3784 [...]
+simulated.952 16 1 8932 255 96M1D48M1I13M1D15M1I19M * 0 0 TTCGTATCAGTAAGTTGGATAACGGTAGTTAATGCCAGGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGATGTAATTGAATGATTGCATGTGCGTTGCACAACCACTACAAAGGAAGTCCTCGAGATTCATGGCCCGTCGGCGGCAGTAGATGTTCCTCGTCACCG (I7817836;7(I6(I(I=5'H3+I=77)I(I7<(I4(1I;757<'H72744384<8'/I;'H:'F:6971=87353(I696'/I::;)I94:589D67:'H'F4'I6<9(I=:;394955(I8<59'G(I69966'0I(I'I7-'I3;2664)I587+I(1I530(I8(I88'8:=6<8(I)I:87569(I9 NM:i:4 MD:Z:96A61G34 oR:Z:1 oH:i:1 oP:i:8931 o [...]
simulated.953 0 1 4442 255 146M1I39M * 0 0 CCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCTGAGTGGGTAATGCCTTCGCACTGGTCAACTGTCGCGTTTGCCGCTAGTCGGTGATCACTTGGAGCCGTCCCTACTCCTAGCGATCGTCAAGGGTACTTTGTGTTGGC I(5:I(75457I(7IG/)%747768E&866:697<7I'H'I(92948I/'9I-&I.'I'9I<,'6635I';I(288885;765I0'7I*6=I(I)<26888I(87I'3:=97<93I-&2I+1:97292I(79:.;76G'I(39I(7/I/'6:6:H':77:7>764;8I'I.'6;6I-&<:7H'I(; NM:i:1 MD:Z:185 oR:Z:1 oH:i:1 oP:i:4441 oS:A:F XE:i:1 XS:i:0 XI:i:0
simulated.954 0 1 1961 255 62M1I133M * 0 0 TATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGTATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCCAATGTCGCCCCTCCATGAAGCCGCGCACCAGCTCCCTACAATCCCGTCAACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTT 59;5I<,&64I(1867966=I)6I(:I0'I.&96<>7I'5298I)8I(:4566II2*&97I)%46563I(99478:<4:66=I(99;67I/'952I)7I(I0'I(484:<I8*&:I)577I(6I(89635I'7799I.&559I)6I.'698I);I(8?95766579:6I(<I.&I)78<I1(I(<5I';7I)I(I( NM:i:1 MD:Z:195 oR:Z:1 oH:i:1 oP:i:1960 oS:A:F XE:i:1 X [...]
simulated.955 16 1 3198 255 146M1I66M * 0 0 TAATCCACGTTTCAGGGAAGGTTGGCACCCCGCTATTAAAAAGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTCGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAAC ;(I6'I3;3'/I=9'/I(I(I(I'H3;&*9I:568'I&)1II8)I;9(1I579&*7I(I3>5(I;(I&*8I53:(I;6:77'G'H<'G6'G49(2I84'I;88452<::48(I9(I'I:&*7I9(I(I:<89(I1;'I'H58:(2I&B=13&+:I<)I96)I)I88599(.BI(I'G9(2I63965'G77=889?'.I77*I(I:79154)I4 NM:i:1 MD:Z:212 oR:Z [...]
@@ -960,44 +960,44 @@ simulated.956 16 1 6942 255 190M * 0 0 TAATACGATATTATCCCATTCAGTATGTATTCAATCTAGGT
simulated.957 16 1 3007 255 215M * 0 0 CTTAGATTGTTCGTAGAGCTGATACCGCTACTTGGTTAGGGATCTTATGTCTTCAATTTGATCTGTGCTTTCCACGGGACAACCCCTTGACGTATGTCTTCCAATTATCGTATAGCGCAAGCGCCCACATCGCTGGGCCCCCAGATCAGTGTTCTGTCGCTATTGAGAACTGACGGTACCAGAGGCCCGATTAATCCACGTTTCAGGGAAGGTTG <'I97:(I8'I6958796::9:59(I86597(I(I(I;&,I577'I86::9(I7(I'0I<7859;998'/I(I7;'/I29'I&+;I(I668:7488:4'H)I'H(I2:857;6;78;A'G9;7'0I58865714&.I&*2II965<5:5<7)I;;598582<(I427)I8875<&F87'I748'H(2I76(I(I6'I677'/I57(1I(I(I(I9 NM:i:0 MD:Z:215 oR:Z: [...]
simulated.958 0 1 4921 255 196M * 0 0 CTGCAATATGGAAGCGTCGTATCATGGCAAGACGAACAGAACGGGTTCCAGAGTTGCCGTGCATTACTGTCCGAGCAAGCTGACTGGGTCCCATCGCATGGAGTAATGTTGAGGGTCCCCCCATTTTCCACATCATGAAGACGGGCGTTCTGTTCGTGAGGCGAAGTGCGGCTCGCAGTGCCTGTCTCCATGTTGT 8875I(8;5I(I)8<8=96?::;49I(4I'66;7I'5:8G';I.'I(H'463<G'9I)77>72H'54635I(:7:5I'5868956I-&:I2(266765;I(360I);9I'49I1(:II9.)&6I;+&I(=566<764I)469I1(75I(097I(<593;I'88H';:<4I(8=567:156I'84/47I(994I):= NM:i:0 MD:Z:196 oR:Z:1 oH:i:1 oP:i:4920 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.959 16 1 7219 255 29M1I31M1I24M1I127M * 0 0 GGGCATCAACACAAGCATTCGGAAGTCAACGTCATATATGAGAAAATGAATGGAGCATGCTCGGCCATCCTATTTTAACATAGTTACTTAGCCCATGTTCGACCGGGTACCCTGTGGAGAGCCTCTATTCACTACTAGGTGCGTCATACCCAGATGAACGCTGTCAAAATATCCGCCATGCCCTCGTAGCCTTGTGTGAGTGCGAGATGCCCAC '0I6563(I77;*I947'I;'I)I749*I%667185685:83&+;I6:+I5'H2580888:%'G(I=7)I84&+9I(I:6<:7'H:&'H98(2I7:6'G858&F'/I48'/I648(I4578'I5693)I76698888'I27;;:34<9(2I:4964(I7:9:476&+9I855(I=(I188(2I97:66<(I'I5;5;64>4<4786567'0I6> NM:i:3 M [...]
-simulated.960 16 1 5957 255 48M1D9M1D74M1I22M1D63M * 0 0 CATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTCTGAGTGAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCTAGCCGCCATGCCGCTGTTTTTCGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGG 7<(I9*I6&D9&F9'0I56)I'H;593:8'F39827962'/I3'H(I5,I=5<;94;)6I7'/I4%(-7II964338;7A<5;'G(I66'G7:=&.I:494=6:66:=8:56)I749:84'/I4(I4867<&54(I9'F:?8'F::55&*2II5)5I252(I894(3I)I335;75776=:9&E6&+;I&-I668:89:(I<977'H96(2I284(I [...]
-simulated.961 16 1 2334 255 7M1D89M1I82M * 0 0 TCTTCTACCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTAGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAAT 33)I;96+I=;'/I:(I67/55:23(I6(I689;:6737;3'I;68798698666%)/FI89'I'/I(I789:&F(3I'H&F93:1'G'/I(2I98+4'G69*I6;'I346<394)I5'0I3)I;2&E;89(I87<8564(I9::6=(I86;2'I<7:447:>496:'G9)I(I'H(I6 NM:i:2 MD:Z:7^C171 oR:Z:1 oH:i:1 oP:i:2333 oS:A:R XE:i:2 XS:i:0 XI:i:0
+simulated.960 16 1 5957 255 48M1D9M1D74M1I22M1D63M * 0 0 CATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTTGCCGGATTCTGAGTGAAAGAAAGCCCCCCTATGATAGACATCCGGCGTTATGAAACTGTACAGTACATACGGAGAGCTGGGACCTACTCTAGCCGCCATGCCGCTGTTTTTCGGGTCACCATGTTTCCTAGCTACAGACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGG 7<(I9*I6&D9&F9'0I56)I'H;593:8'F39827962'/I3'H(I5,I=5<;94;)6I7'/I4%(-7II964338;7A<5;'G(I66'G7:=&.I:494=6:66:=8:56)I749:84'/I4(I4867<&54(I9'F:?8'F::55&*2II5)5I252(I894(3I)I335;75776=:9&E6&+;I&-I668:89:(I<977'H96(2I284(I [...]
+simulated.961 16 1 2334 255 7M1D89M1I82M * 0 0 TCTTCTACCACGGGTGGTCGCGTGAGGCTTGTCTATCTGAGTTGTCTGTGCTCACGGGGGCTAACCCTTCTGTGGCCCGGTTAGTCAATTTAAAGTAGAATATTAGTTGTATGACTTACCCTAATGAATACAACGAGCAGCCGACAGCCAGTGAATCGCGTGATACATTGCCTTGGAAT 33)I;96+I=;'/I:(I67/55:23(I6(I689;:6737;3'I;68798698666%)/FI89'I'/I(I789:&F(3I'H&F93:1'G'/I(2I98+4'G69*I6;'I346<394)I5'0I3)I;2&E;89(I87<8564(I9::6=(I86;2'I<7:447:>496:'G9)I(I'H(I6 NM:i:2 MD:Z:7C171 oR:Z:1 oH:i:1 oP:i:2333 oS:A:R XE:i:2 XS:i:0 XI:i:0
simulated.962 16 1 5504 255 190M * 0 0 GCTCTTGAAACATTACAAAGGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATTCTCTAGTCTGCTGACTACCAGTATTGCGACGTTTCTGGCATGTTCGAGGCAGAATCTTCCCCAGCTTAGATTAGGTT 4;;5'I3'0I59(I46&.I&-I4697?(I296'/I66)I(I'0I3(I5898(I4'I98<(I;97;<78*I4)I?5698:869:;;'I85(I)I::8796&E9;;835)I:4'G6456444;8:93:59;8(I067:'G;5:68>'/I74'I5915(I977(I;55)I93'F',=I488(I66;(I6(I*I NM:i:0 MD:Z:190 oR:Z:1 oH:i:1 oP:i:5503 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.963 16 1 6227 255 113M1D56M1I48M * 0 0 TGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGACGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACG 745577>68>7'.I549'H065?672(1I735688&-I63378&.I9)I48',>I4(I&.I;63995(I667=<33:85565:54)I;9:2685'I677:'0I534867'G'G,I(I8<'G;979&*2II)I95(I(I*I:993978)I995'/I5(I(1I)I64*I:6'833<8(I7 at 944?:89)I'/I'G;877'0I77>'H4<)I:;5&,<I;> NM:i: [...]
-simulated.964 0 1 7149 255 45M1I58M1I8M1D70M1I12M1I6M * 0 0 ACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTACGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCACTATATGAGAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTCGGAGAGCCTCTAGTTCACT 78I(7605F'79I'5166998299G'I-&4I0'4988H'I(9684'55>88:53536698666G'=G'988I/'52;;H':9;I(;97I'5G'I(5::F'9857'85077397I5)6=E&5I)6=96;:49I)I(41I(96I8*&I(99676I)6G'68I/'357I(954I*I/'65I1(783(H';>63H'75=5'G'5648 NM:i:5 MD:Z:111^A88 oR:Z [...]
-simulated.965 0 1 7906 255 141M1D36M * 0 0 GCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTTCACGATCGCGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTA 5:<I1(46I'2I(9G'85I*:80I'7:8<5=@:7G'79F'7489795656695I(:654>I)8G';I)1:8F&9I-&9427<>7;I-&<I/'F'978I*G'79:;6I)7I/'275899497I)7I(7I(I1(:73;46963I+:5H'579I+I1(H'96I):I(:67I:+&:97;;< NM:i:1 MD:Z:141^G36 oR:Z:1 oH:i:1 oP:i:7905 oS:A:F XE:i:1 XS:i:0 XI:i:0
-simulated.966 16 1 7498 255 128M1D86M * 0 0 TGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAG 998;8>4;;4(1I5666'I'0I77(1I(I'1I;8(I*I(I'G40:=:6(I94(I(I943;'I66849)I7(I;(I'H537)I7;8'I29'I;'H'I7)I6637;89552)I;>94;624)I1:78'F;C'G9=?85656;85(I'0I<&F5;'I8'.I(I963;49;;449(I;47'H68(2I37398'/I<36'G78'I>9688<*I)I'I;: NM:i:1 MD:Z:128^G8 [...]
+simulated.963 16 1 6227 255 113M1D56M1I48M * 0 0 TGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGACGCGCTCCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACG 745577>68>7'.I549'H065?672(1I735688&-I63378&.I9)I48',>I4(I&.I;63995(I667=<33:85565:54)I;9:2685'I677:'0I534867'G'G,I(I8<'G;979&*2II)I95(I(I*I:993978)I995'/I5(I(1I)I64*I:6'833<8(I7 at 944?:89)I'/I'G;877'0I77>'H4<)I:;5&,<I;> NM:i: [...]
+simulated.964 0 1 7149 255 45M1I58M1I8M1D70M1I12M1I6M * 0 0 ACTTGCGCAACGTTAGAGATCATAGGAAATGGGTATGAACCGCTACGTGTGCGCGTGTAGTCTCCTGGCGTGGGCATCAACACAAGCATTCGGAAGTCAAGTCACTATATGAGAAATGAATGGAGCATGCTGGCCATCCTATTTTAACATAGTTATTAGCCCATGTTCGACCGGGTACCCTGTCGGAGAGCCTCTAGTTCACT 78I(7605F'79I'5166998299G'I-&4I0'4988H'I(9684'55>88:53536698666G'=G'988I/'52;;H':9;I(;97I'5G'I(5::F'9857'85077397I5)6=E&5I)6=96;:49I)I(41I(96I8*&I(99676I)6G'68I/'357I(954I*I/'65I1(783(H';>63H'75=5'G'5648 NM:i:5 MD:Z:111A88 oR:Z: [...]
+simulated.965 0 1 7906 255 141M1D36M * 0 0 GCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAGTATTGTTGAATTTCACGATCGCGGTCTTACTCCGGGCCTCAATAAGCGAAAAGACGTA 5:<I1(46I'2I(9G'85I*:80I'7:8<5=@:7G'79F'7489795656695I(:654>I)8G';I)1:8F&9I-&9427<>7;I-&<I/'F'978I*G'79:;6I)7I/'275899497I)7I(7I(I1(:73;46963I+:5H'579I+I1(H'96I):I(:67I:+&:97;;< NM:i:1 MD:Z:141G36 oR:Z:1 oH:i:1 oP:i:7905 oS:A:F XE:i:1 XS:i:0 XI:i:0
+simulated.966 16 1 7498 255 128M1D86M * 0 0 TGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACAATCACGCGGAACCAG 998;8>4;;4(1I5666'I'0I77(1I(I'1I;8(I*I(I'G40:=:6(I94(I(I943;'I66849)I7(I;(I'H537)I7;8'I29'I;'H'I7)I6637;89552)I;>94;624)I1:78'F;C'G9=?85656;85(I'0I<&F5;'I8'.I(I963;49;;449(I;47'H68(2I37398'/I<36'G78'I>9688<*I)I'I;: NM:i:1 MD:Z:128G86 [...]
simulated.967 0 1 7843 255 182M * 0 0 GGATAAATTTCAGAAGAACAGAGTCTTCCCACCAATCGTCTCAGCCCCTAAGACAAGGCATACGCTGGGTCAATGGATTCGAATGCAATGCGACAGTCCGTGGTGTAGTAGTGTATAACTCTGAATAAGAAGATCCACCCATAGCGATCCCGTTTCCACAGGAACTAGCAACGGGCTCATAG H'6;I2(I/'458H'6I'8?55599I(I.&<F&I';68:944:8I?-'7H'7;7I'I'4687::78I.&9:G'4H'6I(84I(7;8I(739=A377<I'87I(;9=5:;7929663H'89>78I)0I'5I(>9<I(8I2(84868651I-&>I/'I(86:I(I(22339I(:I.'2876:;5 NM:i:0 MD:Z:182 oR:Z:1 oH:i:1 oP:i:7842 oS:A:F XE:i:0 XS:i:0 XI:i:0
simulated.968 16 1 7432 255 93M1I126M * 0 0 TCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTACCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGACGTGCTGGAGGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTACGAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCT 57(I;&+:I9=6;622<2'I(I;<)I(I383;92'/I'0I8:79249'H5;)I6'1I)I(I98'I)I6368782<8(2I7<85(I(2I;7'/I,)I&-I57(I(I'I(I886<4<(I86(I)I;449C&5986;'F9(I:&E*I:6:(I887'H>6'I=(I)I8'G6;;477<;3=)I5978=.;:(I786:'H9*I(I089966;969<)I(2I9(I66 NM:i:2 [...]
-simulated.969 0 1 2492 255 56M1I85M1D65M * 0 0 CGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGTCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCA 7986379?5I(9I(I(I(I':7I'H'66797H'7H'G'4I0'7:5C;7747<7;38&;;7I)9:I(3I(4;=;33295<64H'>I(7II2*&759I(456:6;5<I/'I)5;9<9;7I(<7F&3677;;9I'493:679663ID.(;8I(9I.&5=I(55<6746757I'799488G'6786I'94>4;::;72;;5H'898I(5<5 NM:i:2 MD:Z:141^T65 oR:Z:1 oH [...]
+simulated.969 0 1 2492 255 56M1I85M1D65M * 0 0 CGTGATACATTGCCTTGGAATCTTGGCTACATTCGGTTGTTTGCATCGTCTAGTAGTCTAGGTACCTGGACAGCATAGCATAATCCACCCCCTCTCCTAGTAGTATTTAATGCTCATGGATGGCAGTGTAGGAGCGACTAGATTTTGTGGCAAATCTTATCTGAGACTCCTGATACGGACATGGCATCGCAGAGATCGGTGACCGCA 7986379?5I(9I(I(I(I':7I'H'66797H'7H'G'4I0'7:5C;7747<7;38&;;7I)9:I(3I(4;=;33295<64H'>I(7II2*&759I(456:6;5<I/'I)5;9<9;7I(<7F&3677;;9I'493:679663ID.(;8I(9I.&5=I(55<6746757I'799488G'6786I'94>4;::;72;;5H'898I(5<5 NM:i:2 MD:Z:141T65 oR:Z:1 oH: [...]
simulated.970 16 1 8068 255 70M1I48M1I30M1I47M * 0 0 TAAGCGAAAAGACGTACCTAGAGTCACTAACCGTGCTCGGAATTCTGAATGTTCCGTGTCCGACTCGTATAGTCTAATGTGAGTCTCGAAAAGTGTAACCCAAGAGGCTAGGATTCCCAGTGTAACACAGCCCACACGGTTATGGACGCTCGAGCCTAACATTAGCGCTGGGCCGTGGCTATATTCAAGGTGATGTCC 8&E576&+:I655=8:'I<94?74:<8>)I'G67:;86'H'I)I688(I78(I*I:=?5'F5<789779:'6886)I8=84899;:<7&+;I4979&E'0I'H:7&F792'I7(I(2I8'699(I58469'.I9956(I(I27'I2>87<'57=(I>(I;:'H=85765'/I(I69'I?;778'I8(I'H787967*I NM:i:3 MD:Z:195 oR:Z:1 oH:i:1 oP:i:8067 o [...]
simulated.971 16 1 328 255 192M * 0 0 CTATAATCTGGACGCACAAAATCATCTTGGGATAGGAGGATTCGGGTGTGTCGCAAAAATGGCCTAGCAAACCCTGTCGAGATAGGCCGGGTGTCACGTCAAATTCTCGGCTGGATCCCTTAGTCGCATTAGTCCATGCAGAACGCGCACAGTTGAGGCAAGGCCGTAAAACACGTATGGATAAGGGGATAC 8;6:'G267'I595745&*8I36278(I'0I:68(I8*I8(I5'0I47585716&*2II:(I(I583;'/I(2I9<702=:94:'I'H'/I892<;5567(1I(I6::(I9?)I7.&.I&F886449:)I869'G356949)I979;:5885)I8<'I?'I)I*I99&+:I897877;)I=8&F&*8I75;5 NM:i:0 MD:Z:192 oR:Z:1 oH:i:1 oP:i:327 oS:A:R XE:i:0 XS:i:0 XI:i:0
-simulated.972 16 1 4042 255 149M1D34M1I15M * 0 0 AAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGACGAGTCGAGTTAAACG '1I66=3>7)4I(I5(I(I)I8:9:445:'/I*I96::(3I649(I)I(I'H8<57)I77935'H:(2I7;3-9694;'G677(2I7'H(2I(I7(I8:969:7(I;(I061649*I;'G'G(I(I7'0I'I296*I758:'G468'.ID'H6415(I233879'I;2'/I:4(I7(I98894+5987;8;6)I'0I:8 NM:i:2 MD:Z:149^A49 oR:Z:1 oH:i:1 oP:i:4041 [...]
-simulated.973 0 1 5891 255 105M1D18M1D25M1I27M1I30M * 0 0 TTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTGCCGGATTTCTGAGTGAAAGAAAGCCCCCCTATGATAGACACTCCGGCGTTATGAAACTGTACAGTACAGTACGGAGAGCTGGGACCTACTCAGCCGCCA H'I1'59I1(8:7?I(68836>8I0'I(I at -'75I0'99:I>,'7I(I)I(H':76897697I'4<8:H'8I);I)3I'8I2(;9I(I*9196=8I*4;8;8796I+6I(I(8I0'82;6728I4)9I/'2II;/)&69<685779:3%6H'E&84I(876I1(78<425869578'<65I(98=;5;I/'9H'87<9;65I';G'9 NM:i:4 MD:Z:105^T1 [...]
-simulated.974 0 1 8966 255 3M1D76M1I53M1D60M1I2M * 0 0 CCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGACATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACTAT I)7I,77::5H'4;7965;98:I.&/I'7F'195;>88599;H'787I1(797I'469872F';3:I)I(7H'57:I)7'848>9195I,7:7:I'I(997>:I0'I(I'8I(635593I(77<I.'I.'9=7D:G'8599868;G'I(7<9;:=I(?I)5I(I(79I(<I(88H'04I(7<>5I(55295>;&7; NM:i:4 MD:Z:3^G129^G62 oR:Z:1 oH:i:1 oP:i:8 [...]
-simulated.975 16 1 6137 255 141M1D66M * 0 0 GACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCC 3059(I2&*8I'0I6;617::'I8387'G8;'/I49?'/I496696:4?0?674<6436(I3>5'I7:9'F36(I:&.I;62669'H79906792;658;6&.I457'F=;87765(2I?4<5::'.I68>65(1I<'H57)6I9)I&-I:84474(I8989956945727<75*I5:=1884*I967;'.I97<6:6'G&F(2I'I NM:i:1 MD:Z:141^A66 oR:Z:1 oH:i: [...]
-simulated.976 0 1 1935 255 125M1D18M1I32M1D45M * 0 0 GAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCAATGTCGCCCCTCCATCGAAGCCGCGCACCAGCTCCCTACAATCCCGTCACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTG 5I(7F&5;9H'569I(646:;79;I(68:4I:+&57I(8:6;4::9G'3I'9I2(I1'9349;G'>669H'4I'33:48II0)&9=I(69866E&5?24:;966785I(7769:I-&89<I'<H'I,I'3<954I9+&9I*5:%7H'6I(7;897I(6?9:I/'672H'5I0'84:D6I):7716;377564I(7I/'I(77=I0'I)23I(;6I'I [...]
+simulated.972 16 1 4042 255 149M1D34M1I15M * 0 0 AAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAGGGATTCCCAACTTGACTGTGAATAACAGACAGGTCCAATTGGCGGGTTACTGGCGCGAACATCCCAGGCTCGTTAGCTGAGGTCGGGCTCCACCAGAGACGAGTCGAGTTAAACG '1I66=3>7)4I(I5(I(I)I8:9:445:'/I*I96::(3I649(I)I(I'H8<57)I77935'H:(2I7;3-9694;'G677(2I7'H(2I(I7(I8:969:7(I;(I061649*I;'G'G(I(I7'0I'I296*I758:'G468'.ID'H6415(I233879'I;2'/I:4(I7(I98894+5987;8;6)I'0I:8 NM:i:2 MD:Z:149A49 oR:Z:1 oH:i:1 oP:i:4041 [...]
+simulated.973 0 1 5891 255 105M1D18M1D25M1I27M1I30M * 0 0 TTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTATAAAATAATTCCTTACGCGAGCTCCTGCATTGAATCCGAACGGGTATTGGCAGCTCTTACGTAGTCTTGCCGGATTTCTGAGTGAAAGAAAGCCCCCCTATGATAGACACTCCGGCGTTATGAAACTGTACAGTACAGTACGGAGAGCTGGGACCTACTCAGCCGCCA H'I1'59I1(8:7?I(68836>8I0'I(I at -'75I0'99:I>,'7I(I)I(H':76897697I'4<8:H'8I);I)3I'8I2(;9I(I*9196=8I*4;8;8796I+6I(I(8I0'82;6728I4)9I/'2II;/)&69<685779:3%6H'E&84I(876I1(78<425869578'<65I(98=;5;I/'9H'87<9;65I';G'9 NM:i:4 MD:Z:105T18 [...]
+simulated.974 0 1 8966 255 3M1D76M1I53M1D60M1I2M * 0 0 CCAGGCGCGCGGTCACTACGAGTTTGCCGAAGCTCATGCGTCTTCGCGGGAGATTATGATGAATGTAATTGAATGATTGACATGTGCGTTGCACAACCACTACAAAGGAAGCCTCGAGATTCATGGGCCCGTCGCGGCATAGATGTTCCTCGTCACCGCCGTTAACTGGCGGTGAACTAACTGCGGATCGTACTAT I)7I,77::5H'4;7965;98:I.&/I'7F'195;>88599;H'787I1(797I'469872F';3:I)I(7H'57:I)7'848>9195I,7:7:I'I(997>:I0'I(I'8I(635593I(77<I.'I.'9=7D:G'8599868;G'I(7<9;:=I(?I)5I(I(79I(<I(88H'04I(7<>5I(55295>;&7; NM:i:4 MD:Z:3G129G62 oR:Z:1 oH:i:1 oP:i:896 [...]
+simulated.975 16 1 6137 255 141M1D66M * 0 0 GACGAAGCCCCTTTCTATCTCTTGTCATTCACCCACAGGGTGCATATCGATGTACATCGCCGATAATCATTCGCCAGGGATCAGCGGCAGTGCGACACGATCCCTATAACGTGTATCCCTATACACCCGATCATTTGTTATAAACTTAAAGTGTACTTATAGTGCGTCAGTAGACCTGTGCTCGGAGACAAACGCTATCCGGTTTCC 3059(I2&*8I'0I6;617::'I8387'G8;'/I49?'/I496696:4?0?674<6436(I3>5'I7:9'F36(I:&.I;62669'H79906792;658;6&.I457'F=;87765(2I?4<5::'.I68>65(1I<'H57)6I9)I&-I:84474(I8989956945727<75*I5:=1884*I967;'.I97<6:6'G&F(2I'I NM:i:1 MD:Z:141A66 oR:Z:1 oH:i:1 [...]
+simulated.976 0 1 1935 255 125M1D18M1I32M1D45M * 0 0 GAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGGAAAGATCAGGTGTACCTGGAGTAGAAAAATAGGATCTCAAGCACTATGATCAGGTGATATTTGCTAATAACCAATGTCGCCCCTCCATCGAAGCCGCGCACCAGCTCCCTACAATCCCGTCACTTAGCGAGACGAGAGGTAAATTGTGAAATTACAATGAACCTTG 5I(7F&5;9H'569I(646:;79;I(68:4I:+&57I(8:6;4::9G'3I'9I2(I1'9349;G'>669H'4I'33:48II0)&9=I(69866E&5?24:;966785I(7769:I-&89<I'<H'I,I'3<954I9+&9I*5:%7H'6I(7;897I(6?9:I/'672H'5I0'84:D6I):7716;377564I(7I/'I(77=I0'I)23I(;6I'I [...]
simulated.977 0 2 61 255 192M * 0 0 GCTGGAGTCAATGCGCACGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCATATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCAGAT 5?5I(;5;8I(5284728?6I'41996388<F'<I'E&58:I)H'5693674375I)5I0'24I'I(I/'9739<877I2(989.9:I)5I/'6H'24754I(G'=4I:+&I(738I'I/'I(H':5I*<I/'E&9757G'9I)7I(H'3<257;45I(>5:I(8I(I-&69I<,'I)5I'9I'I):97998 NM:i:0 MD:Z:192 oR:Z:2 oH:i:1 oP:i:60 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.978 16 2 195 255 55M1I71M1I7M2D12M1I20M1I33M1I2M * 0 0 TACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCACGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGTCACATAACAATCATCTCTTACCGGTAGTCAGCGAACTGAACGCGGGTCGGGGAGATTTATCCTCATCTCTCTTCGTG 455<7'I4)I=(I(I9<:;6:74(I6:6)I;(I&-I9@',=I(I6&E5'I)I:=8'56'/I&F9=7498272738;7'H=6'I'0I9781(I:5(I76(I479886;7797979977(I94<53266&89:36,I@'H8<36575'F*'I(I575==7;-;'H386'H&8;'1I58',<I573(3I:9(I7878;749<'I=&76 NM:i:7 MD:Z:133 [...]
+simulated.978 16 2 195 255 55M1I71M1I7M2D12M1I20M1I33M1I2M * 0 0 TACACTTACCGTTAAGAGCATCGTTCGTCCTGGTTTGTCCCCAACAATCCAAGCACGATTTAATATGATGTCGTCGTCCAGCCTTTGACTAATATTACAATCTATATGCATGTCTACTTATAGCGCGTCACATAACAATCATCTCTTACCGGTAGTCAGCGAACTGAACGCGGGTCGGGGAGATTTATCCTCATCTCTCTTCGTG 455<7'I4)I=(I(I9<:;6:74(I6:6)I;(I&-I9@',=I(I6&E5'I)I:=8'56'/I&F9=7498272738;7'H=6'I'0I9781(I:5(I76(I479886;7797979977(I94<53266&89:36,I@'H8<36575'F*'I(I575==7;-;'H386'H&8;'1I58',<I573(3I:9(I7878;749<'I=&76 NM:i:7 MD:Z:133 [...]
simulated.979 16 1 3463 255 81M1I29M1I101M * 0 0 CCCTACCCAGCATGTAATGGTAAATCTTTAAGAGACCAGACGGGCAAGCCTCTCAGTGCCTAAAGAAGTCGGTTGCCTGGGTCCGTCACACCCCGACTTTGGTTCATTGCTACGATTAATTGGTATTCGTTTGTGATTCCGGCCTGAGATCGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGG '1I%<(1I776A/79'I4(I5&-I44'.I'G7554)I8587(3I5'G8'I78:7::75'I<(1I1'G8<8(I&F5*I8(1I%(I89864<&+;I687'/I(I(I:6)I8:9'=7<'I'H&F(I=9&E77'0I7558(I(I)I(I8:56632'0I1(I81(I98(I<&*9I6475::'F4:5@(I58'I=50>855(I3=8'G:'I',<I=9'F NM:i:3 MD:Z:3C2 [...]
-simulated.980 16 2 78 255 82M1I66M1D50M1I15M * 0 0 CGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCACTATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCGTTTGACTAATATTAC >:5(I365;77957(I8*I&F588(I(I78=;96<486'F5'/I9>'G(I(2I5<<9<;69'0I34:57>(I6'/I:(I685'65'G(I62',>I(I7;9(I'0I(I(I:7(I8&.I(I5797(I9'F;(I(I:796;677(I;79(I9C'/I75&+:I)I8(I5)I&F17775&-I)I373977<A55859:(I84'I&'0I8979'H6:'G69 NM:i:3 MD [...]
-simulated.981 16 1 5745 255 7M1D45M1I59M1D72M * 0 0 ATCGCATAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTACCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTA 5:<;61:(/FI(I87)I;7456(I(IA78(I567:'H97(I658;96946(I%(I88(I(I5'G79:398:=96'I?<2;(I8;;::397953)I199847)I79'H(I64;D95:22:?7684;5(I85&F6(I76)I9&-I:9(I'/I1>&.I;6:5(I:852:96'.I)I',=I16&-I93 NM:i:3 MD:Z:7^A104^A72 oR:Z:1 oH:i:1 oP:i:5744 oS:A:R XE:i:3 XS:i:0 XI:i:0
+simulated.980 16 2 78 255 82M1I66M1D50M1I15M * 0 0 CGTAAGCACATAGTGGTCCAAGTATTCCTGTCAGAGCGTTAGGGTCTTGGCCCGTATCTCTGGGTCTACGTTGCCCTCCTCACTATTGGCGTTTTAACTGCCGGGTTAAGAGGTGGGTTACACTTACCGTTAAGAGCATCGTTCGTCCTGTTTGTCCCCAACAATCCAAGCAGATTTAATATGATGTCGTCGTCCAGCCGTTTGACTAATATTAC >:5(I365;77957(I8*I&F588(I(I78=;96<486'F5'/I9>'G(I(2I5<<9<;69'0I34:57>(I6'/I:(I685'65'G(I62',>I(I7;9(I'0I(I(I:7(I8&.I(I5797(I9'F;(I(I:796;677(I;79(I9C'/I75&+:I)I8(I5)I&F17775&-I)I373977<A55859:(I84'I&'0I8979'H6:'G69 NM:i:3 MD [...]
+simulated.981 16 1 5745 255 7M1D45M1I59M1D72M * 0 0 ATCGCATAAAAGGCAGGCATCTAATTATATTGCATGGCATTGTGTGTCGCTTACCTACCTTCGGTCACTGCTCACCAGACGGATATAGTAGTATTATGTATAACGCCGGACTACGCATGAGCGTCGTTCGTTGCCACTTGAAATGTTCCCGAGGGTGATCCATATGCTCCCTTAAAATCGGGTA 5:<;61:(/FI(I87)I;7456(I(IA78(I567:'H97(I658;96946(I%(I88(I(I5'G79:398:=96'I?<2;(I8;;::397953)I199847)I79'H(I64;D95:22:?7684;5(I85&F6(I76)I9&-I:9(I'/I1>&.I;6:5(I:852:96'.I)I',=I16&-I93 NM:i:3 MD:Z:7A104A72 oR:Z:1 oH:i:1 oP:i:5744 oS:A:R XE:i:3 XS:i:0 XI:i:0
simulated.982 0 1 6653 255 50M1I43M1I123M * 0 0 GCCAGTCCTTTGCAGTCTGATGTACCAATACTCTCGCATATCCGCCGGACGACTAAGATCTGGCACCCCTAAAGCTGGGCTTTTTCTGAATTCAGTCAGGCCGTGAGGCTGGTATGGGGTGCAACTTCGCTTCCAAGGAGTCCGGCTTTTCCTCCGCGCGGTCGCTACCATATAGGAGAGCACATACACCGGTGGGTAATACGCGTTACACCGTGGGC 2I(5;8I)I/':46366696587=I(H'6:::778666874I)6I(H'78%:68I'78678I)4;I7*&8I0'67:I.&1II2*&85;I(I(=7%553I(I)92<5I(/7I(779I:+&5;5F'8I':46I(I(G'I(987F'H'8I=,'I)<I(7768I(978929H'5;837I'6A5666 at 63::=H'I)4I.&6I):73587F&46:I)66I/'9 NM:i:2 [...]
simulated.983 16 1 3229 255 47M1I138M1I18M * 0 0 GCTATTAAAACGAACTGGGTGATTTTGGTATCCGTTAAAACGCGGCAGTGATTAACGGTCCTATTTCATTGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGAATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGAATGACATGAAAGACCGGTATGTGAACAGTCGTACCTTTCCCGACTAACA 894:(I(/FI&5(I86'1I;44'-AI(I944'G8&E'- at I9:9(I43%:;3)I(I7(I8(I=1'/I75)I97:66844537+I3'I'G3'- at I8(I'F>84:&E7=(I&E92;&.I2888&+:I5'I66&D(I46997&*8I'I(I:&-I576:8)I68<9710'0I8<(I)I3;559:)I75535&=5'G'/I'/I8644'I57 NM:i:3 MD:Z:10A192 oR:Z:1 oH:i: [...]
-simulated.984 16 1 3911 255 33M1I32M1D46M1I103M * 0 0 TGTATGCGAGACTTTCATGCCTATATTGCTTTACTCCAAATGCATGAGTAATTGACTGCGTCGCGCGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGTCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAG 42388>66:847'/I8<79&E88:8'G=:'0I6'9)I'0I:<8:>8:37(I(I17958:7<556?4+I3'H69'G57;6'G2517979(I<(I34'I6:89759'0I&+9I5&'I788:66653)I5:'0I'- at I7;58;4'0I'H9'G(I'H8576<8<;&-I(I8891&-I8,8(I(I'G'H959:'H at 5:96*I7(3I356;67747'G:8<: NM:i [...]
-simulated.985 16 1 5222 255 65M1I15M1D98M1I27M * 0 0 CTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGACAGACGGACAGCCTTGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGTACGGGTGATGCCAGGTGGGTGGTGAAA 65=:5;48(3I9:7(I0(I'G7(I376>(I7'I1>73725385:)I55962'G)I693'/I'.I8%58:4;)I5559'H'GD8:16(I(I7=353:0&.I77'.I9'.I(I'I;)I5(I7657898<'.I:7;4477&+;I6)I6)I387'/I887A:2;677'G67)I;?38578(I9&68'0I5:768'I8'I4'0I9)I95'0I NM:i:3 MD:Z:80^G125 oR: [...]
-simulated.986 16 1 6386 255 38M1D179M * 0 0 TTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGA '.I(I46'G;97:766(I9<8;2756>'H'/I)I3:98,I:66'G86'I637&*8I67(I87(I)I)I868(I:9'I7<6(I48416971(I=279(I98'I(I<80586873372@(I:9;(I9699396(1I6:68972'H;763389::49'I5866:=5(I5(I;:32:6'.I;;'G(I9(I9(I4658'H9878%)0GI&-I8(I5795767 NM:i:1 MD:Z: [...]
-simulated.987 0 1 3611 255 149M1D57M * 0 0 CGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGAT 8I.&;I):7I'77F&4I:+&7:5=:6I'5385I'8:I)4437:69I(479H'6I(I>,'77I(8I)17:H'I/'I=,'39966I)I)6:;I(;67484:I(99I);888I(H'H':6I-&:5I'I1(I.&I(9I(93I-&4;7286992I,89I3(I(3I.&:6I)71<6969I':I'7763I-&87I*E&675H'5<846778=> NM:i:1 MD:Z:149^T57 oR:Z:1 oH:i:1 o [...]
-simulated.988 0 1 1790 255 7M1D167M1I34M * 0 0 ACCTTGTCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATACGGGGTGCCTGTCACTCAACAATGGGAAAGATCAG 4I'G'=6I,E&<I):69?527:?65478I):478;G'.1I2(I/'I(:99I;+&3544I'3I(I)I(5F&<59I(68:5I(I(:869;58:;87H'I(877I(I/'7F&278I(81479I(74I)G'79=I)573I(79:82I(8I(2I(768I(8:2I(/586883>E&4838(I9*&>:I(;7;:7;76I'9I)9I/'I.&:6663; NM:i:2 MD:Z:7^C201 oR:Z:1 [...]
-simulated.989 0 1 792 255 87M1D111M * 0 0 ACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGT 6I;+&75739<=8;<4:4568<I.'<406:757998I):85978636:98684I';7:;5:46:9I(9H'G'75I(799I(:H'4H'I+G'879843H'I(8514=I(55<I9*&7I(=46;1924945;I;+&H'8788I/'G'47I.&<7I);5?:;<<3776946:;3::I)84578;I);4645778/686I)6 NM:i:1 MD:Z:87^C111 oR:Z:1 oH:i:1 oP:i:791 oS:A:F XE [...]
-simulated.990 0 1 5421 255 101M2D93M * 0 0 GGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATT I(:;II0)&655@>I):7:;:687I(92I(;@8<88I(;85659;7.G'F'5;6G'8I(238578H'I(8I(8:878I):855=685I'8I0'75I(7:I,I,789B9I(87<I-&68G'I(I.&7I(1473I):I'7:8I'6675199I(6I(66569>>:8:;9I(46H'I)36:977G'798 at 58G'<8I( NM:i:2 MD:Z:101^AG93 oR:Z:1 oH:i:1 oP:i:5420 oS:A:F XE:i:2 [...]
+simulated.984 16 1 3911 255 33M1I32M1D46M1I103M * 0 0 TGTATGCGAGACTTTCATGCCTATATTGCTTTACTCCAAATGCATGAGTAATTGACTGCGTCGCGCGGTAAGTAATGACTTAGACAGAGGTCCTGCCTGACAGTAAACCCCGTCCACACAGCTCGGACTTTAAAACAGCTGCCCAAGTTCCGGTGAGACTCTTTGGATACGGGATCGGAATTGGACGTAAGTCACTTCTTTATCAGCGTACCACAG 42388>66:847'/I8<79&E88:8'G=:'0I6'9)I'0I:<8:>8:37(I(I17958:7<556?4+I3'H69'G57;6'G2517979(I<(I34'I6:89759'0I&+9I5&'I788:66653)I5:'0I'- at I7;58;4'0I'H9'G(I'H8576<8<;&-I(I8891&-I8,8(I(I'G'H959:'H at 5:96*I7(3I356;67747'G:8<: NM:i [...]
+simulated.985 16 1 5222 255 65M1I15M1D98M1I27M * 0 0 CTCGACATCCCATCTTACCAAGTTGTAGTTATTCAGCGCTGAGTCCTGCTCGGAACTAGGGTTTGACAGACGGACAGCCTTGTACATTAAGCTACTCGGGCGCCCGCCCAAGGCTTGCCGATGCATGTTTCTGCTGAGGGGTCCGCCTATAAAGTGACACTGTCCTGAACTCAGATAAGTACGGGTGATGCCAGGTGGGTGGTGAAA 65=:5;48(3I9:7(I0(I'G7(I376>(I7'I1>73725385:)I55962'G)I693'/I'.I8%58:4;)I5559'H'GD8:16(I(I7=353:0&.I77'.I9'.I(I'I;)I5(I7657898<'.I:7;4477&+;I6)I6)I387'/I887A:2;677'G67)I;?38578(I9&68'0I5:768'I8'I4'0I9)I95'0I NM:i:3 MD:Z:80G125 oR:Z [...]
+simulated.986 16 1 6386 255 38M1D179M * 0 0 TTTGGTCTTGAGCGCTCCGTAGTCGACAAGGGCCGCTGAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGATAGTATGAACGCGTAGTTGCCGTGCGCAAAGCAACCGCCTGGTGATCCTAGCTTTTTCCCATTCAGACGA '.I(I46'G;97:766(I9<8;2756>'H'/I)I3:98,I:66'G86'I637&*8I67(I87(I)I)I868(I:9'I7<6(I48416971(I=279(I98'I(I<80586873372@(I:9;(I9699396(1I6:68972'H;763389::49'I5866:=5(I5(I;:32:6'.I;;'G(I9(I9(I4658'H9878%)0GI&-I8(I5795767 NM:i:1 MD:Z: [...]
+simulated.987 0 1 3611 255 149M1D57M * 0 0 CGGGAGGATGGTGTTATTTTGTCTACGGTCTACCACTTGATCTAGAAGCTCCGCCTTTTGCGGACCTCAGGTTTAAAAGCTGCGGAAGCTAACGCTCGTAATCGGATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTCTAAATTGAAACTCCAGCTAGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGAT 8I.&;I):7I'77F&4I:+&7:5=:6I'5385I'8:I)4437:69I(479H'6I(I>,'77I(8I)17:H'I/'I=,'39966I)I)6:;I(;67484:I(99I);888I(H'H':6I-&:5I'I1(I.&I(9I(93I-&4;7286992I,89I3(I(3I.&:6I)71<6969I':I'7763I-&87I*E&675H'5<846778=> NM:i:1 MD:Z:149T57 oR:Z:1 oH:i:1 oP [...]
+simulated.988 0 1 1790 255 7M1D167M1I34M * 0 0 ACCTTGTCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATACGGGGTGCCTGTCACTCAACAATGGGAAAGATCAG 4I'G'=6I,E&<I):69?527:?65478I):478;G'.1I2(I/'I(:99I;+&3544I'3I(I)I(5F&<59I(68:5I(I(:869;58:;87H'I(877I(I/'7F&278I(81479I(74I)G'79=I)573I(79:82I(8I(2I(768I(8:2I(/586883>E&4838(I9*&>:I(;7;:7;76I'9I)9I/'I.&:6663; NM:i:2 MD:Z:7C201 oR:Z:1 [...]
+simulated.989 0 1 792 255 87M1D111M * 0 0 ACCCCAGATCGTGAGTATACACAAAGTAGAGCGAGCAAGCTACACATGATCTACCATGTCGTCACTTCAAGGCAGGTGTCCGCCTGGCCTTCTCAGACCTTCTCTGTTCATAAAACTTACGCATGATGCACCCCGGATAGCCCTTCAGGGTAGGTGTCTAGATATGCGAGCGACCGACGACTTATAGTCAGCTACGGT 6I;+&75739<=8;<4:4568<I.'<406:757998I):85978636:98684I';7:;5:46:9I(9H'G'75I(799I(:H'4H'I+G'879843H'I(8514=I(55<I9*&7I(=46;1924945;I;+&H'8788I/'G'47I.&<7I);5?:;<<3776946:;3::I)84578;I);4645778/686I)6 NM:i:1 MD:Z:87C111 oR:Z:1 oH:i:1 oP:i:791 oS:A:F XE: [...]
+simulated.990 0 1 5421 255 101M2D93M * 0 0 GGTGAAAAACACGTGGAGCTCGCGTTCATTACGCTGAACAGTAGTCATTCCACTAACGGTATCATGGAATAATACTATTGCGAGCTCTTGAAACATTACAAGGCATGTCCATGCCCAGTTAACCCACCAGTACCAGGTATCCTGCTGCGAATGGTCACTAGATCAGCCGTAAGGTGCACTCCAGAGTGTTCATT I(:;II0)&655@>I):7:;:687I(92I(;@8<88I(;85659;7.G'F'5;6G'8I(238578H'I(8I(8:878I):855=685I'8I0'75I(7:I,I,789B9I(87<I-&68G'I(I.&7I(1473I):I'7:8I'6675199I(6I(66569>>:8:;9I(46H'I)36:977G'798 at 58G'<8I( NM:i:2 MD:Z:101AG93 oR:Z:1 oH:i:1 oP:i:5420 oS:A:F XE:i:2 X [...]
simulated.991 0 1 4331 255 190M * 0 0 TGCGCATTGAAGGACGTTAGGTGGCCTCTATTACGCCATCGAGAATGCGTTCGCTTTAGTGACGTGATATAGTGCGGGGGCCGTGATCGCGGAGTAGGTTAACACCCGTCGCCGATTATCACAAGTTTTTGACACATTCTACATCTACCTTGGCACATCCCGTTTCCCGGTGGGGTAGCTTCAATCGTCT <98787I)7I)G'467I(5I(:I)I*9947I)84=I'5:61;9G'9325G'85:I2(63:4693:996655:599IH0)&I)68797475H'7338H'I(I(47I2(5475I'85I(99854I(6II0)&56:667I(83985A75;I(I(I):3;89I,&8I.&I3(H'6I=,'9674I'8I(57:8;7 NM:i:0 MD:Z:190 oR:Z:1 oH:i:1 oP:i:4330 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.992 0 1 3727 255 41M1I33M1D131M * 0 0 CAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAACTTGAAACTCCAGCTAGATTGAACGAGTTTATGGTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCT 7I/':4I(I-&I.&E&=I*78I0'087;;885;I1':6I-&'I(9I.&=3H'46<8858I'5I'3546I0'69I)C745I(:38;:9688=58:895:;>85I0'I(6566I(666H'I/'I)8I)48:7:67688I)6I(>I(49;@5?4I(:I)7866897II8-(%63458=85I)I'5E&7419679844:6I4)889;H'3 NM:i:2 MD:Z:74^T131 oR:Z:1 oH: [...]
-simulated.993 16 1 3715 255 68M1I107M1D45M * 0 0 GATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTACGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATA 56:>8(I'I'I76(3I5>'I&-I(1I&F1'I;<&-I89;343368&-I:8(1I'I9'/I56(I6787;+99(I4'H4869'/I46(I'G9;;'I9<<;9732:7;47;8;59966&.I(I677;'I388(I(2I'I6'I44<<5:99=4(I6'H8(I9665868(I8)I68388:4(-7II3556883<(I'I;(I788887238<7>'.I6859(I8365 [...]
+simulated.992 0 1 3727 255 41M1I33M1D131M * 0 0 CAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAACTTGAAACTCCAGCTAGATTGAACGAGTTTATGGTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCT 7I/':4I(I-&I.&E&=I*78I0'087;;885;I1':6I-&'I(9I.&=3H'46<8858I'5I'3546I0'69I)C745I(:38;:9688=58:895:;>85I0'I(6566I(666H'I/'I)8I)48:7:67688I)6I(>I(49;@5?4I(:I)7866897II8-(%63458=85I)I'5E&7419679844:6I4)889;H'3 NM:i:2 MD:Z:74T131 oR:Z:1 oH:i [...]
+simulated.993 16 1 3715 255 68M1I107M1D45M * 0 0 GATGATTAACCACAAACACCTTTGGGTTGCCTACCCGCAGATGTATTTCTAAATTGAAACTCCAGCTACGATTGAACGAGTTTATGGTTGCGCCAGTGCTAGATCGTACGTCTCTCCCGGTGACAACATGGAAATTCGGAGTGTGCGAGAACTTCAATCAGCTGAATGGTCACGAGAAAAATGATCGTGCCGGTAATGTATGCGAGACTTTCATGCCTATA 56:>8(I'I'I76(3I5>'I&-I(1I&F1'I;<&-I89;343368&-I:8(1I'I9'/I56(I6787;+99(I4'H4869'/I46(I'G9;;'I9<<;9732:7;47;8;59966&.I(I677;'I388(I(2I'I6'I44<<5:99=4(I6'H8(I9665868(I8)I68388:4(-7II3556883<(I'I;(I788887238<7>'.I6859(I8365 [...]
simulated.994 0 1 2671 255 195M * 0 0 CATGGCATCGCAGAGATCGGTGACCGCAGACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGC 899I(1638=46833766I)9/;I(465267;5A9I(8I)::9>67679;94G';I:+&57I1'0I/'I8*&:9H'808I1(I(361604;G'78H'I)6I>,'<78878I(87H'I1(I(99850491I;+&9E&6I:+&>I2(8:>5I)85776<58:9655I7*&67II1)&2?5<<7I(363H'768I(48 NM:i:0 MD:Z:195 oR:Z:1 oH:i:1 oP:i:2670 oS:A:F XE:i:0 XS:i:0 XI:i:0
-simulated.995 0 1 7606 255 91M1I110M1D15M1I6M * 0 0 GAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACGAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCTGCCTTTAGCTCGCGAAT 2I*6566<=48I)889;I(6G'I(:36>87>89?8I(I1(4H'<8I(8I0'I(8:=88?6;525I(794I(77I.';>878I/'634G':3&H'9:4:5/I(G'I(75I'48G'I(5839;I'738I(8;5:66I)I(I)763I(89::495I)I(I(7;I/';83I at -'1I(I-&H'I(A974I(<856:I'67I-&34:<IC.(:8H'I2(77 [...]
-simulated.996 0 1 3256 255 40M1D39M1D46M1D87M * 0 0 GTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCC 8>:7I)6I(I8*&:76I'58945I*I(6F&,I(6;I.'<8B66697568566F'9I(I)8I?-'5I'I*4987I(59I(C;28I1(45<;I:+&5I'96I(I(5C666I:+&I'I'9I0'91579C:659455I-&<4I(I(;2A4;5H'5967476I)I0'I/'1594I(8;854:9<46;65=48>I(86272IB.(75I(II1)&9I.' NM:i:3 MD:Z:40 [...]
-simulated.997 16 1 2699 255 37M1D63M1D94M1D7M * 0 0 GACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGATGTG 57=2864)I4(I87;8:7233:45(I7&,<I>:'.I;,I&*9I46)I889'/I(I88986;:&F95'I'H4'- at I859885(I3:'I'0I'I99:74864*6I6(I2&,<I5'1I;93>'H6:::6461956>9',=I28'+3II2;4869'H;76'G:2:*I65436(I&D3)I7:68:'I78)I96)I6698+I7:><7 NM:i:3 MD:Z:37^T63^C94^G7 oR:Z:1 oH: [...]
-simulated.998 16 1 6326 255 76M1D131M * 0 0 CAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGA 4&-I877596(I'I'0I'I88*I:676&*3II(I<7)I)I&F9967:56(I394(1I3(I&-I&E59(I:6:8<76C:7=46>864)I(2I'I8686'.I8:5'I9?'G934&*8I46(I97(I(I(I79:)I4:(I06:*I7;553254(I177;'I39'I'G766 at 988:493?7)I=<4)I5377865(2I446746:'I:587 NM:i:1 MD:Z:76^C131 oR:Z:1 oH:i: [...]
+simulated.995 0 1 7606 255 91M1I110M1D15M1I6M * 0 0 GAATGATAGCGAATAGTGGTGGAACAGTGCGCGCGAAGGGAGGCTCCACCCGGTAGTGTCGATCAATGTGGTGCCCGAGTGTTTCATGGACGAATCACGCGGAACCAGAATGCCTTCACTCAAGCAGGTCGATGAAGGTTATAGGCTGATCTGGCCGGCATTTCTCGGGGCAACCCAACCTAGTGGATCGATTACGGGATAGCCCCTGCCTTTAGCTCGCGAAT 2I*6566<=48I)889;I(6G'I(:36>87>89?8I(I1(4H'<8I(8I0'I(8:=88?6;525I(794I(77I.';>878I/'634G':3&H'9:4:5/I(G'I(75I'48G'I(5839;I'738I(8;5:66I)I(I)763I(89::495I)I(I(7;I/';83I at -'1I(I-&H'I(A974I(<856:I'67I-&34:<IC.(:8H'I2(77 [...]
+simulated.996 0 1 3256 255 40M1D39M1D46M1D87M * 0 0 GTATCCGTTAAAACGCGGCATGATTAACGGTCCTATTTCATGACATAGATGAGGCTTAACTTTTGCCGGTCAGCCTCGGATAGTTTGCTCTTTTCGGAGAACCGCTATAAAACCAAGTTTAGCTGATGACATGAAAGACCGGTATGTGAACAGTCTACCTTTCCCGACTAACATCGTGACTATGTGATAAGTATCAAAATCAACCCCCACCC 8>:7I)6I(I8*&:76I'58945I*I(6F&,I(6;I.'<8B66697568566F'9I(I)8I?-'5I'I*4987I(59I(C;28I1(45<;I:+&5I'96I(I(5C666I:+&I'I'9I0'91579C:659455I-&<4I(I(;2A4;5H'5967476I)I0'I/'1594I(8;854:9<46;65=48>I(86272IB.(75I(II1)&9I.' NM:i:3 MD:Z:40 [...]
+simulated.997 16 1 2699 255 37M1D63M1D94M1D7M * 0 0 GACTCGCTTCGGACAGCATAGTGATTCGGGGTGTTTCTTGGGGTCTTAGATTTAAGCATCAGAACTCCGGCGGGGCGAGCGAAGTCCTTTGGTGCTATGTCCCTAACTTTTGAAACTAGAATGCGCATCGATATAAAAGTAAAAATCACTCTTCTAGGTGCAAGCGCTCCGGCTTATCGTCCATCCGACCAGTAGGATGTG 57=2864)I4(I87;8:7233:45(I7&,<I>:'.I;,I&*9I46)I889'/I(I88986;:&F95'I'H4'- at I859885(I3:'I'0I'I99:74864*6I6(I2&,<I5'1I;93>'H6:::6461956>9',=I28'+3II2;4869'H;76'G:2:*I65436(I&D3)I7:68:'I78)I96)I6698+I7:><7 NM:i:3 MD:Z:37T63C94G7 oR:Z:1 oH:i:1 [...]
+simulated.998 16 1 6326 255 76M1D131M * 0 0 CAAACGCTATCCGGTTTCCGCAACTAGCCCCCAACACCAAGGTGCGCATGGAGACCCAGGTTTGGTCTTGAGCGCTCGTAGTCGACAAGGGCCGCTGAAACACGGAGCCATGAAAACGTTCGAATTAACAGCCGACCGTGTTATAGTAGCGGTCATAATATTGGAGCGTATGAGTCATTGCGTTCACACTGAAATCGATCTAACTGA 4&-I877596(I'I'0I'I88*I:676&*3II(I<7)I)I&F9967:56(I394(1I3(I&-I&E59(I:6:8<76C:7=46>864)I(2I'I8686'.I8:5'I9?'G934&*8I46(I97(I(I(I79:)I4:(I06:*I7;553254(I177;'I39'I'G766 at 988:493?7)I=<4)I5377865(2I446746:'I:587 NM:i:1 MD:Z:76C131 oR:Z:1 oH:i:1 [...]
simulated.999 16 1 1787 255 203M * 0 0 GAGACCTTGTCCCTTGCCACAGTATGATCGAGAATGACTAACTGGGCCCTTGCTGGGGCATAGGTGGAATTGAATGACCGAGCTTCCTATCATGATACAAGGCTCGGCCCGTTGACTTATCGACCACGGTTGTCAAGTACCTCACTCCGAACTTGCATTCGCTTACGACTCTGGTATAGGGGTGCCTGTCACTCAACAATGGG 7797'H(I5:'0I'F5(I178>;6>:6866B9(I76=54(I87&-I'.I'F155',>I6457(I<&E(I'F6&E7<4(I7673(I'H45279588788'I'I96=*I&-I6(I:64'I51:<>'I;;(I(I676)I<67'G87848'H8'F6(I4:='I7;5(I7:7::862(I:66:',<I;;(I;:575:51(I7'I;'.I NM:i:0 MD:Z:203 oR:Z:1 oH:i:1 oP:i:1786 oS:A: [...]
-simulated.1000 0 1 7400 255 69M1D98M1D36M * 0 0 CGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTA 35956D&I(9:59;64<=359;:8=I/'7I(497I(:I:+&787989977G'H'48I'I)773687I4)I+83718:6G';7I(2I/'I(I(:6H'I)898:89599I-&7244I)I-&65I0'G'I/'58I'I(I)I*6>5:<;I(41I(I)5:87I(95373I'6C9I)I(;86I(;::I);4I(7H'I)7I'70349;:9 NM:i:2 MD:Z:69^G98^G36 oR:Z:1 oH:i:1 [...]
+simulated.1000 0 1 7400 255 69M1D98M1D36M * 0 0 CGTAGCCTTGTGTGAGTGCGAGATGCCCACCATCAAGCCCCACAGACAGCAAGGACAAGGTATACACCCGGCAGTACTGGATCCATTTAAGGCTAATTGATGCATATCCCTGCACCTTTCATTTCCTTTCTGGCCAAGGTGTGCAGGTCAAGGTCTGAAGTGCTGGAGACCTTCAGAAGTGTTAGTTATTCCATTCTATAGTA 35956D&I(9:59;64<=359;:8=I/'7I(497I(:I:+&787989977G'H'48I'I)773687I4)I+83718:6G';7I(2I/'I(I(:6H'I)898:89599I-&7244I)I-&65I0'G'I/'58I'I(I)I*6>5:<;I(41I(I)5:87I(95373I'6C9I)I(;86I(;::I);4I(7H'I)7I'70349;:9 NM:i:2 MD:Z:69G98G36 oR:Z:1 oH:i:1 o [...]
diff --git a/apps/micro_razers/CMakeLists.txt b/apps/micro_razers/CMakeLists.txt
index fe37950..429c19c 100644
--- a/apps/micro_razers/CMakeLists.txt
+++ b/apps/micro_razers/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_micro_razers)
message (STATUS "Configuring apps/micro_razers")
-set (SEQAN_APP_VERSION "1.0.3")
+set (SEQAN_APP_VERSION "1.0.2")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/ngs_roi/CMakeLists.txt b/apps/ngs_roi/CMakeLists.txt
index 38d6968..e9519bf 100644
--- a/apps/ngs_roi/CMakeLists.txt
+++ b/apps/ngs_roi/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_ngs_roi)
message (STATUS "Configuring apps/ngs_roi")
-set (SEQAN_APP_VERSION "0.2.4")
+set (SEQAN_APP_VERSION "0.2.3")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/pair_align/CMakeLists.txt b/apps/pair_align/CMakeLists.txt
index c3f5155..604e8e7 100644
--- a/apps/pair_align/CMakeLists.txt
+++ b/apps/pair_align/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_pair_align)
message (STATUS "Configuring apps/pair_align")
-set (SEQAN_APP_VERSION "1.3")
+set (SEQAN_APP_VERSION "1.2")
# ----------------------------------------------------------------------------
# Dependencies
@@ -35,9 +35,6 @@ add_definitions (-DSEQAN_APP_VERSION="${SEQAN_APP_VERSION}")
add_definitions (-DSEQAN_REVISION="${SEQAN_REVISION}")
add_definitions (-DSEQAN_DATE="${SEQAN_DATE}")
-# Add CXX flags found by find_package (SeqAn).
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
-
# Update the list of file names below if you add source files to your application.
add_executable (pair_align pair_align.cpp)
@@ -48,6 +45,9 @@ add_subdirectory(lib)
# Add dependencies found by find_package (SeqAn).
target_link_libraries (pair_align pair_align_lib ${SEQAN_LIBRARIES})
+# Add CXX flags found by find_package (SeqAn).
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
+
# ----------------------------------------------------------------------------
# Installation
# ----------------------------------------------------------------------------
diff --git a/apps/param_chooser/CMakeLists.txt b/apps/param_chooser/CMakeLists.txt
index b9e09ca..92471f0 100644
--- a/apps/param_chooser/CMakeLists.txt
+++ b/apps/param_chooser/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_param_chooser)
message (STATUS "Configuring apps/param_chooser")
-set (SEQAN_APP_VERSION "0.0.1")
+set (SEQAN_APP_VERSION "0.0.0")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/rabema/CMakeLists.txt b/apps/rabema/CMakeLists.txt
index 6e0ed13..7006d5b 100644
--- a/apps/rabema/CMakeLists.txt
+++ b/apps/rabema/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_rabema)
message (STATUS "Configuring apps/rabema")
-set (SEQAN_APP_VERSION "1.2.2")
+set (SEQAN_APP_VERSION "1.2.1")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/rabema/curve_smoothing.h b/apps/rabema/curve_smoothing.h
index a2b1fdb..3048d23 100644
--- a/apps/rabema/curve_smoothing.h
+++ b/apps/rabema/curve_smoothing.h
@@ -258,7 +258,7 @@ void smoothErrorCurve(String<WeightedMatch> & errorCurve)
{
currentMax = _max(currentMax, value(it).distance);
// std::cerr << "value(" << value(it) << ") = " << currentMax << std::endl;
- value(host(it)).distance = currentMax;
+ value(it).distance = currentMax;
}
}
diff --git a/apps/rabema/rabema_build_gold_standard.cpp b/apps/rabema/rabema_build_gold_standard.cpp
index 1e92398..6169ffe 100644
--- a/apps/rabema/rabema_build_gold_standard.cpp
+++ b/apps/rabema/rabema_build_gold_standard.cpp
@@ -338,7 +338,7 @@ int intervalizeAndDumpErrorCurves(TStream & stream,
int gsiDistance = options.oracleMode ? readAlignmentDistances[readId] : distance;
if (options.oracleMode && options.maxErrorSet && gsiDistance > options.maxError)
continue; // Skip if cut off in Rabema oracle mode.
- GsiRecord gsiRecord(CharString(prefix(readNameStore[readId], length(readNameStore[readId]) - 2)), flags,
+ GsiRecord gsiRecord(prefix(readNameStore[readId], length(readNameStore[readId]) - 2), flags,
gsiDistance, contigNameStore[it2->contigId],
it2->isForward, it2->first, it2->last);
writeRecord(stream, gsiRecord, Gsi());
diff --git a/apps/razers/CMakeLists.txt b/apps/razers/CMakeLists.txt
index 3788365..9b62c61 100644
--- a/apps/razers/CMakeLists.txt
+++ b/apps/razers/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_razers)
message (STATUS "Configuring apps/razers")
-set (SEQAN_APP_VERSION "1.5")
+set (SEQAN_APP_VERSION "1.4")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/razers2/CMakeLists.txt b/apps/razers2/CMakeLists.txt
index dcc9476..d72c492 100644
--- a/apps/razers2/CMakeLists.txt
+++ b/apps/razers2/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_razers2)
message (STATUS "Configuring apps/razers2")
-set (SEQAN_APP_VERSION "2.5")
+set (SEQAN_APP_VERSION "2.4")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/razers2/outputFormat.h b/apps/razers2/outputFormat.h
index 78f2e87..34a0156 100644
--- a/apps/razers2/outputFormat.h
+++ b/apps/razers2/outputFormat.h
@@ -785,8 +785,9 @@ void dumpMatches(
case 2: // Eland Format
_sep_ = '\t';
- for (unsigned readNo = 0; readNo < length(store.readSeqStore); ++readNo)
+ for(unsigned readNo = 0; readNo < length(store.readSeqStore); ++readNo)
{
+ TQuality qual = getValue(store.alignQualityStore, (*it).id);
switch (options.readNaming)
{
// 0..filename is the read's Fasta id
@@ -814,7 +815,6 @@ void dumpMatches(
}
} else
{
- TQuality qual = getValue(store.alignQualityStore, (*it).id);
SEQAN_ASSERT_EQ(readNo, (*it).readId);
file << store.readSeqStore[readNo] << _sep_;
unsigned bestMatches = 1;
diff --git a/apps/razers3/CMakeLists.txt b/apps/razers3/CMakeLists.txt
index 4cfc549..3c10464 100644
--- a/apps/razers3/CMakeLists.txt
+++ b/apps/razers3/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_razers3)
message (STATUS "Configuring apps/razers3")
-set (SEQAN_APP_VERSION "3.5")
+set (SEQAN_APP_VERSION "3.4")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/razers3/README b/apps/razers3/README
index cd912ce..ad0e81c 100644
--- a/apps/razers3/README
+++ b/apps/razers3/README
@@ -7,7 +7,7 @@ Table of Contents
1. Overview
2. Installation
3. Usage
- 4. Output Formats
+ 4. Output Format
5. Examples
6. Contact
7. References
@@ -44,8 +44,7 @@ bit-parallel approximate string search algorithm proposed by Myers (1999). The
found matches are recorded, duplicate-filtered, and ranked by the number of
errors (and deviation from a given paired-end insert size). At the end, the
results are written to an output file (-o FILENAME). Besides others, RazerS 3
-supports a very efficient native format (.razers) and the commonly used SAM
-and BAM formats (.sam or .bam).
+supports a very efficient native format and the SAM format (-of sam).
------------------------------------------------------------------------------
2. Installation
@@ -192,7 +191,7 @@ pairs.
[ -o FILE ], [ --output FILE ]
Change the output filename to FILE. By default, this is the (first) read
- filename extended by the suffix '.razers'.
+ filename extended by the suffix '.result'.
[ -v ], [ --verbose ]
@@ -215,6 +214,12 @@ pairs.
3.2. Output Format Options
------------------------------------------------------------------------------
+ [ -of STRING ], [ --output-format STRING ]
+
+ Select the output format used for writing the results. Valid values are
+ razer (default), fasta, eland, gff, sam, and amos. See section 4, for more
+ details
+
[ -a ], [ --alignment ]
Dump the alignment for each match in the ".result" file (only for razer or
@@ -374,15 +379,15 @@ pairs.
4. Output Formats
------------------------------------------------------------------------------
-RazerS 3 supports currently 5 different output formats which are automatically
-chosen from the output filename suffix.
+RazerS 3 supports currently 4 different output formats selectable via the
+"--output-format NUM" option. The following values for NUM are possible:
+
+ 0 = Razer Format
+ 1 = Enhanced Fasta Format
+ 2 = Eland Format
+ 3 = General Feature Format (GFF)
+ 4 = Sequence Alignment and Mapping Format (SAM)
- .razers = Razer Format
- .fa|.fasta = Enhanced Fasta Format
- .eland = Eland Format
- .sam|.bam = Sequence Alignment and Mapping Format (SAM)
- .afg = AMOS assembler format
-
------------------------------------------------------------------------------
4.1. Razer Format
------------------------------------------------------------------------------
@@ -465,20 +470,65 @@ Additional value description:
(e.g. 12A: 12'th base was A in the genome)
------------------------------------------------------------------------------
-4.4. SAM or BAM Output Format
+4.4. General Feature Format
+------------------------------------------------------------------------------
+
+The General Feature Format is specified by the Sanger Institute as a tab-
+delimited text format with the following columns:
+
+<seqname> <src> <feat> <start> <end> <score> <strand> <frame> [attr] [cmts]
+
+See also: http://www.sanger.ac.uk/Software/formats/GFF/GFF_Spec.shtml
+Consistent with this specification razers3 GFF output looks as follows:
+
+GNAME razers read GBEGIN GEND PERCID GSTRAND . ATTRIBUTES
+
+Match value description:
+
+ GNAME Name of the genome sequence (see --genome-naming)
+ razers Constant
+ read Constant
+ GBEGIN Beginning position in the genome sequence
+ (positions are counted from 1)
+ GEND End position in the genome sequence (included!)
+ PERCID Percent identity (see --percent-identity)
+ GSTRAND '+'=forward strand or '-'=reverse strand
+ . Constant
+ ATTRIBUTES A list of attributes in the format <tag_name>[=<tag>]
+ separated by ';'
+
+Attributes are:
+
+ ID= Name of the read
+ quality= Ascii coded quality values of the read
+ cigar= Read-reference alignment description in cigar format*
+ mutations= Positions and bases that differ from the reference
+ with respect to the read (counting from 1)
+ unique This is the best read match and it is unique
+ multi This is one of multiple best machtes
+ suboptimal This is a suboptimal read match
+
+The original read sequence can be retrieved using the genomic subsequence
+and the information contained in the 'cigar' and 'mutations' tags.
+
+For matches on the reverse strand, GBEGIN and GEND are positions on the
+related forward strand. It holds GBEGIN < GEND, regardless of GSTRAND.
+
+*http://may2005.archive.ensembl.org/Docs/wiki/html/EnsemblDocs/CigarFormat.html
+
+------------------------------------------------------------------------------
+4.5. SAM Output Format
------------------------------------------------------------------------------
The SAM output format has established itself as the standard output format for
read alignments. Altough SAM is capable of representing a multiple alignment
between reads and contig (with paddings), RazerS 3 only outputs pairwise
alignments as this way has established to be the defacto standard.
-The BAM format is the binary representation of SAM compressed with gzip.
-Whenever possible the more compact BAM format should be preferred over SAM.
See http://samtools.sourceforge.net/ for more details.
------------------------------------------------------------------------------
-4.5. AMOS Output Format
+4.6. AMOS Output Format
------------------------------------------------------------------------------
The AMOS assembly format (aka AFG format) is used by the AMOS assembler and
diff --git a/apps/rep_sep/CMakeLists.txt b/apps/rep_sep/CMakeLists.txt
index 3247716..658be8e 100644
--- a/apps/rep_sep/CMakeLists.txt
+++ b/apps/rep_sep/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_rep_sep)
message (STATUS "Configuring apps/rep_sep")
-set (SEQAN_APP_VERSION "0.1.3")
+set (SEQAN_APP_VERSION "0.1.2")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/sak/CMakeLists.txt b/apps/sak/CMakeLists.txt
index a3a3d21..8c3ceaa 100644
--- a/apps/sak/CMakeLists.txt
+++ b/apps/sak/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_sak)
message (STATUS "Configuring apps/sak")
-set (SEQAN_APP_VERSION "0.4")
+set (SEQAN_APP_VERSION "0.3")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/sam2matrix/CMakeLists.txt b/apps/sam2matrix/CMakeLists.txt
index e2e09b8..9117128 100644
--- a/apps/sam2matrix/CMakeLists.txt
+++ b/apps/sam2matrix/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_sam2matrix)
message (STATUS "Configuring apps/sam2matrix")
-set (SEQAN_APP_VERSION "0.3")
+set (SEQAN_APP_VERSION "0.2")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/samcat/CMakeLists.txt b/apps/samcat/CMakeLists.txt
index 5a5b9a8..cc29da2 100644
--- a/apps/samcat/CMakeLists.txt
+++ b/apps/samcat/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_samcat)
message (STATUS "Configuring apps/samcat")
-set (SEQAN_APP_VERSION "0.3")
+set (SEQAN_APP_VERSION "0.2")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/searchjoin/CMakeLists.txt b/apps/searchjoin/CMakeLists.txt
index fe8eb62..2d3bb4f 100644
--- a/apps/searchjoin/CMakeLists.txt
+++ b/apps/searchjoin/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_searchjoin)
message (STATUS "Configuring apps/searchjoin")
-set (SEQAN_APP_VERSION "0.5")
+set (SEQAN_APP_VERSION "0.4")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/seqan_flexbar/CMakeLists.txt b/apps/seqan_flexbar/CMakeLists.txt
index 6dd6318..e65134e 100644
--- a/apps/seqan_flexbar/CMakeLists.txt
+++ b/apps/seqan_flexbar/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_seqan_flexbar)
message (STATUS "Configuring apps/seqan_flexbar")
-set (SEQAN_APP_VERSION "1.0.3")
+set (SEQAN_APP_VERSION "1.0.2")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/seqan_tcoffee/CMakeLists.txt b/apps/seqan_tcoffee/CMakeLists.txt
index 94ae2ea..2ba2682 100644
--- a/apps/seqan_tcoffee/CMakeLists.txt
+++ b/apps/seqan_tcoffee/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_seqan_tcoffee)
message (STATUS "Configuring apps/seqan_tcoffee")
-set (SEQAN_APP_VERSION "1.13")
+set (SEQAN_APP_VERSION "1.12")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/seqan_tcoffee/tests/1aab.i.fasta b/apps/seqan_tcoffee/tests/1aab.i.fasta
index 37633af..7b66d0e 100644
--- a/apps/seqan_tcoffee/tests/1aab.i.fasta
+++ b/apps/seqan_tcoffee/tests/1aab.i.fasta
@@ -2,34 +2,33 @@ Scoring parameters:
*Gap opening: -13
*Gap extension: -1
*Scoring matrix:
- A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,Y,Z,X,*,
-A: 4,-2,0,-2,-1,-2,0,-2,-1,-1,-1,-1,-1,-2,0,-1,-1,-1,1,0,0,0,-3,-2,-1,0,-4
-B: -2,4,-3,4,1,-3,-1,0,-3,-4,0,-4,-3,3,-1,-2,0,-1,0,-1,-1,-3,-4,-3,1,-1,-4
-C: 0,-3,9,-3,-4,-2,-3,-3,-1,-1,-3,-1,-1,-3,-2,-3,-3,-3,-1,-1,-2,-1,-2,-2,-3,-2,-4
-D: -2,4,-3,6,2,-3,-1,-1,-3,-4,-1,-4,-3,1,-1,-1,0,-2,0,-1,-1,-3,-4,-3,1,-1,-4
-E: -1,1,-4,2,5,-3,-2,0,-3,-3,1,-3,-2,0,-1,-1,2,0,0,-1,-1,-2,-3,-2,4,-1,-4
-F: -2,-3,-2,-3,-3,6,-3,-1,0,0,-3,0,0,-3,-1,-4,-3,-3,-2,-2,-1,-1,1,3,-3,-1,-4
-G: 0,-1,-3,-1,-2,-3,6,-2,-4,-4,-2,-4,-3,0,-1,-2,-2,-2,0,-2,-1,-3,-2,-3,-2,-1,-4
-H: -2,0,-3,-1,0,-1,-2,8,-3,-3,-1,-3,-2,1,-1,-2,0,0,-1,-2,-1,-3,-2,2,0,-1,-4
-I: -1,-3,-1,-3,-3,0,-4,-3,4,3,-3,2,1,-3,-1,-3,-3,-3,-2,-1,-1,3,-3,-1,-3,-1,-4
-J: -1,-4,-1,-4,-3,0,-4,-3,3,3,-3,3,2,-3,-1,-3,-3,-3,-2,-1,-1,2,-3,-1,-3,-1,-4
-K: -1,0,-3,-1,1,-3,-2,-1,-3,-3,5,-2,-1,0,-1,-1,1,2,0,-1,-1,-2,-3,-2,1,-1,-4
-L: -1,-4,-1,-4,-3,0,-4,-3,2,3,-2,4,2,-3,-1,-3,-2,-2,-2,-1,-1,1,-2,-1,-3,-1,-4
-M: -1,-3,-1,-3,-2,0,-3,-2,1,2,-1,2,5,-2,-1,-2,0,-1,-1,-1,-1,1,-1,-1,-1,-1,-4
-N: -2,3,-3,1,0,-3,0,1,-3,-3,0,-3,-2,6,-1,-2,0,0,1,0,-1,-3,-4,-2,0,-1,-4
-O: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
-P: -1,-2,-3,-1,-1,-4,-2,-2,-3,-3,-1,-3,-2,-2,-2,7,-1,-2,-1,-1,-2,-2,-4,-3,-1,-2,-4
-Q: -1,0,-3,0,2,-3,-2,0,-3,-3,1,-2,0,0,-1,-1,5,1,0,-1,-1,-2,-2,-1,3,-1,-4
-R: -1,-1,-3,-2,0,-3,-2,0,-3,-3,2,-2,-1,0,-1,-2,1,5,-1,-1,-1,-3,-3,-2,0,-1,-4
-S: 1,0,-1,0,0,-2,0,-1,-2,-2,0,-2,-1,1,0,-1,0,-1,4,1,0,-2,-3,-2,0,0,-4
-T: 0,-1,-1,-1,-1,-2,-2,-2,-1,-1,-1,-1,-1,0,0,-1,-1,-1,1,5,0,0,-2,-2,-1,0,-4
-U: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
-V: 0,-3,-1,-3,-2,-1,-3,-3,3,2,-2,1,1,-3,-1,-2,-2,-3,-2,0,-1,4,-3,-1,-2,-1,-4
-W: -3,-4,-2,-4,-3,1,-2,-2,-3,-3,-3,-2,-1,-4,-2,-4,-2,-3,-3,-2,-2,-3,11,2,-3,-2,-4
-Y: -2,-3,-2,-3,-2,3,-3,2,-1,-1,-2,-1,-1,-2,-1,-3,-1,-2,-2,-2,-1,-1,2,7,-2,-1,-4
-Z: -1,1,-3,1,4,-3,-2,0,-3,-3,1,-3,-1,0,-1,-1,3,0,0,-1,-1,-2,-3,-2,4,-1,-4
-X: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
-*: -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1
+ A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,Y,Z,X,*,
+A: 4,-2,0,-2,-1,-2,0,-2,-1,-1,-1,-1,-1,-2,-1,-1,-1,1,0,0,0,-3,-2,-1,0,-4
+B: -2,4,-3,4,1,-3,-1,0,-3,-4,0,-4,-3,3,-2,0,-1,0,-1,-1,-3,-4,-3,1,-1,-4
+C: 0,-3,9,-3,-4,-2,-3,-3,-1,-1,-3,-1,-1,-3,-3,-3,-3,-1,-1,-2,-1,-2,-2,-3,-2,-4
+D: -2,4,-3,6,2,-3,-1,-1,-3,-4,-1,-4,-3,1,-1,0,-2,0,-1,-1,-3,-4,-3,1,-1,-4
+E: -1,1,-4,2,5,-3,-2,0,-3,-3,1,-3,-2,0,-1,2,0,0,-1,-1,-2,-3,-2,4,-1,-4
+F: -2,-3,-2,-3,-3,6,-3,-1,0,0,-3,0,0,-3,-4,-3,-3,-2,-2,-1,-1,1,3,-3,-1,-4
+G: 0,-1,-3,-1,-2,-3,6,-2,-4,-4,-2,-4,-3,0,-2,-2,-2,0,-2,-1,-3,-2,-3,-2,-1,-4
+H: -2,0,-3,-1,0,-1,-2,8,-3,-3,-1,-3,-2,1,-2,0,0,-1,-2,-1,-3,-2,2,0,-1,-4
+I: -1,-3,-1,-3,-3,0,-4,-3,4,3,-3,2,1,-3,-3,-3,-3,-2,-1,-1,3,-3,-1,-3,-1,-4
+J: -1,-4,-1,-4,-3,0,-4,-3,3,3,-3,3,2,-3,-3,-3,-3,-2,-1,-1,2,-3,-1,-3,-1,-4
+K: -1,0,-3,-1,1,-3,-2,-1,-3,-3,5,-2,-1,0,-1,1,2,0,-1,-1,-2,-3,-2,1,-1,-4
+L: -1,-4,-1,-4,-3,0,-4,-3,2,3,-2,4,2,-3,-3,-2,-2,-2,-1,-1,1,-2,-1,-3,-1,-4
+M: -1,-3,-1,-3,-2,0,-3,-2,1,2,-1,2,5,-2,-2,0,-1,-1,-1,-1,1,-1,-1,-1,-1,-4
+N: -2,3,-3,1,0,-3,0,1,-3,-3,0,-3,-2,6,-2,0,0,1,0,-1,-3,-4,-2,0,-1,-4
+P: -1,-2,-3,-1,-1,-4,-2,-2,-3,-3,-1,-3,-2,-2,7,-1,-2,-1,-1,-2,-2,-4,-3,-1,-2,-4
+Q: -1,0,-3,0,2,-3,-2,0,-3,-3,1,-2,0,0,-1,5,1,0,-1,-1,-2,-2,-1,3,-1,-4
+R: -1,-1,-3,-2,0,-3,-2,0,-3,-3,2,-2,-1,0,-2,1,5,-1,-1,-1,-3,-3,-2,0,-1,-4
+S: 1,0,-1,0,0,-2,0,-1,-2,-2,0,-2,-1,1,-1,0,-1,4,1,0,-2,-3,-2,0,0,-4
+T: 0,-1,-1,-1,-1,-2,-2,-2,-1,-1,-1,-1,-1,0,-1,-1,-1,1,5,0,0,-2,-2,-1,0,-4
+U: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
+V: 0,-3,-1,-3,-2,-1,-3,-3,3,2,-2,1,1,-3,-2,-2,-3,-2,0,-1,4,-3,-1,-2,-1,-4
+W: -3,-4,-2,-4,-3,1,-2,-2,-3,-3,-3,-2,-1,-4,-4,-2,-3,-3,-2,-2,-3,11,2,-3,-2,-4
+Y: -2,-3,-2,-3,-2,3,-3,2,-1,-1,-2,-1,-1,-2,-3,-1,-2,-2,-2,-1,-1,2,7,-2,-1,-4
+Z: -1,1,-3,1,4,-3,-2,0,-3,-3,1,-3,-1,0,-1,3,0,0,-1,-1,-2,-3,-2,4,-1,-4
+X: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
+*: -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1
Alignment Score: 317
Alignment Length: 81
@@ -41,31 +40,30 @@ Score contribution by gap extensions: -51
Score contribution by gap openings: -234
#Pairs:
- A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,Y,Z,X,*,
-A: 15,0,0,0,4,2,3,0,1,0,4,4,0,1,0,4,0,2,1,0,0,3,0,0,0,0,0
-B: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-C: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-D: 2,0,0,3,4,0,0,0,1,0,3,2,0,2,0,0,2,2,1,1,0,0,0,0,0,0,0
-E: 11,0,0,2,14,0,4,0,2,0,5,0,0,4,0,1,2,1,5,0,0,2,0,0,0,0,0
-F: 1,0,0,0,0,3,0,0,1,0,0,1,0,1,0,0,0,2,1,0,0,1,1,3,0,0,0
-G: 3,0,0,0,1,0,3,0,0,0,0,0,0,1,0,0,0,0,4,0,0,0,0,0,0,0,0
-H: 1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-I: 1,0,0,0,1,1,1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,4,0,0,0,0,0
-J: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-K: 4,0,0,2,2,0,0,0,1,0,30,0,0,2,0,0,2,3,3,1,0,2,0,0,0,0,0
-L: 2,0,0,1,1,0,1,0,1,0,4,6,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0
-M: 0,0,0,0,1,2,0,0,2,0,3,4,2,2,0,1,0,1,0,0,0,2,0,0,0,0,0
-N: 0,0,0,1,2,1,4,0,0,0,1,0,1,2,0,0,0,1,1,0,0,0,0,0,0,0,0
-O: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-P: 2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0
-Q: 5,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
-R: 0,0,0,0,2,1,0,0,0,0,9,1,0,3,0,1,1,11,0,0,0,0,0,0,0,0,0
-S: 8,0,0,0,5,1,3,0,0,0,3,2,1,6,0,1,1,0,6,0,0,1,0,0,0,0,0
-T: 1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0
-U: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-V: 3,0,0,0,1,0,1,0,0,0,0,1,1,0,0,1,1,0,0,1,0,2,0,0,0,0,0
-W: 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,0,0,0
-Y: 0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,0,0,0
-Z: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-X: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-*: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,Y,Z,X,*,
+A: 15,0,0,0,4,2,3,0,1,0,4,4,0,1,4,0,2,1,0,0,3,0,0,0,0,0
+B: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+C: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+D: 2,0,0,3,4,0,0,0,1,0,3,2,0,2,0,2,2,1,1,0,0,0,0,0,0,0
+E: 11,0,0,2,14,0,4,0,2,0,5,0,0,4,1,2,1,5,0,0,2,0,0,0,0,0
+F: 1,0,0,0,0,3,0,0,1,0,0,1,0,1,0,0,2,1,0,0,1,1,3,0,0,0
+G: 3,0,0,0,1,0,3,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0
+H: 1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+I: 1,0,0,0,1,1,1,0,0,0,0,1,0,1,0,1,0,0,0,0,4,0,0,0,0,0
+J: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+K: 4,0,0,2,2,0,0,0,1,0,30,0,0,2,0,2,3,3,1,0,2,0,0,0,0,0
+L: 2,0,0,1,1,0,1,0,1,0,4,6,1,0,1,0,1,0,0,0,1,0,0,0,0,0
+M: 0,0,0,0,1,2,0,0,2,0,3,4,2,2,1,0,1,0,0,0,2,0,0,0,0,0
+N: 0,0,0,1,2,1,4,0,0,0,1,0,1,2,0,0,1,1,0,0,0,0,0,0,0,0
+P: 2,0,0,0,2,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0
+Q: 5,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0
+R: 0,0,0,0,2,1,0,0,0,0,9,1,0,3,1,1,11,0,0,0,0,0,0,0,0,0
+S: 8,0,0,0,5,1,3,0,0,0,3,2,1,6,1,1,0,6,0,0,1,0,0,0,0,0
+T: 1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0
+U: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+V: 3,0,0,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,1,0,2,0,0,0,0,0
+W: 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,3,0,0,0
+Y: 0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,11,0,0,0
+Z: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+X: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+*: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
diff --git a/apps/seqan_tcoffee/tests/1ad2.i.fasta b/apps/seqan_tcoffee/tests/1ad2.i.fasta
index c9940b4..677840e 100644
--- a/apps/seqan_tcoffee/tests/1ad2.i.fasta
+++ b/apps/seqan_tcoffee/tests/1ad2.i.fasta
@@ -2,34 +2,33 @@ Scoring parameters:
*Gap opening: -13
*Gap extension: -1
*Scoring matrix:
- A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,Y,Z,X,*,
-A: 4,-2,0,-2,-1,-2,0,-2,-1,-1,-1,-1,-1,-2,0,-1,-1,-1,1,0,0,0,-3,-2,-1,0,-4
-B: -2,4,-3,4,1,-3,-1,0,-3,-4,0,-4,-3,3,-1,-2,0,-1,0,-1,-1,-3,-4,-3,1,-1,-4
-C: 0,-3,9,-3,-4,-2,-3,-3,-1,-1,-3,-1,-1,-3,-2,-3,-3,-3,-1,-1,-2,-1,-2,-2,-3,-2,-4
-D: -2,4,-3,6,2,-3,-1,-1,-3,-4,-1,-4,-3,1,-1,-1,0,-2,0,-1,-1,-3,-4,-3,1,-1,-4
-E: -1,1,-4,2,5,-3,-2,0,-3,-3,1,-3,-2,0,-1,-1,2,0,0,-1,-1,-2,-3,-2,4,-1,-4
-F: -2,-3,-2,-3,-3,6,-3,-1,0,0,-3,0,0,-3,-1,-4,-3,-3,-2,-2,-1,-1,1,3,-3,-1,-4
-G: 0,-1,-3,-1,-2,-3,6,-2,-4,-4,-2,-4,-3,0,-1,-2,-2,-2,0,-2,-1,-3,-2,-3,-2,-1,-4
-H: -2,0,-3,-1,0,-1,-2,8,-3,-3,-1,-3,-2,1,-1,-2,0,0,-1,-2,-1,-3,-2,2,0,-1,-4
-I: -1,-3,-1,-3,-3,0,-4,-3,4,3,-3,2,1,-3,-1,-3,-3,-3,-2,-1,-1,3,-3,-1,-3,-1,-4
-J: -1,-4,-1,-4,-3,0,-4,-3,3,3,-3,3,2,-3,-1,-3,-3,-3,-2,-1,-1,2,-3,-1,-3,-1,-4
-K: -1,0,-3,-1,1,-3,-2,-1,-3,-3,5,-2,-1,0,-1,-1,1,2,0,-1,-1,-2,-3,-2,1,-1,-4
-L: -1,-4,-1,-4,-3,0,-4,-3,2,3,-2,4,2,-3,-1,-3,-2,-2,-2,-1,-1,1,-2,-1,-3,-1,-4
-M: -1,-3,-1,-3,-2,0,-3,-2,1,2,-1,2,5,-2,-1,-2,0,-1,-1,-1,-1,1,-1,-1,-1,-1,-4
-N: -2,3,-3,1,0,-3,0,1,-3,-3,0,-3,-2,6,-1,-2,0,0,1,0,-1,-3,-4,-2,0,-1,-4
-O: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
-P: -1,-2,-3,-1,-1,-4,-2,-2,-3,-3,-1,-3,-2,-2,-2,7,-1,-2,-1,-1,-2,-2,-4,-3,-1,-2,-4
-Q: -1,0,-3,0,2,-3,-2,0,-3,-3,1,-2,0,0,-1,-1,5,1,0,-1,-1,-2,-2,-1,3,-1,-4
-R: -1,-1,-3,-2,0,-3,-2,0,-3,-3,2,-2,-1,0,-1,-2,1,5,-1,-1,-1,-3,-3,-2,0,-1,-4
-S: 1,0,-1,0,0,-2,0,-1,-2,-2,0,-2,-1,1,0,-1,0,-1,4,1,0,-2,-3,-2,0,0,-4
-T: 0,-1,-1,-1,-1,-2,-2,-2,-1,-1,-1,-1,-1,0,0,-1,-1,-1,1,5,0,0,-2,-2,-1,0,-4
-U: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
-V: 0,-3,-1,-3,-2,-1,-3,-3,3,2,-2,1,1,-3,-1,-2,-2,-3,-2,0,-1,4,-3,-1,-2,-1,-4
-W: -3,-4,-2,-4,-3,1,-2,-2,-3,-3,-3,-2,-1,-4,-2,-4,-2,-3,-3,-2,-2,-3,11,2,-3,-2,-4
-Y: -2,-3,-2,-3,-2,3,-3,2,-1,-1,-2,-1,-1,-2,-1,-3,-1,-2,-2,-2,-1,-1,2,7,-2,-1,-4
-Z: -1,1,-3,1,4,-3,-2,0,-3,-3,1,-3,-1,0,-1,-1,3,0,0,-1,-1,-2,-3,-2,4,-1,-4
-X: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
-*: -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1
+ A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,Y,Z,X,*,
+A: 4,-2,0,-2,-1,-2,0,-2,-1,-1,-1,-1,-1,-2,-1,-1,-1,1,0,0,0,-3,-2,-1,0,-4
+B: -2,4,-3,4,1,-3,-1,0,-3,-4,0,-4,-3,3,-2,0,-1,0,-1,-1,-3,-4,-3,1,-1,-4
+C: 0,-3,9,-3,-4,-2,-3,-3,-1,-1,-3,-1,-1,-3,-3,-3,-3,-1,-1,-2,-1,-2,-2,-3,-2,-4
+D: -2,4,-3,6,2,-3,-1,-1,-3,-4,-1,-4,-3,1,-1,0,-2,0,-1,-1,-3,-4,-3,1,-1,-4
+E: -1,1,-4,2,5,-3,-2,0,-3,-3,1,-3,-2,0,-1,2,0,0,-1,-1,-2,-3,-2,4,-1,-4
+F: -2,-3,-2,-3,-3,6,-3,-1,0,0,-3,0,0,-3,-4,-3,-3,-2,-2,-1,-1,1,3,-3,-1,-4
+G: 0,-1,-3,-1,-2,-3,6,-2,-4,-4,-2,-4,-3,0,-2,-2,-2,0,-2,-1,-3,-2,-3,-2,-1,-4
+H: -2,0,-3,-1,0,-1,-2,8,-3,-3,-1,-3,-2,1,-2,0,0,-1,-2,-1,-3,-2,2,0,-1,-4
+I: -1,-3,-1,-3,-3,0,-4,-3,4,3,-3,2,1,-3,-3,-3,-3,-2,-1,-1,3,-3,-1,-3,-1,-4
+J: -1,-4,-1,-4,-3,0,-4,-3,3,3,-3,3,2,-3,-3,-3,-3,-2,-1,-1,2,-3,-1,-3,-1,-4
+K: -1,0,-3,-1,1,-3,-2,-1,-3,-3,5,-2,-1,0,-1,1,2,0,-1,-1,-2,-3,-2,1,-1,-4
+L: -1,-4,-1,-4,-3,0,-4,-3,2,3,-2,4,2,-3,-3,-2,-2,-2,-1,-1,1,-2,-1,-3,-1,-4
+M: -1,-3,-1,-3,-2,0,-3,-2,1,2,-1,2,5,-2,-2,0,-1,-1,-1,-1,1,-1,-1,-1,-1,-4
+N: -2,3,-3,1,0,-3,0,1,-3,-3,0,-3,-2,6,-2,0,0,1,0,-1,-3,-4,-2,0,-1,-4
+P: -1,-2,-3,-1,-1,-4,-2,-2,-3,-3,-1,-3,-2,-2,7,-1,-2,-1,-1,-2,-2,-4,-3,-1,-2,-4
+Q: -1,0,-3,0,2,-3,-2,0,-3,-3,1,-2,0,0,-1,5,1,0,-1,-1,-2,-2,-1,3,-1,-4
+R: -1,-1,-3,-2,0,-3,-2,0,-3,-3,2,-2,-1,0,-2,1,5,-1,-1,-1,-3,-3,-2,0,-1,-4
+S: 1,0,-1,0,0,-2,0,-1,-2,-2,0,-2,-1,1,-1,0,-1,4,1,0,-2,-3,-2,0,0,-4
+T: 0,-1,-1,-1,-1,-2,-2,-2,-1,-1,-1,-1,-1,0,-1,-1,-1,1,5,0,0,-2,-2,-1,0,-4
+U: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
+V: 0,-3,-1,-3,-2,-1,-3,-3,3,2,-2,1,1,-3,-2,-2,-3,-2,0,-1,4,-3,-1,-2,-1,-4
+W: -3,-4,-2,-4,-3,1,-2,-2,-3,-3,-3,-2,-1,-4,-4,-2,-3,-3,-2,-2,-3,11,2,-3,-2,-4
+Y: -2,-3,-2,-3,-2,3,-3,2,-1,-1,-2,-1,-1,-2,-3,-1,-2,-2,-2,-1,-1,2,7,-2,-1,-4
+Z: -1,1,-3,1,4,-3,-2,0,-3,-3,1,-3,-1,0,-1,3,0,0,-1,-1,-2,-3,-2,4,-1,-4
+X: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
+*: -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1
Alignment Score: 8
Alignment Length: 309
@@ -41,31 +40,30 @@ Score contribution by gap extensions: -600
Score contribution by gap openings: -624
#Pairs:
- A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,Y,Z,X,*,
-A: 30,0,0,3,6,0,4,0,4,0,5,7,0,4,0,4,4,5,1,2,0,6,0,0,0,0,0
-B: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-C: 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
-D: 4,0,0,13,22,0,1,0,2,0,8,3,0,5,0,3,3,1,1,5,0,4,0,0,0,0,0
-E: 5,0,0,10,25,0,0,0,2,0,5,4,0,4,0,3,7,4,0,2,0,2,0,1,0,0,0
-F: 0,0,0,0,0,8,0,0,2,0,3,4,3,1,0,0,0,1,0,1,0,5,2,0,0,0,0
-G: 2,0,0,3,3,0,34,0,3,0,3,0,0,1,0,2,6,3,9,5,0,3,0,2,0,0,0
-H: 1,0,0,0,0,0,0,1,1,0,1,0,0,2,0,0,4,0,0,0,0,0,0,0,0,0,0
-I: 10,0,0,0,4,2,0,0,6,0,0,9,0,0,0,0,0,1,0,2,0,14,0,0,0,0,0
-J: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-K: 1,0,0,3,2,0,1,0,2,0,24,4,0,5,0,1,2,4,1,4,0,4,0,0,0,0,0
-L: 5,0,0,0,3,4,0,0,14,0,3,23,4,0,0,1,2,3,2,2,0,13,0,2,0,0,0
-M: 0,0,0,0,0,3,0,0,0,0,0,2,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-N: 1,0,0,4,2,0,0,1,0,0,11,0,0,11,0,1,2,4,1,4,0,0,0,0,0,0,0
-O: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-P: 5,0,0,1,3,0,0,0,0,0,3,0,0,1,0,23,0,0,0,1,0,0,0,0,0,0,0
-Q: 4,0,0,6,1,0,1,0,1,0,8,3,0,2,0,5,2,1,0,0,0,2,0,1,0,0,0
-R: 2,0,0,0,1,1,0,1,1,0,10,2,0,6,0,3,3,17,3,6,0,2,0,1,0,0,0
-S: 0,0,0,0,4,0,1,1,0,0,8,0,0,0,0,1,0,0,2,5,0,0,0,0,0,0,0
-T: 3,0,0,2,3,0,2,1,0,0,13,3,0,3,0,7,2,3,6,10,0,3,0,5,0,0,0
-U: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-V: 7,0,0,0,2,5,0,0,18,0,1,12,0,0,0,2,0,0,1,1,0,36,0,0,0,0,0
-W: 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-Y: 0,0,0,0,0,0,0,0,2,0,1,0,0,1,0,2,2,0,1,1,0,0,0,3,0,0,0
-Z: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-X: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-*: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,Y,Z,X,*,
+A: 30,0,0,3,6,0,4,0,4,0,5,7,0,4,4,4,5,1,2,0,6,0,0,0,0,0
+B: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+C: 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
+D: 4,0,0,13,22,0,1,0,2,0,8,3,0,5,3,3,1,1,5,0,4,0,0,0,0,0
+E: 5,0,0,10,25,0,0,0,2,0,5,4,0,4,3,7,4,0,2,0,2,0,1,0,0,0
+F: 0,0,0,0,0,8,0,0,2,0,3,4,3,1,0,0,1,0,1,0,5,2,0,0,0,0
+G: 2,0,0,3,3,0,34,0,3,0,3,0,0,1,2,6,3,9,5,0,3,0,2,0,0,0
+H: 1,0,0,0,0,0,0,1,1,0,1,0,0,2,0,4,0,0,0,0,0,0,0,0,0,0
+I: 10,0,0,0,4,2,0,0,6,0,0,9,0,0,0,0,1,0,2,0,14,0,0,0,0,0
+J: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+K: 1,0,0,3,2,0,1,0,2,0,24,4,0,5,1,2,4,1,4,0,4,0,0,0,0,0
+L: 5,0,0,0,3,4,0,0,14,0,3,23,4,0,1,2,3,2,2,0,13,0,2,0,0,0
+M: 0,0,0,0,0,3,0,0,0,0,0,2,9,0,0,0,0,0,0,0,0,0,0,0,0,0
+N: 1,0,0,4,2,0,0,1,0,0,11,0,0,11,1,2,4,1,4,0,0,0,0,0,0,0
+P: 5,0,0,1,3,0,0,0,0,0,3,0,0,1,23,0,0,0,1,0,0,0,0,0,0,0
+Q: 4,0,0,6,1,0,1,0,1,0,8,3,0,2,5,2,1,0,0,0,2,0,1,0,0,0
+R: 2,0,0,0,1,1,0,1,1,0,10,2,0,6,3,3,17,3,6,0,2,0,1,0,0,0
+S: 0,0,0,0,4,0,1,1,0,0,8,0,0,0,1,0,0,2,5,0,0,0,0,0,0,0
+T: 3,0,0,2,3,0,2,1,0,0,13,3,0,3,7,2,3,6,10,0,3,0,5,0,0,0
+U: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+V: 7,0,0,0,2,5,0,0,18,0,1,12,0,0,2,0,0,1,1,0,36,0,0,0,0,0
+W: 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+Y: 0,0,0,0,0,0,0,0,2,0,1,0,0,1,2,2,0,1,1,0,0,0,3,0,0,0
+Z: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+X: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+*: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
diff --git a/apps/seqan_tcoffee/tests/2trx.i.fasta b/apps/seqan_tcoffee/tests/2trx.i.fasta
index 87f4e6a..e523153 100644
--- a/apps/seqan_tcoffee/tests/2trx.i.fasta
+++ b/apps/seqan_tcoffee/tests/2trx.i.fasta
@@ -2,34 +2,33 @@ Scoring parameters:
*Gap opening: -13
*Gap extension: -1
*Scoring matrix:
- A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,Y,Z,X,*,
-A: 4,-2,0,-2,-1,-2,0,-2,-1,-1,-1,-1,-1,-2,0,-1,-1,-1,1,0,0,0,-3,-2,-1,0,-4
-B: -2,4,-3,4,1,-3,-1,0,-3,-4,0,-4,-3,3,-1,-2,0,-1,0,-1,-1,-3,-4,-3,1,-1,-4
-C: 0,-3,9,-3,-4,-2,-3,-3,-1,-1,-3,-1,-1,-3,-2,-3,-3,-3,-1,-1,-2,-1,-2,-2,-3,-2,-4
-D: -2,4,-3,6,2,-3,-1,-1,-3,-4,-1,-4,-3,1,-1,-1,0,-2,0,-1,-1,-3,-4,-3,1,-1,-4
-E: -1,1,-4,2,5,-3,-2,0,-3,-3,1,-3,-2,0,-1,-1,2,0,0,-1,-1,-2,-3,-2,4,-1,-4
-F: -2,-3,-2,-3,-3,6,-3,-1,0,0,-3,0,0,-3,-1,-4,-3,-3,-2,-2,-1,-1,1,3,-3,-1,-4
-G: 0,-1,-3,-1,-2,-3,6,-2,-4,-4,-2,-4,-3,0,-1,-2,-2,-2,0,-2,-1,-3,-2,-3,-2,-1,-4
-H: -2,0,-3,-1,0,-1,-2,8,-3,-3,-1,-3,-2,1,-1,-2,0,0,-1,-2,-1,-3,-2,2,0,-1,-4
-I: -1,-3,-1,-3,-3,0,-4,-3,4,3,-3,2,1,-3,-1,-3,-3,-3,-2,-1,-1,3,-3,-1,-3,-1,-4
-J: -1,-4,-1,-4,-3,0,-4,-3,3,3,-3,3,2,-3,-1,-3,-3,-3,-2,-1,-1,2,-3,-1,-3,-1,-4
-K: -1,0,-3,-1,1,-3,-2,-1,-3,-3,5,-2,-1,0,-1,-1,1,2,0,-1,-1,-2,-3,-2,1,-1,-4
-L: -1,-4,-1,-4,-3,0,-4,-3,2,3,-2,4,2,-3,-1,-3,-2,-2,-2,-1,-1,1,-2,-1,-3,-1,-4
-M: -1,-3,-1,-3,-2,0,-3,-2,1,2,-1,2,5,-2,-1,-2,0,-1,-1,-1,-1,1,-1,-1,-1,-1,-4
-N: -2,3,-3,1,0,-3,0,1,-3,-3,0,-3,-2,6,-1,-2,0,0,1,0,-1,-3,-4,-2,0,-1,-4
-O: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
-P: -1,-2,-3,-1,-1,-4,-2,-2,-3,-3,-1,-3,-2,-2,-2,7,-1,-2,-1,-1,-2,-2,-4,-3,-1,-2,-4
-Q: -1,0,-3,0,2,-3,-2,0,-3,-3,1,-2,0,0,-1,-1,5,1,0,-1,-1,-2,-2,-1,3,-1,-4
-R: -1,-1,-3,-2,0,-3,-2,0,-3,-3,2,-2,-1,0,-1,-2,1,5,-1,-1,-1,-3,-3,-2,0,-1,-4
-S: 1,0,-1,0,0,-2,0,-1,-2,-2,0,-2,-1,1,0,-1,0,-1,4,1,0,-2,-3,-2,0,0,-4
-T: 0,-1,-1,-1,-1,-2,-2,-2,-1,-1,-1,-1,-1,0,0,-1,-1,-1,1,5,0,0,-2,-2,-1,0,-4
-U: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
-V: 0,-3,-1,-3,-2,-1,-3,-3,3,2,-2,1,1,-3,-1,-2,-2,-3,-2,0,-1,4,-3,-1,-2,-1,-4
-W: -3,-4,-2,-4,-3,1,-2,-2,-3,-3,-3,-2,-1,-4,-2,-4,-2,-3,-3,-2,-2,-3,11,2,-3,-2,-4
-Y: -2,-3,-2,-3,-2,3,-3,2,-1,-1,-2,-1,-1,-2,-1,-3,-1,-2,-2,-2,-1,-1,2,7,-2,-1,-4
-Z: -1,1,-3,1,4,-3,-2,0,-3,-3,1,-3,-1,0,-1,-1,3,0,0,-1,-1,-2,-3,-2,4,-1,-4
-X: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
-*: -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1
+ A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,Y,Z,X,*,
+A: 4,-2,0,-2,-1,-2,0,-2,-1,-1,-1,-1,-1,-2,-1,-1,-1,1,0,0,0,-3,-2,-1,0,-4
+B: -2,4,-3,4,1,-3,-1,0,-3,-4,0,-4,-3,3,-2,0,-1,0,-1,-1,-3,-4,-3,1,-1,-4
+C: 0,-3,9,-3,-4,-2,-3,-3,-1,-1,-3,-1,-1,-3,-3,-3,-3,-1,-1,-2,-1,-2,-2,-3,-2,-4
+D: -2,4,-3,6,2,-3,-1,-1,-3,-4,-1,-4,-3,1,-1,0,-2,0,-1,-1,-3,-4,-3,1,-1,-4
+E: -1,1,-4,2,5,-3,-2,0,-3,-3,1,-3,-2,0,-1,2,0,0,-1,-1,-2,-3,-2,4,-1,-4
+F: -2,-3,-2,-3,-3,6,-3,-1,0,0,-3,0,0,-3,-4,-3,-3,-2,-2,-1,-1,1,3,-3,-1,-4
+G: 0,-1,-3,-1,-2,-3,6,-2,-4,-4,-2,-4,-3,0,-2,-2,-2,0,-2,-1,-3,-2,-3,-2,-1,-4
+H: -2,0,-3,-1,0,-1,-2,8,-3,-3,-1,-3,-2,1,-2,0,0,-1,-2,-1,-3,-2,2,0,-1,-4
+I: -1,-3,-1,-3,-3,0,-4,-3,4,3,-3,2,1,-3,-3,-3,-3,-2,-1,-1,3,-3,-1,-3,-1,-4
+J: -1,-4,-1,-4,-3,0,-4,-3,3,3,-3,3,2,-3,-3,-3,-3,-2,-1,-1,2,-3,-1,-3,-1,-4
+K: -1,0,-3,-1,1,-3,-2,-1,-3,-3,5,-2,-1,0,-1,1,2,0,-1,-1,-2,-3,-2,1,-1,-4
+L: -1,-4,-1,-4,-3,0,-4,-3,2,3,-2,4,2,-3,-3,-2,-2,-2,-1,-1,1,-2,-1,-3,-1,-4
+M: -1,-3,-1,-3,-2,0,-3,-2,1,2,-1,2,5,-2,-2,0,-1,-1,-1,-1,1,-1,-1,-1,-1,-4
+N: -2,3,-3,1,0,-3,0,1,-3,-3,0,-3,-2,6,-2,0,0,1,0,-1,-3,-4,-2,0,-1,-4
+P: -1,-2,-3,-1,-1,-4,-2,-2,-3,-3,-1,-3,-2,-2,7,-1,-2,-1,-1,-2,-2,-4,-3,-1,-2,-4
+Q: -1,0,-3,0,2,-3,-2,0,-3,-3,1,-2,0,0,-1,5,1,0,-1,-1,-2,-2,-1,3,-1,-4
+R: -1,-1,-3,-2,0,-3,-2,0,-3,-3,2,-2,-1,0,-2,1,5,-1,-1,-1,-3,-3,-2,0,-1,-4
+S: 1,0,-1,0,0,-2,0,-1,-2,-2,0,-2,-1,1,-1,0,-1,4,1,0,-2,-3,-2,0,0,-4
+T: 0,-1,-1,-1,-1,-2,-2,-2,-1,-1,-1,-1,-1,0,-1,-1,-1,1,5,0,0,-2,-2,-1,0,-4
+U: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
+V: 0,-3,-1,-3,-2,-1,-3,-3,3,2,-2,1,1,-3,-2,-2,-3,-2,0,-1,4,-3,-1,-2,-1,-4
+W: -3,-4,-2,-4,-3,1,-2,-2,-3,-3,-3,-2,-1,-4,-4,-2,-3,-3,-2,-2,-3,11,2,-3,-2,-4
+Y: -2,-3,-2,-3,-2,3,-3,2,-1,-1,-2,-1,-1,-2,-3,-1,-2,-2,-2,-1,-1,2,7,-2,-1,-4
+Z: -1,1,-3,1,4,-3,-2,0,-3,-3,1,-3,-1,0,-1,3,0,0,-1,-1,-2,-3,-2,4,-1,-4
+X: 0,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,0,0,-1,-1,-2,-1,-1,-1,-4
+*: -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1
Alignment Score: -292
Alignment Length: 113
@@ -41,31 +40,30 @@ Score contribution by gap extensions: -86
Score contribution by gap openings: -546
#Pairs:
- A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,Y,Z,X,*,
-A: 4,0,0,0,2,1,3,0,2,0,2,5,1,0,0,0,0,1,5,2,0,1,0,0,0,0,0
-B: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-C: 0,0,6,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,0,0,0,0,0
-D: 0,0,0,5,5,0,4,0,0,0,2,0,2,8,0,2,0,2,5,0,0,1,0,0,0,0,0
-E: 3,0,0,7,5,0,2,1,1,0,4,0,0,1,0,0,2,2,4,0,0,1,0,0,0,0,0
-F: 0,0,0,1,0,8,0,0,3,0,0,2,0,0,0,0,0,0,1,0,0,3,0,2,0,0,0
-G: 1,0,0,2,0,0,6,0,0,0,1,0,0,0,0,1,0,2,7,1,0,1,1,1,0,0,0
-H: 0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0
-I: 3,0,0,1,0,3,0,1,2,0,2,4,0,1,0,0,0,0,0,0,0,4,0,0,0,0,0
-J: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-K: 1,0,1,3,9,2,2,0,1,0,9,1,0,2,0,1,1,2,3,1,0,2,0,1,0,0,0
-L: 2,0,3,0,0,7,0,0,6,0,1,9,1,0,0,0,0,1,3,2,0,9,0,1,0,0,0
-M: 3,0,0,0,0,0,0,0,1,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-N: 3,0,1,1,4,1,0,1,0,0,0,1,1,4,0,0,0,0,0,1,0,0,0,0,0,0,0
-O: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-P: 0,0,0,3,1,0,3,0,0,0,0,1,0,1,0,8,2,1,3,2,0,0,0,1,0,0,0
-Q: 0,0,1,3,3,0,3,0,1,0,3,3,0,0,0,0,5,0,0,3,0,2,0,0,0,0,0
-R: 2,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,2,0,0,0,0,0,0,2,0,0,0
-S: 4,0,3,5,1,0,0,0,1,0,2,0,0,3,0,2,0,0,3,2,0,2,0,1,0,0,0
-T: 2,0,0,2,3,4,1,0,0,0,2,0,0,0,0,0,1,0,2,1,0,4,0,0,0,0,0
-U: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-V: 6,0,1,1,0,4,2,0,5,0,3,3,2,1,0,0,1,0,3,0,0,15,1,2,0,0,0
-W: 1,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0
-Y: 0,0,1,1,1,3,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,0,3,0,0,0
-Z: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-X: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-*: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,Y,Z,X,*,
+A: 4,0,0,0,2,1,3,0,2,0,2,5,1,0,0,0,1,5,2,0,1,0,0,0,0,0
+B: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+C: 0,0,6,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,3,0,0,0,0,0
+D: 0,0,0,5,5,0,4,0,0,0,2,0,2,8,2,0,2,5,0,0,1,0,0,0,0,0
+E: 3,0,0,7,5,0,2,1,1,0,4,0,0,1,0,2,2,4,0,0,1,0,0,0,0,0
+F: 0,0,0,1,0,8,0,0,3,0,0,2,0,0,0,0,0,1,0,0,3,0,2,0,0,0
+G: 1,0,0,2,0,0,6,0,0,0,1,0,0,0,1,0,2,7,1,0,1,1,1,0,0,0
+H: 0,0,0,0,1,1,0,0,0,0,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0
+I: 3,0,0,1,0,3,0,1,2,0,2,4,0,1,0,0,0,0,0,0,4,0,0,0,0,0
+J: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+K: 1,0,1,3,9,2,2,0,1,0,9,1,0,2,1,1,2,3,1,0,2,0,1,0,0,0
+L: 2,0,3,0,0,7,0,0,6,0,1,9,1,0,0,0,1,3,2,0,9,0,1,0,0,0
+M: 3,0,0,0,0,0,0,0,1,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+N: 3,0,1,1,4,1,0,1,0,0,0,1,1,4,0,0,0,0,1,0,0,0,0,0,0,0
+P: 0,0,0,3,1,0,3,0,0,0,0,1,0,1,8,2,1,3,2,0,0,0,1,0,0,0
+Q: 0,0,1,3,3,0,3,0,1,0,3,3,0,0,0,5,0,0,3,0,2,0,0,0,0,0
+R: 2,0,0,0,1,0,0,0,0,0,0,1,1,0,0,2,0,0,0,0,0,0,2,0,0,0
+S: 4,0,3,5,1,0,0,0,1,0,2,0,0,3,2,0,0,3,2,0,2,0,1,0,0,0
+T: 2,0,0,2,3,4,1,0,0,0,2,0,0,0,0,1,0,2,1,0,4,0,0,0,0,0
+U: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+V: 6,0,1,1,0,4,2,0,5,0,3,3,2,1,0,1,0,3,0,0,15,1,2,0,0,0
+W: 1,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0
+Y: 0,0,1,1,1,3,1,0,1,0,1,0,0,1,1,0,1,0,0,0,0,0,3,0,0,0
+Z: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+X: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+*: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
diff --git a/apps/seqcons/CMakeLists.txt b/apps/seqcons/CMakeLists.txt
index 1172b98..0514e7f 100644
--- a/apps/seqcons/CMakeLists.txt
+++ b/apps/seqcons/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_seqcons)
message (STATUS "Configuring apps/seqcons")
-set (SEQAN_APP_VERSION "0.23.3")
+set (SEQAN_APP_VERSION "0.23.2")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/seqcons2/CMakeLists.txt b/apps/seqcons2/CMakeLists.txt
index a2e8f34..f2d8ef1 100644
--- a/apps/seqcons2/CMakeLists.txt
+++ b/apps/seqcons2/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_seqcons2)
message (STATUS "Configuring apps/seqcons2")
-set (SEQAN_APP_VERSION "2.0.1")
+set (SEQAN_APP_VERSION "2.0.0")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/sgip/CMakeLists.txt b/apps/sgip/CMakeLists.txt
index b3566ce..75332d3 100755
--- a/apps/sgip/CMakeLists.txt
+++ b/apps/sgip/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_sgip)
message (STATUS "Configuring apps/sgip")
-set (SEQAN_APP_VERSION "1.4")
+set (SEQAN_APP_VERSION "1.3")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/snp_store/CMakeLists.txt b/apps/snp_store/CMakeLists.txt
index 7885ba0..0a7c7c6 100644
--- a/apps/snp_store/CMakeLists.txt
+++ b/apps/snp_store/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_snp_store)
message (STATUS "Configuring apps/snp_store")
-set (SEQAN_APP_VERSION "1.3")
+set (SEQAN_APP_VERSION "1.2")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/splazers/CMakeLists.txt b/apps/splazers/CMakeLists.txt
index 9db1880..895e8a2 100644
--- a/apps/splazers/CMakeLists.txt
+++ b/apps/splazers/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_splazers)
message (STATUS "Configuring apps/splazers")
-set (SEQAN_APP_VERSION "1.3")
+set (SEQAN_APP_VERSION "1.2")
# ----------------------------------------------------------------------------
# Dependencies
@@ -20,11 +20,6 @@ set (SEQAN_APP_VERSION "1.3")
set (SEQAN_FIND_DEPENDENCIES NONE)
find_package (SeqAn REQUIRED)
-if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
- message (STATUS " Not building splazers on 32bit architectures.")
- return ()
-endif()
-
# ----------------------------------------------------------------------------
# Build Setup
# ----------------------------------------------------------------------------
diff --git a/apps/splazers/razers_spliced.h b/apps/splazers/razers_spliced.h
index 730b568..c3400dc 100644
--- a/apps/splazers/razers_spliced.h
+++ b/apps/splazers/razers_spliced.h
@@ -775,7 +775,7 @@ extendMatch(TReadSet &readSet, TSize rseqNo, TInf & inf, TMatch &m, TOptions &op
TQueryPrefix queryPrefix = prefix(readSet[rseqNo], beginPositionH(seed));
TDatabasePrefix databasePrefix = prefix(inf, beginPositionV(seed));
- extScore = _extendSeedGappedXDropOneDirection(seed, databasePrefix, queryPrefix, EXTEND_LEFT, scoreMatrix, scoreDropOff);
+ extScore = _extendSeedGappedXDropOneDirection(seed, queryPrefix, databasePrefix, EXTEND_LEFT, scoreMatrix, scoreDropOff);
// m.gBegin = leftDim1(seed) + beginPosition(inf);
// m.mScore = rightDim0(seed) - leftDim0(seed) + 1;
@@ -837,7 +837,7 @@ extendMatch(TReadSet &readSet, TSize rseqNo, TInf & inf, TMatch &m, TOptions &op
TQuerySuffix querySuffix = suffix(readSet[rseqNo], endPositionH(seed));
TDatabaseSuffix databaseSuffix = suffix(inf, endPositionV(seed));
- extScore = _extendSeedGappedXDropOneDirection(seed, databaseSuffix, querySuffix, EXTEND_RIGHT, scoreMatrix, scoreDropOff);
+ extScore = _extendSeedGappedXDropOneDirection(seed, querySuffix, databaseSuffix, EXTEND_RIGHT, scoreMatrix, scoreDropOff);
//extendSeedScore(seed,extScore,scoreDropOff,scoreMatrix, readSet[rseqNo],inf,1,GappedXDrop());
diff --git a/apps/stellar/CMakeLists.txt b/apps/stellar/CMakeLists.txt
index 5fe8a5d..1f77cab 100644
--- a/apps/stellar/CMakeLists.txt
+++ b/apps/stellar/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_stellar)
message (STATUS "Configuring apps/stellar")
-set (SEQAN_APP_VERSION "1.4.3")
+set (SEQAN_APP_VERSION "1.4.2")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/stellar/stellar.cpp b/apps/stellar/stellar.cpp
index 8eb133c..54081d9 100644
--- a/apps/stellar/stellar.cpp
+++ b/apps/stellar/stellar.cpp
@@ -581,8 +581,6 @@ void _setParser(ArgumentParser & parser)
// TODO(holtgrew): Move this into a SeqAn misc module.
-// not supported anymore in vc2015
-// https://msdn.microsoft.com/en-us/library/bb531344.aspx
class ScientificNotationExponentOutputNormalizer
{
public:
@@ -592,22 +590,19 @@ public:
_oldExponentFormat(0)
{
#ifdef PLATFORM_WINDOWS_VS
-#if _MSC_VER < 1900
// Set scientific format to print two places.
unsigned _oldExponentFormat = _set_output_format(_TWO_DIGIT_EXPONENT);
#endif
-#endif
}
~ScientificNotationExponentOutputNormalizer()
{
#ifdef PLATFORM_WINDOWS_VS
-#if _MSC_VER < 1900
// Enable old exponent format.
_set_output_format(_oldExponentFormat);
#endif
-#endif
}
+
};
///////////////////////////////////////////////////////////////////////////////
diff --git a/apps/tree_recon/CMakeLists.txt b/apps/tree_recon/CMakeLists.txt
index 39473a2..7496fd8 100644
--- a/apps/tree_recon/CMakeLists.txt
+++ b/apps/tree_recon/CMakeLists.txt
@@ -10,7 +10,7 @@ cmake_minimum_required (VERSION 2.8.2)
project (seqan_apps_tree_recon)
message (STATUS "Configuring apps/tree_recon")
-set (SEQAN_APP_VERSION "1.4")
+set (SEQAN_APP_VERSION "1.3")
# ----------------------------------------------------------------------------
# Dependencies
diff --git a/apps/yara/CMakeLists.txt b/apps/yara/CMakeLists.txt
index d368143..e6731bd 100644
--- a/apps/yara/CMakeLists.txt
+++ b/apps/yara/CMakeLists.txt
@@ -25,9 +25,9 @@ endif (NOT (CXX11_FOUND AND CXX11_STL_FOUND))
# Disable parallelism in MSVC as it supports only OpenMP 2.0.
if (MSVC)
- set (SEQAN_FIND_DEPENDENCIES ZLIB BZip2)
+ set (SEQAN_FIND_DEPENDENCIES ZLIB BZIP2)
else ()
- set (SEQAN_FIND_DEPENDENCIES OpenMP ZLIB BZip2)
+ set (SEQAN_FIND_DEPENDENCIES OpenMP ZLIB BZIP2)
endif ()
# Search SeqAn and select dependencies.
@@ -43,9 +43,9 @@ if (NOT SEQAN_HAS_ZLIB)
message (STATUS " Zlib not found: building yara without gzipped input and BAM output.")
endif (NOT SEQAN_HAS_ZLIB)
-# Warn if BZip2 was not found.
+# Warn if Bzip2 was not found.
if (NOT SEQAN_HAS_BZIP2)
- message (STATUS " BZip2 not found: building yara without bzipped input.")
+ message (STATUS " Bzip2 not found: building yara without bzipped input.")
endif (NOT SEQAN_HAS_BZIP2)
# ----------------------------------------------------------------------------
diff --git a/apps/yara/bits_context.h b/apps/yara/bits_context.h
index a6c28bb..78f74f0 100644
--- a/apps/yara/bits_context.h
+++ b/apps/yara/bits_context.h
@@ -50,8 +50,8 @@ struct ReadsContext
{
String<unsigned char> seedErrors;
String<unsigned char> minErrors;
- String<bool> mapped;
- String<bool> paired;
+ String<bool, Packed<> > mapped;
+ String<bool, Packed<> > paired;
};
// ============================================================================
diff --git a/apps/yara/mapper.cpp b/apps/yara/mapper.cpp
index d1b9788..38a1c56 100644
--- a/apps/yara/mapper.cpp
+++ b/apps/yara/mapper.cpp
@@ -193,14 +193,12 @@ void setupArgumentParser(ArgumentParser & parser, Options const & options)
// Setup performance options.
addSection(parser, "Performance Options");
+#ifdef _OPENMP
addOption(parser, ArgParseOption("t", "threads", "Specify the number of threads to use.", ArgParseOption::INTEGER));
setMinValue(parser, "threads", "1");
-#ifdef _OPENMP
setMaxValue(parser, "threads", "2048");
-#else
- setMaxValue(parser, "threads", "1");
-#endif
setDefaultValue(parser, "threads", options.threadsCount);
+#endif
addOption(parser, ArgParseOption("rb", "reads-batch", "Specify the number of reads to process in one batch.",
ArgParseOption::INTEGER));
@@ -285,7 +283,10 @@ parseCommandLine(Options & options, ArgumentParser & parser, int argc, char cons
getOptionValue(options.libraryError, parser, "library-error");
getOptionValue(options.libraryOrientation, parser, "library-orientation", options.libraryOrientationList);
+#ifdef _OPENMP
getOptionValue(options.threadsCount, parser, "threads");
+#endif
+
getOptionValue(options.readsCount, parser, "reads-batch");
if (isSet(parser, "verbose")) options.verbose = 1;
@@ -295,7 +296,7 @@ parseCommandLine(Options & options, ArgumentParser & parser, int argc, char cons
options.version = getVersion(parser);
// Get command line.
- for (int i = 0; i < argc; i++)
+ for (int i = 1; i < argc; i++)
{
append(options.commandLine, argv[i]);
appendValue(options.commandLine, ' ');
diff --git a/apps/yara/misc_options.h b/apps/yara/misc_options.h
index de76426..492c555 100644
--- a/apps/yara/misc_options.h
+++ b/apps/yara/misc_options.h
@@ -354,7 +354,7 @@ void setDescription(ArgumentParser & parser)
{
addDescription(parser, "Yara - Yet Another Read Aligner.");
addDescription(parser, "See \\fIhttp://www.seqan.de/projects/yara\\fP for more information.");
- addDescription(parser, "(c) Copyright 2011-2014 by Enrico Siragusa.");
+ addDescription(parser, "(c) Copyright 2011-2014 by Enrico Siragusa <enrico.siragusa at fu-berlin.de>.");
addDescription(parser, "(c) Copyright 2013 by NVIDIA Corporation.");
}
diff --git a/apps/yara/tests/gold/adeno-reads_1.t1.sam b/apps/yara/tests/gold/adeno-reads_1.t1.sam
index 44cdae2..76f4b96 100644
--- a/apps/yara/tests/gold/adeno-reads_1.t1.sam
+++ b/apps/yara/tests/gold/adeno-reads_1.t1.sam
@@ -1,5 +1,5 @@
@HD VN:1.4 SO:unsorted
- at PG ID:Yara PN:Yara VN:0.9.3 [1741c01] CL:/Users/esiragusa/Code/seqan-builds/Release-Gcc/bin/yara_mapper gold/adeno-genome input/adeno-reads_1.fa -o gold/adeno-reads_1.t1.sam --threads 1
+ at PG ID:Yara PN:Yara VN:0.9.3 [c4a5ded] CL:gold/adeno-genome input/adeno-reads_1.fa -o gold/adeno-reads_1.t1.sam --threads 1
@RG ID:none SM:none PG:Yara
@SQ SN:gi|9632547|ref|NC_002077.1| LN:4718
adeno-reads100.fasta.000000000 16 gi|9632547|ref|NC_002077.1| 4411 40 100M * 0 0 GTTACCTTACCCGTCCCCTGTAATTACGTGTTAATCAATAAACCGGTTGATTCGTTTCAGTTGAACTTTGGTCTCCTGTCCTTCTTATCTTATCGGTTAC IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII NM:i:0 X0:i:1 X1:i:0 XT:A:U RG:Z:none
diff --git a/demos/dox/align/align.cpp b/demos/align/align.cpp
similarity index 100%
rename from demos/dox/align/align.cpp
rename to demos/align/align.cpp
diff --git a/demos/dox/align/align.cpp.stdout b/demos/align/align.cpp.stdout
similarity index 100%
rename from demos/dox/align/align.cpp.stdout
rename to demos/align/align.cpp.stdout
diff --git a/demos/align/compute_alignment_stats.cpp b/demos/align/compute_alignment_stats.cpp
new file mode 100644
index 0000000..f4b0212
--- /dev/null
+++ b/demos/align/compute_alignment_stats.cpp
@@ -0,0 +1,66 @@
+#include <iostream>
+
+#include <seqan/align.h>
+#include <seqan/sequence.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Create an alignment between subject and query.
+ Peptide subject =
+ "MGLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE"
+ "DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISECIIQVLQSKH"
+ "PGDFGADAQGAMNKALELFRKDMASNYK";
+ Peptide query =
+ "MSLTKTERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHFDLHPGSA"
+ "QLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRVDPVNFKLLSHCLLVTLAARF"
+ "PADFTAEAHAAWDKFLSVTEKYR";
+
+ Align<Peptide> align;
+ resize(rows(align), 2);
+ setSource(row(align, 0), subject);
+ setSource(row(align, 1), query);
+
+ Blosum62 scoringScheme(-1, -12);
+ globalAlignment(align, scoringScheme);
+
+ // Compute the statistics of the alignment.
+ AlignmentStats stats;
+ int scoreVal = computeAlignmentStats(stats, align, scoringScheme);
+ SEQAN_ASSERT_EQ(scoreVal, stats.alignmentScore);
+ std::cout << align
+ << "gap opens: " << stats.numGapOpens << "\n"
+ << "gap extensions: " << stats.numGapExtensions << "\n"
+ << "num insertions: " << stats.numInsertions << "\n"
+ << "num deletions: " << stats.numDeletions << "\n"
+ << "num matches: " << stats.numMatches << "\n"
+ << "num mismatches: " << stats.numMismatches << "\n"
+ << "num positive scores: " << stats.numPositiveScores << "\n"
+ << "num negative scores: " << stats.numNegativeScores << "\n"
+ << "percent similarity: " << stats.alignmentSimilarity << "\n"
+ << "percent identity: " << stats.alignmentIdentity << "\n\n\n";
+
+ // Clip alignment rows and compute score of this view.
+ setClippedEndPosition(row(align, 0), 100);
+ setClippedEndPosition(row(align, 1), 100);
+ setClippedBeginPosition(row(align, 0), 5);
+ setClippedBeginPosition(row(align, 1), 5);
+
+ scoreVal = computeAlignmentStats(stats, align, scoringScheme);
+ SEQAN_ASSERT_EQ(scoreVal, stats.alignmentScore);
+ std::cout << "Clipping alignment to (5, 100)\n"
+ << align
+ << "gap opens: " << stats.numGapOpens << "\n"
+ << "gap extensions: " << stats.numGapExtensions << "\n"
+ << "num insertions: " << stats.numInsertions << "\n"
+ << "num deletions: " << stats.numDeletions << "\n"
+ << "num matches: " << stats.numMatches << "\n"
+ << "num mismatches: " << stats.numMismatches << "\n"
+ << "num positive scores: " << stats.numPositiveScores << "\n"
+ << "num negative scores: " << stats.numNegativeScores << "\n"
+ << "percent similarity: " << stats.alignmentSimilarity << "\n"
+ << "percent identity: " << stats.alignmentIdentity << "\n";
+
+ return 0;
+}
diff --git a/demos/align/compute_alignment_stats.cpp.stdout b/demos/align/compute_alignment_stats.cpp.stdout
new file mode 100644
index 0000000..027d946
--- /dev/null
+++ b/demos/align/compute_alignment_stats.cpp.stdout
@@ -0,0 +1,50 @@
+ 0 . : . : . : . : . :
+ MGLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHL
+ | | | | | | | | ||| || | | |
+ MSLTKTERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHF---
+
+ 50 . : . : . : . : . :
+ KSEDEMKASEDLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKI
+ | | | || | | | | | ||
+ ---DLHPGSAQLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRV
+
+ 100 . : . : . : . : .
+ PVKYLEFISECIIQVLQSKHPGDFGADAQGAMNKALELFRKDMASNYK
+ | | | | || | | | | | | |
+ DPVNFKLLSHCLLVTLAARFPADFTAEAHAAWDKFLSVTEK-----YR
+
+
+gap opens: 2
+gap extensions: 9
+num insertions: 11
+num deletions: 0
+num matches: 41
+num mismatches: 96
+num positive scores: 91
+num negative scores: 46
+percent similarity: 61.4865
+percent identity: 27.7027
+
+
+Clipping alignment to (5, 100)
+ 0 . : . : . : . : . :
+ GEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDE
+ | | | | | | ||| || | | | |
+ TERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHF------DL
+
+ 50 . : . : . : . : .
+ MKASEDLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKI
+ | | || | | | | | ||
+ HPGSAQLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRV
+
+
+gap opens: 1
+gap extensions: 5
+num insertions: 6
+num deletions: 0
+num matches: 26
+num mismatches: 63
+num positive scores: 55
+num negative scores: 34
+percent similarity: 57.8947
+percent identity: 27.3684
diff --git a/demos/dox/align/gaps_example.cpp b/demos/align/gaps_example.cpp
similarity index 100%
rename from demos/dox/align/gaps_example.cpp
rename to demos/align/gaps_example.cpp
diff --git a/demos/dox/align/gaps_example.cpp.stdout b/demos/align/gaps_example.cpp.stdout
similarity index 100%
rename from demos/dox/align/gaps_example.cpp.stdout
rename to demos/align/gaps_example.cpp.stdout
diff --git a/demos/dox/align/global_alignment_banded.cpp b/demos/align/global_alignment_banded.cpp
similarity index 100%
rename from demos/dox/align/global_alignment_banded.cpp
rename to demos/align/global_alignment_banded.cpp
diff --git a/demos/dox/align/global_alignment_banded.cpp.stdout b/demos/align/global_alignment_banded.cpp.stdout
similarity index 100%
rename from demos/dox/align/global_alignment_banded.cpp.stdout
rename to demos/align/global_alignment_banded.cpp.stdout
diff --git a/demos/dox/align/global_alignment_unbanded.cpp b/demos/align/global_alignment_unbanded.cpp
similarity index 100%
rename from demos/dox/align/global_alignment_unbanded.cpp
rename to demos/align/global_alignment_unbanded.cpp
diff --git a/demos/dox/align/global_alignment_unbanded.cpp.stdout b/demos/align/global_alignment_unbanded.cpp.stdout
similarity index 100%
rename from demos/dox/align/global_alignment_unbanded.cpp.stdout
rename to demos/align/global_alignment_unbanded.cpp.stdout
diff --git a/demos/dox/align/integrate_align.cpp b/demos/align/integrate_align.cpp
similarity index 100%
rename from demos/dox/align/integrate_align.cpp
rename to demos/align/integrate_align.cpp
diff --git a/demos/dox/align/integrate_align.cpp.stdout b/demos/align/integrate_align.cpp.stdout
similarity index 100%
rename from demos/dox/align/integrate_align.cpp.stdout
rename to demos/align/integrate_align.cpp.stdout
diff --git a/demos/dox/align_extend/extend_alignment.cpp b/demos/align_extend/extend_alignment.cpp
similarity index 100%
rename from demos/dox/align_extend/extend_alignment.cpp
rename to demos/align_extend/extend_alignment.cpp
diff --git a/demos/dox/align_extend/extend_alignment.cpp.stdout b/demos/align_extend/extend_alignment.cpp.stdout
similarity index 100%
rename from demos/dox/align_extend/extend_alignment.cpp.stdout
rename to demos/align_extend/extend_alignment.cpp.stdout
diff --git a/demos/align_gaps_clipping.cpp b/demos/align_gaps_clipping.cpp
new file mode 100644
index 0000000..c09f659
--- /dev/null
+++ b/demos/align_gaps_clipping.cpp
@@ -0,0 +1,74 @@
+// Demo program for clipping with Gaps objects.
+
+#include <iostream>
+
+#include <seqan/sequence.h>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Position<Gaps<CharString> >::Type TPos;
+
+ // Create sequence variable and gaps basd on sequence.
+ CharString seq("ABCDEFGHIJ");
+ Gaps<CharString> gaps(seq);
+
+ // Insert gaps, the positions are in (clipped) view space.
+ insertGaps(gaps, 2, 2);
+ insertGap(gaps, 6);
+ insertGap(gaps, 10);
+
+ // Print to stdout.
+ std::cout << "gaps\t" << gaps << "\n"
+ << "seq \t" << seq << "\n\n";
+
+ // Print the begin and end positions in sequence space and the clipped
+ // begin and end positions in gap space. We have no clipping, so no
+ // surprises here.
+ std::cout << "beginPosition(gaps) == " << beginPosition(gaps) << "\n"
+ << "endPosition(gaps) == " << endPosition(gaps) << "\n"
+ << "clippedBeginPosition(gaps) == " << clippedBeginPosition(gaps) << "\n"
+ << "clippedEndPosition(gaps) == " << clippedEndPosition(gaps) << "\n\n";
+
+ // Now, clip the alignment and again print the gaps, sequence and begin/end
+ // positions. Note that the clipping positions are relative to the unclipped
+ // view.
+ setClippedBeginPosition(gaps, 3);
+ setClippedEndPosition(gaps, 10);
+
+ std::cout << "gaps\t" << gaps << "\n"
+ << "seq \t" << infix(seq, beginPosition(gaps), endPosition(gaps)) << "\n\n";
+
+ std::cout << "beginPosition(gaps) == " << beginPosition(gaps) << "\n"
+ << "endPosition(gaps) == " << endPosition(gaps) << "\n"
+ << "clippedBeginPosition(gaps) == " << clippedBeginPosition(gaps) << "\n"
+ << "clippedEndPosition(gaps) == " << clippedEndPosition(gaps) << "\n\n";
+
+ // We can translate between the (clipped) gapped position (aka view) and
+ // the unclipped ungapped positions (aka) source using toSourcePosition()
+ // and toViewPosition(). Note that because of projection to the right of
+ // gaps, these operations are not symmetric.
+ std::cout << "4 view position => " << toSourcePosition(gaps, 4) << " source position\n"
+ << "2 source position => " << toViewPosition(gaps, 2) << " view position\n\n";
+
+ // Translating between clipped gapped and unclipped gapped position can
+ // be done by adding/subtracting clippedBeginPosition(gaps).
+ std::cout << "3 clipped gapped => " << 3 + clippedBeginPosition(gaps) << " unclipped gapped\n"
+ << "6 unclipped gapped => " << 5 - clippedBeginPosition(gaps) << " clipped gapped\n\n";
+
+ // Translating between clipped ungapped and unclipped ungapped position can
+ // be done by adding/subtracing beginPosition(gaps). Since there are no
+ // gaps, this operation is symmetric.
+ std::cout << "3 clipped ungapped => " << 3 + beginPosition(gaps) << " unclipped ungapped\n"
+ << "5 unclipped ungapped => " << 5 - beginPosition(gaps) << " clipped ungapped\n\n";
+
+ // Translating between gapped clipped position and ungapped clipped
+ // position and between gapped unclipped and ungapped unclipped positions
+ // has to be done using the translations above.
+ std::cout << "3 clipped gapped => " << toSourcePosition(gaps, 3) - beginPosition(gaps) << " clipped ungapped\n"
+ << "4 unclipped ungapped => " << toViewPosition(gaps, 4) + clippedBeginPosition(gaps) << " unclipped gapped\n";
+
+ return 0;
+}
diff --git a/demos/dox/align_profile/profile_seq_frac_score.cpp b/demos/align_profile/profile_seq_frac_score.cpp
similarity index 100%
rename from demos/dox/align_profile/profile_seq_frac_score.cpp
rename to demos/align_profile/profile_seq_frac_score.cpp
diff --git a/demos/dox/align_profile/profile_seq_score.cpp b/demos/align_profile/profile_seq_score.cpp
similarity index 100%
rename from demos/dox/align_profile/profile_seq_score.cpp
rename to demos/align_profile/profile_seq_score.cpp
diff --git a/demos/dox/align_split/split_alignment.cpp b/demos/align_split/split_alignment.cpp
similarity index 100%
rename from demos/dox/align_split/split_alignment.cpp
rename to demos/align_split/split_alignment.cpp
diff --git a/demos/dox/align_split/split_alignment.cpp.stdout b/demos/align_split/split_alignment.cpp.stdout
similarity index 100%
rename from demos/dox/align_split/split_alignment.cpp.stdout
rename to demos/align_split/split_alignment.cpp.stdout
diff --git a/demos/alignment.cpp b/demos/alignment.cpp
new file mode 100644
index 0000000..87ac745
--- /dev/null
+++ b/demos/alignment.cpp
@@ -0,0 +1,51 @@
+///A tutorial about global alignments.
+//#include <iostream>
+
+#include <seqan/basic.h>
+#include <seqan/stream.h>
+#include <seqan/align.h>
+
+int main()
+{
+ using namespace seqan;
+ typedef Value<Gaps<Dna5String, ArrayGaps> >::Type TValue;
+ using namespace seqan;
+
+///Two DNA sequences that shall be aligned.
+ typedef String<Dna> TSequence;
+ TSequence seq1 = "atcgaatgcgga";
+ TSequence seq2 = "actcgttgca";
+///Scoring objects are used to define a scoring scheme.
+///In this case, affine gap costs with match = 0, mismatch = -1, gapextend = -1 and gapopen = -2.
+ Score<int> scoringScheme(0, -1, -1, -2);
+///Example 1: We use @Class.Align@ to align the two sequences.
+///Since we do not specify an @Tag.Pairwise Global Alignment Algorithms|algorithm tag@ when we call @Function.globalAlignment@,
+///a suitable algorithm (@Tag.Pairwise Global Alignment Algorithms|Gotoh@) is automatically choosen.
+ Align<TSequence, ArrayGaps> align;
+ resize(rows(align), 2);
+ assignSource(row(align, 0), seq1);
+ assignSource(row(align, 1), seq2);
+
+ int score = globalAlignment(align, scoringScheme);
+ std::cout << "Score = " << score << std::endl;
+ std::cout << align << std::endl;
+///Example 2: We now choose explicitely the algorithm @Tag.Pairwise Global Alignment Algorithms|MyersHirschberg at .
+///Since this algorithm always works on Levenshtein distance, we do not need score.
+ score = globalAlignment(align, MyersHirschberg());
+ std::cout << "Score = " << score << std::endl;
+ std::cout << align << std::endl;
+///Example 3: We now do the same as in case 1, but now we use an @Spec.Alignment Graph@ for storing the alignment.
+///Here we use @Tag.Pairwise Global Alignment Algorithms|Gotoh's algorithm at .
+ typedef StringSet<TSequence, Dependent<> > TStringSet;
+ typedef Graph<Alignment<TStringSet, void> > TAlignmentGraph;
+
+ TStringSet string_set;
+ appendValue(string_set, seq1);
+ appendValue(string_set, seq2);
+ TAlignmentGraph alignment_graph(string_set);
+
+ score = globalAlignment(alignment_graph, scoringScheme, Gotoh());
+ std::cout << "Score = " << score << std::endl;
+ std::cout << alignment_graph << std::endl;
+ return 0;
+}
diff --git a/demos/alignment_local.cpp b/demos/alignment_local.cpp
new file mode 100644
index 0000000..60bad91
--- /dev/null
+++ b/demos/alignment_local.cpp
@@ -0,0 +1,91 @@
+///A tutorial about local alignments.
+#include <iostream>
+#include <seqan/score.h>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+///Example 1: This program applies the Smith-Waterman algorithm to compute the best local alignment between two given sequences.
+ StringSet<CharString> strings;
+ Align<String<char> > ali;
+ resize(rows(ali), 2);
+ assignSource(row(ali, 0), "aphilologicaltheorem");
+ assignSource(row(ali, 1), "bizarreamphibology");
+ int score = localAlignment(ali, Score<int>(3, -3, -2, -2));
+ std::cout << "Score = " << score << std::endl;
+ std::cout << ali;
+ unsigned cBeginPos = clippedBeginPosition(row(ali, 0));
+ unsigned cEndPos = clippedEndPosition(row(ali, 0)) - 1;
+ std::cout << "Aligns Seq1[" << cBeginPos << ":" << cEndPos << "]";
+ std::cout << " and Seq2[" << cBeginPos << ":" << cEndPos << "]" << std::endl << std::endl;
+
+
+///Example 2: This program applies the Waterman-Eggert algorithm to compute all non-overlapping local alignments with score better or equal 2.
+ Align<String<Dna> > ali2;
+ resize(rows(ali2), 2);
+ assignSource(row(ali2, 0), "ataagcgtctcg");
+ assignSource(row(ali2, 1), "tcatagagttgc");
+
+ Score<int> scoring(2, -1, -2, 0);
+ LocalAlignmentEnumerator<Score<int>, Unbanded> enumerator(scoring, 2);
+ while (nextLocalAlignment(ali2, enumerator))
+ {
+ std::cout << "Score = " << getScore(enumerator) << std::endl;
+ std::cout << ali2;
+ unsigned cBeginPos0 = clippedBeginPosition(row(ali2, 0));
+ unsigned cEndPos0 = clippedEndPosition(row(ali2, 0)) - 1;
+ unsigned cBeginPos1 = clippedBeginPosition(row(ali2, 1));
+ unsigned cEndPos1 = clippedBeginPosition(row(ali2, 1)) - 1;
+ std::cout << "Aligns Seq1[" << cBeginPos0 << ":" << cEndPos0 << "]";
+ std::cout << " and Seq2[" << cBeginPos1 << ":" << cEndPos1 << "]";
+ std::cout << std::endl << std::endl;
+ }
+
+///Example 3
+ Align<String<Dna> > ali3;
+ resize(rows(ali3), 2);
+ assignSource(row(ali3, 0), "cccccc");
+ assignSource(row(ali3, 1), "tttttggccccccgg");
+
+ Score<int> scoring3(1, -1, -1, -1);
+ LocalAlignmentEnumerator<Score<int>, Unbanded> enumerator3(scoring3, 5);
+ while (nextLocalAlignment(ali3, enumerator3))
+ {
+ std::cout << "Score = " << getScore(enumerator3) << std::endl;
+ std::cout << ali3;
+ unsigned cBeginPos0 = clippedBeginPosition(row(ali3, 0));
+ unsigned cEndPos0 = clippedEndPosition(row(ali3, 0)) - 1;
+ unsigned cBeginPos1 = clippedBeginPosition(row(ali3, 1));
+ unsigned cEndPos1 = clippedEndPosition(row(ali3, 1)) - 1;
+ std::cout << "Aligns Seq1[" << cBeginPos0 << ":" << cEndPos0 << "]";
+ std::cout << " and Seq2[" << cBeginPos1 << ":" << cEndPos1 << "]";
+ std::cout << std::endl << std::endl;
+ }
+
+///Example 4: This program applies the banded Waterman-Eggert algorithm to compute all non-overlapping local alignments with score or equal 5
+/// in the band from diagonal -1 to diagonal 8.
+ Align<String<Dna5> > ali4;
+ resize(rows(ali4), 2);
+ assignSource(row(ali4, 0), "AAAAAAANAAAGGGNGGGGGGGGNGGGGGANAA");
+ assignSource(row(ali4, 1), "GGGGGGCGGGGGGGA");
+
+ LocalAlignmentFinder<> finder4(ali4);
+ Score<int> scoring4(1, -1, -1, -1);
+ LocalAlignmentEnumerator<Score<int>, Banded> enumerator4(scoring3, -1, 8, 5);
+ while (nextLocalAlignment(ali4, enumerator4))
+ {
+ std::cout << "Score = " << getScore(enumerator4) << std::endl;
+ std::cout << ali4;
+ unsigned cBeginPos0 = clippedBeginPosition(row(ali4, 0));
+ unsigned cEndPos0 = clippedEndPosition(row(ali4, 0)) - 1;
+ unsigned cBeginPos1 = clippedBeginPosition(row(ali4, 1));
+ unsigned cEndPos1 = clippedEndPosition(row(ali4, 1)) - 1;
+ std::cout << "Aligns Seq1[" << cBeginPos0 << ":" << cEndPos0 << "]";
+ std::cout << " and Seq2[" << cBeginPos1 << ":" << cEndPos1 << "]";
+ std::cout << std::endl << std::endl;
+ }
+
+ return 0;
+}
diff --git a/demos/allocator.cpp b/demos/allocator.cpp
new file mode 100644
index 0000000..748f4f5
--- /dev/null
+++ b/demos/allocator.cpp
@@ -0,0 +1,28 @@
+///A tutorial about the use of allocators.
+
+#include <seqan/basic.h>
+using namespace seqan;
+
+///We define an arbitrary class.
+struct MyClass
+{};
+
+int main()
+{
+///We create 100 instances of $MyClass$ on the heap
+///using a default temporary allocator object $Default$.
+ MyClass * my_class_arr;
+ allocate(Default(), my_class_arr, 100);
+ arrayConstruct(my_class_arr, my_class_arr + 100);
+///Before the storage is deallocated, the $MyClass$ objects have to be destroyed.
+ arrayDestruct(my_class_arr, my_class_arr + 100);
+ deallocate(Default(), my_class_arr, 100);
+///We can use any kind of object as an allocator.
+///However, dedicated allocators offer more advanced functionality, e.g. @Function.clear at .
+ Allocator<SimpleAlloc<> > alloc1;
+ char * char_array;
+ allocate(alloc1, char_array, 300);
+///@Function.clear@ can be used to deallocate all storage at once.
+ clear(alloc1);
+ return 0;
+}
diff --git a/demos/unassigned_or_unused/alphabet.cpp b/demos/alphabet.cpp
similarity index 100%
rename from demos/unassigned_or_unused/alphabet.cpp
rename to demos/alphabet.cpp
diff --git a/demos/unassigned_or_unused/annotation_converter.cpp b/demos/annotation_converter.cpp
similarity index 100%
rename from demos/unassigned_or_unused/annotation_converter.cpp
rename to demos/annotation_converter.cpp
diff --git a/demos/unassigned_or_unused/arg_align.README b/demos/arg_align.README
similarity index 100%
rename from demos/unassigned_or_unused/arg_align.README
rename to demos/arg_align.README
diff --git a/demos/unassigned_or_unused/arg_align.cpp b/demos/arg_align.cpp
similarity index 100%
rename from demos/unassigned_or_unused/arg_align.cpp
rename to demos/arg_align.cpp
diff --git a/demos/dox/arg_parse/argument_parser.cpp b/demos/arg_parse/argument_parser.cpp
similarity index 100%
rename from demos/dox/arg_parse/argument_parser.cpp
rename to demos/arg_parse/argument_parser.cpp
diff --git a/demos/dox/bam_io/bam_file_in.cpp b/demos/bam_io/bam_file_in.cpp
similarity index 100%
rename from demos/dox/bam_io/bam_file_in.cpp
rename to demos/bam_io/bam_file_in.cpp
diff --git a/demos/bam_io/bam_tags_dict.cpp b/demos/bam_io/bam_tags_dict.cpp
new file mode 100644
index 0000000..ac90018
--- /dev/null
+++ b/demos/bam_io/bam_tags_dict.cpp
@@ -0,0 +1,36 @@
+#include <iostream>
+#include <seqan/stream.h>
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ CharString bamStr, samStr = "AA:Z:value1\tAB:Z:value2\tAC:i:30";
+ assignTagsSamToBam(bamStr, samStr);
+ BamTagsDict tags(bamStr);
+ std::cout << length(tags) << std::endl; // #=> "3"
+ for (unsigned id = 0; id < length(tags); ++id)
+ {
+ std::cout << getTagKey(tags, id) << " -> ";
+
+ if (getTagType(tags, id) == 'i') // is 32 bit integer
+ {
+ __int32 x = 0;
+ bool res = extractTagValue(x, tags, id);
+ SEQAN_ASSERT_MSG(res, "Not a valid integer at pos %u!", id);
+ std::cout << x;
+ }
+ if (getTagType(tags, id) == 'Z') // is string
+ {
+ CharString str;
+ bool res = extractTagValue(str, tags, id);
+ SEQAN_ASSERT_MSG(res, "Not a valid string at pos %u!", id);
+ std::cout << '"' << str << '"';
+ }
+
+ std::cout << std::endl;
+ }
+
+ return 0;
+}
diff --git a/demos/dox/bam_io/bam_tags_dict.cpp.stdout b/demos/bam_io/bam_tags_dict.cpp.stdout
similarity index 100%
rename from demos/dox/bam_io/bam_tags_dict.cpp.stdout
rename to demos/bam_io/bam_tags_dict.cpp.stdout
diff --git a/demos/bam_library_size.cpp b/demos/bam_library_size.cpp
new file mode 100644
index 0000000..a0ea80f
--- /dev/null
+++ b/demos/bam_library_size.cpp
@@ -0,0 +1,271 @@
+// ==========================================================================
+// SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// * Neither the name of Knut Reinert or the FU Berlin nor the names of
+// its contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Tobias Rausch <rausch at embl.de>
+// Author: Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>
+// ==========================================================================
+// Shows how to use the bam_io module to estimate the insert size from a SAM
+// or BAM file.
+// ==========================================================================
+
+#include <iostream>
+#include <vector>
+
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+#include <seqan/bam_io.h>
+
+#if SEQAN_HAS_ZLIB
+
+using namespace seqan;
+
+// Stores information about a library.
+
+struct LibraryInfo
+{
+ // This is the notation introduced by Illumina.
+ //
+ // F+: >R1 R2>
+ // F-: >R2 R1>
+ // R+: >R1 R2<
+ // R-: <R2 R1>
+ enum Orientation
+ {
+ F_PLUS = 0,
+ F_MINUS = 1,
+ R_PLUS = 2,
+ R_MINUS = 3
+ };
+
+ unsigned median;
+ double stdDev;
+ unsigned maxNormalISize;
+ Orientation defaultOrient;
+
+ LibraryInfo() :
+ median(0), stdDev(0), maxNormalISize(0), defaultOrient(F_PLUS)
+ {}
+};
+
+inline int
+getStrandIndependentOrientation(BamAlignmentRecord const & rec)
+{
+ if (!hasFlagRC(rec))
+ {
+ if (!(hasFlagNextRC(rec)))
+ {
+ return (rec.beginPos < rec.pNext) ? LibraryInfo::F_PLUS : LibraryInfo::F_MINUS;
+ }
+ else
+ {
+ return (rec.beginPos < rec.pNext) ? LibraryInfo::R_PLUS : LibraryInfo::R_MINUS;
+ }
+ }
+ else
+ {
+ if (!hasFlagNextRC(rec))
+ {
+ return (rec.beginPos > rec.pNext) ? LibraryInfo::R_PLUS : LibraryInfo::R_MINUS;
+ }
+ else
+ {
+ return (rec.beginPos > rec.pNext) ? LibraryInfo::F_PLUS : LibraryInfo::F_MINUS;
+ }
+ }
+}
+
+bool endsWith(CharString const & str, CharString const & x)
+{
+ typedef Size<CharString>::Type TSize;
+
+ TSize len = std::min(length(str), length(x));
+ TSize pos = length(str) - len;
+ return suffix(str, pos) == x;
+}
+
+bool performEstimation(LibraryInfo & libInfo, BamFileIn & bamFileIn)
+{
+ typedef StringSet<String<char> > TNameStore;
+ typedef NameStoreCache<TNameStore> TNameStoreCache;
+
+ // Vector of all insert sizes.
+ typedef std::vector<unsigned int> TVecISize;
+ TVecISize vecISize;
+
+ // Read Header.
+ BamHeader header;
+ readHeader(header, bamFileIn);
+
+ // Orientations.
+ unsigned orientationCounters[4] = {0, 0, 0, 0};
+
+ // Running mean.
+ __uint64 runningMean = 0;
+ unsigned pairCount = 0;
+
+ // Count.
+ BamAlignmentRecord record;
+ while (!atEnd(bamFileIn))
+ {
+ readRecord(record, bamFileIn);
+
+ // Skip all records except for first mate of properly mapped pairs.
+ if (!hasFlagMultiple(record) || hasFlagUnmapped(record) || hasFlagNextUnmapped(record) ||
+ hasFlagSecondary(record) || hasFlagFirst(record))
+ continue;
+
+ vecISize.push_back(abs(record.tLen));
+ runningMean += abs(record.tLen);
+ pairCount += 1;
+
+ orientationCounters[getStrandIndependentOrientation(record)] += 1;
+ }
+
+ // Get default orientation.
+ unsigned orientMax = 0;
+ for (unsigned i = 0; i < 4; ++i)
+ if (orientationCounters[i] > orientationCounters[orientMax])
+ orientMax = i;
+ LibraryInfo::Orientation orientations[4] = { LibraryInfo::F_PLUS, LibraryInfo::F_MINUS, LibraryInfo::R_PLUS, LibraryInfo::R_MINUS };
+ libInfo.defaultOrient = orientations[orientMax];
+
+ // Trim off the chimera peak in mate-pair libraries.
+ if ((libInfo.defaultOrient == LibraryInfo::R_MINUS) && (pairCount > 0) && (runningMean / pairCount) >= 1000u)
+ {
+ typedef TVecISize::const_iterator TVecISizeIter;
+ TVecISize vecISizeTmp;
+ for (TVecISizeIter it = vecISize.begin(); it < vecISize.end(); ++it)
+ if (*it > 1000)
+ vecISizeTmp.push_back(*it);
+ std::swap(vecISize, vecISizeTmp);
+ }
+
+
+ // Check that this is a proper paired-end library
+ if (vecISize.empty())
+ return true;
+
+ // Get library stats.
+ //
+ // Start with median.
+ typedef TVecISize::iterator TVecISizeIter;
+ TVecISizeIter begin = vecISize.begin();
+ TVecISizeIter end = vecISize.end();
+ std::nth_element(begin, begin + (end - begin) / 2, end);
+ begin = vecISize.begin();
+ end = vecISize.end();
+ libInfo.median = *(begin + (end - begin) / 2);
+ // Standard deviation is next.
+ //
+ // SD calculation cutoffs are 7 SDs to the left and right assuming 10% library deviation.
+ libInfo.stdDev = 0;
+ double cutoffMax = libInfo.median + 7 * 0.1 * libInfo.median;
+ double cutoffMin = libInfo.median - 7 * 0.1 * libInfo.median;
+ if ((cutoffMin < 0) || (cutoffMax < cutoffMin))
+ cutoffMin = 0;
+ unsigned int count = 0;
+ for (; begin < end; ++begin)
+ {
+ if ((*begin >= cutoffMin) && (*begin <= cutoffMax))
+ {
+ libInfo.stdDev += (*begin - libInfo.median) * (*begin - libInfo.median);
+ ++count;
+ }
+ }
+ if (count == 0u) // prevent div-by-zero below
+ count = 1;
+ libInfo.stdDev = sqrt(libInfo.stdDev / count);
+ libInfo.maxNormalISize = static_cast<unsigned>(libInfo.median + 3 * libInfo.stdDev);
+
+ return true;
+}
+
+int main(int argc, char const ** argv)
+{
+ if (argc != 2)
+ {
+ std::cerr << "Invalid arguments!\n"
+ << "USAGE: bam_library_size {IN.sam,IN.bam}\n";
+ return 1;
+ }
+
+ LibraryInfo libInfo;
+
+ BamFileIn bamFileIn;
+ if (!open(bamFileIn, argv[1]))
+ {
+ std::cerr << "Could not open input SAM/BAM file " << argv[1] << "\n";
+ return 1;
+ }
+
+ if (!performEstimation(libInfo, bamFileIn))
+ return 1;
+
+ // Print result.
+ std::cout << "Library Information\n\n"
+ << "path: " << argv[1] << "\n"
+ << "median: " << libInfo.median << "\n"
+ << "standard deviation: " << libInfo.stdDev << "\n"
+ << "maximum normal insert size: " << libInfo.maxNormalISize << "\n";
+
+ std::cout << "orientation: ";
+ switch (libInfo.defaultOrient)
+ {
+ case LibraryInfo::F_PLUS:
+ std::cout << "F+ R1 ---> ---> R2\n";
+ break;
+
+ case LibraryInfo::F_MINUS:
+ std::cout << "F- R1 ---> ---> R2\n";
+ break;
+
+ case LibraryInfo::R_PLUS:
+ std::cout << "R+ R1 ---> <--- R2\n";
+ break;
+
+ case LibraryInfo::R_MINUS:
+ std::cout << "R- R1 <--- ---> R2\n";
+ break;
+ }
+
+ return 0;
+}
+
+#else
+
+int main(int, char const **)
+{
+ std::cerr << "bam_library_size can only be compiled correctly with zlib." << std::endl;
+ return 0;
+}
+
+#endif // #if SEQAN_HAS_ZLIB
diff --git a/demos/unassigned_or_unused/bam_print_alignments.cpp b/demos/bam_print_alignments.cpp
similarity index 100%
rename from demos/unassigned_or_unused/bam_print_alignments.cpp
rename to demos/bam_print_alignments.cpp
diff --git a/demos/unassigned_or_unused/bamutil.cpp b/demos/bamutil.cpp
similarity index 100%
rename from demos/unassigned_or_unused/bamutil.cpp
rename to demos/bamutil.cpp
diff --git a/demos/basic/enable_if.cpp b/demos/basic/enable_if.cpp
new file mode 100644
index 0000000..1f81034
--- /dev/null
+++ b/demos/basic/enable_if.cpp
@@ -0,0 +1,96 @@
+// ==========================================================================
+// SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// * Neither the name of Knut Reinert or the FU Berlin nor the names of
+// its contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>
+// ==========================================================================
+// Example program used in the documentation of the enable-if metaprogramming
+// utilities.
+// ==========================================================================
+
+#include <string>
+
+#include <seqan/basic.h>
+
+using namespace seqan;
+
+#if !defined(_MSC_VER) // Currently, there are some issues with MSVC and concepts.
+class EnableIfExample
+{
+public:
+ int num;
+
+//![enable if example constructor]
+ template <typename T>
+ EnableIfExample(T const & n, SEQAN_CTOR_ENABLE_IF(Is<IntegerConcept<T> >)) :
+ num(0)
+ {
+ ignoreUnusedVariableWarning(dummy);
+ }
+
+//![enable if example constructor]
+
+//![disable if example constructor]
+ template <typename T>
+ EnableIfExample(T const & n, SEQAN_CTOR_DISABLE_IF(Is<IntegerConcept<T> >)) :
+ num(0)
+ {
+ ignoreUnusedVariableWarning(dummy);
+ }
+
+//![disable if example constructor]
+
+//![enable if example function]
+ template <typename T>
+ SEQAN_FUNC_ENABLE_IF(Is<IntegerConcept<T> >)
+ f(T /* x */)
+ { /* ... */ }
+//![enable if example function]
+
+//![disable if example function]
+ template <typename T>
+ SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<T> >)
+ f(T /* x */)
+ { /* ... */}
+//![disable if example function]
+};
+#endif // #if !defined(_MSC_VER)
+
+int main()
+{
+#if !defined(_MSC_VER)
+ EnableIfExample ex1(1);
+ (void)ex1;
+ EnableIfExample ex2("asdf");
+ (void)ex2;
+#endif // #if !defined(_MSC_VER)
+
+ return 0;
+}
diff --git a/demos/dox/basic/metaprogramming_control.cpp b/demos/basic/metaprogramming_control.cpp
similarity index 100%
rename from demos/dox/basic/metaprogramming_control.cpp
rename to demos/basic/metaprogramming_control.cpp
diff --git a/demos/dox/basic/metaprogramming_logic.cpp b/demos/basic/metaprogramming_logic.cpp
similarity index 100%
rename from demos/dox/basic/metaprogramming_logic.cpp
rename to demos/basic/metaprogramming_logic.cpp
diff --git a/demos/dox/basic/metaprogramming_math.cpp b/demos/basic/metaprogramming_math.cpp
similarity index 100%
rename from demos/dox/basic/metaprogramming_math.cpp
rename to demos/basic/metaprogramming_math.cpp
diff --git a/demos/dox/basic/metaprogramming_switch.cpp b/demos/basic/metaprogramming_switch.cpp
similarity index 100%
rename from demos/dox/basic/metaprogramming_switch.cpp
rename to demos/basic/metaprogramming_switch.cpp
diff --git a/demos/dox/basic/simple_type_construction.cpp b/demos/basic/simple_type_construction.cpp
similarity index 100%
rename from demos/dox/basic/simple_type_construction.cpp
rename to demos/basic/simple_type_construction.cpp
diff --git a/demos/dox/bed_io/UNUSED_bed_stream_read.cpp b/demos/bed_io/bed_stream_read.cpp
similarity index 100%
rename from demos/dox/bed_io/UNUSED_bed_stream_read.cpp
rename to demos/bed_io/bed_stream_read.cpp
diff --git a/demos/benchmark_stream.cpp b/demos/benchmark_stream.cpp
new file mode 100644
index 0000000..0b8ab6a
--- /dev/null
+++ b/demos/benchmark_stream.cpp
@@ -0,0 +1,422 @@
+// ==========================================================================
+// SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// * Neither the name of Knut Reinert or the FU Berlin nor the names of
+// its contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>
+// ==========================================================================
+// Stream Benchmark Demo. This demo shows how to use different stream types
+// for reading and writing FASTA files. The time required for this is
+// printed, and thus this demo can be used as a benchmark tool.
+// ==========================================================================
+
+// #define SEQAN_NEW_IO
+
+#include <cstdio>
+//#include <fstream>
+#if SEQAN_HAS_ZLIB
+#include <zlib.h>
+#endif // #if SEQAN_HAS_ZLIB
+#if SEQAN_HAS_BZIP2
+#include <bzlib.h>
+#endif // #if SEQAN_HAS_BZIP2
+
+#include <seqan/basic.h>
+#include <seqan/stream.h>
+#include <seqan/seq_io.h>
+#include <seqan/stream.h>
+#include <seqan/sequence.h>
+#include <seqan/arg_parse.h>
+
+using namespace seqan;
+
+// Setting buffer size to 4MB, such that the overhead for jumping buffers and
+// such only occurs every 4M chars.
+//const unsigned int BUFFER_SIZE = 1024 * 1024 * 4;
+
+typedef Dna5String TSequence;
+
+struct Options
+{
+ bool doublePass;
+ bool cstdio;
+ bool fstream;
+ bool mmapString;
+ bool gzip;
+ bool bzip2;
+ bool documentMMap;
+ bool nonConcat;
+ bool multiSeq;
+
+ Options() :
+ doublePass(false), cstdio(false), fstream(false),
+ mmapString(false), gzip(false), bzip2(false), documentMMap(false),
+ nonConcat(false), multiSeq(false)
+ {}
+};
+
+//int readFileMultiSeqFile(char const * filename, Options const & /*options*/)
+//{
+// typedef StringSet<CharString> TSequenceIds;
+// typedef StringSet<TSequence> TSequences;
+// typedef Iterator<TSequenceIds>::Type TSequenceIdsIter;
+// typedef Iterator<TSequences>::Type TSequencesIter;
+// TSequenceIds sequenceIds;
+// TSequences sequences;
+//
+// double before = sysTime();
+// std::cerr << "READING\tWHOLE\tOWNER";
+// std::cerr << "\tmultiseq" << std::flush;
+//
+// MultiSeqFile multiSeqFile;
+// if (!open(multiSeqFile.concat, filename, OPEN_RDONLY))
+// {
+// std::cerr << std::endl << "Could not open mmap file for reading." << std::endl;
+// return 1;
+// }
+//
+// AutoSeqFormat format;
+// guessFormat(multiSeqFile.concat, format);
+// split(multiSeqFile, format);
+//
+// unsigned seqCount = length(multiSeqFile);
+// StringSet<TSequence> seqs;
+// StringSet<CharString> seqIDs;
+// reserve(seqs, seqCount, Exact());
+// reserve(seqIDs, seqCount, Exact());
+//
+// TSequence seq;
+// // CharString qual;
+// CharString id;
+// for (unsigned i = 0; i < seqCount; ++i)
+// {
+// assignSeq(seq, multiSeqFile[i], format); // read sequence
+// // assignQual(qual, multiSeqFile[i], format); // read ascii quality values
+// assignSeqId(id, multiSeqFile[i], format); // read sequence id
+//
+// // convert ascii to values from 0..62
+// // store dna and quality together in Dna5Q
+// // for (unsigned j = 0; j < length(qual) && j < length(seq); ++j)
+// // assignQualityValue(seq[j], (int)(ordValue(qual[j]) - 33));
+// // we use reserve and append, as assign is not supported
+// // by StringSet<..., Owner<ConcatDirect<> > >
+// appendValue(seqs, seq, Generous());
+// appendValue(seqIDs, id, Generous());
+// }
+//
+// double after = sysTime();
+// fprintf(stderr, "\t%f\n", after - before);
+// return 0;
+//}
+
+template <typename TSpec>
+int readFileMMapDocument(char const * filename, Options const & /*options*/, TSpec const & /*tag*/)
+{
+ typedef StringSet<CharString, TSpec> TSequenceIds;
+ typedef StringSet<TSequence, TSpec> TSequences;
+ typedef typename Iterator<TSequenceIds>::Type TSequenceIdsIter;
+ typedef typename Iterator<TSequences>::Type TSequencesIter;
+ TSequenceIds sequenceIds;
+ TSequences sequences;
+
+ double before = sysTime();
+ std::cerr << "READING\tWHOLE\t";
+ if (IsSameType<TSpec, Owner<> >::VALUE)
+ std::cerr << "OWNER";
+ else
+ std::cerr << "CONCAT";
+ std::cerr << "\tmmap" << std::flush;
+ // fprintf(stderr, "\t%f\n", after - before);
+ /*typedef File<Async<> > TFile;
+ typedef String<char, MMap< ExternalConfig<TFile> > > TMMapString;
+ TMMapString myString;
+ if (!open(myString, filename, OPEN_RDONLY)) {
+ std::cerr << std::endl << "Could not open mmap file for reading." << std::endl;
+ return 1;
+ }
+ RecordReader<TMMapString, DoublePass<StringReader> > reader(myString, BUFFER_SIZE);
+ */
+ SeqFileIn reader(filename);
+ readRecords(sequenceIds, sequences, reader);
+ SEQAN_ASSERT_EQ(length(sequenceIds), length(sequences));
+
+ // TSequenceIdsIter itId = begin(sequenceIds);
+ // TSequencesIter itSeq = begin(sequences);
+ // for (; !atEnd(itId); ++itId, ++itSeq) {
+ //std::cout << value(itId) << "\t" << value(itSeq) << "\n";
+ // }
+
+ double after = sysTime();
+ fprintf(stderr, "\t%f\n", after - before);
+ return 0;
+}
+
+int readFileMMapDocument(char const * filename, Options const & options)
+{
+ if (options.nonConcat)
+ return readFileMMapDocument(filename, options, Owner<Default>());
+
+ //else
+ //return readFileMMapDocument(filename, options, Owner<ConcatDirect<> >());
+ return 0;
+}
+
+int readFastaFile(StringSet<CharString> & sequenceIds,
+ StringSet<TSequence> & sequences,
+ SeqFileIn & file)
+{
+ (void)sequenceIds;
+ (void)sequences;
+
+ CharString meta;
+ TSequence seq;
+ while (!atEnd(file))
+ readRecord(meta, seq, file);
+
+ return 0;
+}
+
+template <typename TFile>
+int readFastaFile(StringSet<CharString> & sequenceIds,
+ StringSet<TSequence> & sequences,
+ TFile & file)
+{
+ (void)sequenceIds;
+ (void)sequences;
+
+ typename DirectionIterator<TFile, Input>::Type iter;
+ iter = begin(file);
+
+ CharString meta;
+ TSequence seq;
+ while (!atEnd(iter))
+ readRecord(meta, seq, iter, Fasta());
+
+ return 0;
+}
+
+void readFileMMap(char const * filename, Options const & /*options*/)
+{
+ StringSet<CharString> sequenceIds;
+ StringSet<TSequence> sequences;
+
+ double before = sysTime();
+ std::cerr << "READING\tRECORD\t" << std::flush;
+
+ typedef File<Async<> > TFile;
+ String<char, MMap<ExternalConfig<TFile> > > myString;
+ if (!open(myString, filename, OPEN_RDONLY))
+ {
+ std::cerr << std::endl << "Could not open mmap file for reading." << std::endl;
+ return;
+ }
+ readFastaFile(sequenceIds, sequences, myString);
+
+ double after = sysTime();
+ fprintf(stderr, "\t%f\n", after - before);
+}
+
+void readFileDefault(char const * filename, Options const & options)
+{
+ StringSet<CharString> sequenceIds;
+ StringSet<TSequence> sequences;
+
+ std::cerr << "READING\tRECORD\t" << std::flush;
+ double before = sysTime();
+ if (options.cstdio)
+ {
+ std::cerr << "cstdio" << std::flush;
+ FILE * f = fopen(filename, "rb");
+ if (!f)
+ {
+ std::cerr << std::endl << "ERROR: Could not open input file!" << std::endl;
+ return;
+ }
+ //readFastaFile(sequenceIds, sequences, f);
+ fclose(f);
+ }
+ else if (options.fstream)
+ {
+ std::cerr << "fstream" << std::flush;
+ std::ifstream f(filename, std::ios_base::in | std::ios_base::binary);
+ if (!f.is_open())
+ {
+ std::cerr << std::endl << "ERROR: Could not open input file!" << std::endl;
+ return;
+ }
+ //readFastaFile(sequenceIds, sequences, f);
+#if SEQAN_HAS_ZLIB
+ }
+ else if (options.gzip)
+ {
+ std::cerr << "gzip" << std::flush;
+ SeqFileIn f;
+ if (!open(f, filename))
+ {
+ std::cerr << "Could not open input file!" << std::endl;
+ return;
+ }
+ readFastaFile(sequenceIds, sequences, f);
+#endif // #if SEQAN_HAS_ZLIB
+#if SEQAN_HAS_BZIP2
+ }
+ else if (options.bzip2)
+ {
+ std::cerr << "bzip2" << std::flush;
+ SeqFileIn f;
+ if (!open(f, filename))
+ {
+ std::cerr << "Could not open input file!" << std::endl;
+ return;
+ }
+ //readFastaFile(sequenceIds, sequences, f);
+#endif // #if SEQAN_HAS_BZIP2
+ }
+ else
+ {
+ SEQAN_ASSERT_FAIL("SHOULD NEVER REACH HERE!");
+ }
+ double after = sysTime();
+ fprintf(stderr, "\t%f\n", after - before);
+}
+
+int main(int argc, char const ** argv)
+{
+ Options options;
+
+ // -----------------------------------------------------------------------
+ // Setup Command Line Parser
+ // -----------------------------------------------------------------------
+
+ ArgumentParser parser("demo_benchmark_stream");
+ setCategory(parser, "Demo");
+ setShortDescription(parser, "Just a demo for a simple file io benchmark.");
+
+ addUsageLine(parser, "benchmark_stream [OPTIONS] INPUT OUTPUT");
+ addSection(parser, "Read Variant");
+ addOption(parser, ArgParseOption("d", "double-pass", "Use double-pass parsing."));
+ addSection(parser, "Stream Type Options");
+ addOption(parser, ArgParseOption("c", "cstdio", "Use <cstdio> stream."));
+ addOption(parser, ArgParseOption("f", "fstream", "Use <fstream> stream."));
+#if SEQAN_HAS_ZLIB
+ addOption(parser, ArgParseOption("g", "gzip", "Use gzip stream."));
+#endif // #if SEQAN_HAS_ZLIB
+#if SEQAN_HAS_BZIP2
+ addOption(parser, ArgParseOption("b", "bzip2", "Use bzlib stream."));
+#endif // #if SEQAN_HAS_BZIP2
+ addOption(parser, ArgParseOption("m", "memory-mapped", "Use memory mapped I/O."));
+ addOption(parser, ArgParseOption("w", "document-mmapped", "Read whole document at once with memory mapped I/O."));
+ addOption(parser, ArgParseOption("n", "non-concat", "Do not use concat direct string for document-mmapped version."));
+ addOption(parser, ArgParseOption("s", "multi-seq", "Use MultiSeqFile to read input."));
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE, "IN"));
+
+ // -----------------------------------------------------------------------
+ // Parse And Check Command Line Parameters
+ // -----------------------------------------------------------------------
+
+ bool stop = !parse(parser, argc, argv);
+ if (stop)
+ {
+ if (isSet(parser, "help"))
+ return 0;
+
+ return 1;
+ }
+
+ if (isSet(parser, "double-pass"))
+ options.doublePass = true;
+ if (isSet(parser, "cstdio"))
+ options.cstdio = true;
+ if (isSet(parser, "fstream"))
+ options.fstream = true;
+#if SEQAN_HAS_ZLIB
+ if (isSet(parser, "gzip"))
+ options.gzip = true;
+#endif // #if SEQAN_HAS_ZLIB
+#if SEQAN_HAS_BZIP2
+ if (isSet(parser, "bzip2"))
+ options.bzip2 = true;
+#endif // #if SEQAN_HAS_BZIP2
+ if (isSet(parser, "memory-mapped"))
+ options.mmapString = true;
+ if (isSet(parser, "document-mmapped"))
+ options.documentMMap = true;
+ if (isSet(parser, "non-concat"))
+ options.nonConcat = true;
+ if (isSet(parser, "multi-seq"))
+ options.multiSeq = true;
+
+ if (options.cstdio + options.fstream + options.gzip + options.bzip2 + options.mmapString +
+ options.documentMMap + options.multiSeq == 0)
+ {
+ std::cerr << "You have to select exactly one stream type!" << std::endl;
+ return 1;
+ }
+ else if (options.cstdio + options.fstream + options.gzip + options.bzip2 + options.mmapString + options.documentMMap > 1)
+ {
+ std::cerr << "Only one stream type can be selected!" << std::endl;
+ return 1;
+ }
+ if (options.documentMMap && options.doublePass)
+ {
+ std::cerr << "Double-pass I/O is implicit with document-mapped." << std::endl;
+ return 1;
+ }
+
+ // -----------------------------------------------------------------------
+ // Read And Write FASTA file.
+ // -----------------------------------------------------------------------
+ String<char> inputFileName;
+ getArgumentValue(inputFileName, parser, 0);
+
+ if (options.multiSeq)
+ {
+ //readFileMultiSeqFile(toCString(getArgumentValue(parser, 0)), options);
+ }
+ else if (options.documentMMap)
+ {
+ readFileMMapDocument(toCString(inputFileName), options);
+ }
+ else
+ {
+ if (options.mmapString)
+ ;
+ //readFileMMap(toCString(inputFileName), options);
+ else
+ readFileDefault(toCString(inputFileName), options);
+ }
+
+ // for (unsigned i = 0; i < length(sequenceIds); ++i) {
+ // std::cerr << '>' << sequenceIds[i] << '\n';
+ // std::cerr << sequences[i] << '\n';
+ // }
+
+ return 0;
+}
diff --git a/demos/unassigned_or_unused/benchmark_stream_write.cpp b/demos/benchmark_stream_write.cpp
similarity index 100%
rename from demos/unassigned_or_unused/benchmark_stream_write.cpp
rename to demos/benchmark_stream_write.cpp
diff --git a/demos/dox/consensus/consensus_alignment.cpp b/demos/consensus/consensus_alignment.cpp
similarity index 100%
rename from demos/dox/consensus/consensus_alignment.cpp
rename to demos/consensus/consensus_alignment.cpp
diff --git a/demos/dox/consensus/consensus_alignment.cpp.stdout b/demos/consensus/consensus_alignment.cpp.stdout
similarity index 100%
rename from demos/dox/consensus/consensus_alignment.cpp.stdout
rename to demos/consensus/consensus_alignment.cpp.stdout
diff --git a/demos/unassigned_or_unused/cuda/count.cu b/demos/cuda/count.cu
similarity index 100%
rename from demos/unassigned_or_unused/cuda/count.cu
rename to demos/cuda/count.cu
diff --git a/demos/unassigned_or_unused/cuda/hello.cu b/demos/cuda/hello.cu
similarity index 100%
rename from demos/unassigned_or_unused/cuda/hello.cu
rename to demos/cuda/hello.cu
diff --git a/demos/unassigned_or_unused/cuda/mmap.cu b/demos/cuda/mmap.cu
similarity index 100%
rename from demos/unassigned_or_unused/cuda/mmap.cu
rename to demos/cuda/mmap.cu
diff --git a/demos/dox/modifier/cyclic_shape.cpp b/demos/cyclic_shape.cpp
similarity index 100%
rename from demos/dox/modifier/cyclic_shape.cpp
rename to demos/cyclic_shape.cpp
diff --git a/demos/dox/modifier/cyclic_shape.cpp.stdout b/demos/cyclic_shape.cpp.stdout
similarity index 100%
rename from demos/dox/modifier/cyclic_shape.cpp.stdout
rename to demos/cyclic_shape.cpp.stdout
diff --git a/demos/dox/modifier/cyclic_shape_snippets.cpp b/demos/cyclic_shape_snippets.cpp
similarity index 100%
rename from demos/dox/modifier/cyclic_shape_snippets.cpp
rename to demos/cyclic_shape_snippets.cpp
diff --git a/demos/dox/align/compute_alignment_stats.cpp b/demos/dox/align/compute_alignment_stats.cpp
deleted file mode 100644
index 5801cf6..0000000
--- a/demos/dox/align/compute_alignment_stats.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-#include <iostream>
-
-#include <seqan/align.h>
-#include <seqan/sequence.h>
-
-using namespace seqan;
-
-int main()
-{
- // Create an alignment between subject and query.
- Peptide subject =
- "MGLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE"
- "DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISECIIQVLQSKH"
- "PGDFGADAQGAMNKALELFRKDMASNYK";
- Peptide query =
- "MSLTKTERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHFDLHPGSA"
- "QLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRVDPVNFKLLSHCLLVTLAARF"
- "PADFTAEAHAAWDKFLSVTEKYR";
-
- Align<Peptide> align;
- resize(rows(align), 2);
- setSource(row(align, 0), subject);
- setSource(row(align, 1), query);
-
- Blosum62 scoringScheme(-1, -12);
- globalAlignment(align, scoringScheme);
-
- // Compute the statistics of the alignment.
- AlignmentStats stats;
- computeAlignmentStats(stats, align, scoringScheme);
- std::cout << align
- << "score: " << stats.alignmentScore << "\n"
- << "gap opens: " << stats.numGapOpens << "\n"
- << "gap extensions: " << stats.numGapExtensions << "\n"
- << "num insertions: " << stats.numInsertions << "\n"
- << "num deletions: " << stats.numDeletions << "\n"
- << "num matches: " << stats.numMatches << "\n"
- << "num mismatches: " << stats.numMismatches << "\n"
- << "num positive scores: " << stats.numPositiveScores << "\n"
- << "num negative scores: " << stats.numNegativeScores << "\n"
- << "percent similarity: " << stats.alignmentSimilarity << "\n"
- << "percent identity: " << stats.alignmentIdentity << "\n\n\n";
-
- // Clip alignment rows and compute score of this view.
- setClippedEndPosition(row(align, 0), 100);
- setClippedEndPosition(row(align, 1), 100);
- setClippedBeginPosition(row(align, 0), 5);
- setClippedBeginPosition(row(align, 1), 5);
-
- computeAlignmentStats(stats, align, scoringScheme);
- std::cout << "Clipping alignment to (5, 100)\n"
- << align
- << "score: " << stats.alignmentScore << "\n"
- << "gap opens: " << stats.numGapOpens << "\n"
- << "gap extensions: " << stats.numGapExtensions << "\n"
- << "num insertions: " << stats.numInsertions << "\n"
- << "num deletions: " << stats.numDeletions << "\n"
- << "num matches: " << stats.numMatches << "\n"
- << "num mismatches: " << stats.numMismatches << "\n"
- << "num positive scores: " << stats.numPositiveScores << "\n"
- << "num negative scores: " << stats.numNegativeScores << "\n"
- << "percent similarity: " << stats.alignmentSimilarity << "\n"
- << "percent identity: " << stats.alignmentIdentity << "\n";
- return 0;
-}
diff --git a/demos/dox/align/compute_alignment_stats.cpp.stdout b/demos/dox/align/compute_alignment_stats.cpp.stdout
deleted file mode 100644
index 3611358..0000000
--- a/demos/dox/align/compute_alignment_stats.cpp.stdout
+++ /dev/null
@@ -1,52 +0,0 @@
- 0 . : . : . : . : . :
- MGLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHL
- | | | | | | | | ||| || | | |
- MSLTKTERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHF---
-
- 50 . : . : . : . : . :
- KSEDEMKASEDLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKI
- | | | || | | | | | ||
- ---DLHPGSAQLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRV
-
- 100 . : . : . : . : .
- PVKYLEFISECIIQVLQSKHPGDFGADAQGAMNKALELFRKDMASNYK
- | | | | || | | | | | | |
- DPVNFKLLSHCLLVTLAARFPADFTAEAHAAWDKFLSVTEK-----YR
-
-
-score: 159
-gap opens: 2
-gap extensions: 9
-num insertions: 11
-num deletions: 0
-num matches: 41
-num mismatches: 96
-num positive scores: 69
-num negative scores: 68
-percent similarity: 46.6216
-percent identity: 27.7027
-
-
-Clipping alignment to (5, 100)
- 0 . : . : . : . : . :
- GEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDE
- | | | | | | ||| || | | | |
- TERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHF------DL
-
- 50 . : . : . : . : .
- MKASEDLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKI
- | | || | | | | | ||
- HPGSAQLRAHGSKVVAAVGDAVKSIDDIGGALSKLSELHAYILRV
-
-
-score: 99
-gap opens: 1
-gap extensions: 5
-num insertions: 6
-num deletions: 0
-num matches: 26
-num mismatches: 63
-num positive scores: 43
-num negative scores: 46
-percent similarity: 45.2632
-percent identity: 27.3684
diff --git a/demos/dox/bam_io/bam_tags_dict.cpp b/demos/dox/bam_io/bam_tags_dict.cpp
deleted file mode 100644
index 04ce536..0000000
--- a/demos/dox/bam_io/bam_tags_dict.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <iostream>
-#include <seqan/stream.h>
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString bamStr, samStr = "AA:Z:value1\tAB:Z:value2\tAC:i:30";
- assignTagsSamToBam(bamStr, samStr);
- BamTagsDict tags(bamStr);
- std::cout << length(tags) << std::endl; // #=> "3"
- for (unsigned id = 0; id < length(tags); ++id)
- {
- std::cout << getTagKey(tags, id) << " -> ";
-
- if (getTagType(tags, id) == 'i') // is 32 bit integer
- {
- __int32 x = 0;
- if (!extractTagValue(x, tags, id))
- SEQAN_ASSERT_FAIL("Not a valid integer at pos %u!", id);
- std::cout << x;
- }
- if (getTagType(tags, id) == 'Z') // is string
- {
- CharString str;
- if (!extractTagValue(str, tags, id))
- SEQAN_ASSERT_FAIL("Not a valid string at pos %u!", id);
- std::cout << '"' << str << '"';
- }
-
- std::cout << std::endl;
- }
-
- return 0;
-}
diff --git a/demos/dox/basic/enable_if.cpp b/demos/dox/basic/enable_if.cpp
deleted file mode 100644
index 169cb5f..0000000
--- a/demos/dox/basic/enable_if.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-// ==========================================================================
-// SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// * Neither the name of Knut Reinert or the FU Berlin nor the names of
-// its contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>
-// ==========================================================================
-// Example program used in the documentation of the enable-if metaprogramming
-// utilities.
-// ==========================================================================
-
-#include <string>
-
-#include <seqan/basic.h>
-
-using namespace seqan;
-
-#if !defined(_MSC_VER) // Currently, there are some issues with MSVC and concepts.
-class EnableIfExample
-{
-public:
- int num;
-
-//![enable if example constructor]
- template <typename T>
- EnableIfExample(T const & n, SEQAN_CTOR_ENABLE_IF(Is<IntegerConcept<T> >)) :
- num(0)
- {
- ignoreUnusedVariableWarning(dummy);
- }
-
-//![enable if example constructor]
-
-//![disable if example constructor]
- template <typename T>
- EnableIfExample(T const & n, SEQAN_CTOR_DISABLE_IF(Is<IntegerConcept<T> >)) :
- num(0)
- {
- ignoreUnusedVariableWarning(dummy);
- }
-
-//![disable if example constructor]
-
-//![enable if example function]
- template <typename T>
- SEQAN_FUNC_ENABLE_IF(Is<IntegerConcept<T> >)
- f(T /* x */)
- { /* ... */ }
-//![enable if example function]
-
-//![disable if example function]
- template <typename T>
- SEQAN_FUNC_DISABLE_IF(Is<IntegerConcept<T> >)
- f(T /* x */)
- { /* ... */}
-//![disable if example function]
-};
-#endif // #if !defined(_MSC_VER)
-
-int main()
-{
-#if !defined(_MSC_VER)
- EnableIfExample ex1(1);
- ignoreUnusedVariableWarning(ex1);
- EnableIfExample ex2("asdf");
- ignoreUnusedVariableWarning(ex2);
-#endif // #if !defined(_MSC_VER)
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/all_pairs_shortest_path.cpp b/demos/dox/graph_algorithms/all_pairs_shortest_path.cpp
deleted file mode 100644
index 9b41132..0000000
--- a/demos/dox/graph_algorithms/all_pairs_shortest_path.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create a graph with 9 directed edges (0,1), (0,2), ...
- TSize numEdges = 9;
- TVertexDescriptor edges[] = {0, 1, 0, 2, 0, 4, 1, 3, 1, 4, 2, 1, 3, 0, 3, 2, 4, 3};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph.
- std::cout << g << std::endl;
-
- // Create a property map with edge weights. Note that we can use negative
- // weights since the edges are directed and there are no cycles.
- int weights[] = {3, 8, -4, 1, 7, 4, 2, -5, 6};
- String<int> weightMap;
- assignEdgeMap(weightMap, g, weights);
-
- // Compute all-pairs shortest path.
- String<int> distMat;
- String<TVertexDescriptor> predMat;
- allPairsShortestPath(distMat, predMat, g, weightMap);
-
- // Print the result to stdout.
- unsigned int len = static_cast<unsigned>(std::sqrt((double)length(distMat)));
- for (TSize row = 0; row < len; ++row)
- for (TSize col = 0; col < len; ++col)
- {
- std::cout << row << "," << col << " (Distance="
- << getValue(distMat, row * len + col) << "): ";
- _printAllPairsShortestPath(g, predMat, row, col);
- std::cout << "\n";
- }
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/bellman_ford_algorithm.cpp b/demos/dox/graph_algorithms/bellman_ford_algorithm.cpp
deleted file mode 100644
index 0e885bf..0000000
--- a/demos/dox/graph_algorithms/bellman_ford_algorithm.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 10 directed edges (0,1), (0,3), ...
- TSize numEdges = 10;
- TVertexDescriptor edges[] = {0, 1, 0, 3, 1, 2, 1, 3, 2, 4, 3, 1, 3, 2, 3, 4, 4, 0, 4, 2};
- TGraph g;
- addEdges(g, edges, numEdges);
-
- // Print graph.
- std::cout << g << "\n";
-
- // Create external edge property map and assign to graph.
- unsigned weights[] = {10, 5, 1, 2, 4, 3, 9, 2, 7, 6};
- String<unsigned> weightMap;
- assignEdgeMap(weightMap, g, weights);
-
- // Run Bellman-Ford algorithm from vertex 0. NB: Ford-Fulkerson also
- // detects negative cycles.
- String<unsigned int> predMap;
- String<unsigned int> distMap;
- bool noNegativeCycle = bellmanFordAlgorithm(predMap, distMap, g, 0, weightMap);
-
- // Print result to stdout.
- std::cout << "Single-Source Shortest Paths: " << "\n"
- << "Graph without negative cycles? " << noNegativeCycle << "\n";
- typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
- TVertexIterator it(g);
- while (!atEnd(it))
- {
- std::cout << "Path from 0 to " << getValue(it) << ": ";
- _printPath(g, predMap, (TVertexDescriptor) 0, getValue(it));
- std::cout << " (Distance: " << getProperty(distMap, getValue(it)) << ")\n";
- goNext(it);
- }
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/breadth_first_search.cpp b/demos/dox/graph_algorithms/breadth_first_search.cpp
deleted file mode 100644
index 053250a..0000000
--- a/demos/dox/graph_algorithms/breadth_first_search.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Undirected<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create a graph with 10 undirected edges {0,1}, {0,4}, ...
- TSize numEdges = 10;
- TVertexDescriptor edges[] = {0, 1, 0, 4, 1, 5, 2, 5, 2, 6, 2, 3, 3, 6, 3, 7, 5, 6, 6, 7};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph.
- std::cout << g << "\n";
-
- // Create external property map for the vertex names and assign to graph.
- String<char> nameMap;
- char names[] = {'r', 's', 't', 'u', 'v', 'w', 'x', 'y'};
- assignVertexMap(nameMap, g, names);
-
- // Perform a BFS search starting from vertex with descriptor 1.
- String<unsigned int> predMap;
- String<unsigned int> distMap;
- breadthFirstSearch(predMap, distMap, g, 1);
-
- // Write the result to stdout.
- std::cout << "Breadth-First search: \n";
- typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
- TVertexIterator it(g);
- while (!atEnd(it))
- {
- std::cout << "Vertex " << getProperty(nameMap, getValue(it)) << ": ";
- if (getProperty(distMap, getValue(it)) == _getInfinityDistance(distMap))
- SEQAN_FAIL("Should never reach here!");
- else
- std::cout << "Level = " << getProperty(distMap, getValue(it));
-
- typedef Value<String<unsigned int> >::Type TPredVal;
- TPredVal pre = getProperty(predMap, getValue(it));
- if (pre != getNil<TVertexDescriptor>())
- std::cout << ", Predecessor = " << getProperty(nameMap, pre) << "\n";
- else
- std::cout << ", Predecessor = nil" << "\n";
- goNext(it);
- }
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/dag_shortest_path.cpp b/demos/dox/graph_algorithms/dag_shortest_path.cpp
deleted file mode 100644
index 84f7937..0000000
--- a/demos/dox/graph_algorithms/dag_shortest_path.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 10 directed edges (0,2), (0,1), ...
- TSize numEdges = 10;
- TVertexDescriptor edges[] = {0, 2, 0, 1, 1, 3, 1, 2, 2, 5, 2, 4, 2, 3, 3, 5, 3, 4, 4, 5};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph to stdout.
- std::cout << g << "\n";
-
- // Create external edge property map with edge weights.
- int weights[] = {3, 5, 6, 2, 2, 4, 7, 1, -1, -2};
- String<int> weightMap;
- assignEdgeMap(weightMap, g, weights);
-
- // Run DAG shortest path computation from vertex with descriptor 1.
- String<unsigned> predMap;
- String<unsigned> distMap;
- dagShortestPath(predMap, distMap, g, 1, weightMap);
-
- // Print result to stdout.
- std::cout << "Single-Source Shortest Paths in DAG: \n";
- typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
- TVertexIterator it(g);
- while (!atEnd(it))
- {
- std::cout << "Path from 1 to " << getValue(it) << ": ";
- _printPath(g, predMap, (TVertexDescriptor)1, getValue(it));
- std::cout << " (Distance: " << getProperty(distMap, getValue(it)) << ")\n";
- goNext(it);
- }
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/depth_first_search.cpp b/demos/dox/graph_algorithms/depth_first_search.cpp
deleted file mode 100644
index b34fe16..0000000
--- a/demos/dox/graph_algorithms/depth_first_search.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 8 directed edges (0,3), (0,1), ...
- TSize numEdges = 8;
- TVertexDescriptor edges[] = {0, 3, 0, 1, 1, 4, 2, 4, 2, 5, 3, 1, 4, 3, 5, 5};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph.
- std::cout << g << "\n";
-
- // Create external property map for the vertex names and assign to graph.
- char names[] = {'u', 'v', 'w', 'x', 'y', 'z'};
- String<char> nameMap;
- assignVertexMap(nameMap, g, names);
-
- // Perform a DFS search.
- String<unsigned int> predMap;
- String<unsigned int> discoveryTimeMap;
- String<unsigned int> finishingTimeMap;
- depthFirstSearch(predMap, discoveryTimeMap, finishingTimeMap, g);
-
- // Write the result to stdout.
- std::cout << "Depth-First search: \n";
- typedef Iterator<Graph<>, VertexIterator>::Type TVertexIterator;
- TVertexIterator it(g);
- while (!atEnd(it))
- {
- std::cout << "Vertex " << getProperty(nameMap, getValue(it)) << ": ";
- std::cout << "Discovery time = " << getProperty(discoveryTimeMap, getValue(it)) << ",";
- std::cout << "Finishing time = " << getProperty(finishingTimeMap, getValue(it)) << ",";
- typedef Value<String<unsigned int> >::Type TPredVal;
- TPredVal pre = getProperty(predMap, getValue(it));
- if (pre != getNil<TVertexDescriptor>())
- std::cout << "Predecessor = " << getProperty(nameMap, pre) << "\n";
- else
- std::cout << "Predecessor = nil" << "\n";
- goNext(it);
- }
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/dijkstra.cpp b/demos/dox/graph_algorithms/dijkstra.cpp
deleted file mode 100644
index 4abc874..0000000
--- a/demos/dox/graph_algorithms/dijkstra.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 10 directed edges (0,1), (0,3), ...
- TSize numEdges = 10;
- TVertexDescriptor edges[] = {0, 1, 0, 3, 1, 2, 1, 3, 2, 4, 3, 1, 3, 2, 3, 4, 4, 0, 4, 2};
- TGraph g;
- addEdges(g, edges, numEdges);
-
- // Fill external edge weight map.
- unsigned weights[] = {10, 5, 1, 2, 4, 3, 9, 2, 7, 6};
- String<unsigned> weightMap;
- assignEdgeMap(weightMap, g, weights);
-
- // Run Dijkstra's algorithm from vertex 0.
- String<unsigned> predMap;
- String<unsigned> distMap;
- dijkstra(predMap, distMap, g, 0, weightMap);
-
- // Print results to stdout.
- std::cout << "Single-Source Shortest Paths: \n";
- typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
- TVertexIterator it(g);
- while (!atEnd(it))
- {
- std::cout << "Path from 0 to " << getValue(it) << ": ";
- _printPath(g, predMap, (TVertexDescriptor) 0, getValue(it));
- std::cout << " (Distance: " << getProperty(distMap, getValue(it)) << ")\n";
- goNext(it);
- }
-
- // We can achieve the same thing using an internal map that is edge cargos.
- typedef unsigned int TEdgeCargo;
- typedef Directed<TEdgeCargo> TEdges;
- typedef Graph<TEdges> TCargoGraph;
-
- // Construct graph with the same edges as above.
- TCargoGraph cargoG;
- addEdges(cargoG, edges, numEdges);
-
- // Fill internal edge weight map.
- InternalPropertyMap<TEdgeCargo> intMap;
- assignEdgeMap(intMap, cargoG, weights);
-
- // Run Dijkstra's algorithm from vertex 0.
- clear(predMap);
- clear(distMap);
- dijkstra(predMap, distMap, cargoG, 0, intMap);
-
- // Print result to stdout.
- std::cout << "\nSingle-Source Shortest Paths: \n";
- typedef Iterator<TCargoGraph, VertexIterator>::Type TCargoVertexIterator;
- TCargoVertexIterator itC(cargoG);
- while (!atEnd(itC))
- {
- std::cout << "Path from 0 to " << getValue(itC) << ": ";
- _printPath(g, predMap, (TVertexDescriptor)0, getValue(itC));
- std::cout << " (Distance: " << getProperty(distMap, getValue(itC)) << ")\n";
- goNext(itC);
- }
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/floyd_warshall_algorithm.cpp b/demos/dox/graph_algorithms/floyd_warshall_algorithm.cpp
deleted file mode 100644
index 484467d..0000000
--- a/demos/dox/graph_algorithms/floyd_warshall_algorithm.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 9 directed edges (0,1), (0,2)
- TSize numEdges = 9;
- TVertexDescriptor edges[] = {0, 1, 0, 2, 0, 4, 1, 3, 1, 4, 2, 1, 3, 0, 3, 2, 4, 3};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph.
- std::cout << g << "\n";
-
- // Fill external property map with edge weights and assign to graph.
- int weights[] = {3, 8, -4, 1, 7, 4, 2, -5, 6};
- String<int> weightMap;
- assignEdgeMap(weightMap, g, weights);
-
- // Run Floyd-Warshall algorithm.
- String<int> distMat;
- String<TVertexDescriptor> predMat;
- floydWarshallAlgorithm(distMat, predMat, g, weightMap);
-
- // Print result to stdout.
- unsigned int len = static_cast<unsigned>(std::sqrt((double)length(distMat)));
- for (TSize row = 0; row < len; ++row)
- for (TSize col = 0; col < len; ++col)
- {
- std::cout << row << "," << col << " (Distance="
- << getValue(distMat, row * len + col) << "): ";
- _printAllPairsShortestPath(g, predMat, row, col);
- std::cout << std::endl;
- }
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/ford_fulkerson_algorithm.cpp b/demos/dox/graph_algorithms/ford_fulkerson_algorithm.cpp
deleted file mode 100644
index bc8b6d3..0000000
--- a/demos/dox/graph_algorithms/ford_fulkerson_algorithm.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Iterator<TGraph, EdgeIterator>::Type TEdgeIterator;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 10 directed edges (0,1), (0,4), ...
- TSize numEdges = 10;
- TVertexDescriptor edges[] = {0, 1, 0, 4, 1, 2, 1, 4, 2, 3, 2, 4, 4, 1, 4, 5, 5, 2, 5, 3};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph.
- std::cout << g << "\n";
-
- // Create external property map for the edge capacities and assign to the graph.
- String<unsigned int> capMap;
- unsigned capacity[] = {16, 13, 12, 10, 20, 9, 4, 14, 7, 4};
- assignEdgeMap(capMap, g, capacity);
-
- // Run the Ford-Fulkerson algorithm for maximum flow computation from source
- // vertex 0 to sink vertex 3. valF is the value of the flow.
- String<unsigned int> flow;
- unsigned valF = fordFulkersonAlgorithm(flow, g, 0, 3, capMap);
-
- // Print the result to stdout.
- std::cout << "Ford-Fulkerson (Value of the flow = " << valF << ")\n";
- TEdgeIterator itEdge(g);
- for (; !atEnd(itEdge); goNext(itEdge))
- std::cout << "(" << sourceVertex(itEdge) << "," << targetVertex(itEdge) << "): "
- << "Flow: " << getProperty(flow, getValue(itEdge)) << ", Capacity: "
- << getProperty(capMap, getValue(itEdge)) << "\n";
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/kruskals_algorithm.cpp b/demos/dox/graph_algorithms/kruskals_algorithm.cpp
deleted file mode 100644
index 9f58ff5..0000000
--- a/demos/dox/graph_algorithms/kruskals_algorithm.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Undirected<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 14 undirected edges {0,1}, {0,6}, ...
- TSize numEdges = 14;
- TVertexDescriptor edges[] = {0, 1, 0, 6, 1, 2, 1, 6, 2, 3, 2, 4, 2, 8, 3, 5, 3, 8, 4, 6, 4, 7, 5, 8, 6, 7, 7, 8};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph.
- std::cout << g << std::endl;
-
- // Fill external property map for each edge weight and vertex names.
- unsigned int weights[] = {4, 8, 8, 11, 7, 2, 4, 9, 14, 7, 6, 10, 1, 2};
- char names[] = {'a', 'b', 'c', 'd', 'i', 'e', 'h', 'g', 'f'};
- String<int> weightMap;
- assignEdgeMap(weightMap, g, weights);
- String<char> nameMap;
- assignVertexMap(nameMap, g, names);
-
- // Run Kruskal's algorithm.
- String<TVertexDescriptor> treeEdges;
- kruskalsAlgorithm(treeEdges, g, 0, weightMap);
-
- // Print the result to stdout.
- std::cout << "Minimum Spanning Tree (Kruskal's algorithm): \n"
- << "Tree Edges: ";
- typedef Iterator<String<TVertexDescriptor> >::Type TStrIterator;
- TStrIterator it = begin(treeEdges);
- TStrIterator itEnd = end(treeEdges);
- while (it != itEnd)
- {
- std::cout << "(" << getProperty(nameMap, getValue(it)) << ",";
- goNext(it);
- std::cout << getProperty(nameMap, getValue(it)) << "), ";
- goNext(it);
- }
- std::cout << "\n";
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/prims_algorithm.cpp b/demos/dox/graph_algorithms/prims_algorithm.cpp
deleted file mode 100644
index 6870d1f..0000000
--- a/demos/dox/graph_algorithms/prims_algorithm.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Undirected<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 14 undirected edges {0,1}, {0,6}, ...
- TSize numEdges = 14;
- TVertexDescriptor edges[] = {0, 1, 0, 6, 1, 2, 1, 6, 2, 3, 2, 4, 2, 8, 3, 5, 3, 8, 4, 6, 4, 7, 5, 8, 6, 7, 7, 8};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph.
- std::cout << g << std::endl;
-
- // Fill two external property maps for edge weights and vertex names.
- unsigned int weights[] = {4, 8, 8, 11, 7, 2, 4, 9, 14, 7, 6, 10, 1, 2};
- char names[] = {'a', 'b', 'c', 'd', 'i', 'e', 'h', 'g', 'f'};
- String<int> weightMap;
- assignEdgeMap(weightMap, g, weights);
- String<char> nameMap;
- assignVertexMap(nameMap, g, names);
-
- // Run Prim's algorithm.
- String<TVertexDescriptor> predMap;
- primsAlgorithm(predMap, g, 0, weightMap);
-
- // Print result to stdout.
- std::cout << "Minimum Spanning Tree (Prim's algorithm): \n";
- typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
- TVertexIterator it(g);
- while (!atEnd(it))
- {
- std::cout << "Path from " << getProperty(nameMap, 0) << " to "
- << getProperty(nameMap, getValue(it)) << ": ";
- _printPath(g, predMap, (TVertexDescriptor)0, getValue(it), nameMap);
- std::cout << "\n";
- goNext(it);
- }
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/strongly_connected_components.cpp b/demos/dox/graph_algorithms/strongly_connected_components.cpp
deleted file mode 100644
index 08d1b98..0000000
--- a/demos/dox/graph_algorithms/strongly_connected_components.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create grap with 14 directed edges (1,0), (0,4), ...
- TSize numEdges = 14;
- TVertexDescriptor edges[] = {1, 0, 0, 4, 2, 1, 4, 1, 5, 1, 6, 2, 3, 2, 2, 3, 7, 3, 5, 4, 6, 5, 5, 6, 7, 6, 7, 7};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph.
- std::cout << g << std::endl;
-
- // Create external property map with vertex names and assign to graph.
- String<char> nameMap;
- char names[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
- assignVertexMap(nameMap, g, names);
-
- // Compute strongly connected components.
- String<unsigned int> component;
- stronglyConnectedComponents(component, g);
-
- // Print result to stdout.
- std::cout << "Strongly Connected Components: \n";
- typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
- TVertexIterator it(g);
- while (!atEnd(it))
- {
- std::cout << "Vertex " << getProperty(nameMap, getValue(it)) << ": \n"
- << "Component = " << getProperty(component, getValue(it)) << "\n";
- goNext(it);
- }
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/topological_sort.cpp b/demos/dox/graph_algorithms/topological_sort.cpp
deleted file mode 100644
index 107b4d2..0000000
--- a/demos/dox/graph_algorithms/topological_sort.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 9 directed edges (0,3), (0,1), ...
- TSize numEdges = 9;
- TVertexDescriptor edges[] = {0, 3, 0, 1, 1, 2, 3, 2, 5, 7, 5, 6, 6, 7, 6, 3, 8, 7};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph.
- std::cout << g << "\n";
-
- // Create external property map with vertex labels.
- String<std::string> nameMap;
- std::string names[] = {"shirt", "tie", "jacket", "belt", "watch", "undershorts", "pants", "shoes", "socks"};
- assignVertexMap(nameMap, g, names);
-
- // Get vertex descriptor in topological sort order.
- String<TVertexDescriptor> order;
- topologicalSort(order, g);
-
- // Write the result to stdout.
- std::cout << "Topological sort: \n";
- typedef Iterator<String<TVertexDescriptor> >::Type TStringIterator;
- TStringIterator it = begin(order);
- TStringIterator itEnd = end(order);
- while (it != itEnd)
- {
- std::cout << getProperty(nameMap, getValue(it)) << ",";
- goNext(it);
- }
- std::cout << "\n";
-
- return 0;
-}
diff --git a/demos/dox/graph_algorithms/transitive_closure.cpp b/demos/dox/graph_algorithms/transitive_closure.cpp
deleted file mode 100644
index b1f8061..0000000
--- a/demos/dox/graph_algorithms/transitive_closure.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <iostream>
-#include <seqan/graph_algorithms.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef Graph<Directed<> > TGraph;
- typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
- typedef Size<TGraph>::Type TSize;
-
- // Create graph with 5 directed edges (3,0), (1,2), ...
- TSize numEdges = 5;
- TVertexDescriptor edges[] = {3, 0, 1, 2, 2, 1, 1, 3, 3, 2};
- TGraph g;
- addEdges(g, edges, numEdges);
- // Print graph to stdout.
- std::cout << g << "\n";
-
- // Compute transitive closure.
- String<bool> closure;
- transitiveClosure(closure, g);
-
- // Print result to stdout.
- TSize len = static_cast<TSize>(std::sqrt((double) length(closure)));
- for (TSize row = 0; row < len; ++row)
- {
- for (TSize col = 0; col < len; ++col)
- std::cout << getValue(closure, row * len + col) << ",";
- std::cout << std::endl;
- }
-
- return 0;
-}
diff --git a/demos/dox/index/length_countSequences.cpp b/demos/dox/index/length_countSequences.cpp
deleted file mode 100644
index b97a6da..0000000
--- a/demos/dox/index/length_countSequences.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include <seqan/index.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef StringSet<String<char> > TText;
- typedef Index<TText> TIndex;
-
- TText text;
- appendValue(text, "MISSISSIPPI");
- appendValue(text, "MYMISSISAHAPPY");
-
- TIndex index(text);
- Finder<TIndex> finder(index);
-
- std::cout << "The text has " << length(index) << " characters and consists of " << countSequences(index) <<
- " sequences." << std::endl;
-
- // The Finder object has a pointer to the first, current and last hit
- // Each consecutive call sets the current pointer to the appropriate hit
- while (find(finder, "MISS"))
- std::cout << "Hit at position: " << position(finder) << std::endl;
-
- return 0;
-}
diff --git a/demos/dox/index/open_save.cpp b/demos/dox/index/open_save.cpp
deleted file mode 100644
index 23ad113..0000000
--- a/demos/dox/index/open_save.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <seqan/index.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef StringSet<String<char> > TText;
- typedef Index<TText> TIndex;
-
- TText text;
- appendValue(text, "MISSISSIPPI");
- appendValue(text, "MYMISSISAHAPPY");
-
- TIndex saveIndex(text);
-
- // Because indices are build on demand we fore the index creation here.
- indexCreate(saveIndex, FibreSA());
-
- const char * tempFileName = SEQAN_TEMP_FILENAME();
- std::cout << save(saveIndex, tempFileName) << std::endl;
-
- // In a different program
- TIndex openIndex;
- std::cout << open(openIndex, tempFileName) << std::endl;
-
- return 0;
-}
diff --git a/demos/dox/parallel/queue_example.cpp b/demos/dox/parallel/queue_example.cpp
deleted file mode 100644
index 687bf59..0000000
--- a/demos/dox/parallel/queue_example.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <iostream>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-int main()
-{
- // instantiate an empty Queue
- ConcurrentQueue<unsigned> queue;
-
- // start two threads
- SEQAN_OMP_PRAGMA(parallel sections num_threads(2))
- {
- SEQAN_OMP_PRAGMA(section)
- {
- for (unsigned i = 9999; i != 0; --i)
- appendValue(queue, i);
- }
-
- SEQAN_OMP_PRAGMA(section)
- {
- bool equal = true;
- for (unsigned i = 9999; i != 0; --i)
- equal &= (i == popFront(queue));
- std::cout << (equal ? "SUCCESS" : "FAILURE") << std::endl;
- }
- }
-
- return 0;
-}
diff --git a/demos/dox/random/random.cpp b/demos/dox/random/random.cpp
deleted file mode 100644
index 625845b..0000000
--- a/demos/dox/random/random.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <iostream>
-
-#include <seqan/basic.h>
-#include <seqan/stream.h>
-#include <seqan/random.h>
-
-using namespace seqan;
-
-const int SEED = 42;
-
-int main()
-{
- Rng<MersenneTwister> rng(SEED);
- std::cout << "pickRandomNumber(rng) == " << pickRandomNumber(rng) << std::endl;
-
- Pdf<Uniform<double> > uniformDouble(0, 1);
- std::cout << "pickRandomNumber(rng, uniformDouble) == " << pickRandomNumber(rng, uniformDouble) << std::endl;
-
- Pdf<Uniform<int> > uniformInt(0, 42);
- std::cout << "pickRandomNumber(rng, uniformInt) == " << pickRandomNumber(rng, uniformInt) << std::endl;
-
- Pdf<Normal> normal(0, 1);
- std::cout << "pickRandomNumber(rng, normal) == " << pickRandomNumber(rng, normal) << std::endl;
-
- Pdf<LogNormal> logNormal(0, 1);
- std::cout << "pickRandomNumber(rng, logNormal) == " << pickRandomNumber(rng, logNormal) << std::endl;
-
- Pdf<LogNormal> logNormal2(0, 1, MuSigma());
- std::cout << "pickRandomNumber(rng, logNormal2) == " << pickRandomNumber(rng, logNormal2) << std::endl;
-
- Pdf<LogNormal> logNormal3(0.1, 1, MeanStdDev());
- std::cout << "pickRandomNumber(rng, logNormal3) == " << pickRandomNumber(rng, logNormal3) << std::endl;
-
- CharString container = "Hello World!";
- shuffle(container, rng);
- std::cout << "shuffle(\"Hello World!\") == " << container << std::endl;
-
- return 0;
-}
diff --git a/demos/dox/seq_io/fai_index_example.cpp b/demos/dox/seq_io/fai_index_example.cpp
deleted file mode 100644
index d4c91d8..0000000
--- a/demos/dox/seq_io/fai_index_example.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-#include <seqan/basic.h>
-#include <seqan/seq_io.h>
-#include <seqan/sequence.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString path = getAbsolutePath("/demos/dox/seq_io/example.fa");
-
- FaiIndex faiIndex;
-
- // Try to read the FAI index.
- if (!open(faiIndex, toCString(path)))
- {
- std::cerr << "Could not read the FAI index. Not fatal, we can just build it.\n";
- return 1;
- }
-
- // Try to build the FAI index (in memory) if reading was unsuccessful. If
- // building into memory succeeded, we try to write it out.
- if (!build(faiIndex, toCString(path)))
- {
- std::cerr << "FATAL: Could not build FAI index.\n";
- return 1;
- }
-
- if (!save(faiIndex))
- {
- std::cerr << "FATAL: Could not write out FAI index after building.\n";
- return 1;
- }
-
- // Now, read the first 1000 characters of chr1.
- unsigned idx = 0;
- if (!getIdByName(idx, faiIndex, "chr"))
- {
- std::cerr << "FATAL: chr1 not found in FAI index.\n";
- return 1;
- }
- CharString seq;
- readRegion(seq, faiIndex, idx, 0, 100);
-
- // Now print the first 100 characters we just read.
- std::cout << "chr:1-100 = " << seq << "\n";
-
- return 0;
-}
diff --git a/demos/dox/sequence/segment.cpp b/demos/dox/sequence/segment.cpp
deleted file mode 100644
index 720f19e..0000000
--- a/demos/dox/sequence/segment.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-// ==========================================================================
-// SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// * Neither the name of Knut Reinert or the FU Berlin nor the names of
-// its contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>
-// ==========================================================================
-// Example program used in the documentation of the Segment class.
-// ==========================================================================
-
-#include <seqan/basic.h>
-#include <seqan/sequence.h>
-#include <seqan/stream.h> // for I/O
-
-using namespace seqan;
-
-int main()
-{
-//![basic operations]
- typedef Prefix<String<char> >::Type TPrefix;
- typedef Infix<String<char> >::Type TInfix;
- typedef Suffix<String<char> >::Type TSuffix;
-
- String<char> text = "This is a text!";
-
- TPrefix preA(text, 4);
- TInfix infA(text, 10, 14);
- TSuffix sufA(text, 10);
- std::cout << preA << " " << infA << " " << sufA << "\n"; // => "This text text!"
-
- String<char> str;
- append(str, preA);
- append(str, infA);
- append(str, sufA);
- std::cout << str << "\n"; // => "This text text!"
-
- std::cout << preA[0] << " " << infA[0] << " " << sufA[0] << "\n"; // => "T t t"
-
- preA[0] = 'X';
- infA[0] = 'X';
- sufA[1] = 'X';
- std::cout << text << "\n"; // => "Xhis is a XXxt!"
-
- typedef Iterator<TInfix, Standard>::Type TIter;
- TIter it = begin(preA, Standard());
- it += 2;
- *it = 'Y';
- std::cout << text << "\n"; // => "XhYs is a XXxt!"
-//![basic operations]
-
-//![metafunction examples]
- typedef Infix<TInfix>::Type TInfix2; // == TInfix
- typedef Prefix<TInfix>::Type TInfix3; // == TInfix
- typedef Suffix<TInfix>::Type TInfix4; // == TInfix
-
- typedef Infix<TPrefix>::Type TInfix5; // == TInfix
- typedef Prefix<TPrefix>::Type TPrefix2; // == TPrefix
- typedef Suffix<TPrefix>::Type TInfix6; // == TInfix
-
- typedef Infix<TSuffix>::Type TInfix7; // == TInfix
- typedef Prefix<TSuffix>::Type TInfix8; // == TPrefix
- typedef Suffix<TSuffix>::Type TSuffix2; // == TSuffix
-//![metafunction examples]
-
-//![explicit segment]
- typedef Segment<TSuffix, PrefixSegment> TExplicitPrefix;
- TExplicitPrefix preB(sufA, 3);
- std::cout << preB << "\n"; // => "XXx"
-//![explicit segment]
-
- // This section below is used to remove unused typedef warnings but is not
- // shown anywhere within the docs. Only the fragments above are displayed.
- TInfix2 _inf2;
- TInfix3 _inf3;
- TInfix4 _inf4;
- TInfix5 _inf5;
- TPrefix2 _pref2;
- TInfix6 _inf6;
- TInfix7 _inf7;
- TInfix8 _inf8;
- TSuffix2 _suf2;
-
- ignoreUnusedVariableWarning(_inf2);
- ignoreUnusedVariableWarning(_inf3);
- ignoreUnusedVariableWarning(_inf4);
- ignoreUnusedVariableWarning(_inf5);
- ignoreUnusedVariableWarning(_inf6);
- ignoreUnusedVariableWarning(_inf7);
- ignoreUnusedVariableWarning(_inf8);
- ignoreUnusedVariableWarning(_pref2);
- ignoreUnusedVariableWarning(_suf2);
-
- return 0;
-}
diff --git a/demos/dox/stream/lexical_cast.cpp b/demos/dox/stream/lexical_cast.cpp
deleted file mode 100644
index b3f9c6b..0000000
--- a/demos/dox/stream/lexical_cast.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-
-using namespace seqan;
-
-int main()
-{
- // interpret string literal as int
- int x = 0;
- // successful cast
- std::cout << "success=" << lexicalCast(x, "123") << ", x=" << x << "\n";
- // unsuccessful cast
- std::cout << "success=" << lexicalCast(x, "42a") << ", x=" << x << "\n";
-
- // interpret std::string as int
- std::cout << "success=" << lexicalCast(x, std::string("234")) << ", x=" << x << "\n";
- // interpret CharString as int
- std::cout << "success=" << lexicalCast(x, CharString("345")) << ", x=" << x << "\n";
- // interpret infix as int
- CharString str = "123";
- std::cout << "success=" << lexicalCast(x, infix(str, 1, 2)) << ", x=" << x << "\n";
-
- // interpret literal as float and double
- float f = -1;
- double d = -1;
- std::cout << "success=" << lexicalCast(f, "3.1") << ", f=" << f << "\n"
- << "success=" << lexicalCast(d, "4.2") << ", d=" << d << "\n";
-
- // demonstrate throwing of exceptions with lexicalCast()
- try
- {
- x = lexicalCast<int>("a");
- }
- catch (BadLexicalCast const & badCast)
- {
- std::cout << "error: " << badCast.what() << "\n";
- }
-
- // demonstrate throwing of exceptions with lexicalCastWithException
- try
- {
- lexicalCastWithException(x, "b");
- }
- catch (BadLexicalCast const & badCast)
- {
- std::cout << "error: " << badCast.what() << "\n";
- }
-
- return 0;
-}
diff --git a/demos/unassigned_or_unused/ecoln.out b/demos/ecoln.out
similarity index 100%
rename from demos/unassigned_or_unused/ecoln.out
rename to demos/ecoln.out
diff --git a/demos/unassigned_or_unused/file_format.cpp b/demos/file_format.cpp
similarity index 100%
rename from demos/unassigned_or_unused/file_format.cpp
rename to demos/file_format.cpp
diff --git a/demos/unassigned_or_unused/file_readwrite.cpp b/demos/file_readwrite.cpp
similarity index 100%
rename from demos/unassigned_or_unused/file_readwrite.cpp
rename to demos/file_readwrite.cpp
diff --git a/demos/unassigned_or_unused/file_speed.cpp b/demos/file_speed.cpp
similarity index 100%
rename from demos/unassigned_or_unused/file_speed.cpp
rename to demos/file_speed.cpp
diff --git a/demos/unassigned_or_unused/filter_sam.cpp b/demos/filter_sam.cpp
similarity index 100%
rename from demos/unassigned_or_unused/filter_sam.cpp
rename to demos/filter_sam.cpp
diff --git a/demos/dox/find/finder_aho_corasick.cpp b/demos/find/finder_aho_corasick.cpp
similarity index 100%
rename from demos/dox/find/finder_aho_corasick.cpp
rename to demos/find/finder_aho_corasick.cpp
diff --git a/demos/dox/find/finder_index.cpp b/demos/find/finder_index.cpp
similarity index 100%
rename from demos/dox/find/finder_index.cpp
rename to demos/find/finder_index.cpp
diff --git a/demos/dox/find/finder_index.cpp.stdout b/demos/find/finder_index.cpp.stdout
similarity index 100%
rename from demos/dox/find/finder_index.cpp.stdout
rename to demos/find/finder_index.cpp.stdout
diff --git a/demos/dox/find/finder_online.cpp b/demos/find/finder_online.cpp
similarity index 100%
rename from demos/dox/find/finder_online.cpp
rename to demos/find/finder_online.cpp
diff --git a/demos/dox/find/finder_online.cpp.stdout b/demos/find/finder_online.cpp.stdout
similarity index 100%
rename from demos/dox/find/finder_online.cpp.stdout
rename to demos/find/finder_online.cpp.stdout
diff --git a/demos/find_approx.cpp b/demos/find_approx.cpp
new file mode 100644
index 0000000..a203eea
--- /dev/null
+++ b/demos/find_approx.cpp
@@ -0,0 +1,45 @@
+///A tutorial about the use of approximate find algorithms.
+#include <iostream>
+#include <seqan/find.h>
+
+using namespace seqan;
+
+///Example 1: This program finds all occurrences of $CCT$ in $AACTTAACCTAA$ with $\leq 1$ error using the @Shortcut.MyersUkkonen@ approximate search algorithm.
+int main()
+{
+ String<char> haystk("AACTTAACCTAA");
+ String<char> ndl("CCT");
+
+ Finder<String<char> > fnd(haystk);
+ Pattern<String<char>, MyersUkkonen> pat(ndl);
+///The function @Function.setScoreLimit@ sets the limit score an occurrence must reach.
+///Since the used scoring scheme is a distance measure (edit distance), all scores are negative.
+///A score limit of $\geq -1$ therefore means an edit distance $\leq 1$.
+///Note that @Function.position@ returns the position of the last found occurrence.
+ setScoreLimit(pat, -1);
+ while (find(fnd, pat))
+ {
+ std::cout << position(fnd) << ": " << getScore(pat) << "\n";
+ }
+
+///Example 2: Finding all start and endpositions
+ String<char> t = "babybanana";
+ String<char> p = "babana";
+ Finder<String<char> > finder(t);
+ Pattern<String<char>, Myers<FindInfix> > pattern(p);
+///Instead of using @Function.setScoreLimit@, we pass the score limit $-2$ as a third argument to find
+ while (find(finder, pattern, -2))
+ {
+ std::cout << "end: " << endPosition(finder) << std::endl;
+///In order to find the begin position, we have to call @Function.findBegin at .
+///Note that the third argument of @Function.findBegin@ is optional.
+///The default is the score limit that was used during the last call of @Function.find@ (i.e. -2 in this example).
+ while (findBegin(finder, pattern, getScore(pattern)))
+ {
+ std::cout << "begin: " << beginPosition(finder) << std::endl;
+ std::cout << infix(finder) << " matches with score ";
+ std::cout << getBeginScore(pattern) << std::endl;
+ }
+ }
+ return 0;
+}
diff --git a/demos/find_exact.cpp b/demos/find_exact.cpp
new file mode 100644
index 0000000..99b72ea
--- /dev/null
+++ b/demos/find_exact.cpp
@@ -0,0 +1,35 @@
+///A tutorial about the use of exact find algorithms.
+#include <iostream>
+#include <seqan/find.h>
+
+using namespace seqan;
+
+///This function prints the positions of all occurrences of $needle$ within $haystack$.
+///It uses the algorithm specified by $TAlgorithm$ that is passed as a @glos:Specialization@ to @Class.Pattern at .
+template <typename TAlgorithm>
+void printAllOccs(String<char> & haystack,
+ String<char> & needle)
+{
+ Finder<String<char> > finder(haystack);
+ Pattern<String<char>, TAlgorithm> pattern(needle);
+ while (find(finder, pattern))
+ {
+ std::cout << position(finder) << ", ";
+ }
+ std::cout << std::endl;
+}
+
+///The main function calls $printAllOccs$ for different exact string matching algorithms.
+int main()
+{
+ String<char> haystack = "send more money!";
+ String<char> needle = "mo";
+
+ printAllOccs<Horspool>(haystack, needle);
+ printAllOccs<BomAlgo>(haystack, needle);
+ printAllOccs<BndmAlgo>(haystack, needle);
+ printAllOccs<ShiftAnd>(haystack, needle);
+ printAllOccs<ShiftOr>(haystack, needle);
+
+ return 0;
+}
diff --git a/demos/unassigned_or_unused/find_wild.cpp b/demos/find_wild.cpp
similarity index 100%
rename from demos/unassigned_or_unused/find_wild.cpp
rename to demos/find_wild.cpp
diff --git a/demos/unassigned_or_unused/gff2gtf.cpp b/demos/gff2gtf.cpp
similarity index 100%
rename from demos/unassigned_or_unused/gff2gtf.cpp
rename to demos/gff2gtf.cpp
diff --git a/demos/dox/gff_io/UNUSED_gff_stream_read.cpp b/demos/gff_io/gff_stream_read.cpp
similarity index 100%
rename from demos/dox/gff_io/UNUSED_gff_stream_read.cpp
rename to demos/gff_io/gff_stream_read.cpp
diff --git a/demos/dox/graph_types/graph_algo_dijkstra.cpp b/demos/graph/graph_algo_dijkstra.cpp
similarity index 100%
rename from demos/dox/graph_types/graph_algo_dijkstra.cpp
rename to demos/graph/graph_algo_dijkstra.cpp
diff --git a/demos/dox/graph_types/graph_algo_dijkstra.cpp.stdout b/demos/graph/graph_algo_dijkstra.cpp.stdout
similarity index 100%
rename from demos/dox/graph_types/graph_algo_dijkstra.cpp.stdout
rename to demos/graph/graph_algo_dijkstra.cpp.stdout
diff --git a/demos/graph_algorithms/all_pairs_shortest_path.cpp b/demos/graph_algorithms/all_pairs_shortest_path.cpp
new file mode 100644
index 0000000..f777f48
--- /dev/null
+++ b/demos/graph_algorithms/all_pairs_shortest_path.cpp
@@ -0,0 +1,44 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create a graph with 9 directed edges (0,1), (0,2), ...
+ TSize numEdges = 9;
+ TVertexDescriptor edges[] = {0, 1, 0, 2, 0, 4, 1, 3, 1, 4, 2, 1, 3, 0, 3, 2, 4, 3};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph.
+ std::cout << g << std::endl;
+
+ // Create a property map with edge weights. Note that we can use negative
+ // weights since the edges are directed and there are no cycles.
+ int weights[] = {3, 8, -4, 1, 7, 4, 2, -5, 6};
+ String<int> weightMap;
+ assignEdgeMap(weightMap, g, weights);
+
+ // Compute all-pairs shortest path.
+ String<int> distMat;
+ String<TVertexDescriptor> predMat;
+ allPairsShortestPath(distMat, predMat, g, weightMap);
+
+ // Print the result to stdout.
+ unsigned int len = static_cast<unsigned>(std::sqrt((double)length(distMat)));
+ for (TSize row = 0; row < len; ++row)
+ for (TSize col = 0; col < len; ++col)
+ {
+ std::cout << row << "," << col << " (Distance="
+ << getValue(distMat, row * len + col) << "): ";
+ _printAllPairsShortestPath(g, predMat, row, col);
+ std::cout << "\n";
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/all_pairs_shortest_path.cpp.stdout b/demos/graph_algorithms/all_pairs_shortest_path.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/all_pairs_shortest_path.cpp.stdout
rename to demos/graph_algorithms/all_pairs_shortest_path.cpp.stdout
diff --git a/demos/graph_algorithms/bellman_ford_algorithm.cpp b/demos/graph_algorithms/bellman_ford_algorithm.cpp
new file mode 100644
index 0000000..3608138
--- /dev/null
+++ b/demos/graph_algorithms/bellman_ford_algorithm.cpp
@@ -0,0 +1,47 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 10 directed edges (0,1), (0,3), ...
+ TSize numEdges = 10;
+ TVertexDescriptor edges[] = {0, 1, 0, 3, 1, 2, 1, 3, 2, 4, 3, 1, 3, 2, 3, 4, 4, 0, 4, 2};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+
+ // Print graph.
+ std::cout << g << "\n";
+
+ // Create external edge property map and assign to graph.
+ unsigned weights[] = {10, 5, 1, 2, 4, 3, 9, 2, 7, 6};
+ String<unsigned> weightMap;
+ assignEdgeMap(weightMap, g, weights);
+
+ // Run Bellman-Ford algorithm from vertex 0. NB: Ford-Fulkerson also
+ // detects negative cycles.
+ String<unsigned int> predMap;
+ String<unsigned int> distMap;
+ bool noNegativeCycle = bellmanFordAlgorithm(predMap, distMap, g, 0, weightMap);
+
+ // Print result to stdout.
+ std::cout << "Single-Source Shortest Paths: " << "\n"
+ << "Graph without negative cycles? " << noNegativeCycle << "\n";
+ typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
+ TVertexIterator it(g);
+ while (!atEnd(it))
+ {
+ std::cout << "Path from 0 to " << getValue(it) << ": ";
+ _printPath(g, predMap, (TVertexDescriptor) 0, getValue(it));
+ std::cout << " (Distance: " << getProperty(distMap, getValue(it)) << ")\n";
+ goNext(it);
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/bellman_ford_algorithm.cpp.stdout b/demos/graph_algorithms/bellman_ford_algorithm.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/bellman_ford_algorithm.cpp.stdout
rename to demos/graph_algorithms/bellman_ford_algorithm.cpp.stdout
diff --git a/demos/graph_algorithms/breadth_first_search.cpp b/demos/graph_algorithms/breadth_first_search.cpp
new file mode 100644
index 0000000..f86bf09
--- /dev/null
+++ b/demos/graph_algorithms/breadth_first_search.cpp
@@ -0,0 +1,53 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Undirected<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create a graph with 10 undirected edges {0,1}, {0,4}, ...
+ TSize numEdges = 10;
+ TVertexDescriptor edges[] = {0, 1, 0, 4, 1, 5, 2, 5, 2, 6, 2, 3, 3, 6, 3, 7, 5, 6, 6, 7};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph.
+ std::cout << g << "\n";
+
+ // Create external property map for the vertex names and assign to graph.
+ String<char> nameMap;
+ char names[] = {'r', 's', 't', 'u', 'v', 'w', 'x', 'y'};
+ assignVertexMap(nameMap, g, names);
+
+ // Perform a BFS search starting from vertex with descriptor 1.
+ String<unsigned int> predMap;
+ String<unsigned int> distMap;
+ breadthFirstSearch(predMap, distMap, g, 1);
+
+ // Write the result to stdout.
+ std::cout << "Breadth-First search: \n";
+ typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
+ TVertexIterator it(g);
+ while (!atEnd(it))
+ {
+ std::cout << "Vertex " << getProperty(nameMap, getValue(it)) << ": ";
+ if (getProperty(distMap, getValue(it)) == _getInfinityDistance(distMap))
+ SEQAN_FAIL("Should never reach here!");
+ else
+ std::cout << "Level = " << getProperty(distMap, getValue(it));
+
+ typedef Value<String<unsigned int> >::Type TPredVal;
+ TPredVal pre = getProperty(predMap, getValue(it));
+ if (pre != getNil<TVertexDescriptor>())
+ std::cout << ", Predecessor = " << getProperty(nameMap, pre) << "\n";
+ else
+ std::cout << ", Predecessor = nil" << "\n";
+ goNext(it);
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/breadth_first_search.cpp.stdout b/demos/graph_algorithms/breadth_first_search.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/breadth_first_search.cpp.stdout
rename to demos/graph_algorithms/breadth_first_search.cpp.stdout
diff --git a/demos/graph_algorithms/dag_shortest_path.cpp b/demos/graph_algorithms/dag_shortest_path.cpp
new file mode 100644
index 0000000..b7ffceb
--- /dev/null
+++ b/demos/graph_algorithms/dag_shortest_path.cpp
@@ -0,0 +1,44 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 10 directed edges (0,2), (0,1), ...
+ TSize numEdges = 10;
+ TVertexDescriptor edges[] = {0, 2, 0, 1, 1, 3, 1, 2, 2, 5, 2, 4, 2, 3, 3, 5, 3, 4, 4, 5};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph to stdout.
+ std::cout << g << "\n";
+
+ // Create external edge property map with edge weights.
+ int weights[] = {3, 5, 6, 2, 2, 4, 7, 1, -1, -2};
+ String<int> weightMap;
+ assignEdgeMap(weightMap, g, weights);
+
+ // Run DAG shortest path computation from vertex with descriptor 1.
+ String<unsigned> predMap;
+ String<unsigned> distMap;
+ dagShortestPath(predMap, distMap, g, 1, weightMap);
+
+ // Print result to stdout.
+ std::cout << "Single-Source Shortest Paths in DAG: \n";
+ typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
+ TVertexIterator it(g);
+ while (!atEnd(it))
+ {
+ std::cout << "Path from 1 to " << getValue(it) << ": ";
+ _printPath(g, predMap, (TVertexDescriptor)1, getValue(it));
+ std::cout << " (Distance: " << getProperty(distMap, getValue(it)) << ")\n";
+ goNext(it);
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/dag_shortest_path.cpp.stdout b/demos/graph_algorithms/dag_shortest_path.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/dag_shortest_path.cpp.stdout
rename to demos/graph_algorithms/dag_shortest_path.cpp.stdout
diff --git a/demos/graph_algorithms/depth_first_search.cpp b/demos/graph_algorithms/depth_first_search.cpp
new file mode 100644
index 0000000..3c76799
--- /dev/null
+++ b/demos/graph_algorithms/depth_first_search.cpp
@@ -0,0 +1,51 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 8 directed edges (0,3), (0,1), ...
+ TSize numEdges = 8;
+ TVertexDescriptor edges[] = {0, 3, 0, 1, 1, 4, 2, 4, 2, 5, 3, 1, 4, 3, 5, 5};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph.
+ std::cout << g << "\n";
+
+ // Create external property map for the vertex names and assign to graph.
+ char names[] = {'u', 'v', 'w', 'x', 'y', 'z'};
+ String<char> nameMap;
+ assignVertexMap(nameMap, g, names);
+
+ // Perform a DFS search.
+ String<unsigned int> predMap;
+ String<unsigned int> discoveryTimeMap;
+ String<unsigned int> finishingTimeMap;
+ depthFirstSearch(predMap, discoveryTimeMap, finishingTimeMap, g);
+
+ // Write the result to stdout.
+ std::cout << "Depth-First search: \n";
+ typedef Iterator<Graph<>, VertexIterator>::Type TVertexIterator;
+ TVertexIterator it(g);
+ while (!atEnd(it))
+ {
+ std::cout << "Vertex " << getProperty(nameMap, getValue(it)) << ": ";
+ std::cout << "Discovery time = " << getProperty(discoveryTimeMap, getValue(it)) << ",";
+ std::cout << "Finishing time = " << getProperty(finishingTimeMap, getValue(it)) << ",";
+ typedef Value<String<unsigned int> >::Type TPredVal;
+ TPredVal pre = getProperty(predMap, getValue(it));
+ if (pre != getNil<TVertexDescriptor>())
+ std::cout << "Predecessor = " << getProperty(nameMap, pre) << "\n";
+ else
+ std::cout << "Predecessor = nil" << "\n";
+ goNext(it);
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/depth_first_search.cpp.stdout b/demos/graph_algorithms/depth_first_search.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/depth_first_search.cpp.stdout
rename to demos/graph_algorithms/depth_first_search.cpp.stdout
diff --git a/demos/graph_algorithms/dijkstra.cpp b/demos/graph_algorithms/dijkstra.cpp
new file mode 100644
index 0000000..5eef344
--- /dev/null
+++ b/demos/graph_algorithms/dijkstra.cpp
@@ -0,0 +1,72 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 10 directed edges (0,1), (0,3), ...
+ TSize numEdges = 10;
+ TVertexDescriptor edges[] = {0, 1, 0, 3, 1, 2, 1, 3, 2, 4, 3, 1, 3, 2, 3, 4, 4, 0, 4, 2};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+
+ // Fill external edge weight map.
+ unsigned weights[] = {10, 5, 1, 2, 4, 3, 9, 2, 7, 6};
+ String<unsigned> weightMap;
+ assignEdgeMap(weightMap, g, weights);
+
+ // Run Dijkstra's algorithm from vertex 0.
+ String<unsigned> predMap;
+ String<unsigned> distMap;
+ dijkstra(predMap, distMap, g, 0, weightMap);
+
+ // Print results to stdout.
+ std::cout << "Single-Source Shortest Paths: \n";
+ typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
+ TVertexIterator it(g);
+ while (!atEnd(it))
+ {
+ std::cout << "Path from 0 to " << getValue(it) << ": ";
+ _printPath(g, predMap, (TVertexDescriptor) 0, getValue(it));
+ std::cout << " (Distance: " << getProperty(distMap, getValue(it)) << ")\n";
+ goNext(it);
+ }
+
+ // We can achieve the same thing using an internal map that is edge cargos.
+ typedef unsigned int TEdgeCargo;
+ typedef Directed<TEdgeCargo> TEdges;
+ typedef Graph<TEdges> TCargoGraph;
+
+ // Construct graph with the same edges as above.
+ TCargoGraph cargoG;
+ addEdges(cargoG, edges, numEdges);
+
+ // Fill internal edge weight map.
+ InternalPropertyMap<TEdgeCargo> intMap;
+ assignEdgeMap(intMap, cargoG, weights);
+
+ // Run Dijkstra's algorithm from vertex 0.
+ clear(predMap);
+ clear(distMap);
+ dijkstra(predMap, distMap, cargoG, 0, intMap);
+
+ // Print result to stdout.
+ std::cout << "\nSingle-Source Shortest Paths: \n";
+ typedef Iterator<TCargoGraph, VertexIterator>::Type TCargoVertexIterator;
+ TCargoVertexIterator itC(cargoG);
+ while (!atEnd(itC))
+ {
+ std::cout << "Path from 0 to " << getValue(itC) << ": ";
+ _printPath(g, predMap, (TVertexDescriptor)0, getValue(itC));
+ std::cout << " (Distance: " << getProperty(distMap, getValue(itC)) << ")\n";
+ goNext(itC);
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/dijkstra.cpp.stdout b/demos/graph_algorithms/dijkstra.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/dijkstra.cpp.stdout
rename to demos/graph_algorithms/dijkstra.cpp.stdout
diff --git a/demos/graph_algorithms/floyd_warshall_algorithm.cpp b/demos/graph_algorithms/floyd_warshall_algorithm.cpp
new file mode 100644
index 0000000..847723e
--- /dev/null
+++ b/demos/graph_algorithms/floyd_warshall_algorithm.cpp
@@ -0,0 +1,43 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 9 directed edges (0,1), (0,2)
+ TSize numEdges = 9;
+ TVertexDescriptor edges[] = {0, 1, 0, 2, 0, 4, 1, 3, 1, 4, 2, 1, 3, 0, 3, 2, 4, 3};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph.
+ std::cout << g << "\n";
+
+ // Fill external property map with edge weights and assign to graph.
+ int weights[] = {3, 8, -4, 1, 7, 4, 2, -5, 6};
+ String<int> weightMap;
+ assignEdgeMap(weightMap, g, weights);
+
+ // Run Floyd-Warshall algorithm.
+ String<int> distMat;
+ String<TVertexDescriptor> predMat;
+ floydWarshallAlgorithm(distMat, predMat, g, weightMap);
+
+ // Print result to stdout.
+ unsigned int len = static_cast<unsigned>(std::sqrt((double)length(distMat)));
+ for (TSize row = 0; row < len; ++row)
+ for (TSize col = 0; col < len; ++col)
+ {
+ std::cout << row << "," << col << " (Distance="
+ << getValue(distMat, row * len + col) << "): ";
+ _printAllPairsShortestPath(g, predMat, row, col);
+ std::cout << std::endl;
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/floyd_warshall_algorithm.cpp.stdout b/demos/graph_algorithms/floyd_warshall_algorithm.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/floyd_warshall_algorithm.cpp.stdout
rename to demos/graph_algorithms/floyd_warshall_algorithm.cpp.stdout
diff --git a/demos/graph_algorithms/ford_fulkerson_algorithm.cpp b/demos/graph_algorithms/ford_fulkerson_algorithm.cpp
new file mode 100644
index 0000000..fb27ab9
--- /dev/null
+++ b/demos/graph_algorithms/ford_fulkerson_algorithm.cpp
@@ -0,0 +1,41 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Iterator<TGraph, EdgeIterator>::Type TEdgeIterator;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 10 directed edges (0,1), (0,4), ...
+ TSize numEdges = 10;
+ TVertexDescriptor edges[] = {0, 1, 0, 4, 1, 2, 1, 4, 2, 3, 2, 4, 4, 1, 4, 5, 5, 2, 5, 3};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph.
+ std::cout << g << "\n";
+
+ // Create external property map for the edge capacities and assign to the graph.
+ String<unsigned int> capMap;
+ unsigned capacity[] = {16, 13, 12, 10, 20, 9, 4, 14, 7, 4};
+ assignEdgeMap(capMap, g, capacity);
+
+ // Run the Ford-Fulkerson algorithm for maximum flow computation from source
+ // vertex 0 to sink vertex 3. valF is the value of the flow.
+ String<unsigned int> flow;
+ unsigned valF = fordFulkersonAlgorithm(flow, g, 0, 3, capMap);
+
+ // Print the result to stdout.
+ std::cout << "Ford-Fulkerson (Value of the flow = " << valF << ")\n";
+ TEdgeIterator itEdge(g);
+ for (; !atEnd(itEdge); goNext(itEdge))
+ std::cout << "(" << sourceVertex(itEdge) << "," << targetVertex(itEdge) << "): "
+ << "Flow: " << getProperty(flow, getValue(itEdge)) << ", Capacity: "
+ << getProperty(capMap, getValue(itEdge)) << "\n";
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/ford_fulkerson_algorithm.cpp.stdout b/demos/graph_algorithms/ford_fulkerson_algorithm.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/ford_fulkerson_algorithm.cpp.stdout
rename to demos/graph_algorithms/ford_fulkerson_algorithm.cpp.stdout
diff --git a/demos/dox/graph_algorithms/heaviest_increasing_subsequence.cpp b/demos/graph_algorithms/heaviest_increasing_subsequence.cpp
similarity index 100%
rename from demos/dox/graph_algorithms/heaviest_increasing_subsequence.cpp
rename to demos/graph_algorithms/heaviest_increasing_subsequence.cpp
diff --git a/demos/graph_algorithms/kruskals_algorithm.cpp b/demos/graph_algorithms/kruskals_algorithm.cpp
new file mode 100644
index 0000000..3665a27
--- /dev/null
+++ b/demos/graph_algorithms/kruskals_algorithm.cpp
@@ -0,0 +1,49 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Undirected<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 14 undirected edges {0,1}, {0,6}, ...
+ TSize numEdges = 14;
+ TVertexDescriptor edges[] = {0, 1, 0, 6, 1, 2, 1, 6, 2, 3, 2, 4, 2, 8, 3, 5, 3, 8, 4, 6, 4, 7, 5, 8, 6, 7, 7, 8};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph.
+ std::cout << g << std::endl;
+
+ // Fill external property map for each edge weight and vertex names.
+ unsigned int weights[] = {4, 8, 8, 11, 7, 2, 4, 9, 14, 7, 6, 10, 1, 2};
+ char names[] = {'a', 'b', 'c', 'd', 'i', 'e', 'h', 'g', 'f'};
+ String<int> weightMap;
+ assignEdgeMap(weightMap, g, weights);
+ String<char> nameMap;
+ assignVertexMap(nameMap, g, names);
+
+ // Run Kruskal's algorithm.
+ String<TVertexDescriptor> treeEdges;
+ kruskalsAlgorithm(treeEdges, g, 0, weightMap);
+
+ // Print the result to stdout.
+ std::cout << "Minimum Spanning Tree (Kruskal's algorithm): \n"
+ << "Tree Edges: ";
+ typedef Iterator<String<TVertexDescriptor> >::Type TStrIterator;
+ TStrIterator it = begin(treeEdges);
+ TStrIterator itEnd = end(treeEdges);
+ while (it != itEnd)
+ {
+ std::cout << "(" << getProperty(nameMap, getValue(it)) << ",";
+ goNext(it);
+ std::cout << getProperty(nameMap, getValue(it)) << "), ";
+ goNext(it);
+ }
+ std::cout << "\n";
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/kruskals_algorithm.cpp.stdout b/demos/graph_algorithms/kruskals_algorithm.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/kruskals_algorithm.cpp.stdout
rename to demos/graph_algorithms/kruskals_algorithm.cpp.stdout
diff --git a/demos/dox/graph_algorithms/longest_common_subsequence.cpp b/demos/graph_algorithms/longest_common_subsequence.cpp
similarity index 100%
rename from demos/dox/graph_algorithms/longest_common_subsequence.cpp
rename to demos/graph_algorithms/longest_common_subsequence.cpp
diff --git a/demos/dox/graph_algorithms/longest_increasing_subsequence.cpp b/demos/graph_algorithms/longest_increasing_subsequence.cpp
similarity index 100%
rename from demos/dox/graph_algorithms/longest_increasing_subsequence.cpp
rename to demos/graph_algorithms/longest_increasing_subsequence.cpp
diff --git a/demos/graph_algorithms/prims_algorithm.cpp b/demos/graph_algorithms/prims_algorithm.cpp
new file mode 100644
index 0000000..41c8774
--- /dev/null
+++ b/demos/graph_algorithms/prims_algorithm.cpp
@@ -0,0 +1,47 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Undirected<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 14 undirected edges {0,1}, {0,6}, ...
+ TSize numEdges = 14;
+ TVertexDescriptor edges[] = {0, 1, 0, 6, 1, 2, 1, 6, 2, 3, 2, 4, 2, 8, 3, 5, 3, 8, 4, 6, 4, 7, 5, 8, 6, 7, 7, 8};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph.
+ std::cout << g << std::endl;
+
+ // Fill two external property maps for edge weights and vertex names.
+ unsigned int weights[] = {4, 8, 8, 11, 7, 2, 4, 9, 14, 7, 6, 10, 1, 2};
+ char names[] = {'a', 'b', 'c', 'd', 'i', 'e', 'h', 'g', 'f'};
+ String<int> weightMap;
+ assignEdgeMap(weightMap, g, weights);
+ String<char> nameMap;
+ assignVertexMap(nameMap, g, names);
+
+ // Run Prim's algorithm.
+ String<TVertexDescriptor> predMap;
+ primsAlgorithm(predMap, g, 0, weightMap);
+
+ // Print result to stdout.
+ std::cout << "Minimum Spanning Tree (Prim's algorithm): \n";
+ typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
+ TVertexIterator it(g);
+ while (!atEnd(it))
+ {
+ std::cout << "Path from " << getProperty(nameMap, 0) << " to "
+ << getProperty(nameMap, getValue(it)) << ": ";
+ _printPath(g, predMap, (TVertexDescriptor)0, getValue(it), nameMap);
+ std::cout << "\n";
+ goNext(it);
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/prims_algorithm.cpp.stdout b/demos/graph_algorithms/prims_algorithm.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/prims_algorithm.cpp.stdout
rename to demos/graph_algorithms/prims_algorithm.cpp.stdout
diff --git a/demos/graph_algorithms/strongly_connected_components.cpp b/demos/graph_algorithms/strongly_connected_components.cpp
new file mode 100644
index 0000000..1d91879
--- /dev/null
+++ b/demos/graph_algorithms/strongly_connected_components.cpp
@@ -0,0 +1,42 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create grap with 14 directed edges (1,0), (0,4), ...
+ TSize numEdges = 14;
+ TVertexDescriptor edges[] = {1, 0, 0, 4, 2, 1, 4, 1, 5, 1, 6, 2, 3, 2, 2, 3, 7, 3, 5, 4, 6, 5, 5, 6, 7, 6, 7, 7};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph.
+ std::cout << g << std::endl;
+
+ // Create external property map with vertex names and assign to graph.
+ String<char> nameMap;
+ char names[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
+ assignVertexMap(nameMap, g, names);
+
+ // Compute strongly connected components.
+ String<unsigned int> component;
+ stronglyConnectedComponents(component, g);
+
+ // Print result to stdout.
+ std::cout << "Strongly Connected Components: \n";
+ typedef Iterator<TGraph, VertexIterator>::Type TVertexIterator;
+ TVertexIterator it(g);
+ while (!atEnd(it))
+ {
+ std::cout << "Vertex " << getProperty(nameMap, getValue(it)) << ": \n"
+ << "Component = " << getProperty(component, getValue(it)) << "\n";
+ goNext(it);
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/strongly_connected_components.cpp.stdout b/demos/graph_algorithms/strongly_connected_components.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/strongly_connected_components.cpp.stdout
rename to demos/graph_algorithms/strongly_connected_components.cpp.stdout
diff --git a/demos/graph_algorithms/topological_sort.cpp b/demos/graph_algorithms/topological_sort.cpp
new file mode 100644
index 0000000..1511a81
--- /dev/null
+++ b/demos/graph_algorithms/topological_sort.cpp
@@ -0,0 +1,43 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 9 directed edges (0,3), (0,1), ...
+ TSize numEdges = 9;
+ TVertexDescriptor edges[] = {0, 3, 0, 1, 1, 2, 3, 2, 5, 7, 5, 6, 6, 7, 6, 3, 8, 7};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph.
+ std::cout << g << "\n";
+
+ // Create external property map with vertex labels.
+ String<std::string> nameMap;
+ std::string names[] = {"shirt", "tie", "jacket", "belt", "watch", "undershorts", "pants", "shoes", "socks"};
+ assignVertexMap(nameMap, g, names);
+
+ // Get vertex descriptor in topological sort order.
+ String<TVertexDescriptor> order;
+ topologicalSort(order, g);
+
+ // Write the result to stdout.
+ std::cout << "Topological sort: \n";
+ typedef Iterator<String<TVertexDescriptor> >::Type TStringIterator;
+ TStringIterator it = begin(order);
+ TStringIterator itEnd = end(order);
+ while (it != itEnd)
+ {
+ std::cout << getProperty(nameMap, getValue(it)) << ",";
+ goNext(it);
+ }
+ std::cout << "\n";
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/topological_sort.cpp.stdout b/demos/graph_algorithms/topological_sort.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/topological_sort.cpp.stdout
rename to demos/graph_algorithms/topological_sort.cpp.stdout
diff --git a/demos/graph_algorithms/transitive_closure.cpp b/demos/graph_algorithms/transitive_closure.cpp
new file mode 100644
index 0000000..4dda3ac
--- /dev/null
+++ b/demos/graph_algorithms/transitive_closure.cpp
@@ -0,0 +1,35 @@
+#include <iostream>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef Graph<Directed<> > TGraph;
+ typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
+ typedef Size<TGraph>::Type TSize;
+
+ // Create graph with 5 directed edges (3,0), (1,2), ...
+ TSize numEdges = 5;
+ TVertexDescriptor edges[] = {3, 0, 1, 2, 2, 1, 1, 3, 3, 2};
+ TGraph g;
+ addEdges(g, edges, numEdges);
+ // Print graph to stdout.
+ std::cout << g << "\n";
+
+ // Compute transitive closure.
+ String<bool> closure;
+ transitiveClosure(closure, g);
+
+ // Print result to stdout.
+ TSize len = static_cast<TSize>(std::sqrt((double) length(closure)));
+ for (TSize row = 0; row < len; ++row)
+ {
+ for (TSize col = 0; col < len; ++col)
+ std::cout << getValue(closure, row * len + col) << ",";
+ std::cout << std::endl;
+ }
+
+ return 0;
+}
diff --git a/demos/dox/graph_algorithms/transitive_closure.cpp.stdout b/demos/graph_algorithms/transitive_closure.cpp.stdout
similarity index 100%
rename from demos/dox/graph_algorithms/transitive_closure.cpp.stdout
rename to demos/graph_algorithms/transitive_closure.cpp.stdout
diff --git a/demos/dox/graph_align/graph_align.cpp b/demos/graph_align/graph_align.cpp
similarity index 100%
rename from demos/dox/graph_align/graph_align.cpp
rename to demos/graph_align/graph_align.cpp
diff --git a/demos/graph_hmm.cpp b/demos/graph_hmm.cpp
new file mode 100644
index 0000000..bdb9684
--- /dev/null
+++ b/demos/graph_hmm.cpp
@@ -0,0 +1,98 @@
+///A tutorial about HMMs.
+#include <iostream>
+#include <fstream>
+#include <seqan/basic.h>
+#include <seqan/graph_algorithms.h>
+
+using namespace seqan;
+
+int main()
+{
+///HMM creation
+ typedef LogProb<> TProbability;
+ typedef Dna TAlphabet;
+ typedef Size<TAlphabet>::Type TSize;
+ typedef Graph<Hmm<TAlphabet, TProbability, Default> > THmm;
+ typedef VertexDescriptor<THmm>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<THmm>::Type TEdgeDescriptor;
+
+ Dna dnaA = Dna('A');
+ Dna dnaC = Dna('C');
+ Dna dnaG = Dna('G');
+ Dna dnaT = Dna('T');
+
+ THmm hmm;
+
+///Begin state
+ TVertexDescriptor begState = addVertex(hmm);
+ assignBeginState(hmm, begState);
+
+///Add exon state
+ TVertexDescriptor exonState = addVertex(hmm);
+ emissionProbability(hmm, exonState, dnaA) = 0.25;
+ emissionProbability(hmm, exonState, dnaC) = 0.25;
+ emissionProbability(hmm, exonState, dnaG) = 0.25;
+ emissionProbability(hmm, exonState, dnaT) = 0.25;
+
+///Add 5' splice site
+ TVertexDescriptor spliceState = addVertex(hmm);
+ emissionProbability(hmm, spliceState, dnaA) = 0.05;
+ emissionProbability(hmm, spliceState, dnaC) = 0.0;
+ emissionProbability(hmm, spliceState, dnaG) = 0.95;
+ emissionProbability(hmm, spliceState, dnaT) = 0.0;
+
+///Add intron state
+ TVertexDescriptor intronState = addVertex(hmm);
+ emissionProbability(hmm, intronState, dnaA) = 0.4;
+ emissionProbability(hmm, intronState, dnaC) = 0.1;
+ emissionProbability(hmm, intronState, dnaG) = 0.1;
+ emissionProbability(hmm, intronState, dnaT) = 0.4;
+
+///End state
+ TVertexDescriptor eState = addVertex(hmm);
+ assignEndState(hmm, eState);
+
+///Transitions
+ addEdge(hmm, exonState, exonState, 0.9);
+ addEdge(hmm, exonState, spliceState, 0.1);
+ addEdge(hmm, spliceState, intronState, 1.0);
+ addEdge(hmm, begState, exonState, 1.0);
+ addEdge(hmm, intronState, intronState, 0.9);
+ addEdge(hmm, intronState, eState, 0.1);
+
+///Print the whole model
+ std::cout << hmm << std::endl;
+
+///Viterbi algorithm
+ String<Dna> sequence = "CTTCATGTGAAAGCAGACGTAAGTCA";
+ String<TVertexDescriptor> path;
+ TProbability p = viterbiAlgorithm(path, hmm, sequence);
+ std::cout << "Viterbi algorithm" << std::endl;
+ std::cout << "Probability of best path: " << p << std::endl;
+ std::cout << "Sequence: " << std::endl;
+ for (TSize i = 0; i < length(sequence); ++i)
+ std::cout << sequence[i] << ',';
+ std::cout << std::endl;
+ std::cout << "State path: " << std::endl;
+ for (TSize i = 0; i < length(path); ++i)
+ {
+ std::cout << path[i];
+ if (isSilent(hmm, path[i]))
+ std::cout << " (Silent)";
+ if (i < length(path) - 1)
+ std::cout << ',';
+ }
+ std::cout << std::endl;
+
+///Forward algorithm
+ std::cout << "Forward algorithm" << std::endl;
+ p = forwardAlgorithm(hmm, sequence);
+ std::cout << "Probability that the HMM generated the sequence: " << p << std::endl;
+
+///Backward algorithm
+ std::cout << "Backward algorithm" << std::endl;
+ p = backwardAlgorithm(hmm, sequence);
+ std::cout << "Probability that the HMM generated the sequence: " << p << std::endl;
+
+ return 0;
+}
diff --git a/demos/graph_hmm_silent.cpp b/demos/graph_hmm_silent.cpp
new file mode 100644
index 0000000..03dadc2
--- /dev/null
+++ b/demos/graph_hmm_silent.cpp
@@ -0,0 +1,118 @@
+///A tutorial about HMMs with silent states
+#include <iostream>
+#include <fstream>
+#include <seqan/graph_algorithms.h>
+#include <seqan/basic/basic_math.h>
+
+using namespace seqan;
+
+int main()
+{
+///HMM creation
+ typedef LogProb<> TProbability;
+ typedef Dna TAlphabet;
+ typedef Size<TAlphabet>::Type TSize;
+ typedef Graph<Hmm<TAlphabet, TProbability> > THmm;
+ typedef VertexDescriptor<THmm>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<THmm>::Type TEdgeDescriptor;
+
+ Dna dnaA = Dna('A');
+ Dna dnaC = Dna('C');
+ Dna dnaG = Dna('G');
+ Dna dnaT = Dna('T');
+
+ THmm hmm;
+
+///Begin state
+ TVertexDescriptor begState = addVertex(hmm);
+ assignBeginState(hmm, begState);
+
+///Emission states
+ TVertexDescriptor emitState1 = addVertex(hmm);
+ emissionProbability(hmm, emitState1, dnaA) = 0.0;
+ emissionProbability(hmm, emitState1, dnaC) = 0.8;
+ emissionProbability(hmm, emitState1, dnaG) = 0.1;
+ emissionProbability(hmm, emitState1, dnaT) = 0.1;
+
+ TVertexDescriptor emitState2 = addVertex(hmm);
+ emissionProbability(hmm, emitState2, dnaA) = 0.0;
+ emissionProbability(hmm, emitState2, dnaC) = 0.2;
+ emissionProbability(hmm, emitState2, dnaG) = 0.2;
+ emissionProbability(hmm, emitState2, dnaT) = 0.6;
+
+ TVertexDescriptor emitState3 = addVertex(hmm);
+ emissionProbability(hmm, emitState3, dnaA) = 0.7;
+ emissionProbability(hmm, emitState3, dnaC) = 0.1;
+ emissionProbability(hmm, emitState3, dnaG) = 0.1;
+ emissionProbability(hmm, emitState3, dnaT) = 0.1;
+
+ TVertexDescriptor emitState4 = addVertex(hmm);
+ emissionProbability(hmm, emitState4, dnaA) = 0.25;
+ emissionProbability(hmm, emitState4, dnaC) = 0.25;
+ emissionProbability(hmm, emitState4, dnaG) = 0.25;
+ emissionProbability(hmm, emitState4, dnaT) = 0.25;
+
+///Silent states (deletion states)
+ TVertexDescriptor delState1 = addVertex(hmm, true);
+ TVertexDescriptor delState2 = addVertex(hmm, true);
+ TVertexDescriptor delState3 = addVertex(hmm, true);
+ TVertexDescriptor delState4 = addVertex(hmm, true);
+
+///End state
+ TVertexDescriptor eState = addVertex(hmm);
+ assignEndState(hmm, eState);
+
+///Transitions
+ addEdge(hmm, begState, emitState1, 0.5);
+ addEdge(hmm, begState, delState1, 0.5);
+ addEdge(hmm, emitState1, emitState2, 0.5);
+ addEdge(hmm, emitState1, delState2, 0.5);
+ addEdge(hmm, delState1, emitState2, 0.5);
+ addEdge(hmm, delState1, delState2, 0.5);
+ addEdge(hmm, emitState2, emitState3, 0.5);
+ addEdge(hmm, emitState2, delState3, 0.5);
+ addEdge(hmm, delState2, emitState3, 0.5);
+ addEdge(hmm, delState2, delState3, 0.5);
+ addEdge(hmm, emitState3, emitState4, 0.5);
+ addEdge(hmm, emitState3, delState4, 0.5);
+ addEdge(hmm, delState3, emitState4, 0.5);
+ addEdge(hmm, delState3, delState4, 0.5);
+ addEdge(hmm, emitState4, eState, 1.0);
+ addEdge(hmm, delState4, eState, 1.0);
+
+///Print the whole model
+ std::cout << hmm << std::endl;
+
+///Viterbi algorithm
+ String<Dna> sequence = "CA";
+ String<TVertexDescriptor> path;
+ TProbability p = viterbiAlgorithm(path, hmm, sequence);
+ std::cout << "Viterbi algorithm" << std::endl;
+ std::cout << "Probability of the best path: " << p << std::endl;
+ std::cout << "Sequence: " << std::endl;
+ for (TSize i = 0; i < length(sequence); ++i)
+ std::cout << sequence[i] << ',';
+ std::cout << std::endl;
+ std::cout << "State path: " << std::endl;
+ for (TSize i = 0; i < length(path); ++i)
+ {
+ std::cout << path[i];
+ if (isSilent(hmm, path[i]))
+ std::cout << " (Silent)";
+ if (i < length(path) - 1)
+ std::cout << ',';
+ }
+ std::cout << std::endl;
+
+///Forward algorithm
+ std::cout << "Forward algorithm" << std::endl;
+ p = forwardAlgorithm(hmm, sequence);
+ std::cout << "Probability that the HMM generated the sequence: " << p << std::endl;
+
+///Backward algorithm
+ std::cout << "Backward algorithm" << std::endl;
+ p = backwardAlgorithm(hmm, sequence);
+ std::cout << "Probability that the HMM generated the sequence: " << p << std::endl;
+
+ return 0;
+}
diff --git a/demos/howto/align_gaps_clipping.cpp b/demos/howto/align_gaps_clipping.cpp
deleted file mode 100644
index 7c0e3e1..0000000
--- a/demos/howto/align_gaps_clipping.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// Demo program for clipping with Gaps objects.
-
-#include <iostream>
-
-#include <seqan/sequence.h>
-#include <seqan/align.h>
-
-using namespace seqan;
-
-int main()
-{
- // Create sequence variable and gaps basd on sequence.
- CharString seq("ABCDEFGHIJ");
- Gaps<CharString> gaps(seq);
-
- // Insert gaps, the positions are in (clipped) view space.
- insertGaps(gaps, 2, 2);
- insertGap(gaps, 6);
- insertGap(gaps, 10);
-
- // Print to stdout.
- std::cout << "gaps\t" << gaps << "\n"
- << "seq \t" << seq << "\n\n";
-
- // Print the begin and end positions in sequence space and the clipped
- // begin and end positions in gap space. We have no clipping, so no
- // surprises here.
- std::cout << "beginPosition(gaps) == " << beginPosition(gaps) << "\n"
- << "endPosition(gaps) == " << endPosition(gaps) << "\n"
- << "clippedBeginPosition(gaps) == " << clippedBeginPosition(gaps) << "\n"
- << "clippedEndPosition(gaps) == " << clippedEndPosition(gaps) << "\n\n";
-
- // Now, clip the alignment and again print the gaps, sequence and begin/end
- // positions. Note that the clipping positions are relative to the unclipped
- // view.
- setClippedBeginPosition(gaps, 3);
- setClippedEndPosition(gaps, 10);
-
- std::cout << "gaps\t" << gaps << "\n"
- << "seq \t" << infix(seq, beginPosition(gaps), endPosition(gaps)) << "\n\n";
-
- std::cout << "beginPosition(gaps) == " << beginPosition(gaps) << "\n"
- << "endPosition(gaps) == " << endPosition(gaps) << "\n"
- << "clippedBeginPosition(gaps) == " << clippedBeginPosition(gaps) << "\n"
- << "clippedEndPosition(gaps) == " << clippedEndPosition(gaps) << "\n\n";
-
- // We can translate between the (clipped) gapped position (aka view) and
- // the unclipped ungapped positions (aka) source using toSourcePosition()
- // and toViewPosition(). Note that because of projection to the right of
- // gaps, these operations are not symmetric.
- std::cout << "4 view position => " << toSourcePosition(gaps, 4) << " source position\n"
- << "2 source position => " << toViewPosition(gaps, 2) << " view position\n\n";
-
- // Translating between clipped gapped and unclipped gapped position can
- // be done by adding/subtracting clippedBeginPosition(gaps).
- std::cout << "3 clipped gapped => " << 3 + clippedBeginPosition(gaps) << " unclipped gapped\n"
- << "6 unclipped gapped => " << 5 - clippedBeginPosition(gaps) << " clipped gapped\n\n";
-
- // Translating between clipped ungapped and unclipped ungapped position can
- // be done by adding/subtracing beginPosition(gaps). Since there are no
- // gaps, this operation is symmetric.
- std::cout << "3 clipped ungapped => " << 3 + beginPosition(gaps) << " unclipped ungapped\n"
- << "5 unclipped ungapped => " << 5 - beginPosition(gaps) << " clipped ungapped\n\n";
-
- // Translating between gapped clipped position and ungapped clipped
- // position and between gapped unclipped and ungapped unclipped positions
- // has to be done using the translations above.
- std::cout << "3 clipped gapped => " << toSourcePosition(gaps, 3) - beginPosition(gaps) << " clipped ungapped\n"
- << "4 unclipped ungapped => " << toViewPosition(gaps, 4) + clippedBeginPosition(gaps) << " unclipped gapped\n";
-
- return 0;
-}
diff --git a/demos/howto/scores/init_score.cpp b/demos/howto/scores/init_score.cpp
index 7863cac..bd4fc21 100644
--- a/demos/howto/scores/init_score.cpp
+++ b/demos/howto/scores/init_score.cpp
@@ -39,12 +39,59 @@ using namespace seqan;
namespace seqan {
// We have to create a new specialization of the ScoringMatrix_ class
-// for the DNA alphabet. For this, we first create a new tag.
+// for amino acids. For this, we first create a new tag.
struct UserDefinedMatrix {};
+// We also do this for the DNA alphabet.
+struct AnotherUserDefinedMatrix {};
-// Then, we specialize the class ScoringMatrix_ for the Dna5 alphabet.
+// Then, we specialize the class ScoringMatrix_.
template <>
-struct ScoringMatrixData_<int, Dna5, UserDefinedMatrix>
+struct ScoringMatrixData_<int, AminoAcid, UserDefinedMatrix>
+{
+ enum
+ {
+ VALUE_SIZE = ValueSize<AminoAcid>::VALUE,
+ TAB_SIZE = VALUE_SIZE * VALUE_SIZE
+ };
+
+ static inline int const * getData()
+ {
+ // The user defined data table. In this case, we use the data from BLOSUM-30.
+ static int const _data[TAB_SIZE] =
+ {
+ 4, -1, 0, 0, -3, 1, 0, 0, -2, 0, -1, 0, 1, -2, -1, 1, 1, -5, -4, 1, 0, 0, 0, -7,
+ -1, 8, -2, -1, -2, 3, -1, -2, -1, -3, -2, 1, 0, -1, -1, -1, -3, 0, 0, -1, -2, 0, -1, -7,
+ 0, -2, 8, 1, -1, -1, -1, 0, -1, 0, -2, 0, 0, -1, -3, 0, 1, -7, -4, -2, 4, -1, 0, -7,
+ 0, -1, 1, 9, -3, -1, 1, -1, -2, -4, -1, 0, -3, -5, -1, 0, -1, -4, -1, -2, 5, 0, -1, -7,
+ -3, -2, -1, -3, 17, -2, 1, -4, -5, -2, 0, -3, -2, -3, -3, -2, -2, -2, -6, -2, -2, 0, -2, -7,
+ 1, 3, -1, -1, -2, 8, 2, -2, 0, -2, -2, 0, -1, -3, 0, -1, 0, -1, -1, -3, -1, 4, 0, -7,
+ 0, -1, -1, 1, 1, 2, 6, -2, 0, -3, -1, 2, -1, -4, 1, 0, -2, -1, -2, -3, 0, 5, -1, -7,
+ 0, -2, 0, -1, -4, -2, -2, 8, -3, -1, -2, -1, -2, -3, -1, 0, -2, 1, -3, -3, 0, -2, -1, -7,
+ -2, -1, -1, -2, -5, 0, 0, -3, 14, -2, -1, -2, 2, -3, 1, -1, -2, -5, 0, -3, -2, 0, -1, -7,
+ 0, -3, 0, -4, -2, -2, -3, -1, -2, 6, 2, -2, 1, 0, -3, -1, 0, -3, -1, 4, -2, -3, 0, -7,
+ -1, -2, -2, -1, 0, -2, -1, -2, -1, 2, 4, -2, 2, 2, -3, -2, 0, -2, 3, 1, -1, -1, 0, -7,
+ 0, 1, 0, 0, -3, 0, 2, -1, -2, -2, -2, 4, 2, -1, 1, 0, -1, -2, -1, -2, 0, 1, 0, -7,
+ 1, 0, 0, -3, -2, -1, -1, -2, 2, 1, 2, 2, 6, -2, -4, -2, 0, -3, -1, 0, -2, -1, 0, -7,
+ -2, -1, -1, -5, -3, -3, -4, -3, -3, 0, 2, -1, -2, 10, -4, -1, -2, 1, 3, 1, -3, -4, -1, -7,
+ -1, -1, -3, -1, -3, 0, 1, -1, 1, -3, -3, 1, -4, -4, 11, -1, 0, -3, -2, -4, -2, 0, -1, -7,
+ 1, -1, 0, 0, -2, -1, 0, 0, -1, -1, -2, 0, -2, -1, -1, 4, 2, -3, -2, -1, 0, -1, 0, -7,
+ 1, -3, 1, -1, -2, 0, -2, -2, -2, 0, 0, -1, 0, -2, 0, 2, 5, -5, -1, 1, 0, -1, 0, -7,
+ -5, 0, -7, -4, -2, -1, -1, 1, -5, -3, -2, -2, -3, 1, -3, -3, -5, 20, 5, -3, -5, -1, -2, -7,
+ -4, 0, -4, -1, -6, -1, -2, -3, 0, -1, 3, -1, -1, 3, -2, -2, -1, 5, 9, 1, -3, -2, -1, -7,
+ 1, -1, -2, -2, -2, -3, -3, -3, -3, 4, 1, -2, 0, 1, -4, -1, 1, -3, 1, 5, -2, -3, 0, -7,
+ 0, -2, 4, 5, -2, -1, 0, 0, -2, -2, -1, 0, -2, -3, -2, 0, 0, -5, -3, -2, 5, 0, -1, -7,
+ 0, 0, -1, 0, 0, 4, 5, -2, 0, -3, -1, 1, -1, -4, 0, -1, -1, -1, -2, -3, 0, 4, 0, -7,
+ 0, -1, 0, -1, -2, 0, -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, -2, -1, 0, -1, 0, -1, -7,
+ -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, 1,
+ };
+ return _data;
+ }
+
+};
+
+// And we do this for the Dna5 alphabet.
+template <>
+struct ScoringMatrixData_<int, Dna5, AnotherUserDefinedMatrix>
{
enum
{
@@ -99,7 +146,7 @@ int main()
//
// Define types for the score value and the scoring scheme.
typedef int TValue;
- typedef Score<TValue, ScoreMatrix<Dna5, Default> > TScoringScheme;
+ typedef Score<TValue, ScoreMatrix<AminoAcid, Default> > TScoringScheme;
// Define our gap scores in some constants.
int const gapOpenScore = -1;
int const gapExtendScore = -1;
@@ -113,28 +160,38 @@ int main()
// 3. Fill the now-existing ScoreMatrix
//
// The scoring scheme now already has a matrix of the size
- // ValueSize<Dna5>::VALUE x ValueSize<Dna5>::VALUE which
+ // ValueSize<AminoAcid>::VALUE x ValueSize<AminoAcid>::VALUE which
// we can now fill.
- // 3.1 We fill the scoring scheme with the product of the coordinates.
+ // 3.1 First, fill it with BLOSUM30.
+ std::cout << "BLOSUM 30" << std::endl;
+ setDefaultScoreMatrix(scoringScheme, Blosum30_());
+ showScoringMatrix(scoringScheme);
+
+ // 3.2 Now, we fill it with the product of the coordinates.
std::cout << std::endl << "Coordinate Products" << std::endl;
- for (unsigned i = 0; i < ValueSize<Dna5>::VALUE; ++i)
+ for (unsigned i = 0; i < ValueSize<AminoAcid>::VALUE; ++i)
{
- for (unsigned j = 0; j < ValueSize<Dna5>::VALUE; ++j)
+ for (unsigned j = 0; j < ValueSize<AminoAcid>::VALUE; ++j)
{
- setScore(scoringScheme, Dna5(i), Dna5(j), i * j);
+ setScore(scoringScheme, AminoAcid(i), AminoAcid(j), i * j);
}
}
showScoringMatrix(scoringScheme);
- // 3.2 Now, we fill it with the user defined matrix above.
- std::cout << "User defined matrix (also Dna5 scoring matrix)..." << std::endl;
+ // 3.3 Now, we fill it with the user defined matrix above.
+ std::cout << "User defined matrix (also BLOSUM 30)..." << std::endl;
setDefaultScoreMatrix(scoringScheme, UserDefinedMatrix());
showScoringMatrix(scoringScheme);
- // 4. Show our user-defined Dna5 scoring matrix.
+ // 4. Create ScoreMatrix object with user-defined matrix.
+ std::cout << "User scoring scheme..." << std::endl;
+ Score<TValue, ScoreMatrix<AminoAcid, UserDefinedMatrix> > userScoringScheme;
+ showScoringMatrix(userScoringScheme);
+
+ // 5. Show our Dna5 scoring matrix.
std::cout << "User DNA scoring scheme..." << std::endl;
- Score<TValue, ScoreMatrix<Dna5, UserDefinedMatrix> > userScoringSchemeDna;
+ Score<TValue, ScoreMatrix<Dna5, AnotherUserDefinedMatrix> > userScoringSchemeDna;
showScoringMatrix(userScoringSchemeDna);
return 0;
diff --git a/demos/howto/scores/init_score.cpp.stdout b/demos/howto/scores/init_score.cpp.stdout
deleted file mode 100644
index 02f83a6..0000000
--- a/demos/howto/scores/init_score.cpp.stdout
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Coordinate Products
- A C G T N
-A 0 0 0 0 0
-C 0 1 2 3 4
-G 0 2 4 6 8
-T 0 3 6 9 12
-N 0 4 8 12 16
-User defined matrix (also Dna5 scoring matrix)...
- A C G T N
-A 1 0 0 0 0
-C 0 1 0 0 0
-G 0 0 1 0 0
-T 0 0 0 1 0
-N 0 0 0 0 0
-User DNA scoring scheme...
- A C G T N
-A 1 0 0 0 0
-C 0 1 0 0 0
-G 0 0 1 0 0
-T 0 0 0 1 0
-N 0 0 0 0 0
diff --git a/demos/howto/scores/load_score.cpp b/demos/howto/scores/load_score.cpp
index 7893acf..5a7abf4 100644
--- a/demos/howto/scores/load_score.cpp
+++ b/demos/howto/scores/load_score.cpp
@@ -55,10 +55,17 @@ void showScoringMatrix(Score<TScoreValue, ScoreMatrix<TSequenceValue, TSpec> > c
//![main]
int main(int argc, char ** argv)
{
+ if (argc != 2)
+ {
+ std::cout << "Invalid argument count!" << std::endl
+ << "USAGE: load_score FILENAME" << std::endl;
+ return 1;
+ }
+
typedef int TScoreValue;
- Score<TScoreValue, ScoreMatrix<Dna5, Default> > scoreMatrix;
- loadScoreMatrix(scoreMatrix, toCString(getAbsolutePath("/demos/howto/scores/dna_example.txt")));
+ Score<TScoreValue, ScoreMatrix<Dna, Default> > scoreMatrix;
+ loadScoreMatrix(scoreMatrix, argv[1]);
showScoringMatrix(scoreMatrix);
return 0;
diff --git a/demos/howto/scores/load_score.cpp.stdout b/demos/howto/scores/load_score.cpp.stdout
deleted file mode 100644
index e11573d..0000000
--- a/demos/howto/scores/load_score.cpp.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-
- A C G T
-A 1 -1 -1 -1
-C -1 1 -1 -1
-G -1 -1 1 -1
-T -1 -1 -1 1
diff --git a/demos/dox/index/demo_index_index_textAt_indexText_saAt_indexRequire.cpp.stdout b/demos/index/demo_index_index_textAt_indexText_saAt_indexRequire.cpp.stdout
similarity index 100%
rename from demos/dox/index/demo_index_index_textAt_indexText_saAt_indexRequire.cpp.stdout
rename to demos/index/demo_index_index_textAt_indexText_saAt_indexRequire.cpp.stdout
diff --git a/demos/dox/index/find_repeats.cpp b/demos/index/find_repeats.cpp
similarity index 100%
rename from demos/dox/index/find_repeats.cpp
rename to demos/index/find_repeats.cpp
diff --git a/demos/dox/index/begin_atEnd_representative.cpp b/demos/index/index_begin_atEnd_representative.cpp
similarity index 100%
rename from demos/dox/index/begin_atEnd_representative.cpp
rename to demos/index/index_begin_atEnd_representative.cpp
diff --git a/demos/dox/index/begin_atEnd_representative.cpp.stdout b/demos/index/index_begin_atEnd_representative.cpp.stdout
similarity index 100%
rename from demos/dox/index/begin_atEnd_representative.cpp.stdout
rename to demos/index/index_begin_atEnd_representative.cpp.stdout
diff --git a/demos/dox/index/begin_atEnd_representative_bottomUp.cpp b/demos/index/index_begin_atEnd_representative_bottomUp.cpp
similarity index 100%
rename from demos/dox/index/begin_atEnd_representative_bottomUp.cpp
rename to demos/index/index_begin_atEnd_representative_bottomUp.cpp
diff --git a/demos/dox/index/begin_range_goDown_representative_repLength.cpp b/demos/index/index_begin_range_goDown_representative_repLength.cpp
similarity index 100%
rename from demos/dox/index/begin_range_goDown_representative_repLength.cpp
rename to demos/index/index_begin_range_goDown_representative_repLength.cpp
diff --git a/demos/dox/index/counting.cpp b/demos/index/index_counting.cpp
similarity index 100%
rename from demos/dox/index/counting.cpp
rename to demos/index/index_counting.cpp
diff --git a/demos/dox/index/counting.cpp.stdout b/demos/index/index_counting.cpp.stdout
similarity index 100%
rename from demos/dox/index/counting.cpp.stdout
rename to demos/index/index_counting.cpp.stdout
diff --git a/demos/dox/index/finder.cpp b/demos/index/index_finder.cpp
similarity index 100%
rename from demos/dox/index/finder.cpp
rename to demos/index/index_finder.cpp
diff --git a/demos/dox/index/finder.cpp.stdout b/demos/index/index_finder.cpp.stdout
similarity index 100%
rename from demos/dox/index/finder.cpp.stdout
rename to demos/index/index_finder.cpp.stdout
diff --git a/demos/dox/index/getOccurrences_getFrequency_range_getFibre.cpp b/demos/index/index_getOccurrences_getFrequency_range_getFibre.cpp
similarity index 100%
rename from demos/dox/index/getOccurrences_getFrequency_range_getFibre.cpp
rename to demos/index/index_getOccurrences_getFrequency_range_getFibre.cpp
diff --git a/demos/dox/index/getOccurrences_getFrequency_range_getFibre.cpp.stdout b/demos/index/index_getOccurrences_getFrequency_range_getFibre.cpp.stdout
similarity index 100%
rename from demos/dox/index/getOccurrences_getFrequency_range_getFibre.cpp.stdout
rename to demos/index/index_getOccurrences_getFrequency_range_getFibre.cpp.stdout
diff --git a/demos/dox/index/iterator.cpp b/demos/index/index_iterator.cpp
similarity index 100%
rename from demos/dox/index/iterator.cpp
rename to demos/index/index_iterator.cpp
diff --git a/demos/dox/index/iterator.cpp.stdout b/demos/index/index_iterator.cpp.stdout
similarity index 100%
rename from demos/dox/index/iterator.cpp.stdout
rename to demos/index/index_iterator.cpp.stdout
diff --git a/demos/dox/index/iterator_short.cpp b/demos/index/index_iterator_short.cpp
similarity index 100%
rename from demos/dox/index/iterator_short.cpp
rename to demos/index/index_iterator_short.cpp
diff --git a/demos/dox/index/iterator_short.cpp.stdout b/demos/index/index_iterator_short.cpp.stdout
similarity index 100%
rename from demos/dox/index/iterator_short.cpp.stdout
rename to demos/index/index_iterator_short.cpp.stdout
diff --git a/demos/index/index_length_countSequences.cpp b/demos/index/index_length_countSequences.cpp
new file mode 100644
index 0000000..9697527
--- /dev/null
+++ b/demos/index/index_length_countSequences.cpp
@@ -0,0 +1,27 @@
+#include <seqan/index.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef StringSet<String<char> > TText;
+ typedef Index<TText> TIndex;
+ typedef SAValue<TIndex>::Type TSAValue;
+
+ TText text;
+ appendValue(text, "MISSISSIPPI");
+ appendValue(text, "MYMISSISAHAPPY");
+
+ TIndex index(text);
+ Finder<TIndex> finder(index);
+
+ std::cout << "The text has " << length(index) << " characters and consists of " << countSequences(index) <<
+ " sequences." << std::endl;
+
+ // The Finder object has a pointer to the first, current and last hit
+ // Each consecutive call sets the current pointer to the appropriate hit
+ while (find(finder, "MISS"))
+ std::cout << "Hit at position: " << position(finder) << std::endl;
+
+ return 0;
+}
diff --git a/demos/dox/index/length_countSequences.cpp.stdout b/demos/index/index_length_countSequences.cpp.stdout
similarity index 100%
rename from demos/dox/index/length_countSequences.cpp.stdout
rename to demos/index/index_length_countSequences.cpp.stdout
diff --git a/demos/dox/index/mummy.cpp b/demos/index/index_mummy.cpp
similarity index 100%
rename from demos/dox/index/mummy.cpp
rename to demos/index/index_mummy.cpp
diff --git a/demos/dox/index/mummy.cpp.stdout b/demos/index/index_mummy.cpp.stdout
similarity index 100%
rename from demos/dox/index/mummy.cpp.stdout
rename to demos/index/index_mummy.cpp.stdout
diff --git a/demos/dox/index/mums.cpp b/demos/index/index_mums.cpp
similarity index 100%
rename from demos/dox/index/mums.cpp
rename to demos/index/index_mums.cpp
diff --git a/demos/dox/index/node_predicate.cpp b/demos/index/index_node_predicate.cpp
similarity index 100%
rename from demos/dox/index/node_predicate.cpp
rename to demos/index/index_node_predicate.cpp
diff --git a/demos/index/index_open_save.cpp b/demos/index/index_open_save.cpp
new file mode 100644
index 0000000..7062173
--- /dev/null
+++ b/demos/index/index_open_save.cpp
@@ -0,0 +1,28 @@
+#include <seqan/index.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef StringSet<String<char> > TText;
+ typedef Index<TText> TIndex;
+ typedef SAValue<TIndex>::Type TSAValue;
+
+ TText text;
+ appendValue(text, "MISSISSIPPI");
+ appendValue(text, "MYMISSISAHAPPY");
+
+ TIndex saveIndex(text);
+
+ // Because indices are build on demand we fore the index creation here.
+ indexCreate(saveIndex, FibreSA());
+
+ const char * tempFileName = SEQAN_TEMP_FILENAME();
+ std::cout << save(saveIndex, tempFileName) << std::endl;
+
+ // In a different program
+ TIndex openIndex;
+ std::cout << open(openIndex, tempFileName) << std::endl;
+
+ return 0;
+}
diff --git a/demos/dox/index/open_save.cpp.stdout b/demos/index/index_open_save.cpp.stdout
similarity index 100%
rename from demos/dox/index/open_save.cpp.stdout
rename to demos/index/index_open_save.cpp.stdout
diff --git a/demos/index/index_qgram.cpp b/demos/index/index_qgram.cpp
new file mode 100644
index 0000000..66e8e4a
--- /dev/null
+++ b/demos/index/index_qgram.cpp
@@ -0,0 +1,16 @@
+#include <iostream>
+#include <seqan/index.h>
+
+using namespace seqan;
+
+int main()
+{
+ Index<DnaString, IndexQGram<OneGappedShape> > index("CATGATTACATA");
+ stringToShape(indexShape(index), "1101");
+
+ hash(indexShape(index), "ATCA");
+ for (unsigned i = 0; i < length(getOccurrences(index, indexShape(index))); ++i)
+ std::cout << getOccurrences(index, indexShape(index))[i] << std::endl;
+
+ return 0;
+}
diff --git a/demos/unassigned_or_unused/index_sufarray.cpp b/demos/index/index_sufarray.cpp
similarity index 100%
rename from demos/unassigned_or_unused/index_sufarray.cpp
rename to demos/index/index_sufarray.cpp
diff --git a/demos/dox/index/sufarray.cpp.stdout b/demos/index/index_sufarray.cpp.stdout
similarity index 100%
rename from demos/dox/index/sufarray.cpp.stdout
rename to demos/index/index_sufarray.cpp.stdout
diff --git a/demos/dox/index/supermaxrepeats.cpp b/demos/index/index_supermaxrepeats.cpp
similarity index 100%
rename from demos/dox/index/supermaxrepeats.cpp
rename to demos/index/index_supermaxrepeats.cpp
diff --git a/demos/dox/index/textAt_indexText_saAt_indexRequire.cpp b/demos/index/index_textAt_indexText_saAt_indexRequire.cpp
similarity index 100%
rename from demos/dox/index/textAt_indexText_saAt_indexRequire.cpp
rename to demos/index/index_textAt_indexText_saAt_indexRequire.cpp
diff --git a/demos/dox/index/textAt_indexText_saAt_indexRequire.cpp.stdout b/demos/index/index_textAt_indexText_saAt_indexRequire.cpp.stdout
similarity index 100%
rename from demos/dox/index/textAt_indexText_saAt_indexRequire.cpp.stdout
rename to demos/index/index_textAt_indexText_saAt_indexRequire.cpp.stdout
diff --git a/demos/dox/index/ref.fa b/demos/index/ref.fa
similarity index 100%
rename from demos/dox/index/ref.fa
rename to demos/index/ref.fa
diff --git a/demos/dox/index/UNUSED_shape.cpp b/demos/index/shape.cpp
similarity index 100%
rename from demos/dox/index/UNUSED_shape.cpp
rename to demos/index/shape.cpp
diff --git a/demos/dox/index/UNUSED_shape_hash.cpp b/demos/index/shape_hash.cpp
similarity index 100%
rename from demos/dox/index/UNUSED_shape_hash.cpp
rename to demos/index/shape_hash.cpp
diff --git a/demos/dox/index/shape_hash_init.cpp b/demos/index/shape_hash_init.cpp
similarity index 100%
rename from demos/dox/index/shape_hash_init.cpp
rename to demos/index/shape_hash_init.cpp
diff --git a/demos/dox/index/UNUSED_shape_hash_next.cpp b/demos/index/shape_hash_next.cpp
similarity index 100%
rename from demos/dox/index/UNUSED_shape_hash_next.cpp
rename to demos/index/shape_hash_next.cpp
diff --git a/demos/index_counting.cpp b/demos/index_counting.cpp
new file mode 100644
index 0000000..551d25f
--- /dev/null
+++ b/demos/index_counting.cpp
@@ -0,0 +1,36 @@
+///An example to demonstrate the functions countChildren and countOccurrences
+#include <iostream>
+#include <seqan/index.h>
+
+using namespace seqan;
+
+int main()
+{
+///We begin with a @Class.String@ to store our sequence.
+ String<char> myString = "How many wood would a woodchuck chuck. A woodchuck chucks as much wood as a woodchuck could";
+
+///Then we create an @Class.Index@ of this @Class.StringSet at .
+ typedef Index<String<char> > TMyIndex;
+ TMyIndex myIndex(myString);
+
+///we will use a @Spec.TopDown Iterator@ that supports parent links, ommits empty edges and traverses the index in preorder to print out the number of children at each node (not the number of leafs in the subtree).
+ Iterator<TMyIndex, TopDown<ParentLinks<PreorderEmptyEdges> > >::Type tdIterator(myIndex);
+ Size<TMyIndex>::Type count;
+
+ while (!atEnd(tdIterator))
+ {
+///We print out the representatives of all nodes that have more than 3 children and the number of occurrences. Also, we print a message if a node is a leaf.
+ count = countChildren(tdIterator);
+ if (count >= 3)
+ {
+ std::cout << "Representative " << representative(tdIterator) << " has " << count << " children and ";
+ std::cout << countOccurrences(tdIterator) << " occurrences " << std::endl;
+ }
+ if (isLeaf(tdIterator))
+ std::cout << "The node is a leaf " << std::endl;
+
+ tdIterator++;
+ }
+
+ return 0;
+}
diff --git a/demos/unassigned_or_unused/index_find.cpp b/demos/index_find.cpp
similarity index 100%
rename from demos/unassigned_or_unused/index_find.cpp
rename to demos/index_find.cpp
diff --git a/demos/unassigned_or_unused/index_find_stringset.cpp b/demos/index_find_stringset.cpp
similarity index 100%
rename from demos/unassigned_or_unused/index_find_stringset.cpp
rename to demos/index_find_stringset.cpp
diff --git a/demos/unassigned_or_unused/index_lcp.cpp b/demos/index_lcp.cpp
similarity index 100%
rename from demos/unassigned_or_unused/index_lcp.cpp
rename to demos/index_lcp.cpp
diff --git a/demos/dox/index/maxrepeats.cpp b/demos/index_maxrepeats.cpp
similarity index 100%
rename from demos/dox/index/maxrepeats.cpp
rename to demos/index_maxrepeats.cpp
diff --git a/demos/unassigned_or_unused/index_mums.cpp b/demos/index_mums.cpp
similarity index 100%
rename from demos/unassigned_or_unused/index_mums.cpp
rename to demos/index_mums.cpp
diff --git a/demos/unassigned_or_unused/index_node_predicate.cpp b/demos/index_node_predicate.cpp
similarity index 100%
rename from demos/unassigned_or_unused/index_node_predicate.cpp
rename to demos/index_node_predicate.cpp
diff --git a/demos/unassigned_or_unused/index_qgram_counts.cpp b/demos/index_qgram_counts.cpp
similarity index 100%
rename from demos/unassigned_or_unused/index_qgram_counts.cpp
rename to demos/index_qgram_counts.cpp
diff --git a/demos/dox/index/sufarray.cpp b/demos/index_sufarray.cpp
similarity index 100%
rename from demos/dox/index/sufarray.cpp
rename to demos/index_sufarray.cpp
diff --git a/demos/unassigned_or_unused/index_supermaxrepeats.cpp b/demos/index_supermaxrepeats.cpp
similarity index 100%
rename from demos/unassigned_or_unused/index_supermaxrepeats.cpp
rename to demos/index_supermaxrepeats.cpp
diff --git a/demos/input_output/example.fa b/demos/input_output/example.fa
new file mode 100644
index 0000000..a9a6741
--- /dev/null
+++ b/demos/input_output/example.fa
@@ -0,0 +1,4 @@
+>one
+CGATCGAT
+>two
+TTTTTTTTTTTTTCGATAAAAAAAAAAAAA
\ No newline at end of file
diff --git a/demos/input_output/seqfile_reader.cpp b/demos/input_output/seqfile_reader.cpp
new file mode 100644
index 0000000..d5f11d2
--- /dev/null
+++ b/demos/input_output/seqfile_reader.cpp
@@ -0,0 +1,27 @@
+#include <fstream>
+#include <iostream>
+
+#include <seqan/sequence.h>
+#include <seqan/seq_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ CharString path = SEQAN_PATH_TO_ROOT();
+ append(path, "/demos/input_output/example.fa");
+
+ // Open file
+ SeqFileIn inFile(toCString(path));
+
+ // Read file record-wise.
+ CharString id;
+ Dna5String seq;
+ while (!atEnd(inFile))
+ {
+ readRecord(id, seq, inFile);
+ std::cout << id << "\t" << seq << "\n";
+ }
+
+ return 0;
+}
diff --git a/demos/input_output/seqfile_reader.cpp.stdout b/demos/input_output/seqfile_reader.cpp.stdout
new file mode 100644
index 0000000..2a704da
--- /dev/null
+++ b/demos/input_output/seqfile_reader.cpp.stdout
@@ -0,0 +1,2 @@
+one CGATCGAT
+two TTTTTTTTTTTTTCGATAAAAAAAAAAAAA
diff --git a/demos/tutorial/simple_rna_seq/interval_tree.cpp b/demos/interval_tree.cpp
similarity index 100%
rename from demos/tutorial/simple_rna_seq/interval_tree.cpp
rename to demos/interval_tree.cpp
diff --git a/demos/unassigned_or_unused/iterator.cpp b/demos/iterator.cpp
similarity index 100%
rename from demos/unassigned_or_unused/iterator.cpp
rename to demos/iterator.cpp
diff --git a/demos/unassigned_or_unused/knime_node.cpp b/demos/knime_node.cpp
similarity index 100%
rename from demos/unassigned_or_unused/knime_node.cpp
rename to demos/knime_node.cpp
diff --git a/demos/unassigned_or_unused/lagan1.fasta b/demos/lagan1.fasta
similarity index 100%
rename from demos/unassigned_or_unused/lagan1.fasta
rename to demos/lagan1.fasta
diff --git a/demos/unassigned_or_unused/lagan2.fasta b/demos/lagan2.fasta
similarity index 100%
rename from demos/unassigned_or_unused/lagan2.fasta
rename to demos/lagan2.fasta
diff --git a/demos/dox/misc/enumerate_strings.cpp b/demos/misc/enumerate_strings.cpp
similarity index 100%
rename from demos/dox/misc/enumerate_strings.cpp
rename to demos/misc/enumerate_strings.cpp
diff --git a/demos/dox/misc/enumerate_strings.cpp.stdout b/demos/misc/enumerate_strings.cpp.stdout
similarity index 100%
rename from demos/dox/misc/enumerate_strings.cpp.stdout
rename to demos/misc/enumerate_strings.cpp.stdout
diff --git a/demos/dox/misc/get_terminal_size.cpp b/demos/misc/get_terminal_size.cpp
similarity index 100%
rename from demos/dox/misc/get_terminal_size.cpp
rename to demos/misc/get_terminal_size.cpp
diff --git a/demos/dox/misc/interval_tree_example.cpp b/demos/misc/interval_tree_example.cpp
similarity index 100%
rename from demos/dox/misc/interval_tree_example.cpp
rename to demos/misc/interval_tree_example.cpp
diff --git a/demos/dox/misc/name_store_cache.cpp b/demos/misc/name_store_cache.cpp
similarity index 100%
rename from demos/dox/misc/name_store_cache.cpp
rename to demos/misc/name_store_cache.cpp
diff --git a/demos/dox/misc/name_store_cache.cpp.stdout b/demos/misc/name_store_cache.cpp.stdout
similarity index 100%
rename from demos/dox/misc/name_store_cache.cpp.stdout
rename to demos/misc/name_store_cache.cpp.stdout
diff --git a/demos/dox/modifier/modified_string.cpp b/demos/modifier/modified_string.cpp
similarity index 100%
rename from demos/dox/modifier/modified_string.cpp
rename to demos/modifier/modified_string.cpp
diff --git a/demos/dox/modifier/modified_string.cpp.stdout b/demos/modifier/modified_string.cpp.stdout
similarity index 100%
rename from demos/dox/modifier/modified_string.cpp.stdout
rename to demos/modifier/modified_string.cpp.stdout
diff --git a/demos/dox/modifier/modified_string_mod_view.cpp b/demos/modifier/modified_string_mod_view.cpp
similarity index 100%
rename from demos/dox/modifier/modified_string_mod_view.cpp
rename to demos/modifier/modified_string_mod_view.cpp
diff --git a/demos/dox/modifier/modified_string_mod_view.cpp.stdout b/demos/modifier/modified_string_mod_view.cpp.stdout
similarity index 100%
rename from demos/dox/modifier/modified_string_mod_view.cpp.stdout
rename to demos/modifier/modified_string_mod_view.cpp.stdout
diff --git a/demos/dox/modifier/modified_string_nested.cpp b/demos/modifier/modified_string_nested.cpp
similarity index 100%
rename from demos/dox/modifier/modified_string_nested.cpp
rename to demos/modifier/modified_string_nested.cpp
diff --git a/demos/dox/modifier/modified_string_nested.cpp.stdout b/demos/modifier/modified_string_nested.cpp.stdout
similarity index 100%
rename from demos/dox/modifier/modified_string_nested.cpp.stdout
rename to demos/modifier/modified_string_nested.cpp.stdout
diff --git a/demos/unassigned_or_unused/modifier_modreverse.cpp b/demos/modifier_modreverse.cpp
similarity index 100%
rename from demos/unassigned_or_unused/modifier_modreverse.cpp
rename to demos/modifier_modreverse.cpp
diff --git a/demos/unassigned_or_unused/modifier_modview.cpp b/demos/modifier_modview.cpp
similarity index 100%
rename from demos/unassigned_or_unused/modifier_modview.cpp
rename to demos/modifier_modview.cpp
diff --git a/demos/unassigned_or_unused/modifier_nested.cpp b/demos/modifier_nested.cpp
similarity index 100%
rename from demos/unassigned_or_unused/modifier_nested.cpp
rename to demos/modifier_nested.cpp
diff --git a/demos/parallel/queue_example.cpp b/demos/parallel/queue_example.cpp
new file mode 100644
index 0000000..dc2b221
--- /dev/null
+++ b/demos/parallel/queue_example.cpp
@@ -0,0 +1,30 @@
+#include <iostream>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+int main()
+{
+ // instantiate an empty Queue
+ ConcurrentQueue<unsigned> queue;
+
+ // start two threads
+ SEQAN_OMP_PRAGMA(sections num_threads(2))
+ {
+ SEQAN_OMP_PRAGMA(section)
+ {
+ for (int i = 9999; i != 0; --i)
+ appendValue(queue, i);
+ }
+
+ SEQAN_OMP_PRAGMA(section)
+ {
+ bool equal = true;
+ for (int i = 9999; i != 0; --i)
+ equal &= (i == popFront(queue));
+ std::cout << (equal ? "SUCCESS" : "FAILURE") << std::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/demos/dox/parallel/queue_example.cpp.stdout b/demos/parallel/queue_example.cpp.stdout
similarity index 100%
rename from demos/dox/parallel/queue_example.cpp.stdout
rename to demos/parallel/queue_example.cpp.stdout
diff --git a/demos/dox/parallel/splitter_example.cpp b/demos/parallel/splitter_example.cpp
similarity index 100%
rename from demos/dox/parallel/splitter_example.cpp
rename to demos/parallel/splitter_example.cpp
diff --git a/demos/dox/parallel/splitter_example.cpp.stdout b/demos/parallel/splitter_example.cpp.stdout
similarity index 100%
rename from demos/dox/parallel/splitter_example.cpp.stdout
rename to demos/parallel/splitter_example.cpp.stdout
diff --git a/demos/unassigned_or_unused/parse_lm_stellar.cpp b/demos/parse_lm_stellar.cpp
similarity index 100%
rename from demos/unassigned_or_unused/parse_lm_stellar.cpp
rename to demos/parse_lm_stellar.cpp
diff --git a/demos/dox/pipe/pool_sorter.cpp b/demos/pipe/pool_sorter.cpp
similarity index 100%
rename from demos/dox/pipe/pool_sorter.cpp
rename to demos/pipe/pool_sorter.cpp
diff --git a/demos/random/random.cpp b/demos/random/random.cpp
new file mode 100644
index 0000000..44f4f10
--- /dev/null
+++ b/demos/random/random.cpp
@@ -0,0 +1,42 @@
+#include <iostream>
+
+#include <seqan/basic.h>
+#include <seqan/stream.h>
+#include <seqan/random.h>
+
+using namespace seqan;
+
+const int SEED = 42;
+
+int main()
+{
+ Rng<MersenneTwister> rng(SEED);
+ std::cout << "pickRandomNumber(rng) == " << pickRandomNumber(rng) << std::endl;
+
+ typedef Value<Rng<MersenneTwister> >::Type TMTValue;
+ TMTValue value = pickRandomNumber(rng);
+
+ Pdf<Uniform<double> > uniformDouble(0, 1);
+ std::cout << "pickRandomNumber(rng, uniformDouble) == " << pickRandomNumber(rng, uniformDouble) << std::endl;
+
+ Pdf<Uniform<int> > uniformInt(0, 42);
+ std::cout << "pickRandomNumber(rng, uniformInt) == " << pickRandomNumber(rng, uniformInt) << std::endl;
+
+ Pdf<Normal> normal(0, 1);
+ std::cout << "pickRandomNumber(rng, normal) == " << pickRandomNumber(rng, normal) << std::endl;
+
+ Pdf<LogNormal> logNormal(0, 1);
+ std::cout << "pickRandomNumber(rng, logNormal) == " << pickRandomNumber(rng, logNormal) << std::endl;
+
+ Pdf<LogNormal> logNormal2(0, 1, MuSigma());
+ std::cout << "pickRandomNumber(rng, logNormal2) == " << pickRandomNumber(rng, logNormal2) << std::endl;
+
+ Pdf<LogNormal> logNormal3(0.1, 1, MeanStdDev());
+ std::cout << "pickRandomNumber(rng, logNormal3) == " << pickRandomNumber(rng, logNormal3) << std::endl;
+
+ CharString container = "Hello World!";
+ shuffle(container, rng);
+ std::cout << "shuffle(\"Hello World!\") == " << container << std::endl;
+
+ return 0;
+}
diff --git a/demos/unassigned_or_unused/rooted_iterator.cpp b/demos/rooted_iterator.cpp
similarity index 100%
rename from demos/unassigned_or_unused/rooted_iterator.cpp
rename to demos/rooted_iterator.cpp
diff --git a/demos/sam2svg.cpp b/demos/sam2svg.cpp
new file mode 100644
index 0000000..f45a06b
--- /dev/null
+++ b/demos/sam2svg.cpp
@@ -0,0 +1,222 @@
+#include <fstream>
+#include <iostream>
+#include <string>
+
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/svg.h>
+
+using namespace seqan;
+
+// Struct for storing command line options.
+struct Options
+{
+ int contigID;
+ int beginPos;
+ int endPos;
+ int beginLine;
+ int endLine;
+ bool writeAscii;
+ bool gapSpace;
+
+ std::string fileAliIn;
+ std::string fileOut;
+ std::string fileRefIn;
+
+ Options() :
+ contigID(-1), beginPos(-1), endPos(-1), beginLine(-1), endLine(-1), writeAscii(false), gapSpace(false)
+ {}
+};
+
+// Parse command line, write results to options, return PARSE_OK if everything went well.
+ArgumentParser::ParseResult parseCommandLine(Options & options, int argc, char const ** argv)
+{
+ ArgumentParser parser;
+ setShortDescription(parser, "draw SAM/BAM file as SVG vector graphics");
+ addUsageLine(parser, "[OPTION] -a <SAM/BAM file> [-r <GENOME file>] -o <SVG/ASCII file>");
+
+ addOption(parser, ArgParseOption("a", "alignment", "SAM/BAM file to load.", ArgParseOption::INPUT_FILE));
+ setRequired(parser, "alignment", true);
+ setValidValues(parser, "alignment", BamFileIn::getFileExtensions());
+
+ addOption(parser, ArgParseOption("r", "reference", "FASTA file to use as the reference.", ArgParseOption::INPUT_FILE));
+ setValidValues(parser, "reference", SeqFileIn::getFileExtensions());
+
+ addOption(parser, ArgParseOption("o", "out", "SVG/ASCII file to write.", ArgParseOption::OUTPUT_FILE));
+ setRequired(parser, "out", true);
+ setValidValues(parser, "out", ".txt .svg");
+
+ addOption(parser, ArgParseOption("", "contig", "Display contig with this numeric ID only (zero-based), default is to show all contigs.", ArgParseOption::INTEGER));
+ setDefaultValue(parser, "contig", -1);
+
+ addOption(parser, ArgParseOption("", "begin-pos", "Begin position of the region to show, default is to show all.", ArgParseOption::INTEGER));
+ setDefaultValue(parser, "begin-pos", -1);
+
+ addOption(parser, ArgParseOption("", "end-pos", "End position of the region to show, default is to show all.", ArgParseOption::INTEGER));
+ setDefaultValue(parser, "end-pos", -1);
+
+ addOption(parser, ArgParseOption("", "begin-line", "First line to show, zero-based", ArgParseOption::INTEGER));
+ setDefaultValue(parser, "begin-line", -1);
+
+ addOption(parser, ArgParseOption("", "end-line", "Last line to show, zero-based, default is to show all", ArgParseOption::INTEGER));
+ setDefaultValue(parser, "end-line", -1);
+
+ addOption(parser, ArgParseOption("", "gap-space", "begin and end position are given in gap space instead of in sequence space"));
+
+ // Parse command line.
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ // Only extract options if the program will continue after parseCommandLine()
+ if (res != ArgumentParser::PARSE_OK)
+ return res;
+
+ getOptionValue(options.contigID, parser, "contig");
+ getOptionValue(options.beginPos, parser, "begin-pos");
+ getOptionValue(options.endPos, parser, "end-pos");
+ getOptionValue(options.beginLine, parser, "begin-line");
+ getOptionValue(options.endLine, parser, "end-line");
+
+ getOptionValue(options.fileAliIn, parser, "alignment");
+ getOptionValue(options.fileRefIn, parser, "reference");
+ getOptionValue(options.fileOut, parser, "out");
+
+ options.writeAscii = endsWith(options.fileOut, ".txt");
+ options.gapSpace = isSet(parser, "gap-space");
+
+ // Begin position cannot be greater than end position.
+ if (options.beginPos != -1 && options.endPos != -1 && options.beginPos > options.endPos)
+ {
+ std::cerr << "ERROR: begin position cannot be greater than end position!\n";
+ return ArgumentParser::PARSE_ERROR;
+ }
+
+ // First line number cannot be greater than last line number.
+ if (options.beginLine != -1 && options.endLine != -1 && options.beginLine < options.endLine)
+ {
+ std::cerr << "ERROR: first line cannot be greater than end position!\n";
+ return ArgumentParser::PARSE_ERROR;
+ }
+
+ return ArgumentParser::PARSE_OK;
+}
+
+int main(int argc, char const ** argv)
+{
+ // -----------------------------------------------------------------------
+ // Parse Options
+ // -----------------------------------------------------------------------
+ Options options;
+ ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ // -----------------------------------------------------------------------
+ // Load Files
+ // -----------------------------------------------------------------------
+
+ typedef FragmentStore<> TFragStore;
+
+ typedef TFragStore::TContigStore TContigStore;
+ typedef Value<TContigStore>::Type TContig;
+ typedef TFragStore::TContigPos TContigPos;
+
+ TFragStore store;
+ BamFileIn samFile(options.fileAliIn.c_str());
+ std::ofstream ascii;
+ SVGFile svg;
+
+ // Optionally load genome file
+ if (!options.fileRefIn.empty())
+ {
+ if (!loadContigs(store, options.fileRefIn.c_str()))
+ {
+ std::cerr << "Failed to load genome.\n";
+ return 1;
+ }
+ }
+
+ // Load Sam file
+ readRecords(store, samFile);
+
+ // Choose contigs
+ std::vector<int> contigs;
+ if (options.contigID == -1)
+ for (unsigned i = 0; i < length(store.contigStore); ++i)
+ contigs.push_back(i);
+ else
+ contigs.push_back(options.contigID);
+
+ // Optionally load genome and open SVG file for writing
+ if (options.writeAscii)
+ {
+ ascii.open(options.fileOut.c_str(), std::ios_base::out | std::ios_base::trunc);
+ if (!ascii.is_open())
+ {
+ std::cerr << "ERROR: could not open output file for writing.\n";
+ return 1;
+ }
+ }
+ else if (!open(svg, options.fileOut.c_str()))
+ {
+ std::cerr << "ERROR: could not open output file for writing.\n";
+ return 1;
+ }
+
+ // -----------------------------------------------------------------------
+ // Write Alignment
+ // -----------------------------------------------------------------------
+
+ AlignedReadLayout layout;
+ std::cerr << "Layouting reads ... ";
+ layoutAlignment(layout, store);
+ std::cerr << "done\n";
+
+ std::cerr << "Writing " << contigs.size() << " contigs...\n";
+
+ int beginLine = (options.beginLine == -1) ? 0 : options.beginLine;
+ int endLine = (options.endLine == -1) ? MaxValue<int>::VALUE : options.endLine;
+
+ for (unsigned i = 0; i < contigs.size(); ++i)
+ if (contigs[i] < length(store.contigStore))
+ {
+ std::cerr << "Writing contig " << store.contigNameStore[contigs[i]] << " ... ";
+
+ __int64 l = (options.beginPos == -1) ? 0 : options.beginPos;
+ __int64 r = (options.endPos == -1) ? MaxValue<TContigPos>::VALUE : options.endPos;
+
+ if (!options.gapSpace)
+ {
+ typedef Gaps<Nothing, AnchorGaps<TContig::TGapAnchors> > TContigGaps;
+ TContigGaps contigGaps(store.contigStore[i].gaps);
+ l = positionSeqToGap(contigGaps, l);
+ if (r != MaxValue<TContigPos>::VALUE)
+ r = positionSeqToGap(contigGaps, r);
+ }
+
+ if (r == MaxValue<TContigPos>::VALUE)
+ {
+ r = 0;
+ for (unsigned j = 0; j < length(layout.contigRows[i]); ++j)
+ {
+ unsigned id = back(layout.contigRows[i][j]);
+ if (r < store.alignedReadStore[id].beginPos)
+ r = store.alignedReadStore[id].beginPos;
+ if (r < store.alignedReadStore[id].endPos)
+ r = store.alignedReadStore[id].endPos;
+ }
+ }
+
+ std::cerr << l << '\t' << r << '\t' << beginLine << '\t' << endLine << "\n";
+ if (options.writeAscii)
+ printAlignment(ascii, layout, store, contigs[i], l, r, beginLine, endLine);
+ else
+ printAlignment(svg, layout, store, contigs[i], l, r, beginLine, endLine);
+
+ std::cout << "done\n";
+ }
+
+ return 0;
+}
diff --git a/demos/unassigned_or_unused/sample_seqs.cpp b/demos/sample_seqs.cpp
similarity index 100%
rename from demos/unassigned_or_unused/sample_seqs.cpp
rename to demos/sample_seqs.cpp
diff --git a/demos/dox/score/score.cpp b/demos/score/score.cpp
similarity index 100%
rename from demos/dox/score/score.cpp
rename to demos/score/score.cpp
diff --git a/demos/dox/score/score.cpp.stdout b/demos/score/score.cpp.stdout
similarity index 100%
rename from demos/dox/score/score.cpp.stdout
rename to demos/score/score.cpp.stdout
diff --git a/demos/unassigned_or_unused/seeds.cpp b/demos/seeds.cpp
similarity index 100%
rename from demos/unassigned_or_unused/seeds.cpp
rename to demos/seeds.cpp
diff --git a/demos/dox/seeds/seeds_add_seed.cpp b/demos/seeds/seeds_add_seed.cpp
similarity index 100%
rename from demos/dox/seeds/seeds_add_seed.cpp
rename to demos/seeds/seeds_add_seed.cpp
diff --git a/demos/dox/seeds/seeds_chaining.cpp b/demos/seeds/seeds_chaining.cpp
similarity index 100%
rename from demos/dox/seeds/seeds_chaining.cpp
rename to demos/seeds/seeds_chaining.cpp
diff --git a/demos/dox/seeds/seeds_chaining.cpp.stdout b/demos/seeds/seeds_chaining.cpp.stdout
similarity index 100%
rename from demos/dox/seeds/seeds_chaining.cpp.stdout
rename to demos/seeds/seeds_chaining.cpp.stdout
diff --git a/demos/dox/seeds/seeds_extension.cpp b/demos/seeds/seeds_extension.cpp
similarity index 100%
rename from demos/dox/seeds/seeds_extension.cpp
rename to demos/seeds/seeds_extension.cpp
diff --git a/demos/dox/seeds/seeds_extension.cpp.stdout b/demos/seeds/seeds_extension.cpp.stdout
similarity index 100%
rename from demos/dox/seeds/seeds_extension.cpp.stdout
rename to demos/seeds/seeds_extension.cpp.stdout
diff --git a/demos/unassigned_or_unused/segmentalignment.cpp b/demos/segmentalignment.cpp
similarity index 100%
rename from demos/unassigned_or_unused/segmentalignment.cpp
rename to demos/segmentalignment.cpp
diff --git a/demos/dox/seq_io/example.fa b/demos/seq_io/example.fa
similarity index 100%
rename from demos/dox/seq_io/example.fa
rename to demos/seq_io/example.fa
diff --git a/demos/dox/seq_io/example.fa.fai b/demos/seq_io/example.fa.fai
similarity index 100%
rename from demos/dox/seq_io/example.fa.fai
rename to demos/seq_io/example.fa.fai
diff --git a/demos/seq_io/fai_index_example.cpp b/demos/seq_io/fai_index_example.cpp
new file mode 100644
index 0000000..edde0c8
--- /dev/null
+++ b/demos/seq_io/fai_index_example.cpp
@@ -0,0 +1,49 @@
+#include <seqan/basic.h>
+#include <seqan/seq_io.h>
+#include <seqan/sequence.h>
+
+using namespace seqan;
+
+int main()
+{
+ CharString path = SEQAN_PATH_TO_ROOT();
+ append(path, "/demos/seq_io/example.fa");
+
+ FaiIndex faiIndex;
+
+ // Try to read the FAI index.
+ if (!open(faiIndex, toCString(path)))
+ {
+ std::cerr << "Could not read the FAI index. Not fatal, we can just build it.\n";
+ return 1;
+ }
+
+ // Try to build the FAI index (in memory) if reading was unsuccessful. If
+ // building into memory succeeded, we try to write it out.
+ if (!build(faiIndex, toCString(path)))
+ {
+ std::cerr << "FATAL: Could not build FAI index.\n";
+ return 1;
+ }
+
+ if (!save(faiIndex))
+ {
+ std::cerr << "FATAL: Could not write out FAI index after building.\n";
+ return 1;
+ }
+
+ // Now, read the first 1000 characters of chr1.
+ unsigned idx = 0;
+ if (!getIdByName(idx, faiIndex, "chr"))
+ {
+ std::cerr << "FATAL: chr1 not found in FAI index.\n";
+ return 1;
+ }
+ CharString seq;
+ readRegion(seq, faiIndex, idx, 0, 100);
+
+ // Now print the first 100 characters we just read.
+ std::cout << "chr:1-100 = " << seq << "\n";
+
+ return 0;
+}
diff --git a/demos/dox/seq_io/fai_index_example.cpp.stdout b/demos/seq_io/fai_index_example.cpp.stdout
similarity index 100%
rename from demos/dox/seq_io/fai_index_example.cpp.stdout
rename to demos/seq_io/fai_index_example.cpp.stdout
diff --git a/demos/seq_io/sequence_stream_read.cpp b/demos/seq_io/sequence_stream_read.cpp
new file mode 100644
index 0000000..3a0654d
--- /dev/null
+++ b/demos/seq_io/sequence_stream_read.cpp
@@ -0,0 +1,68 @@
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/seq_io.h>
+
+using namespace seqan;
+
+int main(int argc, char ** argv)
+{
+ CharString path;
+
+ if (argc > 1)
+ {
+ path = argv[1];
+ }
+ else
+ {
+ path = SEQAN_PATH_TO_ROOT();
+ append(path, "/tests/seq_io/test_dna.fq");
+ }
+
+ SeqFileIn file;
+ if (!open(file, toCString(path)))
+ {
+ std::cerr << "Can't open the file." << std::endl;
+ return 1;
+ }
+
+ CharString id;
+ DnaString seq;
+ CharString qual;
+
+ Size<CharString>::Type records = 0;
+ Size<CharString>::Type bases = 0;
+
+ double start, finish;
+
+ start = sysTime();
+
+ while (!atEnd(file))
+ {
+ try
+ {
+ readRecord(id, seq, qual, file);
+ }
+ catch (UnexpectedEnd &)
+ {
+ break;
+ }
+ catch (ParseError & e)
+ {
+ std::cerr << "Record #" << records + 1 << ": " << e.what() << std::endl;
+ continue;
+ }
+
+ records += 1;
+ bases += length(seq);
+ }
+
+ finish = sysTime();
+
+ close(file);
+
+ std::cout << finish - start << " sec" << std::endl;
+ std::cout << records << " records" << std::endl;
+ std::cout << bases << " bases" << std::endl;
+
+ return 0;
+}
diff --git a/demos/seq_io/sequence_stream_read.cpp.stdout b/demos/seq_io/sequence_stream_read.cpp.stdout
new file mode 100644
index 0000000..008f76e
--- /dev/null
+++ b/demos/seq_io/sequence_stream_read.cpp.stdout
@@ -0,0 +1 @@
+chr CCTATCTAATAATATACCTTATACTGGACTAGTGCCAATATTAAAATGAAGTGGGCGTAGTGTGTAATTTGATTGGGTGGAGGTGTGGCTTTGGCGTGCTTGTAAGTTTGGGCGGATGAGGAAGTGGGGCGCGGCGTGGGAGCCGGGCGCGCCGGATGTGACGTTTTAGACGCCATTTTACACGGAAATGATGTTTTTTGGGCGTTGTTTGTGCAAATTTTGTGTTTTAGGCGCGAAAACTGAAATGCGGAAGTGAAAATTGATGACGGCAATTTTATTATAGGCGCGGAATATTTACCGAGGGCAGAGTGAACTCTGAGCCTCTACGTGTGGGTTTCGATACGTGAGCGACGGGGAAACTCCACGTTGGCGCTCAAAGGGCGCGTTTATTGTTCTGTCAGCTGATCGTTTGGGTATTTAATGCCGCCGTGTTCGTCAAGAGGCCACTCTTGAGTGCCAGCGAGAAGAGTTTTCTCTGCCAGCTCATT [...]
diff --git a/demos/seq_io/sequence_stream_write.cpp b/demos/seq_io/sequence_stream_write.cpp
new file mode 100644
index 0000000..cad1300
--- /dev/null
+++ b/demos/seq_io/sequence_stream_write.cpp
@@ -0,0 +1,17 @@
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/seq_io.h>
+
+using namespace seqan;
+
+int main(int argc, char ** argv)
+{
+ CharString path = SEQAN_TEMP_FILENAME();
+ append(path, ".fa");
+
+ SeqFileOut file(toCString(path));
+ writeRecord(file, "chr1", "ACGT");
+ close(file);
+
+ return 0;
+}
diff --git a/demos/dox/sequence/UNUSED_infix.cpp b/demos/sequence/infix.cpp
similarity index 100%
rename from demos/dox/sequence/UNUSED_infix.cpp
rename to demos/sequence/infix.cpp
diff --git a/demos/dox/sequence/UNUSED_prefix.cpp b/demos/sequence/prefix.cpp
similarity index 100%
rename from demos/dox/sequence/UNUSED_prefix.cpp
rename to demos/sequence/prefix.cpp
diff --git a/demos/sequence/segment.cpp b/demos/sequence/segment.cpp
new file mode 100644
index 0000000..34da250
--- /dev/null
+++ b/demos/sequence/segment.cpp
@@ -0,0 +1,98 @@
+// ==========================================================================
+// SeqAn - The Library for Sequence Analysis
+// ==========================================================================
+// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+// * Neither the name of Knut Reinert or the FU Berlin nor the names of
+// its contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+// DAMAGE.
+//
+// ==========================================================================
+// Author: Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>
+// ==========================================================================
+// Example program used in the documentation of the Segment class.
+// ==========================================================================
+
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/stream.h> // for I/O
+
+using namespace seqan;
+
+int main()
+{
+//![basic operations]
+ typedef Prefix<String<char> >::Type TPrefix;
+ typedef Infix<String<char> >::Type TInfix;
+ typedef Suffix<String<char> >::Type TSuffix;
+
+ String<char> text = "This is a text!";
+
+ TPrefix preA(text, 4);
+ TInfix infA(text, 10, 14);
+ TSuffix sufA(text, 10);
+ std::cout << preA << " " << infA << " " << sufA << "\n"; // => "This text text!"
+
+ String<char> str;
+ append(str, preA);
+ append(str, infA);
+ append(str, sufA);
+ std::cout << str << "\n"; // => "This text text!"
+
+ std::cout << preA[0] << " " << infA[0] << " " << sufA[0] << "\n"; // => "T t t"
+
+ preA[0] = 'X';
+ infA[0] = 'X';
+ sufA[1] = 'X';
+ std::cout << text << "\n"; // => "Xhis is a XXxt!"
+
+ typedef Iterator<TInfix, Standard>::Type TIter;
+ TIter it = begin(preA, Standard());
+ it += 2;
+ *it = 'Y';
+ std::cout << text << "\n"; // => "XhYs is a XXxt!"
+//![basic operations]
+
+//![metafunction examples]
+ typedef Infix<TInfix>::Type TInfix2; // == TInfix
+ typedef Prefix<TInfix>::Type TInfix3; // == TInfix
+ typedef Suffix<TInfix>::Type TInfix4; // == TInfix
+
+ typedef Infix<TPrefix>::Type TInfix5; // == TInfix
+ typedef Prefix<TPrefix>::Type TPrefix2; // == TPrefix
+ typedef Suffix<TPrefix>::Type TInfix6; // == TInfix
+
+ typedef Infix<TSuffix>::Type TInfix7; // == TInfix
+ typedef Prefix<TSuffix>::Type TInfix8; // == TPrefix
+ typedef Suffix<TSuffix>::Type TSuffix2; // == TSuffix
+//![metafunction examples]
+
+//![explicit segment]
+ typedef Segment<TSuffix, PrefixSegment> TExplicitPrefix;
+ TExplicitPrefix preB(sufA, 3);
+ std::cout << preB << "\n"; // => "XXx"
+//![explicit segment]
+
+ return 0;
+}
diff --git a/demos/dox/sequence/string.cpp b/demos/sequence/string.cpp
similarity index 100%
rename from demos/dox/sequence/string.cpp
rename to demos/sequence/string.cpp
diff --git a/demos/dox/sequence/string2.cpp b/demos/sequence/string2.cpp
similarity index 100%
rename from demos/dox/sequence/string2.cpp
rename to demos/sequence/string2.cpp
diff --git a/demos/dox/sequence/string2.cpp.stdout b/demos/sequence/string2.cpp.stdout
similarity index 100%
rename from demos/dox/sequence/string2.cpp.stdout
rename to demos/sequence/string2.cpp.stdout
diff --git a/demos/dox/sequence/stringset.cpp b/demos/sequence/stringset.cpp
similarity index 100%
rename from demos/dox/sequence/stringset.cpp
rename to demos/sequence/stringset.cpp
diff --git a/demos/dox/sequence/stringset.cpp.stdout b/demos/sequence/stringset.cpp.stdout
similarity index 100%
rename from demos/dox/sequence/stringset.cpp.stdout
rename to demos/sequence/stringset.cpp.stdout
diff --git a/demos/dox/sequence/UNUSED_suffix.cpp b/demos/sequence/suffix.cpp
similarity index 100%
rename from demos/dox/sequence/UNUSED_suffix.cpp
rename to demos/sequence/suffix.cpp
diff --git a/demos/unassigned_or_unused/sequence_1.fa b/demos/sequence_1.fa
similarity index 100%
rename from demos/unassigned_or_unused/sequence_1.fa
rename to demos/sequence_1.fa
diff --git a/demos/unassigned_or_unused/sequence_2.fa b/demos/sequence_2.fa
similarity index 100%
rename from demos/unassigned_or_unused/sequence_2.fa
rename to demos/sequence_2.fa
diff --git a/demos/unassigned_or_unused/sequence_length.cpp b/demos/sequence_length.cpp
similarity index 100%
rename from demos/unassigned_or_unused/sequence_length.cpp
rename to demos/sequence_length.cpp
diff --git a/demos/unassigned_or_unused/soft_to_hard_masking.cpp b/demos/soft_to_hard_masking.cpp
similarity index 100%
rename from demos/unassigned_or_unused/soft_to_hard_masking.cpp
rename to demos/soft_to_hard_masking.cpp
diff --git a/demos/dox/statistics/background.fa b/demos/statistics/background.fa
similarity index 100%
rename from demos/dox/statistics/background.fa
rename to demos/statistics/background.fa
diff --git a/demos/dox/statistics/build_markov_model.cpp b/demos/statistics/build_markov_model.cpp
similarity index 100%
rename from demos/dox/statistics/build_markov_model.cpp
rename to demos/statistics/build_markov_model.cpp
diff --git a/demos/dox/statistics/load_markov_model.cpp b/demos/statistics/load_markov_model.cpp
similarity index 100%
rename from demos/dox/statistics/load_markov_model.cpp
rename to demos/statistics/load_markov_model.cpp
diff --git a/demos/dox/statistics/zscore_example_mm.3 b/demos/statistics/zscore_example_mm.3
similarity index 100%
rename from demos/dox/statistics/zscore_example_mm.3
rename to demos/statistics/zscore_example_mm.3
diff --git a/demos/dox/statistics/zscore_human_mm.3 b/demos/statistics/zscore_human_mm.3
similarity index 100%
rename from demos/dox/statistics/zscore_human_mm.3
rename to demos/statistics/zscore_human_mm.3
diff --git a/demos/dox/store/store_example.cpp b/demos/store/store_example.cpp
similarity index 100%
rename from demos/dox/store/store_example.cpp
rename to demos/store/store_example.cpp
diff --git a/demos/stream/lexical_cast.cpp b/demos/stream/lexical_cast.cpp
new file mode 100644
index 0000000..5cecce4
--- /dev/null
+++ b/demos/stream/lexical_cast.cpp
@@ -0,0 +1,55 @@
+#include <iostream>
+#include <string>
+
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+
+using namespace seqan;
+
+int main()
+{
+ bool success;
+
+ // interpret string literal as int
+ int x = 0;
+ // successful cast
+ std::cout << "success=" << lexicalCast(x, "123") << ", x=" << x << "\n";
+ // unsuccessful cast
+ std::cout << "success=" << lexicalCast(x, "42a") << ", x=" << x << "\n";
+
+ // interpret std::string as int
+ std::cout << "success=" << lexicalCast(x, std::string("234")) << ", x=" << x << "\n";
+ // interpret CharString as int
+ std::cout << "success=" << lexicalCast(x, CharString("345")) << ", x=" << x << "\n";
+ // interpret infix as int
+ CharString str = "123";
+ std::cout << "success=" << lexicalCast(x, infix(str, 1, 2)) << ", x=" << x << "\n";
+
+ // interpret literal as float and double
+ float f = -1;
+ double d = -1;
+ std::cout << "success=" << lexicalCast(f, "3.1") << ", f=" << f << "\n"
+ << "success=" << lexicalCast(d, "4.2") << ", d=" << d << "\n";
+
+ // demonstrate throwing of exceptions with lexicalCast()
+ try
+ {
+ x = lexicalCast<int>("a");
+ }
+ catch (BadLexicalCast const & badCast)
+ {
+ std::cout << "error: " << badCast.what() << "\n";
+ }
+
+ // demonstrate throwing of exceptions with lexicalCastWithException
+ try
+ {
+ lexicalCastWithException(x, "b");
+ }
+ catch (BadLexicalCast const & badCast)
+ {
+ std::cout << "error: " << badCast.what() << "\n";
+ }
+
+ return 0;
+}
diff --git a/demos/dox/stream/lexical_cast.cpp.stdout b/demos/stream/lexical_cast.cpp.stdout
similarity index 100%
rename from demos/dox/stream/lexical_cast.cpp.stdout
rename to demos/stream/lexical_cast.cpp.stdout
diff --git a/demos/tutorial/a_first_example/basic_code.cpp.stdout b/demos/tutorial/a_first_example/basic_code.cpp.stdout
deleted file mode 100644
index b4d9330..0000000
--- a/demos/tutorial/a_first_example/basic_code.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 0 1 0 0 0 0
diff --git a/demos/tutorial/a_first_example/basic_code_detailed.cpp.stdout b/demos/tutorial/a_first_example/basic_code_detailed.cpp.stdout
deleted file mode 100644
index b4d9330..0000000
--- a/demos/tutorial/a_first_example/basic_code_detailed.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 0 1 0 0 0 0
diff --git a/demos/tutorial/a_first_example/code_encapsulation.cpp.stdout b/demos/tutorial/a_first_example/code_encapsulation.cpp.stdout
deleted file mode 100644
index b4d9330..0000000
--- a/demos/tutorial/a_first_example/code_encapsulation.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 0 1 0 0 0 0
diff --git a/demos/tutorial/a_first_example/final_result.cpp.stdout b/demos/tutorial/a_first_example/final_result.cpp.stdout
deleted file mode 100644
index 5558d1a..0000000
--- a/demos/tutorial/a_first_example/final_result.cpp.stdout
+++ /dev/null
@@ -1,10 +0,0 @@
-This is an awesome tutorial to get to now SeqAn!
-tutorial
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 1 0 0 0 0
-19
-(2; 1) (5; 1) (12; 1) (17; 1) (19; 8) (21; 1) (26; 2) (28; 1) (31; 1) (33; 3) (35; 1) (36; 1)
-This is an awesome tutorial to get to now SeqAn!
-TUTORIAL
-6 -9 -3 -6 -6 0 -9 -8 -7 -3 -9 -5 -8 -4 -5 -6 -6 1 -6 25 -7 2 -6 -6 -9 -6 -5 -7 1 -7 -5 -4 -6 2 -6 -3 -8 -9 -10 -4 -6
-19
-(17; 1) (19; 25) (21; 2) (28; 1) (33; 2)
diff --git a/demos/tutorial/a_first_example/solution_1.cpp.stdout b/demos/tutorial/a_first_example/solution_1.cpp.stdout
deleted file mode 100644
index b4d9330..0000000
--- a/demos/tutorial/a_first_example/solution_1.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 0 1 0 0 0 0
diff --git a/demos/tutorial/a_first_example/solution_2.cpp.stdout b/demos/tutorial/a_first_example/solution_2.cpp.stdout
deleted file mode 100644
index 76bbad7..0000000
--- a/demos/tutorial/a_first_example/solution_2.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 1 0 0 0 0
diff --git a/demos/tutorial/a_first_example/solution_3.cpp.stdout b/demos/tutorial/a_first_example/solution_3.cpp.stdout
deleted file mode 100644
index 76bbad7..0000000
--- a/demos/tutorial/a_first_example/solution_3.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 1 0 0 0 0
diff --git a/demos/tutorial/a_first_example/solution_4.cpp.stdout b/demos/tutorial/a_first_example/solution_4.cpp.stdout
deleted file mode 100644
index 76bbad7..0000000
--- a/demos/tutorial/a_first_example/solution_4.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 1 0 0 0 0
diff --git a/demos/tutorial/a_first_example/solution_5.cpp.stdout b/demos/tutorial/a_first_example/solution_5.cpp.stdout
deleted file mode 100644
index 9d0b9b8..0000000
--- a/demos/tutorial/a_first_example/solution_5.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-This is an awesome tutorial to get to now SeqAn!
-tutorial
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 1 0 0 0 0
diff --git a/demos/tutorial/a_first_example/solution_6.cpp.stdout b/demos/tutorial/a_first_example/solution_6.cpp.stdout
deleted file mode 100644
index 5558d1a..0000000
--- a/demos/tutorial/a_first_example/solution_6.cpp.stdout
+++ /dev/null
@@ -1,10 +0,0 @@
-This is an awesome tutorial to get to now SeqAn!
-tutorial
-1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 8 0 1 0 0 0 0 2 0 1 0 0 1 0 3 0 1 1 0 0 0 0
-19
-(2; 1) (5; 1) (12; 1) (17; 1) (19; 8) (21; 1) (26; 2) (28; 1) (31; 1) (33; 3) (35; 1) (36; 1)
-This is an awesome tutorial to get to now SeqAn!
-TUTORIAL
-6 -9 -3 -6 -6 0 -9 -8 -7 -3 -9 -5 -8 -4 -5 -6 -6 1 -6 25 -7 2 -6 -6 -9 -6 -5 -7 1 -7 -5 -4 -6 2 -6 -3 -8 -9 -10 -4 -6
-19
-(17; 1) (19; 25) (21; 2) (28; 1) (33; 2)
diff --git a/demos/tutorial/alignment_representation/align.cpp.stdout b/demos/tutorial/alignment_representation/align.cpp.stdout
deleted file mode 100644
index f8816e5..0000000
--- a/demos/tutorial/alignment_representation/align.cpp.stdout
+++ /dev/null
@@ -1,42 +0,0 @@
- 0 .
- CDFGDC
- ||
- CDEFGA
-
-
- 0 .
- CD-FG--DC
- || || |
- CDEFGAHGC
-
-
-
-ViewToSource1: 0,1,2,2,3,4,4,4,5,
-ViewToSource2: 0,1,2,3,4,5,6,7,8,
-
-SourceToView1: 0,1,3,4,7,8,
-SourceToView2: 0,1,2,3,4,5,6,7,8,
-
-Before clipping:
- 0 .
- CD-FG--DC
- || || |
- CDEFGAHGC
-
-
-
-After clipping:
- 0 .
- D-FG--
- | ||
- DEFGAH
-
-
-
-ViewToSource1: 1,2,2,3,4,4,
-ViewToSource2: 1,2,3,4,5,6,
-
-SourceToView1: -1,0,2,3,6,7,
-SourceToView2: -1,0,1,2,3,4,5,6,7,
-D-FG--
-CD-FG--DC
diff --git a/demos/tutorial/alignment_representation/align_assignment1.cpp.stdout b/demos/tutorial/alignment_representation/align_assignment1.cpp.stdout
deleted file mode 100644
index 3255e3b..0000000
--- a/demos/tutorial/alignment_representation/align_assignment1.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Number of gaps: 5
diff --git a/demos/tutorial/alignment_representation/graph.cpp.stdout b/demos/tutorial/alignment_representation/graph.cpp.stdout
deleted file mode 100644
index 6d3c3bd..0000000
--- a/demos/tutorial/alignment_representation/graph.cpp.stdout
+++ /dev/null
@@ -1,11 +0,0 @@
-Adjacency list:
-Edge list:
-
-Alignment matrix:
- 0 .
- TT-GT
- || ||
- TTAGT
-
-
-
diff --git a/demos/tutorial/alignment_representation/graph_assignment1.cpp.stdout b/demos/tutorial/alignment_representation/graph_assignment1.cpp.stdout
deleted file mode 100644
index 99c3c75..0000000
--- a/demos/tutorial/alignment_representation/graph_assignment1.cpp.stdout
+++ /dev/null
@@ -1,10 +0,0 @@
-Alignment matrix:
- 0 . : .
- GARFIELDTHE---CAT
- ||||||||||| |||
- GARFIELDTHEBIGCAT
- |||||||||
- --------THEBIGCAT
-
-
-
diff --git a/demos/tutorial/alignments/CMakeLists.txt b/demos/tutorial/alignments/CMakeLists.txt
new file mode 100644
index 0000000..7d769a6
--- /dev/null
+++ b/demos/tutorial/alignments/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_alignments)
+
+seqan_setup_apps(demos_tutorials_alignments)
+seqan_add_all_executables(demos_tutorials_alignments tutorial_)
diff --git a/demos/tutorial/alignment_representation/align.cpp b/demos/tutorial/alignments/alignment2_align.cpp
similarity index 100%
rename from demos/tutorial/alignment_representation/align.cpp
rename to demos/tutorial/alignments/alignment2_align.cpp
diff --git a/demos/tutorial/alignment_representation/align_assignmen1.cpp b/demos/tutorial/alignments/alignment_align_assignment1.cpp
similarity index 100%
rename from demos/tutorial/alignment_representation/align_assignmen1.cpp
rename to demos/tutorial/alignments/alignment_align_assignment1.cpp
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_banded.cpp b/demos/tutorial/alignments/alignment_banded.cpp
similarity index 100%
rename from demos/tutorial/pairwise_sequence_alignment/alignment_banded.cpp
rename to demos/tutorial/alignments/alignment_banded.cpp
diff --git a/demos/tutorial/alignments/alignment_example.png b/demos/tutorial/alignments/alignment_example.png
new file mode 100755
index 0000000..bba1e70
Binary files /dev/null and b/demos/tutorial/alignments/alignment_example.png differ
diff --git a/demos/tutorial/alignments/alignment_gaps.cpp b/demos/tutorial/alignments/alignment_gaps.cpp
new file mode 100644
index 0000000..7f6cca4
--- /dev/null
+++ b/demos/tutorial/alignments/alignment_gaps.cpp
@@ -0,0 +1,58 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+//![main]
+//![typedefs]
+ typedef String<char> TSequence; // sequence type
+ typedef Align<TSequence, ArrayGaps> TAlign; // align type
+ typedef Row<TAlign>::Type TRow; // gapped sequence type
+//![typedefs]
+
+//![init]
+ TSequence seq1 = "CDFGHC";
+ TSequence seq2 = "CDEFGAHC";
+
+ TAlign align;
+ resize(rows(align), 2);
+ assignSource(row(align, 0), seq1);
+ assignSource(row(align, 1), seq2);
+//![init]
+
+//![manipulation]
+ std::cout << align;
+ TRow & row1 = row(align, 0);
+ TRow & row2 = row(align, 1);
+ insertGap(row1, 2);
+ insertGap(row1, 5);
+ std::cout << align;
+//![manipulation]
+
+//![printingViewPos]
+ std::cout << std::endl << "ViewToSource1: ";
+ for (unsigned i = 0; i < length(row1); ++i)
+ std::cout << toSourcePosition(row1, i) << ",";
+
+ std::cout << std::endl << "ViewToSource2: ";
+ for (unsigned i = 0; i < length(row2); ++i)
+ std::cout << toSourcePosition(row2, i) << ",";
+ std::cout << std::endl;
+//![printingViewPos]
+
+//![printingSourcePos]
+ std::cout << std::endl << "SourceToView1: ";
+ for (unsigned i = 0; i < length(source(row1)); ++i)
+ std::cout << toViewPosition(row1, i) << ",";
+
+ std::cout << std::endl << "SourceToView2: ";
+ for (unsigned i = 0; i < length(source(row2)); ++i)
+ std::cout << toViewPosition(row2, i) << ",";
+ std::cout << std::endl;
+
+ return 0;
+}
+//![printingSourcePos]
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp b/demos/tutorial/alignments/alignment_global_assignment1.cpp
similarity index 100%
rename from demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp
rename to demos/tutorial/alignments/alignment_global_assignment1.cpp
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp b/demos/tutorial/alignments/alignment_global_assignment2.cpp
similarity index 100%
rename from demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp
rename to demos/tutorial/alignments/alignment_global_assignment2.cpp
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment3.cpp b/demos/tutorial/alignments/alignment_global_assignment3.cpp
similarity index 100%
rename from demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment3.cpp
rename to demos/tutorial/alignments/alignment_global_assignment3.cpp
diff --git a/demos/tutorial/alignments/alignment_global_assignment4_part1.cpp b/demos/tutorial/alignments/alignment_global_assignment4_part1.cpp
new file mode 100644
index 0000000..7e5600b
--- /dev/null
+++ b/demos/tutorial/alignments/alignment_global_assignment4_part1.cpp
@@ -0,0 +1,40 @@
+//![completeSolution]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<Dna> TSequence;
+ typedef StringSet<TSequence> TStringSet;
+ typedef Align<TSequence, ArrayGaps> TAlign;
+
+ TStringSet strings;
+ appendValue(strings, "AAATGACATGGATTG");
+ appendValue(strings, "AGCGGACTCTACTTG");
+ appendValue(strings, "AGTCGATAACTG");
+ appendValue(strings, "AGTCGGATCTACTG");
+ appendValue(strings, "AGCGGCATTG");
+
+ int bestScore = MinValue<int>::VALUE;
+ int bestSeqIdx1 = 0;
+ int bestSeqIdx2 = 0;
+ for (unsigned i = 0; i < length(strings) - 1; ++i)
+ {
+ for (unsigned j = i + 1; j < length(strings); ++j)
+ {
+ int tmpScore = globalAlignmentScore(strings[i], strings[j], MyersBitVector());
+ if (tmpScore > bestScore)
+ {
+ bestScore = tmpScore;
+ bestSeqIdx1 = i;
+ bestSeqIdx2 = j;
+ }
+
+ }
+ }
+
+ return 0;
+}
+//![completeSolution]
diff --git a/demos/tutorial/alignments/alignment_global_assignment4_part2.cpp b/demos/tutorial/alignments/alignment_global_assignment4_part2.cpp
new file mode 100644
index 0000000..7a9b860
--- /dev/null
+++ b/demos/tutorial/alignments/alignment_global_assignment4_part2.cpp
@@ -0,0 +1,50 @@
+//![completeSolution]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<Dna> TSequence;
+ typedef StringSet<TSequence> TStringSet;
+ typedef Align<TSequence, ArrayGaps> TAlign;
+
+ TStringSet strings;
+ appendValue(strings, "AAATGACATGGATTG");
+ appendValue(strings, "AGCGGACTCTACTTG");
+ appendValue(strings, "AGTCGATAACTG");
+ appendValue(strings, "AGTCGGATCTACTG");
+ appendValue(strings, "AGCGGCATTG");
+
+ int bestScore = MinValue<int>::VALUE;
+ int bestSeqIdx1 = 0;
+ int bestSeqIdx2 = 0;
+ for (unsigned i = 0; i < length(strings) - 1; ++i)
+ {
+ for (unsigned j = i + 1; j < length(strings); ++j)
+ {
+ int tmpScore = globalAlignmentScore(strings[i], strings[j], MyersBitVector());
+ if (tmpScore > bestScore)
+ {
+ bestScore = tmpScore;
+ bestSeqIdx1 = i;
+ bestSeqIdx2 = j;
+ }
+
+ }
+ }
+
+ TAlign align;
+ resize(rows(align), 2);
+ assignSource(row(align, 0), strings[bestSeqIdx1]);
+ assignSource(row(align, 1), strings[bestSeqIdx2]);
+
+ globalAlignment(align, MyersHirschberg());
+ std::cout << "Best alignment between sequences at position " << bestSeqIdx1 << " and " << bestSeqIdx2 << std::endl;
+ std::cout << "Score: " << bestScore << std::endl;
+ std::cout << align << std::endl;
+
+ return 0;
+}
+//![completeSolution]
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp b/demos/tutorial/alignments/alignment_global_overlap.cpp
similarity index 100%
rename from demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp
rename to demos/tutorial/alignments/alignment_global_overlap.cpp
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_specialised.cpp b/demos/tutorial/alignments/alignment_global_specialised.cpp
similarity index 100%
rename from demos/tutorial/pairwise_sequence_alignment/alignment_global_specialised.cpp
rename to demos/tutorial/alignments/alignment_global_specialised.cpp
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp b/demos/tutorial/alignments/alignment_global_standard.cpp
similarity index 100%
rename from demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
rename to demos/tutorial/alignments/alignment_global_standard.cpp
diff --git a/demos/tutorial/alignments/alignment_local_standard.cpp b/demos/tutorial/alignments/alignment_local_standard.cpp
new file mode 100644
index 0000000..5dbe91a
--- /dev/null
+++ b/demos/tutorial/alignments/alignment_local_standard.cpp
@@ -0,0 +1,30 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<Dna> TSequence; // sequence type
+ typedef Align<TSequence, ArrayGaps> TAlign; // align type
+//![main]
+
+//![init]
+ TSequence seq1 = "ACGTGACGGGATGTG";
+ TSequence seq2 = "ACGGCGGGACTGACTG";
+
+ TAlign align;
+ resize(rows(align), 2);
+ assignSource(row(align, 0), seq1);
+ assignSource(row(align, 1), seq2);
+//![init]
+
+//![alignment]
+ int score = localAlignment(align, Score<int, Simple>(1, -1, -1, -1));
+ std::cout << "Score: " << score << std::endl;
+ std::cout << align << std::endl;
+
+ return 0;
+}
+//![alignment]
diff --git a/demos/tutorial/alignments/alignment_local_waterman_eggert.cpp b/demos/tutorial/alignments/alignment_local_waterman_eggert.cpp
new file mode 100644
index 0000000..5ccc4de
--- /dev/null
+++ b/demos/tutorial/alignments/alignment_local_waterman_eggert.cpp
@@ -0,0 +1,32 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<Dna> TSequence; // sequence type
+ typedef Align<TSequence, ArrayGaps> TAlign; // align type
+//![main]
+
+//![init]
+ Align<String<char> > ali;
+ resize(rows(ali), 2);
+ assignSource(row(ali, 0), "ataagcgtctcg");
+ assignSource(row(ali, 1), "tcatagagttgc");
+//![init]
+
+//![alignment]
+ Score<int> scoring(2, -1, -2, 0);
+ LocalAlignmentEnumerator<Score<int>, Unbanded> enumerator(scoring, 5);
+ while (nextLocalAlignment(ali, enumerator))
+ {
+ std::cout << "Score = " << getScore(enumerator) << std::endl;
+ std::cout << ali;
+ std::cout << "Aligns Seq1[" << clippedBeginPosition(row(ali, 0)) << ":" << (clippedEndPosition(row(ali, 0)) - 1) << "]";
+ std::cout << " and Seq2[" << clippedBeginPosition(row(ali, 1)) << ":" << (clippedEndPosition(row(ali, 1)) - 1) << "]" << std::endl << std::endl;
+ }
+ return 0;
+}
+//![alignment]
diff --git a/demos/tutorial/multiple_sequence_alignment/msa.cpp b/demos/tutorial/alignments/alignment_msa.cpp
similarity index 100%
rename from demos/tutorial/multiple_sequence_alignment/msa.cpp
rename to demos/tutorial/alignments/alignment_msa.cpp
diff --git a/demos/tutorial/multiple_sequence_alignment/msa.cpp.stdout b/demos/tutorial/alignments/alignment_msa.cpp.stdout
similarity index 100%
rename from demos/tutorial/multiple_sequence_alignment/msa.cpp.stdout
rename to demos/tutorial/alignments/alignment_msa.cpp.stdout
diff --git a/demos/tutorial/multiple_sequence_alignment/assignment1.cpp b/demos/tutorial/alignments/alignment_msa_assignment1.cpp
similarity index 100%
rename from demos/tutorial/multiple_sequence_alignment/assignment1.cpp
rename to demos/tutorial/alignments/alignment_msa_assignment1.cpp
diff --git a/demos/tutorial/multiple_sequence_alignment/assignment1.cpp.stdout b/demos/tutorial/alignments/alignment_msa_assignment1.cpp.stdout
similarity index 100%
rename from demos/tutorial/multiple_sequence_alignment/assignment1.cpp.stdout
rename to demos/tutorial/alignments/alignment_msa_assignment1.cpp.stdout
diff --git a/demos/tutorial/multiple_sequence_alignment/consensus.cpp b/demos/tutorial/alignments/alignment_msa_consensus.cpp
similarity index 100%
rename from demos/tutorial/multiple_sequence_alignment/consensus.cpp
rename to demos/tutorial/alignments/alignment_msa_consensus.cpp
diff --git a/demos/tutorial/multiple_sequence_alignment/consensus.cpp.stdout b/demos/tutorial/alignments/alignment_msa_consensus.cpp.stdout
similarity index 100%
rename from demos/tutorial/multiple_sequence_alignment/consensus.cpp.stdout
rename to demos/tutorial/alignments/alignment_msa_consensus.cpp.stdout
diff --git a/demos/tutorial/alignments/alignment_pairwise_global.cpp b/demos/tutorial/alignments/alignment_pairwise_global.cpp
new file mode 100644
index 0000000..016525f
--- /dev/null
+++ b/demos/tutorial/alignments/alignment_pairwise_global.cpp
@@ -0,0 +1,55 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<char> TSequence; // sequence type
+ typedef Align<TSequence, ArrayGaps> TAlign; // align type
+ typedef Row<TAlign>::Type TRow;
+ typedef Iterator<TRow>::Type TIterator;
+//![main]
+
+//![init]
+ TSequence seq1 = "CDFGHC";
+ TSequence seq2 = "CDEFGAHC";
+
+ TAlign align;
+ resize(rows(align), 2);
+ assignSource(row(align, 0), seq1);
+ assignSource(row(align, 1), seq2);
+//![init]
+
+//![alignment]
+ int score = globalAlignment(align, Score<int>(1, -1, -1, -1), Hirschberg());
+ std::cout << "Score = " << score << std::endl;
+ std::cout << align;
+//![alignment]
+
+//![iterate]
+ TIterator it1 = begin(row(align, 0));
+ TIterator it1End = end(row(align, 0));
+ TIterator it2 = begin(row(align, 1));
+ TIterator it2End = end(row(align, 1));
+
+ while (it1 != it1End && it2 != it2End)
+ {
+ if (isGap(it1))
+ std::cout << "#";
+ else
+ std::cout << *it1;
+ std::cout << ' ';
+ if (isGap(it2))
+ std::cout << "#";
+ else
+ std::cout << *it2;
+ std::cout << std::endl;
+ ++it1;
+ ++it2;
+ }
+
+ return 0;
+}
+//![iterate]
diff --git a/demos/tutorial/alignments/alignment_pairwise_global2.cpp b/demos/tutorial/alignments/alignment_pairwise_global2.cpp
new file mode 100644
index 0000000..383c7bb
--- /dev/null
+++ b/demos/tutorial/alignments/alignment_pairwise_global2.cpp
@@ -0,0 +1,45 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+//![main]
+//![init]
+ typedef String<char> TSequence; // sequence type
+ typedef Align<TSequence, ArrayGaps> TAlign; // align type
+
+ TSequence seq1 = "CDFGHC";
+ TSequence seq2 = "CDEFGAHC";
+
+ TAlign align;
+ resize(rows(align), 2);
+ assignSource(row(align, 0), seq1);
+ assignSource(row(align, 1), seq2);
+//![main]
+
+//![alignment]
+ int score = globalAlignment(align, Score<int>(1, -1, -1, -1), Hirschberg());
+ std::cout << "Score = " << score << std::endl;
+ std::cout << align;
+//![alignment]
+
+//![typedef2]
+ StringSet<TSequence> sequences;
+ appendValue(sequences, seq1);
+ appendValue(sequences, seq2);
+ typedef StringSet<TSequence, Dependent<> > TDepStringSet;
+ typedef Graph<Alignment<TDepStringSet> > TAlignGraph;
+ TAlignGraph alignG(sequences);
+//![typedef2]
+
+//![alignment2]
+ score = globalAlignment(alignG, Score<int>(1, -1, -1, -1), NeedlemanWunsch());
+ std::cout << "Score = " << score << std::endl;
+ std::cout << alignG;
+
+ return 0;
+}
+//![alignment2]
diff --git a/demos/tutorial/alignments/alignment_pairwise_global_assignment1.cpp b/demos/tutorial/alignments/alignment_pairwise_global_assignment1.cpp
new file mode 100644
index 0000000..a750fcb
--- /dev/null
+++ b/demos/tutorial/alignments/alignment_pairwise_global_assignment1.cpp
@@ -0,0 +1,51 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<Dna> TSequence; // sequence type
+ typedef Align<TSequence, ArrayGaps> TAlign; // align type
+ typedef Row<TAlign>::Type TRow;
+ typedef Iterator<TRow>::Type TIterator;
+//![main]
+
+//![init]
+ TSequence seq1 = "acgtacgtact";
+ TSequence seq2 = "actactacgt";
+
+ TAlign align;
+ resize(rows(align), 2);
+ assignSource(row(align, 0), seq1);
+ assignSource(row(align, 1), seq2);
+//![init]
+
+//![alignment]
+ int score = globalAlignment(align, Score<int>(1, -1, -1, -1), Hirschberg());
+ std::cout << "Score = " << score << std::endl;
+ std::cout << align;
+//![alignment]
+
+//![iterate]
+ unsigned aliLength = _max(length(row(align, 0)), length(row(align, 1)));
+ for (unsigned i = 0; i < length(rows(align)); ++i)
+ {
+ TIterator it = iter(row(align, i), 0);
+ TIterator itEnd = iter(row(align, i), aliLength);
+ unsigned pos = 0;
+ std::cout << "Row " << i << " contains gaps at positions: ";
+ std::cout << std::endl;
+ while (it != itEnd)
+ {
+ if (isGap(it))
+ std::cout << pos << std::endl;
+ ++it;
+ ++pos;
+ }
+ }
+
+ return 0;
+}
+//![iterate]
diff --git a/demos/tutorial/alignments/alignment_pairwise_global_assignment2.cpp b/demos/tutorial/alignments/alignment_pairwise_global_assignment2.cpp
new file mode 100644
index 0000000..d32c30d
--- /dev/null
+++ b/demos/tutorial/alignments/alignment_pairwise_global_assignment2.cpp
@@ -0,0 +1,30 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<char> TSequence; // sequence type
+ typedef StringSet<TSequence, Dependent<> > TDepStringSet;
+ typedef Graph<Alignment<TDepStringSet> > TAlignGraph;
+//![main]
+
+//![init]
+ StringSet<TSequence> seq;
+ appendValue(seq, "blablablu");
+ appendValue(seq, "abab");
+
+ TAlignGraph alignG(seq);
+//![init]
+
+//![alignment]
+ AlignConfig<true, false, false, true> ac;
+ int score = globalAlignment(alignG, Score<int>(1, -1, -1, -1), ac, Gotoh());
+ std::cout << "Score = " << score << std::endl;
+ std::cout << alignG;
+
+ return 0;
+}
+//![alignment]
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp b/demos/tutorial/alignments/alignment_pairwise_local.cpp
similarity index 100%
rename from demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
rename to demos/tutorial/alignments/alignment_pairwise_local.cpp
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_local_assignment1.cpp b/demos/tutorial/alignments/alignment_pairwise_local_assignment1.cpp
similarity index 100%
rename from demos/tutorial/pairwise_sequence_alignment/alignment_local_assignment1.cpp
rename to demos/tutorial/alignments/alignment_pairwise_local_assignment1.cpp
diff --git a/demos/tutorial/alignment_representation/graph.cpp b/demos/tutorial/alignments/alignment_representation_ag.cpp
similarity index 100%
rename from demos/tutorial/alignment_representation/graph.cpp
rename to demos/tutorial/alignments/alignment_representation_ag.cpp
diff --git a/demos/tutorial/alignment_representation/graph_assignment1.cpp b/demos/tutorial/alignments/alignment_representation_ag_assignment1.cpp
similarity index 100%
rename from demos/tutorial/alignment_representation/graph_assignment1.cpp
rename to demos/tutorial/alignments/alignment_representation_ag_assignment1.cpp
diff --git a/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
new file mode 100644
index 0000000..29124d6
--- /dev/null
+++ b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
@@ -0,0 +1,136 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<char> TSequence;
+ typedef StringSet<TSequence> TStringSet;
+ typedef Gaps<TSequence, ArrayGaps> TGaps;
+ typedef Iterator<TGaps>::Type TGapsIterator;
+ typedef Iterator<String<int> >::Type TIterator;
+
+ TSequence text = "MISSISSIPPIANDMISSOURI";
+ TSequence pattern = "SISSI";
+//![main]
+
+//![verification]
+ String<int> locations;
+ for (unsigned i = 0; i < length(text) - length(pattern); ++i)
+ {
+ // Compute the MyersBitVector in current window of text.
+ TSequence tmp = infix(text, i, i + length(pattern));
+
+ // Report hits with at most 2 errors.
+ if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
+ {
+ appendValue(locations, i);
+ }
+ }
+//![verification]
+
+//![alignment]
+ TGaps gapsText;
+ TGaps gapsPattern;
+ assignSource(gapsPattern, pattern);
+ std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
+ for (TIterator it = begin(locations); it != end(locations); ++it)
+ {
+ // Clear previously computed gaps.
+ clearGaps(gapsText);
+ clearGaps(gapsPattern);
+ // Only recompute the area within the current window over the text.
+ TSequence textInfix = infix(text, *it, *it + length(pattern));
+ assignSource(gapsText, textInfix);
+
+ // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
+ // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
+ int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
+//![alignment]
+
+//![cigar]
+ TGapsIterator itGapsPattern = begin(gapsPattern);
+ TGapsIterator itGapsEnd = end(gapsPattern);
+
+ // Remove trailing gaps in pattern.
+ int count = 0;
+ while (isGap(--itGapsEnd))
+ ++count;
+ setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
+
+ // Remove leading gaps in pattern.
+ if (isGap(itGapsPattern))
+ {
+ setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
+ setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
+ }
+
+ // Reinitilaize the iterators.
+ TGapsIterator itGapsText = begin(gapsText);
+ itGapsPattern = begin(gapsPattern);
+ itGapsEnd = end(gapsPattern);
+
+ // Use a stringstream to construct the cigar string.
+ std::stringstream cigar;
+ int numChar = 0;
+ while (itGapsPattern != itGapsEnd)
+ {
+//![cigar]
+//![cigarInsertion]
+ // Count insertions.
+ if (isGap(itGapsText))
+ {
+ int numGaps = countGaps(itGapsText);
+ cigar << numGaps << "I";
+ itGapsText += numGaps;
+ itGapsPattern += numGaps;
+ continue;
+ }
+//![cigarInsertion]
+//![cigarDeletion]
+ // Count deletions.
+ if (isGap(itGapsPattern))
+ {
+ int numGaps = countGaps(itGapsPattern);
+ cigar << numGaps << "D";
+ itGapsText += numGaps;
+ itGapsPattern += numGaps;
+ continue;
+ }
+//![cigarDeletion]
+//![cigarMatch]
+ // Count matches.
+ while (*itGapsText == *itGapsPattern && itGapsPattern != itGapsEnd)
+ {
+ ++numChar;
+ ++itGapsText;
+ ++itGapsPattern;
+ }
+ if (numChar != 0)
+ {
+ cigar << numChar << "M";
+ numChar = 0;
+ continue;
+ }
+//![cigarMatch]
+//![cigarMismatch]
+ // Count mismatches.
+ while (*itGapsText != *itGapsPattern && itGapsPattern != itGapsEnd)
+ {
+ ++numChar;
+ ++itGapsText;
+ ++itGapsPattern;
+ }
+ if (numChar != 0)
+ cigar << numChar << "S";
+ numChar = 0;
+ }
+ // Output the hit position in the text, the total number of edits and the corresponding cigar string.
+ std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << "\tcigar: " << cigar.str() << std::endl;
+ }
+
+ return 0;
+}
+//![cigarMismatch]
diff --git a/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step1.cpp b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step1.cpp
new file mode 100644
index 0000000..d0368b8
--- /dev/null
+++ b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step1.cpp
@@ -0,0 +1,32 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<char> TSequence;
+ typedef StringSet<TSequence> TStringSet;
+ typedef Gaps<TSequence, ArrayGaps> TGaps;
+ typedef Iterator<TGaps>::Type TGapsIterator;
+ typedef Iterator<String<int> >::Type TIterator;
+
+ TSequence text = "MISSISSIPPIANDMISSOURI";
+ TSequence pattern = "SISSI";
+
+ String<int> locations;
+ for (unsigned i = 0; i < length(text) - length(pattern); ++i)
+ {
+ // Compute the MyersBitVector in current window of text.
+ TSequence tmp = infix(text, i, i + length(pattern));
+
+ // Report hits with at most 2 errors.
+ if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
+ {
+ appendValue(locations, i);
+ }
+ }
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step2.cpp b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step2.cpp
new file mode 100644
index 0000000..7a8e4c5
--- /dev/null
+++ b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step2.cpp
@@ -0,0 +1,53 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<char> TSequence;
+ typedef StringSet<TSequence> TStringSet;
+ typedef Gaps<TSequence, ArrayGaps> TGaps;
+ typedef Iterator<TGaps>::Type TGapsIterator;
+ typedef Iterator<String<int> >::Type TIterator;
+
+ TSequence text = "MISSISSIPPIANDMISSOURI";
+ TSequence pattern = "SISSI";
+
+ String<int> locations;
+ for (unsigned i = 0; i < length(text) - length(pattern); ++i)
+ {
+ // Compute the MyersBitVector in current window of text.
+ TSequence tmp = infix(text, i, i + length(pattern));
+
+ // Report hits with at most 2 errors.
+ if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
+ {
+ appendValue(locations, i);
+ }
+ }
+
+ TGaps gapsText;
+ TGaps gapsPattern;
+ assignSource(gapsPattern, pattern);
+ std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
+ for (TIterator it = begin(locations); it != end(locations); ++it)
+ {
+ // Clear previously computed gaps.
+ clearGaps(gapsText);
+ clearGaps(gapsPattern);
+
+ // Only recompute the area within the current window over the text.
+ TSequence textInfix = infix(text, *it, *it + length(pattern));
+ assignSource(gapsText, textInfix);
+
+ // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
+ // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
+ int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
+ std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << std::endl;
+ }
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step3.cpp b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step3.cpp
new file mode 100644
index 0000000..1bd6837
--- /dev/null
+++ b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step3.cpp
@@ -0,0 +1,68 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<char> TSequence;
+ typedef StringSet<TSequence> TStringSet;
+ typedef Gaps<TSequence, ArrayGaps> TGaps;
+ typedef Iterator<TGaps>::Type TGapsIterator;
+ typedef Iterator<String<int> >::Type TIterator;
+
+ TSequence text = "MISSISSIPPIANDMISSOURI";
+ TSequence pattern = "SISSI";
+
+ String<int> locations;
+ for (unsigned i = 0; i < length(text) - length(pattern); ++i)
+ {
+ // Compute the MyersBitVector in current window of text.
+ TSequence tmp = infix(text, i, i + length(pattern));
+
+ // Report hits with at most 2 errors.
+ if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
+ {
+ appendValue(locations, i);
+ }
+ }
+
+ TGaps gapsText;
+ TGaps gapsPattern;
+ assignSource(gapsPattern, pattern);
+ std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
+ for (TIterator it = begin(locations); it != end(locations); ++it)
+ {
+ // Clear previously computed gaps.
+ clearGaps(gapsText);
+ clearGaps(gapsPattern);
+
+ // Only recompute the area within the current window over the text.
+ TSequence textInfix = infix(text, *it, *it + length(pattern));
+ assignSource(gapsText, textInfix);
+
+ // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
+ // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
+ int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
+
+ TGapsIterator itGapsPattern = begin(gapsPattern);
+ TGapsIterator itGapsEnd = end(gapsPattern);
+
+ // Remove trailing gaps in pattern.
+ int count = 0;
+ while (isGap(--itGapsEnd))
+ ++count;
+ setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
+
+ // Remove leading gaps in pattern.
+ if (isGap(itGapsPattern))
+ {
+ setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
+ setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
+ }
+ std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << std::endl;
+ }
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step4.cpp b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step4.cpp
new file mode 100644
index 0000000..051720e
--- /dev/null
+++ b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step4.cpp
@@ -0,0 +1,89 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<char> TSequence;
+ typedef StringSet<TSequence> TStringSet;
+ typedef Gaps<TSequence, ArrayGaps> TGaps;
+ typedef Iterator<TGaps>::Type TGapsIterator;
+ typedef Iterator<String<int> >::Type TIterator;
+
+ TSequence text = "MISSISSIPPIANDMISSOURI";
+ TSequence pattern = "SISSI";
+
+ String<int> locations;
+ for (unsigned i = 0; i < length(text) - length(pattern); ++i)
+ {
+ // Compute the MyersBitVector in current window of text.
+ TSequence tmp = infix(text, i, i + length(pattern));
+
+ // Report hits with at most 2 errors.
+ if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
+ {
+ appendValue(locations, i);
+ }
+ }
+
+ TGaps gapsText;
+ TGaps gapsPattern;
+ assignSource(gapsPattern, pattern);
+ std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
+ for (TIterator it = begin(locations); it != end(locations); ++it)
+ {
+ // Clear previously computed gaps.
+ clearGaps(gapsText);
+ clearGaps(gapsPattern);
+
+ // Only recompute the area within the current window over the text.
+ TSequence textInfix = infix(text, *it, *it + length(pattern));
+ assignSource(gapsText, textInfix);
+
+ // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
+ // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
+ int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
+
+ TGapsIterator itGapsPattern = begin(gapsPattern);
+ TGapsIterator itGapsEnd = end(gapsPattern);
+
+ // Remove trailing gaps in pattern.
+ int count = 0;
+ while (isGap(--itGapsEnd))
+ ++count;
+ setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
+
+ // Remove leading gaps in pattern.
+ if (isGap(itGapsPattern))
+ {
+ setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
+ setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
+ }
+
+ // Reinitilaize the iterators.
+ TGapsIterator itGapsText = begin(gapsText);
+ itGapsPattern = begin(gapsPattern);
+ itGapsEnd = end(gapsPattern);
+
+ // Use a stringstream to construct the cigar string.
+ std::stringstream cigar;
+ while (itGapsPattern != itGapsEnd)
+ {
+ // Count insertions.
+ if (isGap(itGapsText))
+ {
+ int numGaps = countGaps(itGapsText);
+ cigar << numGaps << "I";
+ itGapsText += numGaps;
+ itGapsPattern += numGaps;
+ continue;
+ }
+ ++itGapsText;
+ ++itGapsPattern;
+ }
+ std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << std::endl;
+ }
+ return 0;
+}
diff --git a/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step5.cpp b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step5.cpp
new file mode 100644
index 0000000..0da4b9b
--- /dev/null
+++ b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step5.cpp
@@ -0,0 +1,101 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<char> TSequence;
+ typedef StringSet<TSequence> TStringSet;
+ typedef Gaps<TSequence, ArrayGaps> TGaps;
+ typedef Iterator<TGaps>::Type TGapsIterator;
+ typedef Iterator<String<int> >::Type TIterator;
+
+ TSequence text = "MISSISSIPPIANDMISSOURI";
+ TSequence pattern = "SISSI";
+
+ String<int> locations;
+ for (unsigned i = 0; i < length(text) - length(pattern); ++i)
+ {
+ // Compute the MyersBitVector in current window of text.
+ TSequence tmp = infix(text, i, i + length(pattern));
+
+ // Report hits with at most 2 errors.
+ if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
+ {
+ appendValue(locations, i);
+ }
+ }
+
+ TGaps gapsText;
+ TGaps gapsPattern;
+ assignSource(gapsPattern, pattern);
+ std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
+ for (TIterator it = begin(locations); it != end(locations); ++it)
+ {
+ // Clear previously computed gaps.
+ clearGaps(gapsText);
+ clearGaps(gapsPattern);
+
+ // Only recompute the area within the current window over the text.
+ TSequence textInfix = infix(text, *it, *it + length(pattern));
+ assignSource(gapsText, textInfix);
+
+ // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
+ // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
+ int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
+
+ TGapsIterator itGapsPattern = begin(gapsPattern);
+ TGapsIterator itGapsEnd = end(gapsPattern);
+
+ // Remove trailing gaps in pattern.
+ int count = 0;
+ while (isGap(--itGapsEnd))
+ ++count;
+ setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
+
+ // Remove leading gaps in pattern.
+ if (isGap(itGapsPattern))
+ {
+ setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
+ setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
+ }
+
+ // Reinitilaize the iterators.
+ TGapsIterator itGapsText = begin(gapsText);
+ itGapsPattern = begin(gapsPattern);
+ itGapsEnd = end(gapsPattern);
+
+ // Use a stringstream to construct the cigar string.
+ std::stringstream cigar;
+ while (itGapsPattern != itGapsEnd)
+ {
+ // Count insertions.
+ if (isGap(itGapsText))
+ {
+ int numGaps = countGaps(itGapsText);
+ cigar << numGaps << "I";
+ itGapsText += numGaps;
+ itGapsPattern += numGaps;
+ continue;
+ }
+ // Count deletions.
+ if (isGap(itGapsPattern))
+ {
+ int numGaps = countGaps(itGapsPattern);
+ cigar << numGaps << "D";
+ itGapsText += numGaps;
+ itGapsPattern += numGaps;
+ continue;
+ }
+ ++itGapsText;
+ ++itGapsPattern;
+ }
+ // Output the hit position in the text, the total number of edits and the corresponding cigar string.
+ std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << std::endl;
+ }
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step6.cpp b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step6.cpp
new file mode 100644
index 0000000..4b0294c
--- /dev/null
+++ b/demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step6.cpp
@@ -0,0 +1,124 @@
+//![main]
+#include <iostream>
+#include <seqan/align.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef String<char> TSequence;
+ typedef StringSet<TSequence> TStringSet;
+ typedef Gaps<TSequence, ArrayGaps> TGaps;
+ typedef Iterator<TGaps>::Type TGapsIterator;
+ typedef Iterator<String<int> >::Type TIterator;
+
+ TSequence text = "MISSISSIPPIANDMISSOURI";
+ TSequence pattern = "SISSI";
+
+ String<int> locations;
+ for (unsigned i = 0; i < length(text) - length(pattern); ++i)
+ {
+ // Compute the MyersBitVector in current window of text.
+ TSequence tmp = infix(text, i, i + length(pattern));
+
+ // Report hits with at most 2 errors.
+ if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
+ {
+ appendValue(locations, i);
+ }
+ }
+
+ TGaps gapsText;
+ TGaps gapsPattern;
+ assignSource(gapsPattern, pattern);
+ std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
+ for (TIterator it = begin(locations); it != end(locations); ++it)
+ {
+ // Clear previously computed gaps.
+ clearGaps(gapsText);
+ clearGaps(gapsPattern);
+
+ // Only recompute the area within the current window over the text.
+ TSequence textInfix = infix(text, *it, *it + length(pattern));
+ assignSource(gapsText, textInfix);
+
+ // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
+ // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
+ int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
+
+ TGapsIterator itGapsPattern = begin(gapsPattern);
+ TGapsIterator itGapsEnd = end(gapsPattern);
+
+ // Remove trailing gaps in pattern.
+ int count = 0;
+ while (isGap(--itGapsEnd))
+ ++count;
+ setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
+
+ // Remove leading gaps in pattern.
+ if (isGap(itGapsPattern))
+ {
+ setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
+ setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
+ }
+
+ // Reinitilaize the iterators.
+ TGapsIterator itGapsText = begin(gapsText);
+ itGapsPattern = begin(gapsPattern);
+ itGapsEnd = end(gapsPattern);
+
+ // Use a stringstream to construct the cigar string.
+ std::stringstream cigar;
+ int numChar = 0;
+ while (itGapsPattern != itGapsEnd)
+ {
+ // Count insertions.
+ if (isGap(itGapsText))
+ {
+ int numGaps = countGaps(itGapsText);
+ cigar << numGaps << "I";
+ itGapsText += numGaps;
+ itGapsPattern += numGaps;
+ continue;
+ }
+ // Count deletions.
+ if (isGap(itGapsPattern))
+ {
+ int numGaps = countGaps(itGapsPattern);
+ cigar << numGaps << "D";
+ itGapsText += numGaps;
+ itGapsPattern += numGaps;
+ continue;
+ }
+ // Count matches.
+ while (*itGapsText == *itGapsPattern && itGapsPattern != itGapsEnd)
+ {
+ ++numChar;
+ ++itGapsText;
+ ++itGapsPattern;
+ }
+ if (numChar != 0)
+ {
+ cigar << numChar << "M";
+ numChar = 0;
+ continue;
+ }
+
+ // Count mismatches.
+ while (*itGapsText != *itGapsPattern && itGapsPattern != itGapsEnd)
+ {
+ ++numChar;
+ ++itGapsText;
+ ++itGapsPattern;
+ }
+ if (numChar != 0)
+ cigar << numChar << "S";
+ numChar = 0;
+ }
+ // Output the hit position in the text, the total number of edits and the corresponding cigar string.
+ std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << "\tcigar: " << cigar.str() << std::endl;
+ }
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/alphabets/alphabet_assignment_1_solution.cpp.stdout b/demos/tutorial/alphabets/alphabet_assignment_1_solution.cpp.stdout
deleted file mode 100644
index e96d70f..0000000
Binary files a/demos/tutorial/alphabets/alphabet_assignment_1_solution.cpp.stdout and /dev/null differ
diff --git a/demos/tutorial/annotation_store/assignment_1_hint.cpp b/demos/tutorial/annotation_store/assignment_1_hint.cpp
new file mode 100644
index 0000000..8a9f788
--- /dev/null
+++ b/demos/tutorial/annotation_store/assignment_1_hint.cpp
@@ -0,0 +1,22 @@
+#include <fstream>
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+int main()
+{
+ FragmentStore<> store;
+
+ GffFileIn file("assignment_annotations.gtf");
+ readRecords(store, file);
+ // Create AnnotationTree iterator
+ Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
+ it = begin(store, AnnotationTree<>());
+ // Move iterator one node down
+ goDown(it);
+
+ return 0;
+}
diff --git a/demos/tutorial/annotation_store/assignment_1_solution.cpp b/demos/tutorial/annotation_store/assignment_1_solution.cpp
new file mode 100644
index 0000000..015d58e
--- /dev/null
+++ b/demos/tutorial/annotation_store/assignment_1_solution.cpp
@@ -0,0 +1,26 @@
+#include <fstream>
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+int main()
+{
+ FragmentStore<> store;
+ GffFileIn file("assignment_annotations.gtf");
+ readRecords(store, file);
+ // Create AnnotationTree iterator
+ Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
+ it = begin(store, AnnotationTree<>());
+ unsigned count = 0;
+ // Go down to the first leaf (first child of the first mRNA)
+ while (goDown(it))
+ ;
+ ++count;
+ // Iterate over all siblings and count
+ while (goRight(it))
+ ++count;
+ std::cout << "No. of children of the first mRNA: " << count << std::endl;
+ return 0;
+}
diff --git a/demos/tutorial/annotation_store/assignment_2_solution.cpp b/demos/tutorial/annotation_store/assignment_2_solution.cpp
new file mode 100644
index 0000000..ac62644
--- /dev/null
+++ b/demos/tutorial/annotation_store/assignment_2_solution.cpp
@@ -0,0 +1,40 @@
+#include <fstream>
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+int main()
+{
+ FragmentStore<> store;
+ GffFileIn file("assignment_annotations.gtf");
+ readRecords(store, file);
+ // Iterate over all leafs, count and print the result
+ Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
+ it = begin(store, AnnotationTree<>());
+ unsigned count = 0;
+ std::cout << "Number of children for each mRNA: " << std::endl;
+ // Go down to the first leaf (first child of the first mRNA)
+ while (goDown(it))
+ ;
+ while (!atEnd(it))
+ {
+ ++count;
+ // Iterate over all siblings and count
+ while (goRight(it))
+ ++count;
+ std::cout << count << std::endl;
+ count = 0;
+ // Jump to the next mRNA or gene, go down to its first leaf and count it
+ if (!atEnd(it))
+ {
+ goNext(it);
+ if (!atEnd(it))
+ while (goDown(it))
+ ;
+ }
+ }
+ return 0;
+}
diff --git a/demos/tutorial/annotation_store/assignment_3_solution.cpp b/demos/tutorial/annotation_store/assignment_3_solution.cpp
new file mode 100644
index 0000000..8c0fe5e
--- /dev/null
+++ b/demos/tutorial/annotation_store/assignment_3_solution.cpp
@@ -0,0 +1,28 @@
+#include <fstream>
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+int main()
+{
+ FragmentStore<> store;
+ GffFileIn file("assignment_annotations.gtf");
+ readRecords(store, file);
+ // Create iterator
+ Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
+ it = begin(store, AnnotationTree<>());
+ // Iterate to the first annotation of type "exon"
+ while (!atEnd(it) && getType(it) != "exon")
+ goNext(it);
+ // Output:
+ std::cout << " type: " << getType(it) << std::endl;
+ std::cout << " begin position: " << getAnnotation(it).beginPos << std::endl;
+ std::cout << " end position: " << getAnnotation(it).endPos << std::endl;
+ std::cout << " id: " << value(it) << std::endl;
+ std::cout << " parent id: " << getAnnotation(it).parentId << std::endl;
+ std::cout << " parent name: " << getParentName(it) << std::endl;
+ return 0;
+}
diff --git a/demos/tutorial/annotation_store/assignment_4_solution.cpp b/demos/tutorial/annotation_store/assignment_4_solution.cpp
new file mode 100644
index 0000000..1bfd472
--- /dev/null
+++ b/demos/tutorial/annotation_store/assignment_4_solution.cpp
@@ -0,0 +1,50 @@
+#include <fstream>
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+int main()
+{
+ FragmentStore<> store;
+ GffFileIn file("assignment_annotations.gtf");
+ readRecords(store, file);
+ // Create iterator
+ Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
+ it = begin(store, AnnotationTree<>());
+ unsigned countGenes = 0;
+ unsigned countmRNAs = 0;
+ unsigned countExons = 0;
+ unsigned length = 0;
+ // Iterate over annotation tree and count different elements and compute exon lengths
+ while (!atEnd(it))
+ {
+ if (getType(it) == "gene")
+ {
+ ++countGenes;
+ }
+ else if (getType(it) == "mRNA")
+ {
+ ++countmRNAs;
+ }
+ else if (getType(it) == "exon")
+ {
+ ++countExons;
+ length += abs((int)getAnnotation(it).endPos - (int)getAnnotation(it).beginPos);
+ }
+ goNext(it);
+ }
+ if (countGenes == 0u) // prevent div-by-zero below
+ countGenes = 1;
+ if (countmRNAs == 0u) // prevent div-by-zero below
+ countmRNAs = 1;
+ if (countExons == 0u) // prevent div-by-zero below
+ countExons = 1;
+ // Ouput some stats:
+ std::cout << "Average number of mRNAs for genes: " << (float)countmRNAs / (float)countGenes << std::endl;
+ std::cout << "Average number of exons for mRNAs: " << (float)countExons / (float)countmRNAs << std::endl;
+ std::cout << "Average length of exons: " << (float)length / (float)countExons << std::endl;
+ return 0;
+}
diff --git a/demos/tutorial/genome_annotations/assignment_annotations.gtf b/demos/tutorial/annotation_store/assignment_annotations.gtf
similarity index 100%
rename from demos/tutorial/genome_annotations/assignment_annotations.gtf
rename to demos/tutorial/annotation_store/assignment_annotations.gtf
diff --git a/demos/tutorial/sam_and_bam_io/example.sam b/demos/tutorial/bam_io/example.sam
similarity index 100%
rename from demos/tutorial/sam_and_bam_io/example.sam
rename to demos/tutorial/bam_io/example.sam
diff --git a/demos/tutorial/bam_io/example1.cpp b/demos/tutorial/bam_io/example1.cpp
new file mode 100644
index 0000000..6ef26c5
--- /dev/null
+++ b/demos/tutorial/bam_io/example1.cpp
@@ -0,0 +1,27 @@
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Open input file, BamFileIn can read SAM and BAM files.
+ BamFileIn bamFileIn("example.sam");
+
+ // Open output file, BamFileOut accepts also an ostream and a format tag.
+ BamFileOut bamFileOut(std::cout, Sam());
+
+ // Copy header.
+ BamHeader header;
+ readHeader(header, bamFileIn);
+ writeHeader(bamFileOut, header);
+
+ // Copy records.
+ BamAlignmentRecord record;
+ while (!atEnd(bamFileIn))
+ {
+ readRecord(record, bamFileIn);
+ writeRecord(bamFileOut, record);
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/example2.cpp b/demos/tutorial/bam_io/example2.cpp
new file mode 100644
index 0000000..3cc0743
--- /dev/null
+++ b/demos/tutorial/bam_io/example2.cpp
@@ -0,0 +1,21 @@
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ BamFileIn bamFileIn("example.bam");
+
+ BamHeader header;
+ readHeader(header, bamFileIn);
+
+ typedef FormattedFileContext<BamFileIn, void>::Type TBamContext;
+
+ TBamContext const & bamContext = context(bamFileIn);
+
+ for (unsigned i = 0; i < length(contigNames(bamContext)); ++i)
+ std::cout << contigNames(bamContext)[i] << '\t'
+ << contigLengths(bamContext)[i] << '\n';
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/example3.cpp b/demos/tutorial/bam_io/example3.cpp
new file mode 100644
index 0000000..b9a2aa4
--- /dev/null
+++ b/demos/tutorial/bam_io/example3.cpp
@@ -0,0 +1,32 @@
+#include <seqan/seq_io.h> // for FaiIndex
+#include <seqan/bam_io.h> // for BamStream
+
+using namespace seqan;
+
+int main()
+{
+ // Open FASTA, FAI, and BAM file. Build FAI if necessary.
+ FaiIndex faiIndex;
+ if (!open(faiIndex, "filename.fasta")) // try to load
+ if (!build(faiIndex, "filename.fasta")) // try to build
+ return 1;
+
+ // Error.
+ BamFileIn bamFileIn("file.bam");
+ BamHeader header;
+ readHeader(header, bamFileIn);
+
+ // Build mapping from bamSeqIds to fastaSeqIds;
+ String<int> mapping;
+ resize(mapping, length(contigNames(context(bamFileIn))), -1);
+ for (unsigned i = 0; i < length(contigNames(context(bamFileIn))); ++i)
+ if (!getIdByName(mapping[i], faiIndex, contigNames(context(bamFileIn))[i]))
+ {
+ std::cerr << "ERROR: Sequence "
+ << contigNames(context(bamFileIn))[i]
+ << "unknown in FASTA Index.\n";
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/example7.cpp b/demos/tutorial/bam_io/example7.cpp
new file mode 100644
index 0000000..133cae0
--- /dev/null
+++ b/demos/tutorial/bam_io/example7.cpp
@@ -0,0 +1,100 @@
+#include <iostream>
+#include <fstream>
+
+#include <seqan/sequence.h>
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const * argv[])
+{
+ if (argc != 7)
+ {
+ std::cerr << "USAGE: " << argv[0] << " IN.bam IN.bam.bai REF BEGIN END COUNT\n";
+ return 1;
+ }
+
+ // Open BamFileIn for reading.
+ BamFileIn inFile;
+ if (!open(inFile, argv[1]))
+ {
+ std::cerr << "ERROR: Could not open " << argv[1] << " for reading.\n";
+ return 1;
+ }
+
+ // Read BAI index.
+ BamIndex<Bai> baiIndex;
+ if (!open(baiIndex, argv[2]))
+ {
+ std::cerr << "ERROR: Could not read BAI index file " << argv[2] << "\n";
+ return 1;
+ }
+
+ // Read header.
+ BamHeader header;
+ readHeader(header, inFile);
+
+ // Translate from reference name to rID.
+ int rID = 0;
+ if (!getIdByName(rID, contigNamesCache(context(inFile)), argv[3]))
+ {
+ std::cerr << "ERROR: Reference sequence named " << argv[3] << " not known.\n";
+ return 1;
+ }
+
+ // Translate BEGIN and END arguments to number, 1-based to 0-based.
+ int beginPos = 0, endPos = 0;
+ if (!lexicalCast(beginPos, argv[4]) || beginPos <= 0)
+ {
+ std::cerr << "ERROR: Begin position " << argv[4] << " is invalid.\n";
+ return 1;
+ }
+ beginPos -= 1; // 1-based to 0-based.
+ if (!lexicalCast(endPos, argv[5]) || endPos <= 0)
+ {
+ std::cerr << "ERROR: End position " << argv[5] << " is invalid.\n";
+ return 1;
+ }
+ endPos -= 1; // 1-based to 0-based.
+
+ // Translate number of elements to print to number.
+ int num = 0;
+ if (!lexicalCast(num, argv[6]))
+ {
+ std::cerr << "ERROR: Count " << argv[6] << " is invalid.\n";
+ return 1;
+ }
+
+ // Jump the BGZF stream to this position.
+ bool hasAlignments = false;
+ if (!jumpToRegion(inFile, hasAlignments, rID, beginPos, endPos, baiIndex))
+ {
+ std::cerr << "ERROR: Could not jump to " << argv[3] << ":" << argv[4] << "\n";
+ return 1;
+ }
+ if (!hasAlignments)
+ return 0; // No alignments here.
+
+ // Seek linearly to the selected position.
+ BamAlignmentRecord record;
+ int numPrinted = 0;
+ BamFileOut out(inFile, std::cout, Sam());
+
+ while (!atEnd(inFile) && numPrinted < num)
+ {
+ readRecord(record, inFile);
+
+ // If we are on the next reference or at the end already then we stop.
+ if (record.rID == -1 || record.rID > rID || record.beginPos >= endPos)
+ break;
+ // If we are left of the selected position then we skip this record.
+ if (record.beginPos < beginPos)
+ continue;
+
+ // Otherwise, we print it to the user.
+ numPrinted++;
+ writeRecord(out, record);
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/solution1.cpp b/demos/tutorial/bam_io/solution1.cpp
new file mode 100644
index 0000000..c8a627f
--- /dev/null
+++ b/demos/tutorial/bam_io/solution1.cpp
@@ -0,0 +1,39 @@
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Open input file, BamFileIn can read SAM and BAM files.
+ BamFileIn bamFileIn;
+ if (!open(bamFileIn, "example.sam"))
+ {
+ std::cerr << "ERROR: Could not open example.sam!" << std::endl;
+ return 1;
+ }
+ // Open output file, BamFileOut accepts also an ostream and a format tag.
+ BamFileOut bamFileOut(context(bamFileIn), std::cout, Sam());
+
+ try
+ {
+ // Copy header.
+ BamHeader header;
+ readHeader(header, bamFileIn);
+ writeHeader(bamFileOut, header);
+
+ // Copy records.
+ BamAlignmentRecord record;
+ while (!atEnd(bamFileIn))
+ {
+ readRecord(record, bamFileIn);
+ writeRecord(bamFileOut, record);
+ }
+ }
+ catch (Exception const & e)
+ {
+ std::cout << "ERROR: " << e.what() << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/solution2.cpp b/demos/tutorial/bam_io/solution2.cpp
new file mode 100644
index 0000000..3423bab
--- /dev/null
+++ b/demos/tutorial/bam_io/solution2.cpp
@@ -0,0 +1,41 @@
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Open input file.
+ BamFileIn bamFileIn;
+ if (!open(bamFileIn, "example.sam"))
+ {
+ std::cerr << "ERROR: Could not open example.sam!" << std::endl;
+ return 1;
+ }
+
+ unsigned numUnmappedReads = 0;
+
+ try
+ {
+ // Read header.
+ BamHeader header;
+ readHeader(header, bamFileIn);
+
+ // Read records.
+ BamAlignmentRecord record;
+ while (!atEnd(bamFileIn))
+ {
+ readRecord(record, bamFileIn);
+ if (hasFlagUnmapped(record))
+ numUnmappedReads += 1;
+ }
+ }
+ catch (Exception const & e)
+ {
+ std::cout << "ERROR: " << e.what() << std::endl;
+ return 1;
+ }
+
+ std::cout << "Number of unmapped reads: " << numUnmappedReads << "\n";
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/solution3.cpp b/demos/tutorial/bam_io/solution3.cpp
new file mode 100644
index 0000000..0907be9
--- /dev/null
+++ b/demos/tutorial/bam_io/solution3.cpp
@@ -0,0 +1,44 @@
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Open input file.
+ BamFileIn bamFileIn;
+ if (!open(bamFileIn, "example.sam"))
+ {
+ std::cerr << "ERROR: Could not open example.sam!" << std::endl;
+ return 1;
+ }
+
+ unsigned numXXtags = 0;
+
+ try
+ {
+ // Read header.
+ BamHeader header;
+ readHeader(header, bamFileIn);
+
+ // Rear records.
+ BamAlignmentRecord record;
+ while (!atEnd(bamFileIn))
+ {
+ readRecord(record, bamFileIn);
+ BamTagsDict tagsDict(record.tags);
+
+ unsigned tagIdx = 0;
+ if (findTagKey(tagIdx, tagsDict, "XX"))
+ numXXtags += 1;
+ }
+ }
+ catch (Exception const & e)
+ {
+ std::cout << "ERROR: " << e.what() << std::endl;
+ return 1;
+ }
+
+ std::cout << "Number of records with the XX tag: " << numXXtags << "\n";
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/solution4.cpp b/demos/tutorial/bam_io/solution4.cpp
new file mode 100644
index 0000000..11f8395
--- /dev/null
+++ b/demos/tutorial/bam_io/solution4.cpp
@@ -0,0 +1,67 @@
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ Dna5String ref = "CCCGATGAGCACACGATCACACGATGACA";
+
+ // --------------------------------------------------------
+ // Build header.
+ // --------------------------------------------------------
+ BamFileOut bamFileOut(std::cout, Sam());
+
+ // Fill sequenceInfos.
+ assignValueById(contigLengths(context(bamFileOut)),
+ nameToId(contigNamesCache(context(bamFileOut)), "REF"),
+ length(ref));
+
+ // Fill header records.
+ BamHeader header;
+ resize(header, 1);
+ // @HD header.
+ header[0].type = BAM_HEADER_FIRST;
+ resize(header[0].tags, 1);
+ // @HD header, tag/value: VN:1.4.
+ header[0].tags[0].i1 = "VN";
+ header[0].tags[0].i2 = "1.4";
+
+ writeHeader(bamFileOut, header);
+
+ // --------------------------------------------------------
+ // Write out records.
+ // --------------------------------------------------------
+
+ BamAlignmentRecord record;
+
+ for (unsigned i = 0; i + 12 - 1 < length(ref); ++i)
+ {
+ clear(record);
+ // Set members that are the same for all records.
+ record.rID = 0;
+ record.flag = 0;
+ resize(record.cigar, 1);
+ record.cigar[0].operation = '=';
+ record.cigar[0].count = 12;
+
+ // The query name is REF_${START}_${END}.
+ record.qName = "REF_";
+ appendNumber(record.qName, i);
+ appendValue(record.qName, '_');
+ appendNumber(record.qName, i + 12);
+ // Set position.
+ record.beginPos = i;
+ // Set sequence.
+ record.seq = infix(ref, i, i + 12);
+
+ // Write "NH" tag.
+ BamTagsDict tagsDict(record.tags);
+ setTagValue(tagsDict, "NH", 1);
+
+ writeRecord(bamFileOut, record);
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/solution5.cpp b/demos/tutorial/bam_io/solution5.cpp
new file mode 100644
index 0000000..3eeb9ff
--- /dev/null
+++ b/demos/tutorial/bam_io/solution5.cpp
@@ -0,0 +1,47 @@
+#include <iostream>
+#include <fstream>
+
+#include <seqan/sequence.h>
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const * argv[])
+{
+ if (argc != 3)
+ {
+ std::cerr << "USAGE: " << argv[0] << " IN.[sam|bam] OUT.[sam|bam]\n";
+ return 1;
+ }
+
+ // Open BamFileIn for reading.
+ BamFileIn inFile;
+ if (!open(inFile, argv[1]))
+ {
+ std::cerr << "ERROR: Could not open " << argv[1] << " for reading.\n";
+ return 1;
+ }
+
+ // Open BamFileOut for writing. Give inFile to share its BamIoContext
+ BamFileOut outFile(inFile);
+ if (!open(outFile, argv[2]))
+ {
+ std::cerr << "ERROR: Could not open " << argv[2] << " for writing.\n";
+ return 1;
+ }
+
+ // Read header.
+ BamHeader header;
+ readHeader(header, inFile);
+ writeHeader(outFile, header);
+
+ // Copy over the alignment records.
+ BamAlignmentRecord record;
+ while (!atEnd(inFile))
+ {
+ readRecord(record, inFile);
+ writeRecord(outFile, record);
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/solution6.cpp b/demos/tutorial/bam_io/solution6.cpp
new file mode 100644
index 0000000..e688bef
--- /dev/null
+++ b/demos/tutorial/bam_io/solution6.cpp
@@ -0,0 +1,40 @@
+#include <iostream>
+#include <fstream>
+
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+
+using namespace seqan;
+
+int main(int argc, char const ** argv)
+{
+ if (argc != 3)
+ {
+ std::cerr << "USAGE: " << argv[0] << " IN.bam OUT.bin\n";
+ return 1;
+ }
+
+ // Open BGZF file for reading.
+ typedef VirtualStream<char, Input> TInStream;
+ TInStream inStream;
+ if (!open(inStream, argv[1]))
+ {
+ std::cerr << "ERROR: Could not open " << argv[1] << " for reading.\n";
+ return 1;
+ }
+
+ // Open std::fstream for writing.
+ std::fstream outStream(argv[2], std::ios::binary | std::ios::out);
+ if (!outStream.good())
+ {
+ std::cerr << "ERROR: Could not open " << argv[2] << " for writing.\n";
+ return 1;
+ }
+
+ // Copy over data.
+ DirectionIterator<TInStream, Input>::Type reader = directionIterator(inStream, Input());
+ while (!atEnd(reader))
+ read(outStream, reader, 1000);
+
+ return 0;
+}
diff --git a/demos/tutorial/bam_io/solution7.cpp b/demos/tutorial/bam_io/solution7.cpp
new file mode 100644
index 0000000..1bbb7b4
--- /dev/null
+++ b/demos/tutorial/bam_io/solution7.cpp
@@ -0,0 +1,43 @@
+#include <iostream>
+#include <fstream>
+
+#include <seqan/sequence.h>
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const ** argv)
+{
+ if (argc != 2)
+ {
+ std::cerr << "USAGE: " << argv[0] << " IN.bam\n";
+ return 1;
+ }
+
+ // Open BGZF Stream for reading.
+ typedef VirtualStream<char, Input> TInStream;
+ TInStream inStream;
+ if (!open(inStream, argv[1]))
+ {
+ std::cerr << "ERROR: Could not open " << argv[1] << " for reading.\n";
+ return 1;
+ }
+
+ // Setup name store, cache, and BAM I/O context.
+ typedef StringSet<CharString> TNameStore;
+ typedef NameStoreCache<TNameStore> TNameStoreCache;
+ typedef BamIOContext<TNameStore> TBamIOContext;
+ TNameStore contigNames;
+ TNameStoreCache contigNamesCache(contigNames);
+ TBamIOContext context(contigNames, contigNamesCache);
+
+ // Read header.
+ BamHeader header;
+ DirectionIterator<TInStream, Input>::Type reader = directionIterator(inStream, Input());
+ readHeader(header, context, reader, Bam());
+
+ // Write out header again.
+ write(std::cout, header, context, Sam());
+
+ return 0;
+}
diff --git a/demos/tutorial/base_io/example1.cpp b/demos/tutorial/base_io/example1.cpp
new file mode 100644
index 0000000..d5df4b1
--- /dev/null
+++ b/demos/tutorial/base_io/example1.cpp
@@ -0,0 +1,38 @@
+//![include]
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main()
+{
+//![include]
+//![ctor]
+ // Open input BAM file, BamFileIn supports both SAM and BAM files.
+ BamFileIn bamFileIn("example.bam");
+//![ctor]
+
+//![open]
+ // Open output SAM file by passing the filename to open.
+ BamFileOut samFileOut;
+ open(samFileOut, "example.sam");
+//![open]
+
+//![header]
+ // Copy header.
+ BamHeader header;
+ readHeader(header, bamFileIn);
+ writeHeader(samFileOut, header);
+//![header]
+
+//![records]
+ // Copy all records.
+ BamAlignmentRecord record;
+ while (!atEnd(bamFileIn))
+ {
+ readRecord(record, bamFileIn);
+ writeRecord(samFileOut, record);
+ }
+
+ return 0;
+}
+//![records]
diff --git a/demos/tutorial/base_io/solution1.cpp b/demos/tutorial/base_io/solution1.cpp
new file mode 100644
index 0000000..52653cd
--- /dev/null
+++ b/demos/tutorial/base_io/solution1.cpp
@@ -0,0 +1,57 @@
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const ** argv)
+{
+ if (argc < 3)
+ {
+ std::cerr << "USAGE: " << argv[0] << " INPUT.bam OUTPUT.sam" << "\n";
+ return 1;
+ }
+
+ // Open input BAM file.
+ BamFileIn bamFileIn;
+ if (!open(bamFileIn, argv[1]))
+ {
+ std::cerr << "ERROR: could not open input file " << argv[1] << ".\n";
+ return 1;
+ }
+
+ // Open output SAM file.
+ BamFileOut samFileOut;
+ if (!open(samFileOut, argv[2]))
+ {
+ std::cerr << "ERROR: could not open output file " << argv[2] << ".\n";
+ return 1;
+ }
+
+ // Copy header.
+ BamHeader header;
+ try
+ {
+ readHeader(header, bamFileIn);
+ writeHeader(samFileOut, header);
+ }
+ catch (IOError const & e)
+ {
+ std::cerr << "ERROR: could not copy header. " << e.what() << "\n";
+ }
+
+ // Copy all records.
+ BamAlignmentRecord record;
+ while (!atEnd(bamFileIn))
+ {
+ try
+ {
+ readHeader(header, bamFileIn);
+ writeRecord(samFileOut, record);
+ }
+ catch (IOError const & e)
+ {
+ std::cerr << "ERROR: could not copy record. " << e.what() << "\n";
+ }
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/base_io/solution2.cpp b/demos/tutorial/base_io/solution2.cpp
new file mode 100644
index 0000000..eb9a7c6
--- /dev/null
+++ b/demos/tutorial/base_io/solution2.cpp
@@ -0,0 +1,65 @@
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const ** argv)
+{
+ if (argc < 3)
+ {
+ std::cerr << "USAGE: " << argv[0] << " INPUT.bam OUTPUT.sam" << "\n";
+ return 1;
+ }
+
+ // Open input BAM file.
+ BamFileIn bamFileIn;
+ if (!open(bamFileIn, argv[1]))
+ {
+ std::cerr << "ERROR: could not open input file " << argv[1] << ".\n";
+ return 1;
+ }
+
+ // Open output SAM file.
+ BamFileOut samFileOut;
+ if (!open(samFileOut, argv[2]))
+ {
+ std::cerr << "ERROR: could not open output file " << argv[2] << ".\n";
+ return 1;
+ }
+
+ // Copy header.
+ BamHeader header;
+ try
+ {
+ readHeader(header, bamFileIn);
+ writeHeader(samFileOut, header);
+ }
+ catch (ParseError const & e)
+ {
+ std::cerr << "ERROR: input header is badly formatted. " << e.what() << "\n";
+ }
+ catch (IOError const & e)
+ {
+ std::cerr << "ERROR: could not copy header. " << e.what() << "\n";
+ }
+
+ // Copy all records.
+ BamAlignmentRecord record;
+ while (!atEnd(bamFileIn))
+ {
+ try
+ {
+ readHeader(header, bamFileIn);
+ writeRecord(samFileOut, record);
+ }
+ catch (ParseError const & e)
+ {
+ std::cerr << "ERROR: input record is badly formatted. " << e.what() << "\n";
+ }
+ catch (IOError const & e)
+ {
+ std::cerr << "ERROR: could not copy record. " << e.what() << "\n";
+ }
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/base_io/solution3.cpp b/demos/tutorial/base_io/solution3.cpp
new file mode 100644
index 0000000..c69128a
--- /dev/null
+++ b/demos/tutorial/base_io/solution3.cpp
@@ -0,0 +1,73 @@
+#include <seqan/bam_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const ** argv)
+{
+ if (argc < 2)
+ {
+ std::cerr << "USAGE: " << argv[0] << " INPUT.bam [OUTPUT.sam]" << "\n";
+ return 1;
+ }
+
+ // Open input BAM stream or file.
+ BamFileIn bamFileIn;
+ if (isEqual(CharString(argv[1]), "-"))
+ {
+ open(bamFileIn, std::cin);
+ }
+ else if (!open(bamFileIn, argv[1]))
+ {
+ std::cerr << "ERROR: could not open input file " << argv[1] << ".\n";
+ return 1;
+ }
+
+ // Open output SAM stream or file.
+ BamFileOut samFileOut;
+ if (argc < 3)
+ {
+ open(samFileOut, std::cout, Sam());
+ }
+ else if (!open(samFileOut, argv[2]))
+ {
+ std::cerr << "ERROR: could not open output file " << argv[2] << ".\n";
+ return 1;
+ }
+
+ // Copy header.
+ BamHeader header;
+ try
+ {
+ readHeader(header, bamFileIn);
+ writeHeader(samFileOut, header);
+ }
+ catch (ParseError const & e)
+ {
+ std::cerr << "ERROR: input header is badly formatted. " << e.what() << "\n";
+ }
+ catch (IOError const & e)
+ {
+ std::cerr << "ERROR: could not copy header. " << e.what() << "\n";
+ }
+
+ // Copy all records.
+ BamAlignmentRecord record;
+ while (!atEnd(bamFileIn))
+ {
+ try
+ {
+ readHeader(header, bamFileIn);
+ writeRecord(samFileOut, record);
+ }
+ catch (ParseError const & e)
+ {
+ std::cerr << "ERROR: input record is badly formatted. " << e.what() << "\n";
+ }
+ catch (IOError const & e)
+ {
+ std::cerr << "ERROR: could not copy record. " << e.what() << "\n";
+ }
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/basics/CMakeLists.txt b/demos/tutorial/basics/CMakeLists.txt
new file mode 100644
index 0000000..455eace
--- /dev/null
+++ b/demos/tutorial/basics/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_basics)
+
+seqan_setup_apps(demos_tutorials_basics)
+seqan_add_all_executables(demos_tutorials_basics tutorial_)
diff --git a/demos/tutorial/basics/allocator.cpp.stdout b/demos/tutorial/basics/allocator.cpp.stdout
deleted file mode 100644
index ab914df..0000000
--- a/demos/tutorial/basics/allocator.cpp.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-Allocating and clearing 100000 times blocks of size 10 with MultiPool Allocator took 0.00160217
-Allocating and clearing 100000 times blocks of size 10 with Standard Allocator took 0.023572
-Allocating and clearing 100000 times blocks of size 100 with MultiPool Allocator took 0.0129499
-Allocating and clearing 100000 times blocks of size 100 with Standard Allocator took 0.0315518
-Allocating and clearing 100000 times blocks of size 1000 with MultiPool Allocator took 0.132747
-Allocating and clearing 100000 times blocks of size 1000 with Standard Allocator took 0.119664
diff --git a/demos/tutorial/basics/show_alphabets.cpp.stdout b/demos/tutorial/basics/show_alphabets.cpp.stdout
deleted file mode 100644
index e7f0050..0000000
--- a/demos/tutorial/basics/show_alphabets.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-0,A 1,B 2,C 3,D 4,E 5,F 6,G 7,H 8,I 9,J 10,K 11,L 12,M 13,N 14,O 15,P 16,Q 17,R 18,S 19,T 20,U 21,V 22,W 23,Y 24,Z 25,X 26,*
-0,A 1,C 2,G 3,T
-0,A 1,C 2,G 3,T 4,N
diff --git a/demos/tutorial/basics/strings.cpp.stdout b/demos/tutorial/basics/strings.cpp.stdout
deleted file mode 100644
index ac371b8..0000000
--- a/demos/tutorial/basics/strings.cpp.stdout
+++ /dev/null
@@ -1,28 +0,0 @@
-M,Q,D,A,V,K,A,P,M,N,A,F,I,V,W,S,A,D,Q,A,A,K,M,A,L,E,N,
-A:7
-B:0
-C:0
-D:2
-E:1
-F:1
-G:0
-H:0
-I:1
-J:0
-K:2
-L:1
-M:3
-N:2
-O:0
-P:1
-Q:2
-R:0
-S:1
-T:0
-U:0
-V:2
-W:1
-Y:0
-Z:0
-X:0
-*:0
diff --git a/demos/tutorial/metafunctions/swap.cpp b/demos/tutorial/basics/swap.cpp
similarity index 100%
rename from demos/tutorial/metafunctions/swap.cpp
rename to demos/tutorial/basics/swap.cpp
diff --git a/demos/tutorial/bed_io/example.bed b/demos/tutorial/bed_io/example.bed
deleted file mode 100644
index 683fbdd..0000000
--- a/demos/tutorial/bed_io/example.bed
+++ /dev/null
@@ -1,5 +0,0 @@
-chr1 66999824 67210768 NM_032291 0 + 6700004167208778 0 25 227,64,25,72,57,55,176,12,12,25,52,86,93,75,501,128,127,60,112,156,133,203,65,165,2013, 0,91705,98928,101802,105635,108668,109402,126371,133388,136853,137802,139139,142862,145536,147727,155006,156048,161292,185152,195122,199606,205193,206516,207130,208931,
-chr1 48998526 50489626 NM_032785 0 - 4899984450489468 0 14 1439,27,97,163,153,112,115,90,40,217,95,125,123,192, 0,2035,6787,54149,57978,101638,120482,130297,334336,512729,712915,1164458,1318541,1490908,
-chr1 16767166 16786584 NM_018090 0 + 1676725616785385 0 8 182,101,105,82,109,178,76,1248, 0,2960,7198,7388,8421,11166,15146,18170,
-chr1 33546713 33585995 NM_052998 0 + 3354785033585783 0 12 182,121,212,177,174,173,135,166,163,113,215,351,0,275,488,1065,2841,10937,12169,13435,15594,16954,36789,38931,
-chr1 16767166 16786584 NM_001145278 0 + 1676725616785385 0 8 104,101,105,82,109,178,76,1248, 0,2960,7198,7388,8421,11166,15146,18170,
diff --git a/demos/tutorial/bed_io/example1.cpp b/demos/tutorial/bed_io/example1.cpp
index a1c6ff1..981b840 100644
--- a/demos/tutorial/bed_io/example1.cpp
+++ b/demos/tutorial/bed_io/example1.cpp
@@ -1,10 +1,11 @@
#include <seqan/bed_io.h>
+
using namespace seqan;
int main()
{
// Open input bed file.
- BedFileIn bedIn(toCString(getAbsolutePath("/demos/tutorial/bed_io/example.bed")));
+ BedFileIn bedIn("example.bed");
// Attach to standard output.
BedFileOut bedOut(std::cout, Bed());
diff --git a/demos/tutorial/bed_io/example1.cpp.stdout b/demos/tutorial/bed_io/example1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/bed_io/solution1.cpp b/demos/tutorial/bed_io/solution1.cpp
index dcddcbf..ddc3a9e 100644
--- a/demos/tutorial/bed_io/solution1.cpp
+++ b/demos/tutorial/bed_io/solution1.cpp
@@ -6,7 +6,7 @@ int main()
{
// Open input bed file.
BedFileIn bedIn;
- if (!open(bedIn, toCString(getAbsolutePath("/demos/tutorial/bed_io/example.bed"))))
+ if (!open(bedIn, "example.bed"))
{
std::cerr << "ERROR: Could not open example.bed" << std::endl;
return 1;
diff --git a/demos/tutorial/bed_io/solution1.cpp.stdout b/demos/tutorial/bed_io/solution1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/bed_io/solution2.cpp b/demos/tutorial/bed_io/solution2.cpp
index 1212ff8..fbc8a12 100644
--- a/demos/tutorial/bed_io/solution2.cpp
+++ b/demos/tutorial/bed_io/solution2.cpp
@@ -7,7 +7,7 @@ int main()
{
// Open input bed file.
BedFileIn bedIn;
- if (!open(bedIn, toCString(getAbsolutePath("/demos/tutorial/bed_io/example.bed"))))
+ if (!open(bedIn, "example.bed"))
{
std::cerr << "ERROR: Could not open example.bed\n";
return 1;
diff --git a/demos/tutorial/bed_io/solution2.cpp.stdout b/demos/tutorial/bed_io/solution2.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/bed_io/solution3.cpp.stdout b/demos/tutorial/bed_io/solution3.cpp.stdout
deleted file mode 100644
index 19a3a54..0000000
--- a/demos/tutorial/bed_io/solution3.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-chr7 127471195 127472363 Pos1 0 +
-chr7 127472362 127473530 Pos2 0 +
diff --git a/demos/tutorial/blast_io/read_assignment.cpp.stdout b/demos/tutorial/blast_io/read_assignment.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/blast_io/write_assignment.cpp.stdout b/demos/tutorial/blast_io/write_assignment.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/consensus_alignment/with_positions.cpp b/demos/tutorial/consensus/with_positions.cpp
similarity index 100%
rename from demos/tutorial/consensus_alignment/with_positions.cpp
rename to demos/tutorial/consensus/with_positions.cpp
diff --git a/demos/tutorial/consensus_alignment/with_positions.cpp.stdout b/demos/tutorial/consensus/with_positions.cpp.stdout
similarity index 100%
rename from demos/tutorial/consensus_alignment/with_positions.cpp.stdout
rename to demos/tutorial/consensus/with_positions.cpp.stdout
diff --git a/demos/tutorial/consensus_alignment/without_positions.cpp b/demos/tutorial/consensus/without_positions.cpp
similarity index 100%
rename from demos/tutorial/consensus_alignment/without_positions.cpp
rename to demos/tutorial/consensus/without_positions.cpp
diff --git a/demos/tutorial/consensus_alignment/without_positions.cpp.stdout b/demos/tutorial/consensus/without_positions.cpp.stdout
similarity index 100%
rename from demos/tutorial/consensus_alignment/without_positions.cpp.stdout
rename to demos/tutorial/consensus/without_positions.cpp.stdout
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/NC_001405.fasta b/demos/tutorial/custom_io/NC_001405.fasta
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/NC_001405.fasta
rename to demos/tutorial/custom_io/NC_001405.fasta
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/NC_001460.fasta b/demos/tutorial/custom_io/NC_001460.fasta
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/NC_001460.fasta
rename to demos/tutorial/custom_io/NC_001460.fasta
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/blast_example.txt b/demos/tutorial/custom_io/blast_example.txt
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/blast_example.txt
rename to demos/tutorial/custom_io/blast_example.txt
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/example1.cpp b/demos/tutorial/custom_io/example1.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/example1.cpp
rename to demos/tutorial/custom_io/example1.cpp
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/gff2_example.txt b/demos/tutorial/custom_io/gff2_example.txt
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/gff2_example.txt
rename to demos/tutorial/custom_io/gff2_example.txt
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/newick_example.txt b/demos/tutorial/custom_io/newick_example.txt
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/newick_example.txt
rename to demos/tutorial/custom_io/newick_example.txt
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/parse_blastn.cpp b/demos/tutorial/custom_io/parse_blastn.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/parse_blastn.cpp
rename to demos/tutorial/custom_io/parse_blastn.cpp
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/parse_gff2.cpp b/demos/tutorial/custom_io/parse_gff2.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/parse_gff2.cpp
rename to demos/tutorial/custom_io/parse_gff2.cpp
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/reader_demo.cpp b/demos/tutorial/custom_io/reader_demo.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/reader_demo.cpp
rename to demos/tutorial/custom_io/reader_demo.cpp
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/solution1.cpp b/demos/tutorial/custom_io/solution1.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/solution1.cpp
rename to demos/tutorial/custom_io/solution1.cpp
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/solution2.cpp b/demos/tutorial/custom_io/solution2.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/solution2.cpp
rename to demos/tutorial/custom_io/solution2.cpp
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/solution3.cpp b/demos/tutorial/custom_io/solution3.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/solution3.cpp
rename to demos/tutorial/custom_io/solution3.cpp
diff --git a/demos/unassigned_or_unused/tutorials_custim_io/solution4.cpp b/demos/tutorial/custom_io/solution4.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorials_custim_io/solution4.cpp
rename to demos/tutorial/custom_io/solution4.cpp
diff --git a/demos/tutorial/journaled_set/example_join.cpp b/demos/tutorial/data_journaling/example_join.cpp
similarity index 100%
rename from demos/tutorial/journaled_set/example_join.cpp
rename to demos/tutorial/data_journaling/example_join.cpp
diff --git a/demos/tutorial/data_journaling/example_journal_string_basic.cpp b/demos/tutorial/data_journaling/example_journal_string_basic.cpp
new file mode 100644
index 0000000..d4f6f05
--- /dev/null
+++ b/demos/tutorial/data_journaling/example_journal_string_basic.cpp
@@ -0,0 +1,47 @@
+//![main]
+#include <seqan/stream.h>
+#include <seqan/sequence_journaled.h>
+
+using namespace seqan;
+
+int main()
+{
+//![main]
+//![typedef]
+ typedef String<char, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournaledString;
+ typedef Host<TJournaledString>::Type THost;
+//![typedef]
+
+//![init]
+ String<char> hostStr = "thisisahostsequence";
+ TJournaledString journalStr;
+ setHost(journalStr, hostStr);
+
+ std::cout << "After creating the Journaled String:" << std::endl;
+ std::cout << "Host: " << host(journalStr) << std::endl;
+ std::cout << "Journal: " << journalStr << std::endl;
+ std::cout << "Nodes: " << journalStr._journalEntries << std::endl;
+ std::cout << std::endl;
+//![init]
+
+//![modification]
+ insert(journalStr, 7, "modified");
+ erase(journalStr, 19, 27);
+
+ std::cout << "After modifying the Journaled String:" << std::endl;
+ std::cout << "Host: " << host(journalStr) << std::endl;
+ std::cout << "Journal: " << journalStr << std::endl;
+ std::cout << "Nodes: " << journalStr._journalEntries << std::endl;
+ std::cout << std::endl;
+//![modification]
+
+//![flatten]
+ flatten(journalStr);
+ std::cout << "After flatten the Journaled String:" << std::endl;
+ std::cout << "Host: " << host(journalStr) << std::endl;
+ std::cout << "Journal: " << journalStr << std::endl;
+ std::cout << "Nodes: " << journalStr._journalEntries << std::endl;
+
+ return 0;
+}
+//![flatten]
diff --git a/demos/tutorial/data_journaling/example_online_search.cpp b/demos/tutorial/data_journaling/example_online_search.cpp
new file mode 100644
index 0000000..9e64b36
--- /dev/null
+++ b/demos/tutorial/data_journaling/example_online_search.cpp
@@ -0,0 +1,307 @@
+//![include]
+#include <iostream>
+#include <seqan/seq_io.h>
+#include <seqan/journaled_set.h>
+
+using namespace seqan;
+//![include]
+
+//![searchAtBorder]
+template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
+void _searchAtBorder(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TJournal const & journal,
+ TPattern const & pattern)
+{
+ typedef typename Iterator<TJournal const, Standard>::Type TJournalIterator;
+
+ // Define region before the border to the next node to search for the pattern.
+ TJournalIterator nodeIter = iter(journal, entriesIt->virtualPosition +
+ _max(0, (int) entriesIt->length - (int) length(pattern) + 1));
+ // Define end of search region.
+ TJournalIterator nodeEnd = iter(journal, _min(entriesIt->virtualPosition + entriesIt->length, length(journal) -
+ length(pattern) + 1));
+ // Move step by step over search region.
+ if (nodeEnd == end(journal))
+ return;
+
+ for (; nodeIter != nodeEnd; ++nodeIter)
+ {
+ // Define compare iterator.
+ TJournalIterator verifyIter = nodeIter;
+ bool isHit = true;
+ // Compare pattern with current search window.
+ for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern, ++verifyIter)
+ {
+ // Comparing the pattern value with the current value of the iterator.
+ if (pattern[posPattern] != getValue(verifyIter))
+ {
+ isHit = false;
+ break;
+ }
+ }
+ // Report hit if found.
+ if (isHit)
+ appendValue(hitTarget, position(nodeIter));
+ }
+}
+//![searchAtBorder]
+
+//![findInPatchNodePart1]
+template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
+void _findInPatchNode(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TJournal const & journal,
+ TPattern const & pattern)
+{
+ typedef typename Iterator<TJournal const, Standard>::Type TJournalIterator;
+//![findInPatchNodePart1]
+
+//![findInPatchNodePart2]
+ // Search for pattern in the insertion node.
+ TJournalIterator patchIter = iter(journal, entriesIt->virtualPosition);
+ TJournalIterator patchEnd = patchIter + _max(0, (int)entriesIt->length - (int)length(pattern) + 1);
+ // Move step by step over search region.
+ for (; patchIter != patchEnd; ++patchIter)
+ {
+//![findInPatchNodePart2]
+//![findInPatchNodePart3]
+ TJournalIterator verifyIter = patchIter;
+ bool isHit = true;
+ // Search for pattern in the insertion node.
+ for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern, ++verifyIter)
+ {
+ // Comparing the pattern value with the current value of the iterator.
+ if (pattern[posPattern] != getValue(verifyIter))
+ {
+ isHit = false;
+ break;
+ }
+ }
+ if (isHit)
+ appendValue(hitTarget, position(patchIter));
+ }
+}
+//![findInPatchNodePart3]
+
+//![findInOriginalNode]
+template <typename TJournalEntriesIterator, typename TPattern>
+void _findInOriginalNode(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TPattern const & pattern,
+ String<int> const & refHits)
+{
+ // Define an Iterator which iterates over the reference hit set.
+ typedef typename Iterator<String<int> const, Standard>::Type THitIterator;
+
+ // Check if hits exist in the reference.
+ if (!empty(refHits))
+ {
+ // Find upper bound to physical position in sorted refHits.
+ THitIterator itHit = std::upper_bound(begin(refHits), end(refHits), (int)entriesIt->physicalPosition);
+ // Make sure we do not miss hits that begin at physical position of current node.
+ if (itHit != begin(refHits) && *(itHit - 1) >= (int)entriesIt->physicalPosition)
+ --itHit;
+ // Store all hits that are found in the region of the reference which is covered by this node.
+ while ((int)*itHit < ((int)entriesIt->physicalPosition + (int)entriesIt->length - (int)length(pattern) + 1) && itHit != end(refHits))
+ {
+ appendValue(hitTarget, entriesIt->virtualPosition + (*itHit - (int)entriesIt->physicalPosition));
+ ++itHit;
+ }
+ }
+}
+//![findInOriginalNode]
+
+//![findPatternInJournalStringPart1]
+template <typename TValue, typename THostSpec, typename TJournalSpec, typename TBufferSpec, typename TPattern>
+void findPatternInJournalString(String<int> & hitTarget,
+ String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const & journal,
+ TPattern const & pattern,
+ String<int> const & refHits)
+{
+ typedef String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const TJournal;
+ typedef typename JournalType<TJournal>::Type TJournalEntries;
+ typedef typename Iterator<TJournalEntries>::Type TJournalEntriesIterator;
+
+ if (length(pattern) > length(journal))
+ return;
+//![findPatternInJournalStringPart1]
+
+//![findPatternInJournalStringPart2]
+ TJournalEntriesIterator it = begin(journal._journalEntries);
+ TJournalEntriesIterator itEnd = findInJournalEntries(journal._journalEntries, length(journal) - length(pattern) + 1) + 1;
+//![findPatternInJournalStringPart2]
+
+//![findPatternInJournalStringPart3]
+ while (it != itEnd)
+ {
+ if (it->segmentSource == SOURCE_ORIGINAL) // Find a possible hit in the current source vertex.
+ {
+ _findInOriginalNode(hitTarget, it, pattern, refHits);
+ }
+ if (it->segmentSource == SOURCE_PATCH) // Search for pattern within the patch node.
+ {
+ _findInPatchNode(hitTarget, it, journal, pattern);
+ }
+ // Scan the border for a possible match.
+ _searchAtBorder(hitTarget, it, journal, pattern);
+ ++it;
+ }
+}
+//![findPatternInJournalStringPart3]
+
+//![findPatternInReference]
+template <typename TString, typename TPattern>
+void findPatternInReference(String<int> & hits,
+ TString const & reference,
+ TPattern const & pattern)
+{
+ // Check whether the pattern fits into the sequence.
+ if (length(pattern) > length(reference))
+ return;
+
+ //
+ for (unsigned pos = 0; pos < length(reference) - length(pattern) + 1; ++pos)
+ {
+ bool isHit = true;
+
+ for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern)
+ {
+ if (pattern[posPattern] != reference[posPattern + pos])
+ {
+ isHit = false;
+ break;
+ }
+ }
+ // Report the position if found a hit.
+ if (isHit)
+ appendValue(hits, pos);
+ }
+}
+//![findPatternInReference]
+
+//![searchPatternPart1]
+template <typename TString, typename TPattern>
+void searchPattern(StringSet<String<int> > & hitSet,
+ StringSet<TString, Owner<JournaledSet> > const & journalSet,
+ TPattern const & pattern)
+{
+ typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
+ typedef typename Host<TJournalSet const>::Type THost;
+
+ // Check for valid initial state.
+ if (empty(host(journalSet)))
+ {
+ std::cout << "No reference set. Aborted search!" << std::endl;
+ return;
+ }
+
+ // Reset the hitSet to avoid phantom hits coming from a previous search.
+ clear(hitSet);
+ resize(hitSet, length(journalSet) + 1);
+//![searchPatternPart1]
+//![searchPatternPart2]
+ // Access the reference sequence.
+ THost & globalRef = host(journalSet);
+ // Search for pattern in the reference sequence.
+ findPatternInReference(hitSet[0], globalRef, pattern);
+//![searchPatternPart2]
+
+//![searchPatternPart3]
+ // Search for pattern in the journaled sequences.
+ for (unsigned i = 0; i < length(journalSet); ++i)
+ findPatternInJournalString(hitSet[i + 1], journalSet[i], pattern, hitSet[0]);
+}
+//![searchPatternPart3]
+
+//![laodAndJoin]
+template <typename TString, typename TSpec>
+inline int
+loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
+ SeqFileIn & databaseFile,
+ JoinConfig<TSpec> const & joinConfig)
+{
+ typedef typename Host<TString>::Type THost;
+
+ clear(journalSet);
+
+ String<char> seqId;
+ THost sequence;
+
+ // No sequences in the fasta file!
+ if (atEnd(databaseFile))
+ {
+ std::cerr << "Empty FASTA file." << std::endl;
+ return -1;
+ }
+ // First read sequence for reference sequence.
+ readRecord(seqId, sequence, databaseFile);
+
+ // We have to create the global reference sequence otherwise we loose the information after this function terminates.
+ createHost(journalSet, sequence);
+
+ // If there are more
+ while (!atEnd(databaseFile))
+ {
+ readRecord(seqId, sequence, databaseFile);
+ appendValue(journalSet, TString(sequence));
+ join(journalSet, length(journalSet) - 1, joinConfig);
+ }
+ return 0;
+}
+//![laodAndJoin]
+
+//![main]
+int main()
+{
+ // Definition of the used types.
+ typedef String<Dna, Alloc<> > TSequence;
+ typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
+ typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
+
+ // Open the stream to the file containing the sequences.
+ CharString seqDatabasePath = "/path/to/your/fasta/file/sequences.fasta";
+ SeqFileIn databaseFile(toCString(seqDatabasePath));
+
+ // Reading each sequence and journal them.
+ TJournaledSet journalSet;
+ JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
+ loadAndJoin(journalSet, databaseFile, joinConfig);
+
+ // Define a pattern and start search.
+ StringSet<String<int> > hitSet;
+ TSequence pattern = "GTGGT";
+ std::cout << "Search for: " << pattern << ":\n";
+ searchPattern(hitSet, journalSet, pattern);
+//![main]
+
+//![printResult]
+ if (empty(hitSet[0]))
+ {
+ std::cout << "No hit in reference " << std::endl;
+ }
+ else
+ {
+ std::cout << "Hit in reference " << " at ";
+ for (unsigned j = 0; j < length(hitSet[0]); ++j)
+ std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
+ }
+ std::cout << std::endl;
+
+ for (unsigned i = 1; i < length(hitSet); ++i)
+ {
+ if (empty(hitSet[i]))
+ {
+ std::cout << "No hit in sequence " << i - 1 << std::endl;
+ }
+ else
+ {
+ std::cout << "Hit in sequence " << i - 1 << " at ";
+ for (unsigned j = 0; j < length(hitSet[i]); ++j)
+ std::cout << hitSet[i][j] << ": " << infix(value(journalSet, i - 1), hitSet[i][j], hitSet[i][j] + length(pattern)) << "\t";
+ }
+ std::cout << std::endl;
+ }
+ return 0;
+}
+//![printResult]
diff --git a/demos/tutorial/data_journaling/example_online_search_assignment1_hint.cpp b/demos/tutorial/data_journaling/example_online_search_assignment1_hint.cpp
new file mode 100644
index 0000000..a24fe31
--- /dev/null
+++ b/demos/tutorial/data_journaling/example_online_search_assignment1_hint.cpp
@@ -0,0 +1,58 @@
+//![main]
+#include <iostream>
+#include <seqan/seq_io.h>
+#include <seqan/journaled_set.h>
+
+using namespace seqan;
+
+template <typename TString, typename TSpec>
+inline int
+loadAndJoin(StringSet<TString, Owner<JournaledSet> > & /*journalSet*/,
+ SeqFileIn & databaseFile,
+ JoinConfig<TSpec> const & /*joinConfig*/)
+{
+ typedef typename Host<TString>::Type THost;
+
+ // [A] Ensure the Journal Set is not occupied by other sequences.
+
+ // Construct the temporary buffers for the read id and sequence.
+ String<char> tempSeqId;
+ THost tempSeq;
+
+ // No sequences in the fasta file!
+ if (atEnd(databaseFile))
+ {
+ std::cerr << "Empty FASTA file." << std::endl;
+ return -1;
+ }
+ // First read sequence for reference sequence.
+ readRecord(tempSeqId, tempSeq, databaseFile);
+
+ // [B] Set the reference sequence to the Journal Set
+
+ // Read remaining sequences.
+ while (!atEnd(databaseFile))
+ {
+ readRecord(tempSeqId, tempSeq, databaseFile);
+ // [C] Append and join the current read sequence.
+ }
+ return 0;
+}
+
+int main()
+{
+ // Definition of the used types.
+ typedef String<Dna, Alloc<> > TSequence;
+ typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
+ typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
+
+ // Open the stream to the file containing the sequences.
+ CharString seqDatabasePath = "/path/to/your/fasta/file/sequences.fasta";
+ SeqFileIn databaseFile(toCString(seqDatabasePath));
+
+ // Reading each sequence and journal them.
+ // [D] Construct Journaled Set and call loadAndJoin
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/data_journaling/example_online_search_assignment2_hint.cpp b/demos/tutorial/data_journaling/example_online_search_assignment2_hint.cpp
new file mode 100644
index 0000000..503ec7b
--- /dev/null
+++ b/demos/tutorial/data_journaling/example_online_search_assignment2_hint.cpp
@@ -0,0 +1,27 @@
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+
+using namespace seqan;
+
+//![findPatternInReferenceHint]
+template <typename TString, typename TPattern>
+void findPatternInReference(String<int> & hits,
+ TString const & reference,
+ TPattern const & pattern)
+{
+ // [A] Check whether pattern fits into the sequence.
+
+ // [B] Iterate over all positions at which the pattern might occur.
+
+ // [C] Evaluate all positions of the pattern until you find a mismatch or you have found a hit.
+
+ // [D] Report begin position at which pattern matches the sequence.
+}
+//![findPatternInReferenceHint]
+
+//![main]
+int main()
+{
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/data_journaling/example_online_search_assignment3_hint.cpp b/demos/tutorial/data_journaling/example_online_search_assignment3_hint.cpp
new file mode 100644
index 0000000..52b9fa2
--- /dev/null
+++ b/demos/tutorial/data_journaling/example_online_search_assignment3_hint.cpp
@@ -0,0 +1,30 @@
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+
+using namespace seqan;
+
+//![findInOriginalNode]
+template <typename TJournalEntriesIterator, typename TPattern>
+void _findInOriginalNode(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TPattern const & pattern,
+ String<int> const & refHits)
+{
+ // [A] Check if hits exist in the reference.
+
+ // [B] Find upper bound to current physical position in sorted refHits using std::upper_bound.
+
+ // [C] Make sure we do not miss hits that begin at physical position of current node.
+
+ // [D] Store all hits that are found in the region of the reference which is covered by this node.
+
+ // [E] Store the correct virtual position and check next hit.
+}
+//![findInOriginalNode]
+
+//![main]
+int main()
+{
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/data_journaling/example_online_search_assignment4_hint.cpp b/demos/tutorial/data_journaling/example_online_search_assignment4_hint.cpp
new file mode 100644
index 0000000..6789819
--- /dev/null
+++ b/demos/tutorial/data_journaling/example_online_search_assignment4_hint.cpp
@@ -0,0 +1,28 @@
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+
+using namespace seqan;
+
+//![searchAtBorder]
+template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
+void _searchAtBorder(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TJournal const & journal,
+ TPattern const & pattern)
+{
+ // [A] Determine first position of the at which pattern crosses the border of current node.
+
+ // [B] Determine last position before pattern exits the current node or reaches the end of the sequence.
+
+ // [C] Move step by step over search region.
+
+ // [D] Scan pattern in current window and report possible hits.
+}
+//![searchAtBorder]
+
+//![main]
+int main()
+{
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/data_journaling/solution_online_search_assignment1.cpp b/demos/tutorial/data_journaling/solution_online_search_assignment1.cpp
new file mode 100644
index 0000000..5ae9b0f
--- /dev/null
+++ b/demos/tutorial/data_journaling/solution_online_search_assignment1.cpp
@@ -0,0 +1,62 @@
+//![main]
+#include <iostream>
+#include <seqan/seq_io.h>
+#include <seqan/journaled_set.h>
+
+using namespace seqan;
+
+template <typename TString, typename TSpec>
+inline int
+loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
+ SeqFileIn & databaseFile,
+ JoinConfig<TSpec> const & joinConfig)
+{
+ typedef typename Host<TString>::Type THost;
+ // [A]
+ clear(journalSet);
+
+ // Construct the temporary buffers for the read id and sequence.
+ String<char> tempSeqId;
+ THost sequence;
+
+ // No sequences in the fasta file!
+ if (atEnd(databaseFile))
+ {
+ std::cerr << "Empty FASTA file." << std::endl;
+ return -1;
+ }
+ // First read sequence for reference sequence.
+ readRecord(tempSeqId, sequence, databaseFile);
+ // [B]
+ createHost(journalSet, sequence); // When using create we copy the reference instead of storing a pointer.
+
+ // Read remaining sequences.
+ while (!atEnd(databaseFile))
+ {
+ readRecord(tempSeqId, sequence, databaseFile);
+ // [C]
+ appendValue(journalSet, TString(sequence)); // First we append the sequence to the set.
+ join(journalSet, length(journalSet) - 1, joinConfig); // Second we join it to the set.
+ }
+ return 0;
+}
+
+int main()
+{
+ // Definition of the used types.
+ typedef String<Dna, Alloc<> > TSequence;
+ typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
+ typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
+
+ // Open the stream to the file containing the sequences.
+ CharString seqDatabasePath = "/path/to/your/fasta/file/sequences.fasta";
+ SeqFileIn databaseFile(toCString(seqDatabasePath));
+
+ // Reading each sequence and journal them.
+ TJournaledSet journalSet;
+ JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
+ loadAndJoin(journalSet, databaseFile, joinConfig);
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/data_journaling/solution_online_search_assignment2.cpp b/demos/tutorial/data_journaling/solution_online_search_assignment2.cpp
new file mode 100644
index 0000000..e202bcf
--- /dev/null
+++ b/demos/tutorial/data_journaling/solution_online_search_assignment2.cpp
@@ -0,0 +1,147 @@
+//![include]
+#include <iostream>
+#include <seqan/seq_io.h>
+#include <seqan/journaled_set.h>
+
+using namespace seqan;
+//![include]
+
+//![findPatternInReference]
+template <typename TString, typename TPattern>
+void findPatternInReference(String<int> & hits,
+ TString const & reference,
+ TPattern const & pattern)
+{
+ // [A] Check whether pattern fits into the sequence.
+ if (length(pattern) > length(reference))
+ return;
+
+ // [B] Iterate over all positions at which the pattern might occur.
+ for (unsigned pos = 0; pos < length(reference) - length(pattern) + 1; ++pos)
+ {
+ bool isHit = true;
+ // [C] Evaluate all positions of the pattern until you find a mismatch or you have found a hit.
+ for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern)
+ {
+ if (pattern[posPattern] != reference[posPattern + pos])
+ {
+ isHit = false;
+ break;
+ }
+ }
+ // [D] Report begin position at which pattern matches the sequence.
+ if (isHit)
+ appendValue(hits, pos);
+ }
+}
+//![findPatternInReference]
+
+//![searchPattern]
+template <typename TString, typename TPattern>
+void searchPattern(StringSet<String<int> > & hitSet,
+ StringSet<TString, Owner<JournaledSet> > const & journalSet,
+ TPattern const & pattern)
+{
+ typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
+ typedef typename Host<TJournalSet const>::Type THost;
+
+ // Check for valid initial state.
+ if (empty(host(journalSet)))
+ {
+ std::cout << "No reference set. Aborted search!" << std::endl;
+ return;
+ }
+
+ // Reset the hitSet to avoid phantom hits coming from a previous search.
+ clear(hitSet);
+ resize(hitSet, length(journalSet) + 1);
+ // Access the reference sequence.
+ THost & globalRef = host(journalSet);
+ // Search for pattern in the reference sequence.
+ findPatternInReference(hitSet[0], globalRef, pattern);
+
+ // Search for pattern in the journaled sequences.
+ for (unsigned i = 0; i < length(journalSet); ++i)
+ {
+// findPatternInJournalString(hitSet[i+1], journalSet[i], pattern, hitSet[0]);
+ }
+}
+//![searchPattern]
+
+//![loadAndJoin]
+template <typename TString, typename TSpec>
+inline int
+loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
+ SeqFileIn & databaseFile,
+ JoinConfig<TSpec> const & joinConfig)
+{
+ typedef typename Host<TString>::Type THost;
+
+ clear(journalSet);
+
+ String<char> seqId;
+ THost sequence;
+
+ // No sequences in the fasta file!
+ if (atEnd(databaseFile))
+ {
+ std::cerr << "Empty FASTA file." << std::endl;
+ return -1;
+ }
+ // First read sequence for reference sequence.
+ readRecord(seqId, sequence, databaseFile);
+
+ // We have to create the global reference sequence otherwise we loose the information after this function terminates.
+ createHost(journalSet, sequence);
+
+ // If there are more
+ while (!atEnd(databaseFile))
+ {
+ readRecord(seqId, sequence, databaseFile);
+ appendValue(journalSet, TString(sequence));
+ join(journalSet, length(journalSet) - 1, joinConfig);
+ }
+ return 0;
+}
+//![loadAndJoin]
+
+//![main]
+int main()
+{
+ // Definition of the used types.
+ typedef String<Dna, Alloc<> > TSequence;
+ typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
+ typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
+
+ // Open the stream to the file containing the sequences.
+ CharString seqDatabasePath = "/path/to/your/fasta/file/sequences.fasta";
+ SeqFileIn databaseFile(toCString(seqDatabasePath));
+
+ // Reading each sequence and journal them.
+ TJournaledSet journalSet;
+ JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
+ loadAndJoin(journalSet, databaseFile, joinConfig);
+
+ // Define a pattern and start search.
+ StringSet<String<int> > hitSet;
+ TSequence pattern = "GTGGT";
+ std::cout << "Search for: " << pattern << ":\n";
+ searchPattern(hitSet, journalSet, pattern);
+//![main]
+
+//![printResult]
+ if (empty(hitSet[0]))
+ {
+ std::cout << "No hit in reference " << std::endl;
+ }
+ else
+ {
+ std::cout << "Hit in reference " << " at ";
+ for (unsigned j = 0; j < length(hitSet[0]); ++j)
+ std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
+ }
+ std::cout << std::endl;
+
+ return 0;
+}
+//![printResult]
diff --git a/demos/tutorial/data_journaling/solution_online_search_assignment3.cpp b/demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
new file mode 100644
index 0000000..5c9df07
--- /dev/null
+++ b/demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
@@ -0,0 +1,222 @@
+//![include]
+#include <iostream>
+#include <seqan/seq_io.h>
+#include <seqan/journaled_set.h>
+
+using namespace seqan;
+//![include]
+
+//![findInOriginalNode]
+template <typename TJournalEntriesIterator, typename TPattern>
+void _findInOriginalNode(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TPattern const & pattern,
+ String<int> const & refHits)
+{
+ // Define an Iterator which iterates over the reference hit set.
+ typedef typename Iterator<String<int> const, Standard>::Type THitIterator;
+
+ // [A] Check if hits exist in the reference.
+ if (!empty(refHits))
+ {
+ // [B] Find upper bound to current physical position in sorted refHits using std::upper_bound.
+ THitIterator itHit = std::upper_bound(begin(refHits), end(refHits), (int)entriesIt->physicalPosition);
+ // [C] Make sure we do not miss hits that begin at physical position of current node.
+ if (itHit != begin(refHits) && *(itHit - 1) >= (int)entriesIt->physicalPosition)
+ --itHit;
+ // [D] Store all hits that are found in the region of the reference which is covered by this node.
+ while ((int)*itHit < ((int)entriesIt->physicalPosition + (int)entriesIt->length - (int)length(pattern) + 1) && itHit != end(refHits))
+ {
+ // [E] Store the correct virtual position and check next hit.
+ appendValue(hitTarget, entriesIt->virtualPosition + (*itHit - (int)entriesIt->physicalPosition));
+ ++itHit;
+ }
+ }
+}
+//![findInOriginalNode]
+
+//![findPatternInJournalString]
+template <typename TValue, typename THostSpec, typename TJournalSpec, typename TBufferSpec, typename TPattern>
+void findPatternInJournalString(String<int> & hitTarget,
+ String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const & journal,
+ TPattern const & pattern,
+ String<int> const & refHits)
+{
+ typedef String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const TJournal;
+ typedef typename JournalType<TJournal>::Type TJournalEntries;
+ typedef typename Iterator<TJournalEntries>::Type TJournalEntriesIterator;
+
+ if (length(pattern) > length(journal))
+ return;
+
+ TJournalEntriesIterator it = begin(journal._journalEntries);
+ TJournalEntriesIterator itEnd = findInJournalEntries(journal._journalEntries, length(journal) - length(pattern) + 1) + 1;
+
+ while (it != itEnd)
+ {
+ if (it->segmentSource == SOURCE_ORIGINAL) // Find a possible hit in the current source vertex.
+ {
+ _findInOriginalNode(hitTarget, it, pattern, refHits);
+ }
+ if (it->segmentSource == SOURCE_PATCH) // Search for pattern within the patch node.
+ { // _findInPatchNode(hitTarget, it, journal, pattern);
+ }
+ // Scan the border for a possible match.
+// _searchAtBorder(hitTarget, it, journal, pattern);
+ ++it;
+ }
+}
+//![findPatternInJournalString]
+
+//![findPatternInReference]
+template <typename TString, typename TPattern>
+void findPatternInReference(String<int> & hits,
+ TString const & reference,
+ TPattern const & pattern)
+{
+ // Check whether the pattern fits into the sequence.
+ if (length(pattern) > length(reference))
+ return;
+
+ //
+ for (unsigned pos = 0; pos < length(reference) - length(pattern) + 1; ++pos)
+ {
+ bool isHit = true;
+
+ for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern)
+ {
+ if (pattern[posPattern] != reference[posPattern + pos])
+ {
+ isHit = false;
+ break;
+ }
+ }
+ // Report the position if found a hit.
+ if (isHit)
+ appendValue(hits, pos);
+ }
+}
+//![findPatternInReference]
+
+//![searchPattern]
+template <typename TString, typename TPattern>
+void searchPattern(StringSet<String<int> > & hitSet,
+ StringSet<TString, Owner<JournaledSet> > const & journalSet,
+ TPattern const & pattern)
+{
+ typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
+ typedef typename Host<TJournalSet const>::Type THost;
+
+ // Check for valid initial state.
+ if (empty(host(journalSet)))
+ {
+ std::cout << "No reference set. Aborted search!" << std::endl;
+ return;
+ }
+
+ // Reset the hitSet to avoid phantom hits coming from a previous search.
+ clear(hitSet);
+ resize(hitSet, length(journalSet) + 1);
+ // Access the reference sequence.
+ THost & globalRef = host(journalSet);
+ // Search for pattern in the reference sequence.
+ findPatternInReference(hitSet[0], globalRef, pattern);
+ // Search for pattern in the journaled sequences.
+ for (unsigned i = 0; i < length(journalSet); ++i)
+ findPatternInJournalString(hitSet[i + 1], journalSet[i], pattern, hitSet[0]);
+}
+//![searchPattern]
+
+//![laodAndJoin]
+template <typename TString, typename TSpec>
+inline int
+loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
+ SeqFileIn & databaseFile,
+ JoinConfig<TSpec> const & joinConfig)
+{
+ typedef typename Host<TString>::Type THost;
+
+ clear(journalSet);
+
+ String<char> seqId;
+ THost sequence;
+
+ // No sequences in the fasta file!
+ if (atEnd(databaseFile))
+ {
+ std::cerr << "Empty FASTA file." << std::endl;
+ return -1;
+ }
+ // First read sequence for reference sequence.
+ readRecord(seqId, sequence, databaseFile);
+
+ // We have to create the global reference sequence otherwise we loose the information after this function terminates.
+ createHost(journalSet, sequence);
+
+ // If there are more
+ while (!atEnd(databaseFile))
+ {
+ readRecord(seqId, sequence, databaseFile);
+ appendValue(journalSet, TString(sequence));
+ join(journalSet, length(journalSet) - 1, joinConfig);
+ }
+ return 0;
+}
+//![laodAndJoin]
+
+//![main]
+int main()
+{
+ // Definition of the used types.
+ typedef String<Dna, Alloc<> > TSequence;
+ typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
+ typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
+
+ // Open the stream to the file containing the sequences.
+ CharString seqDatabasePath = "/path/to/your/fasta/file/sequences.fasta";
+ SeqFileIn databaseFile(toCString(seqDatabasePath));
+
+ // Reading each sequence and journal them.
+ TJournaledSet journalSet;
+ JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
+ loadAndJoin(journalSet, databaseFile, joinConfig);
+
+ // Define a pattern and start search.
+ StringSet<String<int> > hitSet;
+ TSequence pattern = "GTGGT";
+ std::cout << "Search for: " << pattern << ":\n";
+ searchPattern(hitSet, journalSet, pattern);
+//![main]
+
+//![printResultReference]
+ if (empty(hitSet[0]))
+ {
+ std::cout << "No hit in reference " << std::endl;
+ }
+ else
+ {
+ std::cout << "Hit in reference " << " at ";
+ for (unsigned j = 0; j < length(hitSet[0]); ++j)
+ std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
+ }
+ std::cout << std::endl;
+//![printResultReference]
+
+//![printResultJournalSequence]
+ for (unsigned i = 1; i < length(hitSet); ++i)
+ {
+ if (empty(hitSet[i]))
+ {
+ std::cout << "No hit in sequence " << i - 1 << std::endl;
+ }
+ else
+ {
+ std::cout << "Hit in sequence " << i - 1 << " at ";
+ for (unsigned j = 0; j < length(hitSet[i]); ++j)
+ std::cout << hitSet[i][j] << ": " << infix(value(journalSet, i - 1), hitSet[i][j], hitSet[i][j] + length(pattern)) << "\t";
+ }
+ std::cout << std::endl;
+ }
+ return 0;
+}
+//![printResultJournalSequence]
diff --git a/demos/tutorial/data_journaling/solution_online_search_assignment4.cpp b/demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
new file mode 100644
index 0000000..6cdac07
--- /dev/null
+++ b/demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
@@ -0,0 +1,294 @@
+//![include]
+#include <iostream>
+#include <seqan/seq_io.h>
+#include <seqan/journaled_set.h>
+
+using namespace seqan;
+//![include]
+
+//![searchAtBorder]
+template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
+void _searchAtBorder(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TJournal const & journal,
+ TPattern const & pattern)
+{
+ typedef typename Iterator<TJournal const, Standard>::Type TJournalIterator;
+
+ // [A] Determine first position of the at which pattern crosses the border of current node.
+ TJournalIterator nodeIter = iter(journal, entriesIt->virtualPosition + _max(0, (int)entriesIt->length - (int)length(pattern) + 1));
+ // [B] Determine last position before pattern exits the current node or reaches the end of the sequence.
+ TJournalIterator nodeEnd = iter(journal, _min(entriesIt->virtualPosition + entriesIt->length, length(journal) - length(pattern) + 1));
+ if (nodeEnd == end(journal))
+ return;
+
+ // [C] Move step by step over search region.
+ for (; nodeIter != nodeEnd; ++nodeIter)
+ {
+ // [D] Scan pattern in current window and report possible hits.
+ TJournalIterator verifyIter = nodeIter;
+ bool isHit = true;
+ // Compare pattern with current search window.
+ for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern, ++verifyIter)
+ {
+ // Comparing the pattern value with the current value of the iterator.
+ if (pattern[posPattern] != getValue(verifyIter))
+ {
+ isHit = false;
+ break;
+ }
+ }
+ // Report hit if found.
+ if (isHit)
+ appendValue(hitTarget, position(nodeIter));
+ }
+}
+//![searchAtBorder]
+
+//![findInPatchNode]
+template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
+void _findInPatchNode(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TJournal const & journal,
+ TPattern const & pattern)
+{
+ typedef typename Iterator<TJournal const, Standard>::Type TJournalIterator;
+
+ // Search for pattern in the insertion node.
+ TJournalIterator patchIter = iter(journal, entriesIt->virtualPosition);
+ TJournalIterator patchEnd = patchIter + _max(0, (int)entriesIt->length - (int)length(pattern) + 1);
+ // Move step by step over search region.
+ for (; patchIter != patchEnd; ++patchIter)
+ {
+ TJournalIterator verifyIter = patchIter;
+ bool isHit = true;
+ // Search for pattern in the insertion node.
+ for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern, ++verifyIter)
+ {
+ // Comparing the pattern value with the current value of the iterator.
+ if (pattern[posPattern] != getValue(verifyIter))
+ {
+ isHit = false;
+ break;
+ }
+ }
+ if (isHit)
+ appendValue(hitTarget, position(patchIter));
+ }
+}
+//![findInPatchNode]
+
+//![findInOriginalNode]
+template <typename TJournalEntriesIterator, typename TPattern>
+void _findInOriginalNode(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TPattern const & pattern,
+ String<int> const & refHits)
+{
+ // Define an Iterator which iterates over the reference hit set.
+ typedef typename Iterator<String<int> const, Standard>::Type THitIterator;
+
+ // Check if hits exist in the reference.
+ if (!empty(refHits))
+ {
+ // Find upper bound to physical position in sorted refHits.
+ THitIterator itHit = std::upper_bound(begin(refHits), end(refHits), (int)entriesIt->physicalPosition);
+ // Make sure we do not miss hits that begin at physical position of current node.
+ if (itHit != begin(refHits) && *(itHit - 1) >= (int)entriesIt->physicalPosition)
+ --itHit;
+ // Store all hits that are found in the region of the reference which is covered by this node.
+ while ((int)*itHit < ((int)entriesIt->physicalPosition + (int)entriesIt->length - (int)length(pattern) + 1) && itHit != end(refHits))
+ {
+ appendValue(hitTarget, entriesIt->virtualPosition + (*itHit - (int)entriesIt->physicalPosition));
+ ++itHit;
+ }
+ }
+}
+//![findInOriginalNode]
+
+//![findPatternInJournalStringPart1]
+template <typename TValue, typename THostSpec, typename TJournalSpec, typename TBufferSpec, typename TPattern>
+void findPatternInJournalString(String<int> & hitTarget,
+ String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const & journal,
+ TPattern const & pattern,
+ String<int> const & refHits)
+{
+ typedef String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const TJournal;
+ typedef typename JournalType<TJournal>::Type TJournalEntries;
+ typedef typename Iterator<TJournalEntries>::Type TJournalEntriesIterator;
+
+ if (length(pattern) > length(journal))
+ return;
+
+ TJournalEntriesIterator it = begin(journal._journalEntries);
+ TJournalEntriesIterator itEnd = findInJournalEntries(journal._journalEntries, length(journal) - length(pattern) + 1) + 1;
+
+ while (it != itEnd)
+ {
+ if (it->segmentSource == SOURCE_ORIGINAL) // Find a possible hit in the current source vertex.
+ {
+ _findInOriginalNode(hitTarget, it, pattern, refHits);
+ }
+ if (it->segmentSource == SOURCE_PATCH) // Search for pattern within the patch node.
+ {
+ _findInPatchNode(hitTarget, it, journal, pattern);
+ }
+ // Scan the border for a possible match.
+ _searchAtBorder(hitTarget, it, journal, pattern);
+ ++it;
+ }
+}
+//![findPatternInJournalStringPart1]
+
+//![findPatternInReference]
+template <typename TString, typename TPattern>
+void findPatternInReference(String<int> & hits,
+ TString const & reference,
+ TPattern const & pattern)
+{
+ // Check whether the pattern fits into the sequence.
+ if (length(pattern) > length(reference))
+ return;
+
+ //
+ for (unsigned pos = 0; pos < length(reference) - length(pattern) + 1; ++pos)
+ {
+ bool isHit = true;
+
+ for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern)
+ {
+ if (pattern[posPattern] != reference[posPattern + pos])
+ {
+ isHit = false;
+ break;
+ }
+ }
+ // Report the position if found a hit.
+ if (isHit)
+ appendValue(hits, pos);
+ }
+}
+//![findPatternInReference]
+
+//![searchPatternPart1]
+template <typename TString, typename TPattern>
+void searchPattern(StringSet<String<int> > & hitSet,
+ StringSet<TString, Owner<JournaledSet> > const & journalSet,
+ TPattern const & pattern)
+{
+ typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
+ typedef typename Host<TJournalSet const>::Type THost;
+
+ // Check for valid initial state.
+ if (empty(host(journalSet)))
+ {
+ std::cout << "No reference set. Aborted search!" << std::endl;
+ return;
+ }
+
+ // Reset the hitSet to avoid phantom hits coming from a previous search.
+ clear(hitSet);
+ resize(hitSet, length(journalSet) + 1);
+ // Access the reference sequence.
+ THost & globalRef = host(journalSet);
+ // Search for pattern in the reference sequence.
+ findPatternInReference(hitSet[0], globalRef, pattern);
+
+ // Search for pattern in the journaled sequences.
+ for (unsigned i = 0; i < length(journalSet); ++i)
+ findPatternInJournalString(hitSet[i + 1], journalSet[i], pattern, hitSet[0]);
+}
+//![searchPatternPart1]
+
+//![laodAndJoin]
+template <typename TString, typename TSpec>
+inline int
+loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
+ SeqFileIn & databaseFile,
+ JoinConfig<TSpec> const & joinConfig)
+{
+ typedef typename Host<TString>::Type THost;
+
+ clear(journalSet);
+
+ String<char> seqId;
+ THost sequence;
+
+ // No sequences in the fasta file!
+ if (atEnd(databaseFile))
+ {
+ std::cerr << "Empty FASTA file." << std::endl;
+ return -1;
+ }
+ // First read sequence for reference sequence.
+ readRecord(seqId, sequence, databaseFile);
+
+ // We have to create the global reference sequence otherwise we loose the information after this function terminates.
+ createHost(journalSet, sequence);
+
+ // If there are more
+ while (!atEnd(databaseFile))
+ {
+ readRecord(seqId, sequence, databaseFile);
+ appendValue(journalSet, TString(sequence));
+ join(journalSet, length(journalSet) - 1, joinConfig);
+ }
+ return 0;
+}
+//![laodAndJoin]
+
+//![main]
+int main()
+{
+ // Definition of the used types.
+ typedef String<Dna, Alloc<> > TSequence;
+ typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
+ typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
+
+ // Open the stream to the file containing the sequences.
+ CharString seqDatabasePath = "/path/to/your/fasta/file/sequences.fasta";
+ SeqFileIn databaseFile(toCString(seqDatabasePath));
+
+ // Reading each sequence and journal them.
+ TJournaledSet journalSet;
+ JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
+ loadAndJoin(journalSet, databaseFile, joinConfig);
+
+ // Define a pattern and start search.
+ StringSet<String<int> > hitSet;
+ TSequence pattern = "GTGGT";
+ std::cout << "Search for: " << pattern << ":\n";
+ searchPattern(hitSet, journalSet, pattern);
+//![main]
+
+//![printResult]
+ if (empty(hitSet[0]))
+ {
+ std::cout << "No hit in reference " << std::endl;
+ }
+ else
+ {
+ std::cout << "Hit in reference " << " at ";
+ for (unsigned j = 0; j < length(hitSet[0]); ++j)
+ std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
+ }
+ std::cout << std::endl;
+
+ for (unsigned i = 1; i < length(hitSet); ++i)
+ {
+ if (empty(hitSet[i]))
+ {
+ std::cout << "No hit in sequence " << i - 1 << std::endl;
+ }
+ else
+ {
+ std::cout << "Hit in sequence " << i - 1 << " at ";
+ for (unsigned j = 0; j < length(hitSet[i]); ++j)
+ std::cout << hitSet[i][j] << ": " << infix(value(journalSet, i - 1), hitSet[i][j], hitSet[i][j] + length(pattern)) << "\t";
+ }
+ std::cout << std::endl;
+ }
+
+ return 0;
+}
+//![printResult]
diff --git a/demos/tutorial/data_journaling/solution_online_search_finder.cpp b/demos/tutorial/data_journaling/solution_online_search_finder.cpp
new file mode 100644
index 0000000..c8775a8
--- /dev/null
+++ b/demos/tutorial/data_journaling/solution_online_search_finder.cpp
@@ -0,0 +1,251 @@
+//![include]
+#include <iostream>
+#include <seqan/find.h>
+#include <seqan/seq_io.h>
+#include <seqan/journaled_set.h>
+
+using namespace seqan;
+//![include]
+
+//![searchAtBorder]
+template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
+void _searchAtBorder(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TJournal const & journal,
+ TPattern const & needle)
+{
+ typedef typename Position<TJournal>::Type TPosition;
+
+ // Define region before the border to the next node to search for the pattern.
+ TPosition infixBegin = entriesIt->virtualPosition + _max(0, (int)entriesIt->length - (int)length(needle) + 1);
+ TPosition infixEnd = _min(length(journal), entriesIt->virtualPosition + entriesIt->length + length(needle) - 1);
+
+ TPattern tmpInsBuffer = infix(journal, infixBegin, infixEnd);
+ Finder<TPattern const> finder(tmpInsBuffer);
+ Pattern<TPattern, Horspool> pattern(needle);
+ while (find(finder, pattern))
+ {
+ appendValue(hitTarget, infixBegin + beginPosition(finder));
+ }
+}
+//![searchAtBorder]
+
+//![findInPatchNodePart1]
+template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
+void _findInPatchNode(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TJournal const & journal,
+ TPattern const & needle)
+{
+ typedef typename Position<TJournal>::Type TPosition;
+
+ TPosition infixBegin = entriesIt->virtualPosition;
+ TPosition infixEnd = entriesIt->virtualPosition + entriesIt->length;
+
+ TPattern tmpInsBuffer = infix(journal, infixBegin, infixEnd);
+ Finder<TPattern const> finder(tmpInsBuffer);
+ Pattern<TPattern, Horspool> pattern(needle);
+
+ while (find(finder, pattern))
+ appendValue(hitTarget, entriesIt->virtualPosition + beginPosition(finder));
+}
+//![findInPatchNodePart1]
+
+//![findInOriginalNode]
+template <typename TJournalEntriesIterator, typename TPattern>
+void _findInOriginalNode(String<int> & hitTarget,
+ TJournalEntriesIterator & entriesIt,
+ TPattern const & pattern,
+ String<int> const & refHits)
+{
+ // Define an Iterator which iterates over the reference hit set.
+ typedef typename Iterator<String<int> const, Standard>::Type THitIterator;
+
+ // Check if hits exist in the reference.
+ if (!empty(refHits))
+ {
+ // Find upper bound to physical position in sorted refHits.
+ THitIterator itHit = std::upper_bound(begin(refHits), end(refHits), (int)entriesIt->physicalPosition);
+ // Make sure we do not miss hits that begin at physical position of current node.
+ if (itHit != begin(refHits) && *(itHit - 1) >= (int)entriesIt->physicalPosition)
+ --itHit;
+ // Store all hits that are found in the region of the reference which is covered by this node.
+ while ((int)*itHit < ((int)entriesIt->physicalPosition + (int)entriesIt->length - (int)length(pattern) + 1) && itHit != end(refHits))
+ {
+ appendValue(hitTarget, entriesIt->virtualPosition + (*itHit - (int)entriesIt->physicalPosition));
+ ++itHit;
+ }
+ }
+}
+//![findInOriginalNode]
+
+//![findPatternInJournalString]
+template <typename TValue, typename THostSpec, typename TJournalSpec, typename TBufferSpec, typename TPattern>
+void findPatternInJournalString(String<int> & hitTarget,
+ String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const & journal,
+ TPattern const & pattern,
+ String<int> const & refHits)
+{
+ typedef String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const TJournal;
+ typedef typename JournalType<TJournal>::Type TJournalEntries;
+ typedef typename Iterator<TJournalEntries>::Type TJournalEntriesIterator;
+
+ if (length(pattern) > length(journal))
+ return;
+
+ TJournalEntriesIterator it = begin(journal._journalEntries);
+ TJournalEntriesIterator itEnd = findInJournalEntries(journal._journalEntries, length(journal) - length(pattern) + 1) + 1;
+
+ while (it != itEnd)
+ {
+ if (it->segmentSource == SOURCE_ORIGINAL) // Find a possible hit in the current source vertex.
+ {
+ _findInOriginalNode(hitTarget, it, pattern, refHits);
+ }
+ if (it->segmentSource == SOURCE_PATCH) // Search for pattern within the patch node.
+ {
+ _findInPatchNode(hitTarget, it, journal, pattern);
+ }
+ // Scan the border for a possible match.
+ _searchAtBorder(hitTarget, it, journal, pattern);
+ ++it;
+ }
+}
+//![findPatternInJournalString]
+
+//![findPatternInReference]
+template <typename TString>
+void findPatternInReference(String<int> & hits,
+ TString const & reference,
+ TString const & needle)
+{
+ // Check whether the pattern fits into the sequence.
+ if (length(needle) > length(reference))
+ return;
+
+ Finder<TString const> finder(reference);
+ Pattern<TString, Horspool> pattern(needle);
+ while (find(finder, pattern))
+ appendValue(hits, beginPosition(finder));
+}
+//![findPatternInReference]
+
+//![searchPatternPart1]
+template <typename TString, typename TPattern>
+void searchPattern(StringSet<String<int> > & hitSet,
+ StringSet<TString, Owner<JournaledSet> > const & journalSet,
+ TPattern const & pattern)
+{
+ typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
+ typedef typename Host<TJournalSet const>::Type THost;
+
+ // Check for valid initial state.
+ if (empty(host(journalSet)))
+ {
+ std::cout << "No reference set. Aborted search!" << std::endl;
+ return;
+ }
+
+ // Reset the hitSet to avoid phantom hits coming from a previous search.
+ clear(hitSet);
+ resize(hitSet, length(journalSet) + 1);
+ // Access the reference sequence.
+ THost & globalRef = host(journalSet);
+ // Search for pattern in the reference sequence.
+ findPatternInReference(hitSet[0], globalRef, pattern);
+
+ // Search for pattern in the journaled sequences.
+ for (unsigned i = 0; i < length(journalSet); ++i)
+ findPatternInJournalString(hitSet[i + 1], journalSet[i], pattern, hitSet[0]);
+}
+//![searchPatternPart1]
+
+//![laodAndJoin]
+template <typename TString, typename TSpec>
+inline int
+loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
+ SeqFileIn & databaseFile,
+ JoinConfig<TSpec> const & joinConfig)
+{
+ typedef typename Host<TString>::Type THost;
+
+ clear(journalSet);
+
+ String<char> seqId;
+ THost sequence;
+
+ // No sequences in the fasta file!
+ if (atEnd(databaseFile))
+ {
+ std::cerr << "Empty FASTA file." << std::endl;
+ return -1;
+ }
+ // First read sequence for reference sequence.
+ readRecord(seqId, sequence, databaseFile);
+ // We have to create the global reference sequence otherwise we loose the information after this function terminates.
+ createHost(journalSet, sequence);
+
+ // If there are more
+ while (!atEnd(databaseFile))
+ {
+ readRecord(seqId, sequence, databaseFile);
+ appendValue(journalSet, TString(sequence));
+ join(journalSet, length(journalSet) - 1, joinConfig);
+ }
+ return 0;
+}
+//![laodAndJoin]
+
+//![main]
+int main()
+{
+ // Definition of the used types.
+ typedef String<Dna, Alloc<> > TSequence;
+ typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
+ typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
+
+ // Open the stream to the file containing the sequences.
+ CharString seqDatabasePath = "/path/to/your/fasta/file/sequences.fasta";
+ SeqFileIn databaseFile(toCString(seqDatabasePath));
+
+ // Reading each sequence and journal them.
+ TJournaledSet journalSet;
+ JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
+ loadAndJoin(journalSet, databaseFile, joinConfig);
+
+ // Define a pattern and start search.
+ StringSet<String<int> > hitSet;
+ TSequence pattern = "GTGGT";
+ std::cout << "Search for: " << pattern << "\n";
+ searchPattern(hitSet, journalSet, pattern);
+
+
+ if (empty(hitSet[0]))
+ {
+ std::cout << "No hit in reference " << std::endl;
+ }
+ else
+ {
+ std::cout << "Hit in reference " << " at ";
+ for (unsigned j = 0; j < length(hitSet[0]); ++j)
+ std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
+ }
+ std::cout << std::endl;
+
+ for (unsigned i = 1; i < length(hitSet); ++i)
+ {
+ if (empty(hitSet[i]))
+ {
+ std::cout << "No hit in sequence " << i - 1 << std::endl;
+ }
+ else
+ {
+ std::cout << "Hit in sequence " << i - 1 << " at ";
+ for (unsigned j = 0; j < length(hitSet[i]); ++j)
+ std::cout << hitSet[i][j] << ": " << infix(value(journalSet, i - 1), hitSet[i][j], hitSet[i][j] + length(pattern)) << "\t";
+ }
+ std::cout << std::endl;
+ }
+ return 0;
+}
+//![main]
diff --git a/demos/unassigned_or_unused/tutorial_file_io/example1.cpp b/demos/tutorial/file_io/example1.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_file_io/example1.cpp
rename to demos/tutorial/file_io/example1.cpp
diff --git a/demos/unassigned_or_unused/tutorial_file_io/mmap_string_example.cpp b/demos/tutorial/file_io/mmap_string_example.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_file_io/mmap_string_example.cpp
rename to demos/tutorial/file_io/mmap_string_example.cpp
diff --git a/demos/unassigned_or_unused/tutorial_file_io/solution1.cpp b/demos/tutorial/file_io/solution1.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_file_io/solution1.cpp
rename to demos/tutorial/file_io/solution1.cpp
diff --git a/demos/unassigned_or_unused/tutorial_file_io/solution2.cpp b/demos/tutorial/file_io/solution2.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_file_io/solution2.cpp
rename to demos/tutorial/file_io/solution2.cpp
diff --git a/demos/unassigned_or_unused/tutorial_file_io/solution3.cpp b/demos/tutorial/file_io/solution3.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_file_io/solution3.cpp
rename to demos/tutorial/file_io/solution3.cpp
diff --git a/demos/unassigned_or_unused/tutorial_file_io/stream_compression_formats.cpp b/demos/tutorial/file_io/stream_compression_formats.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_file_io/stream_compression_formats.cpp
rename to demos/tutorial/file_io/stream_compression_formats.cpp
diff --git a/demos/tutorial/file_io_overview/example.bam b/demos/tutorial/file_io_overview/example.bam
deleted file mode 100644
index 782c43e..0000000
Binary files a/demos/tutorial/file_io_overview/example.bam and /dev/null differ
diff --git a/demos/tutorial/file_io_overview/example.sam b/demos/tutorial/file_io_overview/example.sam
deleted file mode 100644
index 93d2747..0000000
--- a/demos/tutorial/file_io_overview/example.sam
+++ /dev/null
@@ -1,9 +0,0 @@
- at HD VN:1.3 SO:coordinate
- at SQ SN:ref LN:45
- at SQ SN:ref2 LN:40
-r001 163 ref 7 30 8M4I4M1D3M = 37 39 TTAGATAAAGAGGATACTG XX:B:S,12561,2,20,112
-r002 0 ref 9 30 1S2I6M1P1I1P1I4M2I * 0 0 AAAAGATAAGGGATAAA
-r003 0 ref 9 30 5H6M * 0 0 AGCTAA
-r004 0 ref 16 30 6M14N1I5M * 0 0 ATAGCTCTCAGC
-r003 16 ref 29 30 6H5M * 0 0 TAGGC
-r001 83 ref 37 30 9M = 7 -39 CAGCGCCAT
diff --git a/demos/tutorial/file_io_overview/example1.cpp b/demos/tutorial/file_io_overview/example1.cpp
deleted file mode 100644
index 47f0e67..0000000
--- a/demos/tutorial/file_io_overview/example1.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//![include]
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main()
-{
-//![include]
-//![ctor]
- // Open input BAM file, BamFileIn supports both SAM and BAM files.
- CharString bamFileInName = getAbsolutePath("/demos/tutorial/file_io_overview/example.bam");
- CharString samFileOutName = getAbsolutePath("/demos/tutorial/file_io_overview/example.sam");
- BamFileIn bamFileIn(toCString(bamFileInName));
-//![ctor]
-
-//![open]
- // Open output SAM file by passing the context of bamFileIn and the filename to open.
- BamFileOut samFileOut(context(bamFileIn), toCString(samFileOutName));
-//![open]
-
-//![header]
- // Copy header.
- BamHeader header;
- readHeader(header, bamFileIn);
- writeHeader(samFileOut, header);
-//![header]
-
-//![records]
- // Copy all records.
- BamAlignmentRecord record;
- while (!atEnd(bamFileIn))
- {
- readRecord(record, bamFileIn);
- writeRecord(samFileOut, record);
- }
-
- return 0;
-}
-//![records]
diff --git a/demos/tutorial/file_io_overview/example1.cpp.stdout b/demos/tutorial/file_io_overview/example1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/file_io_overview/solution1.cpp b/demos/tutorial/file_io_overview/solution1.cpp
deleted file mode 100644
index aaf2ca8..0000000
--- a/demos/tutorial/file_io_overview/solution1.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main(int argc, char const ** argv)
-{
- CharString bamFileInName = getAbsolutePath("/demos/tutorial/file_io_overview/example.bam");
- CharString samFileOutName = getAbsolutePath("/demos/tutorial/file_io_overview/example.sam");
-
- // Open input BAM file.
- BamFileIn bamFileIn;
- BamHeader header;
- if (!open(bamFileIn, toCString(bamFileInName)))
- {
- std::cerr << "ERROR: could not open input file " << bamFileInName << ".\n";
- return 1;
- }
-
- // Open output SAM file.
- BamFileOut samFileOut(context(bamFileIn), toCString(samFileOutName));
-
- // Copy header.
- try
- {
- readHeader(header, bamFileIn);
- writeHeader(samFileOut, header);
- }
- catch (IOError const & e)
- {
- std::cerr << "ERROR: could not copy header. " << e.what() << "\n";
- }
-
- // Copy all records.
- BamAlignmentRecord record;
- while (!atEnd(bamFileIn))
- {
- try
- {
- readRecord(record, bamFileIn);
- writeRecord(samFileOut, record);
- }
- catch (IOError const & e)
- {
- std::cerr << "ERROR: could not copy record. " << e.what() << "\n";
- }
- }
-
- return 0;
-}
diff --git a/demos/tutorial/file_io_overview/solution1.cpp.stdout b/demos/tutorial/file_io_overview/solution1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/file_io_overview/solution2.cpp b/demos/tutorial/file_io_overview/solution2.cpp
deleted file mode 100644
index 5010a4b..0000000
--- a/demos/tutorial/file_io_overview/solution2.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main(int argc, char const ** argv)
-{
- CharString bamFileInName = getAbsolutePath("/demos/tutorial/file_io_overview/example.bam");
- CharString samFileOutName = getAbsolutePath("/demos/tutorial/file_io_overview/example.sam");
-
- // Open input BAM file.
- BamFileIn bamFileIn;
- if (!open(bamFileIn, toCString(bamFileInName)))
- {
- std::cerr << "ERROR: could not open input file " << bamFileInName << ".\n";
- return 1;
- }
-
- // Open output SAM file.
- BamFileOut samFileOut(context(bamFileIn), toCString(samFileOutName));
- // Copy header.
- BamHeader header;
- try
- {
- readHeader(header, bamFileIn);
- writeHeader(samFileOut, header);
- }
- catch (ParseError const & e)
- {
- std::cerr << "ERROR: input header is badly formatted. " << e.what() << "\n";
- }
- catch (IOError const & e)
- {
- std::cerr << "ERROR: could not copy header. " << e.what() << "\n";
- }
-
- // Copy all records.
- BamAlignmentRecord record;
- while (!atEnd(bamFileIn))
- {
- try
- {
- readRecord(record, bamFileIn);
- writeRecord(samFileOut, record);
- }
- catch (ParseError const & e)
- {
- std::cerr << "ERROR: input record is badly formatted. " << e.what() << "\n";
- }
- catch (IOError const & e)
- {
- std::cerr << "ERROR: could not copy record. " << e.what() << "\n";
- }
- }
-
- return 0;
-}
diff --git a/demos/tutorial/file_io_overview/solution2.cpp.stdout b/demos/tutorial/file_io_overview/solution2.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/file_io_overview/solution3.cpp b/demos/tutorial/file_io_overview/solution3.cpp
deleted file mode 100644
index 1c79bae..0000000
--- a/demos/tutorial/file_io_overview/solution3.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main(int argc, char const ** argv)
-{
- CharString bamFileInName = getAbsolutePath("/demos/tutorial/file_io_overview/example.bam");
-
- // Open input BAM file.
- BamFileIn bamFileIn;
- if (!open(bamFileIn, toCString(bamFileInName)))
- {
- std::cerr << "ERROR: could not open input file " << bamFileInName << ".\n";
- return 1;
- }
-
- // Open output SAM which is the standard output.
- BamFileOut samFileOut(context(bamFileIn), std::cout, Sam());
-
- // Copy header.
- BamHeader header;
- try
- {
- readHeader(header, bamFileIn);
- writeHeader(samFileOut, header);
- }
- catch (ParseError const & e)
- {
- std::cerr << "ERROR: input header is badly formatted. " << e.what() << "\n";
- }
- catch (IOError const & e)
- {
- std::cerr << "ERROR: could not copy header. " << e.what() << "\n";
- }
-
- // Copy all records.
- BamAlignmentRecord record;
- while (!atEnd(bamFileIn))
- {
- try
- {
- readRecord(record, bamFileIn);
- writeRecord(samFileOut, record);
- }
- catch (ParseError const & e)
- {
- std::cerr << "ERROR: input record is badly formatted. " << e.what() << "\n";
- }
- catch (IOError const & e)
- {
- std::cerr << "ERROR: could not copy record. " << e.what() << "\n";
- }
- }
-
- return 0;
-}
diff --git a/demos/tutorial/file_io_overview/solution3.cpp.stdout b/demos/tutorial/file_io_overview/solution3.cpp.stdout
deleted file mode 100644
index 93d2747..0000000
--- a/demos/tutorial/file_io_overview/solution3.cpp.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
- at HD VN:1.3 SO:coordinate
- at SQ SN:ref LN:45
- at SQ SN:ref2 LN:40
-r001 163 ref 7 30 8M4I4M1D3M = 37 39 TTAGATAAAGAGGATACTG XX:B:S,12561,2,20,112
-r002 0 ref 9 30 1S2I6M1P1I1P1I4M2I * 0 0 AAAAGATAAGGGATAAA
-r003 0 ref 9 30 5H6M * 0 0 AGCTAA
-r004 0 ref 16 30 6M14N1I5M * 0 0 ATAGCTCTCAGC
-r003 16 ref 29 30 6H5M * 0 0 TAGGC
-r001 83 ref 37 30 9M = 7 -39 CAGCGCCAT
diff --git a/demos/tutorial/find/CMakeLists.txt b/demos/tutorial/find/CMakeLists.txt
new file mode 100644
index 0000000..8a97c63
--- /dev/null
+++ b/demos/tutorial/find/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_find)
+
+seqan_setup_apps(demos_tutorials_find)
+seqan_add_all_executables(demos_tutorials_find tutorial_)
diff --git a/demos/tutorial/pattern_matching/find_approx.cpp b/demos/tutorial/find/find_approx.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/find_approx.cpp
rename to demos/tutorial/find/find_approx.cpp
diff --git a/demos/tutorial/pattern_matching/assignment1.cpp b/demos/tutorial/find/find_assignment1.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/assignment1.cpp
rename to demos/tutorial/find/find_assignment1.cpp
diff --git a/demos/tutorial/pattern_matching/assignment1_solution.cpp b/demos/tutorial/find/find_assignment1_solution.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/assignment1_solution.cpp
rename to demos/tutorial/find/find_assignment1_solution.cpp
diff --git a/demos/tutorial/pattern_matching/assignment2.cpp b/demos/tutorial/find/find_assignment2.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/assignment2.cpp
rename to demos/tutorial/find/find_assignment2.cpp
diff --git a/demos/tutorial/pattern_matching/assignment2_solution.cpp b/demos/tutorial/find/find_assignment2_solution.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/assignment2_solution.cpp
rename to demos/tutorial/find/find_assignment2_solution.cpp
diff --git a/demos/tutorial/pattern_matching/assignment3.cpp b/demos/tutorial/find/find_assignment3.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/assignment3.cpp
rename to demos/tutorial/find/find_assignment3.cpp
diff --git a/demos/tutorial/pattern_matching/assignment3_solution.cpp b/demos/tutorial/find/find_assignment3_solution.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/assignment3_solution.cpp
rename to demos/tutorial/find/find_assignment3_solution.cpp
diff --git a/demos/tutorial/pattern_matching/find_exact.cpp b/demos/tutorial/find/find_exact.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/find_exact.cpp
rename to demos/tutorial/find/find_exact.cpp
diff --git a/demos/tutorial/pattern_matching/find_index.cpp b/demos/tutorial/find/find_index.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/find_index.cpp
rename to demos/tutorial/find/find_index.cpp
diff --git a/demos/tutorial/pattern_matching/find_index_multiple.cpp b/demos/tutorial/find/find_index_multiple.cpp
similarity index 100%
rename from demos/tutorial/pattern_matching/find_index_multiple.cpp
rename to demos/tutorial/find/find_index_multiple.cpp
diff --git a/demos/tutorial/a_first_example/basic_code.cpp b/demos/tutorial/first_steps/basic_code.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/basic_code.cpp
rename to demos/tutorial/first_steps/basic_code.cpp
diff --git a/demos/tutorial/a_first_example/basic_code_detailed.cpp b/demos/tutorial/first_steps/basic_code_detailed.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/basic_code_detailed.cpp
rename to demos/tutorial/first_steps/basic_code_detailed.cpp
diff --git a/demos/tutorial/a_first_example/code_encapsulation.cpp b/demos/tutorial/first_steps/code_encapsulation.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/code_encapsulation.cpp
rename to demos/tutorial/first_steps/code_encapsulation.cpp
diff --git a/demos/tutorial/a_first_example/final_result.cpp b/demos/tutorial/first_steps/final_result.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/final_result.cpp
rename to demos/tutorial/first_steps/final_result.cpp
diff --git a/demos/tutorial/a_first_example/solution_1.cpp b/demos/tutorial/first_steps/solution_1.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/solution_1.cpp
rename to demos/tutorial/first_steps/solution_1.cpp
diff --git a/demos/tutorial/a_first_example/solution_2.cpp b/demos/tutorial/first_steps/solution_2.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/solution_2.cpp
rename to demos/tutorial/first_steps/solution_2.cpp
diff --git a/demos/tutorial/a_first_example/solution_3.cpp b/demos/tutorial/first_steps/solution_3.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/solution_3.cpp
rename to demos/tutorial/first_steps/solution_3.cpp
diff --git a/demos/tutorial/a_first_example/solution_4.cpp b/demos/tutorial/first_steps/solution_4.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/solution_4.cpp
rename to demos/tutorial/first_steps/solution_4.cpp
diff --git a/demos/tutorial/a_first_example/solution_5.cpp b/demos/tutorial/first_steps/solution_5.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/solution_5.cpp
rename to demos/tutorial/first_steps/solution_5.cpp
diff --git a/demos/tutorial/a_first_example/solution_6.cpp b/demos/tutorial/first_steps/solution_6.cpp
similarity index 100%
rename from demos/tutorial/a_first_example/solution_6.cpp
rename to demos/tutorial/first_steps/solution_6.cpp
diff --git a/demos/tutorial/fragment_store/access_aligned_reads.cpp b/demos/tutorial/fragment_store/access_aligned_reads.cpp
deleted file mode 100644
index 1150c69..0000000
--- a/demos/tutorial/fragment_store/access_aligned_reads.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//![includes]
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/svg.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString fastaFileName = getAbsolutePath("/demos/tutorial/fragment_store/example.fa");
- CharString samFileName = getAbsolutePath("/demos/tutorial/fragment_store/example.sam");
-
- typedef FragmentStore<> TStore;
-
- TStore store;
- loadContigs(store, toCString(fastaFileName));
- BamFileIn file(toCString(samFileName));
- readRecords(store, file);
-
- SEQAN_ASSERT_GEQ(length(store.alignedReadStore), 5u);
-//![includes]
-
-//![typedefs]
- typedef Value<TStore::TContigStore>::Type TContig;
- typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
-
- typedef Gaps<TContig::TContigSeq, AnchorGaps<TContig::TGapAnchors> > TContigGaps;
- typedef Gaps<TStore::TReadSeq, AnchorGaps<TAlignedRead::TGapAnchors> > TReadGaps;
-
- TStore::TReadSeq readSeq;
-//![typedefs]
-
-//![output]
- for (int i = 140; i < 160; i += 4)
- {
- TAlignedRead & ar = store.alignedReadStore[i];
-
- readSeq = store.readSeqStore[ar.readId];
- if (ar.endPos < ar.beginPos)
- reverseComplement(readSeq);
-
- TContigGaps contigGaps(
- store.contigStore[ar.contigId].seq,
- store.contigStore[ar.contigId].gaps);
-
- TReadGaps readGaps(
- readSeq,
- ar.gaps);
-
- setBeginPosition(contigGaps, std::min(ar.beginPos, ar.endPos));
- setEndPosition(contigGaps, std::max(ar.beginPos, ar.endPos));
-
- std::cout << "ALIGNMENT " << i << std::endl;
- std::cout << "\tcontig " << ar.contigId << ":\t" << contigGaps;
- std::cout << " \t[" << beginPosition(contigGaps) << ".." << endPosition(contigGaps) << "[" << std::endl;
- std::cout << "\tread " << ar.readId << ":\t" << readGaps << std::endl;
- std::cout << std::endl;
- }
-//![output]
-//![appendix]
- return 0;
-}
-//![appendix]
diff --git a/demos/tutorial/fragment_store/access_aligned_reads.cpp.stdout b/demos/tutorial/fragment_store/access_aligned_reads.cpp.stdout
deleted file mode 100644
index 53811d1..0000000
--- a/demos/tutorial/fragment_store/access_aligned_reads.cpp.stdout
+++ /dev/null
@@ -1,20 +0,0 @@
-ALIGNMENT 140
- contig 0: CTGTGTTTAGTGCCTTTGTTCA-----ACCCCCTTGCAACAACCT [266..306[
- read 149: CTGTGTTTAGTGCCTTTGTTCA-----ACCCCCTTGCAAC
-
-ALIGNMENT 144
- contig 0: AGTGCCTTTGTTCA-----ACCCCCTTGCAACAACCTTGAG [274..310[
- read 153: AGTGCCTTTGTTCACATAGACCCCCTTGCAACAACC
-
-ALIGNMENT 148
- contig 0: TTCA-----ACCCCCTTGCAACAACCTTGAGAACCCCAGGGAATT [284..324[
- read 157: ATAG-----ACCCCCTTGCAACAACCTTGAGAACCCCAGG
-
-ALIGNMENT 152
- contig 0: CA-----ACCCCCTTGCAACAACCTTGAGAACCCCAGGGAATTTG [286..326[
- read 161: CA-----ACCCCCTTGCAACAACCTTGCGAACCCCAGGGA
-
-ALIGNMENT 156
- contig 0: TTGCAACAACCTTGAGAACCCCAGGGAATTTGTCA [294..329[
- read 165: CCCCCTTGCAACAACCTTGAGAACCCCAGGGAATT
-
diff --git a/demos/tutorial/fragment_store/access_aligned_reads2.cpp b/demos/tutorial/fragment_store/access_aligned_reads2.cpp
deleted file mode 100644
index 208aec4..0000000
--- a/demos/tutorial/fragment_store/access_aligned_reads2.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-//![includes]
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/svg.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString fastaFileName = getAbsolutePath("/demos/tutorial/fragment_store/example.fa");
- CharString samFileName = getAbsolutePath("/demos/tutorial/fragment_store/example.sam");
-
- typedef FragmentStore<> TStore;
-
- TStore store;
- loadContigs(store, toCString(fastaFileName));
- BamFileIn file(toCString(samFileName));
- readRecords(store, file);
-
- SEQAN_ASSERT_GEQ(length(store.alignedReadStore), 5u);
-//![includes]
-
-//![typedefs]
- typedef Value<TStore::TContigStore>::Type TContig;
- typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
-
- typedef Gaps<TContig::TContigSeq, AnchorGaps<TContig::TGapAnchors> > TContigGaps;
- typedef Gaps<TStore::TReadSeq, AnchorGaps<TAlignedRead::TGapAnchors> > TReadGaps;
-
- TStore::TReadSeq readSeq;
-//![typedefs]
-
-//![output]
- for (int i = 140; i < 160; i += 4)
- {
- TAlignedRead & ar = store.alignedReadStore[i];
-
- readSeq = store.readSeqStore[ar.readId];
- if (ar.endPos < ar.beginPos)
- {
- reverseComplement(readSeq);
- toLower(readSeq);
- }
-
- TContigGaps contigGaps(
- store.contigStore[ar.contigId].seq,
- store.contigStore[ar.contigId].gaps);
-
- TReadGaps readGaps(
- readSeq,
- ar.gaps);
-
- setBeginPosition(contigGaps, std::min(ar.beginPos, ar.endPos));
- setEndPosition(contigGaps, std::max(ar.beginPos, ar.endPos));
-
- std::cout << "ALIGNMENT " << i << std::endl;
- std::cout << "\tcontig " << ar.contigId << ":\t" << contigGaps;
- std::cout << " \t[" << beginPosition(contigGaps) << ".." << endPosition(contigGaps) << "[" << std::endl;
- std::cout << "\tread " << ar.readId << ":\t" << readGaps << std::endl;
- std::cout << std::endl;
- }
-//![output]
-//![appendix]
- return 0;
-}
-//![appendix]
diff --git a/demos/tutorial/fragment_store/access_aligned_reads2.cpp.stdout b/demos/tutorial/fragment_store/access_aligned_reads2.cpp.stdout
deleted file mode 100644
index 215e5bf..0000000
--- a/demos/tutorial/fragment_store/access_aligned_reads2.cpp.stdout
+++ /dev/null
@@ -1,20 +0,0 @@
-ALIGNMENT 140
- contig 0: CTGTGTTTAGTGCCTTTGTTCA-----ACCCCCTTGCAACAACCT [266..306[
- read 149: ctgtgtttagtgcctttgttca-----acccccttgcaac
-
-ALIGNMENT 144
- contig 0: AGTGCCTTTGTTCA-----ACCCCCTTGCAACAACCTTGAG [274..310[
- read 153: AGTGCCTTTGTTCACATAGACCCCCTTGCAACAACC
-
-ALIGNMENT 148
- contig 0: TTCA-----ACCCCCTTGCAACAACCTTGAGAACCCCAGGGAATT [284..324[
- read 157: ATAG-----ACCCCCTTGCAACAACCTTGAGAACCCCAGG
-
-ALIGNMENT 152
- contig 0: CA-----ACCCCCTTGCAACAACCTTGAGAACCCCAGGGAATTTG [286..326[
- read 161: CA-----ACCCCCTTGCAACAACCTTGCGAACCCCAGGGA
-
-ALIGNMENT 156
- contig 0: TTGCAACAACCTTGAGAACCCCAGGGAATTTGTCA [294..329[
- read 165: cccccttgcaacaaccttgagaaccccagggaatt
-
diff --git a/demos/tutorial/fragment_store/display_aligned_reads.cpp b/demos/tutorial/fragment_store/display_aligned_reads.cpp
deleted file mode 100644
index 3a53734..0000000
--- a/demos/tutorial/fragment_store/display_aligned_reads.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//![includes]
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/svg.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString fastaFileName = getAbsolutePath("/demos/tutorial/fragment_store/example.fa");
- CharString samFileName = getAbsolutePath("/demos/tutorial/fragment_store/example.sam");
-
- typedef FragmentStore<> TStore;
-
- TStore store;
- loadContigs(store, toCString(fastaFileName));
- BamFileIn file(toCString(samFileName));
- readRecords(store, file);
-
-//![includes]
-
-//![ascii]
- AlignedReadLayout layout;
- layoutAlignment(layout, store);
- printAlignment(std::cout, layout, store, 1, 0, 150, 0, 36);
-//![ascii]
-
-//![svg]
- SVGFile svg("layout.svg");
- printAlignment(svg, layout, store, 1, 0, 150, 0, 36);
-
- return 0;
-}
-//![svg]
diff --git a/demos/tutorial/fragment_store/display_aligned_reads.cpp.stdout b/demos/tutorial/fragment_store/display_aligned_reads.cpp.stdout
deleted file mode 100644
index e9f0031..0000000
--- a/demos/tutorial/fragment_store/display_aligned_reads.cpp.stdout
+++ /dev/null
@@ -1,37 +0,0 @@
-TTCAAATGAACTTCTGTAATTGAAAAATTCATTTAAGAAATTACAAAATATAGTTGAAAGCTCTAACAATAGACTAAACCAAGCAGAAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCTTATGAATTAACCCAGTCAGACAAAAATAAA
-.................................... ................................... ................................... ................................... .
-................................... ................................... ................................... ................................... ...
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, .................................... ....................C.............. ................................... .
- ................................... .....................A............. .................................... ...............................
- ................................... ................................... ................................... ..............................
- ................................... ................................... ................................... ...........A.................
- ................................... ................................... ................................... ............................
- ................................... ................................... .................N.NNN...N......... ............................
- .................................... ................................... ................................... .......................NN..
- ................................... ................................... .................................G. ...........................
- ................................... ................................... ................................... ..........................
- ................................... ................................... .................................... ...
- ................................... ................................... ...................................
- ................................... .................................... ...................................
- ................................... ................................... ...................................
- ................................... ................................... ...................................
- ................................... ................................... ...................................
- ................................... ................................... ...................................
- ................................... ........................................ ...................................
- ................................... .................................T. ...................................
- ................................... .................................... ...................................
- ................................... ................................... ...................................
- ................................... ................................... ........................................
- ................................... ................................... ...................................
- ........................................ ...................................
- ................................... ...................................
- ................................... ....................................
- ................................... ...................................
- ................................... N...................................
- ................................... ...................................
- ................................... ...................................
- ................................... ...................................
- ...................................
- ...................................
- ...................................
- ...................................
diff --git a/demos/tutorial/generic_programming/template_subclassing.cpp.stdout b/demos/tutorial/generic_programming/template_subclassing.cpp.stdout
deleted file mode 100644
index 3f06229..0000000
--- a/demos/tutorial/generic_programming/template_subclassing.cpp.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-Template Subclassing Demo
-foo(MyClass<typename TSpec> const & obj) called! obj.x == 0
-foo(MyClass<SpecB> const & obj) called! obj.x == 1
-foo(MyClass<SpecC> const & obj) called! obj.x == 0
-foo(MyClass<typename TSpec> const & obj) called! obj.x == 2
diff --git a/demos/tutorial/genome_annotations/assignment_1_hint.cpp b/demos/tutorial/genome_annotations/assignment_1_hint.cpp
deleted file mode 100644
index 49a4026..0000000
--- a/demos/tutorial/genome_annotations/assignment_1_hint.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-#include <seqan/store.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString fileName = getAbsolutePath("/demos/tutorial/genome_annotations/assignment_annotations.gtf");
- GffFileIn file(toCString(fileName));
-
- FragmentStore<> store;
- readRecords(store, file);
- // Create AnnotationTree iterator
- Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
- it = begin(store, AnnotationTree<>());
- // Move iterator one node down
- goDown(it);
-
- std::cout << "Is leaf: " << isLeaf(it) << std::endl;
- return 0;
-}
diff --git a/demos/tutorial/genome_annotations/assignment_1_hint.cpp.stdout b/demos/tutorial/genome_annotations/assignment_1_hint.cpp.stdout
deleted file mode 100644
index 39d76a6..0000000
--- a/demos/tutorial/genome_annotations/assignment_1_hint.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Is leaf: 0
diff --git a/demos/tutorial/genome_annotations/assignment_1_solution.cpp b/demos/tutorial/genome_annotations/assignment_1_solution.cpp
deleted file mode 100644
index a2d856c..0000000
--- a/demos/tutorial/genome_annotations/assignment_1_solution.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-#include <seqan/store.h>
-
-using namespace seqan;
-int main()
-{
- CharString fileName = getAbsolutePath("/demos/tutorial/genome_annotations/assignment_annotations.gtf");
- GffFileIn file(toCString(fileName));
-
- FragmentStore<> store;
- readRecords(store, file);
- // Create AnnotationTree iterator
- Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
- it = begin(store, AnnotationTree<>());
- unsigned count = 0;
- // Go down to the first leaf (first child of the first mRNA)
- while (goDown(it))
- {}
- std::cout << "Is leaf: " << isLeaf(it) << std::endl;
-
- ++count;
- // Iterate over all siblings and count
- while (goRight(it))
- ++count;
- std::cout << "No. of children of the first mRNA: " << count << std::endl;
- return 0;
-}
diff --git a/demos/tutorial/genome_annotations/assignment_1_solution.cpp.stdout b/demos/tutorial/genome_annotations/assignment_1_solution.cpp.stdout
deleted file mode 100644
index 62ee58c..0000000
--- a/demos/tutorial/genome_annotations/assignment_1_solution.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Is leaf: 1
-No. of children of the first mRNA: 9
diff --git a/demos/tutorial/genome_annotations/assignment_2_solution.cpp b/demos/tutorial/genome_annotations/assignment_2_solution.cpp
deleted file mode 100644
index 9dba3df..0000000
--- a/demos/tutorial/genome_annotations/assignment_2_solution.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-#include <seqan/store.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString fileName = getAbsolutePath("/demos/tutorial/genome_annotations/assignment_annotations.gtf");
- GffFileIn file(toCString(fileName));
-
- FragmentStore<> store;
- readRecords(store, file);
- // Iterate over all leafs, count and print the result
- Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
- it = begin(store, AnnotationTree<>());
- unsigned count = 0;
- std::cout << "Number of children for each mRNA: " << std::endl;
- // Go down to the first leaf (first child of the first mRNA)
- while (goDown(it))
- {}
-
- while (!atEnd(it))
- {
- ++count;
- // Iterate over all siblings and count
- while (goRight(it))
- ++count;
- std::cout << count << std::endl;
- count = 0;
- // Jump to the next mRNA or gene, go down to its first leaf and count it
- if (!atEnd(it))
- {
- goNext(it);
- if (!atEnd(it))
- while (goDown(it))
- {}
- }
- }
- return 0;
-}
diff --git a/demos/tutorial/genome_annotations/assignment_2_solution.cpp.stdout b/demos/tutorial/genome_annotations/assignment_2_solution.cpp.stdout
deleted file mode 100644
index c0426c2..0000000
--- a/demos/tutorial/genome_annotations/assignment_2_solution.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Number of children for each mRNA:
-9
-2
-2
diff --git a/demos/tutorial/genome_annotations/assignment_3_solution.cpp b/demos/tutorial/genome_annotations/assignment_3_solution.cpp
deleted file mode 100644
index 2de4f3a..0000000
--- a/demos/tutorial/genome_annotations/assignment_3_solution.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-#include <seqan/store.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString fileName = getAbsolutePath("/demos/tutorial/genome_annotations/assignment_annotations.gtf");
- GffFileIn file(toCString(fileName));
-
- FragmentStore<> store;
- readRecords(store, file);
- // Create iterator
- Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
- it = begin(store, AnnotationTree<>());
- // Iterate to the first annotation of type "exon"
- while (!atEnd(it) && getType(it) != "exon")
- goNext(it);
- // Output:
- std::cout << " type: " << getType(it) << std::endl;
- std::cout << " begin position: " << getAnnotation(it).beginPos << std::endl;
- std::cout << " end position: " << getAnnotation(it).endPos << std::endl;
- std::cout << " id: " << value(it) << std::endl;
- std::cout << " parent id: " << getAnnotation(it).parentId << std::endl;
- std::cout << " parent name: " << getParentName(it) << std::endl;
- return 0;
-}
diff --git a/demos/tutorial/genome_annotations/assignment_3_solution.cpp.stdout b/demos/tutorial/genome_annotations/assignment_3_solution.cpp.stdout
deleted file mode 100644
index 1433f45..0000000
--- a/demos/tutorial/genome_annotations/assignment_3_solution.cpp.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
- type: exon
- begin position: 149
- end position: 200
- id: 3
- parent id: 2
- parent name: 381.000.1
diff --git a/demos/tutorial/genome_annotations/assignment_4_solution.cpp b/demos/tutorial/genome_annotations/assignment_4_solution.cpp
deleted file mode 100644
index e259c7c..0000000
--- a/demos/tutorial/genome_annotations/assignment_4_solution.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-#include <seqan/store.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString fileName = getAbsolutePath("/demos/tutorial/genome_annotations/assignment_annotations.gtf");
- GffFileIn file(toCString(fileName));
-
- FragmentStore<> store;
- readRecords(store, file);
- // Create iterator
- Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
- it = begin(store, AnnotationTree<>());
- unsigned countGenes = 0;
- unsigned countmRNAs = 0;
- unsigned countExons = 0;
- unsigned length = 0;
- // Iterate over annotation tree and count different elements and compute exon lengths
- while (!atEnd(it))
- {
- if (getType(it) == "gene")
- {
- ++countGenes;
- }
- else if (getType(it) == "mRNA")
- {
- ++countmRNAs;
- }
- else if (getType(it) == "exon")
- {
- ++countExons;
- length += abs((int)getAnnotation(it).endPos - (int)getAnnotation(it).beginPos);
- }
- goNext(it);
- }
- if (countGenes == 0u) // prevent div-by-zero below
- countGenes = 1;
- if (countmRNAs == 0u) // prevent div-by-zero below
- countmRNAs = 1;
- if (countExons == 0u) // prevent div-by-zero below
- countExons = 1;
- // Ouput some stats:
- std::cout << "Average number of mRNAs for genes: " << (float)countmRNAs / (float)countGenes << std::endl;
- std::cout << "Average number of exons for mRNAs: " << (float)countExons / (float)countmRNAs << std::endl;
- std::cout << "Average length of exons: " << (float)length / (float)countExons << std::endl;
- return 0;
-}
diff --git a/demos/tutorial/genome_annotations/assignment_4_solution.cpp.stdout b/demos/tutorial/genome_annotations/assignment_4_solution.cpp.stdout
deleted file mode 100644
index 5ac98fc..0000000
--- a/demos/tutorial/genome_annotations/assignment_4_solution.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-Average number of mRNAs for genes: 1.5
-Average number of exons for mRNAs: 3
-Average length of exons: 95.5556
diff --git a/demos/tutorial/genome_annotations/base.cpp b/demos/tutorial/genome_annotations/base.cpp
deleted file mode 100644
index 63161c3..0000000
--- a/demos/tutorial/genome_annotations/base.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//![INCLUDE]
-#include <seqan/store.h>
-//![INCLUDE]
-//![MAIN]
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-
-using namespace seqan;
-
-int main()
-{
-//![MAIN]
-//![SIGNATURE]
- FragmentStore<> store;
-//![SIGNATURE]
-//![LOAD]
- CharString fileName = getAbsolutePath("/demos/tutorial/genome_annotations/example.gtf");
- GffFileIn file(toCString(fileName));
-
- readRecords(store, file);
-//![LOAD]
-//![ITERATOR]
- Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
- it = begin(store, AnnotationTree<>());
-//![ITERATOR]
-//![MOVE]
- // Move the iterator down to a leaf
- while (goDown(it))
- {}
- // Create a new iterator and if possible move it to the right sibling of the first iterator
- Iterator<FragmentStore<>, AnnotationTree<> >::Type it2;
- if (isLastChild(it))
- it2 = nodeRight(it);
-//![MOVE]
-//![DFS]
- // Move the iterator back to the beginning
- goBegin(it);
- // Iterate over the nodes in preorder DFS while the end is not reached and
- // output if the current node is a leaf
- while (!atEnd(it))
- {
- if (isLeaf(it))
- std::cout << " current node is leaf" << std::endl;
- goNext(it);
- }
-//![DFS]
-//![ACCESS]
- // Move the iterator to the begin of the annotation tree
- it = begin(store, AnnotationTree<>());
- // Go down to exon level
- while (goDown(it)) ;
- std::cout << "type: " << getType(it) << std::endl;
- std::cout << "id: " << value(it) << std::endl;
- std::cout << "begin position: " << getAnnotation(it).beginPos << std::endl;
-//![ACCESS]
-//![CREATE]
- Iterator<FragmentStore<>, AnnotationTree<> >::Type it3;
- // Create a right sibling of the current node and return an iterator to this new node
- it3 = createSibling(it);
-//![CREATE]
-//![OUT]
- // Open output stream
- GffFileOut fileOut("example_out.gtf");
- // Write annotations to GTF file
- writeRecords(fileOut, store);
-//![OUT]
- return 0;
-}
\ No newline at end of file
diff --git a/demos/tutorial/genome_annotations/base.cpp.stdout b/demos/tutorial/genome_annotations/base.cpp.stdout
deleted file mode 100644
index c9e19ef..0000000
--- a/demos/tutorial/genome_annotations/base.cpp.stdout
+++ /dev/null
@@ -1,7 +0,0 @@
- current node is leaf
- current node is leaf
- current node is leaf
- current node is leaf
-type: exon
-id: 3
-begin position: 149
diff --git a/demos/tutorial/genome_annotations/example.gtf b/demos/tutorial/genome_annotations/example.gtf
deleted file mode 100644
index 939dfd1..0000000
--- a/demos/tutorial/genome_annotations/example.gtf
+++ /dev/null
@@ -1,4 +0,0 @@
-chr1 MySource exon 150 200 . + . gene_id "381.000"; transcript_id "381.000.1";
-chr1 MySource exon 300 401 . + . gene_id "381.000"; transcript_id "381.000.1";
-chr1 MySource CDS 380 401 . + 0 gene_id "381.000"; transcript_id "381.000.1";
-chr1 MySource exon 160 210 . + . gene_id "381.000"; transcript_id "381.000.2";
\ No newline at end of file
diff --git a/demos/tutorial/getting_started/CMakeLists.txt b/demos/tutorial/getting_started/CMakeLists.txt
new file mode 100644
index 0000000..058744e
--- /dev/null
+++ b/demos/tutorial/getting_started/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_getting_started)
+
+seqan_setup_apps(demos_tutorials_getting_started)
+seqan_add_all_executables(demos_tutorials_getting_started tutorial_)
diff --git a/demos/tutorial/getting_started/cmd_dir_build_src.png b/demos/tutorial/getting_started/cmd_dir_build_src.png
new file mode 100644
index 0000000..d059b92
Binary files /dev/null and b/demos/tutorial/getting_started/cmd_dir_build_src.png differ
diff --git a/demos/tutorial/getting_started/eclipse_convert_to_cpp_project.png b/demos/tutorial/getting_started/eclipse_convert_to_cpp_project.png
new file mode 100644
index 0000000..7995f6e
Binary files /dev/null and b/demos/tutorial/getting_started/eclipse_convert_to_cpp_project.png differ
diff --git a/demos/tutorial/getting_started/eclipse_hello_world.png b/demos/tutorial/getting_started/eclipse_hello_world.png
new file mode 100644
index 0000000..69e427d
Binary files /dev/null and b/demos/tutorial/getting_started/eclipse_hello_world.png differ
diff --git a/demos/tutorial/getting_started/eclipse_import_build_project.png b/demos/tutorial/getting_started/eclipse_import_build_project.png
new file mode 100644
index 0000000..5e719a6
Binary files /dev/null and b/demos/tutorial/getting_started/eclipse_import_build_project.png differ
diff --git a/demos/tutorial/getting_started/eclipse_new_repository_location.png b/demos/tutorial/getting_started/eclipse_new_repository_location.png
new file mode 100644
index 0000000..37ccce2
Binary files /dev/null and b/demos/tutorial/getting_started/eclipse_new_repository_location.png differ
diff --git a/demos/tutorial/getting_started/eclipse_preference_build_on_launch.png b/demos/tutorial/getting_started/eclipse_preference_build_on_launch.png
new file mode 100644
index 0000000..5207d28
Binary files /dev/null and b/demos/tutorial/getting_started/eclipse_preference_build_on_launch.png differ
diff --git a/demos/tutorial/getting_started/eclipse_required_plugins.png b/demos/tutorial/getting_started/eclipse_required_plugins.png
new file mode 100644
index 0000000..4a8748f
Binary files /dev/null and b/demos/tutorial/getting_started/eclipse_required_plugins.png differ
diff --git a/demos/tutorial/getting_started/eclipse_run_configurations.png b/demos/tutorial/getting_started/eclipse_run_configurations.png
new file mode 100644
index 0000000..2806439
Binary files /dev/null and b/demos/tutorial/getting_started/eclipse_run_configurations.png differ
diff --git a/demos/tutorial/getting_started/mingw_installation.png b/demos/tutorial/getting_started/mingw_installation.png
new file mode 100644
index 0000000..9ed9838
Binary files /dev/null and b/demos/tutorial/getting_started/mingw_installation.png differ
diff --git a/demos/tutorial/getting_started/repository_overview.pptx b/demos/tutorial/getting_started/repository_overview.pptx
new file mode 100644
index 0000000..335e587
Binary files /dev/null and b/demos/tutorial/getting_started/repository_overview.pptx differ
diff --git a/demos/tutorial/getting_started/repository_overview/Folie1.jpg b/demos/tutorial/getting_started/repository_overview/Folie1.jpg
new file mode 100644
index 0000000..9ce828e
Binary files /dev/null and b/demos/tutorial/getting_started/repository_overview/Folie1.jpg differ
diff --git a/demos/tutorial/getting_started/win_command_arguments.jpg b/demos/tutorial/getting_started/win_command_arguments.jpg
new file mode 100755
index 0000000..1cb322f
Binary files /dev/null and b/demos/tutorial/getting_started/win_command_arguments.jpg differ
diff --git a/demos/tutorial/getting_started/win_new_file.jpg b/demos/tutorial/getting_started/win_new_file.jpg
new file mode 100755
index 0000000..c3a6733
Binary files /dev/null and b/demos/tutorial/getting_started/win_new_file.jpg differ
diff --git a/demos/tutorial/getting_started/win_save_file.jpg b/demos/tutorial/getting_started/win_save_file.jpg
new file mode 100755
index 0000000..1db095d
Binary files /dev/null and b/demos/tutorial/getting_started/win_save_file.jpg differ
diff --git a/demos/tutorial/getting_started/win_solution_explorer.png b/demos/tutorial/getting_started/win_solution_explorer.png
new file mode 100755
index 0000000..49449d5
Binary files /dev/null and b/demos/tutorial/getting_started/win_solution_explorer.png differ
diff --git a/demos/tutorial/getting_started/win_start_up_project.png b/demos/tutorial/getting_started/win_start_up_project.png
new file mode 100755
index 0000000..53fae94
Binary files /dev/null and b/demos/tutorial/getting_started/win_start_up_project.png differ
diff --git a/demos/tutorial/getting_started/win_tortoise.png b/demos/tutorial/getting_started/win_tortoise.png
new file mode 100755
index 0000000..f79143f
Binary files /dev/null and b/demos/tutorial/getting_started/win_tortoise.png differ
diff --git a/demos/tutorial/getting_started/xcode/base_sdk.png b/demos/tutorial/getting_started/xcode/base_sdk.png
new file mode 100644
index 0000000..c818510
Binary files /dev/null and b/demos/tutorial/getting_started/xcode/base_sdk.png differ
diff --git a/demos/tutorial/getting_started/xcode/base_sdk_selection.png b/demos/tutorial/getting_started/xcode/base_sdk_selection.png
new file mode 100644
index 0000000..dddbba5
Binary files /dev/null and b/demos/tutorial/getting_started/xcode/base_sdk_selection.png differ
diff --git a/demos/tutorial/getting_started/xcode/download-command-line-tools.png b/demos/tutorial/getting_started/xcode/download-command-line-tools.png
new file mode 100644
index 0000000..e651f53
Binary files /dev/null and b/demos/tutorial/getting_started/xcode/download-command-line-tools.png differ
diff --git a/demos/tutorial/getting_started/xcode/first_app_new.png b/demos/tutorial/getting_started/xcode/first_app_new.png
new file mode 100644
index 0000000..fd922ba
Binary files /dev/null and b/demos/tutorial/getting_started/xcode/first_app_new.png differ
diff --git a/demos/tutorial/getting_started/xcode/first_app_old.png b/demos/tutorial/getting_started/xcode/first_app_old.png
new file mode 100644
index 0000000..ac4fb0e
Binary files /dev/null and b/demos/tutorial/getting_started/xcode/first_app_old.png differ
diff --git a/demos/tutorial/getting_started/xcode/razers2_built.png b/demos/tutorial/getting_started/xcode/razers2_built.png
new file mode 100644
index 0000000..7a847ff
Binary files /dev/null and b/demos/tutorial/getting_started/xcode/razers2_built.png differ
diff --git a/demos/tutorial/getting_started/xcode/razers2_selection.png b/demos/tutorial/getting_started/xcode/razers2_selection.png
new file mode 100644
index 0000000..35dc444
Binary files /dev/null and b/demos/tutorial/getting_started/xcode/razers2_selection.png differ
diff --git a/demos/tutorial/getting_started/xcode/test_stream_selection.png b/demos/tutorial/getting_started/xcode/test_stream_selection.png
new file mode 100644
index 0000000..61dd0e9
Binary files /dev/null and b/demos/tutorial/getting_started/xcode/test_stream_selection.png differ
diff --git a/demos/tutorial/getting_started/xcode/xcode_startup.png b/demos/tutorial/getting_started/xcode/xcode_startup.png
new file mode 100644
index 0000000..1a488b6
Binary files /dev/null and b/demos/tutorial/getting_started/xcode/xcode_startup.png differ
diff --git a/demos/tutorial/getting_started/xcode_first_app.jpg b/demos/tutorial/getting_started/xcode_first_app.jpg
new file mode 100644
index 0000000..f159c06
Binary files /dev/null and b/demos/tutorial/getting_started/xcode_first_app.jpg differ
diff --git a/demos/tutorial/getting_started/xcode_start_up_view.png b/demos/tutorial/getting_started/xcode_start_up_view.png
new file mode 100644
index 0000000..aae04d9
Binary files /dev/null and b/demos/tutorial/getting_started/xcode_start_up_view.png differ
diff --git a/demos/tutorial/gff_and_gtf_io/example.gff b/demos/tutorial/gff_and_gtf_io/example.gff
deleted file mode 100644
index 017d855..0000000
--- a/demos/tutorial/gff_and_gtf_io/example.gff
+++ /dev/null
@@ -1,23 +0,0 @@
-ctg123 . gene 1000 9000 . + . ID=gene00001;Name=EDEN
-ctg123 . TF_binding_site 1000 1012 . + . Parent=gene00001
-ctg123 . mRNA 1050 9000 . + . ID=mRNA00001;Parent=gene00001
-ctg123 . mRNA 1050 9000 . + . ID=mRNA00002;Parent=gene00001
-ctg123 . mRNA 1300 9000 . + . ID=mRNA00003;Parent=gene00001
-ctg123 . exon 1300 1500 . + . Parent=mRNA00003
-ctg123 . exon 1050 1500 . + . Parent=mRNA00001,mRNA00002
-ctg123 . exon 3000 3902 . + . Parent=mRNA00001,mRNA00003
-ctg123 . exon 5000 5500 . + . Parent=mRNA00001,mRNA00002,mRNA00003
-ctg123 . exon 7000 9000 . + . Parent=mRNA00001,mRNA00002,mRNA00003
-ctg123 . CDS 1201 1500 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 3000 3902 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 5000 5500 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 7000 7600 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 1201 1500 . + 0 ID=cds00002;Parent=mRNA00002
-ctg123 . CDS 5000 5500 . + 0 ID=cds00002;Parent=mRNA00002
-ctg123 . CDS 7000 7600 . + 0 ID=cds00002;Parent=mRNA00002
-ctg123 . CDS 3301 3902 . + 0 ID=cds00003;Parent=mRNA00003
-ctg123 . CDS 5000 5500 . + 1 ID=cds00003;Parent=mRNA00003
-ctg123 . CDS 7000 7600 . + 1 ID=cds00003;Parent=mRNA00003
-ctg123 . CDS 3391 3902 . + 0 ID=cds00004;Parent=mRNA00003
-ctg123 . CDS 5000 5500 . + 1 ID=cds00004;Parent=mRNA00003
-ctg123 . CDS 7000 7600 . + 1 ID=cds00004;Parent=mRNA00003
\ No newline at end of file
diff --git a/demos/tutorial/gff_and_gtf_io/example1.cpp b/demos/tutorial/gff_and_gtf_io/example1.cpp
deleted file mode 100644
index 0ba0884..0000000
--- a/demos/tutorial/gff_and_gtf_io/example1.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include <seqan/basic.h>
-#include <seqan/gff_io.h>
-
-using namespace seqan;
-
-int main()
-{
- // Get path to example file.
- CharString file = getAbsolutePath("/demos/tutorial/gff_and_gtf_io/example.gff");
-
- // Open input file.
- GffFileIn gffIn(toCString(file));
-
- // Attach to standard output.
- GffFileOut gffOut(std::cout, Gff());
-
- // Copy the file record by record.
- GffRecord record;
- while (!atEnd(gffIn))
- {
- readRecord(record, gffIn);
- writeRecord(gffOut, record);
- }
-
- return 0;
-}
diff --git a/demos/tutorial/gff_and_gtf_io/example1.cpp.stdout b/demos/tutorial/gff_and_gtf_io/example1.cpp.stdout
deleted file mode 100644
index 42708f7..0000000
--- a/demos/tutorial/gff_and_gtf_io/example1.cpp.stdout
+++ /dev/null
@@ -1,23 +0,0 @@
-ctg123 . gene 1000 9000 . + . ID=gene00001;Name=EDEN
-ctg123 . TF_binding_site 1000 1012 . + . Parent=gene00001
-ctg123 . mRNA 1050 9000 . + . ID=mRNA00001;Parent=gene00001
-ctg123 . mRNA 1050 9000 . + . ID=mRNA00002;Parent=gene00001
-ctg123 . mRNA 1300 9000 . + . ID=mRNA00003;Parent=gene00001
-ctg123 . exon 1300 1500 . + . Parent=mRNA00003
-ctg123 . exon 1050 1500 . + . Parent=mRNA00001,mRNA00002
-ctg123 . exon 3000 3902 . + . Parent=mRNA00001,mRNA00003
-ctg123 . exon 5000 5500 . + . Parent=mRNA00001,mRNA00002,mRNA00003
-ctg123 . exon 7000 9000 . + . Parent=mRNA00001,mRNA00002,mRNA00003
-ctg123 . CDS 1201 1500 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 3000 3902 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 5000 5500 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 7000 7600 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 1201 1500 . + 0 ID=cds00002;Parent=mRNA00002
-ctg123 . CDS 5000 5500 . + 0 ID=cds00002;Parent=mRNA00002
-ctg123 . CDS 7000 7600 . + 0 ID=cds00002;Parent=mRNA00002
-ctg123 . CDS 3301 3902 . + 0 ID=cds00003;Parent=mRNA00003
-ctg123 . CDS 5000 5500 . + 1 ID=cds00003;Parent=mRNA00003
-ctg123 . CDS 7000 7600 . + 1 ID=cds00003;Parent=mRNA00003
-ctg123 . CDS 3391 3902 . + 0 ID=cds00004;Parent=mRNA00003
-ctg123 . CDS 5000 5500 . + 1 ID=cds00004;Parent=mRNA00003
-ctg123 . CDS 7000 7600 . + 1 ID=cds00004;Parent=mRNA00003
diff --git a/demos/tutorial/gff_and_gtf_io/example2.cpp b/demos/tutorial/gff_and_gtf_io/example2.cpp
deleted file mode 100644
index 613b638..0000000
--- a/demos/tutorial/gff_and_gtf_io/example2.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#include <seqan/basic.h>
-#include <seqan/gff_io.h>
-
-using namespace seqan;
-
-int main()
-{
- // Get path to example file.
- CharString file = getAbsolutePath("/demos/tutorial/gff_and_gtf_io/example.gff");
-
- // Open input file.
- GffFileIn gffIn(toCString(file));
-
- // Open output stream. If target is a ostream we must specify the format.
- GffFileOut gffOut(std::cout, Gtf());
-
- // Read the file record by record.
- GffRecord record;
- while (!atEnd(gffIn))
- {
- readRecord(record, gffIn);
- writeRecord(gffOut, record);
- }
-
- return 0;
-}
diff --git a/demos/tutorial/gff_and_gtf_io/example2.cpp.stdout b/demos/tutorial/gff_and_gtf_io/example2.cpp.stdout
deleted file mode 100644
index a212948..0000000
--- a/demos/tutorial/gff_and_gtf_io/example2.cpp.stdout
+++ /dev/null
@@ -1,23 +0,0 @@
-ctg123 . gene 1000 9000 . + . ID "gene00001"; Name "EDEN";
-ctg123 . TF_binding_site 1000 1012 . + . Parent "gene00001";
-ctg123 . mRNA 1050 9000 . + . ID "mRNA00001"; Parent "gene00001";
-ctg123 . mRNA 1050 9000 . + . ID "mRNA00002"; Parent "gene00001";
-ctg123 . mRNA 1300 9000 . + . ID "mRNA00003"; Parent "gene00001";
-ctg123 . exon 1300 1500 . + . Parent "mRNA00003";
-ctg123 . exon 1050 1500 . + . Parent "mRNA00001,mRNA00002";
-ctg123 . exon 3000 3902 . + . Parent "mRNA00001,mRNA00003";
-ctg123 . exon 5000 5500 . + . Parent "mRNA00001,mRNA00002,mRNA00003";
-ctg123 . exon 7000 9000 . + . Parent "mRNA00001,mRNA00002,mRNA00003";
-ctg123 . CDS 1201 1500 . + 0 ID "cds00001"; Parent "mRNA00001";
-ctg123 . CDS 3000 3902 . + 0 ID "cds00001"; Parent "mRNA00001";
-ctg123 . CDS 5000 5500 . + 0 ID "cds00001"; Parent "mRNA00001";
-ctg123 . CDS 7000 7600 . + 0 ID "cds00001"; Parent "mRNA00001";
-ctg123 . CDS 1201 1500 . + 0 ID "cds00002"; Parent "mRNA00002";
-ctg123 . CDS 5000 5500 . + 0 ID "cds00002"; Parent "mRNA00002";
-ctg123 . CDS 7000 7600 . + 0 ID "cds00002"; Parent "mRNA00002";
-ctg123 . CDS 3301 3902 . + 0 ID "cds00003"; Parent "mRNA00003";
-ctg123 . CDS 5000 5500 . + 1 ID "cds00003"; Parent "mRNA00003";
-ctg123 . CDS 7000 7600 . + 1 ID "cds00003"; Parent "mRNA00003";
-ctg123 . CDS 3391 3902 . + 0 ID "cds00004"; Parent "mRNA00003";
-ctg123 . CDS 5000 5500 . + 1 ID "cds00004"; Parent "mRNA00003";
-ctg123 . CDS 7000 7600 . + 1 ID "cds00004"; Parent "mRNA00003";
diff --git a/demos/tutorial/gff_and_gtf_io/solution1.cpp b/demos/tutorial/gff_and_gtf_io/solution1.cpp
deleted file mode 100644
index fdd2e46..0000000
--- a/demos/tutorial/gff_and_gtf_io/solution1.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <seqan/gff_io.h>
-
-using namespace seqan;
-
-int main()
-{
- // Get path to example file.
- CharString file = getAbsolutePath("/demos/tutorial/gff_and_gtf_io/example.gff");
-
- // Open input file.
- GffFileIn gffIn;
- if (!open(gffIn, toCString(file)))
- {
- std::cerr << "ERROR: Could not open example.gff" << std::endl;
- return 1;
- }
-
- // Attach to standard output.
- GffFileOut gffOut(std::cout, Gff());
-
- // Copy the file record by record.
- GffRecord record;
-
- try
- {
- while (!atEnd(gffIn))
- {
- readRecord(record, gffIn);
- writeRecord(gffOut, record);
- }
- }
- catch (Exception const & e)
- {
- std::cout << "ERROR: " << e.what() << std::endl;
- return 1;
- }
-
- return 0;
-}
diff --git a/demos/tutorial/gff_and_gtf_io/solution1.cpp.stdout b/demos/tutorial/gff_and_gtf_io/solution1.cpp.stdout
deleted file mode 100644
index 42708f7..0000000
--- a/demos/tutorial/gff_and_gtf_io/solution1.cpp.stdout
+++ /dev/null
@@ -1,23 +0,0 @@
-ctg123 . gene 1000 9000 . + . ID=gene00001;Name=EDEN
-ctg123 . TF_binding_site 1000 1012 . + . Parent=gene00001
-ctg123 . mRNA 1050 9000 . + . ID=mRNA00001;Parent=gene00001
-ctg123 . mRNA 1050 9000 . + . ID=mRNA00002;Parent=gene00001
-ctg123 . mRNA 1300 9000 . + . ID=mRNA00003;Parent=gene00001
-ctg123 . exon 1300 1500 . + . Parent=mRNA00003
-ctg123 . exon 1050 1500 . + . Parent=mRNA00001,mRNA00002
-ctg123 . exon 3000 3902 . + . Parent=mRNA00001,mRNA00003
-ctg123 . exon 5000 5500 . + . Parent=mRNA00001,mRNA00002,mRNA00003
-ctg123 . exon 7000 9000 . + . Parent=mRNA00001,mRNA00002,mRNA00003
-ctg123 . CDS 1201 1500 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 3000 3902 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 5000 5500 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 7000 7600 . + 0 ID=cds00001;Parent=mRNA00001
-ctg123 . CDS 1201 1500 . + 0 ID=cds00002;Parent=mRNA00002
-ctg123 . CDS 5000 5500 . + 0 ID=cds00002;Parent=mRNA00002
-ctg123 . CDS 7000 7600 . + 0 ID=cds00002;Parent=mRNA00002
-ctg123 . CDS 3301 3902 . + 0 ID=cds00003;Parent=mRNA00003
-ctg123 . CDS 5000 5500 . + 1 ID=cds00003;Parent=mRNA00003
-ctg123 . CDS 7000 7600 . + 1 ID=cds00003;Parent=mRNA00003
-ctg123 . CDS 3391 3902 . + 0 ID=cds00004;Parent=mRNA00003
-ctg123 . CDS 5000 5500 . + 1 ID=cds00004;Parent=mRNA00003
-ctg123 . CDS 7000 7600 . + 1 ID=cds00004;Parent=mRNA00003
diff --git a/demos/tutorial/gff_and_gtf_io/solution2.cpp b/demos/tutorial/gff_and_gtf_io/solution2.cpp
deleted file mode 100644
index dcac315..0000000
--- a/demos/tutorial/gff_and_gtf_io/solution2.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <seqan/gff_io.h>
-#include <seqan/misc/name_store_cache.h>
-
-using namespace seqan;
-
-int main()
-{
- // Get path to example file.
- CharString file = getAbsolutePath("/demos/tutorial/gff_and_gtf_io/example.gff");
-
- // Open input file.
- GffFileIn gffIn;
- if (!open(gffIn, toCString(file)))
- {
- std::cerr << "ERROR: Could not open example.gff" << std::endl;
- return 1;
- }
-
- // Array of counters and sequence names.
- String<unsigned> counters;
- StringSet<CharString> seqNames;
- NameStoreCache<StringSet<CharString> > cache(seqNames);
-
- // Read the file record by record.
- GffRecord record;
-
- try
- {
- while (!atEnd(gffIn))
- {
- readRecord(record, gffIn);
- unsigned rID = nameToId(cache, record.ref);
-
- // Resize counters if necessary and increment counter.
- assignValueById(counters, rID, getValueById(counters, rID) + 1);
- }
- }
- catch (Exception const & e)
- {
- std::cout << "ERROR: " << e.what() << std::endl;
- return 1;
- }
-
- // Print result.
- std::cout << "RECORDS ON CONTIGS\n";
- for (unsigned i = 0; i < length(seqNames); ++i)
- if (counters[i] != 0u)
- std::cout << seqNames[i] << '\t' << counters[i] << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/gff_and_gtf_io/solution2.cpp.stdout b/demos/tutorial/gff_and_gtf_io/solution2.cpp.stdout
deleted file mode 100644
index 2e3359d..0000000
--- a/demos/tutorial/gff_and_gtf_io/solution2.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-RECORDS ON CONTIGS
-ctg123 23
diff --git a/demos/tutorial/gff_and_gtf_io/solution3.cpp.stdout b/demos/tutorial/gff_and_gtf_io/solution3.cpp.stdout
deleted file mode 100644
index cd1578e..0000000
--- a/demos/tutorial/gff_and_gtf_io/solution3.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-ctg123 . gene 1000 9000 . + . ID=gene0001;Name=EDEN
-ctg123 . TF_binding_site 1000 1012 . + . Parent=gene0001
diff --git a/demos/tutorial/gff_io/example1.cpp b/demos/tutorial/gff_io/example1.cpp
new file mode 100644
index 0000000..d6b9438
--- /dev/null
+++ b/demos/tutorial/gff_io/example1.cpp
@@ -0,0 +1,22 @@
+#include <seqan/gff_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Open input file.
+ GffFileIn gffIn("example.gff");
+
+ // Attach to standard output.
+ GffFileOut gffOut(std::cout, Gff());
+
+ // Copy the file record by record.
+ GffRecord record;
+ while (!atEnd(gffIn))
+ {
+ readRecord(record, gffIn);
+ writeRecord(gffOut, record);
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/gff_io/example2.cpp b/demos/tutorial/gff_io/example2.cpp
new file mode 100644
index 0000000..8c990b2
--- /dev/null
+++ b/demos/tutorial/gff_io/example2.cpp
@@ -0,0 +1,22 @@
+#include <seqan/basic.h>
+#include <seqan/gff_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Open input stream.
+ GffFileIn gffIn("example.gff");
+ // Open output stream. If target is a ostream we must specify the format.
+ GffFileOut gffOut(std::cout, Gtf());
+
+ // Read the file record by record.
+ GffRecord record;
+ while (!atEnd(gffIn))
+ {
+ readRecord(record, gffIn);
+ writeRecord(gffOut, record);
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/gff_io/solution1.cpp b/demos/tutorial/gff_io/solution1.cpp
new file mode 100644
index 0000000..46c0adf
--- /dev/null
+++ b/demos/tutorial/gff_io/solution1.cpp
@@ -0,0 +1,36 @@
+#include <seqan/gff_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Open input file.
+ GffFileIn gffIn;
+ if (!open(gffIn, "example.gff"))
+ {
+ std::cerr << "ERROR: Could not open example.gff" << std::endl;
+ return 1;
+ }
+
+ // Attach to standard output.
+ GffFileOut gffOut(std::cout, Gff());
+
+ // Copy the file record by record.
+ GffRecord record;
+
+ try
+ {
+ while (!atEnd(gffIn))
+ {
+ readRecord(record, gffIn);
+ writeRecord(gffOut, record);
+ }
+ }
+ catch (Exception const & e)
+ {
+ std::cout << "ERROR: " << e.what() << std::endl;
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/demos/tutorial/gff_io/solution2.cpp b/demos/tutorial/gff_io/solution2.cpp
new file mode 100644
index 0000000..8aa719b
--- /dev/null
+++ b/demos/tutorial/gff_io/solution2.cpp
@@ -0,0 +1,48 @@
+#include <seqan/gff_io.h>
+#include <seqan/misc/name_store_cache.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Open input gff file.
+ GffFileIn gffIn;
+ if (!open(gffIn, "example.gff"))
+ {
+ std::cerr << "ERROR: Could not open example.gff\n";
+ return 1;
+ }
+
+ // Array of counters and sequence names.
+ String<unsigned> counters;
+ StringSet<CharString> seqNames;
+ NameStoreCache<StringSet<CharString> > cache(seqNames);
+
+ // Read the file record by record.
+ GffRecord record;
+
+ try
+ {
+ while (!atEnd(gffIn))
+ {
+ readRecord(record, gffIn);
+ unsigned rID = nameToId(cache, record.ref);
+
+ // Resize counters if necessary and increment counter.
+ assignValueById(counters, rID, getValueById(counters, rID) + 1);
+ }
+ }
+ catch (Exception const & e)
+ {
+ std::cout << "ERROR: " << e.what() << std::endl;
+ return 1;
+ }
+
+ // Print result.
+ std::cout << "RECORDS ON CONTIGS\n";
+ for (unsigned i = 0; i < length(seqNames); ++i)
+ if (counters[i] != 0u)
+ std::cout << seqNames[i] << '\t' << counters[i] << '\n';
+
+ return 0;
+}
diff --git a/demos/tutorial/gff_and_gtf_io/solution3.cpp b/demos/tutorial/gff_io/solution3.cpp
similarity index 100%
rename from demos/tutorial/gff_and_gtf_io/solution3.cpp
rename to demos/tutorial/gff_io/solution3.cpp
diff --git a/demos/tutorial/graph/CMakeLists.txt b/demos/tutorial/graph/CMakeLists.txt
new file mode 100644
index 0000000..0c447c7
--- /dev/null
+++ b/demos/tutorial/graph/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_graph)
+
+seqan_setup_apps(demos_tutorials_graph)
+seqan_add_all_executables(demos_tutorials_graph tutorial_)
diff --git a/demos/tutorial/graph/graph_algo_scc.cpp b/demos/tutorial/graph/graph_algo_scc.cpp
index 960b93e..83abfdd 100644
--- a/demos/tutorial/graph/graph_algo_scc.cpp
+++ b/demos/tutorial/graph/graph_algo_scc.cpp
@@ -9,6 +9,7 @@ int main()
{
typedef Graph<Directed<> > TGraph;
typedef VertexDescriptor<TGraph>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<TGraph>::Type TEdgeDescriptor;
typedef Size<TGraph>::Type TSize;
//![typedefs]
diff --git a/demos/tutorial/graph/graph_algo_scc.cpp.stdout b/demos/tutorial/graph/graph_algo_scc.cpp.stdout
deleted file mode 100644
index 768722a..0000000
--- a/demos/tutorial/graph/graph_algo_scc.cpp.stdout
+++ /dev/null
@@ -1,35 +0,0 @@
-Adjacency list:
-0 -> 4,
-1 -> 0,
-2 -> 3,1,
-3 -> 2,
-4 -> 1,
-5 -> 6,4,1,
-6 -> 5,2,
-7 -> 7,6,3,
-Edge list:
-Source: 0,Target: 4 (Id: 1)
-Source: 1,Target: 0 (Id: 0)
-Source: 2,Target: 3 (Id: 7)
-Source: 2,Target: 1 (Id: 2)
-Source: 3,Target: 2 (Id: 6)
-Source: 4,Target: 1 (Id: 3)
-Source: 5,Target: 6 (Id: 11)
-Source: 5,Target: 4 (Id: 9)
-Source: 5,Target: 1 (Id: 4)
-Source: 6,Target: 5 (Id: 10)
-Source: 6,Target: 2 (Id: 5)
-Source: 7,Target: 7 (Id: 13)
-Source: 7,Target: 6 (Id: 12)
-Source: 7,Target: 3 (Id: 8)
-
-Iterate from 'a' in depth-first-search ordering: a, e, b,
-Strongly Connected Components:
-Vertex a: Component = 3
-Vertex b: Component = 3
-Vertex c: Component = 2
-Vertex d: Component = 2
-Vertex e: Component = 3
-Vertex f: Component = 1
-Vertex g: Component = 1
-Vertex h: Component = 0
diff --git a/demos/tutorial/graph/graph_dijkstra.cpp.stdout b/demos/tutorial/graph/graph_dijkstra.cpp.stdout
deleted file mode 100644
index 52d0f89..0000000
--- a/demos/tutorial/graph/graph_dijkstra.cpp.stdout
+++ /dev/null
@@ -1,10 +0,0 @@
-0:Berlin
-1:Hamburg
-2:Hannover
-3:Mainz
-4:Munich
-Shortest path from Hannover to Berlin: 286
-Shortest path from Hannover to Hamburg: 575
-Shortest path from Hannover to Hannover: 0
-Shortest path from Hannover to Mainz: 859
-Shortest path from Hannover to Munich: 572
diff --git a/demos/tutorial/graph/graph_hmm.cpp b/demos/tutorial/graph/graph_hmm.cpp
index cd30895..fdc6634 100644
--- a/demos/tutorial/graph/graph_hmm.cpp
+++ b/demos/tutorial/graph/graph_hmm.cpp
@@ -14,6 +14,7 @@ int main()
typedef Size<TAlphabet>::Type TSize;
typedef Graph<Hmm<TAlphabet, TProbability, Default> > THmm;
typedef VertexDescriptor<THmm>::Type TVertexDescriptor;
+ typedef EdgeDescriptor<THmm>::Type TEdgeDescriptor;
//![typedefs]
//![variables]
diff --git a/demos/tutorial/graph/graph_hmm.cpp.stdout b/demos/tutorial/graph/graph_hmm.cpp.stdout
deleted file mode 100644
index 660956e..0000000
--- a/demos/tutorial/graph/graph_hmm.cpp.stdout
+++ /dev/null
@@ -1,26 +0,0 @@
-Alphabet:
-{A,C,G,T}
-States:
-{0 (Silent),1,2,3,4 (Silent)}
-Begin state: 0
-End state: 4
-Transition probabilities:
-0 -> 1 (1)
-1 -> 2 (0.1) ,1 (0.9)
-2 -> 3 (1)
-3 -> 4 (0.1) ,3 (0.9)
-4 ->
-Emission probabilities:
-1: A (0.25) ,C (0.25) ,G (0.25) ,T (0.25)
-2: A (0.05) ,C (0) ,G (0.95) ,T (0)
-3: A (0.4) ,C (0.1) ,G (0.1) ,T (0.4)
-Viterbi algorithm
-Probability of best path: 1.25465e-18
-Sequence:
-C,T,T,C,A,T,G,T,G,A,A,A,G,C,A,G,A,C,G,T,A,A,G,T,C,A,
-State path:
-0 (Silent),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,3,3,3,3,3,3,3,4 (Silent)
-Forward algorithm
-Probability that the HMM generated the sequence: 2.71585e-18
-Backward algorithm
-Probability that the HMM generated the sequence: 2.71585e-18
diff --git a/demos/tutorial/graph/solution_1.cpp.stdout b/demos/tutorial/graph/solution_1.cpp.stdout
deleted file mode 100644
index 5994679..0000000
--- a/demos/tutorial/graph/solution_1.cpp.stdout
+++ /dev/null
@@ -1,10 +0,0 @@
-Adjacency list:
-0 -> 1,
-1 -> 2,
-2 -> 3,
-3 ->
-Edge list:
-Source: 0,Target: 1 (Id: 0)
-Source: 1,Target: 2 (Id: 1)
-Source: 2,Target: 3 (Id: 2)
-
diff --git a/demos/tutorial/index/CMakeLists.txt b/demos/tutorial/index/CMakeLists.txt
new file mode 100644
index 0000000..638d341
--- /dev/null
+++ b/demos/tutorial/index/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_index)
+
+seqan_setup_apps(demos_tutorials_index)
+seqan_add_all_executables(demos_tutorials_index tutorial_)
diff --git a/demos/tutorial/index_iterators/index_assignment1.cpp b/demos/tutorial/index/index_assignment1.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/index_assignment1.cpp
rename to demos/tutorial/index/index_assignment1.cpp
diff --git a/demos/tutorial/index_iterators/index_assignment2.cpp b/demos/tutorial/index/index_assignment2.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/index_assignment2.cpp
rename to demos/tutorial/index/index_assignment2.cpp
diff --git a/demos/tutorial/index_iterators/UNUSED_index_assignment3.cpp b/demos/tutorial/index/index_assignment3.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/UNUSED_index_assignment3.cpp
rename to demos/tutorial/index/index_assignment3.cpp
diff --git a/demos/tutorial/index_iterators/index_assignment4.cpp b/demos/tutorial/index/index_assignment4.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/index_assignment4.cpp
rename to demos/tutorial/index/index_assignment4.cpp
diff --git a/demos/tutorial/q_gram_index/index_assignment5.cpp b/demos/tutorial/index/index_assignment5.cpp
similarity index 100%
rename from demos/tutorial/q_gram_index/index_assignment5.cpp
rename to demos/tutorial/index/index_assignment5.cpp
diff --git a/demos/tutorial/q_gram_index/index_assignment6.cpp b/demos/tutorial/index/index_assignment6.cpp
similarity index 100%
rename from demos/tutorial/q_gram_index/index_assignment6.cpp
rename to demos/tutorial/index/index_assignment6.cpp
diff --git a/demos/tutorial/index_iterators/index_preorder.cpp b/demos/tutorial/index/index_preorder.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/index_preorder.cpp
rename to demos/tutorial/index/index_preorder.cpp
diff --git a/demos/tutorial/index_iterators/index_property_maps.cpp b/demos/tutorial/index/index_property_maps.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/index_property_maps.cpp
rename to demos/tutorial/index/index_property_maps.cpp
diff --git a/demos/tutorial/q_gram_index/index_qgram.cpp b/demos/tutorial/index/index_qgram.cpp
similarity index 100%
rename from demos/tutorial/q_gram_index/index_qgram.cpp
rename to demos/tutorial/index/index_qgram.cpp
diff --git a/demos/tutorial/q_gram_index/index_qgram_hash.cpp b/demos/tutorial/index/index_qgram_hash.cpp
similarity index 100%
rename from demos/tutorial/q_gram_index/index_qgram_hash.cpp
rename to demos/tutorial/index/index_qgram_hash.cpp
diff --git a/demos/tutorial/index_iterators/index_search.cpp b/demos/tutorial/index/index_search.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/index_search.cpp
rename to demos/tutorial/index/index_search.cpp
diff --git a/demos/tutorial/index_iterators/index_search2.cpp b/demos/tutorial/index/index_search2.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/index_search2.cpp
rename to demos/tutorial/index/index_search2.cpp
diff --git a/demos/tutorial/indices/assignment_1.cpp b/demos/tutorial/index/indices_assignment_1.cpp
similarity index 100%
rename from demos/tutorial/indices/assignment_1.cpp
rename to demos/tutorial/index/indices_assignment_1.cpp
diff --git a/demos/tutorial/indices/assignment_2.cpp b/demos/tutorial/index/indices_assignment_2.cpp
similarity index 100%
rename from demos/tutorial/indices/assignment_2.cpp
rename to demos/tutorial/index/indices_assignment_2.cpp
diff --git a/demos/tutorial/index_iterators/iterator_solution1.cpp b/demos/tutorial/index/iterator_solution1.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/iterator_solution1.cpp
rename to demos/tutorial/index/iterator_solution1.cpp
diff --git a/demos/tutorial/index_iterators/iterator_solution2.cpp b/demos/tutorial/index/iterator_solution2.cpp
similarity index 100%
rename from demos/tutorial/index_iterators/iterator_solution2.cpp
rename to demos/tutorial/index/iterator_solution2.cpp
diff --git a/demos/tutorial/index_iterators/UNUSED_index_assignment3.cpp.stdout b/demos/tutorial/index_iterators/UNUSED_index_assignment3.cpp.stdout
deleted file mode 100644
index dc5b0d9..0000000
--- a/demos/tutorial/index_iterators/UNUSED_index_assignment3.cpp.stdout
+++ /dev/null
@@ -1,16 +0,0 @@
-
-be
-beornottobe
-e
-eornottobe
-nottobe
-o
-obe
-obeornottobe
-ornottobe
-ottobe
-rnottobe
-t
-tobe
-tobeornottobe
-ttobe
diff --git a/demos/tutorial/index_iterators/index_assignment1.cpp.stdout b/demos/tutorial/index_iterators/index_assignment1.cpp.stdout
deleted file mode 100644
index f6200a5..0000000
--- a/demos/tutorial/index_iterators/index_assignment1.cpp.stdout
+++ /dev/null
@@ -1,111 +0,0 @@
-alkovich
-beeonthecomb
-beingjohnmalkovich
-beornottobe
-be
-b
-ch
-comb
-c
-ebeeonthecomb
-ecomb
-eeonthecomb
-eingjohnmalkovich
-eonthecomb
-eornottobe
-eo
-e
-gjohnmalkovich
-hebeeonthecomb
-hecomb
-he
-hnmalkovich
-h
-ich
-ingjohnmalkovich
-i
-johnmalkovich
-kovich
-lkovich
-malkovich
-mb
-m
-ngjohnmalkovich
-nmalkovich
-nottobe
-nthecomb
-n
-obeornottobe
-obe
-ohnmalkovich
-omb
-onthecomb
-ornottobe
-ottobe
-ovich
-o
-rnottobe
-thebeeonthecomb
-thecomb
-the
-tobeornottobe
-tobe
-ttobe
-t
-vich
-
-alkovich
-beeonthecomb
-beingjohnmalkovich
-beornottobe
-be
-b
-ch
-comb
-c
-ebeeonthecomb
-ecomb
-eeonthecomb
-eingjohnmalkovich
-eonthecomb
-eornottobe
-eo
-e
-gjohnmalkovich
-hebeeonthecomb
-hecomb
-he
-hnmalkovich
-h
-ich
-ingjohnmalkovich
-i
-johnmalkovich
-kovich
-lkovich
-malkovich
-mb
-m
-ngjohnmalkovich
-nmalkovich
-nottobe
-nthecomb
-n
-obeornottobe
-obe
-ohnmalkovich
-omb
-onthecomb
-ornottobe
-ottobe
-ovich
-o
-rnottobe
-thebeeonthecomb
-thecomb
-the
-tobeornottobe
-tobe
-ttobe
-t
-vich
diff --git a/demos/tutorial/index_iterators/index_assignment2.cpp.stdout b/demos/tutorial/index_iterators/index_assignment2.cpp.stdout
deleted file mode 100644
index ccda7f1..0000000
--- a/demos/tutorial/index_iterators/index_assignment2.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-CD
-FG
-HC
diff --git a/demos/tutorial/index_iterators/index_assignment4.cpp.stdout b/demos/tutorial/index_iterators/index_assignment4.cpp.stdout
deleted file mode 100644
index 5f658ce..0000000
--- a/demos/tutorial/index_iterators/index_assignment4.cpp.stdout
+++ /dev/null
@@ -1,14 +0,0 @@
-
-be
-e
-o
-obe
-t
-
-
-be
-e
-o
-obe
-t
-
diff --git a/demos/tutorial/index_iterators/index_preorder.cpp.stdout b/demos/tutorial/index_iterators/index_preorder.cpp.stdout
deleted file mode 100644
index 120f4a4..0000000
--- a/demos/tutorial/index_iterators/index_preorder.cpp.stdout
+++ /dev/null
@@ -1,12 +0,0 @@
-
-a
-abra
-abracadabra
-acadabra
-adabra
-bra
-bracadabra
-cadabra
-dabra
-ra
-racadabra
diff --git a/demos/tutorial/index_iterators/index_property_maps.cpp.stdout b/demos/tutorial/index_iterators/index_property_maps.cpp.stdout
deleted file mode 100644
index 00d4c7d..0000000
--- a/demos/tutorial/index_iterators/index_property_maps.cpp.stdout
+++ /dev/null
@@ -1,12 +0,0 @@
-0
-1 a
-2 abra
-3 abracadabra
-2 acadabra
-2 adabra
-1 bra
-2 bracadabra
-1 cadabra
-1 dabra
-1 ra
-2 racadabra
diff --git a/demos/tutorial/index_iterators/index_search.cpp.stdout b/demos/tutorial/index_iterators/index_search.cpp.stdout
deleted file mode 100644
index 2eb0624..0000000
--- a/demos/tutorial/index_iterators/index_search.cpp.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-w
-wo
-wood
-9
-22
diff --git a/demos/tutorial/index_iterators/index_search2.cpp.stdout b/demos/tutorial/index_iterators/index_search2.cpp.stdout
deleted file mode 100644
index 86a6d3a..0000000
--- a/demos/tutorial/index_iterators/index_search2.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-9
-22
diff --git a/demos/tutorial/index_iterators/iterator_solution1.cpp.stdout b/demos/tutorial/index_iterators/iterator_solution1.cpp.stdout
deleted file mode 100644
index d0f90ab..0000000
--- a/demos/tutorial/index_iterators/iterator_solution1.cpp.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-w
-wo
-wood
-< 1 , 1 >
-< 2 , 3 >
diff --git a/demos/tutorial/index_iterators/iterator_solution2.cpp.stdout b/demos/tutorial/index_iterators/iterator_solution2.cpp.stdout
deleted file mode 100644
index dc5b0d9..0000000
--- a/demos/tutorial/index_iterators/iterator_solution2.cpp.stdout
+++ /dev/null
@@ -1,16 +0,0 @@
-
-be
-beornottobe
-e
-eornottobe
-nottobe
-o
-obe
-obeornottobe
-ornottobe
-ottobe
-rnottobe
-t
-tobe
-tobeornottobe
-ttobe
diff --git a/demos/tutorial/indices/assignment_1.cpp.stdout b/demos/tutorial/indices/assignment_1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/indices/assignment_2.cpp.stdout b/demos/tutorial/indices/assignment_2.cpp.stdout
deleted file mode 100644
index 4d5b7a3..0000000
--- a/demos/tutorial/indices/assignment_2.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-24
-18
diff --git a/demos/tutorial/iterators/assignment_1_solution.cpp.stdout b/demos/tutorial/iterators/assignment_1_solution.cpp.stdout
deleted file mode 100644
index 9ed0038..0000000
--- a/demos/tutorial/iterators/assignment_1_solution.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Modified genome: AATGGTTACAACAGTAAATGCTGAAAAACATGTACGCGTGTA
diff --git a/demos/tutorial/iterators/assignment_2_solution.cpp.stdout b/demos/tutorial/iterators/assignment_2_solution.cpp.stdout
deleted file mode 100644
index 9ed0038..0000000
--- a/demos/tutorial/iterators/assignment_2_solution.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Modified genome: AATGGTTACAACAGTAAATGCTGAAAAACATGTACGCGTGTA
diff --git a/demos/tutorial/iterators/assignment_3_workshop_solution.cpp b/demos/tutorial/iterators/assignment_3_workshop_solution.cpp
deleted file mode 100644
index 27ed533..0000000
--- a/demos/tutorial/iterators/assignment_3_workshop_solution.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-
-using namespace seqan;
-// Function to print simple alignment between two sequences with the same length
-template <typename TText1, typename TText2>
-void printAlign(TText1 const & genomeFragment, TText2 const & read)
-{
- std::cout << "Alignment " << std::endl;
- std::cout << " genome : " << genomeFragment << std::endl;
- std::cout << " read : " << read << std::endl;
-}
-
-int main(int, char const **)
-{
- // Build reads and genomes
- DnaString chr1 = "TATAATATTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCTAGATGTGCAGCTCGATCGAATGCACGTGTGTGCGATCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATTTAG";
-
- // Build List containing all reads
- typedef String<DnaString> TDnaList;
- TDnaList readList;
- resize(readList, 4);
- readList[0] = "TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT";
- readList[1] = "TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT";
- readList[2] = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA";
- readList[3] = "CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA";
-
- // Append a second chromosome sequence fragment to chr1
- DnaString chr2 = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACACGTCTCTGTGTTCCGACGTGTGTCACGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACACATGCTGCTG";
- append(chr1, chr2);
-
- // Print readlist
- std::cout << " \n Read list: " << std::endl;
- for (unsigned i = 0; i < length(readList); ++i)
- std::cout << readList[i] << std::endl;
-
- // Assume we have mapped the 4 reads to chr1 (and chr2) and now have the mapping start positions (no gaps).
- // Store the start position in a String alignPosList: 7, 100, 172, 272
- String<unsigned> alignPosList;
- resize(alignPosList, 4);
- alignPosList[0] = 7;
- alignPosList[1] = 100;
- alignPosList[2] = 172;
- alignPosList[3] = 272;
-
- // Print alignments using Segment
- std::cout << " \n Print alignment using Segment: " << std::endl;
- for (unsigned i = 0; i < length(readList); ++i)
- {
- // Temporary copy of begin and end position (beginPosition) from alignPosList
- // of a given alignment between the read and the genome
- unsigned beginPosition = alignPosList[i];
- unsigned endPosition = beginPosition + length(readList[i]);
- // Build infix
- Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
- // Call of our function to print the simple alignment
- printAlign(genomeFragment, readList[i]);
- }
- // Iterators :)
- // Print alignments using Iterators: Do the same as above, but use Iterators to iterate over the read list.
- // First, use Standard Iterators.
- Iterator<TDnaList>::Type it = begin(readList);
- Iterator<TDnaList, Standard>::Type itEnd = end(readList); //same Iterator as above
-
- std::cout << " \n Print alignment using Standard Iterators: " << std::endl;
- for (; it != itEnd; goNext(it))
- {
- // Get the right index for alignPosList
- int i = position(it, readList);
- // Temporary copy of begin and end position (beginPosition) from alignPosList
- // of a given alignment between the read and the genome
- unsigned beginPosition = alignPosList[i];
- unsigned endPosition = beginPosition + length(value(it));
- // Build Infix
- Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
- // Call of our function to print the simple alignment
- printAlign(genomeFragment, value(it));
- }
-
- return 0;
-}
diff --git a/demos/tutorial/iterators/assignment_3_workshop_solution.cpp.stdout b/demos/tutorial/iterators/assignment_3_workshop_solution.cpp.stdout
deleted file mode 100644
index ddfd5a6..0000000
--- a/demos/tutorial/iterators/assignment_3_workshop_solution.cpp.stdout
+++ /dev/null
@@ -1,34 +0,0 @@
-
- Read list:
-TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Segment:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Standard Iterators:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
diff --git a/demos/tutorial/iterators/assignment_4_workshop_solution.cpp b/demos/tutorial/iterators/assignment_4_workshop_solution.cpp
deleted file mode 100644
index 8c213cd..0000000
--- a/demos/tutorial/iterators/assignment_4_workshop_solution.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-
-using namespace seqan;
-// Function to print simple alignment between two sequences with the same length
-template <typename TText1, typename TText2>
-void printAlign(TText1 const & genomeFragment, TText2 const & read)
-{
- std::cout << "Alignment " << std::endl;
- std::cout << " genome : " << genomeFragment << std::endl;
- std::cout << " read : " << read << std::endl;
-}
-
-int main(int, char const **)
-{
- // Build reads and genomes
- DnaString chr1 = "TATAATATTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCTAGATGTGCAGCTCGATCGAATGCACGTGTGTGCGATCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATTTAG";
- // Build List containing all reads
- typedef String<DnaString> TDnaList;
- TDnaList readList;
- resize(readList, 4);
- readList[0] = "TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT";
- readList[1] = "TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT";
- readList[2] = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA";
- readList[3] = "CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA";
- // Append a second chromosome sequence fragment to chr1
- DnaString chr2 = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACACGTCTCTGTGTTCCGACGTGTGTCACGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACACATGCTGCTG";
- append(chr1, chr2);
- // Print readlist
- std::cout << " \n Read list: " << std::endl;
- for (unsigned i = 0; i < length(readList); ++i)
- std::cout << readList[i] << std::endl;
- // Assume we have mapped the 4 reads to chr1 (and chr2) and now have the mapping start positions (no gaps).
- // Store the start position in a String alignPosList: 7, 100, 172, 272
- String<unsigned> alignPosList;
- resize(alignPosList, 4);
- alignPosList[0] = 7;
- alignPosList[1] = 100;
- alignPosList[2] = 172;
- alignPosList[3] = 272;
- // Print alignments using Segment
- std::cout << " \n Print alignment using Segment: " << std::endl;
- for (unsigned i = 0; i < length(readList); ++i)
- {
- // Temporary copy of begin and end position (beginPosition) from alignPosList
- // of a given alignment between the read and the genome
- unsigned beginPosition = alignPosList[i];
- unsigned endPosition = beginPosition + length(readList[i]);
- // Build infix
- Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
- // Call of our function to print the simple alignment
- printAlign(genomeFragment, readList[i]);
- }
- // Iterators :)
- // Print alignments using Iterators: Do the same as above, but use Iterators to iterate over the read list.
- // First, use Standard Iterators.
- Iterator<TDnaList>::Type it = begin(readList);
- Iterator<TDnaList, Standard>::Type itEnd = end(readList); //same Iterator as above
-
- std::cout << " \n Print alignment using Standard Iterators: " << std::endl;
- for (; it != itEnd; goNext(it))
- {
- // Get the right index for alignPosList
- int i = position(it, readList);
- // Temporary copy of begin and end position (beginPosition) from alignPosList
- // of a given alignment between the read and the genome
- unsigned beginPosition = alignPosList[i];
- unsigned endPosition = beginPosition + length(value(it));
- // Build Infix
- Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
- // Call of our function to print the simple alignment
- printAlign(genomeFragment, value(it));
- }
- // Now, use Rooted Iterators.
- Iterator<TDnaList, Rooted>::Type it2 = begin(readList);
- std::cout << " \n Print alignment using Rooted Iterators: " << std::endl;
- for (; !atEnd(it2); goNext(it2))
- {
- int i = position(it2);
- // Temporary copy of begin and end position (beginPosition) from alignPosList
- // of a given alignment between the read and the genome
- unsigned beginPosition = alignPosList[i];
- unsigned endPosition = beginPosition + length(value(it2));
- // Build Infix
- Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
- // Call of our function to print the simple alignment
- printAlign(genomeFragment, value(it2));
- }
- return 0;
-}
diff --git a/demos/tutorial/iterators/assignment_4_workshop_solution.cpp.stdout b/demos/tutorial/iterators/assignment_4_workshop_solution.cpp.stdout
deleted file mode 100644
index cc3d034..0000000
--- a/demos/tutorial/iterators/assignment_4_workshop_solution.cpp.stdout
+++ /dev/null
@@ -1,48 +0,0 @@
-
- Read list:
-TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Segment:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Standard Iterators:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Rooted Iterators:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
diff --git a/demos/tutorial/iterators/assignment_1_solution.cpp b/demos/tutorial/iterators/iterators_assignment_1_solution.cpp
similarity index 100%
rename from demos/tutorial/iterators/assignment_1_solution.cpp
rename to demos/tutorial/iterators/iterators_assignment_1_solution.cpp
diff --git a/demos/tutorial/iterators/assignment_2_solution.cpp b/demos/tutorial/iterators/iterators_assignment_2_solution.cpp
similarity index 100%
rename from demos/tutorial/iterators/assignment_2_solution.cpp
rename to demos/tutorial/iterators/iterators_assignment_2_solution.cpp
diff --git a/demos/tutorial/iterators/iterators_assignment_3_workshop_solution.cpp b/demos/tutorial/iterators/iterators_assignment_3_workshop_solution.cpp
new file mode 100644
index 0000000..6e46fd9
--- /dev/null
+++ b/demos/tutorial/iterators/iterators_assignment_3_workshop_solution.cpp
@@ -0,0 +1,82 @@
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+
+using namespace seqan;
+// Function to print simple alignment between two sequences with the same length
+template <typename TText1, typename TText2>
+void printAlign(TText1 const & genomeFragment, TText2 const & read)
+{
+ std::cout << "Alignment " << std::endl;
+ std::cout << " genome : " << genomeFragment << std::endl;
+ std::cout << " read : " << read << std::endl;
+}
+
+int main(int, char const **)
+{
+ // Build reads and genomes
+ DnaString chr1 = "TATAATATTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCTAGATGTGCAGCTCGATCGAATGCACGTGTGTGCGATCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATTTAG";
+
+ // Build List containing all reads
+ typedef String<DnaString> TDnaList;
+ TDnaList readList;
+ resize(readList, 4);
+ readList[0] = "TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT";
+ readList[1] = "TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT";
+ readList[2] = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA";
+ readList[3] = "CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA";
+
+ // Append a second chromosome sequence fragment to chr1
+ DnaString chr2 = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACACGTCTCTGTGTTCCGACGTGTGTCACGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACACATGCTGCTG";
+ append(chr1, chr2);
+
+ // Print readlist
+ std::cout << " \n Read list: " << std::endl;
+ for (unsigned i = 0; i < length(readList); ++i)
+ std::cout << readList[i] << std::endl;
+
+ // Assume we have mapped the 4 reads to chr1 (and chr2) and now have the mapping start positions (no gaps).
+ // Store the start position in a String alignPosList: 7, 100, 172, 272
+ String<unsigned> alignPosList;
+ resize(alignPosList, 4);
+ alignPosList[0] = 7;
+ alignPosList[1] = 100;
+ alignPosList[2] = 172;
+ alignPosList[3] = 272;
+
+ // Print alignments using Segment
+ std::cout << " \n Print alignment using Segment: " << std::endl;
+ for (unsigned i = 0; i < length(readList); ++i)
+ {
+ // Temporary copy of begin and end position (beginPosition) from alignPosList
+ // of a given alignment between the read and the genome
+ unsigned beginPosition = alignPosList[i];
+ unsigned endPosition = beginPosition + length(readList[i]);
+ // Build infix
+ Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, readList[i]);
+ }
+ // Iterators :)
+ // Print alignments using Iterators: Do the same as above, but use Iterators to iterate over the read list.
+ // First, use Standard Iterators.
+ Iterator<TDnaList>::Type it = begin(readList);
+ Iterator<TDnaList, Standard>::Type itEnd = end(readList); //same Iterator as above
+
+ std::cout << " \n Print alignment using Standard Iterators: " << std::endl;
+ for (; it != itEnd; goNext(it))
+ {
+ // Get the right index for alignPosList
+ int i = position(it, readList);
+ // Temporary copy of begin and end position (beginPosition) from alignPosList
+ // of a given alignment between the read and the genome
+ unsigned beginPosition = alignPosList[i];
+ unsigned endPosition = beginPosition + length(value(it));
+ // Build Infix
+ Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, value(it));
+ }
+
+ return 1;
+}
diff --git a/demos/tutorial/iterators/iterators_assignment_4_workshop_solution.cpp b/demos/tutorial/iterators/iterators_assignment_4_workshop_solution.cpp
new file mode 100644
index 0000000..e544ddb
--- /dev/null
+++ b/demos/tutorial/iterators/iterators_assignment_4_workshop_solution.cpp
@@ -0,0 +1,91 @@
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+
+using namespace seqan;
+// Function to print simple alignment between two sequences with the same length
+template <typename TText1, typename TText2>
+void printAlign(TText1 const & genomeFragment, TText2 const & read)
+{
+ std::cout << "Alignment " << std::endl;
+ std::cout << " genome : " << genomeFragment << std::endl;
+ std::cout << " read : " << read << std::endl;
+}
+
+int main(int, char const **)
+{
+ // Build reads and genomes
+ DnaString chr1 = "TATAATATTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCTAGATGTGCAGCTCGATCGAATGCACGTGTGTGCGATCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATTTAG";
+ // Build List containing all reads
+ typedef String<DnaString> TDnaList;
+ TDnaList readList;
+ resize(readList, 4);
+ readList[0] = "TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT";
+ readList[1] = "TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT";
+ readList[2] = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA";
+ readList[3] = "CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA";
+ // Append a second chromosome sequence fragment to chr1
+ DnaString chr2 = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACACGTCTCTGTGTTCCGACGTGTGTCACGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACACATGCTGCTG";
+ append(chr1, chr2);
+ // Print readlist
+ std::cout << " \n Read list: " << std::endl;
+ for (unsigned i = 0; i < length(readList); ++i)
+ std::cout << readList[i] << std::endl;
+ // Assume we have mapped the 4 reads to chr1 (and chr2) and now have the mapping start positions (no gaps).
+ // Store the start position in a String alignPosList: 7, 100, 172, 272
+ String<unsigned> alignPosList;
+ resize(alignPosList, 4);
+ alignPosList[0] = 7;
+ alignPosList[1] = 100;
+ alignPosList[2] = 172;
+ alignPosList[3] = 272;
+ // Print alignments using Segment
+ std::cout << " \n Print alignment using Segment: " << std::endl;
+ for (unsigned i = 0; i < length(readList); ++i)
+ {
+ // Temporary copy of begin and end position (beginPosition) from alignPosList
+ // of a given alignment between the read and the genome
+ unsigned beginPosition = alignPosList[i];
+ unsigned endPosition = beginPosition + length(readList[i]);
+ // Build infix
+ Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, readList[i]);
+ }
+ // Iterators :)
+ // Print alignments using Iterators: Do the same as above, but use Iterators to iterate over the read list.
+ // First, use Standard Iterators.
+ Iterator<TDnaList>::Type it = begin(readList);
+ Iterator<TDnaList, Standard>::Type itEnd = end(readList); //same Iterator as above
+
+ std::cout << " \n Print alignment using Standard Iterators: " << std::endl;
+ for (; it != itEnd; goNext(it))
+ {
+ // Get the right index for alignPosList
+ int i = position(it, readList);
+ // Temporary copy of begin and end position (beginPosition) from alignPosList
+ // of a given alignment between the read and the genome
+ unsigned beginPosition = alignPosList[i];
+ unsigned endPosition = beginPosition + length(value(it));
+ // Build Infix
+ Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, value(it));
+ }
+ // Now, use Rooted Iterators.
+ Iterator<TDnaList, Rooted>::Type it2 = begin(readList);
+ std::cout << " \n Print alignment using Rooted Iterators: " << std::endl;
+ for (; !atEnd(it2); goNext(it2))
+ {
+ int i = position(it2);
+ // Temporary copy of begin and end position (beginPosition) from alignPosList
+ // of a given alignment between the read and the genome
+ unsigned beginPosition = alignPosList[i];
+ unsigned endPosition = beginPosition + length(value(it2));
+ // Build Infix
+ Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, value(it2));
+ }
+ return 1;
+}
diff --git a/demos/tutorial/iterators/sequence_iterator_demo.cpp.stdout b/demos/tutorial/iterators/sequence_iterator_demo.cpp.stdout
deleted file mode 100644
index fa8abe5..0000000
--- a/demos/tutorial/iterators/sequence_iterator_demo.cpp.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-TATANNNGCGCG
-TATANNNGCGCG
-ATATNNNCGCGC
-GCGCGNNNATAT
-NATANNNGCGCG
diff --git a/demos/tutorial/journaled_set/example_join.cpp.stdout b/demos/tutorial/journaled_set/example_join.cpp.stdout
deleted file mode 100644
index 1b8dfd1..0000000
--- a/demos/tutorial/journaled_set/example_join.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Reference: DPKKPRGKMSSYAFFVQTSREEHKKKHPDASVNFSEFSKKCSERWKTMSAKEKGKFEDMAKADKARYEREMKTYIPPKGE
-Journaled Sequence 0: DPKKPRGKMVNSPPAFFVQTSREEHKKKHPDASVFSKKCSERWKTMSAKEKGKFEDMAKARYEREMKTTYIPKGETYIPPKGE
-Journaled Sequence 1: DPHHPPKPRGKMVNSPPAFFVQTSREEHKPDASVFSKKCSERRMPNHHTMSAKEKGKFEDMAKARYEREMKTTYIPKGETYIPPKGE
-Journaled Sequence 2: DPKKPRGKMSSYAFFVQTSREEHKKKHPKKCDEFSKKCSERWKTMSAKEKGKFEDARYEREMKTYIPPKGE
diff --git a/demos/tutorial/journaled_set/example_journal_string_basic.cpp b/demos/tutorial/journaled_set/example_journal_string_basic.cpp
deleted file mode 100644
index 63532d5..0000000
--- a/demos/tutorial/journaled_set/example_journal_string_basic.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-//![main]
-#include <seqan/stream.h>
-#include <seqan/sequence_journaled.h>
-
-using namespace seqan;
-
-int main()
-{
-//![main]
-//![typedef]
- typedef String<char, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournaledString;
- typedef Host<TJournaledString>::Type THost;
-//![typedef]
-
-//![init]
- THost hostStr = "thisisahostsequence";
- TJournaledString journalStr;
- setHost(journalStr, hostStr);
-
- std::cout << "After creating the Journaled String:" << std::endl;
- std::cout << "Host: " << host(journalStr) << std::endl;
- std::cout << "Journal: " << journalStr << std::endl;
- std::cout << "Nodes: " << journalStr._journalEntries << std::endl;
- std::cout << std::endl;
-//![init]
-
-//![modification]
- insert(journalStr, 7, "modified");
- erase(journalStr, 19, 27);
-
- std::cout << "After modifying the Journaled String:" << std::endl;
- std::cout << "Host: " << host(journalStr) << std::endl;
- std::cout << "Journal: " << journalStr << std::endl;
- std::cout << "Nodes: " << journalStr._journalEntries << std::endl;
- std::cout << std::endl;
-//![modification]
-
-//![flatten]
- flatten(journalStr);
- std::cout << "After flatten the Journaled String:" << std::endl;
- std::cout << "Host: " << host(journalStr) << std::endl;
- std::cout << "Journal: " << journalStr << std::endl;
- std::cout << "Nodes: " << journalStr._journalEntries << std::endl;
-
- return 0;
-}
-//![flatten]
diff --git a/demos/tutorial/journaled_set/example_journal_string_basic.cpp.stdout b/demos/tutorial/journaled_set/example_journal_string_basic.cpp.stdout
deleted file mode 100644
index ae1ab01..0000000
--- a/demos/tutorial/journaled_set/example_journal_string_basic.cpp.stdout
+++ /dev/null
@@ -1,14 +0,0 @@
-After creating the Journaled String:
-Host: thisisahostsequence
-Journal: thisisahostsequence
-Nodes: JournalEntries({segmentSource=1, virtualPosition=0, physicalPosition=0, physicalOriginPosition=0, length=19})
-
-After modifying the Journaled String:
-Host: thisisahostsequence
-Journal: thisisamodifiedhost
-Nodes: JournalEntries({segmentSource=1, virtualPosition=0, physicalPosition=0, physicalOriginPosition=0, length=7}, {segmentSource=2, virtualPosition=7, physicalPosition=0, physicalOriginPosition=0, length=8}, {segmentSource=1, virtualPosition=15, physicalPosition=7, physicalOriginPosition=7, length=4})
-
-After flatten the Journaled String:
-Host: thisisamodifiedhost
-Journal: thisisamodifiedhost
-Nodes: JournalEntries({segmentSource=1, virtualPosition=0, physicalPosition=0, physicalOriginPosition=0, length=19})
diff --git a/demos/tutorial/journaled_set/example_online_search.cpp b/demos/tutorial/journaled_set/example_online_search.cpp
deleted file mode 100644
index 8145bda..0000000
--- a/demos/tutorial/journaled_set/example_online_search.cpp
+++ /dev/null
@@ -1,309 +0,0 @@
-//![include]
-#include <iostream>
-#include <seqan/seq_io.h>
-#include <seqan/journaled_set.h>
-
-using namespace seqan;
-//![include]
-
-//![searchAtBorder]
-template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
-void _searchAtBorder(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TJournal const & journal,
- TPattern const & pattern)
-{
- typedef typename Iterator<TJournal const, Standard>::Type TJournalIterator;
-
- // Define region before the border to the next node to search for the pattern.
- TJournalIterator nodeIter = iter(journal, entriesIt->virtualPosition +
- _max(0, (int) entriesIt->length - (int) length(pattern) + 1));
- // Define end of search region.
- TJournalIterator nodeEnd = iter(journal, _min(entriesIt->virtualPosition + entriesIt->length, length(journal) -
- length(pattern) + 1));
- // Move step by step over search region.
- if (nodeEnd == end(journal))
- return;
-
- for (; nodeIter != nodeEnd; ++nodeIter)
- {
- // Define compare iterator.
- TJournalIterator verifyIter = nodeIter;
- bool isHit = true;
- // Compare pattern with current search window.
- for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern, ++verifyIter)
- {
- // Comparing the pattern value with the current value of the iterator.
- if (pattern[posPattern] != getValue(verifyIter))
- {
- isHit = false;
- break;
- }
- }
- // Report hit if found.
- if (isHit)
- appendValue(hitTarget, position(nodeIter));
- }
-}
-//![searchAtBorder]
-
-//![findInPatchNodePart1]
-template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
-void _findInPatchNode(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TJournal const & journal,
- TPattern const & pattern)
-{
- typedef typename Iterator<TJournal const, Standard>::Type TJournalIterator;
-//![findInPatchNodePart1]
-
-//![findInPatchNodePart2]
- // Search for pattern in the insertion node.
- TJournalIterator patchIter = iter(journal, entriesIt->virtualPosition);
- TJournalIterator patchEnd = patchIter + _max(0, (int)entriesIt->length - (int)length(pattern) + 1);
- // Move step by step over search region.
- for (; patchIter != patchEnd; ++patchIter)
- {
-//![findInPatchNodePart2]
-//![findInPatchNodePart3]
- TJournalIterator verifyIter = patchIter;
- bool isHit = true;
- // Search for pattern in the insertion node.
- for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern, ++verifyIter)
- {
- // Comparing the pattern value with the current value of the iterator.
- if (pattern[posPattern] != getValue(verifyIter))
- {
- isHit = false;
- break;
- }
- }
- if (isHit)
- appendValue(hitTarget, position(patchIter));
- }
-}
-//![findInPatchNodePart3]
-
-//![findInOriginalNode]
-template <typename TJournalEntriesIterator, typename TPattern>
-void _findInOriginalNode(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TPattern const & pattern,
- String<int> const & refHits)
-{
- // Define an Iterator which iterates over the reference hit set.
- typedef typename Iterator<String<int> const, Standard>::Type THitIterator;
-
- // Check if hits exist in the reference.
- if (!empty(refHits))
- {
- // Find upper bound to physical position in sorted refHits.
- THitIterator itHit = std::upper_bound(begin(refHits), end(refHits), (int)entriesIt->physicalPosition);
- // Make sure we do not miss hits that begin at physical position of current node.
- if (itHit != begin(refHits) && *(itHit - 1) >= (int)entriesIt->physicalPosition)
- --itHit;
- // Store all hits that are found in the region of the reference which is covered by this node.
- while ((int)*itHit < ((int)entriesIt->physicalPosition + (int)entriesIt->length - (int)length(pattern) + 1) && itHit != end(refHits))
- {
- appendValue(hitTarget, entriesIt->virtualPosition + (*itHit - (int)entriesIt->physicalPosition));
- ++itHit;
- }
- }
-}
-//![findInOriginalNode]
-
-//![findPatternInJournalStringPart1]
-template <typename TValue, typename THostSpec, typename TJournalSpec, typename TBufferSpec, typename TPattern>
-void findPatternInJournalString(String<int> & hitTarget,
- String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const & journal,
- TPattern const & pattern,
- String<int> const & refHits)
-{
- typedef String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const TJournal;
- typedef typename JournalType<TJournal>::Type TJournalEntries;
- typedef typename Iterator<TJournalEntries>::Type TJournalEntriesIterator;
-
- if (length(pattern) > length(journal))
- return;
-//![findPatternInJournalStringPart1]
-
-//![findPatternInJournalStringPart2]
- TJournalEntriesIterator it = begin(journal._journalEntries);
- TJournalEntriesIterator itEnd = findInJournalEntries(journal._journalEntries, length(journal) - length(pattern) + 1) + 1;
-//![findPatternInJournalStringPart2]
-
-//![findPatternInJournalStringPart3]
- while (it != itEnd)
- {
- if (it->segmentSource == SOURCE_ORIGINAL) // Find a possible hit in the current source vertex.
- {
- _findInOriginalNode(hitTarget, it, pattern, refHits);
- }
- if (it->segmentSource == SOURCE_PATCH) // Search for pattern within the patch node.
- {
- _findInPatchNode(hitTarget, it, journal, pattern);
- }
- // Scan the border for a possible match.
- _searchAtBorder(hitTarget, it, journal, pattern);
- ++it;
- }
-}
-//![findPatternInJournalStringPart3]
-
-//![findPatternInReference]
-template <typename TString, typename TPattern>
-void findPatternInReference(String<int> & hits,
- TString const & reference,
- TPattern const & pattern)
-{
- // Check whether the pattern fits into the sequence.
- if (length(pattern) > length(reference))
- return;
-
- //
- for (unsigned pos = 0; pos < length(reference) - length(pattern) + 1; ++pos)
- {
- bool isHit = true;
-
- for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern)
- {
- if (pattern[posPattern] != reference[posPattern + pos])
- {
- isHit = false;
- break;
- }
- }
- // Report the position if found a hit.
- if (isHit)
- appendValue(hits, pos);
- }
-}
-//![findPatternInReference]
-
-//![searchPatternPart1]
-template <typename TString, typename TPattern>
-void searchPattern(StringSet<String<int> > & hitSet,
- StringSet<TString, Owner<JournaledSet> > const & journalSet,
- TPattern const & pattern)
-{
- typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
- typedef typename Host<TJournalSet const>::Type THost;
-
- // Check for valid initial state.
- if (empty(host(journalSet)))
- {
- std::cout << "No reference set. Aborted search!" << std::endl;
- return;
- }
-
- // Reset the hitSet to avoid phantom hits coming from a previous search.
- clear(hitSet);
- resize(hitSet, length(journalSet) + 1);
-//![searchPatternPart1]
-//![searchPatternPart2]
- // Access the reference sequence.
- THost & globalRef = host(journalSet);
- // Search for pattern in the reference sequence.
- findPatternInReference(hitSet[0], globalRef, pattern);
-//![searchPatternPart2]
-
-//![searchPatternPart3]
- // Search for pattern in the journaled sequences.
- for (unsigned i = 0; i < length(journalSet); ++i)
- findPatternInJournalString(hitSet[i + 1], journalSet[i], pattern, hitSet[0]);
-}
-//![searchPatternPart3]
-
-//![laodAndJoin]
-template <typename TString, typename TSpec>
-inline int
-loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
- SeqFileIn & databaseFile,
- JoinConfig<TSpec> const & joinConfig)
-{
- typedef typename Host<TString>::Type THost;
-
- clear(journalSet);
-
- String<char> seqId;
- THost sequence;
-
- // No sequences in the fasta file!
- if (atEnd(databaseFile))
- {
- std::cerr << "Empty FASTA file." << std::endl;
- return -1;
- }
- // First read sequence for reference sequence.
- readRecord(seqId, sequence, databaseFile);
-
- // We have to create the global reference sequence otherwise we loose the information after this function terminates.
- createHost(journalSet, sequence);
-
- // If there are more
- while (!atEnd(databaseFile))
- {
- readRecord(seqId, sequence, databaseFile);
- appendValue(journalSet, TString(sequence));
- join(journalSet, length(journalSet) - 1, joinConfig);
- }
- return 0;
-}
-//![laodAndJoin]
-
-//![main]
-int main()
-{
- // Definition of the used types.
- typedef String<Dna, Alloc<> > TSequence;
- typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
- typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
-
- // Open the stream to the file containing the sequences.
- CharString seqDatabasePath = getAbsolutePath("/demos/tutorial/journaled_set/sequences.fasta");
- SeqFileIn databaseFile(toCString(seqDatabasePath));
-
- // Reading each sequence and journal them.
- TJournaledSet journalSet;
- JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
- loadAndJoin(journalSet, databaseFile, joinConfig);
-
- // Define a pattern and start search.
- StringSet<String<int> > hitSet;
- TSequence pattern = "GTGGT";
- std::cout << "Search for: " << pattern << ":\n";
- searchPattern(hitSet, journalSet, pattern);
-//![main]
-
-//![printResult]
- if (empty(hitSet[0]))
- {
- std::cout << "No hit in reference " << std::endl;
- }
- else
- {
- std::cout << "Hit in reference " << " at ";
- for (unsigned j = 0; j < length(hitSet[0]); ++j)
- std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
- }
- std::cout << std::endl;
-
- for (unsigned i = 1; i < length(hitSet); ++i)
- {
- if (empty(hitSet[i]))
- {
- std::cout << "No hit in sequence " << i - 1 << std::endl;
- }
- else
- {
- std::cout << "Hit in sequence " << i - 1 << " at ";
- for (unsigned j = 0; j < length(hitSet[i]); ++j)
- std::cout << hitSet[i][j] << ": " << infix(value(journalSet, i - 1), hitSet[i][j], hitSet[i][j] + length(pattern)) << "\t";
- }
- std::cout << std::endl;
- }
-
- std::cout << "Done!" << std::endl;
- return 0;
-}
-//![printResult]
diff --git a/demos/tutorial/journaled_set/example_online_search.cpp.stdout b/demos/tutorial/journaled_set/example_online_search.cpp.stdout
deleted file mode 100644
index f13c664..0000000
--- a/demos/tutorial/journaled_set/example_online_search.cpp.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
-Search for: GTGGT:
-Hit in reference at 311: GTGGT 644: GTGGT
-Hit in sequence 0 at 151: GTGGT 312: GTGGT
-Hit in sequence 1 at 308: GTGGT
-Hit in sequence 2 at 311: GTGGT 507: GTGGT
-Hit in sequence 3 at 327: GTGGT
-Hit in sequence 4 at 307: GTGGT 312: GTGGT 317: GTGGT
-Hit in sequence 5 at 0: GTGGT 320: GTGGT 986: GTGGT
-Done!
diff --git a/demos/tutorial/journaled_set/example_online_search_assignment1_hint.cpp b/demos/tutorial/journaled_set/example_online_search_assignment1_hint.cpp
deleted file mode 100644
index 1ff5dde..0000000
--- a/demos/tutorial/journaled_set/example_online_search_assignment1_hint.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/seq_io.h>
-#include <seqan/journaled_set.h>
-
-using namespace seqan;
-
-template <typename TString, typename TSpec>
-inline int
-loadAndJoin(StringSet<TString, Owner<JournaledSet> > & /*journalSet*/,
- SeqFileIn & databaseFile,
- JoinConfig<TSpec> const & /*joinConfig*/)
-{
- typedef typename Host<TString>::Type THost;
-
- // [A] Ensure the Journal Set is not occupied by other sequences.
-
- // Construct the temporary buffers for the read id and sequence.
- String<char> tempSeqId;
- THost tempSeq;
-
- // No sequences in the fasta file!
- if (atEnd(databaseFile))
- {
- std::cerr << "Empty FASTA file." << std::endl;
- return -1;
- }
- // First read sequence for reference sequence.
- readRecord(tempSeqId, tempSeq, databaseFile);
-
- // [B] Set the reference sequence to the Journal Set
-
- // Read remaining sequences.
- while (!atEnd(databaseFile))
- {
- readRecord(tempSeqId, tempSeq, databaseFile);
- // [C] Append and join the current read sequence.
- }
- return 0;
-}
-
-int main()
-{
- // Definition of the used types.
- typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
- typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
-
- // Open the stream to the file containing the sequences.
- CharString seqDatabasePath = getAbsolutePath("/demos/tutorial/journaled_set/sequences.fasta");
- SeqFileIn databaseFile(toCString(seqDatabasePath));
-
- // Reading each sequence and journal them.
- TJournaledSet journalSet;
- JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
- // [D] Construct Journaled Set and call loadAndJoin
- loadAndJoin(journalSet, databaseFile, joinConfig);
-
- std::cout << "Done!" << std::endl;
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/journaled_set/example_online_search_assignment1_hint.cpp.stdout b/demos/tutorial/journaled_set/example_online_search_assignment1_hint.cpp.stdout
deleted file mode 100644
index 76f5a5a..0000000
--- a/demos/tutorial/journaled_set/example_online_search_assignment1_hint.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Done!
diff --git a/demos/tutorial/journaled_set/sequences.fasta b/demos/tutorial/journaled_set/sequences.fasta
deleted file mode 100644
index 70e5ce3..0000000
--- a/demos/tutorial/journaled_set/sequences.fasta
+++ /dev/null
@@ -1,111 +0,0 @@
->seq_ref
-GTAGGTAAGCGGGGTATTTGCACTTCCCTTAATCCATAAGGGCTTTTGCCGCGTGTTAGAGGAAGCTATC
-CCACACTTGTGTATGGCATCTTCCCCCTCAGCCTCCCTCGTGTCGTACTATACGATCATTTAAAGAAAGA
-TATTTGGGATGGAGACGCATGATTCATGGCTAGTTCGGAGAGCGAACGGCGGAGGCCTAGGTGATATTCA
-GGAGGATATGGGCTCCACAACTTTTTCCGTCGTAGCAAAGCATAAGGCTGACAAGCTTGGCTTTATACAC
-TTCGCGAAATAGACCTCGATAAGCCATCTCTGTGGTGAGCTATCCCGGTTAATGCTAGTTGTGCGGGTTG
-TAATTGCTAGTAACGGCCGGTTCTATTACATCTAATGGAAGGTTGTTCTATTGATTCTTCGTCAGAACTC
-CCCGTAATATACATTTTTGGATATTGGCGCCCCCAGCTGGCACATGTAATATGTGTATATTCACACGTAA
-TAACAGGTATGAATGATGTCACGCCGTCTCTGCGCGGCCCATAAGCTGACGCGCATATCGATATATTCTC
-TGGGTCCTGGCGACGCACCCCATCCGCGTAATATTTAGTCATTCGGGTTTACTCCGATGGTCGCACACGG
-ATAACCAGCTCCTAGTGGTTAAATAGTGACAGGTCTGACAACTAGACCCTATTCCTAGTACCAGCCCATC
-TGCCGCTATAATTTTGCATTTGTTTCGTAAAGGATGAATCGTAATGCCAGCGGACTACCCCCGAGTCACA
-AAATCAATTGAGTTCAGTTGCTATAGAGAGACAACTTACAGGATTAAGTAGTCGTTGCGTAAGTATGATA
-GTAGAACCGCGCAGGAGGCGTACCTAACGCATCACGCCAAACGTTAACTAGGAATTCTGGATCGGCCGGC
-GAACTCCTTTAGAGAGATCAGTAATACACCTATAAGATCAGTATGGTACGAACGGAACCGTGAGTCTTTC
-TTTATCTTCTCTCTTAATTG
->seq_1
-GTAGGTAAGCGGGGTATTTGCACTTCCCTTAATCCACGCTATAAGGGCTTTTGCCGCGTGTTAGAGGAAG
-CTATCCCACACTTGTGTATGGCATCTTCCCCCTCAGCCTCCCTCGTGTCGTACTATACGATCATTTAAAG
-AAAGATATTTGGTGGTGACGCATGATTCATGGCTAGTTCGGAGAGCGAACGGCGGAGGCCTAGGTGATAT
-TCAGGAGGATATGGGCTCCACAACTTTTTCCGTCGTAGCAAAGCATAAGGCTGACAAGCGGCTTTATACA
-CTTCGCGAAATAGACCTCGATAAGCCATCTCTGTGGTGAGCTATCCCGGTTAATGCTAGTTGTGCGGGTT
-GTAATTGCTAGTAACGGCCGGTTCTATTACATCTAATGGAAGGTTGTTCTAATTCTTCGTCAGAACTCCC
-CGTAATATACATTTTTGGATATTGGCGCCCCCAGCTGGCACATGTAATATGTGTATATTCACACGTAAAG
-GTATGAATGATGTCACGCCGTCTGCGCGGCCCATAAGCTGACGCGCATATCGATATATTCTCTGGGTCCT
-GGCGACGCACCCCATCCGCGTAATATTTAGTCATTCGGGTTTACTCCGATGGTCGCACACGGGACGACTC
-ATAACCAGCTCCTATAAATAGTGACATCTGACAACTAGACCCTATTCCTAGTACCAGCCCATCTGCCGCT
-ATAATTTTGCATTTGTTTCGTAAAGGATGAATCGTAATGCCAGCGGACTACCCCCGAGTCACAGATTAAA
-ATCAATTGAGTTCAGTTGCTATAGAGAGAacgtCTTACAGGATTAAGTAGTCGTTGCGTAAGTATGATAG
-TAGAACCGCGCAGGAGGCGTACCTAACGCATCACGCCAAACGTTAACTAGGAATTCTGGATCGGCCGGGA
-ACTCCTTTAGAGAGATCAGTAATACACCTATAAGATCAGTATGGTACGAACGGAACCGTGAGTCTTTCTT
-TATCTTCTCTCTTA
->seq_2
-GTAGGTAAGCGGGGTATTTGCACTTCCCTTAATCCATAAGGGCTTTTGCCGCGTGTTAGAGGAAGCTATC
-CCACACTTGTGTATGGCATCTTCCCCCTCAGCCTCCCTCGTGTCGTACTATACGATCATTTAAAGAAAGA
-TATTTGGGATGGAGACGCATGATTCATGGCTAGTTCGGAGAGCGAACGGCGGAGGCCTAGGTGATATTCA
-GGAGGATATGGGCTCCACAACTTTTTCCGTCGTAGCAAAGCATAAGGCTGACAAGCTTGGCTTTATACAC
-TTCGCGAAGACCTCGATAAGCCATCTCTGTGGTGAGCTATCCCGGTTAATGCTAGTTGTGCGGGTTGACG
-TAATTGCTAGTAACGGCCGGTTCTATTACATCTAATGGAAGGTTGTTCTATTGATTCTTCGTCAGAACTC
-CCCGTAATATACATTTTTGGAACGACTGTTGGCGCCCCCAGCTGGCACATGTAATATGTGTATATTCACA
-TAACAGGTATGAATGATGTCACGCCGTCTCTGCGCGGCCCATAAGCTGACGCGCATATCGATATATTCTC
-TGGGTCCTGGCGACGCACCCCATCCGCGTAATATTTAGTCATTCGGGTTTACTCCGATGGTCGCACACGG
-ATAACCAGCTCCTATAAATAGTGACAGGTCTGACAACTAGACCCTATTCCTAGTACCAGCCCATCTGCCG
-CTATAATTTTGCATTTGTTTCGTAAAGGATGAATCGTAATGCCAGCGGACTACCCCCGAGTCACAGATTA
-AAATCAATTGAGTTCAGTTGCTATAGAGAGACAACTTAACGTATTAAGTAGTCGTTGCGTAAGTATGATA
-GTAGAACCGCGCGGCGTACCTAACGCATCACGCCAAACGTTAACTAGGAATTCTGGATCGGCCGGCGAAC
-TCCTTACCCAACTAGAGAGATCAGTAATACACCTATAAGATCAGTATGGTACGAACGGAACCGTGAGTCT
-TTTATCTTCCTTAATTG
->seq_3
-GTAGGTAAGCGGGGTATTTCTTCCCGTCCTTAATCCATAAGGGCTTTTGCCGCGTGTTAGAGGAAGCTAT
-CCACACTTGTGTATGGCATCTTCCCCCTCCGTCGTAGCCTCCCTCGTGTATACGATCATTTAAAGAAAGA
-TATTTGGGATGGAGACGCATGATTCATGGCTAGTTCGGAGAGCGAACGGCGGAGGCCTAGGTGATATTCA
-GGAGGATATGGGCTCCACAACTTTTTCCGTCGTAGCAAAGCATAAGGCTGACAAGCTTGGCTTTATACAC
-TTCGCGAAATAGACCTCGATAAGCCATCTCTGTGGTGAGCTATCCCGGTTAATGCTAGTTGTGCGGGTTG
-TAATTGCTAGTAACGGCCGGTTCTATTACATCTAATGGAAGGTTGTTCTATTGATTCTTCGTCAGAACTC
-CCCGTAATATACTTGGATATTGGCGCCCCCAGCTGGCACGTCCATGTAATATGTGTATATTCACACGTAA
-TAACAGGTATGAATGATGTGGTCACGCCGTCTCTGCGCGGCCCATAAGCTGACGCGCATATCGATATATT
-TGGGTCCTGGCGACGCACCCCATCCGATATTTAGTCATTCGGGTTTACTCCGATGGTCGCACACGGATAA
-CCAGCTCCTATAAATAGTGACAGGTCTGACAACTAGACCCTATTCCTAGTACCAGCCCATCTGCCGCTAT
-AATTTTGCATTTGTTTCGTCGCGTAAAGGATGAATCGTAATGCCAGCGGACTACCCCCGAGTCACAGATT
-AAATCAATTGAGTTCAGTTGCTATAGAGAGACAACTTACAGGATTAAGTAGTCGTTGCGTAAGTATGATA
-GTAGAACCGCGCAGGAGGTACCTAACGCATCACGCCAAACGTACTAGGAATTCTGGATCGGCCGGGAACT
-CCTTTAGAGAGATCAGTAATACACCTAGATCAGTATGGTACGAACGGAACCGTGAGTCTTTCTTTATCTT
-CTCTCTTAATTG
->seq_4
-GGGGGTGATGAGTAGTAGGTAAGCGGGGTATTTGCACTTCCCTTAATCCATAAGGGCTTTTGCCGCGTGT
-CCACACTTGTGTATGGCATCTTCCCCCTCAGCCTCCCTCGTGTCGTACTATACGATCATTTAAAGAAAGA
-TATTTGGGATGGAGACGCATGATTCATGGCTAGTTCGGAGAGCGAACGGCGGAGGCCTAGGTGATATTCA
-GGAGGATATGGGCTCCACAACTTTTTCCGTCGTAGCAAAGCATAAGGCTGACAAGCTTGGCTTTATACAC
-TTCGCGAAATAGACCTCGATAAGCCAGGCCGCTCGACTCAGCTCTCTGTGGTGAGCTATCCCGGTTAATG
-TAATTGCTAGTAACGGCCGGTTCTATTACATCTAATGGAAGGTTGTTCTATTGATTCTTCGTCAGAACTC
-CCCGTAATATACATTTTTGGATATTGGCGCCCCCAGCTGGCACATGTAATATGTGTATATTCACACGTAA
-TAACAGGTATGAATGATGTCACGCCGTCTCTGCGCGGCCCATAAGCTGACGCGCATATCGATATATTCTC
-TGGGTCCTGGCGACGCACCCCATCCGCGTAATATTTAGTCATTCGGGTTTACTCCGATGGTCGCACACGG
-ATAACCAGCTCCTATAAATAGTGACAGGTCTGACAACTAGACCCTATTCCTAGTACCAGCCCATCTGCCG
-CTATAATTTTGCATTTGTTTCGTAAAGGAACGTACGAGCGACTACGAGCGAGCGACTAGTTAAAATCAAT
-TGAGTTCAGTTGCTATAGAGAGACAACTTACAGGATTAAGTAGTCGTTGCGTAAGTATGATAGTAGAACC
-GCGCAGGAGGCGTACCTAACGCATCACGCCAAACGTTAACTAGGAATTCTGGATCGGCCGGCGAACTCCT
-TTAGAGAGATCAGTAATACACCTATAAGATCAGTATGGTACGAACGGAACCGTGAGTCTTTCTTTATCTT
-CTCTCTTAATTG
->seq_5
-GTAGGTAAGCGGCACTTCCCTTAATCCATAAGGGCTTTTGCCGCGTGTTAGAGGAAGCTATCCCACACTT
-GTGACGACGACTCTATGGCATCTTCCCCCTCAGCCTCCCTCGTGTCGTACTATACGATCATTTAAAGAAA
-GATATTTGGGATGGAGACGCATGATTCATGGCTAGTTCGGAGAGCGGGAGGCCTAGGTGATATTCAGGAG
-GATATGGGCTCCACAACTTTTTCCGTCGTAGCAAAGCATAAGGCTGACAAGCTTGGCTTTATACACTTCG
-CGAAATAGACCTCGATAAGCCATCTCTGTGGTGTGGTGTGGTGAGCTATCCCGGTTAGTTGTGCGGGTTG
-TAACGGCCGGTTCTATTACATCTAATGGAAGGTTGTTCTATTGATTCTTCGTCAGAACTCCCCGTAATAT
-ACATTTTTGGATATTGGCGCCCCCAGCTGGCACATGTAATATGTGTATATTCACACGTAATAACAGGTAT
-GAATGATGTCACGCCGTCTCTGCGCGGCCCATAAGCTGACGCGCATATCGATATATTCTCTGGGTCCTGG
-CGACGCACCCCATCCGCGTAATATTTAGTCATTCGGGTTTACTCCGATGGTCGCACACGGATAACCAGCT
-CCTAACGACGAGCGACACACTGACTACGCTAGACCCTATTCCTAGTACCAGCCCATCTGCCGCTATAATT
-TTGCATTTGTTTCGTAAAGGATGAATCGTAATGCCAGCACAGTATTATATTTTTTCCGAGTCACAGATTA
-AAATCAATTGAGTTCAGTTGCTATAGAGAGACAACTTACAGGATTAAGTAGTCGTTGCGTAAGTATGATA
-GTAGAACCGCGCAGGAGGCGTACCTAACGCATCACGACTAGGAATTCTGGATCGGCCGGCGAACTCCTTT
-AGAGAGATCAGTAATACACCTATAAGATCAGTATGGTACGAACGGTTTATCTTCTCTCTTAATTG
->seq_6
-GTGGTGTAGGTAAGCGGGGTATTTGCACTTCCCTTAATCCATAAGGGCTTTTGCCGCGTGTTAGAGGAAG
-CCACACTTGTGTATGGCATCTTCCCCCTCAGCCTCCCTCGTGTCGTACTATACGATCATTTAAAGAAAGA
-TATTTGGGATGGAGACGCATGAACGACTGACGACTACGCTAGTTCGGAGAGCGAACGGCGGAGGCCTAGG
-TGATATTCAGGAGGATATGGGCTCCACAACTTTTTCCGTCGTAGCAAAGCATAAGGCTGACAAGCTTGGC
-TTTATACACTTCGCGAAATAGACCTCGATAAGCCATCTCTGTGGTGAGCTATCCCGGTTAATGCTAGTTG
-TGCGGGTTGTAATTGCTAGTAACGGCCGGTTCTATTACATCTAATGGAAGGTTGTTCTATTGATTCTTCG
-TCAGAACTCCCCGTAATATACATTTTTGGATGCTGGCACATGTAATATGTGTATATTCACACGTAATAAC
-AGGTATGAATGATGTCACGCCGTCTCTGCGCGGCCCATAAGCTGACGCGCATATCGATATATTCTCTGGG
-TCCTGGCGACGCACCCCATCCGCGTAATATTTAGTCATTCGGGTTTACTCCGATGGTCGCACACGGATAA
-CCAGCTCCTATAAATAGTGACAGGTCTGACAACTAGACCCTATTCCTAGTACCAGCCCATCTGCCGCTAT
-AATTTTGCATTTGTTTCGTAAAGGATGAATCGTAACGATCGACCGGACTACCCCCGAGTCACAGATTAAA
-ATCAATTGAGTTCAGTTGCTATAGAGAGACAACTTACAGGATTAAGTAGTCGTTGCGTAAGTATGATAGT
-AGAACCGCGCTAACGCATCACGCCAAACGTTAACTAGGAATTCTGGATCGGCCGGCGAACTCCTTTAGAG
-AGATCAGTAATACACCTATAAGATCAGTATGGTACGAACGGAACCGTGAGTCTTTCTTTATCTTCTCTCT
-TAATTGGTGGT
\ No newline at end of file
diff --git a/demos/tutorial/journaled_set/solution_online_search_assignment1.cpp b/demos/tutorial/journaled_set/solution_online_search_assignment1.cpp
deleted file mode 100644
index 88ceef6..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_assignment1.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/seq_io.h>
-#include <seqan/journaled_set.h>
-
-using namespace seqan;
-
-template <typename TString, typename TSpec>
-inline int
-loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
- SeqFileIn & databaseFile,
- JoinConfig<TSpec> const & joinConfig)
-{
- typedef typename Host<TString>::Type THost;
- // [A]
- clear(journalSet);
-
- // Construct the temporary buffers for the read id and sequence.
- String<char> tempSeqId;
- THost sequence;
-
- // No sequences in the fasta file!
- if (atEnd(databaseFile))
- {
- std::cerr << "Empty FASTA file." << std::endl;
- return -1;
- }
- // First read sequence for reference sequence.
- readRecord(tempSeqId, sequence, databaseFile);
- // [B]
- createHost(journalSet, sequence); // When using create we copy the reference instead of storing a pointer.
-
- // Read remaining sequences.
- while (!atEnd(databaseFile))
- {
- readRecord(tempSeqId, sequence, databaseFile);
- // [C]
- appendValue(journalSet, TString(sequence)); // First we append the sequence to the set.
- join(journalSet, length(journalSet) - 1, joinConfig); // Second we join it to the set.
- }
- return 0;
-}
-
-int main()
-{
- // Definition of the used types.
- typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
- typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
-
- // Open the stream to the file containing the sequences.
- CharString seqDatabasePath = getAbsolutePath("/demos/tutorial/journaled_set/sequences.fasta");
- SeqFileIn databaseFile(toCString(seqDatabasePath));
-
- // Reading each sequence and journal them.
- TJournaledSet journalSet;
- JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
- loadAndJoin(journalSet, databaseFile, joinConfig);
-
- std::cout << "Done!" << std::endl;
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/journaled_set/solution_online_search_assignment1.cpp.stdout b/demos/tutorial/journaled_set/solution_online_search_assignment1.cpp.stdout
deleted file mode 100644
index 76f5a5a..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_assignment1.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Done!
diff --git a/demos/tutorial/journaled_set/solution_online_search_assignment2.cpp b/demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
deleted file mode 100644
index 151f3af..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-//![include]
-#include <iostream>
-#include <seqan/seq_io.h>
-#include <seqan/journaled_set.h>
-
-using namespace seqan;
-//![include]
-
-//![findPatternInReference]
-template <typename TString, typename TPattern>
-void findPatternInReference(String<int> & hits,
- TString const & reference,
- TPattern const & pattern)
-{
- // [A] Check whether pattern fits into the sequence.
- if (length(pattern) > length(reference))
- return;
-
- // [B] Iterate over all positions at which the pattern might occur.
- for (unsigned pos = 0; pos < length(reference) - length(pattern) + 1; ++pos)
- {
- bool isHit = true;
- // [C] Evaluate all positions of the pattern until you find a mismatch or you have found a hit.
- for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern)
- {
- if (pattern[posPattern] != reference[posPattern + pos])
- {
- isHit = false;
- break;
- }
- }
- // [D] Report begin position at which pattern matches the sequence.
- if (isHit)
- appendValue(hits, pos);
- }
-}
-//![findPatternInReference]
-
-//![searchPattern]
-template <typename TString, typename TPattern>
-void searchPattern(StringSet<String<int> > & hitSet,
- StringSet<TString, Owner<JournaledSet> > const & journalSet,
- TPattern const & pattern)
-{
- typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
- typedef typename Host<TJournalSet const>::Type THost;
-
- // Check for valid initial state.
- if (empty(host(journalSet)))
- {
- std::cout << "No reference set. Aborted search!" << std::endl;
- return;
- }
-
- // Reset the hitSet to avoid phantom hits coming from a previous search.
- clear(hitSet);
- resize(hitSet, length(journalSet) + 1);
- // Access the reference sequence.
- THost & globalRef = host(journalSet);
- // Search for pattern in the reference sequence.
- findPatternInReference(hitSet[0], globalRef, pattern);
-
- // Search for pattern in the journaled sequences.
- for (unsigned i = 0; i < length(journalSet); ++i)
- {
-// findPatternInJournalString(hitSet[i+1], journalSet[i], pattern, hitSet[0]);
- }
-}
-//![searchPattern]
-
-//![loadAndJoin]
-template <typename TString, typename TSpec>
-inline int
-loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
- SeqFileIn & databaseFile,
- JoinConfig<TSpec> const & joinConfig)
-{
- typedef typename Host<TString>::Type THost;
-
- clear(journalSet);
-
- String<char> seqId;
- THost sequence;
-
- // No sequences in the fasta file!
- if (atEnd(databaseFile))
- {
- std::cerr << "Empty FASTA file." << std::endl;
- return -1;
- }
- // First read sequence for reference sequence.
- readRecord(seqId, sequence, databaseFile);
-
- // We have to create the global reference sequence otherwise we loose the information after this function terminates.
- createHost(journalSet, sequence);
-
- // If there are more
- while (!atEnd(databaseFile))
- {
- readRecord(seqId, sequence, databaseFile);
- appendValue(journalSet, TString(sequence));
- join(journalSet, length(journalSet) - 1, joinConfig);
- }
- return 0;
-}
-//![loadAndJoin]
-
-//![main]
-int main()
-{
- // Definition of the used types.
- typedef String<Dna, Alloc<> > TSequence;
- typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
- typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
-
- // Open the stream to the file containing the sequences.
- CharString seqDatabasePath = getAbsolutePath("/demos/tutorial/journaled_set/sequences.fasta");
- SeqFileIn databaseFile(toCString(seqDatabasePath));
-
- // Reading each sequence and journal them.
- TJournaledSet journalSet;
- JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
- loadAndJoin(journalSet, databaseFile, joinConfig);
-
- // Define a pattern and start search.
- StringSet<String<int> > hitSet;
- TSequence pattern = "GTGGT";
- std::cout << "Search for: " << pattern << ":\n";
- searchPattern(hitSet, journalSet, pattern);
-//![main]
-
-//![printResult]
- if (empty(hitSet[0]))
- {
- std::cout << "No hit in reference " << std::endl;
- }
- else
- {
- std::cout << "Hit in reference " << " at ";
- for (unsigned j = 0; j < length(hitSet[0]); ++j)
- std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
- }
- std::cout << std::endl;
-
- std::cout << "Done!" << std::endl;
- return 0;
-}
-//![printResult]
diff --git a/demos/tutorial/journaled_set/solution_online_search_assignment2.cpp.stdout b/demos/tutorial/journaled_set/solution_online_search_assignment2.cpp.stdout
deleted file mode 100644
index f426b48..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_assignment2.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-Search for: GTGGT:
-Hit in reference at 311: GTGGT 644: GTGGT
-Done!
diff --git a/demos/tutorial/journaled_set/solution_online_search_assignment3.cpp b/demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
deleted file mode 100644
index a9d56b1..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
+++ /dev/null
@@ -1,223 +0,0 @@
-//![include]
-#include <iostream>
-#include <seqan/seq_io.h>
-#include <seqan/journaled_set.h>
-
-using namespace seqan;
-//![include]
-
-//![findInOriginalNode]
-template <typename TJournalEntriesIterator, typename TPattern>
-void _findInOriginalNode(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TPattern const & pattern,
- String<int> const & refHits)
-{
- // Define an Iterator which iterates over the reference hit set.
- typedef typename Iterator<String<int> const, Standard>::Type THitIterator;
-
- // [A] Check if hits exist in the reference.
- if (!empty(refHits))
- {
- // [B] Find upper bound to current physical position in sorted refHits using std::upper_bound.
- THitIterator itHit = std::upper_bound(begin(refHits), end(refHits), (int)entriesIt->physicalPosition);
- // [C] Make sure we do not miss hits that begin at physical position of current node.
- if (itHit != begin(refHits) && *(itHit - 1) >= (int)entriesIt->physicalPosition)
- --itHit;
- // [D] Store all hits that are found in the region of the reference which is covered by this node.
- while ((int)*itHit < ((int)entriesIt->physicalPosition + (int)entriesIt->length - (int)length(pattern) + 1) && itHit != end(refHits))
- {
- // [E] Store the correct virtual position and check next hit.
- appendValue(hitTarget, entriesIt->virtualPosition + (*itHit - (int)entriesIt->physicalPosition));
- ++itHit;
- }
- }
-}
-//![findInOriginalNode]
-
-//![findPatternInJournalString]
-template <typename TValue, typename THostSpec, typename TJournalSpec, typename TBufferSpec, typename TPattern>
-void findPatternInJournalString(String<int> & hitTarget,
- String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const & journal,
- TPattern const & pattern,
- String<int> const & refHits)
-{
- typedef String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const TJournal;
- typedef typename JournalType<TJournal>::Type TJournalEntries;
- typedef typename Iterator<TJournalEntries>::Type TJournalEntriesIterator;
-
- if (length(pattern) > length(journal))
- return;
-
- TJournalEntriesIterator it = begin(journal._journalEntries);
- TJournalEntriesIterator itEnd = findInJournalEntries(journal._journalEntries, length(journal) - length(pattern) + 1) + 1;
-
- while (it != itEnd)
- {
- if (it->segmentSource == SOURCE_ORIGINAL) // Find a possible hit in the current source vertex.
- {
- _findInOriginalNode(hitTarget, it, pattern, refHits);
- }
- if (it->segmentSource == SOURCE_PATCH) // Search for pattern within the patch node.
- { // _findInPatchNode(hitTarget, it, journal, pattern);
- }
- // Scan the border for a possible match.
-// _searchAtBorder(hitTarget, it, journal, pattern);
- ++it;
- }
-}
-//![findPatternInJournalString]
-
-//![findPatternInReference]
-template <typename TString, typename TPattern>
-void findPatternInReference(String<int> & hits,
- TString const & reference,
- TPattern const & pattern)
-{
- // Check whether the pattern fits into the sequence.
- if (length(pattern) > length(reference))
- return;
-
- //
- for (unsigned pos = 0; pos < length(reference) - length(pattern) + 1; ++pos)
- {
- bool isHit = true;
-
- for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern)
- {
- if (pattern[posPattern] != reference[posPattern + pos])
- {
- isHit = false;
- break;
- }
- }
- // Report the position if found a hit.
- if (isHit)
- appendValue(hits, pos);
- }
-}
-//![findPatternInReference]
-
-//![searchPattern]
-template <typename TString, typename TPattern>
-void searchPattern(StringSet<String<int> > & hitSet,
- StringSet<TString, Owner<JournaledSet> > const & journalSet,
- TPattern const & pattern)
-{
- typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
- typedef typename Host<TJournalSet const>::Type THost;
-
- // Check for valid initial state.
- if (empty(host(journalSet)))
- {
- std::cout << "No reference set. Aborted search!" << std::endl;
- return;
- }
-
- // Reset the hitSet to avoid phantom hits coming from a previous search.
- clear(hitSet);
- resize(hitSet, length(journalSet) + 1);
- // Access the reference sequence.
- THost & globalRef = host(journalSet);
- // Search for pattern in the reference sequence.
- findPatternInReference(hitSet[0], globalRef, pattern);
- // Search for pattern in the journaled sequences.
- for (unsigned i = 0; i < length(journalSet); ++i)
- findPatternInJournalString(hitSet[i + 1], journalSet[i], pattern, hitSet[0]);
-}
-//![searchPattern]
-
-//![laodAndJoin]
-template <typename TString, typename TSpec>
-inline int
-loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
- SeqFileIn & databaseFile,
- JoinConfig<TSpec> const & joinConfig)
-{
- typedef typename Host<TString>::Type THost;
-
- clear(journalSet);
-
- String<char> seqId;
- THost sequence;
-
- // No sequences in the fasta file!
- if (atEnd(databaseFile))
- {
- std::cerr << "Empty FASTA file." << std::endl;
- return -1;
- }
- // First read sequence for reference sequence.
- readRecord(seqId, sequence, databaseFile);
-
- // We have to create the global reference sequence otherwise we loose the information after this function terminates.
- createHost(journalSet, sequence);
-
- // If there are more
- while (!atEnd(databaseFile))
- {
- readRecord(seqId, sequence, databaseFile);
- appendValue(journalSet, TString(sequence));
- join(journalSet, length(journalSet) - 1, joinConfig);
- }
- return 0;
-}
-//![laodAndJoin]
-
-//![main]
-int main()
-{
- // Definition of the used types.
- typedef String<Dna, Alloc<> > TSequence;
- typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
- typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
-
- // Open the stream to the file containing the sequences.
- CharString seqDatabasePath = getAbsolutePath("/demos/tutorial/journaled_set/sequences.fasta");
- SeqFileIn databaseFile(toCString(seqDatabasePath));
-
- // Reading each sequence and journal them.
- TJournaledSet journalSet;
- JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
- loadAndJoin(journalSet, databaseFile, joinConfig);
-
- // Define a pattern and start search.
- StringSet<String<int> > hitSet;
- TSequence pattern = "GTGGT";
- std::cout << "Search for: " << pattern << ":\n";
- searchPattern(hitSet, journalSet, pattern);
-//![main]
-
-//![printResultReference]
- if (empty(hitSet[0]))
- {
- std::cout << "No hit in reference " << std::endl;
- }
- else
- {
- std::cout << "Hit in reference " << " at ";
- for (unsigned j = 0; j < length(hitSet[0]); ++j)
- std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
- }
- std::cout << std::endl;
-//![printResultReference]
-
-//![printResultJournalSequence]
- for (unsigned i = 1; i < length(hitSet); ++i)
- {
- if (empty(hitSet[i]))
- {
- std::cout << "No hit in sequence " << i - 1 << std::endl;
- }
- else
- {
- std::cout << "Hit in sequence " << i - 1 << " at ";
- for (unsigned j = 0; j < length(hitSet[i]); ++j)
- std::cout << hitSet[i][j] << ": " << infix(value(journalSet, i - 1), hitSet[i][j], hitSet[i][j] + length(pattern)) << "\t";
- }
- std::cout << std::endl;
- }
- std::cout << "Done!" << std::endl;
- return 0;
-}
-//![printResultJournalSequence]
diff --git a/demos/tutorial/journaled_set/solution_online_search_assignment3.cpp.stdout b/demos/tutorial/journaled_set/solution_online_search_assignment3.cpp.stdout
deleted file mode 100644
index 1f22450..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_assignment3.cpp.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
-Search for: GTGGT:
-Hit in reference at 311: GTGGT 644: GTGGT
-Hit in sequence 0 at 312: GTGGT
-Hit in sequence 1 at 308: GTGGT
-Hit in sequence 2 at 311: GTGGT
-Hit in sequence 3 at 327: GTGGT
-Hit in sequence 4 at 317: GTGGT
-Hit in sequence 5 at 320: GTGGT
-Done!
diff --git a/demos/tutorial/journaled_set/solution_online_search_assignment4.cpp b/demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
deleted file mode 100644
index 255b97e..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
+++ /dev/null
@@ -1,294 +0,0 @@
-//![include]
-#include <iostream>
-#include <seqan/seq_io.h>
-#include <seqan/journaled_set.h>
-
-using namespace seqan;
-//![include]
-
-//![searchAtBorder]
-template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
-void _searchAtBorder(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TJournal const & journal,
- TPattern const & pattern)
-{
- typedef typename Iterator<TJournal const, Standard>::Type TJournalIterator;
-
- // [A] Determine first position of the at which pattern crosses the border of current node.
- TJournalIterator nodeIter = iter(journal, entriesIt->virtualPosition + _max(0, (int)entriesIt->length - (int)length(pattern) + 1));
- // [B] Determine last position before pattern exits the current node or reaches the end of the sequence.
- TJournalIterator nodeEnd = iter(journal, _min(entriesIt->virtualPosition + entriesIt->length, length(journal) - length(pattern) + 1));
- if (nodeEnd == end(journal))
- return;
-
- // [C] Move step by step over search region.
- for (; nodeIter != nodeEnd; ++nodeIter)
- {
- // [D] Scan pattern in current window and report possible hits.
- TJournalIterator verifyIter = nodeIter;
- bool isHit = true;
- // Compare pattern with current search window.
- for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern, ++verifyIter)
- {
- // Comparing the pattern value with the current value of the iterator.
- if (pattern[posPattern] != getValue(verifyIter))
- {
- isHit = false;
- break;
- }
- }
- // Report hit if found.
- if (isHit)
- appendValue(hitTarget, position(nodeIter));
- }
-}
-//![searchAtBorder]
-
-//![findInPatchNode]
-template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
-void _findInPatchNode(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TJournal const & journal,
- TPattern const & pattern)
-{
- typedef typename Iterator<TJournal const, Standard>::Type TJournalIterator;
-
- // Search for pattern in the insertion node.
- TJournalIterator patchIter = iter(journal, entriesIt->virtualPosition);
- TJournalIterator patchEnd = patchIter + _max(0, (int)entriesIt->length - (int)length(pattern) + 1);
- // Move step by step over search region.
- for (; patchIter != patchEnd; ++patchIter)
- {
- TJournalIterator verifyIter = patchIter;
- bool isHit = true;
- // Search for pattern in the insertion node.
- for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern, ++verifyIter)
- {
- // Comparing the pattern value with the current value of the iterator.
- if (pattern[posPattern] != getValue(verifyIter))
- {
- isHit = false;
- break;
- }
- }
- if (isHit)
- appendValue(hitTarget, position(patchIter));
- }
-}
-//![findInPatchNode]
-
-//![findInOriginalNode]
-template <typename TJournalEntriesIterator, typename TPattern>
-void _findInOriginalNode(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TPattern const & pattern,
- String<int> const & refHits)
-{
- // Define an Iterator which iterates over the reference hit set.
- typedef typename Iterator<String<int> const, Standard>::Type THitIterator;
-
- // Check if hits exist in the reference.
- if (!empty(refHits))
- {
- // Find upper bound to physical position in sorted refHits.
- THitIterator itHit = std::upper_bound(begin(refHits), end(refHits), (int)entriesIt->physicalPosition);
- // Make sure we do not miss hits that begin at physical position of current node.
- if (itHit != begin(refHits) && *(itHit - 1) >= (int)entriesIt->physicalPosition)
- --itHit;
- // Store all hits that are found in the region of the reference which is covered by this node.
- while ((int)*itHit < ((int)entriesIt->physicalPosition + (int)entriesIt->length - (int)length(pattern) + 1) && itHit != end(refHits))
- {
- appendValue(hitTarget, entriesIt->virtualPosition + (*itHit - (int)entriesIt->physicalPosition));
- ++itHit;
- }
- }
-}
-//![findInOriginalNode]
-
-//![findPatternInJournalStringPart1]
-template <typename TValue, typename THostSpec, typename TJournalSpec, typename TBufferSpec, typename TPattern>
-void findPatternInJournalString(String<int> & hitTarget,
- String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const & journal,
- TPattern const & pattern,
- String<int> const & refHits)
-{
- typedef String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const TJournal;
- typedef typename JournalType<TJournal>::Type TJournalEntries;
- typedef typename Iterator<TJournalEntries>::Type TJournalEntriesIterator;
-
- if (length(pattern) > length(journal))
- return;
-
- TJournalEntriesIterator it = begin(journal._journalEntries);
- TJournalEntriesIterator itEnd = findInJournalEntries(journal._journalEntries, length(journal) - length(pattern) + 1) + 1;
-
- while (it != itEnd)
- {
- if (it->segmentSource == SOURCE_ORIGINAL) // Find a possible hit in the current source vertex.
- {
- _findInOriginalNode(hitTarget, it, pattern, refHits);
- }
- if (it->segmentSource == SOURCE_PATCH) // Search for pattern within the patch node.
- {
- _findInPatchNode(hitTarget, it, journal, pattern);
- }
- // Scan the border for a possible match.
- _searchAtBorder(hitTarget, it, journal, pattern);
- ++it;
- }
-}
-//![findPatternInJournalStringPart1]
-
-//![findPatternInReference]
-template <typename TString, typename TPattern>
-void findPatternInReference(String<int> & hits,
- TString const & reference,
- TPattern const & pattern)
-{
- // Check whether the pattern fits into the sequence.
- if (length(pattern) > length(reference))
- return;
-
- //
- for (unsigned pos = 0; pos < length(reference) - length(pattern) + 1; ++pos)
- {
- bool isHit = true;
-
- for (unsigned posPattern = 0; posPattern < length(pattern); ++posPattern)
- {
- if (pattern[posPattern] != reference[posPattern + pos])
- {
- isHit = false;
- break;
- }
- }
- // Report the position if found a hit.
- if (isHit)
- appendValue(hits, pos);
- }
-}
-//![findPatternInReference]
-
-//![searchPatternPart1]
-template <typename TString, typename TPattern>
-void searchPattern(StringSet<String<int> > & hitSet,
- StringSet<TString, Owner<JournaledSet> > const & journalSet,
- TPattern const & pattern)
-{
- typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
- typedef typename Host<TJournalSet const>::Type THost;
-
- // Check for valid initial state.
- if (empty(host(journalSet)))
- {
- std::cout << "No reference set. Aborted search!" << std::endl;
- return;
- }
-
- // Reset the hitSet to avoid phantom hits coming from a previous search.
- clear(hitSet);
- resize(hitSet, length(journalSet) + 1);
- // Access the reference sequence.
- THost & globalRef = host(journalSet);
- // Search for pattern in the reference sequence.
- findPatternInReference(hitSet[0], globalRef, pattern);
-
- // Search for pattern in the journaled sequences.
- for (unsigned i = 0; i < length(journalSet); ++i)
- findPatternInJournalString(hitSet[i + 1], journalSet[i], pattern, hitSet[0]);
-}
-//![searchPatternPart1]
-
-//![laodAndJoin]
-template <typename TString, typename TSpec>
-inline int
-loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
- SeqFileIn & databaseFile,
- JoinConfig<TSpec> const & joinConfig)
-{
- typedef typename Host<TString>::Type THost;
-
- clear(journalSet);
-
- String<char> seqId;
- THost sequence;
-
- // No sequences in the fasta file!
- if (atEnd(databaseFile))
- {
- std::cerr << "Empty FASTA file." << std::endl;
- return -1;
- }
- // First read sequence for reference sequence.
- readRecord(seqId, sequence, databaseFile);
-
- // We have to create the global reference sequence otherwise we loose the information after this function terminates.
- createHost(journalSet, sequence);
-
- // If there are more
- while (!atEnd(databaseFile))
- {
- readRecord(seqId, sequence, databaseFile);
- appendValue(journalSet, TString(sequence));
- join(journalSet, length(journalSet) - 1, joinConfig);
- }
- return 0;
-}
-//![laodAndJoin]
-
-//![main]
-int main()
-{
- // Definition of the used types.
- typedef String<Dna, Alloc<> > TSequence;
- typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
- typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
-
- // Open the stream to the file containing the sequences.
- CharString seqDatabasePath = getAbsolutePath("/demos/tutorial/journaled_set/sequences.fasta");
- SeqFileIn databaseFile(toCString(seqDatabasePath));
-
- // Reading each sequence and journal them.
- TJournaledSet journalSet;
- JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
- loadAndJoin(journalSet, databaseFile, joinConfig);
-
- // Define a pattern and start search.
- StringSet<String<int> > hitSet;
- TSequence pattern = "GTGGT";
- std::cout << "Search for: " << pattern << ":\n";
- searchPattern(hitSet, journalSet, pattern);
-//![main]
-
-//![printResult]
- if (empty(hitSet[0]))
- {
- std::cout << "No hit in reference " << std::endl;
- }
- else
- {
- std::cout << "Hit in reference " << " at ";
- for (unsigned j = 0; j < length(hitSet[0]); ++j)
- std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
- }
- std::cout << std::endl;
-
- for (unsigned i = 1; i < length(hitSet); ++i)
- {
- if (empty(hitSet[i]))
- {
- std::cout << "No hit in sequence " << i - 1 << std::endl;
- }
- else
- {
- std::cout << "Hit in sequence " << i - 1 << " at ";
- for (unsigned j = 0; j < length(hitSet[i]); ++j)
- std::cout << hitSet[i][j] << ": " << infix(value(journalSet, i - 1), hitSet[i][j], hitSet[i][j] + length(pattern)) << "\t";
- }
- std::cout << std::endl;
- }
- std::cout << "Done!" << std::endl;
- return 0;
-}
-//![printResult]
diff --git a/demos/tutorial/journaled_set/solution_online_search_assignment4.cpp.stdout b/demos/tutorial/journaled_set/solution_online_search_assignment4.cpp.stdout
deleted file mode 100644
index f13c664..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_assignment4.cpp.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
-Search for: GTGGT:
-Hit in reference at 311: GTGGT 644: GTGGT
-Hit in sequence 0 at 151: GTGGT 312: GTGGT
-Hit in sequence 1 at 308: GTGGT
-Hit in sequence 2 at 311: GTGGT 507: GTGGT
-Hit in sequence 3 at 327: GTGGT
-Hit in sequence 4 at 307: GTGGT 312: GTGGT 317: GTGGT
-Hit in sequence 5 at 0: GTGGT 320: GTGGT 986: GTGGT
-Done!
diff --git a/demos/tutorial/journaled_set/solution_online_search_finder.cpp b/demos/tutorial/journaled_set/solution_online_search_finder.cpp
deleted file mode 100644
index e9415a5..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_finder.cpp
+++ /dev/null
@@ -1,252 +0,0 @@
-//![include]
-#include <iostream>
-#include <seqan/find.h>
-#include <seqan/seq_io.h>
-#include <seqan/journaled_set.h>
-
-using namespace seqan;
-//![include]
-
-//![searchAtBorder]
-template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
-void _searchAtBorder(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TJournal const & journal,
- TPattern const & needle)
-{
- typedef typename Position<TJournal>::Type TPosition;
-
- // Define region before the border to the next node to search for the pattern.
- TPosition infixBegin = entriesIt->virtualPosition + _max(0, (int)entriesIt->length - (int)length(needle) + 1);
- TPosition infixEnd = _min(length(journal), entriesIt->virtualPosition + entriesIt->length + length(needle) - 1);
-
- TPattern tmpInsBuffer = infix(journal, infixBegin, infixEnd);
- Finder<TPattern const> finder(tmpInsBuffer);
- Pattern<TPattern, Horspool> pattern(needle);
- while (find(finder, pattern))
- {
- appendValue(hitTarget, infixBegin + beginPosition(finder));
- }
-}
-//![searchAtBorder]
-
-//![findInPatchNodePart1]
-template <typename TJournalEntriesIterator, typename TJournal, typename TPattern>
-void _findInPatchNode(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TJournal const & journal,
- TPattern const & needle)
-{
- typedef typename Position<TJournal>::Type TPosition;
-
- TPosition infixBegin = entriesIt->virtualPosition;
- TPosition infixEnd = entriesIt->virtualPosition + entriesIt->length;
-
- TPattern tmpInsBuffer = infix(journal, infixBegin, infixEnd);
- Finder<TPattern const> finder(tmpInsBuffer);
- Pattern<TPattern, Horspool> pattern(needle);
-
- while (find(finder, pattern))
- appendValue(hitTarget, entriesIt->virtualPosition + beginPosition(finder));
-}
-//![findInPatchNodePart1]
-
-//![findInOriginalNode]
-template <typename TJournalEntriesIterator, typename TPattern>
-void _findInOriginalNode(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TPattern const & pattern,
- String<int> const & refHits)
-{
- // Define an Iterator which iterates over the reference hit set.
- typedef typename Iterator<String<int> const, Standard>::Type THitIterator;
-
- // Check if hits exist in the reference.
- if (!empty(refHits))
- {
- // Find upper bound to physical position in sorted refHits.
- THitIterator itHit = std::upper_bound(begin(refHits), end(refHits), (int)entriesIt->physicalPosition);
- // Make sure we do not miss hits that begin at physical position of current node.
- if (itHit != begin(refHits) && *(itHit - 1) >= (int)entriesIt->physicalPosition)
- --itHit;
- // Store all hits that are found in the region of the reference which is covered by this node.
- while ((int)*itHit < ((int)entriesIt->physicalPosition + (int)entriesIt->length - (int)length(pattern) + 1) && itHit != end(refHits))
- {
- appendValue(hitTarget, entriesIt->virtualPosition + (*itHit - (int)entriesIt->physicalPosition));
- ++itHit;
- }
- }
-}
-//![findInOriginalNode]
-
-//![findPatternInJournalString]
-template <typename TValue, typename THostSpec, typename TJournalSpec, typename TBufferSpec, typename TPattern>
-void findPatternInJournalString(String<int> & hitTarget,
- String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const & journal,
- TPattern const & pattern,
- String<int> const & refHits)
-{
- typedef String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> > const TJournal;
- typedef typename JournalType<TJournal>::Type TJournalEntries;
- typedef typename Iterator<TJournalEntries>::Type TJournalEntriesIterator;
-
- if (length(pattern) > length(journal))
- return;
-
- TJournalEntriesIterator it = begin(journal._journalEntries);
- TJournalEntriesIterator itEnd = findInJournalEntries(journal._journalEntries, length(journal) - length(pattern) + 1) + 1;
-
- while (it != itEnd)
- {
- if (it->segmentSource == SOURCE_ORIGINAL) // Find a possible hit in the current source vertex.
- {
- _findInOriginalNode(hitTarget, it, pattern, refHits);
- }
- if (it->segmentSource == SOURCE_PATCH) // Search for pattern within the patch node.
- {
- _findInPatchNode(hitTarget, it, journal, pattern);
- }
- // Scan the border for a possible match.
- _searchAtBorder(hitTarget, it, journal, pattern);
- ++it;
- }
-}
-//![findPatternInJournalString]
-
-//![findPatternInReference]
-template <typename TString>
-void findPatternInReference(String<int> & hits,
- TString const & reference,
- TString const & needle)
-{
- // Check whether the pattern fits into the sequence.
- if (length(needle) > length(reference))
- return;
-
- Finder<TString const> finder(reference);
- Pattern<TString, Horspool> pattern(needle);
- while (find(finder, pattern))
- appendValue(hits, beginPosition(finder));
-}
-//![findPatternInReference]
-
-//![searchPatternPart1]
-template <typename TString, typename TPattern>
-void searchPattern(StringSet<String<int> > & hitSet,
- StringSet<TString, Owner<JournaledSet> > const & journalSet,
- TPattern const & pattern)
-{
- typedef StringSet<TString, Owner<JournaledSet> > TJournalSet;
- typedef typename Host<TJournalSet const>::Type THost;
-
- // Check for valid initial state.
- if (empty(host(journalSet)))
- {
- std::cout << "No reference set. Aborted search!" << std::endl;
- return;
- }
-
- // Reset the hitSet to avoid phantom hits coming from a previous search.
- clear(hitSet);
- resize(hitSet, length(journalSet) + 1);
- // Access the reference sequence.
- THost & globalRef = host(journalSet);
- // Search for pattern in the reference sequence.
- findPatternInReference(hitSet[0], globalRef, pattern);
-
- // Search for pattern in the journaled sequences.
- for (unsigned i = 0; i < length(journalSet); ++i)
- findPatternInJournalString(hitSet[i + 1], journalSet[i], pattern, hitSet[0]);
-}
-//![searchPatternPart1]
-
-//![laodAndJoin]
-template <typename TString, typename TSpec>
-inline int
-loadAndJoin(StringSet<TString, Owner<JournaledSet> > & journalSet,
- SeqFileIn & databaseFile,
- JoinConfig<TSpec> const & joinConfig)
-{
- typedef typename Host<TString>::Type THost;
-
- clear(journalSet);
-
- String<char> seqId;
- THost sequence;
-
- // No sequences in the fasta file!
- if (atEnd(databaseFile))
- {
- std::cerr << "Empty FASTA file." << std::endl;
- return -1;
- }
- // First read sequence for reference sequence.
- readRecord(seqId, sequence, databaseFile);
- // We have to create the global reference sequence otherwise we loose the information after this function terminates.
- createHost(journalSet, sequence);
-
- // If there are more
- while (!atEnd(databaseFile))
- {
- readRecord(seqId, sequence, databaseFile);
- appendValue(journalSet, TString(sequence));
- join(journalSet, length(journalSet) - 1, joinConfig);
- }
- return 0;
-}
-//![laodAndJoin]
-
-//![main]
-int main()
-{
- // Definition of the used types.
- typedef String<Dna, Alloc<> > TSequence;
- typedef String<Dna, Journaled<Alloc<>, SortedArray, Alloc<> > > TJournal;
- typedef StringSet<TJournal, Owner<JournaledSet> > TJournaledSet;
-
- // Open the stream to the file containing the sequences.
- CharString seqDatabasePath = getAbsolutePath("/demos/tutorial/journaled_set/sequences.fasta");
- SeqFileIn databaseFile(toCString(seqDatabasePath));
-
- // Reading each sequence and journal them.
- TJournaledSet journalSet;
- JoinConfig<GlobalAlign<JournaledCompact> > joinConfig;
- loadAndJoin(journalSet, databaseFile, joinConfig);
-
- // Define a pattern and start search.
- StringSet<String<int> > hitSet;
- TSequence pattern = "GTGGT";
- std::cout << "Search for: " << pattern << "\n";
- searchPattern(hitSet, journalSet, pattern);
-
-
- if (empty(hitSet[0]))
- {
- std::cout << "No hit in reference " << std::endl;
- }
- else
- {
- std::cout << "Hit in reference " << " at ";
- for (unsigned j = 0; j < length(hitSet[0]); ++j)
- std::cout << hitSet[0][j] << ": " << infix(host(journalSet), hitSet[0][j], hitSet[0][j] + length(pattern)) << "\t";
- }
- std::cout << std::endl;
-
- for (unsigned i = 1; i < length(hitSet); ++i)
- {
- if (empty(hitSet[i]))
- {
- std::cout << "No hit in sequence " << i - 1 << std::endl;
- }
- else
- {
- std::cout << "Hit in sequence " << i - 1 << " at ";
- for (unsigned j = 0; j < length(hitSet[i]); ++j)
- std::cout << hitSet[i][j] << ": " << infix(value(journalSet, i - 1), hitSet[i][j], hitSet[i][j] + length(pattern)) << "\t";
- }
- std::cout << std::endl;
- }
- std::cout << "Done!" << std::endl;
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/journaled_set/solution_online_search_finder.cpp.stdout b/demos/tutorial/journaled_set/solution_online_search_finder.cpp.stdout
deleted file mode 100644
index 99fc3ff..0000000
--- a/demos/tutorial/journaled_set/solution_online_search_finder.cpp.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
-Search for: GTGGT
-Hit in reference at 311: GTGGT 644: GTGGT
-Hit in sequence 0 at 151: GTGGT 312: GTGGT
-Hit in sequence 1 at 308: GTGGT
-Hit in sequence 2 at 311: GTGGT 507: GTGGT
-Hit in sequence 3 at 327: GTGGT
-Hit in sequence 4 at 307: GTGGT 312: GTGGT 317: GTGGT
-Hit in sequence 5 at 0: GTGGT 320: GTGGT 986: GTGGT
-Done!
diff --git a/demos/tutorial/metafunctions/swap.cpp.stdout b/demos/tutorial/metafunctions/swap.cpp.stdout
deleted file mode 100644
index da392f0..0000000
--- a/demos/tutorial/metafunctions/swap.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-ATTAAATT
-133111311333
diff --git a/demos/tutorial/mini_bowtie/mini_bowtie.cpp b/demos/tutorial/mini_bowtie/mini_bowtie.cpp
new file mode 100644
index 0000000..fcbd05a
--- /dev/null
+++ b/demos/tutorial/mini_bowtie/mini_bowtie.cpp
@@ -0,0 +1,138 @@
+// ==========================================================================
+// mini_bowtie
+// ==========================================================================
+
+#include <iostream>
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/file.h>
+#include <seqan/index.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+struct ForwardTag {};
+struct ReverseTag {};
+
+template <typename TStore, typename TIter, typename TPatternIt>
+void addMatchToStore(TStore & fragStore, TPatternIt const & patternIt, TIter const & localIt, ForwardTag)
+{
+ typedef FragmentStore<>::TAlignedReadStore TAlignedReadStore;
+ typedef Value<TAlignedReadStore>::Type TAlignedRead;
+
+ for (unsigned num = 0; num < countOccurrences(localIt); ++num)
+ {
+ unsigned pos = getOccurrences(localIt)[num].i2;
+ TAlignedRead match(length(fragStore.alignedReadStore), position(patternIt), getOccurrences(localIt)[num].i1,
+ pos, pos + length(value(patternIt)));
+ appendValue(fragStore.alignedReadStore, match);
+ }
+}
+
+template <typename TStore, typename TIter, typename TPatternIt>
+void addMatchToStore(TStore & fragStore, TPatternIt const & patternIt, TIter const & localIt, ReverseTag)
+{
+ typedef FragmentStore<>::TAlignedReadStore TAlignedReadStore;
+ typedef Value<TAlignedReadStore>::Type TAlignedRead;
+
+ for (unsigned num = 0; num < countOccurrences(localIt); ++num)
+ {
+ unsigned contigLength = length(fragStore.contigStore[getOccurrences(localIt)[num].i1].seq);
+ unsigned pos = contigLength - getOccurrences(localIt)[num].i2 - length(value(patternIt));
+ TAlignedRead match(length(fragStore.alignedReadStore), position(patternIt), getOccurrences(localIt)[num].i1,
+ pos, pos + length(value(patternIt)));
+ appendValue(fragStore.alignedReadStore, match);
+ }
+}
+
+template <typename TIter, typename TStringSet, typename TStore, typename DirectionTag>
+void search(TIter & it, TStringSet const & pattern, TStore & fragStore, DirectionTag /*tag*/)
+{
+ typedef typename Iterator<TStringSet const, Standard>::Type TPatternIter;
+
+ for (TPatternIter patternIt = begin(pattern, Standard()); patternIt != end(pattern, Standard()); ++patternIt)
+ {
+ // exact search on pattern half
+ unsigned startApproxSearch = length(value(patternIt)) / 2;
+ if (goDown(it, infix(value(patternIt), 0, startApproxSearch - 1)))
+ {
+ for (unsigned i = startApproxSearch;; ++i)
+ {
+ Dna character = getValue(patternIt)[i];
+ for (Dna5 c = MinValue<Dna>::VALUE; c < valueSize<Dna>(); ++c)
+ {
+ if (c != character)
+ {
+ TIter localIt = it;
+ if (goDown(localIt, c))
+ {
+ if (goDown(localIt, infix(value(patternIt), i + 1, length(value(patternIt)))))
+ {
+ addMatchToStore(fragStore, patternIt, localIt, DirectionTag());
+ }
+ }
+ }
+ }
+ if (!goDown(it, character))
+ break;
+ else if (i == length(value(patternIt)) - 1)
+ {
+ if (IsSameType<DirectionTag, ForwardTag>::VALUE)
+ addMatchToStore(fragStore, patternIt, it, DirectionTag());
+ break;
+ }
+ }
+ }
+ goRoot(it);
+ }
+}
+
+int main(int argc, char * argv[])
+{
+ typedef String<Dna5> TString;
+ typedef StringSet<String<Dna5> > TStringSet;
+ typedef Index<StringSet<TString>, FMIndex<> > TIndex;
+ typedef Iterator<TIndex, TopDown<> >::Type TIter;
+
+ // 0) Handle command line arguments.
+ if (argc < 3)
+ {
+ std::cerr << "Invalid number of arguments." << std::endl
+ << "USAGE: minimapper GENOME.fasta READS.fasta OUT.sam" << std::endl;
+ return 1;
+ }
+ // 1) Load contigs and reads.
+ FragmentStore<> fragStore;
+ if (!loadContigs(fragStore, argv[1]))
+ return 1;
+
+ if (!loadReads(fragStore, argv[2]))
+ return 1;
+
+ StringSet<TString> text;
+ for (unsigned i = 0; i < length(fragStore.contigStore); ++i)
+ appendValue(text, fragStore.contigStore[i].seq);
+
+ reverse(text);
+ TIndex fmIndex(text);
+ TIter it(fmIndex);
+ search(it, fragStore.readSeqStore, fragStore, ForwardTag());
+ clear(fmIndex);
+ clear(it);
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+
+ fmIndex = TIndex(text);
+ it = TIter(fmIndex);
+ search(it, fragStore.readSeqStore, fragStore, ReverseTag());
+ clear(fmIndex);
+ clear(it);
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+ BamFileOut bamFile(argv[3]);
+ writeRecords(bamFile, fragStore);
+
+ return 0;
+}
diff --git a/demos/tutorial/mini_bowtie/nc_001454.fasta b/demos/tutorial/mini_bowtie/nc_001454.fasta
new file mode 100755
index 0000000..ad0d239
--- /dev/null
+++ b/demos/tutorial/mini_bowtie/nc_001454.fasta
@@ -0,0 +1,491 @@
+>gi|9626553|ref|NC_001454.1| Human adenovirus F, complete genome
+CATCATCAATAATATACCTTAAAACTGGAAACGAGCCAATATGATAATGAGGGAGGAGGGACTAGGGGTG
+GTGTAAGGTGACGTAGAGGCGGGCGGGGTGGGAAAGGGTGGAGGCGGATGACGTGTGGGGTCGGAGGACG
+GGCGCGGTGCGGCGGAAGTGACGGAAAATCTGGTGTATTGGGCGGGTTTTTGTAACTTTTGGCCATTTTG
+GCGCGAAAACTGAGTAATGAGGACGTGGGACGAACTTTGGACTTTTGTGTTTATGGAGGAAAAACTGCTG
+ATTATTACTGAACTTTGGCCCATGACGAACCGGTTTTTCTACGTGGCAGTGCCACGAGACGGCTCAAAGT
+CCTAATTTTTTATTGTGTGCTCAGCCCGTTTGAGGGTATTTAAACACAGCCAGAACATCAAGAGGCCACT
+CTTGAGTGCGAGCGAGTAGAGTTTTCTCCTCCATTGCTGTTGGCGCTTTTGACATAGCCACCAAGATGAG
+AATGCTGCCGGATTTTTTTACCGGGAACTGGGATGACATGTTCCAGGGGTTGCTGGAGACTGAATATGTG
+TTTGATTTCCCTGAACCTTCTGAGGCTTCTGAAGAAATGTCGCTTCATGATCTTTTTGATGTGGAGGTGG
+ATGGTTTCGAAGAGGACGCCAACCAGGAAGCGGTTGATGGTATGTTTCCCGAGAGGTTGCTGTCCGAGGC
+TGAGAGCGCTGCAGAGAGCGGTTCGGGTGATTCTGGGGTTGGCGAAGAGTTGTTGCCGGTTGATCTGGAT
+TTGAAATGCTATGAAGACGGTTTGCCTCCTAGCGATCCTGAAACTGATGAGGCTACAGAGGCGGAAGAAG
+AGGCGGCTATGCCGACTTATGTGAATGAAAATGAAAATGAGCTGGTGCTGGACTGTCCAGAGAACCCTGG
+GCGAGGTTGTCGGGCTTGTGATTTCCATCGGGGCACTAGTGGCAATCCTGAAGCTATGTGTGCTTTGTGT
+TATATGCGTTTAACTGGACACTGTATCTACAGTAAGTAAAAAAGTTTTTATTTGTTTGGTGGTGTTGGTT
+AATATGAACAAGAGTTAACGACTTTTTGTTATTTTAGGTCCAATTTCAGATGCGGAAGGGGAGTCTGAGT
+CGGGGTCGCCTGAGGACACTGATTTTCCCCACCCTTTAACCGCCACGCCGCCACATGGAATTGTGAGAAC
+CATCCCGTGCAGAGTTTCTTGTAGACGACGCCCAGCTGTTGAGTGCATAGAAGATTTACTTGAGGAAGAT
+CCAACAGATGAACCTTTGAACCTGTCCTTAAAGCGCCCCAAGTGCTCCTGAGATCATAGTAATAAAGTTA
+TTGACCCTTACCCTGTGTTTATTTCTTGGGCGTGTTTGTGGGTATATAAGCAGGTAGAATGGTTTTAGTG
+TTAGTTTATTCTGATGGAGTTGTGGAGTGAGTTACAAAGTTATCAGAACCTCCGACGCTTGCTGGAGTTG
+GCTTCTGCCAGAACTTCCAGCTGTTGGAGAATCCTTTTTGGCTCAACTTTAACTAATGTAATCTATAGAG
+CTAAGGAGGAGTACTCTTCGCGGTTTGCTGACCTTTTGTCGCATAACCCTGGAATTTTTGCTTCTTTGAA
+TTTGGGGCATCACTCATTTTTTCAAGAAATTGTGATCAGAAATTTAGATTTTTCTTCTCCTGGCCGTACG
+GTTTCTGGGCTTGCTTTTATTTGTTTTATATTGGATCAATGGAGCGCCCAAACTCATCTGTCGCAGGGTT
+ATACTCTGGATTACATGGCAATGGCTCTGTGGAGAACCTTGCTACGGAGGAAGAGGGTCTTAGGTTGCTT
+GCCGGCGCAGCGTCCGCACGGTTTGGATCCAGTGCAGGAAGAGGAGGAGGAGGAGGAGAACCTGAGGGCC
+GGCCTGGACCCTTCAACGGAATTGTAACTGAGCCTGATCCCGAAGAGGGTACTAGCAGTGGGCAAAGGGG
+GGGCATTAATGGGCAAAGGGGGACAAAGAGAAAGATGGAAAACGAGGGGGAGGACTTTTTAAAGGAGTTA
+ACCTTGAGTTTAATGTCTCGTCGCCATCATGAGTCTGTTTGGTGGGCTGATTTGGAAGATGAGTTTAAAA
+ACGGTGAAATGAATTTGTTATACAAGTATACATTTGAACAGCTGAAGACACATTGGCTGGAGGCTTGGGA
+GGATTTTGAGTTAGCTCTGAACACTTTTGCCAAAGTGGCTCTTCGCCCGGACACTATTTATACCATTAAG
+AAGACTGTTAATATACGTAAATGTGCCTATGTGCTGGGGAATGGAGCTGTGGTGCGGTTTCAAACATGTG
+ACCGTGTAGCCTTTAACTGCGCAATGCAGAGCTTGGGCCCTGGGCTTATTGGCATGAGTGGGGTAACTTT
+TATGAATGTGAGATTTGTAGTGGAGGGATTTAATGGCACAGTGTTTGCTTCTACCACTCAATTAACCTTG
+CATGGTGTGTTTTTTCAAAATTGCAGCGGTATCTGCGTGGATTCCTGGGGTAGGGTGTCTGCCAGAGGGT
+GTACGTTTGTTGCATGTTGGAAAGGGGTGGTGGGGCGAAACAAAAGTCAAATGTCTGTAAAGAAGTGTGT
+GTTTGAACGTTGCATTATGGCCATGGTGGTAGAAGGTCAGGCGCGGATTCGCCATAATGCGGGCTCTGAT
+AATGTGTGTTTTTTACTGCTAAAGGGAACTGCCAGTGTAAAGCATAACATGATTTGTGGCGGTGGTCACT
+CTCAGCTGCTAACCTGTGCAGATGGAAACTGTCAGGCTCTGAGAGTGTTTCACGTAGTATCTCATCCCCG
+CCGCCCCTGGCCTGTTTTTGAGCACAACATGCTTATGCGCTGTACTGTGCATTTGGGAGCTCGTCGTGGC
+ATGTTTTCTCCATACCAGAGTAACTTTTGCCACACTAAAGTTTTAATGGAAACTGATGCTTTTTCTCGGG
+TATGGTGGAACGGGGTATTTGATTTAACCATGGAGCTATTTAAAGTGGTGAGGTATGATGAGTCAAAGGT
+TCGTTGTCGCCCCTGTGAGTGTGGAGCTAATCATATTAGGTTATATCCAGCAACTCTGAACGTGACCGAG
+CAGCTGCGTACGGACCACCAGATGATGTCGTGTCTGCGTACTGACTACGAATCCAGCGATGAGGATTAAG
+GGTAAGGGGCGGAGCCTATTACAGGTATAAAGGTTGGGGTAGAGTAAAAAAAAGGGAAGTTACAAAATGA
+GTGGCTTCACGGAAGGAAACGCTGTGAGTTTTGAGGGTGGGGTGTTTAGCCCATATCTGACAACCCGTCT
+TCCCTCTTGGGCAGGAGTGCGTCAGAATGTGGTGGGGTCCAACGTTGATGGTCGTCCTGTCGCCCCTGCC
+AACTCGACAACCCTTACCTACGCCACTATTGGATCGTCGGTGGATACCGCTGCAGCTGCTGCCGCGTCTG
+CTGCTGCCTCTACTGCTCGTGGCATGGCAGCAGATTTTGGACTGTACAATCAACTGGCCGCGTCTCGGTT
+AAGAGAAGAAGATGCCCTGTCCGTGGTGTTGACCCGCTTGGAGGAGCTGTCTCAGCAGTTGCAAGATATG
+TCTGCCAAAATGGCTCTGCTTAACCCTCCCGCTAATACTTCTTAATAAAGACACAATTGGTTGGAAAAGT
+CAAAAGTGTTTATTTATTTCTTTTGCGGTAGGCCCTAGACCACCTGTCGCGGTCGTTTAAAACTTTATGG
+ATGTTTTCCAAGACCCGGTACAGGTGGGCTTGGATGTTCAAATACATAGGCATTAGGCCGTCCCTGGGAT
+GCAGGTAGGACCACTGGAGGGCGTCATGCTCTGGGGTGGTGTTGTAAATAATCCAATCGTAGCAGGGTTT
+TTGAGCATGAAACTGGAAGATGTCCTTAAGGAGGAGGCTAATGGCCAGAGGTAGCCCCTTGGTGAAGGTA
+TTAACAAATCGATTAAGTTGGGAGGGATGCATGCGAGGGGAAATCAGATGCATTTTGGCCTGAATTTTTA
+GGTTGGCAATGTTGCCACCGAGATCACGTCTGGGGTTCATGTTGTGCAGAACCACTAGCACGGTATAGCC
+GGTGCACTTGGGGAATTTGTCATGCAACTTGGAAGGGAAGGCGTGGAAAAACTTGGAAACCCCTTTGTGC
+CCTCCCAAATTTTCCATGCACTCATCCATAATGATGGCGATGGGGCCTTGGGATGCAGCCTTAGCAAAAA
+TGTTATCGGGGTGGGAAACATCGTAGTTTTGCTCCAGGGTAAGCTCGTCATAGGCCATTTTGATGAAGCG
+TGGTAAAAGGGTGCCCGACTGGGGTATAATGGTCCCTTCTGGACCTGGGGCGTAGTTACCCTCGCAGATT
+TGCATCTCCCAAGCCTTAATTTCTGAGGGGGGGATCATGTCCACCTGAGGGGCAATAAAAAAAACGGTTT
+CGGGTGGAGGGTTAATAAGCTGGGTGGAAAGCAAGTTTCGCAAAAGCTGGGATTTGCCGCAGCCAGTGGG
+ACCGTAAATGACCCCAATGACAGGCTGTAGTTGATAGTTTAAGGAGATGCAACTGCCATCTTCCCGCAAA
+AGCGGAGTGACTTCGTTCATCATGCTTCTGACATGCTGGTTTTCTTTAACCAAGTCTTGCAAGAGACGCT
+CACCGCCCAGGGAAAGTAGCTCTTCCAAGCTGCGGAAATGCTTTAGTGGTTTTAGGCCATCGGCCATGGT
+CATTTTTTCAAGGGATTGACGCAGCAAATAGAGCCGATCCCAGAGCTCGGTAATATGGTCTATGGCATCT
+CGATCCAACAAACTTCTTGGTTGCGGGGGTTGGGACGGCTTTGGCTGTACGGTACCAGTCGGTGGGCGTC
+CAGTGGAGCAAGGGTAATGTCTTTCCAGGGTCGCAGGGTTCGCGTTAGGTTGGTTTCGGTGACGGTAAAG
+GGGCGCGCTCCGGGTTGGGCGCTTGCCAGGGTTCTCTTCAGGCTCATCCTGCTGGTGTGAAAACGCGCGT
+CTTCGCCCTGAAAGTCGGCCAAGTAGCATTTTAACATGAGATCATAGTTGAGGGTTTCGGCAGCGTGTCC
+TTTGGCGCGAAGCTTGCCCTTGGAAATTTGCTGACAGCTGGGACAGCGGAGGCATTTTAGGGCGTAGAGT
+TTGGGAGCCAGGAAGACGGACTCTGGTGAATAAGCGTCGGCGCCACACTGTGCACACACGGTTTCGCACT
+CCACTAACCAGGCGAGCTCAGGGTGTTTTGGGTCAAAAACCAGATTGCCTCCGTGTTTTTTGATGCGTTT
+CTTACCTCGTGTTTCCATGAGGCGGTATCCGGCTTCGGTGACAAACAAGCTGTCTGTGTCTCCGTAAACT
+GATTTGAGGGTACGCTGTTCCAACGGTGTGCCTCTGTCCTCTGCGTACAAGATCTCGGACCATTCTGAGA
+CAAAAGCCCGGGTCCAGGCTAAAACAAAGGAGGCGATTTGGGAGGGATAACGGTTGTTTTCCACCAGGGG
+GTCGACCTTTTCTAGGGTGTGAAGGCAAAGGTCATCTTCTTCTGCATCCATAAAGGTAATTGGTTTGTAA
+GTGTAGGTCACGTGGTCATTGGGCTTGTGCGTGGGTGTATAAAAGGGGGCGTGTCCGGGCTCTTCATCAC
+TTTCTTCCGCATCGCTGTGGACGACAGCCAGCTGTTCGGGTGAGTATGCGCGTTGAAAGGTGGGCATAAC
+TTCAGCACTTAGAGTGTCAGTTTCCACAAACGAGGTGGATTTGATATTTATCTGCCCTGCGGCAATGCTT
+TTGATGGTGGCTGAATCCATTTGGTCAGAAAATACAATTTTTTTGTTATCAAGTTTGGTAGCAAAGGATC
+CATAGAGGGCGTTGGAGAGCAGTTTGGCAATGGAACGCAGTGTTTGGTTTTTTTCGCGGTCGGCACGCTC
+CTTGGCGGTGATATTAAGATGAACGTACTCTTTTGCCACGCAGCGCCACTCGGGAAAGACAGTGGCGCGC
+TCGTCGGGAAGCAACCGCACATGCCAGCCCCGGTTGTGCAGTGTTATAAGGTCCACACTGGTAACTACCT
+CGCCGCGCAGGGGCTCATTGGTCCAGCAAAGGCGCCCTCCTTTGCGCGAACAGAGTGGGGGCAAAACATC
+TAGTAGGTTTTCAGGTGGGGGGTCGGCGTCGATGGTAAAAATGCCAGGCAGCAGGGTGCGATTGAAATAA
+TCAATGGGGGTACCAACTTGCAAAAGAGCGTGTTCCCAATCTCGGACCGCTAGGGCGCGCTCGTAGGGAT
+TGAGTGGGAAGCCCCACGGCATGGGATGGGTAAGTGCAGAGGCGTACATGCCACAGATGTCATAAACGTA
+AAGTGGTTCGCGTAGCACCCCAATGTAAGTTGGATAACAGCGTCCTCCGCGAATGCTAGCCCGAACATAG
+TCATACATTTCGTGGGAAGGGGCCAGCAAGCTGCCGCCTAGGTCCGACCGCTGGGGTTTTACTGTCCGGT
+ACAAGATTTGACGAAAGATGGCGTGGGAGTTGGAGGAGATGGTGGGCCGCTGAAAGACGTTAAAGCTGGC
+TTCGGGTAGACCTACCGCGTCGCGGATAAACTGAGCGTAGGATTCGCGCAACTTTTGCACCAGGGCGGCG
+GTAACAAGCACATCCAGGGCACAGTAATCAAGGGTTTCACGCACCAGGTCGTAATGAGGACATTGCTTTT
+TTTCCCAGAGTTCGCGGTTCAGGAGGTACTCCTCGCGATCCTTCCAGTAATCTTCGGCAGGAAAGCCACG
+CTCGTCTGCGCGGTAAGAACCCAGCATGTAAAACTCGTTTACGGCCTTGTATGGGCAGCATCCTTTTTCT
+ACCGGAAGGGTATAGGCTTGTGCGGCTTTTCGCAGAGACGTGTGTGTGAGGGCAAAAGTGTCGCGCACCA
+TAACCTTGAGGAATTGATACTTAAAATCAGAGTCGTCGCAGGCGCCCTGCTCCCATAGGCGATAGTCGGT
+GCGTTTTTTTGAGCTTGGATTAGGAAGGGCAAAGGTGATATCATTAAAAAGGATTTTGCCGGCTCTAGGC
+ATAAAGTTGCGGGTGATTTTGAAAGGCCCGGGCACATCAGAACGGTTGTTAATAACCTGAGCTGCAAGTA
+CGATTTCATCGAAGCCGTTGATGTTATGCCCCACAATGTAAAGTTCTAAAAAGCGGGGGCGTCCCTGGAG
+TTTGGGGGCCTTTTGTAACTCTTCATAGGTAAGGTAATCAGGAGAAAAAAGACCCATTTCCAAGCAAGCC
+CATTCTGCCAGTTGGGGATTGGCGGCTAGAAAACCGCGCCATAGCTGGAGGGCAAAATGGGCTTGCAAGC
+GGTTGCGGTACTCTCGAAACTTTTTGCCCACCGCCAATTTTTCGGGGGTCACCACGTAAAAGGTACGTTC
+GTCGTTTCCCCAAGTGTCCCACTGCAACTCGCAGGCCAGTCGGCAGGCTTCCTTAACAAGGGCTTCCTCC
+CCCGAGAGATGCATAACTAGCATAAAGGGGACCAGCTGTTTACCAAAGGCTCCCATCCACGTGTAGGTTT
+CGACGTCGTAGGTGACAAAGAGGCGTTCGACGCGAGGATGAGAGCCGATCGGAAAGAAATTGATTTTCTG
+CCACCAGCCGGAGGAGTGGGCGTTGATATGATGAAAGTAGAAGTCTCTCCGGCGGACCGTGCATTCGTGC
+TGATATTTGTAAAAGCGGGCGCAATACTCGCAGCGTTGCACGCTCTGCATCTCTTGAATGAGGTGTACCT
+GTCGCCCACGTACGAGAAATCGGAGAGGGAAGTTGAGAAAATCCTCAGTGTCTTGCCTTTCACCCTCGTC
+GCCCTCTTCTGCACCTGCACGCTCTTGCTGTGGGTGGATGATGGAGGGAACGACAACGCCCCGCGAGCCA
+CAGGTCCAGACCTCAACGCGGGGCACCTTCAGCTTGAGAGCAAGAGTGCGGATTTGGGAACTGTCCAGGG
+AGTCCAGGAAGGCCTCGTTCAGATCAGCGGGCACAGATCGAAGGTTGACTTGCAGGAGACGGGTAAGGGC
+CGATGCCAGGCGGCGATGAAACTTGATTTCCATTGGTGAGTTGGTAGCAGTGTCAATAGCATACAGAAGA
+CCTTGTCCGCGGGGAGCTACAATGGTACCACGCAGGCGAGAGTTGGGGGTAAGGCTTACATTGTTCGCTG
+CGGGCGGGCGTCCGGAGGCAGTGGTGGATGGGGGTTCGCCTGGAGAGGCGGTAGCGGCACGTCGGCGTGG
+AGCTCGGGTAGCGGTTGGTGCTGCGCCCGCAGTTGACTGGCGTACGCGACGACGCGGCGGTTGAGGTCCT
+GAATGTGTCTCCGCTGGGAGAAAACCACCGGCCCTCGGACTCGGAACCTGAAAGAGAGTTCAACAGAATC
+AATATCGGCATCGTTGACCGCGGCTTGTCGCAGAATCTCCTGCACGTCGCCAGAGTTGTCTTGGTAGGCA
+ATCTCCGACATAAACTGGTCAATCTCTTCGTCCTGGAGTTCTCCGTGTCCTGCGCGCTCCACCGTGGCTG
+CAAGGTCATTAGAGATGCGCCTCATGAGCTGGGAGAAAGCGTTAAGACCGTTTTCGTTCCACACGCGGCT
+GTAGACCACGTCGCCAACAGTGTTTCGGGCGCGCATCACCACTTGTGCAATGTTCAGTTCTACGTGTCTT
+GCAAAGACGGCGTAGTTGCGTAGACGCTGGAAGAGGTAGTTGAGCGTGGTGGCAATGTGCTCGCAAACAA
+AGAAGTACATGACCCAGCGCCGAAGCGTCATTTCGTTAATATCTCCGAGGGCTTCCAAGCGGTCCATTGC
+CTCGTAGAAGTCAACCGCGAAGTTGAAGAACTGGGAGTTGCGCGCCGCAAACGTCAACTCCTCTTGCAGG
+AGCCGAATTGCCTCGGCTACAGTTTCGCGCACCTCTTGTTCGAAGGCTGCCGGCGTTTCCTCGATTTCCA
+TAAACTCCTCTTCCTCCACAGCGGGACCCTCGGGGCTGACCGGCGCTGGGACGGGTTGTCGTCGACGACG
+GCGCCGGACGGGCAGCCGGTCAATGAAACGTTGAATCATTTCTCCGCGACGGCGACGCATGGTTTCGGTG
+ACGGCGCGCCCGTTTTCTCGGGGGCGAAGTTCAAAGACGCCGCCTTGCATGCCCGAGCCGGAGAGGGGAG
+GAAGTAGGTGGGGCCCCTGAGGCAGCGACAGGGCGCTAACTGTGCATCTTATCATCTGTTGCATAGGTAG
+AGACTGCCAAGCCTCATTGAGCGAGTCCAGTTGGACGGGATCAGAGAATTTTTCGAGGAAAGCTTCCAGC
+CAATCGCAGTCGCAAGGTAAGCTAAGGACGGTGGCATGAGGGATTCTAAGGGAGGCAGCAGAGGAGGTGA
+TGCTGCTGATGAGGAAATTGAAGTAGGCGGTCTTCAAACGGCGGATGGTGGCAAGGAGAGTGACGTCTTT
+TGGTCCGGCCTGTTGAATTCGCAGGCGGTCTGCCATGCCCCAAGCTTCGTTCTGACATCGGCGCAGGTCC
+TTGTAATAATCTTGCATGAGACTTTCTACGGGTATTTCCAATTCCCCTCGGTCGGCCATGCGTGTGGAAC
+CAAACCCGCGCAGGGGCTGCAGCAGGGCCAAGTCGGCAACTACGCGTTCGGCGAGCACAGCCTGCTGTAT
+CTGAGTTAAAGTGTTTTGGAAATCATCCAAGTCCACAAAGCGGTGGTAGGAACCGGTGTTGATGGTGTAC
+GTGCAGTTGGCCATGACGGACCAGTTGACTACTTGCATCCCGGGCTGTGTAATCTCGGTATACCTAAGGC
+GCGAGTAGGCTCTGGATTCAAAAACGTAGTCGTTGCAGGTGCGAACCAAGTACTGGTAGCCAACAAGGAA
+GTGGGGCGGCGGCTCGCGGTAAAGGGGCCAGCGAAGTGTGGCGGGCGTACCGGGGGCCAGGTCCTCCAGC
+ATAAGGCGATGGTAGTGGTAAACATATCGAGAGAGCCAGGTGATGCCGGCGGCGGTAGTGGCGGCGCGGG
+CGTATTCGCGAACGCGGTTCCAGATGTTACGCAACGGGGAGAAGCGTTCCATGGCGGGCACGCTTTGACC
+AGTCAGACGGGCGCAATCTTGTACGCTCTAGATGAAAAAACAGAGAGCGGTCACGGACTTTCCTCCGTAG
+CCTGGAGGACAGACCGCCAGGGTGCAGTGGCAAACAACCCCCGGTTCGAGACCGGCTGGATCTGCCACTC
+CCGACGCGCCGGCCGTGCGTCCACGACGGAAACCCCGCCGAGACCTAGCCGCGGTCCCTGGATCTCCAGA
+TACGGAGGGGAGTCTTTTTGTTGTTTTTTGTAGATGCATCCGGTGTTGCGACAGATGCGTCCGACGGCGC
+CTCCAACACAGCCGCCGCTCCCGCCCCCCACTAGCGCCCCTGCAGCCGTTGCTCTCTCCGGAGCCGGCGG
+TGGCAACCCTGAGGAGGAGGCCATCCTGGACCTGGAAGAGGGCGAGGGGCTGGCCCGCTTGGGGGCGCCA
+TCCCCCGAGCGCCATCCCCGCGTGCAACTTAAAAAGGACTCACGCCAGGCGTACGTACCGCCTCAGAATT
+TATTCAGGGATCGCAGCGGGCAGGAGCCCGAAGAGATGAGGGATCGCAGGTTTTACGCGGGGCAGGAGCT
+GCGGGCCGGTTTTAACCGCCAACGGGTGCTACGCGCCGAAGATTTTGAACCCGACGAACATAGCGGAATA
+AGTCCGGCACGGGCGCACGTGTCGGCGGCCGATTTGGTAACCGCGTACGAGCAAACGGTGAACGAGGAGC
+GCAACTTTCAGAAAAGTTTTAACAATCACGTGCGCACCCTGGTGGCGCGCGAGGAGGTGGCCATTGGGCT
+GATGCATTTGTGGGACTTTATGGAGGCGTACGTGCAAAATCCTTCGAGCAAGCCGCTGACGGCGCAGCTG
+TTTTTGATTGTGCAACACAGCCGGGACAACGAGGCTTTCCGCGAGGCCATGCTGAATATTGCGGAGCCTG
+AGGGTCGCTGGCTTTTGGACCTGGTTAATATCCTTCAGAGCATTGTGGTACAGGAGCGCAGTCTAAGCCT
+GGCCGACAAGGTGGCGGCCATTAATTACAGCATGCTTAGCCTCGGCAAGTTTTACGCCCGCAAGATTTAC
+AAAACCCCCTATGTGCCCATAGACAAGGAGGTTAAAATAGATAGCTTTTACATGCGCATGGCGCTAAAGG
+TGTTAACGCTGAGTGACGATCTGGGGGTGTACCGCAACGACCGTATTCACAAAGCTGTGAGCGCCAGCCG
+CCGTCGCGAGCTTAGCGACCGCGAACTAATGCACAGCCTGCGTCGGGCTCTAACGGGCACCGGCACTGAT
+GCCGAAACTGAATCTTACTTTGACATGGGGGCGGACCTGCAATGGCAGCCCAGCGCCCGGGCCCTGGAGG
+CGGCTGGTTATGTTGGCGCGGAAGAAGATGAGGAGGACTATGAGGACGAGCCCTGATCAGCCAGGTGGTG
+TTTTTGTAGATGCTGCGTTCGACGGCGGTGGCGGACGGGTCGCAGCAGGTGAATCCCGCTATGTTGGCGG
+CCCTGCAAAGCCAACCTTCGGGCGTGACACCCTCAGACGACTGGGCGGCGGCCATGGATCGCATCCTGGC
+CCTAACCACCCGCAATCCCGAAGCCTTCAGGCAGCAGCCCCAGGCCAACCGCTTTTCGGCCATTTTGGAA
+GCCGTGGTTCCTTCTCGCACTAACCCTACCCACGAAAAGGTGTTGGCGATTGTAAACGCTCTGGTAGAAA
+GCAAAGCCATCCGCAAGGATGAGGCGGGACTGATATATAATGCCTTACTGGAGCGGGTAGCGCGCTATAA
+TAGCACCAACGTGCAGGCCAACCTAGACCGACTGACAACGGACGTGAGAGAGGCGGTGGCGCAGCGGGAA
+CGCTTTATGCATGACGTTAACCTAGGATCCCAAGTGGCCCTTAATGCTTTTCTGAGCACATTGCCAGCTA
+ATGTGCCGCGCGGGCAGGAGGACTATGTCAGCTTTATCAGCGCGCTTCGCCTCCTGGTGGCGGAGGTGCC
+CCAGAGTGAGGTGTACCAGTCCGGGCCAGACTACTTTTTCCAAACTTCACGGCAGGGTTTGCAAACTGTA
+AACCTAACACAGGCGTTTAAAAACTTGCAAGGAATGTGGGGCGTGCGAGCCCCCGTGGGGGACCGAGCCA
+CCATCTCCAGCTTATTGACGCCGAACACTCGGTTGTTGCTGTTGTTGATAGCGCCATTTACCAATAGCAG
+CACCATTAGCCGTGACTCGTACCTTGGTCATCTAATCACGCTGTACCAGGAGGCTATTGGCCAGACGCAG
+GTGGACGAACAGACCTTCCAGGAAATCACCAGCGTGAGTCGGGCTCTTGGTCAGCAAGACACCAGTAGCT
+TGGAAGCCACGCTGAACTTTTTGCTAACCAACCGCCGGCAAAAAATTCCATCGCAATTTACTTTAAATTC
+TGAAGAGGAACGTATTTTGCGCTATGTGCAGCAGTCCGTCAGCTTGTATTTAATGCGCGAGGGGGCTACT
+GCGTCGTCGGCTCTGGACATGACGGCACGTAACATGGAACCGTCGCTATACTCGTCCAACCGGCCTTTTA
+TTAACCGCCTGATGGACTATCTGCACCGCGCGGCGGCCATGAACAGCGAGTACTTCACCAATGCCATTCT
+TAACCCGCACTGGATGCCACCGTCCGGTTTTTACACGGGCGAGTTTGACGTGCCTGAGGGCGACGACGGA
+TTTTTGTGGGATGACGTGTCCGAAAGCATTTTCGAACCAATGCGTTCCCGTAAAAAGGAGGGCGGAGACG
+AGCTGCCGCTGTCGTTAGTGGAGGCAGCTTCTCGAGGCCAAACCCCCGTTCCCAGTCTGCCATCGCTGAC
+CAGCAGCAGCAGCGGACGGGTGTTTCGACCCCGTTTGCCCGGGGAGTTGGACTACCTCAGCGATCCCCTA
+TTGCGACCGGCCCGGAAAAAAAATTTTCCCAACAACGGGGTGGAAAGCCTGGTAGATAAGATGAATCGCT
+GGAAAACCTACGCCCAGGAGCAGCGGGAAGAGAGGCAGCCCCGCCCACTGACCGGCACCTTCAGTCGTTG
+GCGCCGGCGGGAAGAGGACGCTTACGACTCGGCCGATGATAGTAGCGTGTTGGACTTGGGGGGAACCGGC
+GCCGCTTCTGATCCCTTTGCTCATCTGCGGCCTCAGGGTCAACTGGGTCGTTTGTATTAAAAAAATAAAA
+TAAAAAGAAATCCACTTACCAGAGCCATAGCAACAGCGTCCGTCCCTTTGTCTGTTTTTTCCCTCTTCCC
+GGTAGTCAAAATGAGACGTGCGGTGGGAGTGCCGCCGGTGATGGCGTACGCCGAGGGTCCTCCTCCTTCT
+TACGAAAGCGTGATGGAAACAGCGGATTTGCCGGCAACGCTGCAGGCGCTCCACGTCCCTCCCCGTTACC
+TGGGGCCTACGGAAGGGCGGAACAGCATACGTTACTCGGAGCTGGCGCCTCTATACGACACCACCCGGGT
+TTACCTGGTGGACAACAAGTCGGCGGACATTGCCTCCCTGAACTACCAGAACGACCATAGTAACTTTCAA
+ACCACGGTGGTACAAAATAATGACTTTACCCCGACAGAGGCCGGTACCCAGACCATCAATTTTGACGATC
+GCTCCAGGTGGGGCGGCGACCTGAAAACCATTTTGCGCACCAATATGCCCAACATCAATGAGTTTATGTC
+TACCAACAAGTTTCGGGCGCGGGTGATGGTAGAAAAAGTGAACCGGAAAACCAACGCTCCTCGTTACGAG
+TGGTTCGAGTTCACTTTGCCAGAGGGCAACTATTCGGAAACTATGACTATAGACCTTATGAATAACGCGA
+TCGTAGACAACTACTTAGCAGTAGGACGTCAGAACGGCGTGCTGGAAAGCGACATTGGGGTGAAGTTTGA
+CACGCGCAACTTCCGGTTGGGTTGGGATCCCGTAACCAAGTTGGTGATGCCCGGCGTGTACACCAACGAG
+GCCTTTCACCCAGACATTGTTTTGCTACCTGGTTGCGGCGTGGATTTCACGCAAAGTCGTCTGAACAACT
+TGCTAGGAATACGCAAGCGAATGCCCTTTCAAAAAGGTTTCCAAATCATGTATGAGGATTTGGAGGGCGG
+CAACATTCCTGCTCTATTAGATGTGGAAAAGTACGAAGCTAGCATAAAAGAAGCACAGGAGATCCGTGGA
+GCCGACTTCAAGCCCAATCCTCAAGACTTGGAAATCGTGCCCGTGGAAAAAGACAGCAAGGAAAGAAGTT
+ACAATCTCCTAGAGGGAGATAAAAATAACACTGCCTACCGCAGCTGGTTTTTGGCCTACAACTACGGAGA
+TGCAGAGAAAGGAGTAAAGTCTTGGACCTTGTTAACAACCACGGATGTGACCTGTGGGTCGCAGCAGGTG
+TACTGGTCCCTTCCCGACATGATGCAAGATCCAGTAACGTTTCGACCGTCCACGCAAGTCAGCAACTACC
+CTGTAGTGGGGGTGGAATTACTGCCAGTACATGCCAAGAGTTTTTACAACGAGCAGGCCGTGTATTCTCA
+GCTTATTCGCCAGTCCACCGCGCTTACGCACATCTTCAATCGTTTTCCTGAGAATCAGATACTAGTGCGT
+CCGCCCGCTCCGACCATTACCACCGTCAGTGAAAACGTTCCCGCCCTCACAGATCACGGAACCCTGCCGC
+TGCGCAGCAGTATCAGTGGAGTTCAGCGCGTGACCATCACTGACGCCCGCCGTCGGACCTGCCCCTACGT
+GCACAAAGCTCTGGGCATAGTTGCTCCCAAAGTGCTGTCTAGCCGCACGTTTTAACATGTCCATTCTTAT
+TTCGCCCGACAACAATACCGGCTGGGGACTTTGCTCCGCCGGCATGTACGGCGGCGCCAAACGGCGTTCT
+AGCCAACACCCTGTTCGCGTGCGCGGACATTACCGCGCCCCCTGGGGGGCTTACACCCGCGGTGTTATCT
+CAAGACGTACCACCGTTGATGACGTCATTGACTCCGTGGTAGCCGATGCCCAACGCTACACGCGGCCCGT
+TGCCACGTCCACCGTGGATTCCGTGATTGATAGTGTGGTGGCCAACGCCAGGCGTTACGCGCAACGCAAG
+AGACGTTTGCAACGTCGCCGTCGTCGGCCTACTGCCGCCATGACTGCCGCTCGGGCGGTACTAAGGCGGG
+CACAAAGGATAGGACGTCGGGCCATGCGCCGAGCGGCTGCTTCTGCCAGTGCAGGTCGGGCCCGTCGTCA
+GGCCGCCCGTCAGGCCGCGGCGGCTATTGCCAGCATGGCTCAGCCCCGCCGGGGGAATATCTACTGGGTG
+CGAGATGCGTCGGGCGTGCGGGTGCCGGTGCGAAGCCGTCCCCCTCGGAGTTAGAAGACGCGTTCACAAA
+ATGGACGAAGACTGAGTTTCCCTGTCGTTGCCAGCCGGTCCCCGTCAGCATGAGCAAGCGCAAGTTCAAA
+GAAGAGCTGCTGGAGGCCCTTGTGCCTGAAATCTATGGCCCTGCCGCGGACGTCAAGCCCGACATTAAGC
+CTCGCGTGCTCAAGCGGGTTAAAAAGCGAGAAAAAAAAGAGGAAAAGGAGGAAGCAGGGTTGCTAGACGA
+CGGTGTTGAGTTTGTGCGGTCCTTTGCCCCCCGGCGGCGGGTGCAGTGGCGGGGACGTAAAGTCCAGCGC
+GTGCTTAGACCCGGCACTACTGTAGTATTTACTCCCGGAGAGCGGTCCGTCACGCGGGCCTTAAAACGGG
+ATTACGATGAGGTTTACGCTGACGAAGACATTCTTGAGCAGGCCGCCCAACAGGTTGGGGAATTCGCCTA
+CGGCAAGCGCGGCCGCTACGGAGAGTTGGGACTCTTGCTGGACCAAAGCAACCCCACGCCAAGCCTGAAG
+CCCGCAACGGCGCAGCAGATCCTTCCCGTGACAGAAATCAAGCGGGGCGTCAAGAGGGAAAACAAAGACG
+AATTGCAGCCCACCATGCAACTCATGGTGCCAAAGCGGCAAAAGCTTGAGGAGGTGTTGGAGAACATGAA
+AGTGGATCCCAGCGTTGAGCCGGAAGTTAAAGTGCGCCCCATTAAAGAAATAGGGCCCGGACTTGGCGTG
+CAGACGGTGGATATCCAAATCCCCGTGCGTGCGTCTTCGTCCACCGTTAGCACTGCGGTGGAGGCCATGG
+AAACGCAGCCTGAGCTGCCAGAGGCCGTAGCCCGTGCGGTTGCGGCCACGCGAGAGATGGGTTTGCAAAC
+GGATCCGTGGTACGAATTCGTGGCCCCTACCAGCCGTCCACGCTCCCGGAAATACACAACCGCTAATTCG
+ATTTTACCGGAGTATGCCTTGCATCCATCCATCACGCCAACGCCCGGTTACCGCGGAACAACCTTCAAAC
+CCAGCCGCACTCGCTCCACCCGCCGTCGTCGCTCTGTCCGCCGCCGCTCAAGGCGCACGGCCCCCATCTC
+TGTGCGTCGCGTAACCCGCCGTGGACGCACGCTGACCCTTCCCAACGCGCGTTACCACCCTAGCATTCTC
+GTTTAATCCGTGCGCTGCCGTTTTTTCAGATGGCTTTGACTTGCCGGTTTCGCATTCCCGTTCCGTCCTA
+CCGAGGAAGATCTCGCCGTAGGAGAGGCATGGCGGGCAGTGGCCGCCGACGCGCTTTGCGCAGGCGAATA
+AAAGGCGGATTTTTGCCCGCGTTGATTCCCATCATCGCCGCCGCCATAGGCGCAATCCCAGGCGTGGCCT
+CCGTGGCCTTGCAAGCAGCTCGCAAACAATAAAAGAAGGCTTAACACTGACTTCCTGGTCCTGACTATTT
+TATGCAGACAAGACATGGAAGACATCAATTTTGCGTCGCTGGCTCCGCGGCACGGCTCGCGGCCGTTTAT
+GGGCACCTGGAACGAGATCGGCACCAGCCAGCTCAACGGGGGCGCTTTCAGTTGGAGCAGCCTGTGGAGT
+GGCATTAAAAACTTTGGGTCCTCCATTAAGTCATTTGGTAACAAGGCCTGGAACAGTAACACAGGTCAAA
+TGCTCCGGGATAAGCTAAAGGACCAAAACTTTCAACAAAAAGTCGTGGACGGGCTGGCTTCCGGCATTAA
+CGGCGTGGTGGATATAGCCAACCAGGCCTTGCAAAACCAAATCAATCAGCGGCTGGAAAATAGCCGCCAG
+CCTCCGGTGGCTCTGCAGCAGCGCCCGCCTCCCAAAGTCGAGGAGGTAGAAGTGGAGGAAAAACTACCGC
+CTTTGGAGGTGGCACCCCCCCTGCCTAGTAAAGGCGAAAAGCGGCCGCGACCGGATCTGGAGGAAACCCT
+AGTTGTGGAATCCCGCGAGCCCCCCTCGTACGAGCAGGCTTTGAAAGAGGGCGCTTCACCTTATCCCATG
+ACCAAACCTATTGGTTCCATGGCCCGACCTGTATACGGGAAGGAAAGCAAACCCGTGACCTTAGAACTAC
+CTCCACCCGTGCCCACCGTTCCGCCCATGCCGGCTCCGACGCTTGGCACCGCCGTTTCTCGCCCCACCGC
+CCCCACTGTTGCCGTGGCTACCCCCGCCCGCCGCCCTCGCGGGGCTAACTGGCAGAGCACTCTTAACAGC
+ATTGTGGGTCTGGGAGTAAAAAGCCTGAAACGCCGCCGGTGCTATTAAAATGGAACCAAGCTAAATGCCA
+TTATTGTGTACGCCTCCTGTGTTACGCCAGAGAGCCGAGTGACACGTCACCGCCAAGAGCGCCGCTTGCA
+AGATGGCCACCCCCTCGATGATGCCGCAATGGTCTTACATGCACATCGCCGGGCAGGACGCCTCGGAGTA
+CCTGAGCCCGGGCCTGGTGCAGTTCGCCCGTGCCACCGATACCTACTTCAGCCTGGGGAACAAGTTCAGA
+AACCCCACCGTGGCTCCCACCCACGATGTAACCACAGACAGGTCGCAGCGACTGACGCTGCGCTTCGTGC
+CCGTCGACCGCGAGGAAACCGCCTACTCTTACAAAGTGCGCTTTACGCTGGCCGTGGGCGACAACCGGGT
+TTTGGACATGGCCAGCACCTACTTTGACATCCGCGGCGTGCTGGATCGTGGTCCCAGCTTTAAACCCTAT
+TCGGGCACTGCATACAACTCCCTGGCCCCCAAAGGTGCTCCCAATCCTAGCCAGTGGACAAACCAAAACA
+AAACAAACTCCTTTGGACAAGCTCCCTATATAGGACAAAAAATCACCAATCAGGGCGTGCAAGTGGGCTC
+AGACTCCAACAATCGCGATGTGTTTGCCGATAAAACGTACCAACCGGAGCCTCAAGTGGGGCAGACGCAA
+TGGAACATTAATCCAATGCAAAACGCTGCGGGAAGAATACTAAAACAAACCACGCCCATGCAGCCATGTT
+ATGGGTCATACGCTAGACCAACAAACGAAAAAGGAGGTCAAGCCAAGCTGGTAAAAAATGACGACAATCA
+GACCACAACAACAAACGTAGGTTTAAACTTTTTTACCACTGCCACTGAAACCGCTAATTTTTCACCAAAG
+GTGGTTCTGTACAGCGAAGATGTTAACTTAGAAGCGCCCGATACCCACCTTGTGTTTAAGCCAGATGTCA
+ACGGCACAAGTGCCGAGCTTTTACTGGGACAGCAGGCCGCTCCCAATCGACCTAATTACATTGGTTTTAG
+GGACAACTTCATTGGTTTGATGTACTACAATTCCACTGGCAACATGGGAGTGCTGGCCGGGCAAGCTTCT
+CAGCTCAACGCAGTGGTGGACTTACAAGATAGAAACACGGAGCTGTCTTACCAGTTAATGCTTGACGCTT
+TAGGGGATCGGAGTCGATACTTCTCCATGTGGAACCAGGCAGTGGACAGCTATGACCCAGACGTGAGAAT
+TATTGAAAATCATGGCGTGGAAGACGAGCTCCCCAACTATTGCTTTCCTCTTAATGGGCAAGGAATATCT
+AACAGTTACCAAGGCGTAAAGACTGACAATGGAACTAACTGGTCTCAGAATAATACAGACGTCTCAAGCA
+ACAACGAAATTTCCATTGGCAATGTGTTTGCCATGGAGATTAATCTGGCGGCTAACTTGTGGAGAAGCTT
+CTTGTACTCAAATGTAGCCCTGTACTTGCCTGACTCTTACAAAATAACCCCCGATAACATTACTTTACCC
+GACAACAAAAATACATATGCCTACATGAACGGTCGGGTTGCCGTCCCCAGCGCCCTGGATACATACGTGA
+ACATTGGGGCGCGGTGGTCTCCAGACCCCATGGACAACGTTAATCCCTTTAACCACCACCGCAATGCTGG
+TCTGCGCTACCGTTCTATGCTCCTGGGTAACGGCCGCTACGTGCCTTTTCACATCCAAGTGCCCCAGAAA
+TTTTTCGCCATTAAAAATCTCCTGCTCCTGCCCGGGTCCTACACCTATGAGTGGAACTTCCGGAAGGATG
+TTAACATGATTCTCCAAAGCAGTCTCGGTAACGACCTCAGGGTCGATGGAGCCAGCGTCAGGTTTGACAG
+CATTAACCTGTATGCCAACTTTTTCCCCATGGCTCACAACACCGCTTCCACCTTGGAAGCAATGCTTCGT
+AATGATACCAACGATCAGTCTTTCAACGACTACCTCTGCGCTGCAAACATGCTTTACCCCATACCCGCCA
+ACGCTACTAGCGTGCCCATTTCTATTCCTTCGCGAAATTGGGCTGCTTTTCGGGGGTGGAGTTTTACTAG
+ACTAAAAACTAAAGAAACCCCCTCTTTGGGGTCCGGGTTTGATCCATATTTCACCTACTCTGGCTCCGTC
+CCATACTTGGATGGCACCTTTTACCTGAACCACACTTTTAAAAAGGTGTCCGTTATGTTCGACTCCTCTG
+TGAGCTGGCCTGGTAACGACCGACTACTTACTCCCAACGAGTTTGAAATCAAACGAACCGTGGATGGGGA
+AGGATACAACGTGGCTCAATGTAACATGACCAAGGACTGGTTCCTCATACAAATGCTCAGTCACTACAAT
+ATTGGCTACCAGGGTTTCCACGTACCAGAAAGCTACAAGGACAGGATGTACTCCTTTTTCCGAAACTTCC
+AACCCATGAGCCGCCAGGTGGTAGACACTACCACCTACACGGAGTATCAGAATGTAACTCTCCCTTTCCA
+GCATAATAACTCTGGCTTTGTAGGATACATGGGACCTGCCATACGGGAGGGACAAGCTTACCCCGCCAAC
+TATCCATACCCCCTTATTGGTCAGACGGCCGTACCAAGCCTGACTCAGAAAAAATTTCTTTGCGATCGTA
+CCATGTGGCGCATTCCCTTTTCCAGCAACTTTATGTCTATGGGGGCCCTGACCGACCTGGGGCAAAACAT
+GCTGTACGCCAACTCCGCCCACGCGCTCGACATGACTTTTGAGGTGGACCCCATGGATGAGCCCACACTT
+CTCTATGTTCTGTTCGAAGTTTTCGACGTTGTGCGCATCCACCAGCCGCACCGCGGCGTCATCGAGGCCG
+TCTACCTGCGTACGCCGTTCTCGGCCGGTAACGCCACCACATAAGAAGCCAGCCAATGGGCTCCAGCGAG
+CAGGAGTTGGTCGCCATCGTGCGCGAACTGGGCTGCGGACCTTACTTTCTGGGCACGTTTGACAAACGCT
+TTCCGGGTTTTATGGCACCGCATAAGCTGGCGTGTGCCATTGTTAACACGGCGGGCCGCGAAACCGGCGG
+CGTACACTGGCTGGCCCTGGCCTGGAACCCAAAGAACCGTACCTGCTACCTCTTCGACCCATTTGGCTTT
+TCGGACGAGCGCCTCAAACAGATTTACCAGTTTGAGTATGAAGGTCTCCTAAAGCGTAGTGCGTTGGCCT
+CAACCCCGGACCATTGTATCACCCTAATTAAGTCCACCCAAACTGTTCAAGGACCGTTTTCGGCGGCCTG
+CGGCCTTTTCTGCTGCATGTTTTTACATGCTTTTGTAAACTGGCCCACCAGTCCCATGGAGCGCAACCCC
+ACCATGGACCTTCTTACCGGCGTTCCAAACAGCATGCTTCAAAGCCCCCAGGTTGTACCCACCCTGCGTC
+ACAACCAGGAGCGGTTGTACCGTTTCCTGGCGCAACGTTCTCCCTACTTTCAGCGTCATTGCGAGCGTAT
+CAAAAAAGCCACCGCGTTTGACCAAATGAAAAACAACATGTAACGGTTCAATAAAAGCTTTTATTGATTC
+AAAAAATTCATGCATGCAGACTTTTTATTTTAAAATGGTTCTTTCTCCCCATCGCCGTGGCTGGCGGGCA
+AAGCTACGTTGCGATACTGCAAACGAGAGGACCACTTAAATTCTGGAATCAGCATCTTAGGAAGGGGGCC
+ATCGACGTTCTCTCCCCACAGCCGTCGTACAAGTTGCAAAGCTCCCAAAAGGTCAGGTGCAGAAATTTTG
+AAATCACAGTTGGGACCTTGGCCACCACGGGAGTTGCGGTATACGGGGTTAGCGCACTGGTAAACCAGCA
+CACAGGGATACTGGATACTGGCAAGAGCCACCTTGTCGGTTACTTCTTCAGCTCTAAGACTGTCAACATT
+GCTTAGAGCGAAAGGGGTGGCTTTACACATTTGCCGACCCAATTGGGGCACACCGGTGGGCTTGTACAGG
+CAGTCGCAGCGCATCACCATTAATAGGCGTTTTAGCCCGTTTTGCATTTTTGGATATTCGGCTTGCATAA
+AAGCTTCTATCTGCAAAAAAGCCGTCTGAGCCTTTGTTCCTTCCGAGAAAAACAGACCGCAGGACTTGGC
+AGAAAACACATTGGTGGCACAGCTCACGTCTTCTACACAACAACGGGCATCGTCATTCTTCAGTTGAACC
+ACGCTGCGCCCCCACCGGTTTTGTACCACCTTGGCTCGACTCGGGTGCTCCTTTAACGCCCGCTGAGCGT
+TCTCGCTCGCTACATCCATTTCCACCAACTGCTCTTTTTGAATCATTTCCAGGCCATGATAACAGCGTAG
+CACTCCCTCTTGCTCGGTGCAGCCGTGAAGCCAAATCGCGCAACCAGTGGGCTCCCATTCATTGTTTTTT
+ACCCCGGCGTACGACTCCACGTAGGCTCTCAAAAAACGTCCCATCATTTCCACAAATGTCTTGTGGCTGG
+TGAAGGTGAGAGGGAGGCCGCGATGCTCCTCGTTAAGCCACGTTTGGCAAATTTTGCGATAAACGTTGCT
+TTGTTCGGGTAGGAACTTGAAGCCATTCTTCTCTTCGGCCTCCACATGATACTTTTCCATTAGCTTTATC
+ATTAAATCCATGCCTTTCTCCCAGGCGGAAACCAAGGGCTCTGCCTGCGGATTAAGAACCACTGATGTAA
+CAGCTTTGGAAGTGCTAGGCTCTTCTTCCTCGTTGTTTTCCTCTGACGGGGGAGGCACACCTTTGGGCTC
+CAAGCGTCTTACATATCGCTTGCCACTGGCCTTTTGAACGACCTGCACGCCGGGGTGACTGAACCCGGTG
+TACACCACCTCTTCTTCTTCCTCCTCGCTGTCTGGAACCACTTCGGGAGACGGAGGCAAAACTGGAACGC
+GATCCGGCACTTGAACATTCTTGCGCAACTTCTTTTTGGGAGGAAGTGACGGGGCCCGTTCTGGACTCGT
+CTCCTGCAAGTAGGGAGTGATGGTGGGGAGTTCTTGCTGACGGCCGGCCATGCTTTACTCCTAGGCGAGA
+AAATATGGAGGAGGATCTTAAGCTGCAGCCAGACTCCGAAACCTTAACCACCCCCAACTCTGAGGTCGGC
+GCCGTCGAGCTAGTGAAACATGAGGAGGAAAATGAGCAAGTGGAGCAAGATCCGGGCTATGTAACGCCCC
+CCGAGGACGGCAAGGAACCAGTGGCCGCACTCAGCGAACCCAACTATTTGGGAGGGGAGGACGACGTGCT
+CCTGAAGCACATAGCGCGACAGAGCACCATTGTACGAGAAGCCCTCAAGGAATGCACACAGACTCCGCTG
+ACGGTGGAGGAATTAAGCCGCGCGTATGAAGCTAACCTGTTTTCGCCGCGTGTACCGCCAAAAAAGCAGC
+CTAACGGCACCTGCGAAACAAACCCGCGCCTCAATTTTTATCCCGTCTTTGCGGTGCCTGAAGCACTGGC
+TACTTATCACATCTTTTTCAAGAACCAACGCATTCCCCTCTCTTGCCGCGCCAACCGTACACGCGGTGAC
+GGCCTTTTGCATCTCAAAGCTGGAGCTCACATACCTGAGATCGTTTCTTTAGAAGAAGTACCCAAGATTT
+TTGAAGGTCTTGGCAAGGACGAAAAACGGGCGGCAAATGCTCTGCAAAAAAACGAAACCGAGAATCAGAA
+CGTGTTGGTAGAGCTGGAGGGTGACAACGCGCGTTTGGCCGTACTCAAACGCACCATTGAAGTTTCACAC
+TTTGCTTATCCCGCGCTAAATCTTCCTCCCAAAGTAATGCGTTCTGTTATGGATCAAGTGCTTATTAAGC
+GAGCAGAGCCCATTGATCCCCAACAACCCGACCTAAACTCTGAGGACGGACAACCCGTAGTCTCAGACGA
+CGAGCTTGCTCGCTGGCTAGGTACCCAGGATCCCTCAGAGCTGCAAGAGCGGCGAAAAATGATGATGGCA
+GCAGTTTTGGTTACAGTGGAATTGGAATGCCTGCAGCGCTTCTTTGCTAACCCTCAAACACTGCGCAAAG
+TCGAGGAGTCCCTGCACTATGCCTTCCGTCATGGCTACGTTCGTCAGGCCTGCAAGATCTCCAACGTAGA
+GCTCAGCAATCTGATCTCTTACATGGGCATTCTACACGAAAACCGGCTGGGGCAGAACGTTCTTCACTGC
+ACCTTGCAAGGGGAGGCCCGCCGAGACTACGTCCGCGACTGCATCTATCTTTTCCTTATTCTCACCTGGC
+AAACCGCTATGGGAGTCTGGCAGCAGTGCTTGGAAGAGCAAAACCTCCAGGAGCTTAATAAATTGCTAGT
+ACGAGCCCGTCGCGAACTCTGGACGTCTTTTGACGAGCGTACGGTTGCCCGCCAGCTGGCAAACCTCATT
+TTTCCCGAGCGGCTTATGCAAACATTGCAAAATGGTTTGCCAGACTTTGTCAGCCAAAGTATCTTGCAAA
+ACTTTCGCTCCTTTGTACTCGAGCGTTCCGGCATCTTGCCGGCTATGAGTTGTGCTTTGCCCTCCGATTT
+TGTCCCCCTCTGCTACCGCGAATGCCCCCCACCGTTGTGGAGTCACTGCTACCTCCTCCGTCTAGCCAAC
+TATTTGGCCCACCACTCTGATCTTATGGAAGACTCTAGCGGCGACGGACTGCTAGAATGTCACTGCCGTT
+GCAACCTCTGCACCCCTCATCGCTCACTGGTCTGTAACACCGAGCTTCTTAGCGAAACCCAAGTAATCGG
+TACCTTTGAGATTCAAGGGCCAGAGCAACAAGAAGGTGCTTCCAGCCTCAAACTCACGCCGGCGTTGTGG
+ACTTCCGCCTACCTACGCAAATTTATTCCCGAAGACTATCACGCCCACCAAATTAAATTTTATGAAGACC
+AATCACGACCTCCCAAAGTCCCCCTTACAGCCTGTGTTATCACCCAAAGCCAAATTCTGGCCCAATTACA
+AGCTATTCAGCAGGCGCGTCAGGAATTTCTTTTAAAAAAAGGACACGGGGTCTATTTGGACCCCCAAACC
+GGTGAAGAACTTAATACCCCGTCACTCTCCGCCGCCGCTTCGTGCCGTTCGCAGAAACATGCCACCCAAG
+GGAAACAAGCATCCCATCGCGCAACGGCAATCCCAGCAGAAACTACAAAAGCAGTGGGACGAGGAGGAGA
+CGTGGGACGACAGCCAGGCAGAGGAAGTTTCAGACGAGGAGGCGGAGGAGCAGATGGAGAGCTGGGACAG
+CCTAGACGAGGAGGACCTAGAGGACGTGGAGGAAGAAACCATCGCCAGCGACAAGGCACCATCTTTCAAA
+AAACCCGTTCGGAGCCAACCTCCGAAAACTATCCCGCCCCTGCCACCGCAACCATGTTCACTGAAAGCCA
+GCCGTAGGTGGGACACCGTCTCCATCGCCGGATCGCCAACAGCCCCAGCTGGTAAGCAGCCTAAGCGCGC
+ACGACGGGGATACTGCTCCTGGCGAGCCCATAAAAGCAATATTGTCGCATGCCTCCAGCACTGCCGGGGC
+AATATCTCATTCGCACGGCGTTACTTGCTTTTTCACGACGGGGTGGCGGTTCCTCGCAACGTCCTCTACT
+ATTACCGTCATCTCTACAGCCCCTACGAAACGTTTGGAGAAAACACCTCGAGTGCGTAAGACCTCATCCG
+CCATTGCCACCCGCCAGGATTCGCCCGCCACGCAGGAGCTCAGAAAACGCATCTTTCCGACGCTGTATGC
+TATTTTCCAGCAGAGCCGCGGTCAACAGCTGGAACTCAAAGTAAAAAACCGATCACTCCGTTCGCTCACC
+CGCAGCTGCTTGTATCACAGAAGTGAAGACCAACTGCAGCGCACGCTGGAGGACGCCGAGGCACTGTTCA
+ATAAATATTGCTCGGTGTCTCTTAAGGACTAAACACCCGCGCTTTTTTTAGGCGCCAAATTACGTCATTG
+ACATTATGAGCAAAGACATTCCCACGCCTTACATGTGGAGCTATCAGCCGCAAATGGGCCTGGCAGCTGG
+AGCTTCTCAGGATTACTCCAGTCGCATGAATTGGCTTAGTGCCGGCCCCCACATGATTGGGCGGGTAAAT
+GGAATTCGTGCCACTCGAAACCAAATTCTGCTAGAACAGGCCGCCCTAACCTCTACCCCGCGACGTCAGC
+TGAACCCACCCTCTTGGCCTGCCGCCCAGGTTTATCAGGAAAACCCCGCCCCGACCACAGTCCTTCTGCC
+ACGCGACGCGGAAGCCGAAGTCCAAATGACTAACTCCGGAGCGCAATTAGCGGGCGGCGCCAGACACGTC
+AGGTTCAGAGATCGACCCTCGCCCTATTCCTCCGGCTCTATAAAAAGGCTAATCATTCGAGGCCGAGGTA
+TCCAGCTCAACGACGAGGTAGTGAGCTCTTCCACCGGTCCTAGACCTGACGGAGTCTTTCAGCTTGGAGG
+CGCCGGGCGGTCTTCCTTCACTCCTCGCCAGGCGTACTTAACGCTTCAGAGCTCTTCATCCCAGCCTCGC
+TCCGGCGGCATCGGAACCCTCCAGTTTGTGGAGGAGTTTGTACCCTCCGTTTACTTCAACCCCTTCTCGG
+GCGCTCCTGGTCTTTACCCAGACGACTTCATCCCGAACTACGACGCGGTGAGCGAATCTGTGGACGGCTA
+CGACTGAAGACCGATAGTACGGCCGTGACTGCGCGGCTGTAACATCTGCATCGGTGCCGTAACCTTCGCT
+GCTTTACTTAAAAAGCCTGTGATTTCATTTACCACCCCAGCACTTGGATTACATGAAGATCTGTGTTCTT
+TTTTGTGTGCTAAGTTTAACAAGTAGCCTAAGGACTTCACCTACAACCGTTGGTTCCTTACGTCAGCTAC
+AAGATTCCACCAAAGGTACACACCAAACTCTTTATTTTTCTGAGTCTACCACTTCTATTGCACTTAACTG
+TTCTTGTCGTAACCAACTCGTTCAGTGGCGCGCTAACAGACAATTTTGCAAACTATTCTGGGACGCTCTT
+ATTGTTCAAGGAAACAACAGCCTTTGTAACAACTGTACTGCTACTACTTTAACTCTTACACCTCCTTTTG
+TTCCCGGTCCATACTTGTGCATTGGCACAGGAAGAGGGCCTAGCTGCTTTAATCGCTGGACTTTACAAAA
+AGAGAATCTAACCACTACCACCCTCCTTCCCCTTACTACTTATACTTTTTCCCAAAAAAAGAATTACTTT
+TTGCCCATTATTGCACTTTTGGCCTTTGTCTGTGTTATTACCGCTAATTATATTTTAATTTTCAATCTTG
+ATAATTTTTACTAATCATGCTGCTGTTTTTACTTTGCCTTCTTTTCTGCTCTGCCTATGCCGCCGTGCCA
+GAAAAAACCCTTAACAACCTCGTTCGGGTGTACGCCTTAGTTGGTACCAATCTATCCCTTGATTCTATGA
+AAACTCCTCAGATTGACGAACTTACTAGTCTTAGCTGGATCAAACAGGAAGACAATCCTAACAAAAACTT
+ACAATCATTTTTTTTTATTGGTCAAAAACTCTGTGAAGTTACCAAAGACAAAATCACTGTTTTTAACTAT
+TATCCGTTGGAATTTTCCTGCGCTAACGTAACCTTGTATTTGTATAATCTTAAAACTGACGATTCTGGCC
+TCTATAATGGAAAGGCCCATACCAAAGAGCTTGAACATAACACCTATGTTAGGCTTTATGTTATTGACAT
+TCCTCCGCCTAAGTGTGACATTACTTCACGTTACTTAGGCATACAGGCTACTGGGGAAGATTATTGTTTA
+ATTGAAATTAATTGCACTAACTCCAAATACCCAGCTGTGGTTAAATTTAATGGCAGGCAAAGCAACTTCT
+ACCATTATGTTAGCGAAAACGGAAACAAAAAACTTCCAAATTTTTATGAAACACACATCACTGTTAATGG
+TACCCACAAAAGCTTTCACTTTAATTACCCTTTTAACGACCTTTGTCAAACAACCAGCGCTCTACAATAT
+AATGACAATGTCCAGGTAGTCCTCATTCTTCTCATAGTAGTTGGCTTAATAATAATTTCCGCTAGTTTAA
+TATTGCTTTATTGCCACCGCAAAAAAATCAAGGCCAAAGTTCAACATCAACCAGTGCATATTTGTTTAGA
+AAAATAAAAATTTTTTTCTTTTCAGTATGGTAACTCCTCTTCTCCTGCTTGTCTGTCTGCCAATTATCTA
+CGCCTCCACCACCTTCGCCGCAGTCTCCCACCTTGATACGGATTGTCTTCCCGCCTTGCTGACTTATCTC
+ATCTTCACCTCTGTTTGCTGCACTGCCATCTGCAGCATTGCCACTTTTTTTGTGGCCATTTTCCAAACTG
+CGGACTACCTATACGTTAGAGTGGCATACTATCGTCATCATCCCCAATATAGGAACCACGAGGTGGCTAC
+CCTTCTGTGCCTGTCATGAAAGTTCCTCTTCTCTGTCTTATCCTCCTTCACAAAGTCCTGGCCAACTGCC
+ACCTCCACCGGCCCACCGAGTTCCTGCGCTGCTACTCAACAGAAACCTCTTCCTTTTGGCTGTACTCCAT
+TATTTTTATTTTGATTTTCTTTGCCACCTTTTTGGGATTACAAATTTACGGGTGCCTTCACCTGGGCTGG
+ATGCATCCTCCCAACAACCTACCCAGATTTCCTGGTTTCCTATTACAGCCCCCACCGCCCCCACCGGCTC
+CTGTGCAGCGCGCTCCATCAGTTATTAGCTACTTTCATCTTAACTCTGAAGATGTCTGACCAACTAGAAA
+TCGACGGGCAGTGCACTGAGCAGCTTATCCTTGCTCGGCGAAAACTCAAACAACAAAATCAGGAACTGTT
+CAACCTTCAAGCCCTACACCAATGCAAAAAGGGTCTTTTTTGTCTGGTTAAACAAGCTGAACTTTGTTAT
+GATGTAACCCAACAGGGACACGAGCTGTCATATACTTTAAACAAGCAAAGACAGAGCTTTATGACTATGG
+TGGGGGTTAAGCCCATTAAGGTTACTCAGCAATCCGGCCCAGTTGAGGGAAGCATTCTTTGTCAGTGTAC
+CAATCCTGAATGCATGTACACTATGGTAAAAACCCTGTGTGGTCTAAGGGAACTTCTCCCCTTTAATTAA
+AGTTATTCTGATTAATAAAGCTTACCTTAAATTTGATATCAGTTGTTTGTCAAGTTTTTCCAGCAGCACC
+ACCTGCCCTTCCTCCCAACTTTCGTACGGGATGTGCCAACGGGCGGCAAACTTTCTCCACGTCCTAAAGG
+GTATATCGGTGTTCACCTTTTTACCCTGACCCACAATCTTCATCTTGCAGATGAAAAGAACCAGAATTGA
+AGACGACTTCAACCCCGTCTACCCCTATGACACCTCCTCAACTCCCAGCATTCCCTATGTAGCTCCGCCC
+TTCGTTTCTTCCGACGGGTTACAGGAAAACCCCCCGGGAGTTTTAGCACTCAAGTACACTGACCCCATTA
+CTACCAATGCTAAACATGAGCTTACTTTAAAACTTGGCAGCAACATAACTTTACAAAATGGGTTACTTTC
+GGCCACCGTTCCCACTGTTTCTCCTCCCCTTACAAACAGTAACAACTCCTTGGGTTTAGCCACATCCGCT
+CCTATAGCTGTGTCAGCTAACTCTCTTACATTGGCCACCGCCGCACCACTGACAGTAAGCAACAACCAGC
+TTAGTATTAACACTGGCAGAGGCTTAGTTATAACTAACAATGCCGTAGCAGTTAATCCTACCGGAGCGTT
+AGGCTTTAACAACACAGGAGCTTTACAATTAAACGCTGCGGGAGGAATGAGAGTGGACGGCGCCAACTTA
+ATTCTTCATGTAGCATACCCCTTTGAAGCAATCAACCAACTAACACTGCGATTAGAAAACGGGTTAGAAG
+TAACCAACGGAGGAAAACTCAACGTTAAGTTGGGATCAGGCCTCCAATTTGACAATAACGGACGCATTAC
+CATTAGTAATCGCATCCAGACTCGAGGTGTAACATCCCTCACTACCATTTGGTCTATCTCGCCTACGCCT
+AACTGCTCCATCTATGAAACCCAAGATGCAAATCTATTTCTTTGTCTAACTAAAAACGGAGCTCACGTGT
+TAGGTACTATAACAATTAAAGGTCTTAAAGGAGCACTGCGGGAAATGAACGATAACGCTTTATCTGTAAA
+ACTTCCCTTTGACAATCAGGGAAATTTACTCAACTGTGCCTTGGAATCATCCACCTGGCGTTACCAGGAA
+ACCAACGCAGTGGCCTCTAATGCCTTAACATTTATGCCCAACAGTACAGTGTATCCCCGAAACAAAACCG
+CCGACCCAGGCAACATGCTCATCCAAATCTCGCCTAACATCACCTTCAGTGTCGTCTACAACGAGATAAA
+CAGTGGGTATGCTTTTACGTTTAAATGGTCAGCCGAACCGGGAAAACCTTTTCACCCACCCACCGCTGTA
+TTTTGCTACATAACTGAACAATAAAATCATTGCAGGCGCAATCTTCGCATTTCTTTTTTCCAGATGAAAC
+GAGCCAGATTTGAAGATGACTTCAACCCCGTCTACCCTTACGAACACTACAATCCCCTTGACATTCCATT
+TATTACACCCCCGTTTGCTTCCTCCAACGGCTTGCAAGAAAAACCTCCGGGAGTCCTCAGCCTGAAATAC
+ACTGATCCACTTACAACCAAAAACGGGGCTTTAACCTTAAAATTGGGCACGGGACTAAACATTGATAAAA
+ATGGAGATCTTTCTTCAGATGCTAGCGTGGAAGTTAGCGCCCCTATCACTAAAACCAACAAAATCGTAGG
+TTTAAATTACACTAAGCCTCTCGCTCTGCAAAATAACGCGCTTACTCTTTCTTACAACGCGCCCTTTAAC
+GTAGTAAATAATAATTTAGCTCTAAATATGTCACAGCCTGTTACTATTAATGCAAACAACGAACTTTCTC
+TCTTAATAGACGCCCCACTTAATGCTGACACGGGCACTCTTCGCCTTCGAAGTGATGCACCTCTTGGACT
+AGTAGACAAAACACTAAAGGTTTTGTTTTCTAGCCCCCTCTATCTAGATAATAACTTTCTTACACTAGCC
+ATTGAACGCCCGCTAGCTCTATCCAGTAACAGAGCAGTGGCCCTTAAGTATTCACCACCTTTAAAAATAG
+AAAACGAAAACTTAACCCTAAGCACAGGCGGACCTTTTACTGTAAGCGGGGGAAATTTAAACCTGGCAAC
+ATCGGCACCCCTCTCCGTGCAAAACAATTCTCTCTCCTTAGGGGTTAACCCGCCTTTTCTCATCACTGAC
+TCTGGATTAGCTATGGACTTAGGAGACGGTCTTGCATTAGGTGGCTCTAAGTTAATAATCAATCTTGGTC
+CAGGTTTACAAATGTCTAATGGAGCTATTACTTTAGCACTAGATGCAGCGCTGCCTTTGCAATATAAAAA
+CAACCAACTTCAACTCAGAATTGGCTCCGCGTCTGCTTTAATTATGAGCGGAGTAACACAAACATTAAAC
+GTCAATGCCAATACCAGCAAAGGTCTTGCTATTGAAAATAACTCACTAGTTGTTAAGCTAGGAAACGGTC
+TTCGCTTTGATAGCTGGGGAAGCATAGCTGTCTCACCTACTACCACTACCCCTACCACCCTATGGACCAC
+CGCGGACCCGTCTCCTAACGCCACTTTTTATGAATCACTAGACGCCAAAGTGTGGCTAGTTTTAGTAAAA
+TGCAACGGCATGGTTAACGGGACCATATCCATTAAAGCTCAAAAAGGCACTTTACTTAAACCCACAGCTA
+GCTTTATTTCCTTTGTCATGTATTTTTACAGCGACGGAACGTGGAGGAAAAACTATCCCGTGTTTGACAA
+CGAAGGGATACTAGCAAACAGTGCCACATGGGGTTATCGACAAGGACAGTCTGCCAACACTAACGTTTCC
+AATGCTGTAGAATTTATGCCTAGCTCTAAAAGGTATCCCAATGAAAAAGGTTCTGAAGTTCAGAACATGG
+CTCTTACCTACACTTTTTTGCAAGGTGACCCTAACATGGCCATATCTTTTCAGAGCATTTATAATCATGC
+AATAGAAGGCTACTCATTAAAATTCACCTGGCGCGTTCGAAATAATGAACGTTTTGACATCCCCTGTTGC
+TCATTTTCTTATGTAACAGAACAATAAAATATTGTTATTTTGTATTTTCAACTTTATTGATACTTTTACA
+GAATTCTAACCGTTAATCTCCCTCCCCCCTTCCACTTTACCTTATACACCTCCCTTTCCCCCTGTACCAC
+CGCAAACAACTGCAATTTAGGATTTACACAACGATTCTTCTGTGACAAAATCAACACAGGTTCTTTGCTG
+GCAAAGCGCTGATCCGTAATGGAAATGAAACCTTCAGAAACATCGTCCAACAGCACGGTGGAGTCCAAAG
+CAGAGCTCTGCAAAAACAAATACAGTCAAGCTCTCCACGGGTTCTCGCCTCTGTTGTAGTCTGCCAACGT
+AAACGGGCAGTACCGCTCCATCAAGCCCCGCAGTAATCCCTGTCTCCGGGGTTCCACCAAGCTCCTCATG
+AGTGACCTAACGGTGAAGCTTCCCAACACTTTCACCGCCTTGGCCAGCAGCCGCCGCGTCCGACGAGCGC
+AGCACCGCACAGAAAGCTCATCCAAGTTTTTACAATAGGTACAGCCCAACACCACCATATTATTCATAAT
+TCCATAACTAAAAAAACTCCACCCAAACGACATGCGCTCCAACACTATAGCCGCGTGCCCATCATACAGC
+AGGCGAATATATATAAAATGCCTACCTCTGACAAACACGCTCCCCATAAATAACACTTCCTTGGGCATGC
+CACAATTTACAATTTCTCGATACCAAGGGAATCTTAAGTTATACAGTGAACCATAAATCATCATTTTAAA
+CCAATTTGCTAACACTACACCCCCCGCCTTACATTGAAGAGACCCAGGTTTAATACAGTGACAGTGTATA
+GTCCAGCGTTCAAAACCTCTTACAATTTGATTAAAATCAACATTAATAGTGGCACAGCAAACACAAACAC
+GCATGTAAATTTTGCACACATGCTTTTCCCATTTAGACAATATCATGTCCCACCACATTGGCCACTCCTG
+CAATACTACAAAAGGCGCACAAGATGGAATAGACCTCACCTCGCTCACATAATGCATATTCAAATGTTCA
+CACTCTAAAAGTCCAGGAGTCCTTTCCATTGTGGCAATAGGCACAGAATCCTCAGAGGGAGGTGGAAGAC
+GGTGGGTTTGGTACGAACTCAGTCTGCAGCGAAACCATCTGTCGCGTTGCATCATAAATTAAAAGCTCGC
+GCACAGCTTCGTACTTCTGTTTTAAGAAACGAACACGCTGCCAACAAATGTTCGCAAATCGACGGTTTCG
+TTGTCGCGCTCTTTCAGTTTTCAGGGCAACGTTCAGCCACTCCTGCAGTCCACTTAACAGCTCCTCAGCC
+CGTGGAGATATGCTGACATTATACCTTATTATGTCCCCATAAACGTTCAAACAGCAGGTTAAAGCCAACT
+CCAACCAAGAAATACAAAGGCCTTGATCCCGACTCACTGGAGGTGGAGGGAGAGACGGAAGAGGCATAAT
+TATTCCAGACGGTTGTAAAGCGAGCCAAAGTGCAAGTCACGAAGATCACACCTCTCCCCACCGCTGCGTT
+GGTGAAAAATTACAGCCAAGTCAAAAAAGATGCGATTTTCCAAATTACCAATCACGGCTTCCACTAAGGC
+TGGCACACGCACTTCAAGAAACACAAACATAGCAAAAGCATTTTCCTCAAAATCTTCAAACATTAAGCTG
+CAATCTTGAATAATTCCCAAATAATTTTCCGCTTGCCACCCGCGCAACACATCCATTAAAATTTCTTGTA
+AACTGGCGCCATGTAATTCAAAAAGTTTGTTAAGAGCACCCTCTACTGTCATACGCAGGCACACCTTCAT
+GGTTGAAAAAGATCAGGTTCCCGTGTCACCTGCAGTTCATTTAAAAGATTAACATTAGGCTCAAAACCCC
+GATCCCGAATCTCCATGCGTAGCATTAGTTGTACAAAGTCATCCAAATCATTGCATATAAGCTCTGTCAG
+TTCGCTATCAGGAAGCAGCTCAGGTGATGCTACACAACAAATCATCTCTAGCGTAGGAGCTAAAGACGTT
+AAGGTAAAGCCACAATAAGCAGCTTGAAGAACTGGAGTAACACAATGCAAAATGTGCAGCAAAAACTCCG
+ACATGTTTGTCTTTAAAAAATCTACCACAGAAATGTCCATATTATTTAAATAAAACATCAGGGGCTCAGG
+AACCACCACCGAAATAAAAACCGGTCGTAACAAATACATTGTGTCCTGCAACAAAAAAAAAATATTAATG
+CCCACACCTGGGAAAACCTGTTCTAAAACCAAACAGGTATAAGTATTACAAATGCCTCCCTTTGCCCCCC
+AATCCAAACCAAATAAGCTGCCCCGTCTTACCGCGACAAAGCACACAGAACAAAACACACTCCGCAGACG
+AACACAATATTTATACACTCCCTTTGCCGTCAAAAGTCCACAAAAACTCCAAAGGTCAGAAAAACCGCCA
+CATGAACACTTCCGCATACTGTTTCACATATCGTCACTTCCGCCGCACCGCGCCCGTCCTCCGACCCCAC
+ACGTCATCCGCCTCCACCCTTTCCCACCCCGCCCGCCTCTACGTCACCTTACACCACCCCTAGTCCCTCC
+TCCCTCATTATCATATTGGCTCGTTTCCAGTTTTAAGGTATATTATTGATGATG
+
diff --git a/demos/tutorial/mini_bowtie/reads_hamming.fasta b/demos/tutorial/mini_bowtie/reads_hamming.fasta
new file mode 100755
index 0000000..81d14ca
--- /dev/null
+++ b/demos/tutorial/mini_bowtie/reads_hamming.fasta
@@ -0,0 +1,20 @@
+>nc_001454.fasta.fasta.000000000 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=16508 orig_end=16544 haplotype_infix=CGTTCCGTCCTACCGAGGAAGATCTCGCCGTAGGAG edit_string=MMMMMMMMMMMMMMMMMMMMMMMMEMMMMMMMMMMM strand=reverse
+CTCCTACGGCGGGATCTTCCTCGGTAGGACGGAACG
+>nc_001454.fasta.fasta.000000001 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=16065 orig_end=16101 haplotype_infix=TTCGTCCACCGTTAGCACTGCGGTGGAGGCCATGGA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=reverse
+TCCATGGCCTCCACCGCAGTGCTAACGGTGGACGAA
+>nc_001454.fasta.fasta.000000002 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=33793 orig_end=33829 haplotype_infix=AAAAAAAAATATTAATGCCCACACCTGGGAAAACCT edit_string=MMMMMMEMMMMMMMMMMMMMMMMMMMMMMMMMEMMM strand=reverse
+AGGNTTTCCCAGGTGTGGGCATTAATATTNTTTTTT
+>nc_001454.fasta.fasta.000000003 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=20573 orig_end=20609 haplotype_infix=GCACCGCGCCCGTCCTCCGACCCCACACGTCATCCA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMEMMMMMMMMMM strand=forward
+GCACCGCGCCCGTCCTCCGACCCCACACGTCATCCA
+>nc_001454.fasta.fasta.000000004 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=6227 orig_end=6263 haplotype_infix=GATTGAGTGGGAAGCCCCACGGCATGGGATGGGTAA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=reverse
+TTACCCATCCCATGCCGTGGGGCTTCCCACTCAATC
+>nc_001454.fasta.fasta.000000005 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=1395 orig_end=1431 haplotype_infix=TAGTGTTAGTTTATTCTGATGGAGTTGTGGAGTGAG edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=forward
+TAGTGTTAGTTTATTCTGATGGAGTTGTGGAGTGAG
+>nc_001454.fasta.fasta.000000006 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=29589 orig_end=29625 haplotype_infix=CGATAACGCTTTATCTGTAAAACTTCCCTTTGACAA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=reverse
+TTGTCAAAGGGAAGTTTTACAGATAAAGCGTTATCG
+>nc_001454.fasta.fasta.000000007 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=23190 orig_end=23226 haplotype_infix=GTGACAACGCGCGTTTGGCCGTACTCAAACGCACCA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=forward
+GTGACAACGCGCGTTTGGCCGTACTCAAACGCACCA
+>nc_001454.fasta.fasta.000000008 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=15308 orig_end=15344 haplotype_infix=AGTTAGAAGACGCGTTCACAAAATGGACGAAGACTG edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMEMMEME strand=reverse
+TAATCNTCGTCCATTTTGTGAACGCGTCTTCTAACT
+>nc_001454.fasta.fasta.000000009 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=16745 orig_end=16781 haplotype_infix=TGGAAGACATCAATTTTGCGTCGCTGGCTCCGCGGC edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMME strand=reverse
+TCCGCGGAGCCAGCGACGCAAAATTGATGTCTTCCA
diff --git a/demos/tutorial/mini_bowtie/solution1.cpp b/demos/tutorial/mini_bowtie/solution1.cpp
new file mode 100644
index 0000000..bd25145
--- /dev/null
+++ b/demos/tutorial/mini_bowtie/solution1.cpp
@@ -0,0 +1,65 @@
+// ==========================================================================
+// mini_bowtie
+// ==========================================================================
+
+#include <iostream>
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/file.h>
+#include <seqan/index.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+void search() {}
+
+int main(int argc, char * argv[])
+{
+ // type definitions
+ typedef String<Dna5> TString;
+ typedef StringSet<TString> TStringSet;
+ typedef Index<StringSet<TString>, FMIndex<> > TIndex;
+ typedef Iterator<TIndex, TopDown<ParentLinks<> > >::Type TIter;
+
+ // reading the command line arguments
+ if (argc < 3)
+ {
+ std::cerr << "Invalid number of arguments." << std::endl
+ << "USAGE: minimapper GENOME.fasta READS.fasta OUT.sam" << std::endl;
+ return 1;
+ }
+
+ // declaration and initialization of the fragment store
+ FragmentStore<> fragStore;
+ if (!loadContigs(fragStore, argv[1]))
+ return 1;
+
+ if (!loadReads(fragStore, argv[2]))
+ return 1;
+
+ StringSet<TString> text;
+ for (unsigned i = 0; i < length(fragStore.contigStore); ++i)
+ appendValue(text, fragStore.contigStore[i].seq);
+
+ TIndex fmIndex(text);
+ TIter it(fmIndex);
+ search();
+ clear(fmIndex);
+ clear(it);
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+
+ fmIndex = TIndex(text);
+ it = TIter(fmIndex);
+ search();
+ clear(fmIndex);
+ clear(it);
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+ clear(fmIndex);
+ clear(it);
+
+ return 0;
+}
diff --git a/demos/tutorial/mini_bowtie/solution2.cpp b/demos/tutorial/mini_bowtie/solution2.cpp
new file mode 100644
index 0000000..d32a012
--- /dev/null
+++ b/demos/tutorial/mini_bowtie/solution2.cpp
@@ -0,0 +1,82 @@
+// ==========================================================================
+// mini_bowtie
+// ==========================================================================
+
+#include <iostream>
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/file.h>
+#include <seqan/index.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+template <typename TIter, typename TStringSet>
+void search(TIter & it, TStringSet const & pattern)
+{
+ typedef typename Iterator<TStringSet const, Standard>::Type TPatternIter;
+
+ for (TPatternIter patternIt = begin(pattern, Standard()); patternIt != end(pattern, Standard()); ++patternIt)
+ {
+ unsigned startApproxSearch = length(value(patternIt)) / 2;
+ goDown(it, infix(value(patternIt), 0, startApproxSearch - 1));
+ goRoot(it);
+ }
+}
+
+int main(int argc, char * argv[])
+{
+ typedef String<Dna5> TString;
+ typedef StringSet<String<Dna5> > TStringSet;
+ typedef Index<StringSet<TString>, FMIndex<> > TIndex;
+ typedef Iterator<TIndex, TopDown<ParentLinks<> > >::Type TIter;
+
+ /*String<Dna> text = "ACGTACGT";
+ Index<String<Dna>, FMIndex<> > index(text);
+
+ Finder<Index<String<Dna> > > finder(index);
+
+ find(finder, "AC");
+ std::cerr << position("AC") << std::endl;
+*/
+ // reading the command line arguments
+ if (argc < 3)
+ {
+ std::cerr << "Invalid number of arguments." << std::endl
+ << "USAGE: minimapper GENOME.fasta READS.fasta OUT.sam" << std::endl;
+ return 1;
+ }
+ // declaration and initialization of the fragment store
+ FragmentStore<> fragStore;
+ if (!loadContigs(fragStore, argv[1]))
+ return 1;
+
+ if (!loadReads(fragStore, argv[2]))
+ return 1;
+
+ // combining the contigs of the reference into one string set
+ StringSet<TString> text;
+ for (unsigned i = 0; i < length(fragStore.contigStore); ++i)
+ appendValue(text, fragStore.contigStore[i].seq);
+
+ // forward search
+ reverse(text);
+ TIndex fmIndex(text);
+ TIter it(fmIndex);
+ search(it, fragStore.readSeqStore);
+ clear(fmIndex);
+ clear(it);
+
+ // reversing the sequences for backward search
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+
+ // backward search
+ fmIndex = TIndex(text);
+ it = TIter(fmIndex);
+ search(it, fragStore.readSeqStore);
+ clear(fmIndex);
+ clear(it);
+
+ return 0;
+}
diff --git a/demos/tutorial/mini_bowtie/solution3.cpp b/demos/tutorial/mini_bowtie/solution3.cpp
new file mode 100644
index 0000000..6c3bd1e
--- /dev/null
+++ b/demos/tutorial/mini_bowtie/solution3.cpp
@@ -0,0 +1,89 @@
+// ==========================================================================
+// mini_bowtie
+// ==========================================================================
+
+#include <iostream>
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/file.h>
+#include <seqan/index.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+template <typename TIter, typename TStringSet>
+void search(TIter & it, TStringSet const & pattern)
+{
+ typedef typename Iterator<TStringSet const, Standard>::Type TPatternIter;
+
+ for (TPatternIter patternIt = begin(pattern, Standard()); patternIt != end(pattern, Standard()); ++patternIt)
+ {
+ unsigned startApproxSearch = length(value(patternIt)) / 2;
+ if (goDown(it, infix(value(patternIt), 0, startApproxSearch - 1)))
+ {
+ for (unsigned i = startApproxSearch;; ++i)
+ {
+ for (Dna5 c = MinValue<Dna>::VALUE; c < valueSize<Dna>(); ++c)
+ {
+ TIter localIt = it;
+ if (goDown(localIt, c))
+ {
+ if (goDown(localIt, infix(value(patternIt), i + 1, length(value(patternIt)))))
+ {
+ // HIT
+ }
+ }
+ }
+ if (i == length(value(patternIt)) - 1 || !goDown(it, getValue(patternIt)[i]))
+ {
+ break;
+ }
+ }
+ }
+ goRoot(it);
+ }
+}
+
+int main(int argc, char * argv[])
+{
+ typedef String<Dna5> TString;
+ typedef StringSet<String<Dna5> > TStringSet;
+ typedef Index<StringSet<TString>, FMIndex<> > TIndex;
+ typedef Iterator<TIndex, TopDown<> >::Type TIter;
+
+ // 0) Handle command line arguments.
+ if (argc < 3)
+ {
+ std::cerr << "Invalid number of arguments." << std::endl
+ << "USAGE: minimapper GENOME.fasta READS.fasta OUT.sam" << std::endl;
+ return 1;
+ }
+ // 1) Load contigs and reads.
+ FragmentStore<> fragStore;
+ if (!loadContigs(fragStore, argv[1]))
+ return 1;
+
+ if (!loadReads(fragStore, argv[2]))
+ return 1;
+
+ StringSet<TString> text;
+ for (unsigned i = 0; i < length(fragStore.contigStore); ++i)
+ appendValue(text, fragStore.contigStore[i].seq);
+ reverse(text);
+ TIndex fmIndex(text);
+ TIter it(fmIndex);
+ search(it, fragStore.readSeqStore);
+ clear(fmIndex);
+ clear(it);
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+
+ fmIndex = TIndex(text);
+ it = TIter(fmIndex);
+ search(it, fragStore.readSeqStore);
+ clear(fmIndex);
+ clear(it);
+
+ return 0;
+}
diff --git a/demos/tutorial/mini_bowtie/solution4.cpp b/demos/tutorial/mini_bowtie/solution4.cpp
new file mode 100644
index 0000000..f4fea38
--- /dev/null
+++ b/demos/tutorial/mini_bowtie/solution4.cpp
@@ -0,0 +1,103 @@
+// ==========================================================================
+// mini_bowtie
+// ==========================================================================
+
+#include <iostream>
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/file.h>
+#include <seqan/index.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+template <typename TIter, typename TStringSet>
+void search(TIter & it, TStringSet const & pattern)
+{
+ typedef typename Iterator<TStringSet const, Standard>::Type TPatternIter;
+
+ for (TPatternIter patternIt = begin(pattern, Standard()); patternIt != end(pattern, Standard()); ++patternIt)
+ {
+ // exact search on pattern half
+ unsigned startApproxSearch = length(value(patternIt)) / 2;
+ if (goDown(it, infix(value(patternIt), 0, startApproxSearch - 1)))
+ {
+ for (unsigned i = startApproxSearch;; ++i)
+ {
+ Dna character = getValue(patternIt)[i];
+ for (Dna5 c = MinValue<Dna>::VALUE; c < valueSize<Dna>(); ++c)
+ {
+ if (c != character)
+ {
+ TIter localIt = it;
+ if (goDown(localIt, c))
+ {
+ if (goDown(localIt, infix(value(patternIt), i + 1, length(value(patternIt)))))
+ {
+ //HIT
+ }
+ }
+ }
+ }
+ if (!goDown(it, character))
+ break;
+ else if (i == length(value(patternIt)) - 1)
+ {
+ // HIT
+ break;
+ }
+ }
+ }
+ goRoot(it);
+ }
+}
+
+int main(int argc, char * argv[])
+{
+ typedef String<Dna5> TString;
+ typedef StringSet<String<Dna5> > TStringSet;
+ typedef Index<StringSet<TString>, FMIndex<> > TIndex;
+ typedef Iterator<TIndex, TopDown<> >::Type TIter;
+
+ // 0) Handle command line arguments.
+ if (argc < 3)
+ {
+ std::cerr << "Invalid number of arguments." << std::endl
+ << "USAGE: minimapper GENOME.fasta READS.fasta OUT.sam" << std::endl;
+ return 1;
+ }
+ // 1) Load contigs and reads.
+ FragmentStore<> fragStore;
+ if (!loadContigs(fragStore, argv[1]))
+ return 1;
+
+ if (!loadReads(fragStore, argv[2]))
+ return 1;
+
+ StringSet<TString> text;
+ for (unsigned i = 0; i < length(fragStore.contigStore); ++i)
+ appendValue(text, fragStore.contigStore[i].seq);
+
+ reverse(text);
+ TIndex fmIndex(text);
+ TIter it(fmIndex);
+ search(it, fragStore.readSeqStore);
+ clear(fmIndex);
+ clear(it);
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+
+ fmIndex = TIndex(text);
+ it = TIter(fmIndex);
+ search(it, fragStore.readSeqStore);
+ clear(fmIndex);
+ clear(it);
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+ BamFileOut bamFile(argv[3]);
+ writeRecords(bamFile, fragStore);
+
+ return 0;
+}
diff --git a/demos/tutorial/mini_bowtie/solution5.cpp b/demos/tutorial/mini_bowtie/solution5.cpp
new file mode 100644
index 0000000..fcbd05a
--- /dev/null
+++ b/demos/tutorial/mini_bowtie/solution5.cpp
@@ -0,0 +1,138 @@
+// ==========================================================================
+// mini_bowtie
+// ==========================================================================
+
+#include <iostream>
+#include <seqan/basic.h>
+#include <seqan/sequence.h>
+#include <seqan/file.h>
+#include <seqan/index.h>
+#include <seqan/store.h>
+
+using namespace seqan;
+
+struct ForwardTag {};
+struct ReverseTag {};
+
+template <typename TStore, typename TIter, typename TPatternIt>
+void addMatchToStore(TStore & fragStore, TPatternIt const & patternIt, TIter const & localIt, ForwardTag)
+{
+ typedef FragmentStore<>::TAlignedReadStore TAlignedReadStore;
+ typedef Value<TAlignedReadStore>::Type TAlignedRead;
+
+ for (unsigned num = 0; num < countOccurrences(localIt); ++num)
+ {
+ unsigned pos = getOccurrences(localIt)[num].i2;
+ TAlignedRead match(length(fragStore.alignedReadStore), position(patternIt), getOccurrences(localIt)[num].i1,
+ pos, pos + length(value(patternIt)));
+ appendValue(fragStore.alignedReadStore, match);
+ }
+}
+
+template <typename TStore, typename TIter, typename TPatternIt>
+void addMatchToStore(TStore & fragStore, TPatternIt const & patternIt, TIter const & localIt, ReverseTag)
+{
+ typedef FragmentStore<>::TAlignedReadStore TAlignedReadStore;
+ typedef Value<TAlignedReadStore>::Type TAlignedRead;
+
+ for (unsigned num = 0; num < countOccurrences(localIt); ++num)
+ {
+ unsigned contigLength = length(fragStore.contigStore[getOccurrences(localIt)[num].i1].seq);
+ unsigned pos = contigLength - getOccurrences(localIt)[num].i2 - length(value(patternIt));
+ TAlignedRead match(length(fragStore.alignedReadStore), position(patternIt), getOccurrences(localIt)[num].i1,
+ pos, pos + length(value(patternIt)));
+ appendValue(fragStore.alignedReadStore, match);
+ }
+}
+
+template <typename TIter, typename TStringSet, typename TStore, typename DirectionTag>
+void search(TIter & it, TStringSet const & pattern, TStore & fragStore, DirectionTag /*tag*/)
+{
+ typedef typename Iterator<TStringSet const, Standard>::Type TPatternIter;
+
+ for (TPatternIter patternIt = begin(pattern, Standard()); patternIt != end(pattern, Standard()); ++patternIt)
+ {
+ // exact search on pattern half
+ unsigned startApproxSearch = length(value(patternIt)) / 2;
+ if (goDown(it, infix(value(patternIt), 0, startApproxSearch - 1)))
+ {
+ for (unsigned i = startApproxSearch;; ++i)
+ {
+ Dna character = getValue(patternIt)[i];
+ for (Dna5 c = MinValue<Dna>::VALUE; c < valueSize<Dna>(); ++c)
+ {
+ if (c != character)
+ {
+ TIter localIt = it;
+ if (goDown(localIt, c))
+ {
+ if (goDown(localIt, infix(value(patternIt), i + 1, length(value(patternIt)))))
+ {
+ addMatchToStore(fragStore, patternIt, localIt, DirectionTag());
+ }
+ }
+ }
+ }
+ if (!goDown(it, character))
+ break;
+ else if (i == length(value(patternIt)) - 1)
+ {
+ if (IsSameType<DirectionTag, ForwardTag>::VALUE)
+ addMatchToStore(fragStore, patternIt, it, DirectionTag());
+ break;
+ }
+ }
+ }
+ goRoot(it);
+ }
+}
+
+int main(int argc, char * argv[])
+{
+ typedef String<Dna5> TString;
+ typedef StringSet<String<Dna5> > TStringSet;
+ typedef Index<StringSet<TString>, FMIndex<> > TIndex;
+ typedef Iterator<TIndex, TopDown<> >::Type TIter;
+
+ // 0) Handle command line arguments.
+ if (argc < 3)
+ {
+ std::cerr << "Invalid number of arguments." << std::endl
+ << "USAGE: minimapper GENOME.fasta READS.fasta OUT.sam" << std::endl;
+ return 1;
+ }
+ // 1) Load contigs and reads.
+ FragmentStore<> fragStore;
+ if (!loadContigs(fragStore, argv[1]))
+ return 1;
+
+ if (!loadReads(fragStore, argv[2]))
+ return 1;
+
+ StringSet<TString> text;
+ for (unsigned i = 0; i < length(fragStore.contigStore); ++i)
+ appendValue(text, fragStore.contigStore[i].seq);
+
+ reverse(text);
+ TIndex fmIndex(text);
+ TIter it(fmIndex);
+ search(it, fragStore.readSeqStore, fragStore, ForwardTag());
+ clear(fmIndex);
+ clear(it);
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+
+ fmIndex = TIndex(text);
+ it = TIter(fmIndex);
+ search(it, fragStore.readSeqStore, fragStore, ReverseTag());
+ clear(fmIndex);
+ clear(it);
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+ BamFileOut bamFile(argv[3]);
+ writeRecords(bamFile, fragStore);
+
+ return 0;
+}
diff --git a/demos/tutorial/modifiers/UNUSED_modcomplementdna.cpp.stdout b/demos/tutorial/modifiers/UNUSED_modcomplementdna.cpp.stdout
deleted file mode 100644
index 96dc2e2..0000000
--- a/demos/tutorial/modifiers/UNUSED_modcomplementdna.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-ACCGTT
-TGGCAA
diff --git a/demos/tutorial/modifiers/UNUSED_modview.cpp.stdout b/demos/tutorial/modifiers/UNUSED_modview.cpp.stdout
deleted file mode 100644
index 35dae98..0000000
--- a/demos/tutorial/modifiers/UNUSED_modview.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-A man, a plan, a canal-Panama
-A MAN, A PLAN, A CANAL-PANAMA
-A man, a master plan, a canal-Panama
-A MAN, A MASTER PLAN, A CANAL-PANAMA
diff --git a/demos/tutorial/modifiers/UNUSED_nested.cpp.stdout b/demos/tutorial/modifiers/UNUSED_nested.cpp.stdout
deleted file mode 100644
index 85dfd4c..0000000
--- a/demos/tutorial/modifiers/UNUSED_nested.cpp.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-ATTACGG
-CCGTAAT
-ACGTTTACGG
-CCGTAAACGT
-CCGTAAACGT
diff --git a/demos/tutorial/modifiers/assignment1.cpp.stdout b/demos/tutorial/modifiers/assignment1.cpp.stdout
deleted file mode 100644
index a61a4ed..0000000
--- a/demos/tutorial/modifiers/assignment1.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-CCCGGCATCATCC
-CTTGGCATTATTC
-
diff --git a/demos/tutorial/modifiers/assignment1_solution.cpp.stdout b/demos/tutorial/modifiers/assignment1_solution.cpp.stdout
deleted file mode 100644
index 09e37a4..0000000
--- a/demos/tutorial/modifiers/assignment1_solution.cpp.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-CCCGGCATCATCC
-CTTGGCATTATTC
-
-TTTGGTATTATTT
-TTTGGTATTATTT
diff --git a/demos/tutorial/modifiers/UNUSED_modcomplementdna.cpp b/demos/tutorial/modifiers/modifier_modcomplementdna.cpp
similarity index 100%
rename from demos/tutorial/modifiers/UNUSED_modcomplementdna.cpp
rename to demos/tutorial/modifiers/modifier_modcomplementdna.cpp
diff --git a/demos/tutorial/modifiers/modreverse.cpp b/demos/tutorial/modifiers/modifier_modreverse.cpp
similarity index 100%
rename from demos/tutorial/modifiers/modreverse.cpp
rename to demos/tutorial/modifiers/modifier_modreverse.cpp
diff --git a/demos/tutorial/modifiers/UNUSED_modview.cpp b/demos/tutorial/modifiers/modifier_modview.cpp
similarity index 100%
rename from demos/tutorial/modifiers/UNUSED_modview.cpp
rename to demos/tutorial/modifiers/modifier_modview.cpp
diff --git a/demos/tutorial/modifiers/UNUSED_nested.cpp b/demos/tutorial/modifiers/modifier_nested.cpp
similarity index 100%
rename from demos/tutorial/modifiers/UNUSED_nested.cpp
rename to demos/tutorial/modifiers/modifier_nested.cpp
diff --git a/demos/tutorial/modifiers/modreverse.cpp.stdout b/demos/tutorial/modifiers/modreverse.cpp.stdout
deleted file mode 100644
index 624cf11..0000000
--- a/demos/tutorial/modifiers/modreverse.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-A man, a plan, a canal-Panama
-amanaP-lanac a ,nalp a ,nam A
-A man, a master plan, a canal-Panama
-amanaP-lanac a ,nalp retsam a ,nam A
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_banded.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/alignment_banded.cpp.stdout
deleted file mode 100644
index 0c0c40c..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_banded.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Score: -2
- 0 .
- CD-FG-HC
- || || ||
- CDEFGAHC
-
-
-
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp.stdout
deleted file mode 100644
index 2c40729..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Score: 16
- 0 . : .
- AAATGACGGAT----TG
- | | ||||| ||
- A---GTCGGATCTACTG
-
-
-
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp.stdout
deleted file mode 100644
index 1ad536f..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
-Score: 3
-Alignment matrix:
- 0 . :
- AAATGACGGATTG
- || |||
- ---TG--GGA---
-
-
-
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment3.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment3.cpp.stdout
deleted file mode 100644
index 6113385..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment3.cpp.stdout
+++ /dev/null
@@ -1,15 +0,0 @@
-Score: -6
- 0 . : .
- AAGU--GA-CUUAUUG
- | || || || | ||
- A-GUCGGAUCU-ACUG
-
-
-
-Row 0 contains gaps at positions:
-4
-5
-8
-Row 1 contains gaps at positions:
-1
-11
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp.stdout
deleted file mode 100644
index 29ece1d..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
-Score: 2
-Alignment matrix:
- 0 . :
- blablubalu
- || ||
- --ab--ba--
-
-
-
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_specialised.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/alignment_global_specialised.cpp.stdout
deleted file mode 100644
index b66663f..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_specialised.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Score: 11
- 0 . : .
- GARFIELDTHE---CAT
- ||||||||||| |||
- GARFIELDTHEBIGCAT
-
-
-
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp.stdout
deleted file mode 100644
index 0c0c40c..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Score: -2
- 0 .
- CD-FG-HC
- || || ||
- CDEFGAHC
-
-
-
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp.stdout
deleted file mode 100644
index 313de95..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp.stdout
+++ /dev/null
@@ -1,27 +0,0 @@
-Score = 19
- 0 . :
- a-philolog
- | ||| ||||
- amphibolog
-
-
-Aligns Seq1[0:9] and Seq2[7:16]
-
-Score = 9
- 0 .
- ATAAGCGT
- ||| | ||
- ATA-GAGT
-
-
-Aligns Seq1[0:7] and Seq2[2:9]
-
-Score = 5
- 0 .
- TC-TCG
- || | |
- TCATAG
-
-
-Aligns Seq1[7:12] and Seq2[0:5]
-
diff --git a/demos/tutorial/pairwise_sequence_alignment/alignment_local_assignment1.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/alignment_local_assignment1.cpp.stdout
deleted file mode 100644
index deb7a01..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/alignment_local_assignment1.cpp.stdout
+++ /dev/null
@@ -1,21 +0,0 @@
-Score = 21
- 0 . :
- CFDAKQ---RTASR
- ||| || ||| |
- CFD-KQKNNRTATR
-
-
-Score = 8
- 0 .
- AKQR-TA
- | | ||
- AT-RDTA
-
-
-Score = 5
- 0
- D-A
- | |
- DTA
-
-
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp b/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
deleted file mode 100644
index 8d5146a..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/align.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef String<char> TSequence;
- typedef Gaps<TSequence, ArrayGaps> TGaps;
- typedef Iterator<TGaps>::Type TGapsIterator;
- typedef Iterator<String<int> >::Type TIterator;
-
- TSequence text = "MISSISSIPPIANDMISSOURI";
- TSequence pattern = "SISSI";
-//![main]
-
-//![verification]
- String<int> locations;
- for (unsigned i = 0; i < length(text) - length(pattern); ++i)
- {
- // Compute the MyersBitVector in current window of text.
- TSequence tmp = infix(text, i, i + length(pattern));
-
- // Report hits with at most 2 errors.
- if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
- {
- appendValue(locations, i);
- }
- }
-//![verification]
-
-//![alignment]
- TGaps gapsText;
- TGaps gapsPattern;
- assignSource(gapsPattern, pattern);
- std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
- for (TIterator it = begin(locations); it != end(locations); ++it)
- {
- // Clear previously computed gaps.
- clearGaps(gapsText);
- clearGaps(gapsPattern);
- // Only recompute the area within the current window over the text.
- TSequence textInfix = infix(text, *it, *it + length(pattern));
- assignSource(gapsText, textInfix);
-
- // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
- // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
- int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
-//![alignment]
-
-//![cigar]
- TGapsIterator itGapsPattern = begin(gapsPattern);
- TGapsIterator itGapsEnd = end(gapsPattern);
-
- // Remove trailing gaps in pattern.
- int count = 0;
- while (isGap(--itGapsEnd))
- ++count;
- setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
-
- // Remove leading gaps in pattern.
- if (isGap(itGapsPattern))
- {
- setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
- setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
- }
-
- // Reinitilaize the iterators.
- TGapsIterator itGapsText = begin(gapsText);
- itGapsPattern = begin(gapsPattern);
- itGapsEnd = end(gapsPattern);
-
- // Use a stringstream to construct the cigar string.
- std::stringstream cigar;
- int numChar = 0;
- while (itGapsPattern != itGapsEnd)
- {
-//![cigar]
-//![cigarInsertion]
- // Count insertions.
- if (isGap(itGapsText))
- {
- int numGaps = countGaps(itGapsText);
- cigar << numGaps << "I";
- itGapsText += numGaps;
- itGapsPattern += numGaps;
- continue;
- }
-//![cigarInsertion]
-//![cigarDeletion]
- // Count deletions.
- if (isGap(itGapsPattern))
- {
- int numGaps = countGaps(itGapsPattern);
- cigar << numGaps << "D";
- itGapsText += numGaps;
- itGapsPattern += numGaps;
- continue;
- }
-//![cigarDeletion]
-//![cigarMatch]
- // Count matches.
- while (*itGapsText == *itGapsPattern && itGapsPattern != itGapsEnd)
- {
- ++numChar;
- ++itGapsText;
- ++itGapsPattern;
- }
- if (numChar != 0)
- {
- cigar << numChar << "M";
- numChar = 0;
- continue;
- }
-//![cigarMatch]
-//![cigarMismatch]
- // Count mismatches.
- while (*itGapsText != *itGapsPattern && itGapsPattern != itGapsEnd)
- {
- ++numChar;
- ++itGapsText;
- ++itGapsPattern;
- }
- if (numChar != 0)
- cigar << numChar << "S";
- numChar = 0;
- }
- // Output the hit position in the text, the total number of edits and the corresponding cigar string.
- std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << "\tcigar: " << cigar.str() << std::endl;
- }
-
- return 0;
-}
-//![cigarMismatch]
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp.stdout
deleted file mode 100644
index e0d9158..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Text: MISSISSIPPIANDMISSOURI Pattern: SISSI
-Hit at position 0 total edits: 1 cigar: 1S4M
-Hit at position 1 total edits: 1 cigar: 1I4M
-Hit at position 2 total edits: 1 cigar: 4M1I
-Hit at position 3 total edits: 0 cigar: 5M
-Hit at position 4 total edits: 1 cigar: 1I4M
-Hit at position 6 total edits: 2 cigar: 2M2S1M
-Hit at position 14 total edits: 2 cigar: 1S3M1I
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step1.cpp b/demos/tutorial/pairwise_sequence_alignment/assignment5_step1.cpp
deleted file mode 100644
index d40ec29..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step1.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/align.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef String<char> TSequence;
-
- TSequence text = "MISSISSIPPIANDMISSOURI";
- TSequence pattern = "SISSI";
-
- String<int> locations;
- for (unsigned i = 0; i < length(text) - length(pattern); ++i)
- {
- // Compute the MyersBitVector in current window of text.
- TSequence tmp = infix(text, i, i + length(pattern));
-
- // Report hits with at most 2 errors.
- if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
- {
- appendValue(locations, i);
- }
- }
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step1.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/assignment5_step1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step2.cpp b/demos/tutorial/pairwise_sequence_alignment/assignment5_step2.cpp
deleted file mode 100644
index 0d67966..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step2.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/align.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef String<char> TSequence;
- typedef Gaps<TSequence, ArrayGaps> TGaps;
- typedef Iterator<String<int> >::Type TIterator;
-
- TSequence text = "MISSISSIPPIANDMISSOURI";
- TSequence pattern = "SISSI";
-
- String<int> locations;
- for (unsigned i = 0; i < length(text) - length(pattern); ++i)
- {
- // Compute the MyersBitVector in current window of text.
- TSequence tmp = infix(text, i, i + length(pattern));
-
- // Report hits with at most 2 errors.
- if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
- {
- appendValue(locations, i);
- }
- }
-
- TGaps gapsText;
- TGaps gapsPattern;
- assignSource(gapsPattern, pattern);
- std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
- for (TIterator it = begin(locations); it != end(locations); ++it)
- {
- // Clear previously computed gaps.
- clearGaps(gapsText);
- clearGaps(gapsPattern);
-
- // Only recompute the area within the current window over the text.
- TSequence textInfix = infix(text, *it, *it + length(pattern));
- assignSource(gapsText, textInfix);
-
- // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
- // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
- int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
- std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << std::endl;
- }
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step2.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/assignment5_step2.cpp.stdout
deleted file mode 100644
index c631124..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step2.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Text: MISSISSIPPIANDMISSOURI Pattern: SISSI
-Hit at position 0 total edits: 1
-Hit at position 1 total edits: 1
-Hit at position 2 total edits: 1
-Hit at position 3 total edits: 0
-Hit at position 4 total edits: 1
-Hit at position 6 total edits: 2
-Hit at position 14 total edits: 2
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step3.cpp b/demos/tutorial/pairwise_sequence_alignment/assignment5_step3.cpp
deleted file mode 100644
index 1f937c4..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step3.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/align.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef String<char> TSequence;
- typedef Gaps<TSequence, ArrayGaps> TGaps;
- typedef Iterator<TGaps>::Type TGapsIterator;
- typedef Iterator<String<int> >::Type TIterator;
-
- TSequence text = "MISSISSIPPIANDMISSOURI";
- TSequence pattern = "SISSI";
-
- String<int> locations;
- for (unsigned i = 0; i < length(text) - length(pattern); ++i)
- {
- // Compute the MyersBitVector in current window of text.
- TSequence tmp = infix(text, i, i + length(pattern));
-
- // Report hits with at most 2 errors.
- if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
- {
- appendValue(locations, i);
- }
- }
-
- TGaps gapsText;
- TGaps gapsPattern;
- assignSource(gapsPattern, pattern);
- std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
- for (TIterator it = begin(locations); it != end(locations); ++it)
- {
- // Clear previously computed gaps.
- clearGaps(gapsText);
- clearGaps(gapsPattern);
-
- // Only recompute the area within the current window over the text.
- TSequence textInfix = infix(text, *it, *it + length(pattern));
- assignSource(gapsText, textInfix);
-
- // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
- // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
- int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
-
- TGapsIterator itGapsPattern = begin(gapsPattern);
- TGapsIterator itGapsEnd = end(gapsPattern);
-
- // Remove trailing gaps in pattern.
- int count = 0;
- while (isGap(--itGapsEnd))
- ++count;
- setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
-
- // Remove leading gaps in pattern.
- if (isGap(itGapsPattern))
- {
- setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
- setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
- }
- std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << std::endl;
- }
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step3.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/assignment5_step3.cpp.stdout
deleted file mode 100644
index c631124..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step3.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Text: MISSISSIPPIANDMISSOURI Pattern: SISSI
-Hit at position 0 total edits: 1
-Hit at position 1 total edits: 1
-Hit at position 2 total edits: 1
-Hit at position 3 total edits: 0
-Hit at position 4 total edits: 1
-Hit at position 6 total edits: 2
-Hit at position 14 total edits: 2
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step4.cpp b/demos/tutorial/pairwise_sequence_alignment/assignment5_step4.cpp
deleted file mode 100644
index f538f5f..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step4.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/align.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef String<char> TSequence;
- typedef Gaps<TSequence, ArrayGaps> TGaps;
- typedef Iterator<TGaps>::Type TGapsIterator;
- typedef Iterator<String<int> >::Type TIterator;
-
- TSequence text = "MISSISSIPPIANDMISSOURI";
- TSequence pattern = "SISSI";
-
- String<int> locations;
- for (unsigned i = 0; i < length(text) - length(pattern); ++i)
- {
- // Compute the MyersBitVector in current window of text.
- TSequence tmp = infix(text, i, i + length(pattern));
-
- // Report hits with at most 2 errors.
- if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
- {
- appendValue(locations, i);
- }
- }
-
- TGaps gapsText;
- TGaps gapsPattern;
- assignSource(gapsPattern, pattern);
- std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
- for (TIterator it = begin(locations); it != end(locations); ++it)
- {
- // Clear previously computed gaps.
- clearGaps(gapsText);
- clearGaps(gapsPattern);
-
- // Only recompute the area within the current window over the text.
- TSequence textInfix = infix(text, *it, *it + length(pattern));
- assignSource(gapsText, textInfix);
-
- // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
- // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
- int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
-
- TGapsIterator itGapsPattern = begin(gapsPattern);
- TGapsIterator itGapsEnd = end(gapsPattern);
-
- // Remove trailing gaps in pattern.
- int count = 0;
- while (isGap(--itGapsEnd))
- ++count;
- setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
-
- // Remove leading gaps in pattern.
- if (isGap(itGapsPattern))
- {
- setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
- setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
- }
-
- // Reinitilaize the iterators.
- TGapsIterator itGapsText = begin(gapsText);
- itGapsPattern = begin(gapsPattern);
- itGapsEnd = end(gapsPattern);
-
- // Use a stringstream to construct the cigar string.
- std::stringstream cigar;
- while (itGapsPattern != itGapsEnd)
- {
- // Count insertions.
- if (isGap(itGapsText))
- {
- int numGaps = countGaps(itGapsText);
- cigar << numGaps << "I";
- itGapsText += numGaps;
- itGapsPattern += numGaps;
- continue;
- }
- ++itGapsText;
- ++itGapsPattern;
- }
- std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << std::endl;
- }
- return 0;
-}
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step4.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/assignment5_step4.cpp.stdout
deleted file mode 100644
index c631124..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step4.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Text: MISSISSIPPIANDMISSOURI Pattern: SISSI
-Hit at position 0 total edits: 1
-Hit at position 1 total edits: 1
-Hit at position 2 total edits: 1
-Hit at position 3 total edits: 0
-Hit at position 4 total edits: 1
-Hit at position 6 total edits: 2
-Hit at position 14 total edits: 2
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step5.cpp b/demos/tutorial/pairwise_sequence_alignment/assignment5_step5.cpp
deleted file mode 100644
index 7c9c8f6..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step5.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/align.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef String<char> TSequence;
- typedef Gaps<TSequence, ArrayGaps> TGaps;
- typedef Iterator<TGaps>::Type TGapsIterator;
- typedef Iterator<String<int> >::Type TIterator;
-
- TSequence text = "MISSISSIPPIANDMISSOURI";
- TSequence pattern = "SISSI";
-
- String<int> locations;
- for (unsigned i = 0; i < length(text) - length(pattern); ++i)
- {
- // Compute the MyersBitVector in current window of text.
- TSequence tmp = infix(text, i, i + length(pattern));
-
- // Report hits with at most 2 errors.
- if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
- {
- appendValue(locations, i);
- }
- }
-
- TGaps gapsText;
- TGaps gapsPattern;
- assignSource(gapsPattern, pattern);
- std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
- for (TIterator it = begin(locations); it != end(locations); ++it)
- {
- // Clear previously computed gaps.
- clearGaps(gapsText);
- clearGaps(gapsPattern);
-
- // Only recompute the area within the current window over the text.
- TSequence textInfix = infix(text, *it, *it + length(pattern));
- assignSource(gapsText, textInfix);
-
- // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
- // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
- int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
-
- TGapsIterator itGapsPattern = begin(gapsPattern);
- TGapsIterator itGapsEnd = end(gapsPattern);
-
- // Remove trailing gaps in pattern.
- int count = 0;
- while (isGap(--itGapsEnd))
- ++count;
- setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
-
- // Remove leading gaps in pattern.
- if (isGap(itGapsPattern))
- {
- setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
- setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
- }
-
- // Reinitilaize the iterators.
- TGapsIterator itGapsText = begin(gapsText);
- itGapsPattern = begin(gapsPattern);
- itGapsEnd = end(gapsPattern);
-
- // Use a stringstream to construct the cigar string.
- std::stringstream cigar;
- while (itGapsPattern != itGapsEnd)
- {
- // Count insertions.
- if (isGap(itGapsText))
- {
- int numGaps = countGaps(itGapsText);
- cigar << numGaps << "I";
- itGapsText += numGaps;
- itGapsPattern += numGaps;
- continue;
- }
- // Count deletions.
- if (isGap(itGapsPattern))
- {
- int numGaps = countGaps(itGapsPattern);
- cigar << numGaps << "D";
- itGapsText += numGaps;
- itGapsPattern += numGaps;
- continue;
- }
- ++itGapsText;
- ++itGapsPattern;
- }
- // Output the hit position in the text, the total number of edits and the corresponding cigar string.
- std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << std::endl;
- }
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step5.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/assignment5_step5.cpp.stdout
deleted file mode 100644
index 7a198aa..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step5.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Text: MISSISSIPPIANDMISSOURI Pattern: SISSI
-Hit at position 0 total edits: 1
-Hit at position 1 total edits: 1
-Hit at position 2 total edits: 1
-Hit at position 3 total edits: 0
-Hit at position 4 total edits: 1
-Hit at position 6 total edits: 2
-Hit at position 14 total edits: 2
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp b/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp
deleted file mode 100644
index 7598e88..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//![main]
-#include <iostream>
-#include <seqan/align.h>
-
-using namespace seqan;
-
-int main()
-{
- typedef String<char> TSequence;
- typedef Gaps<TSequence, ArrayGaps> TGaps;
- typedef Iterator<TGaps>::Type TGapsIterator;
- typedef Iterator<String<int> >::Type TIterator;
-
- TSequence text = "MISSISSIPPIANDMISSOURI";
- TSequence pattern = "SISSI";
-
- String<int> locations;
- for (unsigned i = 0; i < length(text) - length(pattern); ++i)
- {
- // Compute the MyersBitVector in current window of text.
- TSequence tmp = infix(text, i, i + length(pattern));
-
- // Report hits with at most 2 errors.
- if (globalAlignmentScore(tmp, pattern, MyersBitVector()) >= -2)
- {
- appendValue(locations, i);
- }
- }
-
- TGaps gapsText;
- TGaps gapsPattern;
- assignSource(gapsPattern, pattern);
- std::cout << "Text: " << text << "\tPattern: " << pattern << std::endl;
- for (TIterator it = begin(locations); it != end(locations); ++it)
- {
- // Clear previously computed gaps.
- clearGaps(gapsText);
- clearGaps(gapsPattern);
-
- // Only recompute the area within the current window over the text.
- TSequence textInfix = infix(text, *it, *it + length(pattern));
- assignSource(gapsText, textInfix);
-
- // Use semi-global alignment since we do not want to track leading/trailing gaps in the pattern.
- // Restirct search space using a band allowing at most 2 errors in vertical/horizontal direction.
- int score = globalAlignment(gapsText, gapsPattern, Score<int>(0, -1, -1), AlignConfig<true, false, false, true>(), -2, 2);
-
- TGapsIterator itGapsPattern = begin(gapsPattern);
- TGapsIterator itGapsEnd = end(gapsPattern);
-
- // Remove trailing gaps in pattern.
- int count = 0;
- while (isGap(--itGapsEnd))
- ++count;
- setClippedEndPosition(gapsPattern, length(gapsPattern) - count);
-
- // Remove leading gaps in pattern.
- if (isGap(itGapsPattern))
- {
- setClippedBeginPosition(gapsPattern, countGaps(itGapsPattern));
- setClippedBeginPosition(gapsText, countGaps(itGapsPattern));
- }
-
- // Reinitilaize the iterators.
- TGapsIterator itGapsText = begin(gapsText);
- itGapsPattern = begin(gapsPattern);
- itGapsEnd = end(gapsPattern);
-
- // Use a stringstream to construct the cigar string.
- std::stringstream cigar;
- int numChar = 0;
- while (itGapsPattern != itGapsEnd)
- {
- // Count insertions.
- if (isGap(itGapsText))
- {
- int numGaps = countGaps(itGapsText);
- cigar << numGaps << "I";
- itGapsText += numGaps;
- itGapsPattern += numGaps;
- continue;
- }
- // Count deletions.
- if (isGap(itGapsPattern))
- {
- int numGaps = countGaps(itGapsPattern);
- cigar << numGaps << "D";
- itGapsText += numGaps;
- itGapsPattern += numGaps;
- continue;
- }
- // Count matches.
- while (*itGapsText == *itGapsPattern && itGapsPattern != itGapsEnd)
- {
- ++numChar;
- ++itGapsText;
- ++itGapsPattern;
- }
- if (numChar != 0)
- {
- cigar << numChar << "M";
- numChar = 0;
- continue;
- }
-
- // Count mismatches.
- while (*itGapsText != *itGapsPattern && itGapsPattern != itGapsEnd)
- {
- ++numChar;
- ++itGapsText;
- ++itGapsPattern;
- }
- if (numChar != 0)
- cigar << numChar << "S";
- numChar = 0;
- }
- // Output the hit position in the text, the total number of edits and the corresponding cigar string.
- std::cout << "Hit at position " << *it << "\ttotal edits: " << abs(score) << "\tcigar: " << cigar.str() << std::endl;
- }
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp.stdout b/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp.stdout
deleted file mode 100644
index e0d9158..0000000
--- a/demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Text: MISSISSIPPIANDMISSOURI Pattern: SISSI
-Hit at position 0 total edits: 1 cigar: 1S4M
-Hit at position 1 total edits: 1 cigar: 1I4M
-Hit at position 2 total edits: 1 cigar: 4M1I
-Hit at position 3 total edits: 0 cigar: 5M
-Hit at position 4 total edits: 1 cigar: 1I4M
-Hit at position 6 total edits: 2 cigar: 2M2S1M
-Hit at position 14 total edits: 2 cigar: 1S3M1I
diff --git a/demos/tutorial/parsing_command_line_arguments/assignment2_solution.cpp b/demos/tutorial/parsing_command_line_arguments/assignment2_solution.cpp
deleted file mode 100644
index 5342bdb..0000000
--- a/demos/tutorial/parsing_command_line_arguments/assignment2_solution.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <iostream>
-
-#include <seqan/arg_parse.h>
-
-int main(int argc, char const ** argv)
-{
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
-
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
-
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- addOption(parser, seqan::ArgParseOption(
- "L", "lowercase", "Select to-lowercase as operation."));
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- // Extract option values and print them.
- unsigned period = 0;
- getOptionValue(period, parser, "period");
- bool toUppercase = isSet(parser, "uppercase");
- bool toLowercase = isSet(parser, "lowercase");
- seqan::CharString text;
- getArgumentValue(text, parser, 0);
-
- std::cout << "period \t" << period << '\n'
- << "uppercase\t" << toUppercase << '\n'
- << "lowercase\t" << toLowercase << '\n'
- << "text \t" << text << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/parsing_command_line_arguments/assignment3_solution.cpp b/demos/tutorial/parsing_command_line_arguments/assignment3_solution.cpp
deleted file mode 100644
index 3c21916..0000000
--- a/demos/tutorial/parsing_command_line_arguments/assignment3_solution.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-#include <iostream>
-
-#include <seqan/arg_parse.h>
-
-int main(int argc, char const ** argv)
-{
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
-
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
-
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- setDefaultValue(parser, "period", "1");
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- addOption(parser, seqan::ArgParseOption(
- "L", "lowercase", "Select to-lowercase as operation."));
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- // Extract option values and print them.
- unsigned period = 0;
- getOptionValue(period, parser, "period");
- bool toUppercase = isSet(parser, "uppercase");
- bool toLowercase = isSet(parser, "lowercase");
- seqan::CharString text;
- getArgumentValue(text, parser, 0);
-
- std::cout << "period \t" << period << '\n'
- << "uppercase\t" << toUppercase << '\n'
- << "lowercase\t" << toLowercase << '\n'
- << "text \t" << text << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/parsing_command_line_arguments/assignment4_solution.cpp b/demos/tutorial/parsing_command_line_arguments/assignment4_solution.cpp
deleted file mode 100644
index 4b76fcb..0000000
--- a/demos/tutorial/parsing_command_line_arguments/assignment4_solution.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-#include <iostream>
-
-#include <seqan/arg_parse.h>
-
-struct ModifyStringOptions
-{
- unsigned period;
- unsigned rangeBegin, rangeEnd;
- bool toUppercase;
- bool toLowercase;
- seqan::CharString text;
-
- ModifyStringOptions() :
- period(1), rangeBegin(0), rangeEnd(0),toUppercase(false),
- toLowercase(false)
- {}
-};
-
-seqan::ArgumentParser::ParseResult
-parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
-{
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
-
- // We require one argument.
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
-
- // Define Options
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- setMinValue(parser, "period", "1");
- setDefaultValue(parser, "period", "1");
- addOption(parser, seqan::ArgParseOption(
- "r", "range", "Range of the text to modify.",
- seqan::ArgParseArgument::INTEGER, "INT", false, 2));
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- addOption(parser, seqan::ArgParseOption(
- "L", "lowercase", "Select to-lowercase as operation."));
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // Only extract options if the program will continue after parseCommandLine()
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res;
-
- // Extract option values.
- getOptionValue(options.period, parser, "period");
- getOptionValue(options.rangeBegin, parser, "range", 0);
- getOptionValue(options.rangeEnd, parser, "range", 1);
- options.toUppercase = isSet(parser, "uppercase");
- options.toLowercase = isSet(parser, "lowercase");
- seqan::getArgumentValue(options.text, parser, 0);
-
- // If both to-uppercase and to-lowercase were selected then this is an error.
- if (options.toUppercase && options.toLowercase)
- {
- std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
- return seqan::ArgumentParser::PARSE_ERROR;
- }
-
- return seqan::ArgumentParser::PARSE_OK;
-}
-
-seqan::CharString modifyString(seqan::CharString const & text,
- ModifyStringOptions const & options)
-{
- seqan::CharString result;
-
- if (options.toLowercase)
- {
- for (unsigned i = 0; i < length(text); ++i)
- {
- if (i >= options.rangeBegin && i < options.rangeEnd &&
- (i % options.period == 0u))
- appendValue(result, tolower(text[i]));
- else
- appendValue(result, text[i]);
- }
- }
- else
- {
- for (unsigned i = 0; i < length(text); ++i)
- {
- if (i >= options.rangeBegin && i < options.rangeEnd &&
- (i % options.period == 0u))
- appendValue(result, toupper(text[i]));
- else
- appendValue(result, text[i]);
- }
- }
-
- return result;
-}
-
-int main(int argc, char const ** argv)
-{
- // Parse the command line.
- ModifyStringOptions options;
- seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- std::cout << modifyString(options.text, options) << '\n';
-
- return 0;
-}
-
diff --git a/demos/tutorial/parsing_command_line_arguments/assignment5_solution.cpp b/demos/tutorial/parsing_command_line_arguments/assignment5_solution.cpp
deleted file mode 100644
index 6160aa3..0000000
--- a/demos/tutorial/parsing_command_line_arguments/assignment5_solution.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
- #include <iostream>
-
- #include <seqan/arg_parse.h>
-
- struct ModifyStringOptions
- {
- unsigned period;
- unsigned rangeBegin, rangeEnd;
- bool toUppercase;
- bool toLowercase;
- seqan::CharString inputFileName;
-
- ModifyStringOptions() :
- period(1), rangeBegin(0), rangeEnd(0),toUppercase(false),
- toLowercase(false)
- {}
- };
-
- seqan::ArgumentParser::ParseResult
- parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
- {
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
-
- // Define Options
- addOption(parser, seqan::ArgParseOption(
- "I", "input-file",
- "A text file that will printed with the modifications applied.",
- seqan::ArgParseArgument::INPUT_FILE));
- setValidValues(parser, "input-file", "txt");
- setRequired(parser, "input-file");
-
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- setMinValue(parser, "period", "1");
- setDefaultValue(parser, "period", "1");
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- addOption(parser, seqan::ArgParseOption(
- "L", "lowercase", "Select to-lowercase as operation."));
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // Only extract options if the program will continue after parseCommandLine()
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res;
-
- // Extract option values.
- getOptionValue(options.period, parser, "period");
- options.toUppercase = isSet(parser, "uppercase");
- options.toLowercase = isSet(parser, "lowercase");
- getOptionValue(options.inputFileName, parser, "input-file");
-
- // If both to-uppercase and to-lowercase were selected then this is an error.
- if (options.toUppercase && options.toLowercase)
- {
- std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
- return seqan::ArgumentParser::PARSE_ERROR;
- }
-
- return seqan::ArgumentParser::PARSE_OK;
- }
-
- seqan::CharString modifyString(seqan::CharString const & text,
- ModifyStringOptions const & options)
- {
- seqan::CharString result;
-
- if (options.toLowercase)
- {
- for (unsigned i = 0; i < length(text); ++i)
- {
- if (i % options.period == 0u)
- appendValue(result, tolower(text[i]));
- else
- appendValue(result, text[i]);
- }
- }
- else
- {
- for (unsigned i = 0; i < length(text); ++i)
- {
- if (i % options.period == 0u)
- appendValue(result, toupper(text[i]));
- else
- appendValue(result, text[i]);
- }
- }
-
- return result;
- }
-
- int main(int argc, char const ** argv)
- {
- // Parse the command line.
- ModifyStringOptions options;
- seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- std::fstream inFile(toCString(options.inputFileName), std::ios::binary | std::ios::in);
- if (inFile.good())
- {
- std::cerr << "ERROR: Could not open input file " << options.inputFileName << '\n';
- return 1;
- }
- seqan::CharString text;
- while (inFile.good())
- {
- char c = inFile.get();
- if (inFile.good())
- appendValue(text, c);
- }
- std::cout << modifyString(text, options);
-
- return 0;
- }
-
-
diff --git a/demos/tutorial/parsing_command_line_arguments/assignment6_solution.cpp b/demos/tutorial/parsing_command_line_arguments/assignment6_solution.cpp
deleted file mode 100644
index b0b26ad..0000000
--- a/demos/tutorial/parsing_command_line_arguments/assignment6_solution.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
- #include <iostream>
-
- #include <seqan/arg_parse.h>
-
- struct ModifyStringOptions
- {
- unsigned period;
- unsigned rangeBegin, rangeEnd;
- bool toUppercase;
- bool toLowercase;
- seqan::CharString text;
-
- ModifyStringOptions() :
- period(1), rangeBegin(0), rangeEnd(0),toUppercase(false),
- toLowercase(false)
- {}
- };
-
- seqan::ArgumentParser::ParseResult
- parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
- {
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
-
- // We require one argument.
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
-
- // Define Options
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- setMinValue(parser, "period", "1");
- setDefaultValue(parser, "period", "1");
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- addOption(parser, seqan::ArgParseOption(
- "L", "lowercase", "Select to-lowercase as operation."));
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // Only extract options if the program will continue after parseCommandLine()
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res;
-
- // Extract option values.
- getOptionValue(options.period, parser, "period");
- options.toUppercase = isSet(parser, "uppercase");
- options.toLowercase = isSet(parser, "lowercase");
- seqan::getArgumentValue(options.text, parser, 0);
-
- // If both to-uppercase and to-lowercase were selected then this is an error.
- if (options.toUppercase && options.toLowercase)
- {
- std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
- return seqan::ArgumentParser::PARSE_ERROR;
- }
-
- return seqan::ArgumentParser::PARSE_OK;
- }
-
- seqan::CharString modifyString(seqan::CharString const & text,
- ModifyStringOptions const & options)
- {
- seqan::CharString result;
-
- if (options.toLowercase)
- {
- for (unsigned i = 0; i < length(text); ++i)
- {
- if (i % options.period == 0u)
- appendValue(result, tolower(text[i]));
- else
- appendValue(result, text[i]);
- }
- }
- else
- {
- for (unsigned i = 0; i < length(text); ++i)
- {
- if (i % options.period == 0u)
- appendValue(result, toupper(text[i]));
- else
- appendValue(result, text[i]);
- }
- }
-
- return result;
- }
-
- int main(int argc, char const ** argv)
- {
- // Parse the command line.
- ModifyStringOptions options;
- seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- std::cout << modifyString(options.text, options) << '\n';
-
- return 0;
- }
diff --git a/demos/tutorial/parsing_command_line_arguments/example1.cpp b/demos/tutorial/parsing_command_line_arguments/example1.cpp
deleted file mode 100644
index 6db6dcf..0000000
--- a/demos/tutorial/parsing_command_line_arguments/example1.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <iostream>
-
-#include <seqan/arg_parse.h>
-
-int main(int argc, char const ** argv)
-{
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
-
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
-
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- // Extract option values and print them.
- unsigned period = 0;
- getOptionValue(period, parser, "period");
- bool toUppercase = isSet(parser, "uppercase");
- seqan::CharString text;
- getArgumentValue(text, parser, 0);
-
- std::cout << "period \t" << period << '\n'
- << "uppercase\t" << toUppercase << '\n'
- << "text \t" << text << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp b/demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
deleted file mode 100644
index a0e520c..0000000
--- a/demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <iostream>
-
-#include <seqan/arg_parse.h>
-
-int main(int argc, char const ** argv)
-{
- //![object]
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
- //![object]
-
- //![argument]
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
- //![argument]
-
- //![option]
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- //![option]
-
- //![parse]
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
- //![parse]
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- //![check]
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
- //![check]
-
- //![print]
- // Extract option values and print them.
- unsigned period = 0;
- getOptionValue(period, parser, "period");
- bool toUppercase = isSet(parser, "uppercase");
- seqan::CharString text;
- getArgumentValue(text, parser, 0);
-
- std::cout << "period \t" << period << '\n'
- << "uppercase\t" << toUppercase << '\n'
- << "text \t" << text << '\n';
- //![print]
-
- return 0;
-}
-
diff --git a/demos/tutorial/parsing_command_line_arguments/example_with_modifyString.cpp b/demos/tutorial/parsing_command_line_arguments/example_with_modifyString.cpp
deleted file mode 100644
index abc706f..0000000
--- a/demos/tutorial/parsing_command_line_arguments/example_with_modifyString.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#include <iostream>
-
-#include <seqan/arg_parse.h>
-
-struct ModifyStringOptions
-{
- unsigned period;
- bool toUppercase;
- bool toLowercase;
- seqan::CharString text;
-
- ModifyStringOptions() :
- period(1), toUppercase(false), toLowercase(false)
- {}
-};
-
-seqan::ArgumentParser::ParseResult
-parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
-{
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
-
- // We require one argument.
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
-
- // Define Options
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- setDefaultValue(parser, "period", "1");
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- addOption(parser, seqan::ArgParseOption(
- "L", "lowercase", "Select to-lowercase as operation."));
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // Only extract options if the program will continue after parseCommandLine()
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res;
-
- // Extract option values.
- getOptionValue(options.period, parser, "period");
- options.toUppercase = isSet(parser, "uppercase");
- options.toLowercase = isSet(parser, "lowercase");
- getArgumentValue(options.text, parser, 0);
-
- // If both to-uppercase and to-lowercase were selected then this is an error.
- if (options.toUppercase && options.toLowercase)
- {
- std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
- return seqan::ArgumentParser::PARSE_ERROR;
- }
-
- return seqan::ArgumentParser::PARSE_OK;
-}
-
-seqan::CharString modifyString(seqan::CharString const & text,
- ModifyStringOptions const & options)
-{
- seqan::CharString result;
-
- if (options.toLowercase)
- {
- for (unsigned i = 0; i < length(text); ++i)
- {
- if (i % options.period == 0u)
- appendValue(result, tolower(text[i]));
- else
- appendValue(result, text[i]);
- }
- }
- else
- {
- for (unsigned i = 0; i < length(text); ++i)
- {
- if (i % options.period == 0u)
- appendValue(result, toupper(text[i]));
- else
- appendValue(result, text[i]);
- }
- }
-
- return result;
-}
-
-int main(int argc, char const ** argv)
-{
- // Parse the command line.
- ModifyStringOptions options;
- seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- std::cout << modifyString(options.text, options) << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/parsing_command_line_arguments/example_with_own_function.cpp b/demos/tutorial/parsing_command_line_arguments/example_with_own_function.cpp
deleted file mode 100644
index 1248a29..0000000
--- a/demos/tutorial/parsing_command_line_arguments/example_with_own_function.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-#include <iostream>
-
-#include <seqan/arg_parse.h>
-
-struct ModifyStringOptions
-{
- unsigned period;
- bool toUppercase;
- bool toLowercase;
- seqan::CharString text;
-
- ModifyStringOptions() :
- period(1), toUppercase(false), toLowercase(false)
- {}
-};
-
-seqan::ArgumentParser::ParseResult
-parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
-{
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
-
- // We require one argument.
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
-
- // Define Options
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- setDefaultValue(parser, "period", "1");
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- addOption(parser, seqan::ArgParseOption(
- "L", "lowercase", "Select to-lowercase as operation."));
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // Only extract options if the program will continue after parseCommandLine()
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res;
-
- // Extract option values.
- getOptionValue(options.period, parser, "period");
- options.toUppercase = isSet(parser, "uppercase");
- options.toLowercase = isSet(parser, "lowercase");
- getArgumentValue(options.text, parser, 0);
-
- // If both to-uppercase and to-lowercase were selected then this is an error.
- if (options.toUppercase && options.toLowercase)
- {
- std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
- return seqan::ArgumentParser::PARSE_ERROR;
- }
-
- return seqan::ArgumentParser::PARSE_OK;
-}
-
-
-int main(int argc, char const ** argv)
-{
- // Parse the command line.
- ModifyStringOptions options;
- seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- std::cout << "period \t" << options.period << '\n'
- << "uppercase\t" << options.toUppercase << '\n'
- << "lowercase\t" << options.toLowercase << '\n'
- << "text \t" << options.text << '\n';
-
- return 0;
-}
-
diff --git a/demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp b/demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp
deleted file mode 100644
index e16b448..0000000
--- a/demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#include <iostream>
-
-#include <seqan/arg_parse.h>
-
-struct ModifyStringOptions
-{
- unsigned period;
- bool toUppercase;
- bool toLowercase;
- seqan::CharString text;
-
- ModifyStringOptions() :
- period(1), toUppercase(false), toLowercase(false)
- {}
-};
-
-int main(int argc, char const ** argv)
-{
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
-
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
-
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- setDefaultValue(parser, "period", "1");
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- addOption(parser, seqan::ArgParseOption(
- "L", "lowercase", "Select to-lowercase as operation."));
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- // Extract option values and print them.
- ModifyStringOptions options;
- getOptionValue(options.period, parser, "period");
- options.toUppercase = isSet(parser, "uppercase");
- options.toLowercase = isSet(parser, "lowercase");
- getArgumentValue(options.text, parser, 0);
-
- std::cout << "period \t" << options.period << '\n'
- << "uppercase\t" << options.toUppercase << '\n'
- << "lowercase\t" << options.toLowercase << '\n'
- << "text \t" << options.text << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/parsing_command_line_arguments/final_solution.cpp b/demos/tutorial/parsing_command_line_arguments/final_solution.cpp
deleted file mode 100644
index 3140b2c..0000000
--- a/demos/tutorial/parsing_command_line_arguments/final_solution.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
- #include <iostream>
-
- #include <seqan/arg_parse.h>
-
- struct ModifyStringOptions
- {
- unsigned period;
- bool toUppercase;
- bool toLowercase;
- seqan::CharString text;
-
- ModifyStringOptions() :
- period(1), toUppercase(false), toLowercase(false)
- {}
- };
-
- seqan::ArgumentParser::ParseResult
- parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
- {
- // Setup ArgumentParser.
- seqan::ArgumentParser parser("modify_string");
- // Set short description, version, and date.
- setShortDescription(parser, "String Modifier");
- setVersion(parser, "1.0");
- setDate(parser, "July 2012");
-
- // Define usage line and long description.
- addUsageLine(parser,
- "[\\fIOPTIONS\\fP] \"\\fITEXT\\fP\"");
- addDescription(parser,
- "This program allows simple character modifications to "
- "each i-th character.");
-
- // We require one argument.
- addArgument(parser, seqan::ArgParseArgument(
- seqan::ArgParseArgument::STRING, "TEXT"));
-
- // Define Options -- Section Modification Options
- addSection(parser, "Modification Options");
- addOption(parser, seqan::ArgParseOption(
- "i", "period", "Period to use for the index.",
- seqan::ArgParseArgument::INTEGER, "INT"));
- setDefaultValue(parser, "period", "1");
- addOption(parser, seqan::ArgParseOption(
- "U", "uppercase", "Select to-uppercase as operation."));
- addOption(parser, seqan::ArgParseOption(
- "L", "lowercase", "Select to-lowercase as operation."));
-
- // Add Examples Section.
- addTextSection(parser, "Examples");
- addListItem(parser,
- "\\fBmodify_string\\fP \\fB-U\\fP \\fIveryverylongword\\fP",
- "Print upper case version of \"veryverylongword\"");
- addListItem(parser,
- "\\fBmodify_string\\fP \\fB-L\\fP \\fB-i\\fP \\fI3\\fP "
- "\\fIveryverylongword\\fP",
- "Print \"veryverylongword\" with every third character "
- "converted to upper case.");
-
- // Parse command line.
- seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
-
- // Only extract options if the program will continue after parseCommandLine()
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res;
-
- // Extract option values.
- getOptionValue(options.period, parser, "period");
- options.toUppercase = isSet(parser, "uppercase");
- options.toLowercase = isSet(parser, "lowercase");
- seqan::getArgumentValue(options.text, parser, 0);
-
- // If both to-uppercase and to-lowercase were selected then this is an error.
- if (options.toUppercase && options.toLowercase)
- {
- std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
- return seqan::ArgumentParser::PARSE_ERROR;
- }
-
- return seqan::ArgumentParser::PARSE_OK;
- }
-
- seqan::CharString modifyString(seqan::CharString const & text,
- ModifyStringOptions const & options)
- {
- seqan::CharString result;
-
- if (options.toLowercase)
- {
- for (unsigned i = 0; i < length(text); ++i)
- appendValue(result, tolower(text[i]));
- }
- else
- {
- for (unsigned i = 0; i < length(text); ++i)
- appendValue(result, toupper(text[i]));
- }
-
- return result;
- }
-
- int main(int argc, char const ** argv)
- {
- // Parse the command line.
- ModifyStringOptions options;
- seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != seqan::ArgumentParser::PARSE_OK)
- return res == seqan::ArgumentParser::PARSE_ERROR;
-
- std::cout << modifyString(options.text, options) << '\n';
-
- return 0;
- }
-
diff --git a/demos/tutorial/pattern_matching/assignment1.cpp.stdout b/demos/tutorial/pattern_matching/assignment1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/pattern_matching/assignment1_solution.cpp.stdout b/demos/tutorial/pattern_matching/assignment1_solution.cpp.stdout
deleted file mode 100644
index 53a83a0..0000000
--- a/demos/tutorial/pattern_matching/assignment1_solution.cpp.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-[2,4) 0 mo
-[7,11) 1 send
-[12,14) 0 mo
-[12,16) 2 more
-[17,19) 0 mo
diff --git a/demos/tutorial/pattern_matching/assignment2.cpp.stdout b/demos/tutorial/pattern_matching/assignment2.cpp.stdout
deleted file mode 100644
index 564a2c8..0000000
--- a/demos/tutorial/pattern_matching/assignment2.cpp.stdout
+++ /dev/null
@@ -1,12 +0,0 @@
-[2,4) mo
-[2,5) mon
-[2,6) mon,
-[12,14) mo
-[12,15) mor
-[12,16) more
-[12,17) more
-[12,18) more m
-[17,19) mo
-[17,20) mon
-[17,21) mone
-[17,22) money
diff --git a/demos/tutorial/pattern_matching/assignment2_solution.cpp.stdout b/demos/tutorial/pattern_matching/assignment2_solution.cpp.stdout
deleted file mode 100644
index 564a2c8..0000000
--- a/demos/tutorial/pattern_matching/assignment2_solution.cpp.stdout
+++ /dev/null
@@ -1,12 +0,0 @@
-[2,4) mo
-[2,5) mon
-[2,6) mon,
-[12,14) mo
-[12,15) mor
-[12,16) more
-[12,17) more
-[12,18) more m
-[17,19) mo
-[17,20) mon
-[17,21) mone
-[17,22) money
diff --git a/demos/tutorial/pattern_matching/assignment3.cpp.stdout b/demos/tutorial/pattern_matching/assignment3.cpp.stdout
deleted file mode 100644
index f5dbb82..0000000
--- a/demos/tutorial/pattern_matching/assignment3.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-[0,4) tobe
-[9,13) tobe
diff --git a/demos/tutorial/pattern_matching/assignment3_solution.cpp.stdout b/demos/tutorial/pattern_matching/assignment3_solution.cpp.stdout
deleted file mode 100644
index f5dbb82..0000000
--- a/demos/tutorial/pattern_matching/assignment3_solution.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-[0,4) tobe
-[9,13) tobe
diff --git a/demos/tutorial/pattern_matching/find_approx.cpp.stdout b/demos/tutorial/pattern_matching/find_approx.cpp.stdout
deleted file mode 100644
index 3cf1cc3..0000000
--- a/demos/tutorial/pattern_matching/find_approx.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-[2,4) mo
-[12,14) mo
-[12,15) mor
-[12,16) more
-[12,17) more
-[12,18) more m
-[17,19) mo
-[17,21) mone
diff --git a/demos/tutorial/pattern_matching/find_exact.cpp.stdout b/demos/tutorial/pattern_matching/find_exact.cpp.stdout
deleted file mode 100644
index 69aa5a2..0000000
--- a/demos/tutorial/pattern_matching/find_exact.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-[2,4) mo
-[12,14) mo
-[17,19) mo
diff --git a/demos/tutorial/pattern_matching/find_index.cpp.stdout b/demos/tutorial/pattern_matching/find_index.cpp.stdout
deleted file mode 100644
index b9bdfbc..0000000
--- a/demos/tutorial/pattern_matching/find_index.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-[11,13) be
-[2,4) be
-[11,13) be
-[2,4) be
diff --git a/demos/tutorial/pattern_matching/find_index_multiple.cpp.stdout b/demos/tutorial/pattern_matching/find_index_multiple.cpp.stdout
deleted file mode 100644
index 1e0203e..0000000
--- a/demos/tutorial/pattern_matching/find_index_multiple.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-[< 0 , 11 >,< 0 , 13 >) be
-[< 1 , 3 >,< 1 , 5 >) be
-[< 2 , 0 >,< 2 , 2 >) be
-[< 0 , 2 >,< 0 , 4 >) be
diff --git a/demos/tutorial/q_gram_index/index_assignment5.cpp.stdout b/demos/tutorial/q_gram_index/index_assignment5.cpp.stdout
deleted file mode 100644
index 2f1b638..0000000
--- a/demos/tutorial/q_gram_index/index_assignment5.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-1
-4
diff --git a/demos/tutorial/q_gram_index/index_assignment6.cpp.stdout b/demos/tutorial/q_gram_index/index_assignment6.cpp.stdout
deleted file mode 100644
index b05395f..0000000
--- a/demos/tutorial/q_gram_index/index_assignment6.cpp.stdout
+++ /dev/null
@@ -1,20 +0,0 @@
->Seq0
-TCATTTTCTCGATGAAAGCGTTGACCCCACATATCGTTAGTACTCTTGTACCCT
->Seq1
-TGATTGTGTAGAAACCGAACTACGGTACCTCCTGTTGGTAGTCACGATAGATTATAAAAGTATGTTCCCACCCTATCGACGAGACTGGCA
->Seq2
-CCTAGGTGTTTGCGGTGTTGGTACGTGCG
-
-Length of the CountsDir fibre: 1025
-
-Common 5-mers for Seq_i, Seq_j
-50 4 0
-0 86 5
-0 0 25
-
-Length of the CountsDir fibre: 513
-
-Common 5-mers for Seq_i, Seq_j
-50 4 0
-0 86 5
-0 0 25
diff --git a/demos/tutorial/q_gram_index/index_qgram.cpp.stdout b/demos/tutorial/q_gram_index/index_qgram.cpp.stdout
deleted file mode 100644
index f8f9fdf..0000000
--- a/demos/tutorial/q_gram_index/index_qgram.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-0
-8
diff --git a/demos/tutorial/q_gram_index/index_qgram_hash.cpp.stdout b/demos/tutorial/q_gram_index/index_qgram_hash.cpp.stdout
deleted file mode 100644
index 8070d39..0000000
--- a/demos/tutorial/q_gram_index/index_qgram_hash.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-0 0 1 4 17 4 18 11 47 63 62 56 0 0 1 4 17 4 18 11 47 63 62 56
\ No newline at end of file
diff --git a/demos/tutorial/random/CMakeLists.txt b/demos/tutorial/random/CMakeLists.txt
new file mode 100644
index 0000000..99369be
--- /dev/null
+++ b/demos/tutorial/random/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_random)
+
+seqan_setup_apps(demos_tutorials_random)
+seqan_add_all_executables(demos_tutorials_random tutorial_)
diff --git a/demos/tutorial/random/random_examples.cpp b/demos/tutorial/random/random_examples.cpp
new file mode 100644
index 0000000..723b541
--- /dev/null
+++ b/demos/tutorial/random/random_examples.cpp
@@ -0,0 +1,55 @@
+//![header]
+#include <iostream>
+
+#include <seqan/basic.h>
+#include <seqan/stream.h>
+#include <seqan/random.h>
+
+using namespace seqan;
+
+const int SEED = 42;
+
+int main()
+{
+//![header]
+//![random-number-generation-raw]
+ Rng<MersenneTwister> rng(SEED);
+ std::cout << "pickRandomNumber(rng) == " << pickRandomNumber(rng) << std::endl;
+//![random-number-generation-raw]
+
+//![random-number-generation-metafunction-value]
+ typedef Value<Rng<MersenneTwister> >::Type TMTValue;
+ TMTValue value = pickRandomNumber(rng);
+//![random-number-generation-metafunction-value]
+
+//![ignore-variable-value]
+ // This fragment is not included from the tutorial.
+ (void) value; // Suppress unused variable warning.
+//![ignore-variable-value]
+
+//![random-number-generation-pdf]
+ Pdf<Uniform<double> > uniformDouble(0, 1);
+ std::cout << "pickRandomNumber(rng, uniformDouble) == " << pickRandomNumber(rng, uniformDouble) << std::endl;
+ Pdf<Uniform<int> > uniformInt(0, 42);
+ std::cout << "pickRandomNumber(rng, uniformInt) == " << pickRandomNumber(rng, uniformInt) << std::endl;
+ Pdf<Normal> normal(0, 1);
+ std::cout << "pickRandomNumber(rng, normal) == " << pickRandomNumber(rng, normal) << std::endl;
+ Pdf<LogNormal> logNormal(0, 1);
+ std::cout << "pickRandomNumber(rng, logNormal) == " << pickRandomNumber(rng, logNormal) << std::endl;
+//![random-number-generation-pdf]
+
+//![random-number-generation-log-normal]
+ Pdf<LogNormal> logNormal2(0, 1, MuSigma());
+ std::cout << "pickRandomNumber(rng, logNormal2) == " << pickRandomNumber(rng, logNormal2) << std::endl;
+ Pdf<LogNormal> logNormal3(0.1, 1, MeanStdDev());
+ std::cout << "pickRandomNumber(rng, logNormal3) == " << pickRandomNumber(rng, logNormal3) << std::endl;
+//![random-number-generation-log-normal]
+
+//![shuffling]
+ CharString container = "Hello World!";
+ shuffle(container, rng);
+ std::cout << "shuffle(\"Hello World!\") == " << container << std::endl;
+
+ return 0;
+}
+//![shuffling]
diff --git a/demos/tutorial/randomness/examples.cpp b/demos/tutorial/randomness/examples.cpp
deleted file mode 100644
index 900a19f..0000000
--- a/demos/tutorial/randomness/examples.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-//![header]
-#include <iostream>
-
-#include <seqan/basic.h>
-#include <seqan/stream.h>
-#include <seqan/random.h>
-
-using namespace seqan;
-
-const int SEED = 42;
-
-int main()
-{
-//![header]
-//![random-number-generation-raw]
- Rng<MersenneTwister> rng(SEED);
- std::cout << "pickRandomNumber(rng) == " << pickRandomNumber(rng) << std::endl;
-//![random-number-generation-raw]
-
-//![random-number-generation-metafunction-value]
- typedef Value<Rng<MersenneTwister> >::Type TMTValue;
- TMTValue value = pickRandomNumber(rng);
-//![random-number-generation-metafunction-value]
-
-//![ignore-variable-value]
- // This fragment is not included from the tutorial.
- ignoreUnusedVariableWarning(value); // Suppress unused variable warning.
-//![ignore-variable-value]
-
-//![random-number-generation-pdf]
- Pdf<Uniform<double> > uniformDouble(0, 1);
- std::cout << "pickRandomNumber(rng, uniformDouble) == " << pickRandomNumber(rng, uniformDouble) << std::endl;
- Pdf<Uniform<int> > uniformInt(0, 42);
- std::cout << "pickRandomNumber(rng, uniformInt) == " << pickRandomNumber(rng, uniformInt) << std::endl;
- Pdf<Normal> normal(0, 1);
- std::cout << "pickRandomNumber(rng, normal) == " << pickRandomNumber(rng, normal) << std::endl;
- Pdf<LogNormal> logNormal(0, 1);
- std::cout << "pickRandomNumber(rng, logNormal) == " << pickRandomNumber(rng, logNormal) << std::endl;
-//![random-number-generation-pdf]
-
-//![random-number-generation-log-normal]
- Pdf<LogNormal> logNormal2(0, 1, MuSigma());
- std::cout << "pickRandomNumber(rng, logNormal2) == " << pickRandomNumber(rng, logNormal2) << std::endl;
- Pdf<LogNormal> logNormal3(0.1, 1, MeanStdDev());
- std::cout << "pickRandomNumber(rng, logNormal3) == " << pickRandomNumber(rng, logNormal3) << std::endl;
-//![random-number-generation-log-normal]
-
-//![shuffling]
- CharString container = "Hello World!";
- shuffle(container, rng);
- std::cout << "shuffle(\"Hello World!\") == " << container << std::endl;
-
- return 0;
-}
-//![shuffling]
diff --git a/demos/tutorial/randomness/examples.cpp.stdout b/demos/tutorial/randomness/examples.cpp.stdout
deleted file mode 100644
index 03a0825..0000000
--- a/demos/tutorial/randomness/examples.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-pickRandomNumber(rng) == 1608637542
-pickRandomNumber(rng, uniformDouble) == 0.950714
-pickRandomNumber(rng, uniformInt) == 27
-pickRandomNumber(rng, normal) == 0.419823
-pickRandomNumber(rng, logNormal) == 1.22431
-pickRandomNumber(rng, logNormal2) == 2.78004
-pickRandomNumber(rng, logNormal3) == 0.00155248
-shuffle("Hello World!") == o!reWlloHld
diff --git a/demos/tutorial/read_mapping/CMakeLists.txt b/demos/tutorial/read_mapping/CMakeLists.txt
new file mode 100644
index 0000000..14cf2d5
--- /dev/null
+++ b/demos/tutorial/read_mapping/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_read_mapping)
+
+seqan_setup_apps(demos_tutorials_read_mapping)
+seqan_add_all_executables(demos_tutorials_read_mapping tutorial_)
diff --git a/demos/unassigned_or_unused/minimapper.cpp b/demos/tutorial/read_mapping/minimapper.cpp
similarity index 100%
rename from demos/unassigned_or_unused/minimapper.cpp
rename to demos/tutorial/read_mapping/minimapper.cpp
diff --git a/demos/tutorial/read_mapping/nc_001454.fasta b/demos/tutorial/read_mapping/nc_001454.fasta
new file mode 100644
index 0000000..ad0d239
--- /dev/null
+++ b/demos/tutorial/read_mapping/nc_001454.fasta
@@ -0,0 +1,491 @@
+>gi|9626553|ref|NC_001454.1| Human adenovirus F, complete genome
+CATCATCAATAATATACCTTAAAACTGGAAACGAGCCAATATGATAATGAGGGAGGAGGGACTAGGGGTG
+GTGTAAGGTGACGTAGAGGCGGGCGGGGTGGGAAAGGGTGGAGGCGGATGACGTGTGGGGTCGGAGGACG
+GGCGCGGTGCGGCGGAAGTGACGGAAAATCTGGTGTATTGGGCGGGTTTTTGTAACTTTTGGCCATTTTG
+GCGCGAAAACTGAGTAATGAGGACGTGGGACGAACTTTGGACTTTTGTGTTTATGGAGGAAAAACTGCTG
+ATTATTACTGAACTTTGGCCCATGACGAACCGGTTTTTCTACGTGGCAGTGCCACGAGACGGCTCAAAGT
+CCTAATTTTTTATTGTGTGCTCAGCCCGTTTGAGGGTATTTAAACACAGCCAGAACATCAAGAGGCCACT
+CTTGAGTGCGAGCGAGTAGAGTTTTCTCCTCCATTGCTGTTGGCGCTTTTGACATAGCCACCAAGATGAG
+AATGCTGCCGGATTTTTTTACCGGGAACTGGGATGACATGTTCCAGGGGTTGCTGGAGACTGAATATGTG
+TTTGATTTCCCTGAACCTTCTGAGGCTTCTGAAGAAATGTCGCTTCATGATCTTTTTGATGTGGAGGTGG
+ATGGTTTCGAAGAGGACGCCAACCAGGAAGCGGTTGATGGTATGTTTCCCGAGAGGTTGCTGTCCGAGGC
+TGAGAGCGCTGCAGAGAGCGGTTCGGGTGATTCTGGGGTTGGCGAAGAGTTGTTGCCGGTTGATCTGGAT
+TTGAAATGCTATGAAGACGGTTTGCCTCCTAGCGATCCTGAAACTGATGAGGCTACAGAGGCGGAAGAAG
+AGGCGGCTATGCCGACTTATGTGAATGAAAATGAAAATGAGCTGGTGCTGGACTGTCCAGAGAACCCTGG
+GCGAGGTTGTCGGGCTTGTGATTTCCATCGGGGCACTAGTGGCAATCCTGAAGCTATGTGTGCTTTGTGT
+TATATGCGTTTAACTGGACACTGTATCTACAGTAAGTAAAAAAGTTTTTATTTGTTTGGTGGTGTTGGTT
+AATATGAACAAGAGTTAACGACTTTTTGTTATTTTAGGTCCAATTTCAGATGCGGAAGGGGAGTCTGAGT
+CGGGGTCGCCTGAGGACACTGATTTTCCCCACCCTTTAACCGCCACGCCGCCACATGGAATTGTGAGAAC
+CATCCCGTGCAGAGTTTCTTGTAGACGACGCCCAGCTGTTGAGTGCATAGAAGATTTACTTGAGGAAGAT
+CCAACAGATGAACCTTTGAACCTGTCCTTAAAGCGCCCCAAGTGCTCCTGAGATCATAGTAATAAAGTTA
+TTGACCCTTACCCTGTGTTTATTTCTTGGGCGTGTTTGTGGGTATATAAGCAGGTAGAATGGTTTTAGTG
+TTAGTTTATTCTGATGGAGTTGTGGAGTGAGTTACAAAGTTATCAGAACCTCCGACGCTTGCTGGAGTTG
+GCTTCTGCCAGAACTTCCAGCTGTTGGAGAATCCTTTTTGGCTCAACTTTAACTAATGTAATCTATAGAG
+CTAAGGAGGAGTACTCTTCGCGGTTTGCTGACCTTTTGTCGCATAACCCTGGAATTTTTGCTTCTTTGAA
+TTTGGGGCATCACTCATTTTTTCAAGAAATTGTGATCAGAAATTTAGATTTTTCTTCTCCTGGCCGTACG
+GTTTCTGGGCTTGCTTTTATTTGTTTTATATTGGATCAATGGAGCGCCCAAACTCATCTGTCGCAGGGTT
+ATACTCTGGATTACATGGCAATGGCTCTGTGGAGAACCTTGCTACGGAGGAAGAGGGTCTTAGGTTGCTT
+GCCGGCGCAGCGTCCGCACGGTTTGGATCCAGTGCAGGAAGAGGAGGAGGAGGAGGAGAACCTGAGGGCC
+GGCCTGGACCCTTCAACGGAATTGTAACTGAGCCTGATCCCGAAGAGGGTACTAGCAGTGGGCAAAGGGG
+GGGCATTAATGGGCAAAGGGGGACAAAGAGAAAGATGGAAAACGAGGGGGAGGACTTTTTAAAGGAGTTA
+ACCTTGAGTTTAATGTCTCGTCGCCATCATGAGTCTGTTTGGTGGGCTGATTTGGAAGATGAGTTTAAAA
+ACGGTGAAATGAATTTGTTATACAAGTATACATTTGAACAGCTGAAGACACATTGGCTGGAGGCTTGGGA
+GGATTTTGAGTTAGCTCTGAACACTTTTGCCAAAGTGGCTCTTCGCCCGGACACTATTTATACCATTAAG
+AAGACTGTTAATATACGTAAATGTGCCTATGTGCTGGGGAATGGAGCTGTGGTGCGGTTTCAAACATGTG
+ACCGTGTAGCCTTTAACTGCGCAATGCAGAGCTTGGGCCCTGGGCTTATTGGCATGAGTGGGGTAACTTT
+TATGAATGTGAGATTTGTAGTGGAGGGATTTAATGGCACAGTGTTTGCTTCTACCACTCAATTAACCTTG
+CATGGTGTGTTTTTTCAAAATTGCAGCGGTATCTGCGTGGATTCCTGGGGTAGGGTGTCTGCCAGAGGGT
+GTACGTTTGTTGCATGTTGGAAAGGGGTGGTGGGGCGAAACAAAAGTCAAATGTCTGTAAAGAAGTGTGT
+GTTTGAACGTTGCATTATGGCCATGGTGGTAGAAGGTCAGGCGCGGATTCGCCATAATGCGGGCTCTGAT
+AATGTGTGTTTTTTACTGCTAAAGGGAACTGCCAGTGTAAAGCATAACATGATTTGTGGCGGTGGTCACT
+CTCAGCTGCTAACCTGTGCAGATGGAAACTGTCAGGCTCTGAGAGTGTTTCACGTAGTATCTCATCCCCG
+CCGCCCCTGGCCTGTTTTTGAGCACAACATGCTTATGCGCTGTACTGTGCATTTGGGAGCTCGTCGTGGC
+ATGTTTTCTCCATACCAGAGTAACTTTTGCCACACTAAAGTTTTAATGGAAACTGATGCTTTTTCTCGGG
+TATGGTGGAACGGGGTATTTGATTTAACCATGGAGCTATTTAAAGTGGTGAGGTATGATGAGTCAAAGGT
+TCGTTGTCGCCCCTGTGAGTGTGGAGCTAATCATATTAGGTTATATCCAGCAACTCTGAACGTGACCGAG
+CAGCTGCGTACGGACCACCAGATGATGTCGTGTCTGCGTACTGACTACGAATCCAGCGATGAGGATTAAG
+GGTAAGGGGCGGAGCCTATTACAGGTATAAAGGTTGGGGTAGAGTAAAAAAAAGGGAAGTTACAAAATGA
+GTGGCTTCACGGAAGGAAACGCTGTGAGTTTTGAGGGTGGGGTGTTTAGCCCATATCTGACAACCCGTCT
+TCCCTCTTGGGCAGGAGTGCGTCAGAATGTGGTGGGGTCCAACGTTGATGGTCGTCCTGTCGCCCCTGCC
+AACTCGACAACCCTTACCTACGCCACTATTGGATCGTCGGTGGATACCGCTGCAGCTGCTGCCGCGTCTG
+CTGCTGCCTCTACTGCTCGTGGCATGGCAGCAGATTTTGGACTGTACAATCAACTGGCCGCGTCTCGGTT
+AAGAGAAGAAGATGCCCTGTCCGTGGTGTTGACCCGCTTGGAGGAGCTGTCTCAGCAGTTGCAAGATATG
+TCTGCCAAAATGGCTCTGCTTAACCCTCCCGCTAATACTTCTTAATAAAGACACAATTGGTTGGAAAAGT
+CAAAAGTGTTTATTTATTTCTTTTGCGGTAGGCCCTAGACCACCTGTCGCGGTCGTTTAAAACTTTATGG
+ATGTTTTCCAAGACCCGGTACAGGTGGGCTTGGATGTTCAAATACATAGGCATTAGGCCGTCCCTGGGAT
+GCAGGTAGGACCACTGGAGGGCGTCATGCTCTGGGGTGGTGTTGTAAATAATCCAATCGTAGCAGGGTTT
+TTGAGCATGAAACTGGAAGATGTCCTTAAGGAGGAGGCTAATGGCCAGAGGTAGCCCCTTGGTGAAGGTA
+TTAACAAATCGATTAAGTTGGGAGGGATGCATGCGAGGGGAAATCAGATGCATTTTGGCCTGAATTTTTA
+GGTTGGCAATGTTGCCACCGAGATCACGTCTGGGGTTCATGTTGTGCAGAACCACTAGCACGGTATAGCC
+GGTGCACTTGGGGAATTTGTCATGCAACTTGGAAGGGAAGGCGTGGAAAAACTTGGAAACCCCTTTGTGC
+CCTCCCAAATTTTCCATGCACTCATCCATAATGATGGCGATGGGGCCTTGGGATGCAGCCTTAGCAAAAA
+TGTTATCGGGGTGGGAAACATCGTAGTTTTGCTCCAGGGTAAGCTCGTCATAGGCCATTTTGATGAAGCG
+TGGTAAAAGGGTGCCCGACTGGGGTATAATGGTCCCTTCTGGACCTGGGGCGTAGTTACCCTCGCAGATT
+TGCATCTCCCAAGCCTTAATTTCTGAGGGGGGGATCATGTCCACCTGAGGGGCAATAAAAAAAACGGTTT
+CGGGTGGAGGGTTAATAAGCTGGGTGGAAAGCAAGTTTCGCAAAAGCTGGGATTTGCCGCAGCCAGTGGG
+ACCGTAAATGACCCCAATGACAGGCTGTAGTTGATAGTTTAAGGAGATGCAACTGCCATCTTCCCGCAAA
+AGCGGAGTGACTTCGTTCATCATGCTTCTGACATGCTGGTTTTCTTTAACCAAGTCTTGCAAGAGACGCT
+CACCGCCCAGGGAAAGTAGCTCTTCCAAGCTGCGGAAATGCTTTAGTGGTTTTAGGCCATCGGCCATGGT
+CATTTTTTCAAGGGATTGACGCAGCAAATAGAGCCGATCCCAGAGCTCGGTAATATGGTCTATGGCATCT
+CGATCCAACAAACTTCTTGGTTGCGGGGGTTGGGACGGCTTTGGCTGTACGGTACCAGTCGGTGGGCGTC
+CAGTGGAGCAAGGGTAATGTCTTTCCAGGGTCGCAGGGTTCGCGTTAGGTTGGTTTCGGTGACGGTAAAG
+GGGCGCGCTCCGGGTTGGGCGCTTGCCAGGGTTCTCTTCAGGCTCATCCTGCTGGTGTGAAAACGCGCGT
+CTTCGCCCTGAAAGTCGGCCAAGTAGCATTTTAACATGAGATCATAGTTGAGGGTTTCGGCAGCGTGTCC
+TTTGGCGCGAAGCTTGCCCTTGGAAATTTGCTGACAGCTGGGACAGCGGAGGCATTTTAGGGCGTAGAGT
+TTGGGAGCCAGGAAGACGGACTCTGGTGAATAAGCGTCGGCGCCACACTGTGCACACACGGTTTCGCACT
+CCACTAACCAGGCGAGCTCAGGGTGTTTTGGGTCAAAAACCAGATTGCCTCCGTGTTTTTTGATGCGTTT
+CTTACCTCGTGTTTCCATGAGGCGGTATCCGGCTTCGGTGACAAACAAGCTGTCTGTGTCTCCGTAAACT
+GATTTGAGGGTACGCTGTTCCAACGGTGTGCCTCTGTCCTCTGCGTACAAGATCTCGGACCATTCTGAGA
+CAAAAGCCCGGGTCCAGGCTAAAACAAAGGAGGCGATTTGGGAGGGATAACGGTTGTTTTCCACCAGGGG
+GTCGACCTTTTCTAGGGTGTGAAGGCAAAGGTCATCTTCTTCTGCATCCATAAAGGTAATTGGTTTGTAA
+GTGTAGGTCACGTGGTCATTGGGCTTGTGCGTGGGTGTATAAAAGGGGGCGTGTCCGGGCTCTTCATCAC
+TTTCTTCCGCATCGCTGTGGACGACAGCCAGCTGTTCGGGTGAGTATGCGCGTTGAAAGGTGGGCATAAC
+TTCAGCACTTAGAGTGTCAGTTTCCACAAACGAGGTGGATTTGATATTTATCTGCCCTGCGGCAATGCTT
+TTGATGGTGGCTGAATCCATTTGGTCAGAAAATACAATTTTTTTGTTATCAAGTTTGGTAGCAAAGGATC
+CATAGAGGGCGTTGGAGAGCAGTTTGGCAATGGAACGCAGTGTTTGGTTTTTTTCGCGGTCGGCACGCTC
+CTTGGCGGTGATATTAAGATGAACGTACTCTTTTGCCACGCAGCGCCACTCGGGAAAGACAGTGGCGCGC
+TCGTCGGGAAGCAACCGCACATGCCAGCCCCGGTTGTGCAGTGTTATAAGGTCCACACTGGTAACTACCT
+CGCCGCGCAGGGGCTCATTGGTCCAGCAAAGGCGCCCTCCTTTGCGCGAACAGAGTGGGGGCAAAACATC
+TAGTAGGTTTTCAGGTGGGGGGTCGGCGTCGATGGTAAAAATGCCAGGCAGCAGGGTGCGATTGAAATAA
+TCAATGGGGGTACCAACTTGCAAAAGAGCGTGTTCCCAATCTCGGACCGCTAGGGCGCGCTCGTAGGGAT
+TGAGTGGGAAGCCCCACGGCATGGGATGGGTAAGTGCAGAGGCGTACATGCCACAGATGTCATAAACGTA
+AAGTGGTTCGCGTAGCACCCCAATGTAAGTTGGATAACAGCGTCCTCCGCGAATGCTAGCCCGAACATAG
+TCATACATTTCGTGGGAAGGGGCCAGCAAGCTGCCGCCTAGGTCCGACCGCTGGGGTTTTACTGTCCGGT
+ACAAGATTTGACGAAAGATGGCGTGGGAGTTGGAGGAGATGGTGGGCCGCTGAAAGACGTTAAAGCTGGC
+TTCGGGTAGACCTACCGCGTCGCGGATAAACTGAGCGTAGGATTCGCGCAACTTTTGCACCAGGGCGGCG
+GTAACAAGCACATCCAGGGCACAGTAATCAAGGGTTTCACGCACCAGGTCGTAATGAGGACATTGCTTTT
+TTTCCCAGAGTTCGCGGTTCAGGAGGTACTCCTCGCGATCCTTCCAGTAATCTTCGGCAGGAAAGCCACG
+CTCGTCTGCGCGGTAAGAACCCAGCATGTAAAACTCGTTTACGGCCTTGTATGGGCAGCATCCTTTTTCT
+ACCGGAAGGGTATAGGCTTGTGCGGCTTTTCGCAGAGACGTGTGTGTGAGGGCAAAAGTGTCGCGCACCA
+TAACCTTGAGGAATTGATACTTAAAATCAGAGTCGTCGCAGGCGCCCTGCTCCCATAGGCGATAGTCGGT
+GCGTTTTTTTGAGCTTGGATTAGGAAGGGCAAAGGTGATATCATTAAAAAGGATTTTGCCGGCTCTAGGC
+ATAAAGTTGCGGGTGATTTTGAAAGGCCCGGGCACATCAGAACGGTTGTTAATAACCTGAGCTGCAAGTA
+CGATTTCATCGAAGCCGTTGATGTTATGCCCCACAATGTAAAGTTCTAAAAAGCGGGGGCGTCCCTGGAG
+TTTGGGGGCCTTTTGTAACTCTTCATAGGTAAGGTAATCAGGAGAAAAAAGACCCATTTCCAAGCAAGCC
+CATTCTGCCAGTTGGGGATTGGCGGCTAGAAAACCGCGCCATAGCTGGAGGGCAAAATGGGCTTGCAAGC
+GGTTGCGGTACTCTCGAAACTTTTTGCCCACCGCCAATTTTTCGGGGGTCACCACGTAAAAGGTACGTTC
+GTCGTTTCCCCAAGTGTCCCACTGCAACTCGCAGGCCAGTCGGCAGGCTTCCTTAACAAGGGCTTCCTCC
+CCCGAGAGATGCATAACTAGCATAAAGGGGACCAGCTGTTTACCAAAGGCTCCCATCCACGTGTAGGTTT
+CGACGTCGTAGGTGACAAAGAGGCGTTCGACGCGAGGATGAGAGCCGATCGGAAAGAAATTGATTTTCTG
+CCACCAGCCGGAGGAGTGGGCGTTGATATGATGAAAGTAGAAGTCTCTCCGGCGGACCGTGCATTCGTGC
+TGATATTTGTAAAAGCGGGCGCAATACTCGCAGCGTTGCACGCTCTGCATCTCTTGAATGAGGTGTACCT
+GTCGCCCACGTACGAGAAATCGGAGAGGGAAGTTGAGAAAATCCTCAGTGTCTTGCCTTTCACCCTCGTC
+GCCCTCTTCTGCACCTGCACGCTCTTGCTGTGGGTGGATGATGGAGGGAACGACAACGCCCCGCGAGCCA
+CAGGTCCAGACCTCAACGCGGGGCACCTTCAGCTTGAGAGCAAGAGTGCGGATTTGGGAACTGTCCAGGG
+AGTCCAGGAAGGCCTCGTTCAGATCAGCGGGCACAGATCGAAGGTTGACTTGCAGGAGACGGGTAAGGGC
+CGATGCCAGGCGGCGATGAAACTTGATTTCCATTGGTGAGTTGGTAGCAGTGTCAATAGCATACAGAAGA
+CCTTGTCCGCGGGGAGCTACAATGGTACCACGCAGGCGAGAGTTGGGGGTAAGGCTTACATTGTTCGCTG
+CGGGCGGGCGTCCGGAGGCAGTGGTGGATGGGGGTTCGCCTGGAGAGGCGGTAGCGGCACGTCGGCGTGG
+AGCTCGGGTAGCGGTTGGTGCTGCGCCCGCAGTTGACTGGCGTACGCGACGACGCGGCGGTTGAGGTCCT
+GAATGTGTCTCCGCTGGGAGAAAACCACCGGCCCTCGGACTCGGAACCTGAAAGAGAGTTCAACAGAATC
+AATATCGGCATCGTTGACCGCGGCTTGTCGCAGAATCTCCTGCACGTCGCCAGAGTTGTCTTGGTAGGCA
+ATCTCCGACATAAACTGGTCAATCTCTTCGTCCTGGAGTTCTCCGTGTCCTGCGCGCTCCACCGTGGCTG
+CAAGGTCATTAGAGATGCGCCTCATGAGCTGGGAGAAAGCGTTAAGACCGTTTTCGTTCCACACGCGGCT
+GTAGACCACGTCGCCAACAGTGTTTCGGGCGCGCATCACCACTTGTGCAATGTTCAGTTCTACGTGTCTT
+GCAAAGACGGCGTAGTTGCGTAGACGCTGGAAGAGGTAGTTGAGCGTGGTGGCAATGTGCTCGCAAACAA
+AGAAGTACATGACCCAGCGCCGAAGCGTCATTTCGTTAATATCTCCGAGGGCTTCCAAGCGGTCCATTGC
+CTCGTAGAAGTCAACCGCGAAGTTGAAGAACTGGGAGTTGCGCGCCGCAAACGTCAACTCCTCTTGCAGG
+AGCCGAATTGCCTCGGCTACAGTTTCGCGCACCTCTTGTTCGAAGGCTGCCGGCGTTTCCTCGATTTCCA
+TAAACTCCTCTTCCTCCACAGCGGGACCCTCGGGGCTGACCGGCGCTGGGACGGGTTGTCGTCGACGACG
+GCGCCGGACGGGCAGCCGGTCAATGAAACGTTGAATCATTTCTCCGCGACGGCGACGCATGGTTTCGGTG
+ACGGCGCGCCCGTTTTCTCGGGGGCGAAGTTCAAAGACGCCGCCTTGCATGCCCGAGCCGGAGAGGGGAG
+GAAGTAGGTGGGGCCCCTGAGGCAGCGACAGGGCGCTAACTGTGCATCTTATCATCTGTTGCATAGGTAG
+AGACTGCCAAGCCTCATTGAGCGAGTCCAGTTGGACGGGATCAGAGAATTTTTCGAGGAAAGCTTCCAGC
+CAATCGCAGTCGCAAGGTAAGCTAAGGACGGTGGCATGAGGGATTCTAAGGGAGGCAGCAGAGGAGGTGA
+TGCTGCTGATGAGGAAATTGAAGTAGGCGGTCTTCAAACGGCGGATGGTGGCAAGGAGAGTGACGTCTTT
+TGGTCCGGCCTGTTGAATTCGCAGGCGGTCTGCCATGCCCCAAGCTTCGTTCTGACATCGGCGCAGGTCC
+TTGTAATAATCTTGCATGAGACTTTCTACGGGTATTTCCAATTCCCCTCGGTCGGCCATGCGTGTGGAAC
+CAAACCCGCGCAGGGGCTGCAGCAGGGCCAAGTCGGCAACTACGCGTTCGGCGAGCACAGCCTGCTGTAT
+CTGAGTTAAAGTGTTTTGGAAATCATCCAAGTCCACAAAGCGGTGGTAGGAACCGGTGTTGATGGTGTAC
+GTGCAGTTGGCCATGACGGACCAGTTGACTACTTGCATCCCGGGCTGTGTAATCTCGGTATACCTAAGGC
+GCGAGTAGGCTCTGGATTCAAAAACGTAGTCGTTGCAGGTGCGAACCAAGTACTGGTAGCCAACAAGGAA
+GTGGGGCGGCGGCTCGCGGTAAAGGGGCCAGCGAAGTGTGGCGGGCGTACCGGGGGCCAGGTCCTCCAGC
+ATAAGGCGATGGTAGTGGTAAACATATCGAGAGAGCCAGGTGATGCCGGCGGCGGTAGTGGCGGCGCGGG
+CGTATTCGCGAACGCGGTTCCAGATGTTACGCAACGGGGAGAAGCGTTCCATGGCGGGCACGCTTTGACC
+AGTCAGACGGGCGCAATCTTGTACGCTCTAGATGAAAAAACAGAGAGCGGTCACGGACTTTCCTCCGTAG
+CCTGGAGGACAGACCGCCAGGGTGCAGTGGCAAACAACCCCCGGTTCGAGACCGGCTGGATCTGCCACTC
+CCGACGCGCCGGCCGTGCGTCCACGACGGAAACCCCGCCGAGACCTAGCCGCGGTCCCTGGATCTCCAGA
+TACGGAGGGGAGTCTTTTTGTTGTTTTTTGTAGATGCATCCGGTGTTGCGACAGATGCGTCCGACGGCGC
+CTCCAACACAGCCGCCGCTCCCGCCCCCCACTAGCGCCCCTGCAGCCGTTGCTCTCTCCGGAGCCGGCGG
+TGGCAACCCTGAGGAGGAGGCCATCCTGGACCTGGAAGAGGGCGAGGGGCTGGCCCGCTTGGGGGCGCCA
+TCCCCCGAGCGCCATCCCCGCGTGCAACTTAAAAAGGACTCACGCCAGGCGTACGTACCGCCTCAGAATT
+TATTCAGGGATCGCAGCGGGCAGGAGCCCGAAGAGATGAGGGATCGCAGGTTTTACGCGGGGCAGGAGCT
+GCGGGCCGGTTTTAACCGCCAACGGGTGCTACGCGCCGAAGATTTTGAACCCGACGAACATAGCGGAATA
+AGTCCGGCACGGGCGCACGTGTCGGCGGCCGATTTGGTAACCGCGTACGAGCAAACGGTGAACGAGGAGC
+GCAACTTTCAGAAAAGTTTTAACAATCACGTGCGCACCCTGGTGGCGCGCGAGGAGGTGGCCATTGGGCT
+GATGCATTTGTGGGACTTTATGGAGGCGTACGTGCAAAATCCTTCGAGCAAGCCGCTGACGGCGCAGCTG
+TTTTTGATTGTGCAACACAGCCGGGACAACGAGGCTTTCCGCGAGGCCATGCTGAATATTGCGGAGCCTG
+AGGGTCGCTGGCTTTTGGACCTGGTTAATATCCTTCAGAGCATTGTGGTACAGGAGCGCAGTCTAAGCCT
+GGCCGACAAGGTGGCGGCCATTAATTACAGCATGCTTAGCCTCGGCAAGTTTTACGCCCGCAAGATTTAC
+AAAACCCCCTATGTGCCCATAGACAAGGAGGTTAAAATAGATAGCTTTTACATGCGCATGGCGCTAAAGG
+TGTTAACGCTGAGTGACGATCTGGGGGTGTACCGCAACGACCGTATTCACAAAGCTGTGAGCGCCAGCCG
+CCGTCGCGAGCTTAGCGACCGCGAACTAATGCACAGCCTGCGTCGGGCTCTAACGGGCACCGGCACTGAT
+GCCGAAACTGAATCTTACTTTGACATGGGGGCGGACCTGCAATGGCAGCCCAGCGCCCGGGCCCTGGAGG
+CGGCTGGTTATGTTGGCGCGGAAGAAGATGAGGAGGACTATGAGGACGAGCCCTGATCAGCCAGGTGGTG
+TTTTTGTAGATGCTGCGTTCGACGGCGGTGGCGGACGGGTCGCAGCAGGTGAATCCCGCTATGTTGGCGG
+CCCTGCAAAGCCAACCTTCGGGCGTGACACCCTCAGACGACTGGGCGGCGGCCATGGATCGCATCCTGGC
+CCTAACCACCCGCAATCCCGAAGCCTTCAGGCAGCAGCCCCAGGCCAACCGCTTTTCGGCCATTTTGGAA
+GCCGTGGTTCCTTCTCGCACTAACCCTACCCACGAAAAGGTGTTGGCGATTGTAAACGCTCTGGTAGAAA
+GCAAAGCCATCCGCAAGGATGAGGCGGGACTGATATATAATGCCTTACTGGAGCGGGTAGCGCGCTATAA
+TAGCACCAACGTGCAGGCCAACCTAGACCGACTGACAACGGACGTGAGAGAGGCGGTGGCGCAGCGGGAA
+CGCTTTATGCATGACGTTAACCTAGGATCCCAAGTGGCCCTTAATGCTTTTCTGAGCACATTGCCAGCTA
+ATGTGCCGCGCGGGCAGGAGGACTATGTCAGCTTTATCAGCGCGCTTCGCCTCCTGGTGGCGGAGGTGCC
+CCAGAGTGAGGTGTACCAGTCCGGGCCAGACTACTTTTTCCAAACTTCACGGCAGGGTTTGCAAACTGTA
+AACCTAACACAGGCGTTTAAAAACTTGCAAGGAATGTGGGGCGTGCGAGCCCCCGTGGGGGACCGAGCCA
+CCATCTCCAGCTTATTGACGCCGAACACTCGGTTGTTGCTGTTGTTGATAGCGCCATTTACCAATAGCAG
+CACCATTAGCCGTGACTCGTACCTTGGTCATCTAATCACGCTGTACCAGGAGGCTATTGGCCAGACGCAG
+GTGGACGAACAGACCTTCCAGGAAATCACCAGCGTGAGTCGGGCTCTTGGTCAGCAAGACACCAGTAGCT
+TGGAAGCCACGCTGAACTTTTTGCTAACCAACCGCCGGCAAAAAATTCCATCGCAATTTACTTTAAATTC
+TGAAGAGGAACGTATTTTGCGCTATGTGCAGCAGTCCGTCAGCTTGTATTTAATGCGCGAGGGGGCTACT
+GCGTCGTCGGCTCTGGACATGACGGCACGTAACATGGAACCGTCGCTATACTCGTCCAACCGGCCTTTTA
+TTAACCGCCTGATGGACTATCTGCACCGCGCGGCGGCCATGAACAGCGAGTACTTCACCAATGCCATTCT
+TAACCCGCACTGGATGCCACCGTCCGGTTTTTACACGGGCGAGTTTGACGTGCCTGAGGGCGACGACGGA
+TTTTTGTGGGATGACGTGTCCGAAAGCATTTTCGAACCAATGCGTTCCCGTAAAAAGGAGGGCGGAGACG
+AGCTGCCGCTGTCGTTAGTGGAGGCAGCTTCTCGAGGCCAAACCCCCGTTCCCAGTCTGCCATCGCTGAC
+CAGCAGCAGCAGCGGACGGGTGTTTCGACCCCGTTTGCCCGGGGAGTTGGACTACCTCAGCGATCCCCTA
+TTGCGACCGGCCCGGAAAAAAAATTTTCCCAACAACGGGGTGGAAAGCCTGGTAGATAAGATGAATCGCT
+GGAAAACCTACGCCCAGGAGCAGCGGGAAGAGAGGCAGCCCCGCCCACTGACCGGCACCTTCAGTCGTTG
+GCGCCGGCGGGAAGAGGACGCTTACGACTCGGCCGATGATAGTAGCGTGTTGGACTTGGGGGGAACCGGC
+GCCGCTTCTGATCCCTTTGCTCATCTGCGGCCTCAGGGTCAACTGGGTCGTTTGTATTAAAAAAATAAAA
+TAAAAAGAAATCCACTTACCAGAGCCATAGCAACAGCGTCCGTCCCTTTGTCTGTTTTTTCCCTCTTCCC
+GGTAGTCAAAATGAGACGTGCGGTGGGAGTGCCGCCGGTGATGGCGTACGCCGAGGGTCCTCCTCCTTCT
+TACGAAAGCGTGATGGAAACAGCGGATTTGCCGGCAACGCTGCAGGCGCTCCACGTCCCTCCCCGTTACC
+TGGGGCCTACGGAAGGGCGGAACAGCATACGTTACTCGGAGCTGGCGCCTCTATACGACACCACCCGGGT
+TTACCTGGTGGACAACAAGTCGGCGGACATTGCCTCCCTGAACTACCAGAACGACCATAGTAACTTTCAA
+ACCACGGTGGTACAAAATAATGACTTTACCCCGACAGAGGCCGGTACCCAGACCATCAATTTTGACGATC
+GCTCCAGGTGGGGCGGCGACCTGAAAACCATTTTGCGCACCAATATGCCCAACATCAATGAGTTTATGTC
+TACCAACAAGTTTCGGGCGCGGGTGATGGTAGAAAAAGTGAACCGGAAAACCAACGCTCCTCGTTACGAG
+TGGTTCGAGTTCACTTTGCCAGAGGGCAACTATTCGGAAACTATGACTATAGACCTTATGAATAACGCGA
+TCGTAGACAACTACTTAGCAGTAGGACGTCAGAACGGCGTGCTGGAAAGCGACATTGGGGTGAAGTTTGA
+CACGCGCAACTTCCGGTTGGGTTGGGATCCCGTAACCAAGTTGGTGATGCCCGGCGTGTACACCAACGAG
+GCCTTTCACCCAGACATTGTTTTGCTACCTGGTTGCGGCGTGGATTTCACGCAAAGTCGTCTGAACAACT
+TGCTAGGAATACGCAAGCGAATGCCCTTTCAAAAAGGTTTCCAAATCATGTATGAGGATTTGGAGGGCGG
+CAACATTCCTGCTCTATTAGATGTGGAAAAGTACGAAGCTAGCATAAAAGAAGCACAGGAGATCCGTGGA
+GCCGACTTCAAGCCCAATCCTCAAGACTTGGAAATCGTGCCCGTGGAAAAAGACAGCAAGGAAAGAAGTT
+ACAATCTCCTAGAGGGAGATAAAAATAACACTGCCTACCGCAGCTGGTTTTTGGCCTACAACTACGGAGA
+TGCAGAGAAAGGAGTAAAGTCTTGGACCTTGTTAACAACCACGGATGTGACCTGTGGGTCGCAGCAGGTG
+TACTGGTCCCTTCCCGACATGATGCAAGATCCAGTAACGTTTCGACCGTCCACGCAAGTCAGCAACTACC
+CTGTAGTGGGGGTGGAATTACTGCCAGTACATGCCAAGAGTTTTTACAACGAGCAGGCCGTGTATTCTCA
+GCTTATTCGCCAGTCCACCGCGCTTACGCACATCTTCAATCGTTTTCCTGAGAATCAGATACTAGTGCGT
+CCGCCCGCTCCGACCATTACCACCGTCAGTGAAAACGTTCCCGCCCTCACAGATCACGGAACCCTGCCGC
+TGCGCAGCAGTATCAGTGGAGTTCAGCGCGTGACCATCACTGACGCCCGCCGTCGGACCTGCCCCTACGT
+GCACAAAGCTCTGGGCATAGTTGCTCCCAAAGTGCTGTCTAGCCGCACGTTTTAACATGTCCATTCTTAT
+TTCGCCCGACAACAATACCGGCTGGGGACTTTGCTCCGCCGGCATGTACGGCGGCGCCAAACGGCGTTCT
+AGCCAACACCCTGTTCGCGTGCGCGGACATTACCGCGCCCCCTGGGGGGCTTACACCCGCGGTGTTATCT
+CAAGACGTACCACCGTTGATGACGTCATTGACTCCGTGGTAGCCGATGCCCAACGCTACACGCGGCCCGT
+TGCCACGTCCACCGTGGATTCCGTGATTGATAGTGTGGTGGCCAACGCCAGGCGTTACGCGCAACGCAAG
+AGACGTTTGCAACGTCGCCGTCGTCGGCCTACTGCCGCCATGACTGCCGCTCGGGCGGTACTAAGGCGGG
+CACAAAGGATAGGACGTCGGGCCATGCGCCGAGCGGCTGCTTCTGCCAGTGCAGGTCGGGCCCGTCGTCA
+GGCCGCCCGTCAGGCCGCGGCGGCTATTGCCAGCATGGCTCAGCCCCGCCGGGGGAATATCTACTGGGTG
+CGAGATGCGTCGGGCGTGCGGGTGCCGGTGCGAAGCCGTCCCCCTCGGAGTTAGAAGACGCGTTCACAAA
+ATGGACGAAGACTGAGTTTCCCTGTCGTTGCCAGCCGGTCCCCGTCAGCATGAGCAAGCGCAAGTTCAAA
+GAAGAGCTGCTGGAGGCCCTTGTGCCTGAAATCTATGGCCCTGCCGCGGACGTCAAGCCCGACATTAAGC
+CTCGCGTGCTCAAGCGGGTTAAAAAGCGAGAAAAAAAAGAGGAAAAGGAGGAAGCAGGGTTGCTAGACGA
+CGGTGTTGAGTTTGTGCGGTCCTTTGCCCCCCGGCGGCGGGTGCAGTGGCGGGGACGTAAAGTCCAGCGC
+GTGCTTAGACCCGGCACTACTGTAGTATTTACTCCCGGAGAGCGGTCCGTCACGCGGGCCTTAAAACGGG
+ATTACGATGAGGTTTACGCTGACGAAGACATTCTTGAGCAGGCCGCCCAACAGGTTGGGGAATTCGCCTA
+CGGCAAGCGCGGCCGCTACGGAGAGTTGGGACTCTTGCTGGACCAAAGCAACCCCACGCCAAGCCTGAAG
+CCCGCAACGGCGCAGCAGATCCTTCCCGTGACAGAAATCAAGCGGGGCGTCAAGAGGGAAAACAAAGACG
+AATTGCAGCCCACCATGCAACTCATGGTGCCAAAGCGGCAAAAGCTTGAGGAGGTGTTGGAGAACATGAA
+AGTGGATCCCAGCGTTGAGCCGGAAGTTAAAGTGCGCCCCATTAAAGAAATAGGGCCCGGACTTGGCGTG
+CAGACGGTGGATATCCAAATCCCCGTGCGTGCGTCTTCGTCCACCGTTAGCACTGCGGTGGAGGCCATGG
+AAACGCAGCCTGAGCTGCCAGAGGCCGTAGCCCGTGCGGTTGCGGCCACGCGAGAGATGGGTTTGCAAAC
+GGATCCGTGGTACGAATTCGTGGCCCCTACCAGCCGTCCACGCTCCCGGAAATACACAACCGCTAATTCG
+ATTTTACCGGAGTATGCCTTGCATCCATCCATCACGCCAACGCCCGGTTACCGCGGAACAACCTTCAAAC
+CCAGCCGCACTCGCTCCACCCGCCGTCGTCGCTCTGTCCGCCGCCGCTCAAGGCGCACGGCCCCCATCTC
+TGTGCGTCGCGTAACCCGCCGTGGACGCACGCTGACCCTTCCCAACGCGCGTTACCACCCTAGCATTCTC
+GTTTAATCCGTGCGCTGCCGTTTTTTCAGATGGCTTTGACTTGCCGGTTTCGCATTCCCGTTCCGTCCTA
+CCGAGGAAGATCTCGCCGTAGGAGAGGCATGGCGGGCAGTGGCCGCCGACGCGCTTTGCGCAGGCGAATA
+AAAGGCGGATTTTTGCCCGCGTTGATTCCCATCATCGCCGCCGCCATAGGCGCAATCCCAGGCGTGGCCT
+CCGTGGCCTTGCAAGCAGCTCGCAAACAATAAAAGAAGGCTTAACACTGACTTCCTGGTCCTGACTATTT
+TATGCAGACAAGACATGGAAGACATCAATTTTGCGTCGCTGGCTCCGCGGCACGGCTCGCGGCCGTTTAT
+GGGCACCTGGAACGAGATCGGCACCAGCCAGCTCAACGGGGGCGCTTTCAGTTGGAGCAGCCTGTGGAGT
+GGCATTAAAAACTTTGGGTCCTCCATTAAGTCATTTGGTAACAAGGCCTGGAACAGTAACACAGGTCAAA
+TGCTCCGGGATAAGCTAAAGGACCAAAACTTTCAACAAAAAGTCGTGGACGGGCTGGCTTCCGGCATTAA
+CGGCGTGGTGGATATAGCCAACCAGGCCTTGCAAAACCAAATCAATCAGCGGCTGGAAAATAGCCGCCAG
+CCTCCGGTGGCTCTGCAGCAGCGCCCGCCTCCCAAAGTCGAGGAGGTAGAAGTGGAGGAAAAACTACCGC
+CTTTGGAGGTGGCACCCCCCCTGCCTAGTAAAGGCGAAAAGCGGCCGCGACCGGATCTGGAGGAAACCCT
+AGTTGTGGAATCCCGCGAGCCCCCCTCGTACGAGCAGGCTTTGAAAGAGGGCGCTTCACCTTATCCCATG
+ACCAAACCTATTGGTTCCATGGCCCGACCTGTATACGGGAAGGAAAGCAAACCCGTGACCTTAGAACTAC
+CTCCACCCGTGCCCACCGTTCCGCCCATGCCGGCTCCGACGCTTGGCACCGCCGTTTCTCGCCCCACCGC
+CCCCACTGTTGCCGTGGCTACCCCCGCCCGCCGCCCTCGCGGGGCTAACTGGCAGAGCACTCTTAACAGC
+ATTGTGGGTCTGGGAGTAAAAAGCCTGAAACGCCGCCGGTGCTATTAAAATGGAACCAAGCTAAATGCCA
+TTATTGTGTACGCCTCCTGTGTTACGCCAGAGAGCCGAGTGACACGTCACCGCCAAGAGCGCCGCTTGCA
+AGATGGCCACCCCCTCGATGATGCCGCAATGGTCTTACATGCACATCGCCGGGCAGGACGCCTCGGAGTA
+CCTGAGCCCGGGCCTGGTGCAGTTCGCCCGTGCCACCGATACCTACTTCAGCCTGGGGAACAAGTTCAGA
+AACCCCACCGTGGCTCCCACCCACGATGTAACCACAGACAGGTCGCAGCGACTGACGCTGCGCTTCGTGC
+CCGTCGACCGCGAGGAAACCGCCTACTCTTACAAAGTGCGCTTTACGCTGGCCGTGGGCGACAACCGGGT
+TTTGGACATGGCCAGCACCTACTTTGACATCCGCGGCGTGCTGGATCGTGGTCCCAGCTTTAAACCCTAT
+TCGGGCACTGCATACAACTCCCTGGCCCCCAAAGGTGCTCCCAATCCTAGCCAGTGGACAAACCAAAACA
+AAACAAACTCCTTTGGACAAGCTCCCTATATAGGACAAAAAATCACCAATCAGGGCGTGCAAGTGGGCTC
+AGACTCCAACAATCGCGATGTGTTTGCCGATAAAACGTACCAACCGGAGCCTCAAGTGGGGCAGACGCAA
+TGGAACATTAATCCAATGCAAAACGCTGCGGGAAGAATACTAAAACAAACCACGCCCATGCAGCCATGTT
+ATGGGTCATACGCTAGACCAACAAACGAAAAAGGAGGTCAAGCCAAGCTGGTAAAAAATGACGACAATCA
+GACCACAACAACAAACGTAGGTTTAAACTTTTTTACCACTGCCACTGAAACCGCTAATTTTTCACCAAAG
+GTGGTTCTGTACAGCGAAGATGTTAACTTAGAAGCGCCCGATACCCACCTTGTGTTTAAGCCAGATGTCA
+ACGGCACAAGTGCCGAGCTTTTACTGGGACAGCAGGCCGCTCCCAATCGACCTAATTACATTGGTTTTAG
+GGACAACTTCATTGGTTTGATGTACTACAATTCCACTGGCAACATGGGAGTGCTGGCCGGGCAAGCTTCT
+CAGCTCAACGCAGTGGTGGACTTACAAGATAGAAACACGGAGCTGTCTTACCAGTTAATGCTTGACGCTT
+TAGGGGATCGGAGTCGATACTTCTCCATGTGGAACCAGGCAGTGGACAGCTATGACCCAGACGTGAGAAT
+TATTGAAAATCATGGCGTGGAAGACGAGCTCCCCAACTATTGCTTTCCTCTTAATGGGCAAGGAATATCT
+AACAGTTACCAAGGCGTAAAGACTGACAATGGAACTAACTGGTCTCAGAATAATACAGACGTCTCAAGCA
+ACAACGAAATTTCCATTGGCAATGTGTTTGCCATGGAGATTAATCTGGCGGCTAACTTGTGGAGAAGCTT
+CTTGTACTCAAATGTAGCCCTGTACTTGCCTGACTCTTACAAAATAACCCCCGATAACATTACTTTACCC
+GACAACAAAAATACATATGCCTACATGAACGGTCGGGTTGCCGTCCCCAGCGCCCTGGATACATACGTGA
+ACATTGGGGCGCGGTGGTCTCCAGACCCCATGGACAACGTTAATCCCTTTAACCACCACCGCAATGCTGG
+TCTGCGCTACCGTTCTATGCTCCTGGGTAACGGCCGCTACGTGCCTTTTCACATCCAAGTGCCCCAGAAA
+TTTTTCGCCATTAAAAATCTCCTGCTCCTGCCCGGGTCCTACACCTATGAGTGGAACTTCCGGAAGGATG
+TTAACATGATTCTCCAAAGCAGTCTCGGTAACGACCTCAGGGTCGATGGAGCCAGCGTCAGGTTTGACAG
+CATTAACCTGTATGCCAACTTTTTCCCCATGGCTCACAACACCGCTTCCACCTTGGAAGCAATGCTTCGT
+AATGATACCAACGATCAGTCTTTCAACGACTACCTCTGCGCTGCAAACATGCTTTACCCCATACCCGCCA
+ACGCTACTAGCGTGCCCATTTCTATTCCTTCGCGAAATTGGGCTGCTTTTCGGGGGTGGAGTTTTACTAG
+ACTAAAAACTAAAGAAACCCCCTCTTTGGGGTCCGGGTTTGATCCATATTTCACCTACTCTGGCTCCGTC
+CCATACTTGGATGGCACCTTTTACCTGAACCACACTTTTAAAAAGGTGTCCGTTATGTTCGACTCCTCTG
+TGAGCTGGCCTGGTAACGACCGACTACTTACTCCCAACGAGTTTGAAATCAAACGAACCGTGGATGGGGA
+AGGATACAACGTGGCTCAATGTAACATGACCAAGGACTGGTTCCTCATACAAATGCTCAGTCACTACAAT
+ATTGGCTACCAGGGTTTCCACGTACCAGAAAGCTACAAGGACAGGATGTACTCCTTTTTCCGAAACTTCC
+AACCCATGAGCCGCCAGGTGGTAGACACTACCACCTACACGGAGTATCAGAATGTAACTCTCCCTTTCCA
+GCATAATAACTCTGGCTTTGTAGGATACATGGGACCTGCCATACGGGAGGGACAAGCTTACCCCGCCAAC
+TATCCATACCCCCTTATTGGTCAGACGGCCGTACCAAGCCTGACTCAGAAAAAATTTCTTTGCGATCGTA
+CCATGTGGCGCATTCCCTTTTCCAGCAACTTTATGTCTATGGGGGCCCTGACCGACCTGGGGCAAAACAT
+GCTGTACGCCAACTCCGCCCACGCGCTCGACATGACTTTTGAGGTGGACCCCATGGATGAGCCCACACTT
+CTCTATGTTCTGTTCGAAGTTTTCGACGTTGTGCGCATCCACCAGCCGCACCGCGGCGTCATCGAGGCCG
+TCTACCTGCGTACGCCGTTCTCGGCCGGTAACGCCACCACATAAGAAGCCAGCCAATGGGCTCCAGCGAG
+CAGGAGTTGGTCGCCATCGTGCGCGAACTGGGCTGCGGACCTTACTTTCTGGGCACGTTTGACAAACGCT
+TTCCGGGTTTTATGGCACCGCATAAGCTGGCGTGTGCCATTGTTAACACGGCGGGCCGCGAAACCGGCGG
+CGTACACTGGCTGGCCCTGGCCTGGAACCCAAAGAACCGTACCTGCTACCTCTTCGACCCATTTGGCTTT
+TCGGACGAGCGCCTCAAACAGATTTACCAGTTTGAGTATGAAGGTCTCCTAAAGCGTAGTGCGTTGGCCT
+CAACCCCGGACCATTGTATCACCCTAATTAAGTCCACCCAAACTGTTCAAGGACCGTTTTCGGCGGCCTG
+CGGCCTTTTCTGCTGCATGTTTTTACATGCTTTTGTAAACTGGCCCACCAGTCCCATGGAGCGCAACCCC
+ACCATGGACCTTCTTACCGGCGTTCCAAACAGCATGCTTCAAAGCCCCCAGGTTGTACCCACCCTGCGTC
+ACAACCAGGAGCGGTTGTACCGTTTCCTGGCGCAACGTTCTCCCTACTTTCAGCGTCATTGCGAGCGTAT
+CAAAAAAGCCACCGCGTTTGACCAAATGAAAAACAACATGTAACGGTTCAATAAAAGCTTTTATTGATTC
+AAAAAATTCATGCATGCAGACTTTTTATTTTAAAATGGTTCTTTCTCCCCATCGCCGTGGCTGGCGGGCA
+AAGCTACGTTGCGATACTGCAAACGAGAGGACCACTTAAATTCTGGAATCAGCATCTTAGGAAGGGGGCC
+ATCGACGTTCTCTCCCCACAGCCGTCGTACAAGTTGCAAAGCTCCCAAAAGGTCAGGTGCAGAAATTTTG
+AAATCACAGTTGGGACCTTGGCCACCACGGGAGTTGCGGTATACGGGGTTAGCGCACTGGTAAACCAGCA
+CACAGGGATACTGGATACTGGCAAGAGCCACCTTGTCGGTTACTTCTTCAGCTCTAAGACTGTCAACATT
+GCTTAGAGCGAAAGGGGTGGCTTTACACATTTGCCGACCCAATTGGGGCACACCGGTGGGCTTGTACAGG
+CAGTCGCAGCGCATCACCATTAATAGGCGTTTTAGCCCGTTTTGCATTTTTGGATATTCGGCTTGCATAA
+AAGCTTCTATCTGCAAAAAAGCCGTCTGAGCCTTTGTTCCTTCCGAGAAAAACAGACCGCAGGACTTGGC
+AGAAAACACATTGGTGGCACAGCTCACGTCTTCTACACAACAACGGGCATCGTCATTCTTCAGTTGAACC
+ACGCTGCGCCCCCACCGGTTTTGTACCACCTTGGCTCGACTCGGGTGCTCCTTTAACGCCCGCTGAGCGT
+TCTCGCTCGCTACATCCATTTCCACCAACTGCTCTTTTTGAATCATTTCCAGGCCATGATAACAGCGTAG
+CACTCCCTCTTGCTCGGTGCAGCCGTGAAGCCAAATCGCGCAACCAGTGGGCTCCCATTCATTGTTTTTT
+ACCCCGGCGTACGACTCCACGTAGGCTCTCAAAAAACGTCCCATCATTTCCACAAATGTCTTGTGGCTGG
+TGAAGGTGAGAGGGAGGCCGCGATGCTCCTCGTTAAGCCACGTTTGGCAAATTTTGCGATAAACGTTGCT
+TTGTTCGGGTAGGAACTTGAAGCCATTCTTCTCTTCGGCCTCCACATGATACTTTTCCATTAGCTTTATC
+ATTAAATCCATGCCTTTCTCCCAGGCGGAAACCAAGGGCTCTGCCTGCGGATTAAGAACCACTGATGTAA
+CAGCTTTGGAAGTGCTAGGCTCTTCTTCCTCGTTGTTTTCCTCTGACGGGGGAGGCACACCTTTGGGCTC
+CAAGCGTCTTACATATCGCTTGCCACTGGCCTTTTGAACGACCTGCACGCCGGGGTGACTGAACCCGGTG
+TACACCACCTCTTCTTCTTCCTCCTCGCTGTCTGGAACCACTTCGGGAGACGGAGGCAAAACTGGAACGC
+GATCCGGCACTTGAACATTCTTGCGCAACTTCTTTTTGGGAGGAAGTGACGGGGCCCGTTCTGGACTCGT
+CTCCTGCAAGTAGGGAGTGATGGTGGGGAGTTCTTGCTGACGGCCGGCCATGCTTTACTCCTAGGCGAGA
+AAATATGGAGGAGGATCTTAAGCTGCAGCCAGACTCCGAAACCTTAACCACCCCCAACTCTGAGGTCGGC
+GCCGTCGAGCTAGTGAAACATGAGGAGGAAAATGAGCAAGTGGAGCAAGATCCGGGCTATGTAACGCCCC
+CCGAGGACGGCAAGGAACCAGTGGCCGCACTCAGCGAACCCAACTATTTGGGAGGGGAGGACGACGTGCT
+CCTGAAGCACATAGCGCGACAGAGCACCATTGTACGAGAAGCCCTCAAGGAATGCACACAGACTCCGCTG
+ACGGTGGAGGAATTAAGCCGCGCGTATGAAGCTAACCTGTTTTCGCCGCGTGTACCGCCAAAAAAGCAGC
+CTAACGGCACCTGCGAAACAAACCCGCGCCTCAATTTTTATCCCGTCTTTGCGGTGCCTGAAGCACTGGC
+TACTTATCACATCTTTTTCAAGAACCAACGCATTCCCCTCTCTTGCCGCGCCAACCGTACACGCGGTGAC
+GGCCTTTTGCATCTCAAAGCTGGAGCTCACATACCTGAGATCGTTTCTTTAGAAGAAGTACCCAAGATTT
+TTGAAGGTCTTGGCAAGGACGAAAAACGGGCGGCAAATGCTCTGCAAAAAAACGAAACCGAGAATCAGAA
+CGTGTTGGTAGAGCTGGAGGGTGACAACGCGCGTTTGGCCGTACTCAAACGCACCATTGAAGTTTCACAC
+TTTGCTTATCCCGCGCTAAATCTTCCTCCCAAAGTAATGCGTTCTGTTATGGATCAAGTGCTTATTAAGC
+GAGCAGAGCCCATTGATCCCCAACAACCCGACCTAAACTCTGAGGACGGACAACCCGTAGTCTCAGACGA
+CGAGCTTGCTCGCTGGCTAGGTACCCAGGATCCCTCAGAGCTGCAAGAGCGGCGAAAAATGATGATGGCA
+GCAGTTTTGGTTACAGTGGAATTGGAATGCCTGCAGCGCTTCTTTGCTAACCCTCAAACACTGCGCAAAG
+TCGAGGAGTCCCTGCACTATGCCTTCCGTCATGGCTACGTTCGTCAGGCCTGCAAGATCTCCAACGTAGA
+GCTCAGCAATCTGATCTCTTACATGGGCATTCTACACGAAAACCGGCTGGGGCAGAACGTTCTTCACTGC
+ACCTTGCAAGGGGAGGCCCGCCGAGACTACGTCCGCGACTGCATCTATCTTTTCCTTATTCTCACCTGGC
+AAACCGCTATGGGAGTCTGGCAGCAGTGCTTGGAAGAGCAAAACCTCCAGGAGCTTAATAAATTGCTAGT
+ACGAGCCCGTCGCGAACTCTGGACGTCTTTTGACGAGCGTACGGTTGCCCGCCAGCTGGCAAACCTCATT
+TTTCCCGAGCGGCTTATGCAAACATTGCAAAATGGTTTGCCAGACTTTGTCAGCCAAAGTATCTTGCAAA
+ACTTTCGCTCCTTTGTACTCGAGCGTTCCGGCATCTTGCCGGCTATGAGTTGTGCTTTGCCCTCCGATTT
+TGTCCCCCTCTGCTACCGCGAATGCCCCCCACCGTTGTGGAGTCACTGCTACCTCCTCCGTCTAGCCAAC
+TATTTGGCCCACCACTCTGATCTTATGGAAGACTCTAGCGGCGACGGACTGCTAGAATGTCACTGCCGTT
+GCAACCTCTGCACCCCTCATCGCTCACTGGTCTGTAACACCGAGCTTCTTAGCGAAACCCAAGTAATCGG
+TACCTTTGAGATTCAAGGGCCAGAGCAACAAGAAGGTGCTTCCAGCCTCAAACTCACGCCGGCGTTGTGG
+ACTTCCGCCTACCTACGCAAATTTATTCCCGAAGACTATCACGCCCACCAAATTAAATTTTATGAAGACC
+AATCACGACCTCCCAAAGTCCCCCTTACAGCCTGTGTTATCACCCAAAGCCAAATTCTGGCCCAATTACA
+AGCTATTCAGCAGGCGCGTCAGGAATTTCTTTTAAAAAAAGGACACGGGGTCTATTTGGACCCCCAAACC
+GGTGAAGAACTTAATACCCCGTCACTCTCCGCCGCCGCTTCGTGCCGTTCGCAGAAACATGCCACCCAAG
+GGAAACAAGCATCCCATCGCGCAACGGCAATCCCAGCAGAAACTACAAAAGCAGTGGGACGAGGAGGAGA
+CGTGGGACGACAGCCAGGCAGAGGAAGTTTCAGACGAGGAGGCGGAGGAGCAGATGGAGAGCTGGGACAG
+CCTAGACGAGGAGGACCTAGAGGACGTGGAGGAAGAAACCATCGCCAGCGACAAGGCACCATCTTTCAAA
+AAACCCGTTCGGAGCCAACCTCCGAAAACTATCCCGCCCCTGCCACCGCAACCATGTTCACTGAAAGCCA
+GCCGTAGGTGGGACACCGTCTCCATCGCCGGATCGCCAACAGCCCCAGCTGGTAAGCAGCCTAAGCGCGC
+ACGACGGGGATACTGCTCCTGGCGAGCCCATAAAAGCAATATTGTCGCATGCCTCCAGCACTGCCGGGGC
+AATATCTCATTCGCACGGCGTTACTTGCTTTTTCACGACGGGGTGGCGGTTCCTCGCAACGTCCTCTACT
+ATTACCGTCATCTCTACAGCCCCTACGAAACGTTTGGAGAAAACACCTCGAGTGCGTAAGACCTCATCCG
+CCATTGCCACCCGCCAGGATTCGCCCGCCACGCAGGAGCTCAGAAAACGCATCTTTCCGACGCTGTATGC
+TATTTTCCAGCAGAGCCGCGGTCAACAGCTGGAACTCAAAGTAAAAAACCGATCACTCCGTTCGCTCACC
+CGCAGCTGCTTGTATCACAGAAGTGAAGACCAACTGCAGCGCACGCTGGAGGACGCCGAGGCACTGTTCA
+ATAAATATTGCTCGGTGTCTCTTAAGGACTAAACACCCGCGCTTTTTTTAGGCGCCAAATTACGTCATTG
+ACATTATGAGCAAAGACATTCCCACGCCTTACATGTGGAGCTATCAGCCGCAAATGGGCCTGGCAGCTGG
+AGCTTCTCAGGATTACTCCAGTCGCATGAATTGGCTTAGTGCCGGCCCCCACATGATTGGGCGGGTAAAT
+GGAATTCGTGCCACTCGAAACCAAATTCTGCTAGAACAGGCCGCCCTAACCTCTACCCCGCGACGTCAGC
+TGAACCCACCCTCTTGGCCTGCCGCCCAGGTTTATCAGGAAAACCCCGCCCCGACCACAGTCCTTCTGCC
+ACGCGACGCGGAAGCCGAAGTCCAAATGACTAACTCCGGAGCGCAATTAGCGGGCGGCGCCAGACACGTC
+AGGTTCAGAGATCGACCCTCGCCCTATTCCTCCGGCTCTATAAAAAGGCTAATCATTCGAGGCCGAGGTA
+TCCAGCTCAACGACGAGGTAGTGAGCTCTTCCACCGGTCCTAGACCTGACGGAGTCTTTCAGCTTGGAGG
+CGCCGGGCGGTCTTCCTTCACTCCTCGCCAGGCGTACTTAACGCTTCAGAGCTCTTCATCCCAGCCTCGC
+TCCGGCGGCATCGGAACCCTCCAGTTTGTGGAGGAGTTTGTACCCTCCGTTTACTTCAACCCCTTCTCGG
+GCGCTCCTGGTCTTTACCCAGACGACTTCATCCCGAACTACGACGCGGTGAGCGAATCTGTGGACGGCTA
+CGACTGAAGACCGATAGTACGGCCGTGACTGCGCGGCTGTAACATCTGCATCGGTGCCGTAACCTTCGCT
+GCTTTACTTAAAAAGCCTGTGATTTCATTTACCACCCCAGCACTTGGATTACATGAAGATCTGTGTTCTT
+TTTTGTGTGCTAAGTTTAACAAGTAGCCTAAGGACTTCACCTACAACCGTTGGTTCCTTACGTCAGCTAC
+AAGATTCCACCAAAGGTACACACCAAACTCTTTATTTTTCTGAGTCTACCACTTCTATTGCACTTAACTG
+TTCTTGTCGTAACCAACTCGTTCAGTGGCGCGCTAACAGACAATTTTGCAAACTATTCTGGGACGCTCTT
+ATTGTTCAAGGAAACAACAGCCTTTGTAACAACTGTACTGCTACTACTTTAACTCTTACACCTCCTTTTG
+TTCCCGGTCCATACTTGTGCATTGGCACAGGAAGAGGGCCTAGCTGCTTTAATCGCTGGACTTTACAAAA
+AGAGAATCTAACCACTACCACCCTCCTTCCCCTTACTACTTATACTTTTTCCCAAAAAAAGAATTACTTT
+TTGCCCATTATTGCACTTTTGGCCTTTGTCTGTGTTATTACCGCTAATTATATTTTAATTTTCAATCTTG
+ATAATTTTTACTAATCATGCTGCTGTTTTTACTTTGCCTTCTTTTCTGCTCTGCCTATGCCGCCGTGCCA
+GAAAAAACCCTTAACAACCTCGTTCGGGTGTACGCCTTAGTTGGTACCAATCTATCCCTTGATTCTATGA
+AAACTCCTCAGATTGACGAACTTACTAGTCTTAGCTGGATCAAACAGGAAGACAATCCTAACAAAAACTT
+ACAATCATTTTTTTTTATTGGTCAAAAACTCTGTGAAGTTACCAAAGACAAAATCACTGTTTTTAACTAT
+TATCCGTTGGAATTTTCCTGCGCTAACGTAACCTTGTATTTGTATAATCTTAAAACTGACGATTCTGGCC
+TCTATAATGGAAAGGCCCATACCAAAGAGCTTGAACATAACACCTATGTTAGGCTTTATGTTATTGACAT
+TCCTCCGCCTAAGTGTGACATTACTTCACGTTACTTAGGCATACAGGCTACTGGGGAAGATTATTGTTTA
+ATTGAAATTAATTGCACTAACTCCAAATACCCAGCTGTGGTTAAATTTAATGGCAGGCAAAGCAACTTCT
+ACCATTATGTTAGCGAAAACGGAAACAAAAAACTTCCAAATTTTTATGAAACACACATCACTGTTAATGG
+TACCCACAAAAGCTTTCACTTTAATTACCCTTTTAACGACCTTTGTCAAACAACCAGCGCTCTACAATAT
+AATGACAATGTCCAGGTAGTCCTCATTCTTCTCATAGTAGTTGGCTTAATAATAATTTCCGCTAGTTTAA
+TATTGCTTTATTGCCACCGCAAAAAAATCAAGGCCAAAGTTCAACATCAACCAGTGCATATTTGTTTAGA
+AAAATAAAAATTTTTTTCTTTTCAGTATGGTAACTCCTCTTCTCCTGCTTGTCTGTCTGCCAATTATCTA
+CGCCTCCACCACCTTCGCCGCAGTCTCCCACCTTGATACGGATTGTCTTCCCGCCTTGCTGACTTATCTC
+ATCTTCACCTCTGTTTGCTGCACTGCCATCTGCAGCATTGCCACTTTTTTTGTGGCCATTTTCCAAACTG
+CGGACTACCTATACGTTAGAGTGGCATACTATCGTCATCATCCCCAATATAGGAACCACGAGGTGGCTAC
+CCTTCTGTGCCTGTCATGAAAGTTCCTCTTCTCTGTCTTATCCTCCTTCACAAAGTCCTGGCCAACTGCC
+ACCTCCACCGGCCCACCGAGTTCCTGCGCTGCTACTCAACAGAAACCTCTTCCTTTTGGCTGTACTCCAT
+TATTTTTATTTTGATTTTCTTTGCCACCTTTTTGGGATTACAAATTTACGGGTGCCTTCACCTGGGCTGG
+ATGCATCCTCCCAACAACCTACCCAGATTTCCTGGTTTCCTATTACAGCCCCCACCGCCCCCACCGGCTC
+CTGTGCAGCGCGCTCCATCAGTTATTAGCTACTTTCATCTTAACTCTGAAGATGTCTGACCAACTAGAAA
+TCGACGGGCAGTGCACTGAGCAGCTTATCCTTGCTCGGCGAAAACTCAAACAACAAAATCAGGAACTGTT
+CAACCTTCAAGCCCTACACCAATGCAAAAAGGGTCTTTTTTGTCTGGTTAAACAAGCTGAACTTTGTTAT
+GATGTAACCCAACAGGGACACGAGCTGTCATATACTTTAAACAAGCAAAGACAGAGCTTTATGACTATGG
+TGGGGGTTAAGCCCATTAAGGTTACTCAGCAATCCGGCCCAGTTGAGGGAAGCATTCTTTGTCAGTGTAC
+CAATCCTGAATGCATGTACACTATGGTAAAAACCCTGTGTGGTCTAAGGGAACTTCTCCCCTTTAATTAA
+AGTTATTCTGATTAATAAAGCTTACCTTAAATTTGATATCAGTTGTTTGTCAAGTTTTTCCAGCAGCACC
+ACCTGCCCTTCCTCCCAACTTTCGTACGGGATGTGCCAACGGGCGGCAAACTTTCTCCACGTCCTAAAGG
+GTATATCGGTGTTCACCTTTTTACCCTGACCCACAATCTTCATCTTGCAGATGAAAAGAACCAGAATTGA
+AGACGACTTCAACCCCGTCTACCCCTATGACACCTCCTCAACTCCCAGCATTCCCTATGTAGCTCCGCCC
+TTCGTTTCTTCCGACGGGTTACAGGAAAACCCCCCGGGAGTTTTAGCACTCAAGTACACTGACCCCATTA
+CTACCAATGCTAAACATGAGCTTACTTTAAAACTTGGCAGCAACATAACTTTACAAAATGGGTTACTTTC
+GGCCACCGTTCCCACTGTTTCTCCTCCCCTTACAAACAGTAACAACTCCTTGGGTTTAGCCACATCCGCT
+CCTATAGCTGTGTCAGCTAACTCTCTTACATTGGCCACCGCCGCACCACTGACAGTAAGCAACAACCAGC
+TTAGTATTAACACTGGCAGAGGCTTAGTTATAACTAACAATGCCGTAGCAGTTAATCCTACCGGAGCGTT
+AGGCTTTAACAACACAGGAGCTTTACAATTAAACGCTGCGGGAGGAATGAGAGTGGACGGCGCCAACTTA
+ATTCTTCATGTAGCATACCCCTTTGAAGCAATCAACCAACTAACACTGCGATTAGAAAACGGGTTAGAAG
+TAACCAACGGAGGAAAACTCAACGTTAAGTTGGGATCAGGCCTCCAATTTGACAATAACGGACGCATTAC
+CATTAGTAATCGCATCCAGACTCGAGGTGTAACATCCCTCACTACCATTTGGTCTATCTCGCCTACGCCT
+AACTGCTCCATCTATGAAACCCAAGATGCAAATCTATTTCTTTGTCTAACTAAAAACGGAGCTCACGTGT
+TAGGTACTATAACAATTAAAGGTCTTAAAGGAGCACTGCGGGAAATGAACGATAACGCTTTATCTGTAAA
+ACTTCCCTTTGACAATCAGGGAAATTTACTCAACTGTGCCTTGGAATCATCCACCTGGCGTTACCAGGAA
+ACCAACGCAGTGGCCTCTAATGCCTTAACATTTATGCCCAACAGTACAGTGTATCCCCGAAACAAAACCG
+CCGACCCAGGCAACATGCTCATCCAAATCTCGCCTAACATCACCTTCAGTGTCGTCTACAACGAGATAAA
+CAGTGGGTATGCTTTTACGTTTAAATGGTCAGCCGAACCGGGAAAACCTTTTCACCCACCCACCGCTGTA
+TTTTGCTACATAACTGAACAATAAAATCATTGCAGGCGCAATCTTCGCATTTCTTTTTTCCAGATGAAAC
+GAGCCAGATTTGAAGATGACTTCAACCCCGTCTACCCTTACGAACACTACAATCCCCTTGACATTCCATT
+TATTACACCCCCGTTTGCTTCCTCCAACGGCTTGCAAGAAAAACCTCCGGGAGTCCTCAGCCTGAAATAC
+ACTGATCCACTTACAACCAAAAACGGGGCTTTAACCTTAAAATTGGGCACGGGACTAAACATTGATAAAA
+ATGGAGATCTTTCTTCAGATGCTAGCGTGGAAGTTAGCGCCCCTATCACTAAAACCAACAAAATCGTAGG
+TTTAAATTACACTAAGCCTCTCGCTCTGCAAAATAACGCGCTTACTCTTTCTTACAACGCGCCCTTTAAC
+GTAGTAAATAATAATTTAGCTCTAAATATGTCACAGCCTGTTACTATTAATGCAAACAACGAACTTTCTC
+TCTTAATAGACGCCCCACTTAATGCTGACACGGGCACTCTTCGCCTTCGAAGTGATGCACCTCTTGGACT
+AGTAGACAAAACACTAAAGGTTTTGTTTTCTAGCCCCCTCTATCTAGATAATAACTTTCTTACACTAGCC
+ATTGAACGCCCGCTAGCTCTATCCAGTAACAGAGCAGTGGCCCTTAAGTATTCACCACCTTTAAAAATAG
+AAAACGAAAACTTAACCCTAAGCACAGGCGGACCTTTTACTGTAAGCGGGGGAAATTTAAACCTGGCAAC
+ATCGGCACCCCTCTCCGTGCAAAACAATTCTCTCTCCTTAGGGGTTAACCCGCCTTTTCTCATCACTGAC
+TCTGGATTAGCTATGGACTTAGGAGACGGTCTTGCATTAGGTGGCTCTAAGTTAATAATCAATCTTGGTC
+CAGGTTTACAAATGTCTAATGGAGCTATTACTTTAGCACTAGATGCAGCGCTGCCTTTGCAATATAAAAA
+CAACCAACTTCAACTCAGAATTGGCTCCGCGTCTGCTTTAATTATGAGCGGAGTAACACAAACATTAAAC
+GTCAATGCCAATACCAGCAAAGGTCTTGCTATTGAAAATAACTCACTAGTTGTTAAGCTAGGAAACGGTC
+TTCGCTTTGATAGCTGGGGAAGCATAGCTGTCTCACCTACTACCACTACCCCTACCACCCTATGGACCAC
+CGCGGACCCGTCTCCTAACGCCACTTTTTATGAATCACTAGACGCCAAAGTGTGGCTAGTTTTAGTAAAA
+TGCAACGGCATGGTTAACGGGACCATATCCATTAAAGCTCAAAAAGGCACTTTACTTAAACCCACAGCTA
+GCTTTATTTCCTTTGTCATGTATTTTTACAGCGACGGAACGTGGAGGAAAAACTATCCCGTGTTTGACAA
+CGAAGGGATACTAGCAAACAGTGCCACATGGGGTTATCGACAAGGACAGTCTGCCAACACTAACGTTTCC
+AATGCTGTAGAATTTATGCCTAGCTCTAAAAGGTATCCCAATGAAAAAGGTTCTGAAGTTCAGAACATGG
+CTCTTACCTACACTTTTTTGCAAGGTGACCCTAACATGGCCATATCTTTTCAGAGCATTTATAATCATGC
+AATAGAAGGCTACTCATTAAAATTCACCTGGCGCGTTCGAAATAATGAACGTTTTGACATCCCCTGTTGC
+TCATTTTCTTATGTAACAGAACAATAAAATATTGTTATTTTGTATTTTCAACTTTATTGATACTTTTACA
+GAATTCTAACCGTTAATCTCCCTCCCCCCTTCCACTTTACCTTATACACCTCCCTTTCCCCCTGTACCAC
+CGCAAACAACTGCAATTTAGGATTTACACAACGATTCTTCTGTGACAAAATCAACACAGGTTCTTTGCTG
+GCAAAGCGCTGATCCGTAATGGAAATGAAACCTTCAGAAACATCGTCCAACAGCACGGTGGAGTCCAAAG
+CAGAGCTCTGCAAAAACAAATACAGTCAAGCTCTCCACGGGTTCTCGCCTCTGTTGTAGTCTGCCAACGT
+AAACGGGCAGTACCGCTCCATCAAGCCCCGCAGTAATCCCTGTCTCCGGGGTTCCACCAAGCTCCTCATG
+AGTGACCTAACGGTGAAGCTTCCCAACACTTTCACCGCCTTGGCCAGCAGCCGCCGCGTCCGACGAGCGC
+AGCACCGCACAGAAAGCTCATCCAAGTTTTTACAATAGGTACAGCCCAACACCACCATATTATTCATAAT
+TCCATAACTAAAAAAACTCCACCCAAACGACATGCGCTCCAACACTATAGCCGCGTGCCCATCATACAGC
+AGGCGAATATATATAAAATGCCTACCTCTGACAAACACGCTCCCCATAAATAACACTTCCTTGGGCATGC
+CACAATTTACAATTTCTCGATACCAAGGGAATCTTAAGTTATACAGTGAACCATAAATCATCATTTTAAA
+CCAATTTGCTAACACTACACCCCCCGCCTTACATTGAAGAGACCCAGGTTTAATACAGTGACAGTGTATA
+GTCCAGCGTTCAAAACCTCTTACAATTTGATTAAAATCAACATTAATAGTGGCACAGCAAACACAAACAC
+GCATGTAAATTTTGCACACATGCTTTTCCCATTTAGACAATATCATGTCCCACCACATTGGCCACTCCTG
+CAATACTACAAAAGGCGCACAAGATGGAATAGACCTCACCTCGCTCACATAATGCATATTCAAATGTTCA
+CACTCTAAAAGTCCAGGAGTCCTTTCCATTGTGGCAATAGGCACAGAATCCTCAGAGGGAGGTGGAAGAC
+GGTGGGTTTGGTACGAACTCAGTCTGCAGCGAAACCATCTGTCGCGTTGCATCATAAATTAAAAGCTCGC
+GCACAGCTTCGTACTTCTGTTTTAAGAAACGAACACGCTGCCAACAAATGTTCGCAAATCGACGGTTTCG
+TTGTCGCGCTCTTTCAGTTTTCAGGGCAACGTTCAGCCACTCCTGCAGTCCACTTAACAGCTCCTCAGCC
+CGTGGAGATATGCTGACATTATACCTTATTATGTCCCCATAAACGTTCAAACAGCAGGTTAAAGCCAACT
+CCAACCAAGAAATACAAAGGCCTTGATCCCGACTCACTGGAGGTGGAGGGAGAGACGGAAGAGGCATAAT
+TATTCCAGACGGTTGTAAAGCGAGCCAAAGTGCAAGTCACGAAGATCACACCTCTCCCCACCGCTGCGTT
+GGTGAAAAATTACAGCCAAGTCAAAAAAGATGCGATTTTCCAAATTACCAATCACGGCTTCCACTAAGGC
+TGGCACACGCACTTCAAGAAACACAAACATAGCAAAAGCATTTTCCTCAAAATCTTCAAACATTAAGCTG
+CAATCTTGAATAATTCCCAAATAATTTTCCGCTTGCCACCCGCGCAACACATCCATTAAAATTTCTTGTA
+AACTGGCGCCATGTAATTCAAAAAGTTTGTTAAGAGCACCCTCTACTGTCATACGCAGGCACACCTTCAT
+GGTTGAAAAAGATCAGGTTCCCGTGTCACCTGCAGTTCATTTAAAAGATTAACATTAGGCTCAAAACCCC
+GATCCCGAATCTCCATGCGTAGCATTAGTTGTACAAAGTCATCCAAATCATTGCATATAAGCTCTGTCAG
+TTCGCTATCAGGAAGCAGCTCAGGTGATGCTACACAACAAATCATCTCTAGCGTAGGAGCTAAAGACGTT
+AAGGTAAAGCCACAATAAGCAGCTTGAAGAACTGGAGTAACACAATGCAAAATGTGCAGCAAAAACTCCG
+ACATGTTTGTCTTTAAAAAATCTACCACAGAAATGTCCATATTATTTAAATAAAACATCAGGGGCTCAGG
+AACCACCACCGAAATAAAAACCGGTCGTAACAAATACATTGTGTCCTGCAACAAAAAAAAAATATTAATG
+CCCACACCTGGGAAAACCTGTTCTAAAACCAAACAGGTATAAGTATTACAAATGCCTCCCTTTGCCCCCC
+AATCCAAACCAAATAAGCTGCCCCGTCTTACCGCGACAAAGCACACAGAACAAAACACACTCCGCAGACG
+AACACAATATTTATACACTCCCTTTGCCGTCAAAAGTCCACAAAAACTCCAAAGGTCAGAAAAACCGCCA
+CATGAACACTTCCGCATACTGTTTCACATATCGTCACTTCCGCCGCACCGCGCCCGTCCTCCGACCCCAC
+ACGTCATCCGCCTCCACCCTTTCCCACCCCGCCCGCCTCTACGTCACCTTACACCACCCCTAGTCCCTCC
+TCCCTCATTATCATATTGGCTCGTTTCCAGTTTTAAGGTATATTATTGATGATG
+
diff --git a/demos/tutorial/read_mapping/reads_edit.fasta b/demos/tutorial/read_mapping/reads_edit.fasta
new file mode 100644
index 0000000..56d763b
--- /dev/null
+++ b/demos/tutorial/read_mapping/reads_edit.fasta
@@ -0,0 +1,20 @@
+>nc_001454.fasta.fasta.000000000 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=16508 orig_end=16544 haplotype_infix=CGTTCCGTCCTACCGAGGAAGATCTCGCCGTAGGAG edit_string=MMMMIMMMMMMMMMMMMMMMMMMMDMMMMMMMMMMMM strand=reverse
+CTCCTACGGCGAATCTTCCTCGGTAGGACGGAAACG
+>nc_001454.fasta.fasta.000000001 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=34087 orig_end=34123 haplotype_infix=CACACGTCATCCGCCTCCACCCTTTCCCACCCCGCC edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=forward
+CACACGTCATCCGCCTCCACCCTTTCCCACCCCGCC
+>nc_001454.fasta.fasta.000000002 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=16601 orig_end=16638 haplotype_infix=TTTGCCCGCGTTGATTCCCATCATCGCCGCCGCCATA edit_string=MMMMMDMMMMMMMMMMMMMMMMMMMMMMMMMEMMMMM strand=reverse
+TATGGNGGCGGCGATGATGGGAATCAACGCGGCAAA
+>nc_001454.fasta.fasta.000000003 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=11962 orig_end=11997 haplotype_infix=GAGGTGCCCCAGAGTGAGGTGTACCAGTCCGGGCC edit_string=MMMMMMMMMMMMMMMMMMMMMMMMIMMMMMMMMMMM strand=reverse
+GGCCCGGACTGTGTACACCTCACTCTGGGGCACCTC
+>nc_001454.fasta.fasta.000000004 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=28007 orig_end=28043 haplotype_infix=ATTTTGATTTTCTTTGCCACCTTTTTGGGATTACAA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=reverse
+TTGTAATCCCAAAAAGGTGGCAAAGAAAATCAAAAT
+>nc_001454.fasta.fasta.000000005 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=24529 orig_end=24565 haplotype_infix=CGCCGCCGCTTCGTGCCGTTCGCAGAAACATGCCAC edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=forward
+CGCCGCCGCTTCGTGCCGTTCGCAGAAACATGCCAC
+>nc_001454.fasta.fasta.000000006 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=17674 orig_end=17710 haplotype_infix=TTACATGCACATCGCCGGGCAGGACGCCTCGGAGTA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=forward
+TTACATGCACATCGCCGGGCAGGACGCCTCGGAGTA
+>nc_001454.fasta.fasta.000000007 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=11062 orig_end=11097 haplotype_infix=AACCCCCTATGTGCCCATAGACAAGGAGGTTAAAA edit_string=MMMMMMMMMMMMMMMMMIMMMMMMMMMMMMMMMMMM strand=reverse
+TTTTAACCTCCTTGTCTAGTGGGCACATAGGGGGTT
+>nc_001454.fasta.fasta.000000008 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=12221 orig_end=12258 haplotype_infix=TGTACCAGGAGGCTATTGGCCAGACGCAGGTGGACGA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMEMMEMDMMM strand=reverse
+TCGCNACGTGCGTCTGGCCAATAGCCTCCTGGTACA
+>nc_001454.fasta.fasta.000000009 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=15100 orig_end=15136 haplotype_infix=TCGGGCGGTACTAAGGCGGGCACAAAGGATAGGACG edit_string=MMMMMMMMMMMMEMMMMMMMMMMMMMMMMMMMMEMM strand=forward
+TCGGGCGGTACTTAGGCGGGCACAAAGGATAGGGCG
diff --git a/demos/tutorial/read_mapping/reads_hamming.fasta b/demos/tutorial/read_mapping/reads_hamming.fasta
new file mode 100644
index 0000000..5c57d0e
--- /dev/null
+++ b/demos/tutorial/read_mapping/reads_hamming.fasta
@@ -0,0 +1,20 @@
+>nc_001454.fasta.fasta.000000000 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=16508 orig_end=16544 haplotype_infix=CGTTCCGTCCTACCGAGGAAGATCTCGCCGTAGGAG edit_string=MMMMMMMMMMMMMMMMMMMMMMMMEMMMMMMMMMMM strand=reverse
+CTCCTACGGCGGGATCTTCCTCGGTAGGACGGAACG
+>nc_001454.fasta.fasta.000000001 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=16065 orig_end=16101 haplotype_infix=TTCGTCCACCGTTAGCACTGCGGTGGAGGCCATGGA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=reverse
+TCCATGGCCTCCACCGCAGTGCTAACGGTGGACGAA
+>nc_001454.fasta.fasta.000000002 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=33793 orig_end=33829 haplotype_infix=AAAAAAAAATATTAATGCCCACACCTGGGAAAACCT edit_string=MMMMMMEMMMMMMMMMMMMMMMMMMMMMMMMMEMMM strand=reverse
+AGGNTTTCCCAGGTGTGGGCATTAATATTNTTTTTT
+>nc_001454.fasta.fasta.000000003 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=20573 orig_end=20609 haplotype_infix=CCGGCGGCGTACACTGGCTGGCCCTGGCCTGGAACC edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMEMMMMMMMMMM strand=forward
+CCGGCGGCGTACACTGGCTGGCCCTNGCCTGGAACC
+>nc_001454.fasta.fasta.000000004 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=6227 orig_end=6263 haplotype_infix=GATTGAGTGGGAAGCCCCACGGCATGGGATGGGTAA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=reverse
+TTACCCATCCCATGCCGTGGGGCTTCCCACTCAATC
+>nc_001454.fasta.fasta.000000005 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=1395 orig_end=1431 haplotype_infix=TAGTGTTAGTTTATTCTGATGGAGTTGTGGAGTGAG edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=forward
+TAGTGTTAGTTTATTCTGATGGAGTTGTGGAGTGAG
+>nc_001454.fasta.fasta.000000006 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=29589 orig_end=29625 haplotype_infix=CGATAACGCTTTATCTGTAAAACTTCCCTTTGACAA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=reverse
+TTGTCAAAGGGAAGTTTTACAGATAAAGCGTTATCG
+>nc_001454.fasta.fasta.000000007 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=23190 orig_end=23226 haplotype_infix=GTGACAACGCGCGTTTGGCCGTACTCAAACGCACCA edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM strand=forward
+GTGACAACGCGCGTTTGGCCGTACTCAAACGCACCA
+>nc_001454.fasta.fasta.000000008 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=15308 orig_end=15344 haplotype_infix=AGTTAGAAGACGCGTTCACAAAATGGACGAAGACTG edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMEMMEME strand=reverse
+TAATCNTCGTCCATTTTGTGAACGCGTCTTCTAACT
+>nc_001454.fasta.fasta.000000009 contig=gi|9626553|ref|NC_001454.1| haplotype=0 length=36 orig_begin=16745 orig_end=16781 haplotype_infix=TGGAAGACATCAATTTTGCGTCGCTGGCTCCGCGGC edit_string=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMME strand=reverse
+TCCGCGGAGCCAGCGACGCAAAATTGATGTCTTCCA
diff --git a/demos/tutorial/realignment/reads.sam b/demos/tutorial/realign/reads.sam
similarity index 100%
rename from demos/tutorial/realignment/reads.sam
rename to demos/tutorial/realign/reads.sam
diff --git a/demos/tutorial/realignment/ref.fa b/demos/tutorial/realign/ref.fa
similarity index 100%
rename from demos/tutorial/realignment/ref.fa
rename to demos/tutorial/realign/ref.fa
diff --git a/demos/tutorial/realign/step1.cpp b/demos/tutorial/realign/step1.cpp
new file mode 100644
index 0000000..935930a
--- /dev/null
+++ b/demos/tutorial/realign/step1.cpp
@@ -0,0 +1,32 @@
+#include <iostream>
+#include <string>
+
+#include <seqan/store.h>
+#include <seqan/realign.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Build paths to reference and to alignment.
+ std::string refPath = SEQAN_PATH_TO_ROOT();
+ refPath.append("/demos/tutorial/realign/ref.fa");
+ std::string samPath = SEQAN_PATH_TO_ROOT();
+ samPath.append("/demos/tutorial/realign/reads.sam");
+
+ // Declare fragment store.
+ FragmentStore<> store;
+
+ // Load contigs and read alignment.
+ loadContigs(store, refPath.c_str());
+ BamFileIn bamFileIn(samPath.c_str());
+ readRecords(store, bamFileIn);
+
+ // Layout alignment and print.
+ AlignedReadLayout layout;
+ layoutAlignment(layout, store);
+ printAlignment(std::cout, layout, store, /*contigID=*/ 0, /*posBegin=*/ 1060,
+ /*posEnd=*/ 1140, /*lineBegin=*/ 0, /*lineEnd=*/ 100);
+
+ return 0;
+}
diff --git a/demos/tutorial/realignment/step1.cpp.stdout b/demos/tutorial/realign/step1.cpp.stdout
similarity index 100%
rename from demos/tutorial/realignment/step1.cpp.stdout
rename to demos/tutorial/realign/step1.cpp.stdout
diff --git a/demos/tutorial/realign/step2.cpp b/demos/tutorial/realign/step2.cpp
new file mode 100644
index 0000000..005f6c2
--- /dev/null
+++ b/demos/tutorial/realign/step2.cpp
@@ -0,0 +1,36 @@
+#include <iostream>
+#include <string>
+
+#include <seqan/store.h>
+#include <seqan/realign.h>
+
+using namespace seqan;
+
+int main()
+{
+ // Build paths to reference and to alignment.
+ std::string refPath = SEQAN_PATH_TO_ROOT();
+ refPath.append("/demos/tutorial/realign/ref.fa");
+ std::string samPath = SEQAN_PATH_TO_ROOT();
+ samPath.append("/demos/tutorial/realign/reads.sam");
+
+ // Declare fragment store.
+ FragmentStore<> store;
+
+ // Load contigs and read alignment.
+ loadContigs(store, refPath.c_str());
+ BamFileIn bamFileIn(samPath.c_str());
+ readRecords(store, bamFileIn);
+
+ // Perform the realignment.
+ reAlignment(store, /*contigID=*/ 0, /*method=*/ 1, /*bandwidth=*/ 20,
+ /*includeReference=*/ true);
+
+ // Layout alignment and print.
+ AlignedReadLayout layout;
+ layoutAlignment(layout, store);
+ printAlignment(std::cout, layout, store, /*contigID=*/ 0, /*posBegin=*/ 1060,
+ /*posEnd=*/ 1140, /*lineBegin=*/ 0, /*lineEnd=*/ 100);
+
+ return 0;
+}
diff --git a/demos/tutorial/realignment/step2.cpp.stdout b/demos/tutorial/realign/step2.cpp.stdout
similarity index 100%
rename from demos/tutorial/realignment/step2.cpp.stdout
rename to demos/tutorial/realign/step2.cpp.stdout
diff --git a/demos/tutorial/realignment/step1.cpp b/demos/tutorial/realignment/step1.cpp
deleted file mode 100644
index fc0821e..0000000
--- a/demos/tutorial/realignment/step1.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <seqan/store.h>
-#include <seqan/realign.h>
-
-using namespace seqan;
-
-int main()
-{
- // Build paths to reference and to alignment.
- std::string refPath = getAbsolutePath("/demos/tutorial/realignment/ref.fa");
- std::string samPath = getAbsolutePath("/demos/tutorial/realignment/reads.sam");
-
- // Declare fragment store.
- FragmentStore<> store;
-
- // Load contigs and read alignment.
- loadContigs(store, refPath.c_str());
- BamFileIn bamFileIn(samPath.c_str());
- readRecords(store, bamFileIn);
-
- // Layout alignment and print.
- AlignedReadLayout layout;
- layoutAlignment(layout, store);
- printAlignment(std::cout, layout, store, /*contigID=*/ 0, /*posBegin=*/ 1060,
- /*posEnd=*/ 1140, /*lineBegin=*/ 0, /*lineEnd=*/ 100);
-
- return 0;
-}
diff --git a/demos/tutorial/realignment/step2.cpp b/demos/tutorial/realignment/step2.cpp
deleted file mode 100644
index 4512033..0000000
--- a/demos/tutorial/realignment/step2.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <seqan/store.h>
-#include <seqan/realign.h>
-
-using namespace seqan;
-
-int main()
-{
- // Build paths to reference and to alignment.
- std::string refPath = getAbsolutePath("/demos/tutorial/realignment/ref.fa");
- std::string samPath = getAbsolutePath("/demos/tutorial/realignment/reads.sam");
-
- // Declare fragment store.
- FragmentStore<> store;
-
- // Load contigs and read alignment.
- loadContigs(store, refPath.c_str());
- BamFileIn bamFileIn(samPath.c_str());
- readRecords(store, bamFileIn);
-
- // Perform the realignment.
- reAlignment(store, /*contigID=*/ 0, /*method=*/ 1, /*bandwidth=*/ 20,
- /*includeReference=*/ true);
-
- // Layout alignment and print.
- AlignedReadLayout layout;
- layoutAlignment(layout, store);
- printAlignment(std::cout, layout, store, /*contigID=*/ 0, /*posBegin=*/ 1060,
- /*posEnd=*/ 1140, /*lineBegin=*/ 0, /*lineEnd=*/ 100);
-
- return 0;
-}
diff --git a/demos/tutorial/rnaseq/CMakeLists.txt b/demos/tutorial/rnaseq/CMakeLists.txt
new file mode 100644
index 0000000..c25f01e
--- /dev/null
+++ b/demos/tutorial/rnaseq/CMakeLists.txt
@@ -0,0 +1,13 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_rnaseq)
+
+if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter")
+endif (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
+
+if (OpenMP_FLAG_DETECTED)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+endif (OpenMP_FLAG_DETECTED)
+
+seqan_setup_apps(demos_tutorials_rnaseq)
+seqan_add_all_executables(demos_tutorials_rnaseq tutorial_)
diff --git a/demos/tutorial/rnaseq/genequant_assignment1.cpp b/demos/tutorial/rnaseq/genequant_assignment1.cpp
new file mode 100644
index 0000000..6eeb5be
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_assignment1.cpp
@@ -0,0 +1,73 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+
+// define used types
+typedef FragmentStore<> TStore;
+
+
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ // INSERT YOUR CODE HERE ...
+ //
+
+ return true;
+}
+
+int main(int argc, char const * argv[])
+{
+ Options options;
+ TStore store;
+
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ if (!loadFiles(store, options))
+ return 1;
+
+ return 0;
+}
diff --git a/demos/tutorial/rnaseq/genequant_assignment2.cpp b/demos/tutorial/rnaseq/genequant_assignment2.cpp
new file mode 100644
index 0000000..75ebc55
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_assignment2.cpp
@@ -0,0 +1,121 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+
+//![definitions]
+// define used types
+typedef FragmentStore<> TStore;
+typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
+typedef TAnnotation::TId TId;
+typedef TAnnotation::TPos TPos;
+typedef IntervalAndCargo<TPos, TId> TInterval;
+//![definitions]
+
+//![definitions_end]
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ BamFileIn alignmentFile;
+ if (!open(alignmentFile, options.alignmentFileName.c_str()))
+ {
+ std::cerr << "Couldn't open alignment file " << options.alignmentFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading read alignments ..... " << std::flush;
+ readRecords(store, alignmentFile);
+ std::cerr << "[" << length(store.alignedReadStore) << "]" << std::endl;
+
+ // load annotations
+ GffFileIn annotationFile;
+ if (!open(annotationFile, options.annotationFileName.c_str()))
+ {
+ std::cerr << "Couldn't open annotation file" << options.annotationFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading genome annotation ... " << std::flush;
+ readRecords(store, annotationFile);
+ std::cerr << "[" << length(store.annotationStore) << "]" << std::endl;
+
+ return true;
+}
+//![definitions_end]
+
+//![yourcode]
+//
+// 3. Extract intervals from gene annotations (grouped by contigId)
+//
+void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
+{
+ // INSERT YOUR CODE HERE ...
+ //
+}
+//![yourcode]
+
+//![yourcode_end]
+int main(int argc, char const * argv[])
+{
+ Options options;
+//![main]
+ TStore store;
+ String<String<TInterval> > intervals;
+//![main]
+
+//![main_end]
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+//![main_end]
+
+//![main2]
+ if (!loadFiles(store, options))
+ return 1;
+
+ extractGeneIntervals(intervals, store);
+//![main2]
+
+//![main2_end]
+ return 0;
+}
+//![main2_end]
diff --git a/demos/tutorial/rnaseq/genequant_assignment3.cpp b/demos/tutorial/rnaseq/genequant_assignment3.cpp
new file mode 100644
index 0000000..6c191b6
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_assignment3.cpp
@@ -0,0 +1,155 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+//![definitions]
+// define used types
+typedef FragmentStore<> TStore;
+typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
+typedef TAnnotation::TId TId;
+typedef TAnnotation::TPos TPos;
+typedef IntervalAndCargo<TPos, TId> TInterval;
+typedef IntervalTree<TPos, TId> TIntervalTree;
+//![definitions]
+
+//![definitions_end]
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ BamFileIn alignmentFile;
+ if (!open(alignmentFile, options.alignmentFileName.c_str()))
+ {
+ std::cerr << "Couldn't open alignment file " << options.alignmentFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading read alignments ..... " << std::flush;
+ readRecords(store, alignmentFile);
+ std::cerr << "[" << length(store.alignedReadStore) << "]" << std::endl;
+
+ // load annotations
+ GffFileIn annotationFile;
+ if (!open(annotationFile, options.annotationFileName.c_str()))
+ {
+ std::cerr << "Couldn't open annotation file" << options.annotationFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading genome annotation ... " << std::flush;
+ readRecords(store, annotationFile);
+ std::cerr << "[" << length(store.annotationStore) << "]" << std::endl;
+
+ return true;
+}
+
+//
+// 3. Extract intervals from gene annotations (grouped by contigId)
+//
+void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
+{
+ // extract intervals from gene annotations (grouped by contigId)
+ resize(intervals, length(store.contigStore));
+
+ Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
+
+ if (!goDown(it))
+ return;
+
+ do
+ {
+ SEQAN_ASSERT_EQ(getType(it), "gene");
+
+ TPos beginPos = getAnnotation(it).beginPos;
+ TPos endPos = getAnnotation(it).endPos;
+ TId contigId = getAnnotation(it).contigId;
+
+ if (beginPos > endPos)
+ std::swap(beginPos, endPos);
+
+ // insert forward-strand interval of the gene and its annotation id
+ appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
+ }
+ while (goRight(it));
+}
+//![definitions_end]
+
+//![yourcode]
+//
+// 4. Construct interval trees
+//
+void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
+ String<String<TInterval> > & intervals)
+{
+ // INSERT YOUR CODE HERE ...
+ //
+}
+//![yourcode]
+
+//![yourcode_end]
+int main(int argc, char const * argv[])
+{
+ Options options;
+ TStore store;
+//![yourcode_end]
+//![main]
+ String<String<TInterval> > intervals;
+ String<TIntervalTree> intervalTrees;
+//![main]
+
+//![main_end]
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ if (!loadFiles(store, options))
+ return 1;
+//![main_end]
+
+//![main2]
+ extractGeneIntervals(intervals, store);
+ constructIntervalTrees(intervalTrees, intervals);
+//![main2]
+
+//![main2_end]
+ return 0;
+}
+//![main2_end]
diff --git a/demos/tutorial/rnaseq/genequant_assignment4.cpp b/demos/tutorial/rnaseq/genequant_assignment4.cpp
new file mode 100644
index 0000000..a2f388e
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_assignment4.cpp
@@ -0,0 +1,172 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+//![definitions]
+// define used types
+typedef FragmentStore<> TStore;
+typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
+typedef TAnnotation::TId TId;
+typedef TAnnotation::TPos TPos;
+typedef IntervalAndCargo<TPos, TId> TInterval;
+typedef IntervalTree<TPos, TId> TIntervalTree;
+typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
+//![definitions]
+
+//![definitions_end]
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ BamFileIn alignmentFile;
+ if (!open(alignmentFile, options.alignmentFileName.c_str()))
+ {
+ std::cerr << "Couldn't open alignment file " << options.alignmentFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading read alignments ..... " << std::flush;
+ readRecords(store, alignmentFile);
+ std::cerr << "[" << length(store.alignedReadStore) << "]" << std::endl;
+
+ // load annotations
+ GffFileIn annotationFile;
+ if (!open(annotationFile, options.annotationFileName.c_str()))
+ {
+ std::cerr << "Couldn't open annotation file" << options.annotationFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading genome annotation ... " << std::flush;
+ readRecords(store, annotationFile);
+ std::cerr << "[" << length(store.annotationStore) << "]" << std::endl;
+
+ return true;
+}
+
+//
+// 3. Extract intervals from gene annotations (grouped by contigId)
+//
+void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
+{
+ // extract intervals from gene annotations (grouped by contigId)
+ resize(intervals, length(store.contigStore));
+
+ Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
+
+ if (!goDown(it))
+ return;
+
+ do
+ {
+ SEQAN_ASSERT_EQ(getType(it), "gene");
+
+ TPos beginPos = getAnnotation(it).beginPos;
+ TPos endPos = getAnnotation(it).endPos;
+ TId contigId = getAnnotation(it).contigId;
+
+ if (beginPos > endPos)
+ std::swap(beginPos, endPos);
+
+ // insert forward-strand interval of the gene and its annotation id
+ appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
+ }
+ while (goRight(it));
+}
+
+//
+// 4. Construct interval trees
+//
+void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
+ String<String<TInterval> > & intervals)
+{
+ int numContigs = length(intervals);
+ resize(intervalTrees, numContigs);
+
+ SEQAN_OMP_PRAGMA(parallel for)
+ for (int i = 0; i < numContigs; ++i)
+ createIntervalTree(intervalTrees[i], intervals[i]);
+}
+//![definitions_end]
+
+//![yourcode]
+//
+// 5. Count reads per gene
+//
+void countReadsPerGene(String<unsigned> & readsPerGene, String<TIntervalTree> const & intervalTrees, TStore const & store)
+{
+ // INSERT YOUR CODE HERE ...
+ //
+}
+//![yourcode]
+
+//![yourcode_end]
+int main(int argc, char const * argv[])
+{
+ Options options;
+ TStore store;
+ String<String<TInterval> > intervals;
+//![yourcode_end]
+
+//![main]
+ String<TIntervalTree> intervalTrees;
+ String<unsigned> readsPerGene;
+//![main]
+
+//![main_end]
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ if (!loadFiles(store, options))
+ return 1;
+//![main_end]
+
+//![main2]
+ extractGeneIntervals(intervals, store);
+ constructIntervalTrees(intervalTrees, intervals);
+ countReadsPerGene(readsPerGene, intervalTrees, store);
+//![main2]
+
+//![main2_end]
+ return 0;
+}
+//![main2_end]
diff --git a/demos/tutorial/rnaseq/genequant_assignment5.cpp b/demos/tutorial/rnaseq/genequant_assignment5.cpp
new file mode 100644
index 0000000..926f22f
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_assignment5.cpp
@@ -0,0 +1,198 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+
+//![definitions]
+// define used types
+typedef FragmentStore<> TStore;
+typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
+typedef TAnnotation::TId TId;
+typedef TAnnotation::TPos TPos;
+typedef IntervalAndCargo<TPos, TId> TInterval;
+typedef IntervalTree<TPos, TId> TIntervalTree;
+typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
+//![definitions]
+
+//![definitions_end]
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ BamFileIn alignmentFile;
+ if (!open(alignmentFile, options.alignmentFileName.c_str()))
+ {
+ std::cerr << "Couldn't open alignment file " << options.alignmentFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading read alignments ..... " << std::flush;
+ readRecords(store, alignmentFile);
+ std::cerr << "[" << length(store.alignedReadStore) << "]" << std::endl;
+
+ // load annotations
+ GffFileIn annotationFile;
+ if (!open(annotationFile, options.annotationFileName.c_str()))
+ {
+ std::cerr << "Couldn't open annotation file" << options.annotationFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading genome annotation ... " << std::flush;
+ readRecords(store, annotationFile);
+ std::cerr << "[" << length(store.annotationStore) << "]" << std::endl;
+
+ return true;
+}
+
+//
+// 3. Extract intervals from gene annotations (grouped by contigId)
+//
+void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
+{
+ // extract intervals from gene annotations (grouped by contigId)
+ resize(intervals, length(store.contigStore));
+
+ Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
+
+ if (!goDown(it))
+ return;
+
+ do
+ {
+ SEQAN_ASSERT_EQ(getType(it), "gene");
+
+ TPos beginPos = getAnnotation(it).beginPos;
+ TPos endPos = getAnnotation(it).endPos;
+ TId contigId = getAnnotation(it).contigId;
+
+ if (beginPos > endPos)
+ std::swap(beginPos, endPos);
+
+ // insert forward-strand interval of the gene and its annotation id
+ appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
+ }
+ while (goRight(it));
+}
+
+//
+// 4. Construct interval trees
+//
+void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
+ String<String<TInterval> > & intervals)
+{
+ int numContigs = length(intervals);
+ resize(intervalTrees, numContigs);
+
+ SEQAN_OMP_PRAGMA(parallel for)
+ for (int i = 0; i < numContigs; ++i)
+ createIntervalTree(intervalTrees[i], intervals[i]);
+}
+
+//
+// 5. Count reads per gene
+//
+void countReadsPerGene(String<unsigned> & readsPerGene, String<TIntervalTree> const & intervalTrees, TStore const & store)
+{
+ resize(readsPerGene, length(store.annotationStore), 0);
+ String<TId> result;
+ int numAlignments = length(store.alignedReadStore);
+
+ // iterate aligned reads and get search their begin and end positions
+ SEQAN_OMP_PRAGMA(parallel for private (result))
+ for (int i = 0; i < numAlignments; ++i)
+ {
+ TAlignedRead const & ar = store.alignedReadStore[i];
+ TPos queryBegin = _min(ar.beginPos, ar.endPos);
+ TPos queryEnd = _max(ar.beginPos, ar.endPos);
+
+ // search read-overlapping genes
+ findIntervals(result, intervalTrees[ar.contigId], queryBegin, queryEnd);
+
+ // increase read counter for each overlapping annotation given the id in the interval tree
+ for (unsigned j = 0; j < length(result); ++j)
+ {
+ SEQAN_OMP_PRAGMA(atomic)
+ readsPerGene[result[j]] += 1;
+ }
+ }
+}
+//![definitions_end]
+
+//![yourcode]
+//
+// 6. Output RPKM values
+//
+void outputGeneCoverage(String<unsigned> const & readsPerGene, TStore const & store)
+{
+ // INSERT YOUR CODE HERE ...
+ //
+}
+//![yourcode]
+
+//![yourcode_end]
+int main(int argc, char const * argv[])
+{
+ Options options;
+ TStore store;
+ String<String<TInterval> > intervals;
+ String<TIntervalTree> intervalTrees;
+ String<unsigned> readsPerGene;
+
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ if (!loadFiles(store, options))
+ return 1;
+//![yourcode_end]
+
+//![main]
+ extractGeneIntervals(intervals, store);
+ constructIntervalTrees(intervalTrees, intervals);
+ countReadsPerGene(readsPerGene, intervalTrees, store);
+ outputGeneCoverage(readsPerGene, store);
+//![main]
+
+//![main_end]
+ return 0;
+}
+//![main_end]
diff --git a/demos/tutorial/rnaseq/genequant_solution1.cpp b/demos/tutorial/rnaseq/genequant_solution1.cpp
new file mode 100644
index 0000000..dd4df83
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_solution1.cpp
@@ -0,0 +1,95 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+
+// define used types
+typedef FragmentStore<> TStore;
+
+
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//![solution]
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ BamFileIn alignmentFile;
+ if (!open(alignmentFile, options.alignmentFileName.c_str()))
+ {
+ std::cerr << "Couldn't open alignment file " << options.alignmentFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading read alignments ..... " << std::flush;
+ readRecords(store, alignmentFile);
+ std::cerr << "[" << length(store.alignedReadStore) << "]" << std::endl;
+
+ // load annotations
+ GffFileIn annotationFile;
+ if (!open(annotationFile, options.annotationFileName.c_str()))
+ {
+ std::cerr << "Couldn't open annotation file" << options.annotationFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading genome annotation ... " << std::flush;
+ readRecords(store, annotationFile);
+ std::cerr << "[" << length(store.annotationStore) << "]" << std::endl;
+
+ return true;
+}
+//![solution]
+
+//![main]
+int main(int argc, char const * argv[])
+{
+ Options options;
+ TStore store;
+
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ if (!loadFiles(store, options))
+ return 1;
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/rnaseq/genequant_solution2.cpp b/demos/tutorial/rnaseq/genequant_solution2.cpp
new file mode 100644
index 0000000..cf0fc72
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_solution2.cpp
@@ -0,0 +1,131 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+
+// define used types
+typedef FragmentStore<> TStore;
+typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
+typedef TAnnotation::TId TId;
+typedef TAnnotation::TPos TPos;
+typedef IntervalAndCargo<TPos, TId> TInterval;
+
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ BamFileIn alignmentFile;
+ if (!open(alignmentFile, options.alignmentFileName.c_str()))
+ {
+ std::cerr << "Couldn't open alignment file " << options.alignmentFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading read alignments ..... " << std::flush;
+ readRecords(store, alignmentFile);
+ std::cerr << "[" << length(store.alignedReadStore) << "]" << std::endl;
+
+ // load annotations
+ GffFileIn annotationFile;
+ if (!open(annotationFile, options.annotationFileName.c_str()))
+ {
+ std::cerr << "Couldn't open annotation file" << options.annotationFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading genome annotation ... " << std::flush;
+ readRecords(store, annotationFile);
+ std::cerr << "[" << length(store.annotationStore) << "]" << std::endl;
+
+ return true;
+}
+
+//![solution]
+//
+// 3. Extract intervals from gene annotations (grouped by contigId)
+//
+void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
+{
+ // extract intervals from gene annotations (grouped by contigId)
+ resize(intervals, length(store.contigStore));
+
+ Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
+
+ if (!goDown(it))
+ return;
+
+ do
+ {
+ SEQAN_ASSERT_EQ(getType(it), "gene");
+
+ TPos beginPos = getAnnotation(it).beginPos;
+ TPos endPos = getAnnotation(it).endPos;
+ TId contigId = getAnnotation(it).contigId;
+
+ if (beginPos > endPos)
+ std::swap(beginPos, endPos);
+
+ // insert forward-strand interval of the gene and its annotation id
+ appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
+ }
+ while (goRight(it));
+}
+//![solution]
+
+//![main]
+int main(int argc, char const * argv[])
+{
+ Options options;
+ TStore store;
+ String<String<TInterval> > intervals;
+
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ if (!loadFiles(store, options))
+ return 1;
+
+ extractGeneIntervals(intervals, store);
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/rnaseq/genequant_solution3.cpp b/demos/tutorial/rnaseq/genequant_solution3.cpp
new file mode 100644
index 0000000..060b270
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_solution3.cpp
@@ -0,0 +1,148 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+
+// define used types
+typedef FragmentStore<> TStore;
+typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
+typedef TAnnotation::TId TId;
+typedef TAnnotation::TPos TPos;
+typedef IntervalAndCargo<TPos, TId> TInterval;
+typedef IntervalTree<TPos, TId> TIntervalTree;
+
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ BamFileIn alignmentFile;
+ if (!open(alignmentFile, options.alignmentFileName.c_str()))
+ {
+ std::cerr << "Couldn't open alignment file " << options.alignmentFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading read alignments ..... " << std::flush;
+ readRecords(store, alignmentFile);
+ std::cerr << "[" << length(store.alignedReadStore) << "]" << std::endl;
+
+ // load annotations
+ GffFileIn annotationFile;
+ if (!open(annotationFile, options.annotationFileName.c_str()))
+ {
+ std::cerr << "Couldn't open annotation file" << options.annotationFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading genome annotation ... " << std::flush;
+ readRecords(store, annotationFile);
+ std::cerr << "[" << length(store.annotationStore) << "]" << std::endl;
+
+ return true;
+}
+
+//
+// 3. Extract intervals from gene annotations (grouped by contigId)
+//
+void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
+{
+ // extract intervals from gene annotations (grouped by contigId)
+ resize(intervals, length(store.contigStore));
+
+ Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
+
+ if (!goDown(it))
+ return;
+
+ do
+ {
+ SEQAN_ASSERT_EQ(getType(it), "gene");
+
+ TPos beginPos = getAnnotation(it).beginPos;
+ TPos endPos = getAnnotation(it).endPos;
+ TId contigId = getAnnotation(it).contigId;
+
+ if (beginPos > endPos)
+ std::swap(beginPos, endPos);
+
+ // insert forward-strand interval of the gene and its annotation id
+ appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
+ }
+ while (goRight(it));
+}
+
+//![solution]
+//
+// 4. Construct interval trees
+//
+void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
+ String<String<TInterval> > & intervals)
+{
+ int numContigs = length(intervals);
+ resize(intervalTrees, numContigs);
+
+ SEQAN_OMP_PRAGMA(parallel for)
+ for (int i = 0; i < numContigs; ++i)
+ createIntervalTree(intervalTrees[i], intervals[i]);
+}
+//![solution]
+
+//![main]
+int main(int argc, char const * argv[])
+{
+ Options options;
+ TStore store;
+ String<String<TInterval> > intervals;
+ String<TIntervalTree> intervalTrees;
+
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ if (!loadFiles(store, options))
+ return 1;
+
+ extractGeneIntervals(intervals, store);
+ constructIntervalTrees(intervalTrees, intervals);
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/rnaseq/genequant_solution4.cpp b/demos/tutorial/rnaseq/genequant_solution4.cpp
new file mode 100644
index 0000000..d7ea866
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_solution4.cpp
@@ -0,0 +1,180 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+
+// define used types
+typedef FragmentStore<> TStore;
+typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
+typedef TAnnotation::TId TId;
+typedef TAnnotation::TPos TPos;
+typedef IntervalAndCargo<TPos, TId> TInterval;
+typedef IntervalTree<TPos, TId> TIntervalTree;
+typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
+
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ BamFileIn alignmentFile;
+ if (!open(alignmentFile, options.alignmentFileName.c_str()))
+ {
+ std::cerr << "Couldn't open alignment file " << options.alignmentFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading read alignments ..... " << std::flush;
+ readRecords(store, alignmentFile);
+ std::cerr << "[" << length(store.alignedReadStore) << "]" << std::endl;
+
+ // load annotations
+ GffFileIn annotationFile;
+ if (!open(annotationFile, options.annotationFileName.c_str()))
+ {
+ std::cerr << "Couldn't open annotation file" << options.annotationFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading genome annotation ... " << std::flush;
+ readRecords(store, annotationFile);
+ std::cerr << "[" << length(store.annotationStore) << "]" << std::endl;
+
+ return true;
+}
+
+//
+// 3. Extract intervals from gene annotations (grouped by contigId)
+//
+void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
+{
+ // extract intervals from gene annotations (grouped by contigId)
+ resize(intervals, length(store.contigStore));
+
+ Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
+
+ if (!goDown(it))
+ return;
+
+ do
+ {
+ SEQAN_ASSERT_EQ(getType(it), "gene");
+
+ TPos beginPos = getAnnotation(it).beginPos;
+ TPos endPos = getAnnotation(it).endPos;
+ TId contigId = getAnnotation(it).contigId;
+
+ if (beginPos > endPos)
+ std::swap(beginPos, endPos);
+
+ // insert forward-strand interval of the gene and its annotation id
+ appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
+ }
+ while (goRight(it));
+}
+
+//
+// 4. Construct interval trees
+//
+void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
+ String<String<TInterval> > & intervals)
+{
+ int numContigs = length(intervals);
+ resize(intervalTrees, numContigs);
+
+ SEQAN_OMP_PRAGMA(parallel for)
+ for (int i = 0; i < numContigs; ++i)
+ createIntervalTree(intervalTrees[i], intervals[i]);
+}
+
+//![solution]
+//
+// 5. Count reads per gene
+//
+void countReadsPerGene(String<unsigned> & readsPerGene, String<TIntervalTree> const & intervalTrees, TStore const & store)
+{
+ resize(readsPerGene, length(store.annotationStore), 0);
+ String<TId> result;
+ int numAlignments = length(store.alignedReadStore);
+
+ // iterate aligned reads and get search their begin and end positions
+ SEQAN_OMP_PRAGMA(parallel for private (result))
+ for (int i = 0; i < numAlignments; ++i)
+ {
+ TAlignedRead const & ar = store.alignedReadStore[i];
+ TPos queryBegin = _min(ar.beginPos, ar.endPos);
+ TPos queryEnd = _max(ar.beginPos, ar.endPos);
+
+ // search read-overlapping genes
+ findIntervals(result, intervalTrees[ar.contigId], queryBegin, queryEnd);
+
+ // increase read counter for each overlapping annotation given the id in the interval tree
+ for (unsigned j = 0; j < length(result); ++j)
+ {
+ SEQAN_OMP_PRAGMA(atomic)
+ readsPerGene[result[j]] += 1;
+ }
+ }
+}
+//![solution]
+
+//![main]
+int main(int argc, char const * argv[])
+{
+ Options options;
+ TStore store;
+ String<String<TInterval> > intervals;
+ String<TIntervalTree> intervalTrees;
+ String<unsigned> readsPerGene;
+
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ if (!loadFiles(store, options))
+ return 1;
+
+ extractGeneIntervals(intervals, store);
+ constructIntervalTrees(intervalTrees, intervals);
+ countReadsPerGene(readsPerGene, intervalTrees, store);
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/rnaseq/genequant_solution5.cpp b/demos/tutorial/rnaseq/genequant_solution5.cpp
new file mode 100644
index 0000000..dd38b98
--- /dev/null
+++ b/demos/tutorial/rnaseq/genequant_solution5.cpp
@@ -0,0 +1,229 @@
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/arg_parse.h>
+#include <seqan/misc/interval_tree.h>
+#include <seqan/parallel.h>
+
+using namespace seqan;
+
+
+// define used types
+typedef FragmentStore<> TStore;
+typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
+typedef TAnnotation::TId TId;
+typedef TAnnotation::TPos TPos;
+typedef IntervalAndCargo<TPos, TId> TInterval;
+typedef IntervalTree<TPos, TId> TIntervalTree;
+typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
+
+// define options
+struct Options
+{
+ std::string annotationFileName;
+ std::string alignmentFileName;
+};
+
+
+//
+// 1. Parse command line and fill Options object
+//
+ArgumentParser::ParseResult parseOptions(Options & options, int argc, char const * argv[])
+{
+ ArgumentParser parser("gene_quant");
+ setShortDescription(parser, "A simple gene quantification tool");
+ setVersion(parser, "1.0");
+ setDate(parser, "Sep 2012");
+
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE));
+ addUsageLine(parser, "[\\fIOPTIONS\\fP] <\\fIANNOTATION FILE\\fP> <\\fIREAD ALIGNMENT FILE\\fP>");
+
+ // Parse command line
+ ArgumentParser::ParseResult res = parse(parser, argc, argv);
+
+ if (res == ArgumentParser::PARSE_OK)
+ {
+ // Extract option values
+ getArgumentValue(options.annotationFileName, parser, 0);
+ getArgumentValue(options.alignmentFileName, parser, 1);
+ }
+
+ return res;
+}
+
+//
+// 2. Load annotations and alignments from files
+//
+bool loadFiles(TStore & store, Options const & options)
+{
+ BamFileIn alignmentFile;
+ if (!open(alignmentFile, options.alignmentFileName.c_str()))
+ {
+ std::cerr << "Couldn't open alignment file " << options.alignmentFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading read alignments ..... " << std::flush;
+ readRecords(store, alignmentFile);
+ std::cerr << "[" << length(store.alignedReadStore) << "]" << std::endl;
+
+ // load annotations
+ GffFileIn annotationFile;
+ if (!open(annotationFile, options.annotationFileName.c_str()))
+ {
+ std::cerr << "Couldn't open annotation file" << options.annotationFileName << std::endl;
+ return false;
+ }
+ std::cerr << "Loading genome annotation ... " << std::flush;
+ readRecords(store, annotationFile);
+ std::cerr << "[" << length(store.annotationStore) << "]" << std::endl;
+
+ return true;
+}
+
+//
+// 3. Extract intervals from gene annotations (grouped by contigId)
+//
+void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
+{
+ // extract intervals from gene annotations (grouped by contigId)
+ resize(intervals, length(store.contigStore));
+
+ Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
+
+ if (!goDown(it))
+ return;
+
+ do
+ {
+ SEQAN_ASSERT_EQ(getType(it), "gene");
+
+ TPos beginPos = getAnnotation(it).beginPos;
+ TPos endPos = getAnnotation(it).endPos;
+ TId contigId = getAnnotation(it).contigId;
+
+ if (beginPos > endPos)
+ std::swap(beginPos, endPos);
+
+ // insert forward-strand interval of the gene and its annotation id
+ appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
+ }
+ while (goRight(it));
+}
+
+//
+// 4. Construct interval trees
+//
+void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
+ String<String<TInterval> > & intervals)
+{
+ int numContigs = length(intervals);
+ resize(intervalTrees, numContigs);
+
+ SEQAN_OMP_PRAGMA(parallel for)
+ for (int i = 0; i < numContigs; ++i)
+ createIntervalTree(intervalTrees[i], intervals[i]);
+}
+
+//
+// 5. Count reads per gene
+//
+void countReadsPerGene(String<unsigned> & readsPerGene, String<TIntervalTree> const & intervalTrees, TStore const & store)
+{
+ resize(readsPerGene, length(store.annotationStore), 0);
+ String<TId> result;
+ int numAlignments = length(store.alignedReadStore);
+
+ // iterate aligned reads and get search their begin and end positions
+ SEQAN_OMP_PRAGMA(parallel for private (result))
+ for (int i = 0; i < numAlignments; ++i)
+ {
+ TAlignedRead const & ar = store.alignedReadStore[i];
+ TPos queryBegin = _min(ar.beginPos, ar.endPos);
+ TPos queryEnd = _max(ar.beginPos, ar.endPos);
+
+ // search read-overlapping genes
+ findIntervals(result, intervalTrees[ar.contigId], queryBegin, queryEnd);
+
+ // increase read counter for each overlapping annotation given the id in the interval tree
+ for (unsigned j = 0; j < length(result); ++j)
+ {
+ SEQAN_OMP_PRAGMA(atomic)
+ readsPerGene[result[j]] += 1;
+ }
+ }
+}
+
+//![solution]
+//
+// 6. Output RPKM values
+//
+void outputGeneCoverage(String<unsigned> const & readsPerGene, TStore const & store)
+{
+ // output abundances for covered genes
+ Iterator<TStore const, AnnotationTree<> >::Type transIt = begin(store, AnnotationTree<>());
+ Iterator<TStore const, AnnotationTree<> >::Type exonIt;
+ double millionMappedReads = length(store.alignedReadStore) / 1000000.0;
+
+ std::cout << "#gene name\tRPKM value" << std::endl;
+ for (unsigned j = 0; j < length(readsPerGene); ++j)
+ {
+ if (readsPerGene[j] == 0)
+ continue;
+
+ unsigned mRNALengthMax = 0;
+ goTo(transIt, j);
+
+ // determine maximal mRNA length (which we use as gene length)
+ SEQAN_ASSERT_NOT(isLeaf(transIt));
+ goDown(transIt);
+
+ do
+ {
+ exonIt = nodeDown(transIt);
+ unsigned mRNALength = 0;
+
+ // determine mRNA length, sum up the lengths of its exons
+ do
+ {
+ if (getAnnotation(exonIt).typeId == store.ANNO_EXON)
+ mRNALength += abs((int)getAnnotation(exonIt).beginPos - (int)getAnnotation(exonIt).endPos);
+ }
+ while (goRight(exonIt));
+
+ if (mRNALengthMax < mRNALength)
+ mRNALengthMax = mRNALength;
+ }
+ while (goRight(transIt));
+
+ // RPKM is number of reads mapped to a gene divided by its gene length in kbps
+ // and divided by millions of total mapped reads
+ std::cout << store.annotationNameStore[j] << '\t';
+ std::cout << readsPerGene[j] / (mRNALengthMax / 1000.0) / millionMappedReads << std::endl;
+ }
+}
+//![solution]
+
+//![main]
+int main(int argc, char const * argv[])
+{
+ Options options;
+ TStore store;
+ String<String<TInterval> > intervals;
+ String<TIntervalTree> intervalTrees;
+ String<unsigned> readsPerGene;
+
+ ArgumentParser::ParseResult res = parseOptions(options, argc, argv);
+ if (res != ArgumentParser::PARSE_OK)
+ return res == ArgumentParser::PARSE_ERROR;
+
+ if (!loadFiles(store, options))
+ return 1;
+
+ extractGeneIntervals(intervals, store);
+ constructIntervalTrees(intervalTrees, intervals);
+ countReadsPerGene(readsPerGene, intervalTrees, store);
+ outputGeneCoverage(readsPerGene, store);
+
+ return 0;
+}
+//![main]
diff --git a/demos/tutorial/sam_and_bam_io/example.bam b/demos/tutorial/sam_and_bam_io/example.bam
deleted file mode 100644
index 782c43e..0000000
Binary files a/demos/tutorial/sam_and_bam_io/example.bam and /dev/null differ
diff --git a/demos/tutorial/sam_and_bam_io/example.bam.bai b/demos/tutorial/sam_and_bam_io/example.bam.bai
deleted file mode 100644
index dfc795b..0000000
Binary files a/demos/tutorial/sam_and_bam_io/example.bam.bai and /dev/null differ
diff --git a/demos/tutorial/sam_and_bam_io/example1.cpp b/demos/tutorial/sam_and_bam_io/example1.cpp
deleted file mode 100644
index f9dc508..0000000
--- a/demos/tutorial/sam_and_bam_io/example1.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString bamFileName = getAbsolutePath("/demos/tutorial/sam_and_bam_io/example.sam");
-
- // Open input file, BamFileIn can read SAM and BAM files.
- BamFileIn bamFileIn(toCString(bamFileName));
-
- // Open output file, BamFileOut accepts also an ostream and a format tag.
- BamFileOut bamFileOut(context(bamFileIn), std::cout, Sam());
-
- // Copy header.
- BamHeader header;
- readHeader(header, bamFileIn);
- writeHeader(bamFileOut, header);
-
- // Copy records.
- BamAlignmentRecord record;
- while (!atEnd(bamFileIn))
- {
- readRecord(record, bamFileIn);
- writeRecord(bamFileOut, record);
- }
-
- return 0;
-}
diff --git a/demos/tutorial/sam_and_bam_io/example1.cpp.stdout b/demos/tutorial/sam_and_bam_io/example1.cpp.stdout
deleted file mode 100644
index ea243b5..0000000
--- a/demos/tutorial/sam_and_bam_io/example1.cpp.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
- at HD VN:1.3 SO:coordinate
- at SQ SN:ref LN:45
- at SQ SN:ref2 LN:40
-r001 163 ref 7 30 8M4I4M1D3M = 37 39 TTAGATAAAGAGGATACTG * XX:B:S,12561,2,20,112
-r002 0 ref 9 30 1S2I6M1P1I1P1I4M2I * 0 0 AAAAGATAAGGGATAAA *
-r003 0 ref 9 30 5H6M * 0 0 AGCTAA *
-r004 0 ref 16 30 6M14N1I5M * 0 0 ATAGCTCTCAGC *
-r003 16 ref 29 30 6H5M * 0 0 TAGGC *
-r001 83 ref 37 30 9M = 7 -39 CAGCGCCAT *
diff --git a/demos/tutorial/sam_and_bam_io/example2.cpp b/demos/tutorial/sam_and_bam_io/example2.cpp
deleted file mode 100644
index 0f8d18e..0000000
--- a/demos/tutorial/sam_and_bam_io/example2.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString bamFileName = getAbsolutePath("/demos/tutorial/sam_and_bam_io/example.sam");
-
- BamFileIn bamFileIn(toCString(bamFileName));
-
- BamHeader header;
- readHeader(header, bamFileIn);
-
- typedef FormattedFileContext<BamFileIn, void>::Type TBamContext;
-
- TBamContext const & bamContext = context(bamFileIn);
-
- for (unsigned i = 0; i < length(contigNames(bamContext)); ++i)
- std::cout << contigNames(bamContext)[i] << '\t'
- << contigLengths(bamContext)[i] << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/sam_and_bam_io/example2.cpp.stdout b/demos/tutorial/sam_and_bam_io/example2.cpp.stdout
deleted file mode 100644
index c3e6f91..0000000
--- a/demos/tutorial/sam_and_bam_io/example2.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-ref 45
-ref2 40
diff --git a/demos/tutorial/sam_and_bam_io/example7.cpp b/demos/tutorial/sam_and_bam_io/example7.cpp
deleted file mode 100644
index 235e0ad..0000000
--- a/demos/tutorial/sam_and_bam_io/example7.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-#include <seqan/sequence.h>
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main(int argc, char const * argv[])
-{
- CharString bamFileName = getAbsolutePath("/demos/tutorial/sam_and_bam_io/example.bam");
- CharString baiFileName = getAbsolutePath("/demos/tutorial/sam_and_bam_io/example.bam.bai");
- CharString rName = "ref";
-
- // Open BamFileIn for reading.
- BamFileIn inFile;
- if (!open(inFile, toCString(bamFileName)))
- {
- std::cerr << "ERROR: Could not open " << bamFileName << " for reading.\n";
- return 1;
- }
-
- // Read BAI index.
- BamIndex<Bai> baiIndex;
- if (!open(baiIndex, toCString(baiFileName)))
- {
- std::cerr << "ERROR: Could not read BAI index file " << baiFileName << "\n";
- return 1;
- }
-
- // Read header.
- BamHeader header;
- readHeader(header, inFile);
-
- // Translate from reference name to rID.
- int rID = 0;
- if (!getIdByName(rID, contigNamesCache(context(inFile)), rName))
- {
- std::cerr << "ERROR: Reference sequence named " << rName << " not known.\n";
- return 1;
- }
-
- // Translate BEGIN and END arguments to number, 1-based to 0-based.
- int beginPos = 9, endPos = 30;
-
- // 1-based to 0-based.
- beginPos -= 1;
- endPos -= 1;
-
- // Translate number of elements to print to number.
- int num = 3;
-
- // Jump the BGZF stream to this position.
- bool hasAlignments = false;
- if (!jumpToRegion(inFile, hasAlignments, rID, beginPos, endPos, baiIndex))
- {
- std::cerr << "ERROR: Could not jump to " << beginPos << ":" << endPos << "\n";
- return 1;
- }
- if (!hasAlignments)
- return 0; // No alignments here.
-
- // Seek linearly to the selected position.
- BamAlignmentRecord record;
- int numPrinted = 0;
- BamFileOut out(inFile, std::cout, Sam());
-
- while (!atEnd(inFile) && numPrinted < num)
- {
- readRecord(record, inFile);
-
- // If we are on the next reference or at the end already then we stop.
- if (record.rID == -1 || record.rID > rID || record.beginPos >= endPos)
- break;
- // If we are left of the selected position then we skip this record.
- if (record.beginPos < beginPos)
- continue;
-
- // Otherwise, we print it to the user.
- numPrinted++;
- writeRecord(out, record);
- }
-
- return 0;
-}
diff --git a/demos/tutorial/sam_and_bam_io/example7.cpp.stdout b/demos/tutorial/sam_and_bam_io/example7.cpp.stdout
deleted file mode 100644
index b87004f..0000000
--- a/demos/tutorial/sam_and_bam_io/example7.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-r002 0 ref 9 30 1S2I6M1P1I1P1I4M2I * 0 0 AAAAGATAAGGGATAAA
-r003 0 ref 9 30 5H6M * 0 0 AGCTAA
-r004 0 ref 16 30 6M14N1I5M * 0 0 ATAGCTCTCAGC
diff --git a/demos/tutorial/sam_and_bam_io/solution1.cpp b/demos/tutorial/sam_and_bam_io/solution1.cpp
deleted file mode 100644
index 25a755c..0000000
--- a/demos/tutorial/sam_and_bam_io/solution1.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString bamFileName = getAbsolutePath("/demos/tutorial/sam_and_bam_io/example.sam");
-
- // Open input file, BamFileIn can read SAM and BAM files.
- BamFileIn bamFileIn;
- if (!open(bamFileIn, toCString(bamFileName)))
- {
- std::cerr << "ERROR: Could not open " << bamFileName << std::endl;
- return 1;
- }
- // Open output file, BamFileOut accepts also an ostream and a format tag.
- BamFileOut bamFileOut(context(bamFileIn), std::cout, Sam());
-
- try
- {
- // Copy header.
- BamHeader header;
- readHeader(header, bamFileIn);
- writeHeader(bamFileOut, header);
-
- // Copy records.
- BamAlignmentRecord record;
- while (!atEnd(bamFileIn))
- {
- readRecord(record, bamFileIn);
- writeRecord(bamFileOut, record);
- }
- }
- catch (Exception const & e)
- {
- std::cout << "ERROR: " << e.what() << std::endl;
- return 1;
- }
-
- return 0;
-}
diff --git a/demos/tutorial/sam_and_bam_io/solution1.cpp.stdout b/demos/tutorial/sam_and_bam_io/solution1.cpp.stdout
deleted file mode 100644
index ea243b5..0000000
--- a/demos/tutorial/sam_and_bam_io/solution1.cpp.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
- at HD VN:1.3 SO:coordinate
- at SQ SN:ref LN:45
- at SQ SN:ref2 LN:40
-r001 163 ref 7 30 8M4I4M1D3M = 37 39 TTAGATAAAGAGGATACTG * XX:B:S,12561,2,20,112
-r002 0 ref 9 30 1S2I6M1P1I1P1I4M2I * 0 0 AAAAGATAAGGGATAAA *
-r003 0 ref 9 30 5H6M * 0 0 AGCTAA *
-r004 0 ref 16 30 6M14N1I5M * 0 0 ATAGCTCTCAGC *
-r003 16 ref 29 30 6H5M * 0 0 TAGGC *
-r001 83 ref 37 30 9M = 7 -39 CAGCGCCAT *
diff --git a/demos/tutorial/sam_and_bam_io/solution2.cpp b/demos/tutorial/sam_and_bam_io/solution2.cpp
deleted file mode 100644
index 2bb60c3..0000000
--- a/demos/tutorial/sam_and_bam_io/solution2.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString bamFileName = getAbsolutePath("/demos/tutorial/sam_and_bam_io/example.sam");
-
- // Open input file.
- BamFileIn bamFileIn;
- if (!open(bamFileIn, toCString(bamFileName)))
- {
- std::cerr << "ERROR: Could not open " << bamFileName << std::endl;
- return 1;
- }
-
- unsigned numUnmappedReads = 0;
-
- try
- {
- // Read header.
- BamHeader header;
- readHeader(header, bamFileIn);
-
- // Read records.
- BamAlignmentRecord record;
- while (!atEnd(bamFileIn))
- {
- readRecord(record, bamFileIn);
- if (hasFlagUnmapped(record))
- numUnmappedReads += 1;
- }
- }
- catch (Exception const & e)
- {
- std::cout << "ERROR: " << e.what() << std::endl;
- return 1;
- }
-
- std::cout << "Number of unmapped reads: " << numUnmappedReads << "\n";
-
- return 0;
-}
diff --git a/demos/tutorial/sam_and_bam_io/solution2.cpp.stdout b/demos/tutorial/sam_and_bam_io/solution2.cpp.stdout
deleted file mode 100644
index 8a81d80..0000000
--- a/demos/tutorial/sam_and_bam_io/solution2.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Number of unmapped reads: 0
diff --git a/demos/tutorial/sam_and_bam_io/solution3.cpp b/demos/tutorial/sam_and_bam_io/solution3.cpp
deleted file mode 100644
index 59c5599..0000000
--- a/demos/tutorial/sam_and_bam_io/solution3.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <seqan/bam_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString bamFileName = getAbsolutePath("/demos/tutorial/sam_and_bam_io/example.sam");
-
- // Open input file.
- BamFileIn bamFileIn;
- if (!open(bamFileIn, toCString(bamFileName)))
- {
- std::cerr << "ERROR: Could not open " << bamFileName << std::endl;
- return 1;
- }
-
- unsigned numXXtags = 0;
-
- try
- {
- // Read header.
- BamHeader header;
- readHeader(header, bamFileIn);
-
- // Rear records.
- BamAlignmentRecord record;
- while (!atEnd(bamFileIn))
- {
- readRecord(record, bamFileIn);
- BamTagsDict tagsDict(record.tags);
-
- unsigned tagIdx = 0;
- if (findTagKey(tagIdx, tagsDict, "XX"))
- numXXtags += 1;
- }
- }
- catch (Exception const & e)
- {
- std::cout << "ERROR: " << e.what() << std::endl;
- return 1;
- }
-
- std::cout << "Number of records with the XX tag: " << numXXtags << "\n";
-
- return 0;
-}
diff --git a/demos/tutorial/sam_and_bam_io/solution3.cpp.stdout b/demos/tutorial/sam_and_bam_io/solution3.cpp.stdout
deleted file mode 100644
index 05ba41e..0000000
--- a/demos/tutorial/sam_and_bam_io/solution3.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Number of records with the XX tag: 1
diff --git a/demos/tutorial/seed_and_extend/example1.cpp.stdout b/demos/tutorial/seed_and_extend/example1.cpp.stdout
deleted file mode 100644
index eda0f3f..0000000
--- a/demos/tutorial/seed_and_extend/example1.cpp.stdout
+++ /dev/null
@@ -1,16 +0,0 @@
-seed1
-beginPositionH == 0
-endPositionH == 0
-beginPositionV == 0
-endPositionV == 0
-lowerDiagonal == 0
-upperDiagonal == 0
-
-seed2
-beginPositionH == 3
-endPositionH == 7
-beginPositionV == 10
-endPositionV == 14
-lowerDiagonal == -9
-upperDiagonal == -7
-
diff --git a/demos/tutorial/seed_and_extend/example2.cpp.stdout b/demos/tutorial/seed_and_extend/example2.cpp.stdout
deleted file mode 100644
index 15abffd..0000000
--- a/demos/tutorial/seed_and_extend/example2.cpp.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-original
-seedH: ROW
-seedV: ROW
-result
-seedH: ick BROW
-seedV: ick BROW
diff --git a/demos/tutorial/seed_and_extend/example3.cpp.stdout b/demos/tutorial/seed_and_extend/example3.cpp.stdout
deleted file mode 100644
index 227e1f1..0000000
--- a/demos/tutorial/seed_and_extend/example3.cpp.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-original
-seedH: ROW
-seedV: ROW
-result
-seedH: ick BROWN fox
-seedV: ick BROWN box
diff --git a/demos/tutorial/seed_and_extend/example4.cpp b/demos/tutorial/seed_and_extend/example4.cpp
index 8857656..805626b 100644
--- a/demos/tutorial/seed_and_extend/example4.cpp
+++ b/demos/tutorial/seed_and_extend/example4.cpp
@@ -32,7 +32,7 @@ int main()
endPositionV(seed)));
globalAlignment(align, scoringScheme);
- std::cout << "Resulting alignment\n" << align << "\n";
+ std::cerr << "Resulting alignment\n" << align << "\n";
//![example]
//![footer]
diff --git a/demos/tutorial/seed_and_extend/example4.cpp.stdout b/demos/tutorial/seed_and_extend/example4.cpp.stdout
deleted file mode 100644
index f307f80..0000000
--- a/demos/tutorial/seed_and_extend/example4.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Resulting alignment
- 0 . :
- ick BROWN fox
- |||||||||| ||
- ick BROWN box
-
-
-
diff --git a/demos/tutorial/seed_and_extend/example5.cpp.stdout b/demos/tutorial/seed_and_extend/example5.cpp.stdout
deleted file mode 100644
index 0d2f7ff..0000000
--- a/demos/tutorial/seed_and_extend/example5.cpp.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-Resulting seeds.
-(3, 5, 5, 7, -2, -2)
-(0, 2, 0, 2, 0, 0)
-(9, 11, 9, 11, 0, 0)
-(4, 7, 2, 5, 2, 2)
diff --git a/demos/tutorial/seed_and_extend/example6.cpp.stdout b/demos/tutorial/seed_and_extend/example6.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/seed_and_extend/example7.cpp.stdout b/demos/tutorial/seed_and_extend/example7.cpp.stdout
deleted file mode 100644
index 3d57ac6..0000000
--- a/demos/tutorial/seed_and_extend/example7.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Resulting seeds.
-(3, 5, 5, 7, -2, -2)
-(0, 7, 0, 5, 0, 2)
-(9, 11, 9, 11, 0, 0)
diff --git a/demos/tutorial/seed_and_extend/example8.cpp.stdout b/demos/tutorial/seed_and_extend/example8.cpp.stdout
deleted file mode 100644
index ffe6240..0000000
--- a/demos/tutorial/seed_and_extend/example8.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Score: 5
- 0 . : . :
- --CGAAT--CCATCCCACACA
- || || ||| ||||
- GGCG-ATNNNCATGG--CACA
-
-
-
diff --git a/demos/tutorial/seed_and_extend/solution1.cpp.stdout b/demos/tutorial/seed_and_extend/solution1.cpp.stdout
deleted file mode 100644
index 473922b..0000000
--- a/demos/tutorial/seed_and_extend/solution1.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-seed1
-beginPositionH == 6
-endPositionH == 14
-beginPositionV == 20
-endPositionV == 28
-lowerDiagonal == -18
-upperDiagonal == -14
-
diff --git a/demos/tutorial/seed_and_extend/solution2.cpp.stdout b/demos/tutorial/seed_and_extend/solution2.cpp.stdout
deleted file mode 100644
index 07814fd..0000000
--- a/demos/tutorial/seed_and_extend/solution2.cpp.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-original
-seedH: ROW
-seedV: ROW
-result
-seedH: ick BROWN
-seedV: ick BROWN
diff --git a/demos/tutorial/seed_and_extend/solution3.cpp.stdout b/demos/tutorial/seed_and_extend/solution3.cpp.stdout
deleted file mode 100644
index 9961e05..0000000
--- a/demos/tutorial/seed_and_extend/solution3.cpp.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-original
-seedH: ROW
-seedV: ROW
-result
-seedH: quick BROWN fox ju
-seedV: thick BROWN boxes of
diff --git a/demos/tutorial/seed_and_extend/solution4.cpp b/demos/tutorial/seed_and_extend/solution4.cpp
index 4000bc0..5c276ee 100644
--- a/demos/tutorial/seed_and_extend/solution4.cpp
+++ b/demos/tutorial/seed_and_extend/solution4.cpp
@@ -28,8 +28,9 @@ int main()
assignSource(row(align, 1), infix(seqV, beginPositionV(seed),
endPositionV(seed)));
+ // TODO(holtgrew): Use seed diagonals as bands.
globalAlignment(align, scoringScheme);
- std::cout << "Resulting alignment\n" << align << "\n";
+ std::cerr << "Resulting alignment\n" << align << "\n";
return 0;
}
diff --git a/demos/tutorial/seed_and_extend/solution4.cpp.stdout b/demos/tutorial/seed_and_extend/solution4.cpp.stdout
deleted file mode 100644
index 52cc4c7..0000000
--- a/demos/tutorial/seed_and_extend/solution4.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Resulting alignment
- 0 . : . :
- quick BROWN fox-- ju
- |||||||||| || |
- -thick BROWN boxes of
-
-
-
diff --git a/demos/tutorial/seed_and_extend/solution5.cpp.stdout b/demos/tutorial/seed_and_extend/solution5.cpp.stdout
deleted file mode 100644
index 3d57ac6..0000000
--- a/demos/tutorial/seed_and_extend/solution5.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Resulting seeds.
-(3, 5, 5, 7, -2, -2)
-(0, 7, 0, 5, 0, 2)
-(9, 11, 9, 11, 0, 0)
diff --git a/demos/tutorial/seed_and_extend/solution6.cpp.stdout b/demos/tutorial/seed_and_extend/solution6.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/seed_and_extend/solution7.cpp.stdout b/demos/tutorial/seed_and_extend/solution7.cpp.stdout
deleted file mode 100644
index 51a1601..0000000
--- a/demos/tutorial/seed_and_extend/solution7.cpp.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-Score: 1
- 0 . : . :
- --CGAAT--CCATCCCACACA
- || || ||| ||||
- GGCG-ATNNNCATGGCACA--
-
-
-
diff --git a/demos/tutorial/seq_io/example1.cpp b/demos/tutorial/seq_io/example1.cpp
new file mode 100644
index 0000000..b4405b6
--- /dev/null
+++ b/demos/tutorial/seq_io/example1.cpp
@@ -0,0 +1,15 @@
+#include <seqan/seq_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ CharString id;
+ Dna5String seq;
+
+ SeqFileIn seqFileIn("example.fa");
+ readRecord(id, seq, seqFileIn);
+ std::cout << id << '\t' << seq << '\n';
+
+ return 0;
+}
diff --git a/demos/tutorial/seq_io/solution1.cpp b/demos/tutorial/seq_io/solution1.cpp
new file mode 100644
index 0000000..b5cee95
--- /dev/null
+++ b/demos/tutorial/seq_io/solution1.cpp
@@ -0,0 +1,21 @@
+#include <seqan/seq_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const ** argv)
+{
+ if (argc < 2)
+ {
+ std::cerr << "USAGE: basic_seq_io_example FILENAME\n";
+ return 1;
+ }
+
+ CharString id;
+ Dna5String seq;
+
+ SeqFileIn seqFileIn(argv[1]);
+ readRecord(id, seq, seqFileIn);
+ std::cout << id << '\t' << seq << '\n';
+
+ return 0;
+}
diff --git a/demos/tutorial/seq_io/solution2.cpp b/demos/tutorial/seq_io/solution2.cpp
new file mode 100644
index 0000000..afe9c13
--- /dev/null
+++ b/demos/tutorial/seq_io/solution2.cpp
@@ -0,0 +1,36 @@
+#include <seqan/seq_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const ** argv)
+{
+ if (argc < 2)
+ {
+ std::cerr << "USAGE: basic_seq_io_example FILENAME\n";
+ return 1;
+ }
+
+ CharString id;
+ Dna5String seq;
+
+ SeqFileIn seqFileIn;
+ if (!open(seqFileIn, argv[1]))
+ {
+ std::cerr << "ERROR: Could not open the file.\n";
+ return 1;
+ }
+
+ try
+ {
+ readRecord(id, seq, seqFileIn);
+ }
+ catch (Exception const & e)
+ {
+ std::cout << "ERROR: " << e.what() << std::endl;
+ return 1;
+ }
+
+ std::cout << id << '\t' << seq << '\n';
+
+ return 0;
+}
diff --git a/demos/tutorial/seq_io/solution3.cpp b/demos/tutorial/seq_io/solution3.cpp
new file mode 100644
index 0000000..9f6391e
--- /dev/null
+++ b/demos/tutorial/seq_io/solution3.cpp
@@ -0,0 +1,37 @@
+#include <seqan/seq_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const ** argv)
+{
+ if (argc < 2)
+ {
+ std::cerr << "USAGE: basic_seq_io_example FILENAME\n";
+ return 1;
+ }
+
+ SeqFileIn seqFileIn;
+ if (!open(seqFileIn, argv[1]))
+ {
+ std::cerr << "ERROR: Could not open the file.\n";
+ return 1;
+ }
+
+ StringSet<CharString> ids;
+ StringSet<Dna5String> seqs;
+
+ try
+ {
+ readRecords(ids, seqs, seqFileIn);
+ }
+ catch (Exception const & e)
+ {
+ std::cout << "ERROR: " << e.what() << std::endl;
+ return 1;
+ }
+
+ for (unsigned i = 0; i < length(ids); ++i)
+ std::cout << ids[i] << '\t' << seqs[i] << '\n';
+
+ return 0;
+}
diff --git a/demos/tutorial/seq_io/solution4.cpp b/demos/tutorial/seq_io/solution4.cpp
new file mode 100644
index 0000000..c023408
--- /dev/null
+++ b/demos/tutorial/seq_io/solution4.cpp
@@ -0,0 +1,38 @@
+#include <seqan/seq_io.h>
+
+using namespace seqan;
+
+int main(int argc, char const ** argv)
+{
+ if (argc < 2)
+ {
+ std::cerr << "USAGE: basic_seq_io_example FILENAME\n";
+ return 1;
+ }
+
+ SeqFileIn seqFileIn;
+ if (!open(seqFileIn, argv[1]))
+ {
+ std::cerr << "ERROR: Could not open the file.\n";
+ return 1;
+ }
+
+ StringSet<CharString> ids;
+ StringSet<Dna5String> seqs;
+ StringSet<CharString> quals;
+
+ try
+ {
+ readRecords(ids, seqs, quals, seqFileIn);
+ }
+ catch (Exception const & e)
+ {
+ std::cout << "ERROR: " << e.what() << std::endl;
+ return 1;
+ }
+
+ for (unsigned i = 0; i < length(ids); ++i)
+ std::cout << ids[i] << '\t' << seqs[i] << quals[i] << '\n';
+
+ return 0;
+}
diff --git a/demos/unassigned_or_unused/tutorial_sequence/CMakeLists.txt b/demos/tutorial/sequence/CMakeLists.txt
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_sequence/CMakeLists.txt
rename to demos/tutorial/sequence/CMakeLists.txt
diff --git a/demos/unassigned_or_unused/tutorial_sequence/count_characters.cpp b/demos/tutorial/sequence/count_characters.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_sequence/count_characters.cpp
rename to demos/tutorial/sequence/count_characters.cpp
diff --git a/demos/unassigned_or_unused/tutorial_sequence/count_generic_characters.cpp b/demos/tutorial/sequence/count_generic_characters.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_sequence/count_generic_characters.cpp
rename to demos/tutorial/sequence/count_generic_characters.cpp
diff --git a/demos/unassigned_or_unused/tutorial_sequence/replace_as.cpp b/demos/tutorial/sequence/replace_as.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_sequence/replace_as.cpp
rename to demos/tutorial/sequence/replace_as.cpp
diff --git a/demos/unassigned_or_unused/tutorial_sequence/sequence_all_strings.cpp b/demos/tutorial/sequence/sequence_all_strings.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_sequence/sequence_all_strings.cpp
rename to demos/tutorial/sequence/sequence_all_strings.cpp
diff --git a/demos/unassigned_or_unused/tutorial_sequence/sequence_iterator_demo.cpp b/demos/tutorial/sequence/sequence_iterator_demo.cpp
similarity index 100%
rename from demos/unassigned_or_unused/tutorial_sequence/sequence_iterator_demo.cpp
rename to demos/tutorial/sequence/sequence_iterator_demo.cpp
diff --git a/demos/tutorial/sequence_io/example.fa b/demos/tutorial/sequence_io/example.fa
deleted file mode 100644
index 7b80ab1..0000000
--- a/demos/tutorial/sequence_io/example.fa
+++ /dev/null
@@ -1,6 +0,0 @@
->seq1
-CCCCCCCCCCCCCCC
->seq2
-CGATCGATC
->seq3
-TTTTTTT
\ No newline at end of file
diff --git a/demos/tutorial/sequence_io/example.fq b/demos/tutorial/sequence_io/example.fq
deleted file mode 100644
index a924750..0000000
--- a/demos/tutorial/sequence_io/example.fq
+++ /dev/null
@@ -1,12 +0,0 @@
- at seq1
-CCCCCCCCCCCCCCC
-+
-IIIIIHIIIIIIIII
- at seq2
-CGATCGATC
-+
-IIIIIIIII
- at seq3
-TTTTTTT
-+
-IIIIHHG
diff --git a/demos/tutorial/sequence_io/example1.cpp b/demos/tutorial/sequence_io/example1.cpp
deleted file mode 100644
index c207cbc..0000000
--- a/demos/tutorial/sequence_io/example1.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#include <seqan/seq_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString seqFileName = getAbsolutePath("/demos/tutorial/sequence_io/example.fa");
- CharString id;
- Dna5String seq;
-
- SeqFileIn seqFileIn(toCString(seqFileName));
- readRecord(id, seq, seqFileIn);
- std::cout << id << '\t' << seq << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/sequence_io/example1.cpp.stdout b/demos/tutorial/sequence_io/example1.cpp.stdout
deleted file mode 100644
index af1d184..0000000
--- a/demos/tutorial/sequence_io/example1.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-seq1 CCCCCCCCCCCCCCC
diff --git a/demos/tutorial/sequence_io/solution1.cpp b/demos/tutorial/sequence_io/solution1.cpp
deleted file mode 100644
index c207cbc..0000000
--- a/demos/tutorial/sequence_io/solution1.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-#include <seqan/seq_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString seqFileName = getAbsolutePath("/demos/tutorial/sequence_io/example.fa");
- CharString id;
- Dna5String seq;
-
- SeqFileIn seqFileIn(toCString(seqFileName));
- readRecord(id, seq, seqFileIn);
- std::cout << id << '\t' << seq << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/sequence_io/solution1.cpp.stdout b/demos/tutorial/sequence_io/solution1.cpp.stdout
deleted file mode 100644
index af1d184..0000000
--- a/demos/tutorial/sequence_io/solution1.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-seq1 CCCCCCCCCCCCCCC
diff --git a/demos/tutorial/sequence_io/solution2.cpp b/demos/tutorial/sequence_io/solution2.cpp
deleted file mode 100644
index d4fa1d2..0000000
--- a/demos/tutorial/sequence_io/solution2.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <seqan/seq_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString seqFileName = getAbsolutePath("/demos/tutorial/sequence_io/example.fa");
- CharString id;
- Dna5String seq;
-
- SeqFileIn seqFileIn;
- if (!open(seqFileIn, toCString(seqFileName)))
- {
- std::cerr << "ERROR: Could not open the file.\n";
- return 1;
- }
-
- try
- {
- readRecord(id, seq, seqFileIn);
- }
- catch (Exception const & e)
- {
- std::cout << "ERROR: " << e.what() << std::endl;
- return 1;
- }
-
- std::cout << id << '\t' << seq << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/sequence_io/solution2.cpp.stdout b/demos/tutorial/sequence_io/solution2.cpp.stdout
deleted file mode 100644
index af1d184..0000000
--- a/demos/tutorial/sequence_io/solution2.cpp.stdout
+++ /dev/null
@@ -1 +0,0 @@
-seq1 CCCCCCCCCCCCCCC
diff --git a/demos/tutorial/sequence_io/solution3.cpp b/demos/tutorial/sequence_io/solution3.cpp
deleted file mode 100644
index d13e2d0..0000000
--- a/demos/tutorial/sequence_io/solution3.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <seqan/seq_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString seqFileName = getAbsolutePath("/demos/tutorial/sequence_io/example.fa");
-
- SeqFileIn seqFileIn;
- if (!open(seqFileIn, toCString(seqFileName)))
- {
- std::cerr << "ERROR: Could not open the file.\n";
- return 1;
- }
-
- StringSet<CharString> ids;
- StringSet<Dna5String> seqs;
-
- try
- {
- readRecords(ids, seqs, seqFileIn);
- }
- catch (Exception const & e)
- {
- std::cout << "ERROR: " << e.what() << std::endl;
- return 1;
- }
-
- for (unsigned i = 0; i < length(ids); ++i)
- std::cout << ids[i] << '\t' << seqs[i] << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/sequence_io/solution3.cpp.stdout b/demos/tutorial/sequence_io/solution3.cpp.stdout
deleted file mode 100644
index c03106f..0000000
--- a/demos/tutorial/sequence_io/solution3.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-seq1 CCCCCCCCCCCCCCC
-seq2 CGATCGATC
-seq3 TTTTTTT
diff --git a/demos/tutorial/sequence_io/solution4.cpp b/demos/tutorial/sequence_io/solution4.cpp
deleted file mode 100644
index 4e6b7ed..0000000
--- a/demos/tutorial/sequence_io/solution4.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <seqan/seq_io.h>
-
-using namespace seqan;
-
-int main()
-{
- CharString seqFileName = getAbsolutePath("/demos/tutorial/sequence_io/example.fq");
-
- SeqFileIn seqFileIn;
- if (!open(seqFileIn, toCString(seqFileName)))
- {
- std::cerr << "ERROR: Could not open the file.\n";
- return 1;
- }
-
- StringSet<CharString> ids;
- StringSet<Dna5String> seqs;
- StringSet<CharString> quals;
-
- try
- {
- readRecords(ids, seqs, quals, seqFileIn);
- }
- catch (Exception const & e)
- {
- std::cout << "ERROR: " << e.what() << std::endl;
- return 1;
- }
-
- for (unsigned i = 0; i < length(ids); ++i)
- std::cout << ids[i] << '\t' << seqs[i] << quals[i] << '\n';
-
- return 0;
-}
diff --git a/demos/tutorial/sequence_io/solution4.cpp.stdout b/demos/tutorial/sequence_io/solution4.cpp.stdout
deleted file mode 100644
index 94d654e..0000000
--- a/demos/tutorial/sequence_io/solution4.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-seq1 CCCCCCCCCCCCCCCIIIIIHIIIIIIIII
-seq2 CGATCGATCIIIIIIIII
-seq3 TTTTTTTIIIIHHG
diff --git a/demos/tutorial/sequences/assignment_1_solution.cpp b/demos/tutorial/sequences/assignment_1_solution.cpp
deleted file mode 100644
index ce3347b..0000000
--- a/demos/tutorial/sequences/assignment_1_solution.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// The comment lines containing ![fragment-line] are there for the
-// documentation system. You can ignore them when reading this file.
-//![full]
-//![top]
-#include <seqan/sequence.h>
-#include <seqan/basic.h>
-#include <seqan/stream.h>
-#include <seqan/file.h>
-#include <seqan/modifier.h>
-
-using namespace seqan;
-
-Dna getRevCompl(Dna const & nucleotide)
-{
- if (nucleotide == 'A')
- return 'T';
- if (nucleotide == 'T')
- return 'A';
- if (nucleotide == 'C')
- return 'G';
- return 'C';
-}
-
-int main()
-{
- DnaString genome = "TATATACGCGCGAGTCGT";
- DnaString revComplGenome;
-//![top]
- //1.
- resize(revComplGenome, length(genome));
- //2.
- for (unsigned i = 0; i < length(genome); ++i)
- revComplGenome[length(genome) - 1 - i] = getRevCompl(genome[i]);
- //3.
- std::cout << genome << std::endl;
- std::cout << revComplGenome << std::endl;
-//![bottom]
-
- // And to check if your output is correct,
- // use the given SeqAn function reverseComplement(),
- // which modifies the sequence in-place:
- reverseComplement(genome);
- std::cout << genome << std::endl;
- return 0;
-}
-//![bottom]
-//![full]
diff --git a/demos/tutorial/sequences/assignment_1_solution.cpp.stdout b/demos/tutorial/sequences/assignment_1_solution.cpp.stdout
deleted file mode 100644
index 85268ea..0000000
--- a/demos/tutorial/sequences/assignment_1_solution.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-TATATACGCGCGAGTCGT
-ACGACTCGCGCGTATATA
-ACGACTCGCGCGTATATA
diff --git a/demos/tutorial/sequences/assignment_2_solution.cpp b/demos/tutorial/sequences/assignment_2_solution.cpp
deleted file mode 100644
index 12aa4dc..0000000
--- a/demos/tutorial/sequences/assignment_2_solution.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// The comment lines containing ![fragment-line] are there for the
-// documentation system. You can ignore them when reading this file.
-//![full]
-//![one]
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-
-using namespace seqan;
-// Function to print simple alignment between two sequences with the same length
-template <typename TText1, typename TText2>
-void printAlign(TText1 const & genomeFragment, TText2 const & read)
-{
- std::cout << "Alignment " << std::endl;
- std::cout << " genome : " << genomeFragment << std::endl;
- std::cout << " read : " << read << std::endl;
-}
-
-int main()
-{
- // Build reads and genomes
- DnaString chr1 = "TATAATATTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCTAGATGTGCAGCTCGATCGAATGCACGTGTGTGCGATCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATTTAG";
-
- // Build List containing all reads
- typedef String<DnaString> TDnaList;
- TDnaList readList;
- resize(readList, 4);
- readList[0] = "TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT";
- readList[1] = "TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT";
- readList[2] = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA";
- readList[3] = "CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA";
-
- // Append a second chromosome sequence fragment to chr1
- DnaString chr2 = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACACGTCTCTGTGTTCCGACGTGTGTCACGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACACATGCTGCTG";
- append(chr1, chr2);
-
- // Print readlist
- std::cout << " \n Read list: " << std::endl;
- for (unsigned i = 0; i < length(readList); ++i)
- std::cout << readList[i] << std::endl;
-
- // 1. Assume we have mapped the 4 reads to chr1 (and chr2) and now have the mapping start positions (no gaps).
- // Store the start position in a String alignPosList: 7, 100, 172, 272
-//![one]
- String<unsigned> alignPosList;
- resize(alignPosList, 4);
- alignPosList[0] = 7;
- alignPosList[1] = 100;
- alignPosList[2] = 172;
- alignPosList[3] = 272;
-
- // 2. Bisulfite conversion
- // Assume chr1 is beeing bisulfate treated: Copy chr1 to a new genome bsChr1 and exchange every 'C' with a 'T'
- DnaString bsChr1;
- assign(bsChr1, chr1);
- for (unsigned i = 0; i < length(bsChr1); ++i)
- if (bsChr1[i] == 'C')
- bsChr1[i] = 'T';
-//![two]
- // 3. Print alignments of the reads with chr1 (or bsChr1) sequence using the function printAlign
- // and the positions in alignPosList.
- // To do that, you have to create a copy of the fragment in chr1 (bsChr1) that is aligned to the read.
- std::cout << " \n Print alignment: " << std::endl;
- for (unsigned i = 0; i < length(readList); ++i)
- {
- // Begin position beginPosition of a given alignment between the read and the genome
-//![two]
- unsigned beginPosition = alignPosList[i];
-//![three]
-
- // Genome fragment
- DnaString genomeFragment;
-//![three]
-
- // We have to create a copy of the corresponding fragment of the genome, where the read aligns to
- for (unsigned j = 0; j < length(readList[i]); ++j)
- appendValue(genomeFragment, chr1[beginPosition + j]);
-//![four]
-
- // Call of our function to print the simple alignment
- printAlign(genomeFragment, readList[i]);
- }
- return 0;
-}
-//![four]
-//![full]
diff --git a/demos/tutorial/sequences/assignment_2_solution.cpp.stdout b/demos/tutorial/sequences/assignment_2_solution.cpp.stdout
deleted file mode 100644
index e25d230..0000000
--- a/demos/tutorial/sequences/assignment_2_solution.cpp.stdout
+++ /dev/null
@@ -1,20 +0,0 @@
-
- Read list:
-TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
diff --git a/demos/tutorial/sequences/assignment_3_solution.cpp b/demos/tutorial/sequences/assignment_3_solution.cpp
deleted file mode 100644
index 546772d..0000000
--- a/demos/tutorial/sequences/assignment_3_solution.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
- #include <seqan/stream.h>
- #include <seqan/sequence.h>
- #include <seqan/file.h>
-
- using namespace seqan;
-
- int main()
- {
- String<Dna5> nucleotides = "AGTCGTGNNANCT";
- String<Dna5> lesser;
- String<Dna5> greater;
-
- for (unsigned i = 0; i < length(nucleotides); ++i){
- if (nucleotides[i] < 'G')
- appendValue(lesser, nucleotides[i]);
- else if (nucleotides[i] > 'G')
- appendValue(greater, nucleotides[i]);
- }
- std::cout << "Lesser nucleotides: " << lesser << std::endl;
- std::cout << "Greater nucleotides: " << greater << std::endl;
- }
-
diff --git a/demos/tutorial/sequences/assignment_3_solution.cpp.stdout b/demos/tutorial/sequences/assignment_3_solution.cpp.stdout
deleted file mode 100644
index f267017..0000000
--- a/demos/tutorial/sequences/assignment_3_solution.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Lesser nucleotides: ACAC
-Greater nucleotides: TTNNNT
diff --git a/demos/tutorial/sequences/assignment_4_solution.cpp.stdout b/demos/tutorial/sequences/assignment_4_solution.cpp.stdout
deleted file mode 100644
index 0fd9ed9..0000000
--- a/demos/tutorial/sequences/assignment_4_solution.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Lesser sequences:
-ATATANGCGT, AAGCATGANT,
-Greater sequences:
-TGAAANTGAC,
\ No newline at end of file
diff --git a/demos/tutorial/sequences/assignment_5_solution.cpp b/demos/tutorial/sequences/assignment_5_solution.cpp
deleted file mode 100644
index 8d2a37d..0000000
--- a/demos/tutorial/sequences/assignment_5_solution.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// The comment lines containing ![fragment-line] are there for the
-// documentation system. You can ignore them when reading this file.
-//![full]
-//![top]
-#include <iostream>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-
-using namespace seqan;
-
-// Function to print simple alignment between two sequences with the same length
-// .. for two sequences of different types
-template <typename TText1, typename TText2>
-void printAlign(TText1 const & genomeFragment, TText2 const & read)
-{
- std::cout << "Alignment " << std::endl;
- std::cout << " genome : ";
- std::cout << genomeFragment << std::endl;
- std::cout << " read : ";
- std::cout << read << std::endl;
-}
-
-int main()
-{
- // We have given a genome sequence
- Dna5String genome = "ATGGTTTCAACGTAATGCTGAACATGTCGCGT";
- // A read sequence
- Dna5String read = "TGGTNTCA";
- // And the begin position of a given alignment between the read and the genome
- unsigned beginPosition = 1;
-//![top]
-
- // Create Infix of type Dna5String and get the corresponding infix sequence of genome
- Infix<Dna5String>::Type inf = infix(genome, beginPosition, beginPosition + length(read));
-
-//![bottom]
- // Call of our function to print the simple alignment
- printAlign(inf, read);
- return 0;
-}
-//![bottom]
-//![full]
diff --git a/demos/tutorial/sequences/assignment_5_solution.cpp.stdout b/demos/tutorial/sequences/assignment_5_solution.cpp.stdout
deleted file mode 100644
index 9b30e21..0000000
--- a/demos/tutorial/sequences/assignment_5_solution.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-Alignment
- genome : TGGTTTCA
- read : TGGTNTCA
diff --git a/demos/tutorial/sequences/assignment_4_solution.cpp b/demos/tutorial/sequences/lexical_assignment_solution.cpp
similarity index 100%
rename from demos/tutorial/sequences/assignment_4_solution.cpp
rename to demos/tutorial/sequences/lexical_assignment_solution.cpp
diff --git a/demos/tutorial/sequences/assignment_6_solution.cpp b/demos/tutorial/sequences/segments_assignment_2_solution.cpp
similarity index 100%
rename from demos/tutorial/sequences/assignment_6_solution.cpp
rename to demos/tutorial/sequences/segments_assignment_2_solution.cpp
diff --git a/demos/tutorial/sequences/segments_assignment_hint.cpp b/demos/tutorial/sequences/segments_assignment_hint.cpp
new file mode 100644
index 0000000..ebf161d
--- /dev/null
+++ b/demos/tutorial/sequences/segments_assignment_hint.cpp
@@ -0,0 +1,38 @@
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+
+using namespace seqan;
+
+// Function to print simple alignment between two sequences with the same length
+// .. for two sequences of the same type
+template <typename TText>
+void printAlign(TText const & genomeFragment, TText const & read)
+{
+ std::cout << "Alignment " << std::endl;
+ std::cout << " genome : ";
+ std::cout << genomeFragment << std::endl;
+ std::cout << " read : ";
+ std::cout << read << std::endl;
+}
+
+int main()
+{
+ // We have given a genome sequence
+ Dna5String genome = "ATGGTTTCAACGTAATGCTGAACATGTCGCGT";
+ // A read sequence
+ Dna5String read = "TGGTNTCA";
+ // And the begin position of a given alignment between the read and the genome
+ unsigned beginPosition = 1;
+
+ Dna5String genomeFragment;
+ // We have to create a copy of the corresponding fragment of the genome, where the read aligns to
+ for (unsigned i = 0; i < length(read); ++i)
+ {
+ appendValue(genomeFragment, genome[beginPosition + i]);
+ }
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, read);
+
+ return 0;
+}
diff --git a/demos/tutorial/sequences/segments_assignment_solution.cpp b/demos/tutorial/sequences/segments_assignment_solution.cpp
new file mode 100644
index 0000000..f1360fe
--- /dev/null
+++ b/demos/tutorial/sequences/segments_assignment_solution.cpp
@@ -0,0 +1,33 @@
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+
+using namespace seqan;
+
+// Function to print simple alignment between two sequences with the same length
+// .. for two sequences of different types
+template <typename TText1, typename TText2>
+void printAlign(TText1 const & genomeFragment, TText2 const & read)
+{
+ std::cout << "Alignment " << std::endl;
+ std::cout << " genome : ";
+ std::cout << genomeFragment << std::endl;
+ std::cout << " read : ";
+ std::cout << read << std::endl;
+}
+
+int main()
+{
+ // We have given a genome sequence
+ Dna5String genome = "ATGGTTTCAACGTAATGCTGAACATGTCGCGT";
+ // A read sequence
+ Dna5String read = "TGGTNTCA";
+ // And the begin position of a given alignment between the read and the genome
+ unsigned beginPosition = 1;
+
+ // Create Infix of type Dna5String and get the corresponding infix sequence of genome
+ Infix<Dna5String>::Type inf = infix(genome, beginPosition, beginPosition + length(read));
+ // Call of our function to print the simple alignment
+ printAlign(inf, read);
+ return 0;
+}
diff --git a/demos/tutorial/sequences/string_assignment_1_solution.cpp b/demos/tutorial/sequences/string_assignment_1_solution.cpp
new file mode 100644
index 0000000..f1b832f
--- /dev/null
+++ b/demos/tutorial/sequences/string_assignment_1_solution.cpp
@@ -0,0 +1,67 @@
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+
+using namespace seqan;
+// Function to print simple alignment between two sequences with the same length
+template <typename TText1, typename TText2>
+void printAlign(TText1 const & genomeFragment, TText2 const & read)
+{
+ std::cout << "Alignment " << std::endl;
+ std::cout << " genome : " << genomeFragment << std::endl;
+ std::cout << " read : " << read << std::endl;
+}
+
+int main(int, char const **)
+{
+ // Build reads and genomes
+ DnaString chr1 = "TATAATATTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCTAGATGTGCAGCTCGATCGAATGCACGTGTGTGCGATCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATTTAG";
+ // Build List containing all reads
+ typedef String<DnaString> TDnaList;
+ TDnaList readList;
+ resize(readList, 4);
+ readList[0] = "TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT";
+ readList[1] = "TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT";
+ readList[2] = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA";
+ readList[3] = "CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA";
+ // Append a second chromosome sequence fragment to chr1
+ DnaString chr2 = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACACGTCTCTGTGTTCCGACGTGTGTCACGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACACATGCTGCTG";
+ append(chr1, chr2);
+ // Print readlist
+ std::cout << " \n Read list: " << std::endl;
+ for (unsigned i = 0; i < length(readList); ++i)
+ std::cout << readList[i] << std::endl;
+ // Assume we have mapped the 4 reads to chr1 (and chr2) and now have the mapping start positions (no gaps).
+ // Store the start position in a String alignPosList: 7, 100, 172, 272
+ String<unsigned> alignPosList;
+ resize(alignPosList, 4);
+ alignPosList[0] = 7;
+ alignPosList[1] = 100;
+ alignPosList[2] = 172;
+ alignPosList[3] = 272;
+ // Optional
+ // Bisulfite conversion
+ // Assume chr1 is beeing bisulfate treated: Copy chr1 to a new genome bsChr1 and exchange every 'C' with a 'T'
+ DnaString bsChr1;
+ assign(bsChr1, chr1);
+ for (unsigned i = 0; i < length(bsChr1); ++i)
+ if (bsChr1[i] == 'C')
+ bsChr1[i] = 'T';
+ // Print alignments of the reads with chr1 (or bsChr1) sequence using the function printAlign
+ // and the positions in alignPosList.
+ // To do that, you have to create a copy of the fragment in chr1 (bsChr1) that is aligned to the read.
+ std::cout << " \n Print alignment: " << std::endl;
+ for (unsigned i = 0; i < length(readList); ++i)
+ {
+ // Begin position beginPosition of a given alignment between the read and the genome
+ unsigned beginPosition = alignPosList[i];
+ // Genome fragment
+ DnaString genomeFragment;
+ // We have to create a copy of the corresponding fragment of the genome, where the read aligns to
+ for (unsigned j = 0; j < length(readList[i]); ++j)
+ appendValue(genomeFragment, chr1[beginPosition + j]);
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, readList[i]);
+ }
+ return 1;
+}
diff --git a/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp b/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp
index 05c0279..312131e 100644
--- a/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp
+++ b/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp
@@ -1,26 +1,34 @@
#include <iostream>
#include <seqan/sequence.h>
+#include <seqan/stream.h>
+
+#include <time.h>
using namespace seqan;
int main()
{
- unsigned num = 100000;
- double start;
+ unsigned num = 1000000;
+ time_t start;
String<Dna> str;
clear(str);
- start = sysTime();
+ start = time(NULL);
for (unsigned i = 0; i < num; ++i)
+ {
+
appendValue(str, 'A', Exact());
- std::cout << "Strategy Exact() took: " << sysTime() - start << " s\n\n";
+ }
+ std::cout << "Strategy Exact() took: " << time(NULL) - start << " s\n\n";
clear(str);
- shrinkToFit(str);
- start = sysTime();
+ start = time(NULL);
for (unsigned i = 0; i < num; ++i)
+ {
+
appendValue(str, 'A', Generous());
- std::cout << "Strategy Generous() took: " << sysTime() - start << " s\n\n";
+ }
+ std::cout << "Strategy Generous() took: " << time(NULL) - start << " s\n\n";
return 0;
}
diff --git a/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp.stdout b/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp.stdout
deleted file mode 100644
index 1d843ad..0000000
--- a/demos/tutorial/sequences_in_depth/assignment_exact_generous_solution.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Strategy Exact() took: 380 s
-
-Strategy Generous() took: 0 s
-
diff --git a/demos/tutorial/sequences_in_depth/example_overflow.cpp b/demos/tutorial/sequences_in_depth/example_overflow.cpp
deleted file mode 100644
index 926fe68..0000000
--- a/demos/tutorial/sequences_in_depth/example_overflow.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <seqan/stream.h>
-
-using namespace seqan;
-
-int main()
-{
-//![example]
- String<Dna> dnaSeq;
- // Sets the capacity of dnaSeq to 5.
- resize(dnaSeq, 4, Exact());
- // Only "TATA" is assigned to dnaSeq, since dnaSeq is limited to 4.
- assign(dnaSeq, "TATAGGGG", Limit());
- std::cout << dnaSeq << std::endl;
- // Use the default expansion strategy.
- append(dnaSeq, "GCGCGC");
- std::cout << dnaSeq << std::endl;
-//![example]
- return 0;
-}
\ No newline at end of file
diff --git a/demos/tutorial/sequences_in_depth/example_overflow.cpp.stdout b/demos/tutorial/sequences_in_depth/example_overflow.cpp.stdout
deleted file mode 100644
index fb21fe6..0000000
--- a/demos/tutorial/sequences_in_depth/example_overflow.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-TATA
-TATAGCGCGC
diff --git a/demos/tutorial/simple_rna_seq/example.gtf b/demos/tutorial/simple_rna_seq/example.gtf
deleted file mode 100644
index bac3f84..0000000
--- a/demos/tutorial/simple_rna_seq/example.gtf
+++ /dev/null
@@ -1,12 +0,0 @@
-#!genome-build BDGP 5
-#!genome-version BDGP5
-#!genome-date 2006-04
-#!genome-build-accession NCBI:GCA_000001215.1
-#!genebuild-last-updated 2012-04
-Uextra FlyBase gene 523024 523086 . - . gene_id "FBgn0264003"; gene_version "5"; gene_name "mir-5613"; gene_source "FlyBase"; gene_biotype "pre_miRNA";
-Uextra FlyBase transcript 523024 523086 . - . gene_id "FBgn0264003"; gene_version "5"; transcript_id "FBtr0330361"; transcript_version "5"; gene_name "mir-5613"; gene_source "FlyBase"; gene_biotype "pre_miRNA"; transcript_name "mir-5613-RM"; transcript_source "FlyBase"; transcript_biotype "pre_miRNA";
-Uextra FlyBase exon 523024 523086 . - . gene_id "FBgn0264003"; gene_version "5"; transcript_id "FBtr0330361"; transcript_version "5"; exon_number "1"; gene_name "mir-5613"; gene_source "FlyBase"; gene_biotype "pre_miRNA"; transcript_name "mir-5613-RM"; transcript_source "FlyBase"; transcript_biotype "pre_miRNA"; exon_id "FBtr0330361:1"; exon_version "1";
-Uextra FlyBase transcript 523024 523048 . - . gene_id "FBgn0264003"; gene_version "5"; transcript_id "FBtr0330363"; transcript_version "5"; gene_name "mir-5613"; gene_source "FlyBase"; gene_biotype "pre_miRNA"; transcript_name "mir-5613-RB"; transcript_source "FlyBase"; transcript_biotype "miRNA";
-Uextra FlyBase exon 523024 523048 . - . gene_id "FBgn0264003"; gene_version "5"; transcript_id "FBtr0330363"; transcript_version "5"; exon_number "1"; gene_name "mir-5613"; gene_source "FlyBase"; gene_biotype "pre_miRNA"; transcript_name "mir-5613-RB"; transcript_source "FlyBase"; transcript_biotype "miRNA"; exon_id "FBtr0330363:1"; exon_version "1";
-Uextra FlyBase transcript 523060 523086 . - . gene_id "FBgn0264003"; gene_version "5"; transcript_id "FBtr0330362"; transcript_version "5"; gene_name "mir-5613"; gene_source "FlyBase"; gene_biotype "pre_miRNA"; transcript_name "mir-5613-RA"; transcript_source "FlyBase"; transcript_biotype "miRNA";
-Uextra FlyBase exon 523060 523086 . - . gene_id "FBgn0264003"; gene_version "5"; transcript_id "FBtr0330362"; transcript_version "5"; exon_number "1"; gene_name "mir-5613"; gene_source "FlyBase"; gene_biotype "pre_miRNA"; transcript_name "mir-5613-RA"; transcript_source "FlyBase"; transcript_biotype "miRNA"; exon_id "FBtr0330362:1"; exon_version "1";
diff --git a/demos/tutorial/simple_rna_seq/example.sam b/demos/tutorial/simple_rna_seq/example.sam
deleted file mode 100644
index fc20de2..0000000
--- a/demos/tutorial/simple_rna_seq/example.sam
+++ /dev/null
@@ -1,22 +0,0 @@
-sim020940898 163 Y 61657 255 36M = 61815 0 TAAAATTTATTTCTCACACTTTGTCAGTCTGTAAAG * XS:A:-
-sim005851145 163 Y 61680 255 36M = 61894 0 TCAGTCTGTAAAGGATATATTGAATACCCTATTTAA * XS:A:-
-sim013167198 163 Y 61684 255 36M = 61866 0 TCTGTAAAGGATATATTGAATACCCTATTTAATAAA * XS:A:-
-sim030230963 99 Y 61714 255 36M = 61924 0 AATAAAACATAAAGTCAAATAGGCGCAATATCATCT * XS:A:-
-sim031859056 163 Y 61720 255 36M = 61944 0 ACATAAAGTCAAATAGGCGCAATATCATCTTTATAT * XS:A:-
-sim038307292 163 Y 61724 255 36M = 61912 0 AAAGTCAAATAGGCGCAATATCATCTTTATATTCAC * XS:A:-
-sim029261458 99 Y 61735 255 36M = 61926 0 GGCGCAATATCATCTTTATATTCACTTGACAAATTC * XS:A:-
-sim026623121 99 Y 61742 255 36M = 61906 0 TATCATATTTATATTCACTTGACAAATTCATGACAT * XS:A:-
-sim030145028 163 Y 61750 255 36M = 61925 0 TTATATTCACTTGACAAATTCATGACATTGAATGTG * XS:A:-
-sim032741464 163 Y 61751 255 36M = 61925 0 TATATTCACTTGACAAATTCATGACATTGAATGTGA * XS:A:-
-sim006398871 99 Y 61756 255 36M = 61921 0 TCACTTGACAAATTCATGACATTGAATGTGAACAAG * XS:A:-
-sim023135580 163 Y 61756 255 36M = 61946 0 TCACTTGACAAATTCATGACATTGAATGTGAACAAG * XS:A:-
-sim022488315 99 Y 61777 255 36M = 61984 0 TTGAATGTGAACAAGGATGCCTACTTTTAAAATGAA * XS:A:-
-sim038909996 99 Y 61778 255 36M = 61964 0 TGAATGTGAACAAGGATGCCTACTTTTAAAATGAAT * XS:A:-
-sim012316743 163 Y 61783 255 36M = 61957 0 GTGAACAAGGATGCCTACTTTTAAAATGAATTTCCT * XS:A:-
-sim026592158 99 Y 61784 255 36M = 61963 0 TGAACAAGGATGCCTACTTTTAAAATGAATTTCCTG * XS:A:-
-sim018913416 99 Y 61785 255 36M = 61954 0 GAACAAGGATGCCTGCTTTTAAAATGAATTTACTGT * XS:A:-
-sim012768899 99 Y 61793 255 36M = 61984 0 ATGCCTGCTTTTAAAATGAATTTACTGTCTCAATGC * XS:A:-
-sim007458546 99 Y 61807 255 36M = 61952 0 AATGAATTTACTGTCTCAATGCCAATATCCCTATAT * XS:A:-
-sim020940898 83 Y 61815 255 36M = 61657 0 TACTGTCTCAATGCCAATATCCCTATATGTTAGGAT * XS:A:-
-sim001086279 99 Y 61831 255 36M = 62036 0 ATATCCCTATATGTTAGGATTATACACTTAGGGCAG * XS:A:-
-sim024860817 163 Y 61833 255 36M = 62032 0 ATCCCTATATGTTAGGATTATACACTTAGGGCAGGC * XS:A:-
\ No newline at end of file
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment1.cpp b/demos/tutorial/simple_rna_seq/genequant_assignment1.cpp
deleted file mode 100644
index c1f044f..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_assignment1.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-
-// define used types
-typedef FragmentStore<> TStore;
-//
-// 2. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- // INSERT YOUR CODE HERE ...
- //
-
- return true;
-}
-
-//![main]
-int main(int argc, char const * argv[])
-{
- TStore store;
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, annotationFileName))
- return 1;
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment1.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_assignment1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment2.cpp b/demos/tutorial/simple_rna_seq/genequant_assignment2.cpp
deleted file mode 100644
index 45b244e..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_assignment2.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-
-//![definitions]
-// define used types
-typedef FragmentStore<> TStore;
-typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
-typedef TAnnotation::TId TId;
-typedef TAnnotation::TPos TPos;
-typedef IntervalAndCargo<TPos, TId> TInterval;
-//![definitions]
-
-//![definitions_end]
-//
-// 1. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- BamFileIn alignmentFile;
- if (!open(alignmentFile, alignmentFileName.c_str()))
- {
- std::cerr << "Couldn't open alignment file " << alignmentFileName << std::endl;
- return false;
- }
- std::cout << "Loading read alignments ..... " << std::flush;
- readRecords(store, alignmentFile);
- std::cout << "[" << length(store.alignedReadStore) << "]" << std::endl;
-
- // load annotations
- GffFileIn annotationFile;
- if (!open(annotationFile, toCString(annotationFileName)))
- {
- std::cerr << "Couldn't open annotation file" << annotationFileName << std::endl;
- return false;
- }
- std::cout << "Loading genome annotation ... " << std::flush;
- readRecords(store, annotationFile);
- std::cout << "[" << length(store.annotationStore) << "]" << std::endl;
-
- return true;
-}
-
-//![definitions_end]
-
-//![yourcode]
-//
-// 3. Extract intervals from gene annotations (grouped by contigId)
-//
-void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
-{
- // INSERT YOUR CODE HERE ...
- //
-}
-//![yourcode]
-
-//![yourcode_end]
-int main(int argc, char const * argv[])
-{
-//![main]
- TStore store;
- String<String<TInterval> > intervals;
-//![main]
-//![main_end]
-
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, alignmentFileName))
- return 1;
-//![main_end]
-//![main2]
- extractGeneIntervals(intervals, store);
-//![main2]
-
-//![main2_end]
- return 0;
-}
-//![main2_end]
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment2.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_assignment2.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment3.cpp b/demos/tutorial/simple_rna_seq/genequant_assignment3.cpp
deleted file mode 100644
index 685ae7c..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_assignment3.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-
-//![definitions]
-// define used types
-typedef FragmentStore<> TStore;
-typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
-typedef TAnnotation::TId TId;
-typedef TAnnotation::TPos TPos;
-typedef IntervalAndCargo<TPos, TId> TInterval;
-typedef IntervalTree<TPos, TId> TIntervalTree;
-//![definitions]
-//![definitions_end]
-//
-// 1. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- BamFileIn alignmentFile;
- if (!open(alignmentFile, alignmentFileName.c_str()))
- {
- std::cerr << "Couldn't open alignment file " << alignmentFileName << std::endl;
- return false;
- }
- std::cout << "Loading read alignments ..... " << std::flush;
- readRecords(store, alignmentFile);
- std::cout << "[" << length(store.alignedReadStore) << "]" << std::endl;
-
- // load annotations
- GffFileIn annotationFile;
- if (!open(annotationFile, toCString(annotationFileName)))
- {
- std::cerr << "Couldn't open annotation file" << annotationFileName << std::endl;
- return false;
- }
- std::cout << "Loading genome annotation ... " << std::flush;
- readRecords(store, annotationFile);
- std::cout << "[" << length(store.annotationStore) << "]" << std::endl;
-
- return true;
-}
-
-//
-// 2. Extract intervals from gene annotations (grouped by contigId)
-//
-void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
-{
- // extract intervals from gene annotations (grouped by contigId)
- resize(intervals, length(store.contigStore));
-
- Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
-
- if (!goDown(it))
- return;
-
- do
- {
- SEQAN_ASSERT_EQ(getType(it), "gene");
- TPos beginPos = getAnnotation(it).beginPos;
- TPos endPos = getAnnotation(it).endPos;
- TId contigId = getAnnotation(it).contigId;
-
- if (beginPos > endPos)
- std::swap(beginPos, endPos);
-
- // insert forward-strand interval of the gene and its annotation id
- appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
- }
- while (goRight(it));
-}
-
-//![definitions_end]
-//![yourcode]
-//
-// 3. Construct interval trees
-//
-void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
- String<String<TInterval> > & intervals)
-{
- // INSERT YOUR CODE HERE ...
- //
-}
-//![yourcode]
-
-//![yourcode_end]
-int main(int argc, char const * argv[])
-{
- TStore store;
-//![yourcode_end]
-//![main]
- String<String<TInterval> > intervals;
- String<TIntervalTree> intervalTrees;
-//![main]
-
-//![main_end]
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, alignmentFileName))
- return 1;
-//![main_end]
-
-//![main2]
- extractGeneIntervals(intervals, store);
- constructIntervalTrees(intervalTrees, intervals);
-//![main2]
-
-//![main2_end]
- return 0;
-}
-//![main2_end]
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment3.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_assignment3.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment4.cpp b/demos/tutorial/simple_rna_seq/genequant_assignment4.cpp
deleted file mode 100644
index 7270b3b..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_assignment4.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/arg_parse.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-//![definitions]
-// define used types
-typedef FragmentStore<> TStore;
-typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
-typedef TAnnotation::TId TId;
-typedef TAnnotation::TPos TPos;
-typedef IntervalAndCargo<TPos, TId> TInterval;
-typedef IntervalTree<TPos, TId> TIntervalTree;
-typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
-//![definitions]
-
-//![definitions_end]
-
-//
-// 1. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- BamFileIn alignmentFile;
- if (!open(alignmentFile, alignmentFileName.c_str()))
- {
- std::cerr << "Couldn't open alignment file " << alignmentFileName << std::endl;
- return false;
- }
- std::cout << "Loading read alignments ..... " << std::flush;
- readRecords(store, alignmentFile);
- std::cout << "[" << length(store.alignedReadStore) << "]" << std::endl;
-
- // load annotations
- GffFileIn annotationFile;
- if (!open(annotationFile, toCString(annotationFileName)))
- {
- std::cerr << "Couldn't open annotation file" << annotationFileName << std::endl;
- return false;
- }
- std::cout << "Loading genome annotation ... " << std::flush;
- readRecords(store, annotationFile);
- std::cout << "[" << length(store.annotationStore) << "]" << std::endl;
-
- return true;
-}
-
-//
-// 2. Extract intervals from gene annotations (grouped by contigId)
-//
-void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
-{
- // extract intervals from gene annotations (grouped by contigId)
- resize(intervals, length(store.contigStore));
-
- Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
-
- if (!goDown(it))
- return;
-
- do
- {
- SEQAN_ASSERT_EQ(getType(it), "gene");
- TPos beginPos = getAnnotation(it).beginPos;
- TPos endPos = getAnnotation(it).endPos;
- TId contigId = getAnnotation(it).contigId;
-
- if (beginPos > endPos)
- std::swap(beginPos, endPos);
-
- // insert forward-strand interval of the gene and its annotation id
- appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
- }
- while (goRight(it));
-}
-
-//
-// 3. Construct interval trees
-//
-void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
- String<String<TInterval> > & intervals)
-{
- int numContigs = length(intervals);
- resize(intervalTrees, numContigs);
-
- SEQAN_OMP_PRAGMA(parallel for)
- for (int i = 0; i < numContigs; ++i)
- createIntervalTree(intervalTrees[i], intervals[i]);
-}
-
-//![definitions_end]
-
-//![yourcode]
-//
-// 4. Count reads per gene
-//
-void countReadsPerGene(String<unsigned> & readsPerGene, String<TIntervalTree> const & intervalTrees, TStore const & store)
-{
- // INSERT YOUR CODE HERE ...
- //
-}
-//![yourcode]
-
-//![yourcode_end]
-int main(int argc, char const * argv[])
-{
- TStore store;
- String<String<TInterval> > intervals;
-//![yourcode_end]
-
-//![main]
- String<TIntervalTree> intervalTrees;
- String<unsigned> readsPerGene;
-//![main]
-
-//![main_end]
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, alignmentFileName))
- return 1;
-//![main_end]
-
-//![main2]
- extractGeneIntervals(intervals, store);
- constructIntervalTrees(intervalTrees, intervals);
- countReadsPerGene(readsPerGene, intervalTrees, store);
-//![main2]
-
-//![main2_end]
- return 0;
-}
-//![main2_end]
\ No newline at end of file
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment4.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_assignment4.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment5.cpp b/demos/tutorial/simple_rna_seq/genequant_assignment5.cpp
deleted file mode 100644
index a83190b..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_assignment5.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/arg_parse.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-
-//![definitions]
-// define used types
-typedef FragmentStore<> TStore;
-typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
-typedef TAnnotation::TId TId;
-typedef TAnnotation::TPos TPos;
-typedef IntervalAndCargo<TPos, TId> TInterval;
-typedef IntervalTree<TPos, TId> TIntervalTree;
-typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
-//![definitions]
-
-//![definitions_end]
-
-//
-// 1. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- BamFileIn alignmentFile;
- if (!open(alignmentFile, alignmentFileName.c_str()))
- {
- std::cerr << "Couldn't open alignment file " << alignmentFileName << std::endl;
- return false;
- }
- std::cout << "Loading read alignments ..... " << std::flush;
- readRecords(store, alignmentFile);
- std::cout << "[" << length(store.alignedReadStore) << "]" << std::endl;
-
- // load annotations
- GffFileIn annotationFile;
- if (!open(annotationFile, toCString(annotationFileName)))
- {
- std::cerr << "Couldn't open annotation file" << annotationFileName << std::endl;
- return false;
- }
- std::cout << "Loading genome annotation ... " << std::flush;
- readRecords(store, annotationFile);
- std::cout << "[" << length(store.annotationStore) << "]" << std::endl;
-
- return true;
-}
-
-//
-// 2. Extract intervals from gene annotations (grouped by contigId)
-//
-void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
-{
- // extract intervals from gene annotations (grouped by contigId)
- resize(intervals, length(store.contigStore));
-
- Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
-
- if (!goDown(it))
- return;
-
- do
- {
- SEQAN_ASSERT_EQ(getType(it), "gene");
- TPos beginPos = getAnnotation(it).beginPos;
- TPos endPos = getAnnotation(it).endPos;
- TId contigId = getAnnotation(it).contigId;
-
- if (beginPos > endPos)
- std::swap(beginPos, endPos);
-
- // insert forward-strand interval of the gene and its annotation id
- appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
- }
- while (goRight(it));
-}
-
-//
-// 3. Construct interval trees
-//
-void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
- String<String<TInterval> > & intervals)
-{
- int numContigs = length(intervals);
- resize(intervalTrees, numContigs);
-
- SEQAN_OMP_PRAGMA(parallel for)
- for (int i = 0; i < numContigs; ++i)
- createIntervalTree(intervalTrees[i], intervals[i]);
-}
-
-//
-// 4. Count reads per gene
-//
-void countReadsPerGene(String<unsigned> & readsPerGene, String<TIntervalTree> const & intervalTrees, TStore const & store)
-{
- resize(readsPerGene, length(store.annotationStore), 0);
- String<TId> result;
- int numAlignments = length(store.alignedReadStore);
-
- // iterate aligned reads and get search their begin and end positions
- SEQAN_OMP_PRAGMA(parallel for private (result))
- for (int i = 0; i < numAlignments; ++i)
- {
- TAlignedRead const & ar = store.alignedReadStore[i];
- TPos queryBegin = _min(ar.beginPos, ar.endPos);
- TPos queryEnd = _max(ar.beginPos, ar.endPos);
-
- // search read-overlapping genes
- findIntervals(result, intervalTrees[ar.contigId], queryBegin, queryEnd);
-
- // increase read counter for each overlapping annotation given the id in the interval tree
- for (unsigned j = 0; j < length(result); ++j)
- {
- SEQAN_OMP_PRAGMA(atomic)
- readsPerGene[result[j]] += 1;
- }
- }
-}
-
-//![definitions_end]
-
-//![yourcode]
-//
-// 5. Output RPKM values
-//
-void outputGeneCoverage(String<unsigned> const & readsPerGene, TStore const & store)
-{
- // INSERT YOUR CODE HERE ...
- //
-}
-//![yourcode]
-
-//![yourcode_end]
-int main(int argc, char const * argv[])
-{
- TStore store;
- String<String<TInterval> > intervals;
- String<TIntervalTree> intervalTrees;
- String<unsigned> readsPerGene;
-
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, alignmentFileName))
- return 1;
-
-//![yourcode_end]
-
-//![main]
- extractGeneIntervals(intervals, store);
- constructIntervalTrees(intervalTrees, intervals);
- countReadsPerGene(readsPerGene, intervalTrees, store);
- outputGeneCoverage(readsPerGene, store);
-//![main]
-
-//![main_end]
- return 0;
-}
-//![main_end]
diff --git a/demos/tutorial/simple_rna_seq/genequant_assignment5.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_assignment5.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution1.cpp b/demos/tutorial/simple_rna_seq/genequant_solution1.cpp
deleted file mode 100644
index 29f01ec..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution1.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-
-// define used types
-typedef FragmentStore<> TStore;
-
-//![solution]
-//
-// 1. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- BamFileIn alignmentFile;
- if (!open(alignmentFile, alignmentFileName.c_str()))
- {
- std::cerr << "Couldn't open alignment file " << alignmentFileName << std::endl;
- return false;
- }
- std::cout << "Loading read alignments ..... " << std::flush;
- readRecords(store, alignmentFile);
- std::cout << "[" << length(store.alignedReadStore) << "]" << std::endl;
-
- // load annotations
- GffFileIn annotationFile;
- if (!open(annotationFile, toCString(annotationFileName)))
- {
- std::cerr << "Couldn't open annotation file" << annotationFileName << std::endl;
- return false;
- }
- std::cout << "Loading genome annotation ... " << std::flush;
- readRecords(store, annotationFile);
- std::cout << "[" << length(store.annotationStore) << "]" << std::endl;
-
- return true;
-}
-//![solution]
-
-//![main]
-int main(int argc, char const * argv[])
-{
- TStore store;
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, alignmentFileName))
- return 1;
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution1.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_solution1.cpp.stdout
deleted file mode 100644
index d08b74c..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution1.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Loading read alignments ..... [22]
-Loading genome annotation ... [12]
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution2.cpp b/demos/tutorial/simple_rna_seq/genequant_solution2.cpp
deleted file mode 100644
index ff81bfb..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution2.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-
-// define used types
-typedef FragmentStore<> TStore;
-typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
-typedef TAnnotation::TId TId;
-typedef TAnnotation::TPos TPos;
-typedef IntervalAndCargo<TPos, TId> TInterval;
-
-//
-// 1. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- BamFileIn alignmentFile;
- if (!open(alignmentFile, alignmentFileName.c_str()))
- {
- std::cerr << "Couldn't open alignment file " << alignmentFileName << std::endl;
- return false;
- }
- std::cout << "Loading read alignments ..... " << std::flush;
- readRecords(store, alignmentFile);
- std::cout << "[" << length(store.alignedReadStore) << "]" << std::endl;
-
- // load annotations
- GffFileIn annotationFile;
- if (!open(annotationFile, toCString(annotationFileName)))
- {
- std::cerr << "Couldn't open annotation file" << annotationFileName << std::endl;
- return false;
- }
- std::cout << "Loading genome annotation ... " << std::flush;
- readRecords(store, annotationFile);
- std::cout << "[" << length(store.annotationStore) << "]" << std::endl;
-
- return true;
-}
-
-//![solution]
-//
-// 2. Extract intervals from gene annotations (grouped by contigId)
-//
-void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
-{
- // extract intervals from gene annotations (grouped by contigId)
- resize(intervals, length(store.contigStore));
-
- Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
-
- if (!goDown(it))
- return;
-
- do
- {
- SEQAN_ASSERT_EQ(getType(it), "gene");
- TPos beginPos = getAnnotation(it).beginPos;
- TPos endPos = getAnnotation(it).endPos;
- TId contigId = getAnnotation(it).contigId;
-
- if (beginPos > endPos)
- std::swap(beginPos, endPos);
-
- // insert forward-strand interval of the gene and its annotation id
- appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
- }
- while (goRight(it));
-}
-//![solution]
-
-//![main]
-int main(int argc, char const * argv[])
-{
- TStore store;
- String<String<TInterval> > intervals;
-
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, alignmentFileName))
- return 1;
-
- extractGeneIntervals(intervals, store);
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution2.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_solution2.cpp.stdout
deleted file mode 100644
index d08b74c..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution2.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Loading read alignments ..... [22]
-Loading genome annotation ... [12]
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution3.cpp b/demos/tutorial/simple_rna_seq/genequant_solution3.cpp
deleted file mode 100644
index 14a4353..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution3.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-
-// define used types
-typedef FragmentStore<> TStore;
-typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
-typedef TAnnotation::TId TId;
-typedef TAnnotation::TPos TPos;
-typedef IntervalAndCargo<TPos, TId> TInterval;
-typedef IntervalTree<TPos, TId> TIntervalTree;
-
-//
-// 1. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- BamFileIn alignmentFile;
- if (!open(alignmentFile, alignmentFileName.c_str()))
- {
- std::cerr << "Couldn't open alignment file " << alignmentFileName << std::endl;
- return false;
- }
- std::cout << "Loading read alignments ..... " << std::flush;
- readRecords(store, alignmentFile);
- std::cout << "[" << length(store.alignedReadStore) << "]" << std::endl;
-
- // load annotations
- GffFileIn annotationFile;
- if (!open(annotationFile, toCString(annotationFileName)))
- {
- std::cerr << "Couldn't open annotation file" << annotationFileName << std::endl;
- return false;
- }
- std::cout << "Loading genome annotation ... " << std::flush;
- readRecords(store, annotationFile);
- std::cout << "[" << length(store.annotationStore) << "]" << std::endl;
-
- return true;
-}
-
-//
-// 2. Extract intervals from gene annotations (grouped by contigId)
-//
-void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
-{
- // extract intervals from gene annotations (grouped by contigId)
- resize(intervals, length(store.contigStore));
-
- Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
-
- if (!goDown(it))
- return;
-
- do
- {
- SEQAN_ASSERT_EQ(getType(it), "gene");
- TPos beginPos = getAnnotation(it).beginPos;
- TPos endPos = getAnnotation(it).endPos;
- TId contigId = getAnnotation(it).contigId;
-
- if (beginPos > endPos)
- std::swap(beginPos, endPos);
-
- // insert forward-strand interval of the gene and its annotation id
- appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
- }
- while (goRight(it));
-}
-
-//![solution]
-//
-// 3. Construct interval trees
-//
-void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
- String<String<TInterval> > & intervals)
-{
- int numContigs = length(intervals);
- resize(intervalTrees, numContigs);
-
- SEQAN_OMP_PRAGMA(parallel for)
- for (int i = 0; i < numContigs; ++i)
- createIntervalTree(intervalTrees[i], intervals[i]);
-}
-//![solution]
-
-//![main]
-int main(int argc, char const * argv[])
-{
- TStore store;
- String<String<TInterval> > intervals;
- String<TIntervalTree> intervalTrees;
-
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, alignmentFileName))
- return 1;
-
- extractGeneIntervals(intervals, store);
- constructIntervalTrees(intervalTrees, intervals);
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution3.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_solution3.cpp.stdout
deleted file mode 100644
index d08b74c..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution3.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Loading read alignments ..... [22]
-Loading genome annotation ... [12]
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution4.cpp b/demos/tutorial/simple_rna_seq/genequant_solution4.cpp
deleted file mode 100644
index f8381b0..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution4.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-
-// define used types
-typedef FragmentStore<> TStore;
-typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
-typedef TAnnotation::TId TId;
-typedef TAnnotation::TPos TPos;
-typedef IntervalAndCargo<TPos, TId> TInterval;
-typedef IntervalTree<TPos, TId> TIntervalTree;
-typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
-
-
-//
-// 1. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- BamFileIn alignmentFile;
- if (!open(alignmentFile, alignmentFileName.c_str()))
- {
- std::cerr << "Couldn't open alignment file " << alignmentFileName << std::endl;
- return false;
- }
- std::cout << "Loading read alignments ..... " << std::flush;
- readRecords(store, alignmentFile);
- std::cout << "[" << length(store.alignedReadStore) << "]" << std::endl;
-
- // load annotations
- GffFileIn annotationFile;
- if (!open(annotationFile, toCString(annotationFileName)))
- {
- std::cerr << "Couldn't open annotation file" << annotationFileName << std::endl;
- return false;
- }
- std::cout << "Loading genome annotation ... " << std::flush;
- readRecords(store, annotationFile);
- std::cout << "[" << length(store.annotationStore) << "]" << std::endl;
-
- return true;
-}
-
-//
-// 2. Extract intervals from gene annotations (grouped by contigId)
-//
-void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
-{
- // extract intervals from gene annotations (grouped by contigId)
- resize(intervals, length(store.contigStore));
-
- Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
-
- if (!goDown(it))
- return;
-
- do
- {
- SEQAN_ASSERT_EQ(getType(it), "gene");
- TPos beginPos = getAnnotation(it).beginPos;
- TPos endPos = getAnnotation(it).endPos;
- TId contigId = getAnnotation(it).contigId;
-
- if (beginPos > endPos)
- std::swap(beginPos, endPos);
-
- // insert forward-strand interval of the gene and its annotation id
- appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
- }
- while (goRight(it));
-}
-
-//
-// 3. Construct interval trees
-//
-void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
- String<String<TInterval> > & intervals)
-{
- int numContigs = length(intervals);
- resize(intervalTrees, numContigs);
-
- SEQAN_OMP_PRAGMA(parallel for)
- for (int i = 0; i < numContigs; ++i)
- createIntervalTree(intervalTrees[i], intervals[i]);
-}
-
-//![solution]
-//
-// 4. Count reads per gene
-//
-void countReadsPerGene(String<unsigned> & readsPerGene, String<TIntervalTree> const & intervalTrees, TStore const & store)
-{
- resize(readsPerGene, length(store.annotationStore), 0);
- String<TId> result;
- int numAlignments = length(store.alignedReadStore);
-
- // iterate aligned reads and get search their begin and end positions
- SEQAN_OMP_PRAGMA(parallel for private (result))
- for (int i = 0; i < numAlignments; ++i)
- {
- TAlignedRead const & ar = store.alignedReadStore[i];
- TPos queryBegin = _min(ar.beginPos, ar.endPos);
- TPos queryEnd = _max(ar.beginPos, ar.endPos);
-
- // search read-overlapping genes
- findIntervals(result, intervalTrees[ar.contigId], queryBegin, queryEnd);
-
- // increase read counter for each overlapping annotation given the id in the interval tree
- for (unsigned j = 0; j < length(result); ++j)
- {
- SEQAN_OMP_PRAGMA(atomic)
- readsPerGene[result[j]] += 1;
- }
- }
-}
-//![solution]
-
-//![main]
-int main(int argc, char const * argv[])
-{
- TStore store;
- String<String<TInterval> > intervals;
- String<TIntervalTree> intervalTrees;
- String<unsigned> readsPerGene;
-
-
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, alignmentFileName))
- return 1;
-
- extractGeneIntervals(intervals, store);
- constructIntervalTrees(intervalTrees, intervals);
- countReadsPerGene(readsPerGene, intervalTrees, store);
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution4.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_solution4.cpp.stdout
deleted file mode 100644
index d08b74c..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution4.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Loading read alignments ..... [22]
-Loading genome annotation ... [12]
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution5.cpp b/demos/tutorial/simple_rna_seq/genequant_solution5.cpp
deleted file mode 100644
index fdb22bc..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution5.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-#include <iostream>
-#include <seqan/store.h>
-#include <seqan/arg_parse.h>
-#include <seqan/misc/interval_tree.h>
-#include <seqan/parallel.h>
-
-using namespace seqan;
-
-
-// define used types
-typedef FragmentStore<> TStore;
-typedef Value<TStore::TAnnotationStore>::Type TAnnotation;
-typedef TAnnotation::TId TId;
-typedef TAnnotation::TPos TPos;
-typedef IntervalAndCargo<TPos, TId> TInterval;
-typedef IntervalTree<TPos, TId> TIntervalTree;
-typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
-
-//
-// 1. Load annotations and alignments from files
-//
-bool loadFiles(TStore & store, std::string const & annotationFileName, std::string const & alignmentFileName)
-{
- BamFileIn alignmentFile;
- if (!open(alignmentFile, alignmentFileName.c_str()))
- {
- std::cerr << "Couldn't open alignment file " << alignmentFileName << std::endl;
- return false;
- }
- std::cout << "Loading read alignments ..... " << std::flush;
- readRecords(store, alignmentFile);
- std::cout << "[" << length(store.alignedReadStore) << "]" << std::endl;
-
- // load annotations
- GffFileIn annotationFile;
- if (!open(annotationFile, toCString(annotationFileName)))
- {
- std::cerr << "Couldn't open annotation file" << annotationFileName << std::endl;
- return false;
- }
- std::cout << "Loading genome annotation ... " << std::flush;
- readRecords(store, annotationFile);
- std::cout << "[" << length(store.annotationStore) << "]" << std::endl;
-
- return true;
-}
-
-//
-// 2. Extract intervals from gene annotations (grouped by contigId)
-//
-void extractGeneIntervals(String<String<TInterval> > & intervals, TStore const & store)
-{
- // extract intervals from gene annotations (grouped by contigId)
- resize(intervals, length(store.contigStore));
-
- Iterator<TStore const, AnnotationTree<> >::Type it = begin(store, AnnotationTree<>());
-
- if (!goDown(it))
- return;
-
- do
- {
- SEQAN_ASSERT_EQ(getType(it), "gene");
- TPos beginPos = getAnnotation(it).beginPos;
- TPos endPos = getAnnotation(it).endPos;
- TId contigId = getAnnotation(it).contigId;
-
- if (beginPos > endPos)
- std::swap(beginPos, endPos);
-
- // insert forward-strand interval of the gene and its annotation id
- appendValue(intervals[contigId], TInterval(beginPos, endPos, value(it)));
- }
- while (goRight(it));
-}
-
-//
-// 3. Construct interval trees
-//
-void constructIntervalTrees(String<TIntervalTree> & intervalTrees,
- String<String<TInterval> > & intervals)
-{
- int numContigs = length(intervals);
- resize(intervalTrees, numContigs);
-
- SEQAN_OMP_PRAGMA(parallel for)
- for (int i = 0; i < numContigs; ++i)
- createIntervalTree(intervalTrees[i], intervals[i]);
-}
-
-//
-// 4. Count reads per gene
-//
-void countReadsPerGene(String<unsigned> & readsPerGene, String<TIntervalTree> const & intervalTrees, TStore const & store)
-{
- resize(readsPerGene, length(store.annotationStore), 0);
- String<TId> result;
- int numAlignments = length(store.alignedReadStore);
-
- // iterate aligned reads and get search their begin and end positions
- SEQAN_OMP_PRAGMA(parallel for private (result))
- for (int i = 0; i < numAlignments; ++i)
- {
- TAlignedRead const & ar = store.alignedReadStore[i];
- TPos queryBegin = _min(ar.beginPos, ar.endPos);
- TPos queryEnd = _max(ar.beginPos, ar.endPos);
-
- // search read-overlapping genes
- findIntervals(result, intervalTrees[ar.contigId], queryBegin, queryEnd);
-
- // increase read counter for each overlapping annotation given the id in the interval tree
- for (unsigned j = 0; j < length(result); ++j)
- {
- SEQAN_OMP_PRAGMA(atomic)
- readsPerGene[result[j]] += 1;
- }
- }
-}
-
-//![solution]
-//
-// 5. Output RPKM values
-//
-void outputGeneCoverage(String<unsigned> const & readsPerGene, TStore const & store)
-{
- // output abundances for covered genes
- Iterator<TStore const, AnnotationTree<> >::Type transIt = begin(store, AnnotationTree<>());
- Iterator<TStore const, AnnotationTree<> >::Type exonIt;
- double millionMappedReads = length(store.alignedReadStore) / 1000000.0;
-
- std::cout << "#gene name\tRPKM value" << std::endl;
- for (unsigned j = 0; j < length(readsPerGene); ++j)
- {
- if (readsPerGene[j] == 0)
- continue;
-
- unsigned mRNALengthMax = 0;
- goTo(transIt, j);
-
- // determine maximal mRNA length (which we use as gene length)
- SEQAN_ASSERT_NOT(isLeaf(transIt));
- goDown(transIt);
-
- do
- {
- exonIt = nodeDown(transIt);
- unsigned mRNALength = 0;
-
- // determine mRNA length, sum up the lengths of its exons
- do
- {
- if (getAnnotation(exonIt).typeId == store.ANNO_EXON)
- mRNALength += abs((int)getAnnotation(exonIt).beginPos - (int)getAnnotation(exonIt).endPos);
- }
- while (goRight(exonIt));
-
- if (mRNALengthMax < mRNALength)
- mRNALengthMax = mRNALength;
- }
- while (goRight(transIt));
-
- // RPKM is number of reads mapped to a gene divided by its gene length in kbps
- // and divided by millions of total mapped reads
- std::cout << store.annotationNameStore[j] << '\t';
- std::cout << readsPerGene[j] / (mRNALengthMax / 1000.0) / millionMappedReads << std::endl;
- }
-}
-//![solution]
-
-//![main]
-int main(int argc, char const * argv[])
-{
- TStore store;
- String<String<TInterval> > intervals;
- String<TIntervalTree> intervalTrees;
- String<unsigned> readsPerGene;
-
- std::string annotationFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.gtf");
- std::string alignmentFileName = getAbsolutePath("/demos/tutorial/simple_rna_seq/example.sam");
-
- if (!loadFiles(store, annotationFileName, alignmentFileName))
- return 1;
-
- extractGeneIntervals(intervals, store);
- constructIntervalTrees(intervalTrees, intervals);
- countReadsPerGene(readsPerGene, intervalTrees, store);
- outputGeneCoverage(readsPerGene, store);
-
- return 0;
-}
-//![main]
diff --git a/demos/tutorial/simple_rna_seq/genequant_solution5.cpp.stdout b/demos/tutorial/simple_rna_seq/genequant_solution5.cpp.stdout
deleted file mode 100644
index 5492d46..0000000
--- a/demos/tutorial/simple_rna_seq/genequant_solution5.cpp.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-Loading read alignments ..... [22]
-Loading genome annotation ... [12]
-#gene name RPKM value
diff --git a/demos/tutorial/simple_rna_seq/interval_tree.cpp.stdout b/demos/tutorial/simple_rna_seq/interval_tree.cpp.stdout
deleted file mode 100644
index 937d4b1..0000000
--- a/demos/tutorial/simple_rna_seq/interval_tree.cpp.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Deletion 300..500 overlaps with gene,intron,
-SNP 150 overlaps with gene,exon,coding,
-Removed exon interval 50..200.
-SNP 150 overlaps with gene,coding,
diff --git a/demos/tutorial/store/CMakeLists.txt b/demos/tutorial/store/CMakeLists.txt
new file mode 100644
index 0000000..cbe833b
--- /dev/null
+++ b/demos/tutorial/store/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.6)
+project (seqan_demos_tutorials_store)
+
+seqan_setup_apps(demos_tutorials_store)
+seqan_add_all_executables(demos_tutorials_store tutorial_)
diff --git a/demos/tutorial/fragment_store/example.fa b/demos/tutorial/store/ex1.fa
similarity index 100%
rename from demos/tutorial/fragment_store/example.fa
rename to demos/tutorial/store/ex1.fa
diff --git a/demos/tutorial/fragment_store/example.sam b/demos/tutorial/store/ex1.sam
similarity index 100%
rename from demos/tutorial/fragment_store/example.sam
rename to demos/tutorial/store/ex1.sam
diff --git a/demos/tutorial/store/store_access_aligned_reads.cpp b/demos/tutorial/store/store_access_aligned_reads.cpp
new file mode 100644
index 0000000..30943b5
--- /dev/null
+++ b/demos/tutorial/store/store_access_aligned_reads.cpp
@@ -0,0 +1,61 @@
+//![includes]
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/misc/svg.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef FragmentStore<> TStore;
+
+ TStore store;
+ loadContigs(store, "ex1.fa");
+ BamFileIn file("ex1.sam");
+ readRecords(store, file);
+
+ SEQAN_ASSERT_GEQ(length(store.alignedReadStore), 5u);
+//![includes]
+
+//![typedefs]
+ typedef Value<TStore::TReadSeqStore>::Type TReadSeq;
+ typedef Value<TStore::TContigStore>::Type TContig;
+ typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
+
+ typedef Gaps<TContig::TContigSeq, AnchorGaps<TContig::TGapAnchors> > TContigGaps;
+ typedef Gaps<TStore::TReadSeq, AnchorGaps<TAlignedRead::TGapAnchors> > TReadGaps;
+
+ TStore::TReadSeq readSeq;
+//![typedefs]
+
+//![output]
+ for (int i = 140; i < 160; i += 4)
+ {
+ TAlignedRead & ar = store.alignedReadStore[i];
+
+ readSeq = store.readSeqStore[ar.readId];
+ if (ar.endPos < ar.beginPos)
+ reverseComplement(readSeq);
+
+ TContigGaps contigGaps(
+ store.contigStore[ar.contigId].seq,
+ store.contigStore[ar.contigId].gaps);
+
+ TReadGaps readGaps(
+ readSeq,
+ ar.gaps);
+
+ setBeginPosition(contigGaps, std::min(ar.beginPos, ar.endPos));
+ setEndPosition(contigGaps, std::max(ar.beginPos, ar.endPos));
+
+ std::cout << "ALIGNMENT " << i << std::endl;
+ std::cout << "\tcontig " << ar.contigId << ":\t" << contigGaps;
+ std::cout << " \t[" << beginPosition(contigGaps) << ".." << endPosition(contigGaps) << "[" << std::endl;
+ std::cout << "\tread " << ar.readId << ":\t" << readGaps << std::endl;
+ std::cout << std::endl;
+ }
+//![output]
+//![appendix]
+ return 0;
+}
+//![appendix]
diff --git a/demos/tutorial/store/store_access_aligned_reads2.cpp b/demos/tutorial/store/store_access_aligned_reads2.cpp
new file mode 100644
index 0000000..e8aaf58
--- /dev/null
+++ b/demos/tutorial/store/store_access_aligned_reads2.cpp
@@ -0,0 +1,64 @@
+//![includes]
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/misc/svg.h>
+
+using namespace seqan;
+
+int main()
+{
+ typedef FragmentStore<> TStore;
+
+ TStore store;
+ loadContigs(store, "ex1.fa");
+ BamFileIn file("ex1.sam");
+ readRecords(store, file);
+
+ SEQAN_ASSERT_GEQ(length(store.alignedReadStore), 5u);
+//![includes]
+
+//![typedefs]
+ typedef Value<TStore::TReadSeqStore>::Type TReadSeq;
+ typedef Value<TStore::TContigStore>::Type TContig;
+ typedef Value<TStore::TAlignedReadStore>::Type TAlignedRead;
+
+ typedef Gaps<TContig::TContigSeq, AnchorGaps<TContig::TGapAnchors> > TContigGaps;
+ typedef Gaps<CharString, AnchorGaps<TAlignedRead::TGapAnchors> > TReadGaps;
+
+ CharString readSeq;
+//![typedefs]
+
+//![output]
+ for (int i = 140; i < 160; i += 4)
+ {
+ TAlignedRead & ar = store.alignedReadStore[i];
+
+ readSeq = store.readSeqStore[ar.readId];
+ if (ar.endPos < ar.beginPos)
+ {
+ reverseComplement(readSeq);
+ toLower(readSeq);
+ }
+
+ TContigGaps contigGaps(
+ store.contigStore[ar.contigId].seq,
+ store.contigStore[ar.contigId].gaps);
+
+ TReadGaps readGaps(
+ readSeq,
+ ar.gaps);
+
+ setBeginPosition(contigGaps, std::min(ar.beginPos, ar.endPos));
+ setEndPosition(contigGaps, std::max(ar.beginPos, ar.endPos));
+
+ std::cout << "ALIGNMENT " << i << std::endl;
+ std::cout << "\tcontig " << ar.contigId << ":\t" << contigGaps;
+ std::cout << " \t[" << beginPosition(contigGaps) << ".." << endPosition(contigGaps) << "[" << std::endl;
+ std::cout << "\tread " << ar.readId << ":\t" << readGaps << std::endl;
+ std::cout << std::endl;
+ }
+//![output]
+//![appendix]
+ return 0;
+}
+//![appendix]
diff --git a/demos/tutorial/store/store_diplay_aligned_reads.cpp b/demos/tutorial/store/store_diplay_aligned_reads.cpp
new file mode 100644
index 0000000..ef9199e
--- /dev/null
+++ b/demos/tutorial/store/store_diplay_aligned_reads.cpp
@@ -0,0 +1,28 @@
+//![includes]
+#include <iostream>
+#include <seqan/store.h>
+#include <seqan/misc/svg.h>
+
+using namespace seqan;
+
+int main()
+{
+ FragmentStore<> store;
+ loadContigs(store, "ex1.fa");
+ BamFileIn file("ex1.sam");
+ readRecords(store, file);
+//![includes]
+
+//![ascii]
+ AlignedReadLayout layout;
+ layoutAlignment(layout, store);
+ printAlignment(std::cout, layout, store, 1, 0, 150, 0, 36);
+//![ascii]
+
+//![svg]
+ SVGFile svg("layout.svg");
+ printAlignment(svg, layout, store, 1, 0, 150, 0, 36);
+
+ return 0;
+}
+//![svg]
diff --git a/demos/tutorial/string_sets/assignment_1_solution.cpp.stdout b/demos/tutorial/string_sets/assignment_1_solution.cpp.stdout
deleted file mode 100644
index f04fd70..0000000
--- a/demos/tutorial/string_sets/assignment_1_solution.cpp.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-4
-AAA
-CCC
-GGG
-TTT
diff --git a/demos/tutorial/string_sets/assignment_2_solution.cpp.stdout b/demos/tutorial/string_sets/assignment_2_solution.cpp.stdout
deleted file mode 100644
index e5fdb5d..0000000
--- a/demos/tutorial/string_sets/assignment_2_solution.cpp.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Does the string set contain the string with the id 'id3'? 1
-Does the string set contain the string with the id 'id2'? 0
diff --git a/demos/tutorial/string_sets/assignment_3_workshop_solution.cpp b/demos/tutorial/string_sets/assignment_3_workshop_solution.cpp
index 07302ff..6e46fd9 100644
--- a/demos/tutorial/string_sets/assignment_3_workshop_solution.cpp
+++ b/demos/tutorial/string_sets/assignment_3_workshop_solution.cpp
@@ -3,7 +3,6 @@
#include <seqan/stream.h>
using namespace seqan;
-
// Function to print simple alignment between two sequences with the same length
template <typename TText1, typename TText2>
void printAlign(TText1 const & genomeFragment, TText2 const & read)
@@ -17,6 +16,7 @@ int main(int, char const **)
{
// Build reads and genomes
DnaString chr1 = "TATAATATTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCTAGATGTGCAGCTCGATCGAATGCACGTGTGTGCGATCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATTTAG";
+
// Build List containing all reads
typedef String<DnaString> TDnaList;
TDnaList readList;
@@ -25,13 +25,16 @@ int main(int, char const **)
readList[1] = "TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT";
readList[2] = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA";
readList[3] = "CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA";
+
// Append a second chromosome sequence fragment to chr1
DnaString chr2 = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACACGTCTCTGTGTTCCGACGTGTGTCACGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACACATGCTGCTG";
append(chr1, chr2);
+
// Print readlist
std::cout << " \n Read list: " << std::endl;
for (unsigned i = 0; i < length(readList); ++i)
std::cout << readList[i] << std::endl;
+
// Assume we have mapped the 4 reads to chr1 (and chr2) and now have the mapping start positions (no gaps).
// Store the start position in a String alignPosList: 7, 100, 172, 272
String<unsigned> alignPosList;
@@ -40,6 +43,7 @@ int main(int, char const **)
alignPosList[1] = 100;
alignPosList[2] = 172;
alignPosList[3] = 272;
+
// Print alignments using Segment
std::cout << " \n Print alignment using Segment: " << std::endl;
for (unsigned i = 0; i < length(readList); ++i)
@@ -73,20 +77,6 @@ int main(int, char const **)
// Call of our function to print the simple alignment
printAlign(genomeFragment, value(it));
}
- // Now, use Rooted Iterators.
- Iterator<TDnaList, Rooted>::Type it2 = begin(readList);
- std::cout << " \n Print alignment using Rooted Iterators: " << std::endl;
- for (; !atEnd(it2); goNext(it2))
- {
- int i = position(it2);
- // Temporary copy of begin and end position (beginPosition) from alignPosList
- // of a given alignment between the read and the genome
- unsigned beginPosition = alignPosList[i];
- unsigned endPosition = beginPosition + length(value(it2));
- // Build Infix
- Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
- // Call of our function to print the simple alignment
- printAlign(genomeFragment, value(it2));
- }
- return 0;
+
+ return 1;
}
diff --git a/demos/tutorial/string_sets/assignment_3_workshop_solution.cpp.stdout b/demos/tutorial/string_sets/assignment_3_workshop_solution.cpp.stdout
deleted file mode 100644
index cc3d034..0000000
--- a/demos/tutorial/string_sets/assignment_3_workshop_solution.cpp.stdout
+++ /dev/null
@@ -1,48 +0,0 @@
-
- Read list:
-TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Segment:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Standard Iterators:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Rooted Iterators:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
diff --git a/demos/tutorial/string_sets/assignment_3b_workshop_solution.cpp b/demos/tutorial/string_sets/assignment_3b_workshop_solution.cpp
new file mode 100644
index 0000000..d2efd1e
--- /dev/null
+++ b/demos/tutorial/string_sets/assignment_3b_workshop_solution.cpp
@@ -0,0 +1,92 @@
+#include <iostream>
+#include <seqan/sequence.h>
+#include <seqan/stream.h>
+
+using namespace seqan;
+
+// Function to print simple alignment between two sequences with the same length
+template <typename TText1, typename TText2>
+void printAlign(TText1 const & genomeFragment, TText2 const & read)
+{
+ std::cout << "Alignment " << std::endl;
+ std::cout << " genome : " << genomeFragment << std::endl;
+ std::cout << " read : " << read << std::endl;
+}
+
+int main(int, char const **)
+{
+ // Build reads and genomes
+ DnaString chr1 = "TATAATATTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCTAGATGTGCAGCTCGATCGAATGCACGTGTGTGCGATCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATTTAG";
+ // Build List containing all reads
+ typedef String<DnaString> TDnaList;
+ TDnaList readList;
+ resize(readList, 4);
+ readList[0] = "TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT";
+ readList[1] = "TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT";
+ readList[2] = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA";
+ readList[3] = "CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA";
+ // Append a second chromosome sequence fragment to chr1
+ DnaString chr2 = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACACGTCTCTGTGTTCCGACGTGTGTCACGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACACATGCTGCTG";
+ append(chr1, chr2);
+ // Print readlist
+ std::cout << " \n Read list: " << std::endl;
+ for (unsigned i = 0; i < length(readList); ++i)
+ std::cout << readList[i] << std::endl;
+ // Assume we have mapped the 4 reads to chr1 (and chr2) and now have the mapping start positions (no gaps).
+ // Store the start position in a String alignPosList: 7, 100, 172, 272
+ String<unsigned> alignPosList;
+ resize(alignPosList, 4);
+ alignPosList[0] = 7;
+ alignPosList[1] = 100;
+ alignPosList[2] = 172;
+ alignPosList[3] = 272;
+ // Print alignments using Segment
+ std::cout << " \n Print alignment using Segment: " << std::endl;
+ for (unsigned i = 0; i < length(readList); ++i)
+ {
+ // Temporary copy of begin and end position (beginPosition) from alignPosList
+ // of a given alignment between the read and the genome
+ unsigned beginPosition = alignPosList[i];
+ unsigned endPosition = beginPosition + length(readList[i]);
+ // Build infix
+ Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, readList[i]);
+ }
+ // Iterators :)
+ // Print alignments using Iterators: Do the same as above, but use Iterators to iterate over the read list.
+ // First, use Standard Iterators.
+ Iterator<TDnaList>::Type it = begin(readList);
+ Iterator<TDnaList, Standard>::Type itEnd = end(readList); //same Iterator as above
+
+ std::cout << " \n Print alignment using Standard Iterators: " << std::endl;
+ for (; it != itEnd; goNext(it))
+ {
+ // Get the right index for alignPosList
+ int i = position(it, readList);
+ // Temporary copy of begin and end position (beginPosition) from alignPosList
+ // of a given alignment between the read and the genome
+ unsigned beginPosition = alignPosList[i];
+ unsigned endPosition = beginPosition + length(value(it));
+ // Build Infix
+ Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, value(it));
+ }
+ // Now, use Rooted Iterators.
+ Iterator<TDnaList, Rooted>::Type it2 = begin(readList);
+ std::cout << " \n Print alignment using Rooted Iterators: " << std::endl;
+ for (; !atEnd(it2); goNext(it2))
+ {
+ int i = position(it2);
+ // Temporary copy of begin and end position (beginPosition) from alignPosList
+ // of a given alignment between the read and the genome
+ unsigned beginPosition = alignPosList[i];
+ unsigned endPosition = beginPosition + length(value(it2));
+ // Build Infix
+ Infix<DnaString>::Type genomeFragment = infix(chr1, beginPosition, endPosition);
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, value(it2));
+ }
+ return 1;
+}
diff --git a/demos/tutorial/string_sets/assignment_4_workshop_solution.cpp b/demos/tutorial/string_sets/assignment_4_workshop_solution.cpp
index 3c1fec1..4fa81a4 100644
--- a/demos/tutorial/string_sets/assignment_4_workshop_solution.cpp
+++ b/demos/tutorial/string_sets/assignment_4_workshop_solution.cpp
@@ -106,5 +106,5 @@ int main(int, char const **)
for (; !atEnd(it3); goNext(it3))
std::cout << value(it3) << std::endl;
- return 0;
+ return 1;
}
diff --git a/demos/tutorial/string_sets/assignment_4_workshop_solution.cpp.stdout b/demos/tutorial/string_sets/assignment_4_workshop_solution.cpp.stdout
deleted file mode 100644
index 22fc77d..0000000
--- a/demos/tutorial/string_sets/assignment_4_workshop_solution.cpp.stdout
+++ /dev/null
@@ -1,54 +0,0 @@
-
- Read list:
-TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Segment:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Standard Iterators:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print alignment using Rooted Iterators:
-Alignment
- genome : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
- read : TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-Alignment
- genome : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
- read : TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-Alignment
- genome : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
- read : AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-Alignment
- genome : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
- read : CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
-
- Print reads stored in a StringSet using Rooted Iterators:
-TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT
-TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT
-AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA
-CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA
diff --git a/demos/tutorial/vcf_io/example.vcf b/demos/tutorial/vcf_io/example.vcf
deleted file mode 100644
index 27d4500..0000000
--- a/demos/tutorial/vcf_io/example.vcf
+++ /dev/null
@@ -1,24 +0,0 @@
-##fileformat=VCFv4.1
-##fileDate=20090805
-##source=myImputationProgramV3.1
-##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta
-##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species="Homo sapiens",taxonomy=x>
-##phasing=partial
-##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
-##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
-##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">
-##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">
-##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">
-##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">
-##FILTER=<ID=q10,Description="Quality below 10">
-##FILTER=<ID=s50,Description="Less than 50% of samples have data">
-##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
-##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
-##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
-##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">
-#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00003
-20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,.
-20 17330 . T A 3 q10 NS=3;DP=11;AF=0.017 GT:GQ:DP:HQ 0|0:49:3:58,50 0|1:3:5:65,3 0/0:41:3
-20 1110696 rs6040355 A G,T 67 PASS NS=2;DP=10;AF=0.333,0.667;AA=T;DB GT:GQ:DP:HQ 1|2:21:6:23,27 2|1:2:0:18,2 2/2:35:4
-20 1230237 . T . 47 PASS NS=3;DP=13;AA=T GT:GQ:DP:HQ 0|0:54:7:56,60 0|0:48:4:51,51 0/0:61:2
-20 1234567 microsat1 GTC G,GTCT 50 PASS NS=3;DP=9;AA=G GT:GQ:DP 0/1:35:4 0/2:17:2 1/1:40:3
diff --git a/demos/tutorial/vcf_io/example1.cpp b/demos/tutorial/vcf_io/example1.cpp
index d7aca67..1a7a184 100644
--- a/demos/tutorial/vcf_io/example1.cpp
+++ b/demos/tutorial/vcf_io/example1.cpp
@@ -5,7 +5,7 @@ using namespace seqan;
int main()
{
// Open input file.
- VcfFileIn vcfIn(toCString(getAbsolutePath("/demos/tutorial/vcf_io/example.vcf")));
+ VcfFileIn vcfIn("example.vcf");
// Attach to standard output.
VcfFileOut vcfOut(vcfIn);
diff --git a/demos/tutorial/vcf_io/example1.cpp.stdout b/demos/tutorial/vcf_io/example1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/vcf_io/solution1.cpp b/demos/tutorial/vcf_io/solution1.cpp
index d7648f2..e296a11 100644
--- a/demos/tutorial/vcf_io/solution1.cpp
+++ b/demos/tutorial/vcf_io/solution1.cpp
@@ -5,7 +5,7 @@ using namespace seqan;
int main()
{
// Open input file.
- VcfFileIn vcfIn(toCString(getAbsolutePath("/demos/tutorial/vcf_io/example.vcf")));
+ VcfFileIn vcfIn("example.vcf");
// Attach to standard output.
VcfFileOut vcfOut(vcfIn);
diff --git a/demos/tutorial/vcf_io/solution1.cpp.stdout b/demos/tutorial/vcf_io/solution1.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/vcf_io/solution2.cpp b/demos/tutorial/vcf_io/solution2.cpp
index 29cc117..8978822 100644
--- a/demos/tutorial/vcf_io/solution2.cpp
+++ b/demos/tutorial/vcf_io/solution2.cpp
@@ -7,7 +7,7 @@ int main()
try
{
// Open input file.
- VcfFileIn vcfIn(toCString(getAbsolutePath("/demos/tutorial/vcf_io/example.vcf")));
+ VcfFileIn vcfIn("example.vcf");
// Copy over header.
VcfHeader header;
diff --git a/demos/tutorial/vcf_io/solution2.cpp.stdout b/demos/tutorial/vcf_io/solution2.cpp.stdout
deleted file mode 100644
index e69de29..0000000
diff --git a/demos/tutorial/vcf_io/solution3.cpp.stdout b/demos/tutorial/vcf_io/solution3.cpp.stdout
deleted file mode 100644
index 1996786..0000000
--- a/demos/tutorial/vcf_io/solution3.cpp.stdout
+++ /dev/null
@@ -1,20 +0,0 @@
-##fileformat=VCFv4.1
-##fileDate=20090805
-##source=myImputationProgramV3.1
-##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta
-##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species="Homo sapiens",taxonomy=x>
-##phasing=partial
-##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
-##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
-##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">
-##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">
-##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">
-##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">
-##FILTER=<ID=q10,Description="Quality below 10">
-##FILTER=<ID=s50,Description="Less than 50% of samples have data">
-##ID=<ID=GT,Number=1,Type=String,Description="Genotype">
-##ID=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
-##ID=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
-##ID=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">
-#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00002
-20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,.
diff --git a/demos/unassigned_or_unused/bam_library_size.cpp b/demos/unassigned_or_unused/bam_library_size.cpp
deleted file mode 100644
index a6370eb..0000000
--- a/demos/unassigned_or_unused/bam_library_size.cpp
+++ /dev/null
@@ -1,268 +0,0 @@
-// ==========================================================================
-// SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// * Neither the name of Knut Reinert or the FU Berlin nor the names of
-// its contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Tobias Rausch <rausch at embl.de>
-// Author: Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>
-// ==========================================================================
-// Shows how to use the bam_io module to estimate the insert size from a SAM
-// or BAM file.
-// ==========================================================================
-
-#include <iostream>
-#include <vector>
-
-#include <seqan/basic.h>
-#include <seqan/sequence.h>
-#include <seqan/stream.h>
-#include <seqan/bam_io.h>
-
-#if SEQAN_HAS_ZLIB
-
-using namespace seqan;
-
-// Stores information about a library.
-
-struct LibraryInfo
-{
- // This is the notation introduced by Illumina.
- //
- // F+: >R1 R2>
- // F-: >R2 R1>
- // R+: >R1 R2<
- // R-: <R2 R1>
- enum Orientation
- {
- F_PLUS = 0,
- F_MINUS = 1,
- R_PLUS = 2,
- R_MINUS = 3
- };
-
- unsigned median;
- double stdDev;
- unsigned maxNormalISize;
- Orientation defaultOrient;
-
- LibraryInfo() :
- median(0), stdDev(0), maxNormalISize(0), defaultOrient(F_PLUS)
- {}
-};
-
-inline int
-getStrandIndependentOrientation(BamAlignmentRecord const & rec)
-{
- if (!hasFlagRC(rec))
- {
- if (!(hasFlagNextRC(rec)))
- {
- return (rec.beginPos < rec.pNext) ? LibraryInfo::F_PLUS : LibraryInfo::F_MINUS;
- }
- else
- {
- return (rec.beginPos < rec.pNext) ? LibraryInfo::R_PLUS : LibraryInfo::R_MINUS;
- }
- }
- else
- {
- if (!hasFlagNextRC(rec))
- {
- return (rec.beginPos > rec.pNext) ? LibraryInfo::R_PLUS : LibraryInfo::R_MINUS;
- }
- else
- {
- return (rec.beginPos > rec.pNext) ? LibraryInfo::F_PLUS : LibraryInfo::F_MINUS;
- }
- }
-}
-
-bool endsWith(CharString const & str, CharString const & x)
-{
- typedef Size<CharString>::Type TSize;
-
- TSize len = std::min(length(str), length(x));
- TSize pos = length(str) - len;
- return suffix(str, pos) == x;
-}
-
-bool performEstimation(LibraryInfo & libInfo, BamFileIn & bamFileIn)
-{
- // Vector of all insert sizes.
- typedef std::vector<unsigned int> TVecISize;
- TVecISize vecISize;
-
- // Read Header.
- BamHeader header;
- readHeader(header, bamFileIn);
-
- // Orientations.
- unsigned orientationCounters[4] = {0, 0, 0, 0};
-
- // Running mean.
- __uint64 runningMean = 0;
- unsigned pairCount = 0;
-
- // Count.
- BamAlignmentRecord record;
- while (!atEnd(bamFileIn))
- {
- readRecord(record, bamFileIn);
-
- // Skip all records except for first mate of properly mapped pairs.
- if (!hasFlagMultiple(record) || hasFlagUnmapped(record) || hasFlagNextUnmapped(record) ||
- hasFlagSecondary(record) || hasFlagFirst(record))
- continue;
-
- vecISize.push_back(abs(record.tLen));
- runningMean += abs(record.tLen);
- pairCount += 1;
-
- orientationCounters[getStrandIndependentOrientation(record)] += 1;
- }
-
- // Get default orientation.
- unsigned orientMax = 0;
- for (unsigned i = 0; i < 4; ++i)
- if (orientationCounters[i] > orientationCounters[orientMax])
- orientMax = i;
- LibraryInfo::Orientation orientations[4] = { LibraryInfo::F_PLUS, LibraryInfo::F_MINUS, LibraryInfo::R_PLUS, LibraryInfo::R_MINUS };
- libInfo.defaultOrient = orientations[orientMax];
-
- // Trim off the chimera peak in mate-pair libraries.
- if ((libInfo.defaultOrient == LibraryInfo::R_MINUS) && (pairCount > 0) && (runningMean / pairCount) >= 1000u)
- {
- typedef TVecISize::const_iterator TVecISizeIter;
- TVecISize vecISizeTmp;
- for (TVecISizeIter it = vecISize.begin(); it < vecISize.end(); ++it)
- if (*it > 1000)
- vecISizeTmp.push_back(*it);
- std::swap(vecISize, vecISizeTmp);
- }
-
-
- // Check that this is a proper paired-end library
- if (vecISize.empty())
- return true;
-
- // Get library stats.
- //
- // Start with median.
- typedef TVecISize::iterator TVecISizeIter;
- TVecISizeIter begin = vecISize.begin();
- TVecISizeIter end = vecISize.end();
- std::nth_element(begin, begin + (end - begin) / 2, end);
- begin = vecISize.begin();
- end = vecISize.end();
- libInfo.median = *(begin + (end - begin) / 2);
- // Standard deviation is next.
- //
- // SD calculation cutoffs are 7 SDs to the left and right assuming 10% library deviation.
- libInfo.stdDev = 0;
- double cutoffMax = libInfo.median + 7 * 0.1 * libInfo.median;
- double cutoffMin = libInfo.median - 7 * 0.1 * libInfo.median;
- if ((cutoffMin < 0) || (cutoffMax < cutoffMin))
- cutoffMin = 0;
- unsigned int count = 0;
- for (; begin < end; ++begin)
- {
- if ((*begin >= cutoffMin) && (*begin <= cutoffMax))
- {
- libInfo.stdDev += (*begin - libInfo.median) * (*begin - libInfo.median);
- ++count;
- }
- }
- if (count == 0u) // prevent div-by-zero below
- count = 1;
- libInfo.stdDev = sqrt(libInfo.stdDev / count);
- libInfo.maxNormalISize = static_cast<unsigned>(libInfo.median + 3 * libInfo.stdDev);
-
- return true;
-}
-
-int main(int argc, char const ** argv)
-{
- if (argc != 2)
- {
- std::cerr << "Invalid arguments!\n"
- << "USAGE: bam_library_size {IN.sam,IN.bam}\n";
- return 1;
- }
-
- LibraryInfo libInfo;
-
- BamFileIn bamFileIn;
- if (!open(bamFileIn, argv[1]))
- {
- std::cerr << "Could not open input SAM/BAM file " << argv[1] << "\n";
- return 1;
- }
-
- if (!performEstimation(libInfo, bamFileIn))
- return 1;
-
- // Print result.
- std::cout << "Library Information\n\n"
- << "path: " << argv[1] << "\n"
- << "median: " << libInfo.median << "\n"
- << "standard deviation: " << libInfo.stdDev << "\n"
- << "maximum normal insert size: " << libInfo.maxNormalISize << "\n";
-
- std::cout << "orientation: ";
- switch (libInfo.defaultOrient)
- {
- case LibraryInfo::F_PLUS:
- std::cout << "F+ R1 ---> ---> R2\n";
- break;
-
- case LibraryInfo::F_MINUS:
- std::cout << "F- R1 ---> ---> R2\n";
- break;
-
- case LibraryInfo::R_PLUS:
- std::cout << "R+ R1 ---> <--- R2\n";
- break;
-
- case LibraryInfo::R_MINUS:
- std::cout << "R- R1 <--- ---> R2\n";
- break;
- }
-
- return 0;
-}
-
-#else
-
-int main(int, char const **)
-{
- std::cerr << "bam_library_size can only be compiled correctly with zlib." << std::endl;
- return 0;
-}
-
-#endif // #if SEQAN_HAS_ZLIB
diff --git a/demos/unassigned_or_unused/benchmark_stream.cpp b/demos/unassigned_or_unused/benchmark_stream.cpp
deleted file mode 100644
index 9d608fe..0000000
--- a/demos/unassigned_or_unused/benchmark_stream.cpp
+++ /dev/null
@@ -1,422 +0,0 @@
-// ==========================================================================
-// SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// * Neither the name of Knut Reinert or the FU Berlin nor the names of
-// its contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Manuel Holtgrewe <manuel.holtgrewe at fu-berlin.de>
-// ==========================================================================
-// Stream Benchmark Demo. This demo shows how to use different stream types
-// for reading and writing FASTA files. The time required for this is
-// printed, and thus this demo can be used as a benchmark tool.
-// ==========================================================================
-
-// #define SEQAN_NEW_IO
-
-#include <cstdio>
-//#include <fstream>
-#if SEQAN_HAS_ZLIB
-#include <zlib.h>
-#endif // #if SEQAN_HAS_ZLIB
-#if SEQAN_HAS_BZIP2
-#include <bzlib.h>
-#endif // #if SEQAN_HAS_BZIP2
-
-#include <seqan/basic.h>
-#include <seqan/stream.h>
-#include <seqan/seq_io.h>
-#include <seqan/stream.h>
-#include <seqan/sequence.h>
-#include <seqan/arg_parse.h>
-
-using namespace seqan;
-
-// Setting buffer size to 4MB, such that the overhead for jumping buffers and
-// such only occurs every 4M chars.
-//const unsigned int BUFFER_SIZE = 1024 * 1024 * 4;
-
-typedef Dna5String TSequence;
-
-struct Options
-{
- bool doublePass;
- bool cstdio;
- bool fstream;
- bool mmapString;
- bool gzip;
- bool bzip2;
- bool documentMMap;
- bool nonConcat;
- bool multiSeq;
-
- Options() :
- doublePass(false), cstdio(false), fstream(false),
- mmapString(false), gzip(false), bzip2(false), documentMMap(false),
- nonConcat(false), multiSeq(false)
- {}
-};
-
-//int readFileMultiSeqFile(char const * filename, Options const & /*options*/)
-//{
-// typedef StringSet<CharString> TSequenceIds;
-// typedef StringSet<TSequence> TSequences;
-// typedef Iterator<TSequenceIds>::Type TSequenceIdsIter;
-// typedef Iterator<TSequences>::Type TSequencesIter;
-// TSequenceIds sequenceIds;
-// TSequences sequences;
-//
-// double before = sysTime();
-// std::cerr << "READING\tWHOLE\tOWNER";
-// std::cerr << "\tmultiseq" << std::flush;
-//
-// MultiSeqFile multiSeqFile;
-// if (!open(multiSeqFile.concat, filename, OPEN_RDONLY))
-// {
-// std::cerr << std::endl << "Could not open mmap file for reading." << std::endl;
-// return 1;
-// }
-//
-// AutoSeqFormat format;
-// guessFormat(multiSeqFile.concat, format);
-// split(multiSeqFile, format);
-//
-// unsigned seqCount = length(multiSeqFile);
-// StringSet<TSequence> seqs;
-// StringSet<CharString> seqIDs;
-// reserve(seqs, seqCount, Exact());
-// reserve(seqIDs, seqCount, Exact());
-//
-// TSequence seq;
-// // CharString qual;
-// CharString id;
-// for (unsigned i = 0; i < seqCount; ++i)
-// {
-// assignSeq(seq, multiSeqFile[i], format); // read sequence
-// // assignQual(qual, multiSeqFile[i], format); // read ascii quality values
-// assignSeqId(id, multiSeqFile[i], format); // read sequence id
-//
-// // convert ascii to values from 0..62
-// // store dna and quality together in Dna5Q
-// // for (unsigned j = 0; j < length(qual) && j < length(seq); ++j)
-// // assignQualityValue(seq[j], (int)(ordValue(qual[j]) - 33));
-// // we use reserve and append, as assign is not supported
-// // by StringSet<..., Owner<ConcatDirect<> > >
-// appendValue(seqs, seq, Generous());
-// appendValue(seqIDs, id, Generous());
-// }
-//
-// double after = sysTime();
-// fprintf(stderr, "\t%f\n", after - before);
-// return 0;
-//}
-
-template <typename TSpec>
-int readFileMMapDocument(char const * filename, Options const & /*options*/, TSpec const & /*tag*/)
-{
- typedef StringSet<CharString, TSpec> TSequenceIds;
- typedef StringSet<TSequence, TSpec> TSequences;
-// typedef typename Iterator<TSequenceIds>::Type TSequenceIdsIter;
-// typedef typename Iterator<TSequences>::Type TSequencesIter;
- TSequenceIds sequenceIds;
- TSequences sequences;
-
- double before = sysTime();
- std::cerr << "READING\tWHOLE\t";
- if (IsSameType<TSpec, Owner<> >::VALUE)
- std::cerr << "OWNER";
- else
- std::cerr << "CONCAT";
- std::cerr << "\tmmap" << std::flush;
- // fprintf(stderr, "\t%f\n", after - before);
- /*typedef File<Async<> > TFile;
- typedef String<char, MMap< ExternalConfig<TFile> > > TMMapString;
- TMMapString myString;
- if (!open(myString, filename, OPEN_RDONLY)) {
- std::cerr << std::endl << "Could not open mmap file for reading." << std::endl;
- return 1;
- }
- RecordReader<TMMapString, DoublePass<StringReader> > reader(myString, BUFFER_SIZE);
- */
- SeqFileIn reader(filename);
- readRecords(sequenceIds, sequences, reader);
- SEQAN_ASSERT_EQ(length(sequenceIds), length(sequences));
-
- // TSequenceIdsIter itId = begin(sequenceIds);
- // TSequencesIter itSeq = begin(sequences);
- // for (; !atEnd(itId); ++itId, ++itSeq) {
- //std::cout << value(itId) << "\t" << value(itSeq) << "\n";
- // }
-
- double after = sysTime();
- fprintf(stderr, "\t%f\n", after - before);
- return 0;
-}
-
-int readFileMMapDocument(char const * filename, Options const & options)
-{
- if (options.nonConcat)
- return readFileMMapDocument(filename, options, Owner<Default>());
-
- //else
- //return readFileMMapDocument(filename, options, Owner<ConcatDirect<> >());
- return 0;
-}
-
-int readFastaFile(StringSet<CharString> & sequenceIds,
- StringSet<TSequence> & sequences,
- SeqFileIn & file)
-{
- (void)sequenceIds;
- (void)sequences;
-
- CharString meta;
- TSequence seq;
- while (!atEnd(file))
- readRecord(meta, seq, file);
-
- return 0;
-}
-
-template <typename TFile>
-int readFastaFile(StringSet<CharString> & sequenceIds,
- StringSet<TSequence> & sequences,
- TFile & file)
-{
- (void)sequenceIds;
- (void)sequences;
-
- typename DirectionIterator<TFile, Input>::Type iter;
- iter = begin(file);
-
- CharString meta;
- TSequence seq;
- while (!atEnd(iter))
- readRecord(meta, seq, iter, Fasta());
-
- return 0;
-}
-
-void readFileMMap(char const * filename, Options const & /*options*/)
-{
- StringSet<CharString> sequenceIds;
- StringSet<TSequence> sequences;
-
- double before = sysTime();
- std::cerr << "READING\tRECORD\t" << std::flush;
-
- typedef File<Async<> > TFile;
- String<char, MMap<ExternalConfig<TFile> > > myString;
- if (!open(myString, filename, OPEN_RDONLY))
- {
- std::cerr << std::endl << "Could not open mmap file for reading." << std::endl;
- return;
- }
- readFastaFile(sequenceIds, sequences, myString);
-
- double after = sysTime();
- fprintf(stderr, "\t%f\n", after - before);
-}
-
-void readFileDefault(char const * filename, Options const & options)
-{
- StringSet<CharString> sequenceIds;
- StringSet<TSequence> sequences;
-
- std::cerr << "READING\tRECORD\t" << std::flush;
- double before = sysTime();
- if (options.cstdio)
- {
- std::cerr << "cstdio" << std::flush;
- FILE * f = fopen(filename, "rb");
- if (!f)
- {
- std::cerr << std::endl << "ERROR: Could not open input file!" << std::endl;
- return;
- }
- //readFastaFile(sequenceIds, sequences, f);
- fclose(f);
- }
- else if (options.fstream)
- {
- std::cerr << "fstream" << std::flush;
- std::ifstream f(filename, std::ios_base::in | std::ios_base::binary);
- if (!f.is_open())
- {
- std::cerr << std::endl << "ERROR: Could not open input file!" << std::endl;
- return;
- }
- //readFastaFile(sequenceIds, sequences, f);
-#if SEQAN_HAS_ZLIB
- }
- else if (options.gzip)
- {
- std::cerr << "gzip" << std::flush;
- SeqFileIn f;
- if (!open(f, filename))
- {
- std::cerr << "Could not open input file!" << std::endl;
- return;
- }
- readFastaFile(sequenceIds, sequences, f);
-#endif // #if SEQAN_HAS_ZLIB
-#if SEQAN_HAS_BZIP2
- }
- else if (options.bzip2)
- {
- std::cerr << "bzip2" << std::flush;
- SeqFileIn f;
- if (!open(f, filename))
- {
- std::cerr << "Could not open input file!" << std::endl;
- return;
- }
- //readFastaFile(sequenceIds, sequences, f);
-#endif // #if SEQAN_HAS_BZIP2
- }
- else
- {
- SEQAN_ASSERT_FAIL("SHOULD NEVER REACH HERE!");
- }
- double after = sysTime();
- fprintf(stderr, "\t%f\n", after - before);
-}
-
-int main(int argc, char const ** argv)
-{
- Options options;
-
- // -----------------------------------------------------------------------
- // Setup Command Line Parser
- // -----------------------------------------------------------------------
-
- ArgumentParser parser("demo_benchmark_stream");
- setCategory(parser, "Demo");
- setShortDescription(parser, "Just a demo for a simple file io benchmark.");
-
- addUsageLine(parser, "benchmark_stream [OPTIONS] INPUT OUTPUT");
- addSection(parser, "Read Variant");
- addOption(parser, ArgParseOption("d", "double-pass", "Use double-pass parsing."));
- addSection(parser, "Stream Type Options");
- addOption(parser, ArgParseOption("c", "cstdio", "Use <cstdio> stream."));
- addOption(parser, ArgParseOption("f", "fstream", "Use <fstream> stream."));
-#if SEQAN_HAS_ZLIB
- addOption(parser, ArgParseOption("g", "gzip", "Use gzip stream."));
-#endif // #if SEQAN_HAS_ZLIB
-#if SEQAN_HAS_BZIP2
- addOption(parser, ArgParseOption("b", "bzip2", "Use bzlib stream."));
-#endif // #if SEQAN_HAS_BZIP2
- addOption(parser, ArgParseOption("m", "memory-mapped", "Use memory mapped I/O."));
- addOption(parser, ArgParseOption("w", "document-mmapped", "Read whole document at once with memory mapped I/O."));
- addOption(parser, ArgParseOption("n", "non-concat", "Do not use concat direct string for document-mmapped version."));
- addOption(parser, ArgParseOption("s", "multi-seq", "Use MultiSeqFile to read input."));
-
- addArgument(parser, ArgParseArgument(ArgParseArgument::INPUT_FILE, "IN"));
-
- // -----------------------------------------------------------------------
- // Parse And Check Command Line Parameters
- // -----------------------------------------------------------------------
-
- bool stop = !parse(parser, argc, argv);
- if (stop)
- {
- if (isSet(parser, "help"))
- return 0;
-
- return 1;
- }
-
- if (isSet(parser, "double-pass"))
- options.doublePass = true;
- if (isSet(parser, "cstdio"))
- options.cstdio = true;
- if (isSet(parser, "fstream"))
- options.fstream = true;
-#if SEQAN_HAS_ZLIB
- if (isSet(parser, "gzip"))
- options.gzip = true;
-#endif // #if SEQAN_HAS_ZLIB
-#if SEQAN_HAS_BZIP2
- if (isSet(parser, "bzip2"))
- options.bzip2 = true;
-#endif // #if SEQAN_HAS_BZIP2
- if (isSet(parser, "memory-mapped"))
- options.mmapString = true;
- if (isSet(parser, "document-mmapped"))
- options.documentMMap = true;
- if (isSet(parser, "non-concat"))
- options.nonConcat = true;
- if (isSet(parser, "multi-seq"))
- options.multiSeq = true;
-
- if (options.cstdio + options.fstream + options.gzip + options.bzip2 + options.mmapString +
- options.documentMMap + options.multiSeq == 0)
- {
- std::cerr << "You have to select exactly one stream type!" << std::endl;
- return 1;
- }
- else if (options.cstdio + options.fstream + options.gzip + options.bzip2 + options.mmapString + options.documentMMap > 1)
- {
- std::cerr << "Only one stream type can be selected!" << std::endl;
- return 1;
- }
- if (options.documentMMap && options.doublePass)
- {
- std::cerr << "Double-pass I/O is implicit with document-mapped." << std::endl;
- return 1;
- }
-
- // -----------------------------------------------------------------------
- // Read And Write FASTA file.
- // -----------------------------------------------------------------------
- String<char> inputFileName;
- getArgumentValue(inputFileName, parser, 0);
-
- if (options.multiSeq)
- {
- //readFileMultiSeqFile(toCString(getArgumentValue(parser, 0)), options);
- }
- else if (options.documentMMap)
- {
- readFileMMapDocument(toCString(inputFileName), options);
- }
- else
- {
- if (options.mmapString)
- ;
- //readFileMMap(toCString(inputFileName), options);
- else
- readFileDefault(toCString(inputFileName), options);
- }
-
- // for (unsigned i = 0; i < length(sequenceIds); ++i) {
- // std::cerr << '>' << sequenceIds[i] << '\n';
- // std::cerr << sequences[i] << '\n';
- // }
-
- return 0;
-}
diff --git a/demos/unassigned_or_unused/graph_hmm_silent.cpp b/demos/unassigned_or_unused/graph_hmm_silent.cpp
deleted file mode 100644
index e44c14c..0000000
--- a/demos/unassigned_or_unused/graph_hmm_silent.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-///A tutorial about HMMs with silent states
-#include <iostream>
-#include <fstream>
-#include <seqan/graph_algorithms.h>
-#include <seqan/basic/basic_math.h>
-
-using namespace seqan;
-
-int main()
-{
-///HMM creation
- typedef LogProb<> TProbability;
- typedef Dna TAlphabet;
- typedef Size<TAlphabet>::Type TSize;
- typedef Graph<Hmm<TAlphabet, TProbability> > THmm;
- typedef VertexDescriptor<THmm>::Type TVertexDescriptor;
-
- Dna dnaA = Dna('A');
- Dna dnaC = Dna('C');
- Dna dnaG = Dna('G');
- Dna dnaT = Dna('T');
-
- THmm hmm;
-
-///Begin state
- TVertexDescriptor begState = addVertex(hmm);
- assignBeginState(hmm, begState);
-
-///Emission states
- TVertexDescriptor emitState1 = addVertex(hmm);
- emissionProbability(hmm, emitState1, dnaA) = 0.0;
- emissionProbability(hmm, emitState1, dnaC) = 0.8;
- emissionProbability(hmm, emitState1, dnaG) = 0.1;
- emissionProbability(hmm, emitState1, dnaT) = 0.1;
-
- TVertexDescriptor emitState2 = addVertex(hmm);
- emissionProbability(hmm, emitState2, dnaA) = 0.0;
- emissionProbability(hmm, emitState2, dnaC) = 0.2;
- emissionProbability(hmm, emitState2, dnaG) = 0.2;
- emissionProbability(hmm, emitState2, dnaT) = 0.6;
-
- TVertexDescriptor emitState3 = addVertex(hmm);
- emissionProbability(hmm, emitState3, dnaA) = 0.7;
- emissionProbability(hmm, emitState3, dnaC) = 0.1;
- emissionProbability(hmm, emitState3, dnaG) = 0.1;
- emissionProbability(hmm, emitState3, dnaT) = 0.1;
-
- TVertexDescriptor emitState4 = addVertex(hmm);
- emissionProbability(hmm, emitState4, dnaA) = 0.25;
- emissionProbability(hmm, emitState4, dnaC) = 0.25;
- emissionProbability(hmm, emitState4, dnaG) = 0.25;
- emissionProbability(hmm, emitState4, dnaT) = 0.25;
-
-///Silent states (deletion states)
- TVertexDescriptor delState1 = addVertex(hmm, true);
- TVertexDescriptor delState2 = addVertex(hmm, true);
- TVertexDescriptor delState3 = addVertex(hmm, true);
- TVertexDescriptor delState4 = addVertex(hmm, true);
-
-///End state
- TVertexDescriptor eState = addVertex(hmm);
- assignEndState(hmm, eState);
-
-///Transitions
- addEdge(hmm, begState, emitState1, 0.5);
- addEdge(hmm, begState, delState1, 0.5);
- addEdge(hmm, emitState1, emitState2, 0.5);
- addEdge(hmm, emitState1, delState2, 0.5);
- addEdge(hmm, delState1, emitState2, 0.5);
- addEdge(hmm, delState1, delState2, 0.5);
- addEdge(hmm, emitState2, emitState3, 0.5);
- addEdge(hmm, emitState2, delState3, 0.5);
- addEdge(hmm, delState2, emitState3, 0.5);
- addEdge(hmm, delState2, delState3, 0.5);
- addEdge(hmm, emitState3, emitState4, 0.5);
- addEdge(hmm, emitState3, delState4, 0.5);
- addEdge(hmm, delState3, emitState4, 0.5);
- addEdge(hmm, delState3, delState4, 0.5);
- addEdge(hmm, emitState4, eState, 1.0);
- addEdge(hmm, delState4, eState, 1.0);
-
-///Print the whole model
- std::cout << hmm << std::endl;
-
-///Viterbi algorithm
- String<Dna> sequence = "CA";
- String<TVertexDescriptor> path;
- TProbability p = viterbiAlgorithm(path, hmm, sequence);
- std::cout << "Viterbi algorithm" << std::endl;
- std::cout << "Probability of the best path: " << p << std::endl;
- std::cout << "Sequence: " << std::endl;
- for (TSize i = 0; i < length(sequence); ++i)
- std::cout << sequence[i] << ',';
- std::cout << std::endl;
- std::cout << "State path: " << std::endl;
- for (TSize i = 0; i < length(path); ++i)
- {
- std::cout << path[i];
- if (isSilent(hmm, path[i]))
- std::cout << " (Silent)";
- if (i < length(path) - 1)
- std::cout << ',';
- }
- std::cout << std::endl;
-
-///Forward algorithm
- std::cout << "Forward algorithm" << std::endl;
- p = forwardAlgorithm(hmm, sequence);
- std::cout << "Probability that the HMM generated the sequence: " << p << std::endl;
-
-///Backward algorithm
- std::cout << "Backward algorithm" << std::endl;
- p = backwardAlgorithm(hmm, sequence);
- std::cout << "Probability that the HMM generated the sequence: " << p << std::endl;
-
- return 0;
-}
diff --git a/demos/unassigned_or_unused/sam2svg.cpp b/demos/unassigned_or_unused/sam2svg.cpp
deleted file mode 100644
index a50d0cf..0000000
--- a/demos/unassigned_or_unused/sam2svg.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-#include <fstream>
-#include <iostream>
-#include <string>
-
-#include <seqan/store.h>
-#include <seqan/arg_parse.h>
-#include <seqan/misc/svg.h>
-
-using namespace seqan;
-
-// Struct for storing command line options.
-struct Options
-{
- int contigID;
- int beginPos;
- int endPos;
- int beginLine;
- int endLine;
- bool writeAscii;
- bool gapSpace;
-
- std::string fileAliIn;
- std::string fileOut;
- std::string fileRefIn;
-
- Options() :
- contigID(-1), beginPos(-1), endPos(-1), beginLine(-1), endLine(-1), writeAscii(false), gapSpace(false)
- {}
-};
-
-// Parse command line, write results to options, return PARSE_OK if everything went well.
-ArgumentParser::ParseResult parseCommandLine(Options & options, int argc, char const ** argv)
-{
- ArgumentParser parser;
- setShortDescription(parser, "draw SAM/BAM file as SVG vector graphics");
- addUsageLine(parser, "[OPTION] -a <SAM/BAM file> [-r <GENOME file>] -o <SVG/ASCII file>");
-
- addOption(parser, ArgParseOption("a", "alignment", "SAM/BAM file to load.", ArgParseOption::INPUT_FILE));
- setRequired(parser, "alignment", true);
- setValidValues(parser, "alignment", BamFileIn::getFileExtensions());
-
- addOption(parser, ArgParseOption("r", "reference", "FASTA file to use as the reference.", ArgParseOption::INPUT_FILE));
- setValidValues(parser, "reference", SeqFileIn::getFileExtensions());
-
- addOption(parser, ArgParseOption("o", "out", "SVG/ASCII file to write.", ArgParseOption::OUTPUT_FILE));
- setRequired(parser, "out", true);
- setValidValues(parser, "out", ".txt .svg");
-
- addOption(parser, ArgParseOption("", "contig", "Display contig with this numeric ID only (zero-based), default is to show all contigs.", ArgParseOption::INTEGER));
- setDefaultValue(parser, "contig", -1);
-
- addOption(parser, ArgParseOption("", "begin-pos", "Begin position of the region to show, default is to show all.", ArgParseOption::INTEGER));
- setDefaultValue(parser, "begin-pos", -1);
-
- addOption(parser, ArgParseOption("", "end-pos", "End position of the region to show, default is to show all.", ArgParseOption::INTEGER));
- setDefaultValue(parser, "end-pos", -1);
-
- addOption(parser, ArgParseOption("", "begin-line", "First line to show, zero-based", ArgParseOption::INTEGER));
- setDefaultValue(parser, "begin-line", -1);
-
- addOption(parser, ArgParseOption("", "end-line", "Last line to show, zero-based, default is to show all", ArgParseOption::INTEGER));
- setDefaultValue(parser, "end-line", -1);
-
- addOption(parser, ArgParseOption("", "gap-space", "begin and end position are given in gap space instead of in sequence space"));
-
- // Parse command line.
- ArgumentParser::ParseResult res = parse(parser, argc, argv);
-
- // Only extract options if the program will continue after parseCommandLine()
- if (res != ArgumentParser::PARSE_OK)
- return res;
-
- getOptionValue(options.contigID, parser, "contig");
- getOptionValue(options.beginPos, parser, "begin-pos");
- getOptionValue(options.endPos, parser, "end-pos");
- getOptionValue(options.beginLine, parser, "begin-line");
- getOptionValue(options.endLine, parser, "end-line");
-
- getOptionValue(options.fileAliIn, parser, "alignment");
- getOptionValue(options.fileRefIn, parser, "reference");
- getOptionValue(options.fileOut, parser, "out");
-
- options.writeAscii = endsWith(options.fileOut, ".txt");
- options.gapSpace = isSet(parser, "gap-space");
-
- // Begin position cannot be greater than end position.
- if (options.beginPos != -1 && options.endPos != -1 && options.beginPos > options.endPos)
- {
- std::cerr << "ERROR: begin position cannot be greater than end position!\n";
- return ArgumentParser::PARSE_ERROR;
- }
-
- // First line number cannot be greater than last line number.
- if (options.beginLine != -1 && options.endLine != -1 && options.beginLine < options.endLine)
- {
- std::cerr << "ERROR: first line cannot be greater than end position!\n";
- return ArgumentParser::PARSE_ERROR;
- }
-
- return ArgumentParser::PARSE_OK;
-}
-
-int main(int argc, char const ** argv)
-{
- // -----------------------------------------------------------------------
- // Parse Options
- // -----------------------------------------------------------------------
- Options options;
- ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
-
- // If parsing was not successful then exit with code 1 if there were errors.
- // Otherwise, exit with code 0 (e.g. help was printed).
- if (res != ArgumentParser::PARSE_OK)
- return res == ArgumentParser::PARSE_ERROR;
-
- // -----------------------------------------------------------------------
- // Load Files
- // -----------------------------------------------------------------------
-
- typedef FragmentStore<> TFragStore;
-
- typedef TFragStore::TContigStore TContigStore;
- typedef Value<TContigStore>::Type TContig;
- typedef TFragStore::TContigPos TContigPos;
-
- TFragStore store;
- BamFileIn samFile(options.fileAliIn.c_str());
- std::ofstream ascii;
- SVGFile svg;
-
- // Optionally load genome file
- if (!options.fileRefIn.empty())
- {
- if (!loadContigs(store, options.fileRefIn.c_str()))
- {
- std::cerr << "Failed to load genome.\n";
- return 1;
- }
- }
-
- // Load Sam file
- readRecords(store, samFile);
-
- // Choose contigs
- std::vector<unsigned> contigs;
- if (options.contigID == -1)
- for (unsigned i = 0; i < length(store.contigStore); ++i)
- contigs.push_back(i);
- else
- contigs.push_back(options.contigID);
-
- // Optionally load genome and open SVG file for writing
- if (options.writeAscii)
- {
- ascii.open(options.fileOut.c_str(), std::ios_base::out | std::ios_base::trunc);
- if (!ascii.is_open())
- {
- std::cerr << "ERROR: could not open output file for writing.\n";
- return 1;
- }
- }
- else if (!open(svg, options.fileOut.c_str()))
- {
- std::cerr << "ERROR: could not open output file for writing.\n";
- return 1;
- }
-
- // -----------------------------------------------------------------------
- // Write Alignment
- // -----------------------------------------------------------------------
-
- AlignedReadLayout layout;
- std::cerr << "Layouting reads ... ";
- layoutAlignment(layout, store);
- std::cerr << "done\n";
-
- std::cerr << "Writing " << contigs.size() << " contigs...\n";
-
- int beginLine = (options.beginLine == -1) ? 0 : options.beginLine;
- int endLine = (options.endLine == -1) ? MaxValue<int>::VALUE : options.endLine;
-
- for (unsigned i = 0; i < contigs.size(); ++i)
- if (contigs[i] < length(store.contigStore))
- {
- std::cerr << "Writing contig " << store.contigNameStore[contigs[i]] << " ... ";
-
- __int64 l = (options.beginPos == -1) ? 0 : options.beginPos;
- __int64 r = (options.endPos == -1) ? MaxValue<TContigPos>::VALUE : options.endPos;
-
- if (!options.gapSpace)
- {
- typedef Gaps<Nothing, AnchorGaps<TContig::TGapAnchors> > TContigGaps;
- TContigGaps contigGaps(store.contigStore[i].gaps);
- l = positionSeqToGap(contigGaps, l);
- if (r != MaxValue<TContigPos>::VALUE)
- r = positionSeqToGap(contigGaps, r);
- }
-
- if (r == MaxValue<TContigPos>::VALUE)
- {
- r = 0;
- for (unsigned j = 0; j < length(layout.contigRows[i]); ++j)
- {
- unsigned id = back(layout.contigRows[i][j]);
- if (r < store.alignedReadStore[id].beginPos)
- r = store.alignedReadStore[id].beginPos;
- if (r < store.alignedReadStore[id].endPos)
- r = store.alignedReadStore[id].endPos;
- }
- }
-
- std::cerr << l << '\t' << r << '\t' << beginLine << '\t' << endLine << "\n";
- if (options.writeAscii)
- printAlignment(ascii, layout, store, contigs[i], l, r, beginLine, endLine);
- else
- printAlignment(svg, layout, store, contigs[i], l, r, beginLine, endLine);
-
- std::cout << "done\n";
- }
-
- return 0;
-}
diff --git a/demos/dox/vcf_io/example.vcf b/demos/vcf_io/example.vcf
similarity index 100%
rename from demos/dox/vcf_io/example.vcf
rename to demos/vcf_io/example.vcf
diff --git a/demos/vcf_io/vcf_stream_read.cpp b/demos/vcf_io/vcf_stream_read.cpp
new file mode 100644
index 0000000..52450ec
--- /dev/null
+++ b/demos/vcf_io/vcf_stream_read.cpp
@@ -0,0 +1,33 @@
+#include <seqan/basic.h>
+#include <seqan/vcf_io.h>
+
+using namespace seqan;
+
+int main()
+{
+ CharString path = SEQAN_PATH_TO_ROOT();
+ append(path, "/demos/vcf_io/example.vcf");
+
+ VcfFileIn vcfIn;
+ if (!open(vcfIn, toCString(path)))
+ {
+ std::cerr << "ERROR: Could not open " << path << " for reading!\n";
+ return 1;
+ }
+
+ VcfHeader header;
+ readHeader(header, vcfIn);
+
+ VcfRecord record;
+ while (!atEnd(vcfIn))
+ {
+ readRecord(record, vcfIn);
+
+ // Note that we print the position 1-based since we use text output
+ // whereas it is 0-based in the VcfRecord.
+ std::cout << contigNames(context(vcfIn))[record.rID]
+ << "\t" << (record.beginPos + 1) << "\n";
+ }
+
+ return 0;
+}
diff --git a/demos/vcf_io/vcf_stream_read.cpp.stdout b/demos/vcf_io/vcf_stream_read.cpp.stdout
new file mode 100644
index 0000000..83031b6
--- /dev/null
+++ b/demos/vcf_io/vcf_stream_read.cpp.stdout
@@ -0,0 +1,5 @@
+20 14370
+20 17330
+20 1110696
+20 1230237
+20 1234567
diff --git a/dox/pages/constraint_iterator.dox b/dox/pages/constraint_iterator.dox
index a43ff68..4de99ca 100644
--- a/dox/pages/constraint_iterator.dox
+++ b/dox/pages/constraint_iterator.dox
@@ -11,28 +11,28 @@
*
* We start by including the necessary headers and use the namespace seqan;
*
- * @snippet demos/dox/index/node_predicate.cpp includes
+ * @snippet demos/index/index_node_predicate.cpp includes
*
* Afterwards we create a struct containing the constraints.
*
- * @snippet demos/dox/index/node_predicate.cpp constraints
+ * @snippet demos/index/index_node_predicate.cpp constraints
*
* In the following we do the requiered extensions.
*
- * @snippet demos/dox/index/node_predicate.cpp extensions
+ * @snippet demos/index/index_node_predicate.cpp extensions
*
* Now we start the main program with a sequence initialization.
*
- * @snippet demos/dox/index/node_predicate.cpp main
+ * @snippet demos/index/index_node_predicate.cpp main
*
* Then we create our customized index which is a specialization of the deferred @Class.Index.wotd-Index@
*
- * @snippet demos/dox/index/node_predicate.cpp specialisation
+ * @snippet demos/index/index_node_predicate.cpp specialisation
*
* And finaly we search by traversing a string tree. To find all strings that fulfill our constraints, we simply do a
* dfs-traversal via @Function.goBegin@ and @Function.goNext at .
*
- * @snippet demos/dox/index/node_predicate.cpp traversal
+ * @snippet demos/index/index_node_predicate.cpp traversal
*
* @code{.console}
* weese at tanne:~/seqan$ cd demos
diff --git a/dox/pages/index_count_children.dox b/dox/pages/index_count_children.dox
index 4396269..93ffa3b 100644
--- a/dox/pages/index_count_children.dox
+++ b/dox/pages/index_count_children.dox
@@ -5,7 +5,7 @@
* This example shows how to iterate over a suffix tree and print the number of children and the number of occurrences
* of the node representatitves.
*
- * @include demos/dox/index/counting.cpp
+ * @include demos/index/index_counting.cpp
*
* The only maximal matches that occur in all 3 sequences are "SeqAn" and "sequence". They occur exactly once and thus
* are maximal unique matches.
diff --git a/dox/pages/maxima_unique_matches.dox b/dox/pages/maxima_unique_matches.dox
index dfa4a0f..74e102d 100644
--- a/dox/pages/maxima_unique_matches.dox
+++ b/dox/pages/maxima_unique_matches.dox
@@ -6,7 +6,7 @@
* (MUM) is a unique match that is not part of any longer unique match. The following example demonstrates how to iterate
* over all MUMs and output them.
*
- * @include demos/dox/index/mums.cpp
+ * @include demos/index/index_mums.cpp
*
* The only maximal matches that occur in all 3 sequences are "SeqAn" and "sequence". They occur exactly once and thus
* are maximal unique matches.
diff --git a/dox/pages/maximal_repeats.dox b/dox/pages/maximal_repeats.dox
index d7ea1f0..7e801ad 100644
--- a/dox/pages/maximal_repeats.dox
+++ b/dox/pages/maximal_repeats.dox
@@ -6,17 +6,17 @@
* A maximal repeat is a repeat that cannot be extended to the left or to right to a longer repeat. The following
* example demonstrates how to iterate over all maximal repeats and output them.
*
- * @snippet demos/dox/index/maxrepeats.cpp includes
+ * @snippet demos/index_maxrepeats.cpp includes
*
* We begin with a @Class.String@ to store our sequence. Then we create an @Class.Index@ of this @link StringSet @endlink.
*
* Afterwards we initialize a string with the sequence and build an index over it
*
- * @snippet demos/dox/index/maxrepeats.cpp init
+ * @snippet demos/index_maxrepeats.cpp init
*
* To find maximal repeats, we use SeqAn's @link MaxRepeatsIterator @endlink and set the minimum repeat length to 3.
*
- * @snippet demos/dox/index/maxrepeats.cpp iteration
+ * @snippet demos/index_maxrepeats.cpp iteration
*
* A repeat can be represented by its length and positions it occurs at.
* $myRepeatIterator$ iterates over all repeat strings.
diff --git a/dox/pages/mummy.dox b/dox/pages/mummy.dox
index 46de1f6..fdb7f29 100644
--- a/dox/pages/mummy.dox
+++ b/dox/pages/mummy.dox
@@ -6,7 +6,7 @@ MUMmer is a tool to search for multiple exact matches (MUMs) between 2 given seq
starting point for a multiple genome alignment algorithm. This example shows how to implement a simple version of
MUMer to find multiple exact matches of n sequences (n>=2) in SeqAn.
- at include demos/dox/index/mummy.cpp
+ at include demos/index/index_mummy.cpp
If you run the tool on 2 sequences it outputs exactly the same matches as MUMmer (called with -mum option), it only
differs in the * order of outputted matches. To get matches with increasing positions at the first sequence we
diff --git a/dox/pages/suffix_array.dox b/dox/pages/suffix_array.dox
index 89628c4..d4582ea 100644
--- a/dox/pages/suffix_array.dox
+++ b/dox/pages/suffix_array.dox
@@ -17,7 +17,7 @@
* This is only an example for @link createSuffixArray @endlink and similar functions. For an index based substring search
* better use the more generic @link Finder @endlink class (see @Demo.Index Finder@ demo).
*
- * @include demos/dox/index/sufarray.cpp
+ * @include demos/index/index_sufarray.cpp
*
* @code{.console}
* weese at tanne:~/seqan$ cd demos
diff --git a/dox/pages/supermaximal_repeats.dox b/dox/pages/supermaximal_repeats.dox
index fbf1b4d..b688018 100644
--- a/dox/pages/supermaximal_repeats.dox
+++ b/dox/pages/supermaximal_repeats.dox
@@ -9,15 +9,15 @@
*
* We start by including the required headers and using the namespace seqan.
*
- * @snippet demos/dox/index/supermaxrepeats.cpp includes
+ * @snippet demos/index/index_supermaxrepeats.cpp includes
*
* Afterwards we initialize a stirng with the sequence and build an index over it
*
- * @snippet demos/dox/index/supermaxrepeats.cpp init
+ * @snippet demos/index/index_supermaxrepeats.cpp init
*
* To find supermaximal repeats, we use SeqAn's @link SuperMaxRepeatsIterator SuperMaxRepeats Iterator @endlink and set the minimum repeat length to 3.
*
- * @snippet demos/dox/index/supermaxrepeats.cpp iteration
+ * @snippet demos/index/index_supermaxrepeats.cpp iteration
*
* The only supermaximal repeats of "How many wood would a woodchuck chuck." of length at least 3 are " wood" and
* "chuck". There are repeats of " wo" which are maximal (see Maximal Repeats), ut not supermaximal, as " wo" is part of
diff --git a/include/seqan/align/align_base.h b/include/seqan/align/align_base.h
index 4aa31d9..02a91e6 100644
--- a/include/seqan/align/align_base.h
+++ b/include/seqan/align/align_base.h
@@ -72,11 +72,11 @@ namespace seqan {
*
* Here is an example of using an Align object with @link globalAlignment @endlink.
*
- * @include demos/dox/align/align.cpp
+ * @include demos/align/align.cpp
*
* The output is as follows:
*
- * @include demos/dox/align/align.cpp.stdout
+ * @include demos/align/align.cpp.stdout
*
* @see globalAlignment
* @see localAlignment
diff --git a/include/seqan/align/alignment_operations.h b/include/seqan/align/alignment_operations.h
index f00df50..10c1fc2 100644
--- a/include/seqan/align/alignment_operations.h
+++ b/include/seqan/align/alignment_operations.h
@@ -72,11 +72,11 @@ namespace seqan {
*
* @section Examples
*
- * @include demos/dox/align/integrate_align.cpp
+ * @include demos/align/integrate_align.cpp
*
* The output is as follows:
*
- * @include demos/dox/align/integrate_align.cpp.stdout
+ * @include demos/align/integrate_align.cpp.stdout
*/
template <typename TSource1, typename TSpec1, typename TSource2, typename TSpec2, typename TPos>
diff --git a/include/seqan/align/evaluate_alignment.h b/include/seqan/align/evaluate_alignment.h
index 132d5c8..caba74c 100644
--- a/include/seqan/align/evaluate_alignment.h
+++ b/include/seqan/align/evaluate_alignment.h
@@ -187,11 +187,11 @@ void clear(AlignmentStats & stats)
*
* @section Examples
*
- * @include demos/dox/align/compute_alignment_stats.cpp
+ * @include demos/align/compute_alignment_stats.cpp
*
* The output is as follows:
*
- * @include demos/dox/align/compute_alignment_stats.cpp.stdout
+ * @include demos/align/compute_alignment_stats.cpp.stdout
*/
template <typename TSource, typename TAlignSpec, typename TScoreVal, typename TScoreSpec>
@@ -221,7 +221,7 @@ TScoreVal computeAlignmentStats(AlignmentStats & stats,
{
if (isGap(it0))
{
- if (!isGapOpen0)
+ if (isGapOpen0)
{
stats.numGapOpens += 1;
stats.alignmentScore += scoreGapOpen(scoringScheme);
@@ -267,7 +267,7 @@ TScoreVal computeAlignmentStats(AlignmentStats & stats,
stats.alignmentScore += scoreVal;
// Register other statistics.
bool isMatch = (c0 == c1);
- bool isPositive = (scoreVal > 0);
+ bool isPositive = (scoreVal >= 0);
stats.numMatches += isMatch;
stats.numMismatches += !isMatch;
stats.numPositiveScores += isPositive;
diff --git a/include/seqan/align/gaps_anchor.h b/include/seqan/align/gaps_anchor.h
index ef00050..2129d29 100644
--- a/include/seqan/align/gaps_anchor.h
+++ b/include/seqan/align/gaps_anchor.h
@@ -117,9 +117,6 @@ public:
typedef typename Position<Gaps>::Type TPosition_;
typedef typename Value<Gaps>::Type TValue_;
- typedef typename RemoveReference<typename RemoveConst<TSource>::Type>::Type TSourceNoConstNoRef;
- typedef TSourceNoConstNoRef const & TSourceConstRef;
-
// -----------------------------------------------------------------------
// Member Variables
// -----------------------------------------------------------------------
@@ -170,8 +167,33 @@ public:
{
}
- // everybody has const & constructors
- Gaps(TSourceNoConstNoRef const & source, TGapAnchors & anchors) :
+ // Note: We need the variants with the first parameter "TSource const &" here because TSource can be a Segment which
+ // is often given as a temporary.
+
+ Gaps(TSource & source, TGapAnchors & anchors) :
+ data_source(source),
+ data_gaps(anchors),
+ data_cutBegin(0),
+ data_cutEnd(0),
+ data_viewCutBegin(0),
+ data_viewCutEnd(0)
+ {
+ }
+
+ Gaps(TSource & source, TGapAnchors const & anchors) :
+ data_source(source),
+ data_gaps(anchors),
+ data_cutBegin(0),
+ data_cutEnd(0),
+ data_viewCutBegin(0),
+ data_viewCutEnd(0)
+ {
+ }
+
+ // TODO(holtgrew): These constructors are only here because of const-Holder issues.
+
+ template <typename TSource2>
+ Gaps(TSource2 & source, TGapAnchors & anchors) :
data_source(source),
data_gaps(anchors),
data_cutBegin(0),
@@ -181,7 +203,8 @@ public:
{
}
- Gaps(TSourceNoConstNoRef const & source, TGapAnchors const & anchors) :
+ template <typename TSource2>
+ Gaps(TSource2 & source, TGapAnchors const & anchors) :
data_source(source),
data_gaps(anchors),
data_cutBegin(0),
@@ -191,9 +214,8 @@ public:
{
}
- // if source is not const & (but possibly const) there are also regular & constructors
- Gaps(TSourceNoConstNoRef & source, TGapAnchors & anchors,
- SEQAN_CTOR_DISABLE_IF(IsSameType<TSource, TSourceConstRef>)) :
+ template <typename TSource2>
+ Gaps(TSource2 const & source, TGapAnchors & anchors) :
data_source(source),
data_gaps(anchors),
data_cutBegin(0),
@@ -201,11 +223,10 @@ public:
data_viewCutBegin(0),
data_viewCutEnd(0)
{
- ignoreUnusedVariableWarning(dummy);
}
- Gaps(TSourceNoConstNoRef & source, TGapAnchors const & anchors,
- SEQAN_CTOR_DISABLE_IF(IsSameType<TSource, TSourceConstRef>)) :
+ template <typename TSource2>
+ Gaps(TSource2 const & source, TGapAnchors const & anchors) :
data_source(source),
data_gaps(anchors),
data_cutBegin(0),
@@ -213,7 +234,6 @@ public:
data_viewCutBegin(0),
data_viewCutEnd(0)
{
- ignoreUnusedVariableWarning(dummy);
}
// -----------------------------------------------------------------------
diff --git a/include/seqan/align/gaps_base.h b/include/seqan/align/gaps_base.h
index ea9af69..683034e 100644
--- a/include/seqan/align/gaps_base.h
+++ b/include/seqan/align/gaps_base.h
@@ -104,11 +104,11 @@ typedef Tag<ArrayGaps_> ArrayGaps;
* The following example shows the construction of the gaps object from the image above together with some calls to
* <tt>toViewPosition</tt> and <tt>toSourcePosition</tt>.
*
- * @include demos/dox/align/gaps_example.cpp
+ * @include demos/align/gaps_example.cpp
*
* The output is as follows:
*
- * @include demos/dox/align/gaps_example.cpp.stdout
+ * @include demos/align/gaps_example.cpp.stdout
*/
template <typename TSequence, typename TSpec = ArrayGaps>
diff --git a/include/seqan/align/global_alignment_unbanded.h b/include/seqan/align/global_alignment_unbanded.h
index 8c4a1bd..4c78e51 100644
--- a/include/seqan/align/global_alignment_unbanded.h
+++ b/include/seqan/align/global_alignment_unbanded.h
@@ -134,19 +134,19 @@ class Fragment;
* Global alignment of two sequences using an @link Align @endlink object and
* the Needleman-Wunsch algorithm.
*
- * @include demos/dox/align/global_alignment_unbanded.cpp
+ * @include demos/align/global_alignment_unbanded.cpp
*
* The output is as follows:
*
- * @include demos/dox/align/global_alignment_unbanded.cpp.stdout
+ * @include demos/align/global_alignment_unbanded.cpp.stdout
*
* Global banded alignment of two sequences using two @link Gaps @endlink objects and the Gotoh algorithm.
*
- * @include demos/dox/align/global_alignment_banded.cpp
+ * @include demos/align/global_alignment_banded.cpp
*
* The output is as follows:
*
- * @include demos/dox/align/global_alignment_banded.cpp.stdout
+ * @include demos/align/global_alignment_banded.cpp.stdout
*
* http://seqan.readthedocs.org/en/develop/Tutorial/PairwiseSequenceAlignment.html
*
diff --git a/include/seqan/align_extend/align_extend.h b/include/seqan/align_extend/align_extend.h
index d00c20f..11a930f 100644
--- a/include/seqan/align_extend/align_extend.h
+++ b/include/seqan/align_extend/align_extend.h
@@ -450,11 +450,11 @@ _extendAlignmentImpl(Align<TStringInfix, TAlignSpec> & align,
*
* @section Example
*
- * @include demos/dox/align_extend/extend_alignment.cpp
+ * @include demos/align_extend/extend_alignment.cpp
*
* The output is as follows:
*
- * @include demos/dox/align_extend/extend_alignment.cpp.stdout
+ * @include demos/align_extend/extend_alignment.cpp.stdout
*
* @section Remarks
*
diff --git a/include/seqan/align_profile/score_profile_seq.h b/include/seqan/align_profile/score_profile_seq.h
index c557340..609390f 100644
--- a/include/seqan/align_profile/score_profile_seq.h
+++ b/include/seqan/align_profile/score_profile_seq.h
@@ -105,7 +105,7 @@ typedef Tag<ProfileSeqScore_> ProfileSeqScore;
* The following example uses the ProfileSeq Score to align a sequence against a profile.
* Note that we print the gap state for each position since profiles cannot be printed to one stdout character.
*
- * @include demos/dox/align_profile/profile_seq_score.cpp
+ * @include demos/align_profile/profile_seq_score.cpp
*
* The output is as follows:
*
@@ -186,7 +186,7 @@ typedef Tag<ProfileSeqFracScore_> ProfileSeqFracScore;
* The following example uses the ProfileSeqFrac Score to align a sequence against a profile. Note that we print the
* gap state for each position since profiles cannot be printed to one stdout character.
*
- * @include demos/dox/align_profile/profile_seq_frac_score.cpp
+ * @include demos/align_profile/profile_seq_frac_score.cpp
*
* The output is as follows:
*
diff --git a/include/seqan/align_split/align_split_interface.h b/include/seqan/align_split/align_split_interface.h
index e0623e2..ff9e657 100644
--- a/include/seqan/align_split/align_split_interface.h
+++ b/include/seqan/align_split/align_split_interface.h
@@ -485,11 +485,11 @@ int _splitAlignmentImpl(Gaps<TContigSeqL> & gapsContigL,
* The following example demonstrates the usage of <tt>splitAlignment</tt> in the first case. The second case
* works accordingly.
*
- * @include demos/dox/align_split/split_alignment.cpp
+ * @include demos/align_split/split_alignment.cpp
*
* The output is as follows.
*
- * @include demos/dox/align_split/split_alignment.cpp.stdout
+ * @include demos/align_split/split_alignment.cpp.stdout
*/
// Variant: unbanded, with Align objects.
diff --git a/include/seqan/arg_parse/arg_parse_argument.h b/include/seqan/arg_parse/arg_parse_argument.h
index c33a1be..afaf720 100644
--- a/include/seqan/arg_parse/arg_parse_argument.h
+++ b/include/seqan/arg_parse/arg_parse_argument.h
@@ -80,7 +80,7 @@ inline std::string getFileExtension(ArgParseArgument const & me, unsigned pos);
*
* In the following example, the types <tt>INPUT_FILE</tt>, <tt>OUTPUT_FILE</tt>, and <tt>DOUBLE</tt> are used.
*
- * @include demos/dox/arg_parse/argument_parser.cpp
+ * @include demos/arg_parse/argument_parser.cpp
*/
/*!
@@ -499,14 +499,14 @@ inline std::string const getArgumentLabel(ArgParseArgument const & me)
// Helper Function _intervalAssert()
// ----------------------------------------------------------------------------
-// this methods ensures that the given arguments define a valid interval
+// this methods ensures that the given arguments define a non emtpy value interval
// otherwise it will trigger a SEQAN_CHECK failure
template <typename TIntervalBorder>
inline void _intervalAssert(const std::string minValueAsString, const std::string maxValueAsString)
{
if (minValueAsString != "" && maxValueAsString != "")
- SEQAN_CHECK(_cast<TIntervalBorder>(minValueAsString) <= _cast<TIntervalBorder>(maxValueAsString),
- "The interval [%s:%s] is invalid. Please specify a valid interval.",
+ SEQAN_CHECK(_cast<TIntervalBorder>(minValueAsString) < _cast<TIntervalBorder>(maxValueAsString),
+ "The interval [%s:%s] is empty. Please specify a valid, non-empty interval.",
minValueAsString.c_str(),
maxValueAsString.c_str());
}
diff --git a/include/seqan/arg_parse/argument_parser.h b/include/seqan/arg_parse/argument_parser.h
index 06e21dd..ae3b791 100644
--- a/include/seqan/arg_parse/argument_parser.h
+++ b/include/seqan/arg_parse/argument_parser.h
@@ -91,7 +91,7 @@ inline ArgParseArgument & getArgument(ArgumentParser & me, unsigned position);
*
* The following gives a simple example of how to use the ArgumentParser class.
*
- * @include demos/dox/arg_parse/argument_parser.cpp
+ * @include demos/arg_parse/argument_parser.cpp
*
* @code{.console}
* $ demo_arg_parse_argument_parser in.fa out.txt --id 0
diff --git a/include/seqan/arg_parse/tool_doc.h b/include/seqan/arg_parse/tool_doc.h
index ee20baf..acf179c 100644
--- a/include/seqan/arg_parse/tool_doc.h
+++ b/include/seqan/arg_parse/tool_doc.h
@@ -359,7 +359,7 @@ public:
{
std::ostream_iterator<char> out(stream);
stream << '\n' << _toText("\\fB");
- std::transform(begin(section._title), end(section._title), out, static_cast < int(*)(int) > (toupper));
+ std::transform(begin(section._title), end(section._title), out, toupper);
stream << _toText("\\fP") << '\n';
}
@@ -992,7 +992,7 @@ inline CharString const & getManTitle(ToolDoc & doc)
}
// --------------------------------------------------------------------------
-// Function addSection()ToolDoc
+// Function addSection() ToolDoc
// --------------------------------------------------------------------------
/*!
@@ -1290,9 +1290,9 @@ void ManToolDocPrinter_::print(std::ostream & stream, ToolDoc const & doc)
// Print .TH line.
stream << ".TH ";
- std::transform(begin(doc._name), end(doc._name), out, static_cast < int(*)(int) > (toupper));
+ std::transform(begin(doc._name), end(doc._name), out, toupper);
stream << " " << doc._manSection << " \"" << doc._date << "\" \"";
- std::transform(begin(doc._name), end(doc._name), out, static_cast < int(*)(int) > (tolower));
+ std::transform(begin(doc._name), end(doc._name), out, tolower);
stream << " " << doc._version << "\" \"" << doc._manTitle << "\"\n";
// Print NAME section.
@@ -1319,7 +1319,7 @@ void ManToolDocPrinter_::print(std::ostream & stream, ToolDoc const & doc)
{
ToolDocSection_ const * sec = static_cast<ToolDocSection_ const *>(entry);
stream << ".SH ";
- std::transform(begin(sec->_title), end(sec->_title), out, static_cast < int(*)(int) > (toupper));
+ std::transform(begin(sec->_title), end(sec->_title), out, toupper);
stream << "\n";
isFirstInSection = true;
}
diff --git a/include/seqan/bam_io/bam_file.h b/include/seqan/bam_io/bam_file.h
index d262943..68c666f 100644
--- a/include/seqan/bam_io/bam_file.h
+++ b/include/seqan/bam_io/bam_file.h
@@ -61,11 +61,11 @@ namespace seqan {
*
* Access SAM or BAM files.
*
- * @include demos/tutorial/sam_and_bam_io/solution1.cpp
+ * @include demos/tutorial/bam_io/solution1.cpp
*
* The output is as follows:
*
- * @include demos/tutorial/sam_and_bam_io/example.sam
+ * @include demos/tutorial/bam_io/example.sam
*/
typedef FormattedFile<Bam, Input> BamFileIn;
@@ -88,11 +88,11 @@ typedef FormattedFile<Bam, Input> BamFileIn;
*
* Access SAM or BAM files.
*
- * @include demos/tutorial/sam_and_bam_io/solution1.cpp
+ * @include demos/tutorial/bam_io/solution1.cpp
*
* The output is as follows:
*
- * @include demos/tutorial/sam_and_bam_io/example.sam
+ * @include demos/tutorial/bam_io/example.sam
*/
typedef FormattedFile<Bam, Output> BamFileOut;
@@ -247,11 +247,11 @@ inline SEQAN_FUNC_ENABLE_IF(And<IsSameType<typename Value<TRecords>::Type, BamAl
readRecords(TRecords & records, FormattedFile<Bam, Input, TSpec> & file, TSize maxRecords)
{
String<CharString> & buffers = context(file).buffers;
- if (static_cast<TSize>(length(buffers)) < maxRecords)
+ if ((TSize)length(buffers) < maxRecords)
+ {
resize(buffers, maxRecords, Exact());
- if (static_cast<TSize>(length(records)) < maxRecords)
resize(records, maxRecords, Exact());
-
+ }
TSize numRecords = 0;
for (; numRecords < maxRecords && !atEnd(file.iter); ++numRecords)
@@ -359,24 +359,6 @@ writeRecords(FormattedFile<Bam, Output, TSpec> & file, TRecords const & records)
write(file.iter, buffers[i]);
}
-// ----------------------------------------------------------------------------
-// Function getFileExtensions()
-// ----------------------------------------------------------------------------
-// NOTE(h-2): this is overloaded so we get Bgzf in addition to other
-// compressions which is crucial for Bam
-
-template <typename TDirection, typename TSpec>
-static std::vector<std::string>
-getFileExtensions(FormattedFile<Bam, TDirection, TSpec> const &)
-{
- std::vector<std::string> extensions;
- _getCompressionExtensions(extensions,
- typename FormattedFile<Bam, TDirection, TSpec>::TFileFormats(),
- CompressedFileTypes(),
- false);
- return extensions;
-}
-
} // namespace seqan
#endif // SEQAN_BAM_IO_BAM_FILE_H_
diff --git a/include/seqan/bam_io/bam_index_bai.h b/include/seqan/bam_io/bam_index_bai.h
index e07a717..e32de3e 100644
--- a/include/seqan/bam_io/bam_index_bai.h
+++ b/include/seqan/bam_io/bam_index_bai.h
@@ -334,7 +334,7 @@ jumpToRegion(FormattedFile<Bam, Input, TSpec> & bamFile,
* @param[in] index The @link BamIndex @endlink to use for jumping.
*/
-template <typename TSpec>
+template <typename TSpec, typename TNameStore, typename TNameStoreCache>
bool jumpToOrphans(FormattedFile<Bam, Input, TSpec> & bamFile,
bool & hasAlignments,
BamIndex<Bai> const & index)
@@ -377,7 +377,7 @@ bool jumpToOrphans(FormattedFile<Bam, Input, TSpec> & bamFile,
// Jump back to the first alignment.
if (offset != MaxValue<__uint64>::VALUE)
{
- if (!setPosition(bamFile, offset))
+ if (!setPosition(bamFile, offset, SEEK_SET))
return false; // Error while seeking.
}
@@ -523,26 +523,15 @@ open(BamIndex<Bai> & index, char * filename)
return open(index, static_cast<char const *>(filename));
}
-// ---------------------------------------------------------------------------
-// Function save()
-// ---------------------------------------------------------------------------
-
-/*!
- * @fn BamIndex#save
- * @brief Save a BamIndex object.
- *
- * @signature bool save(baiIndex, baiFileName);
- *
- * @param[in] baiIndex The BamIndex to write out.
- * @param[in] baiFileName The name of the BAI file to write to.
- *
- * @return bool <tt>true</tt> on success, <tt>false</tt> otherwise.
- */
+// ----------------------------------------------------------------------------
+// Function buildIndex()
+// ----------------------------------------------------------------------------
-inline bool save(BamIndex<Bai> const & index, char const * baiFilename)
+inline bool _saveIndex(BamIndex<Bai> const & index, char const * filename)
{
+ std::cerr << "WRITE INDEX TO " << filename << std::endl;
// Open output file.
- std::ofstream out(baiFilename, std::ios::binary | std::ios::out);
+ std::ofstream out(filename, std::ios::binary | std::ios::out);
SEQAN_ASSERT_EQ(length(index._binIndices), length(index._linearIndices));
@@ -581,7 +570,7 @@ inline bool save(BamIndex<Bai> const & index, char const * baiFilename)
}
// Write out linear index.
- __int32 numIntervals = length(linearIndex);
+ __int32 numIntervals = length(index._linearIndices);
out.write(reinterpret_cast<char *>(&numIntervals), 4);
typedef Iterator<String<__uint64> const, Rooted>::Type TLinearIndexIter;
for (TLinearIndexIter it = begin(linearIndex, Rooted()); !atEnd(it); goNext(it))
@@ -589,14 +578,13 @@ inline bool save(BamIndex<Bai> const & index, char const * baiFilename)
}
// Write the number of unaligned reads if set.
- //std::cerr << "UNALIGNED\t" << index._unalignedCount << std::endl;
+ std::cerr << "UNALIGNED\t" << index._unalignedCount << std::endl;
if (index._unalignedCount != maxValue<__uint64>())
out.write(reinterpret_cast<char const *>(&index._unalignedCount), 8);
return out.good(); // false on error, true on success.
}
-
inline void _baiAddAlignmentChunkToBin(BamIndex<Bai> & index,
__uint32 currBin,
__uint32 currOffset,
@@ -620,24 +608,10 @@ inline void _baiAddAlignmentChunkToBin(BamIndex<Bai> & index,
}
}
-// ---------------------------------------------------------------------------
-// Function build()
-// ---------------------------------------------------------------------------
-// TODO(dadi): uncomment when BamIndex.build index is fixed. DOX commented out
-/*
- * @fn BamIndex#build
- * @brief Create a BamIndex from BAM file.
- *
- * @signature bool build(baiIndex, bamFileName);
- *
- * @param[out] baiIndex The BamIndex to build into.
- * @param[in] bamFileName Path to the BAM file to build an index for. Type: <tt>char const *</tt>.
- *
- * @return bool <tt>true</tt> on success, <tt>false</tt> otherwise.
- */
-inline bool build(BamIndex<Bai> & index, char const * bamFilename)
+inline bool
+buildIndex(BamIndex<Bai> & index, char const * filename)
{
- // SEQAN_FAIL("This does not work yet!");
+ SEQAN_FAIL("This does not work yet!");
index._unalignedCount = 0;
clear(index._binIndices);
@@ -645,7 +619,7 @@ inline bool build(BamIndex<Bai> & index, char const * bamFilename)
// Open BAM file for reading.
BamFileIn bamFile;
- if (!open(bamFile, bamFilename))
+ if (!open(bamFile, filename))
return false; // Could not open BAM file.
// Read BAM header.
@@ -784,10 +758,13 @@ inline bool build(BamIndex<Bai> & index, char const * bamFilename)
}
// Merge small bins if possible.
- // SEQAN_FAIL("TODO: Merge bins!");
- return true;
-}
+ SEQAN_FAIL("TODO: Merge bins!");
+ // Write out index.
+ CharString baiFilename(filename);
+ append(baiFilename, ".bai");
+ return _saveIndex(index, toCString(baiFilename));
+}
} // namespace seqan
diff --git a/include/seqan/bam_io/bam_tags_dict.h b/include/seqan/bam_io/bam_tags_dict.h
index cdfb886..07c27e4 100644
--- a/include/seqan/bam_io/bam_tags_dict.h
+++ b/include/seqan/bam_io/bam_tags_dict.h
@@ -94,11 +94,11 @@ struct Position<BamTagsDict>
*
* @section Example
*
- * @include demos/dox/bam_io/bam_tags_dict.cpp
+ * @include demos/bam_io/bam_tags_dict.cpp
*
* Output is:
*
- * @include demos/dox/bam_io/bam_tags_dict.cpp.stdout
+ * @include demos/bam_io/bam_tags_dict.cpp.stdout
*
* @see getBamTypeSize
* @see getBamTypeChar
diff --git a/include/seqan/bam_io/cigar.h b/include/seqan/bam_io/cigar.h
index c5bb34a..9de3e8b 100644
--- a/include/seqan/bam_io/cigar.h
+++ b/include/seqan/bam_io/cigar.h
@@ -545,7 +545,7 @@ alignAndGetCigarString(
typedef typename TContig::TContigSeq TContigSeq;
typedef Gaps<TContigSeq, AnchorGaps<typename TContig::TGapAnchors> > TContigGaps;
typedef typename ReverseComplementString<TReadSeq const>::Type TRefCompReadSeq;
- typedef Gaps<TReadSeq, AnchorGaps<typename TAlignedRead::TGapAnchors> > TReadGaps;
+ typedef Gaps<TReadSeq const, AnchorGaps<typename TAlignedRead::TGapAnchors> > TReadGaps;
typedef Gaps<TRefCompReadSeq, AnchorGaps<typename TAlignedRead::TGapAnchors> > TRCReadGaps;
TContigGaps contigGaps(contig.seq, contig.gaps);
diff --git a/include/seqan/bam_io/read_bam.h b/include/seqan/bam_io/read_bam.h
index 3377d6c..a3d318c 100644
--- a/include/seqan/bam_io/read_bam.h
+++ b/include/seqan/bam_io/read_bam.h
@@ -96,7 +96,6 @@ readHeader(BamHeader & header,
TForwardIter & iter,
Bam const & /*tag*/)
{
- clear(header);
// Read BAM magic string.
String<char, Array<4> > magic;
read(magic, iter, 4);
diff --git a/include/seqan/bam_io/write_bam.h b/include/seqan/bam_io/write_bam.h
index 3fd7ca1..b0f8673 100644
--- a/include/seqan/bam_io/write_bam.h
+++ b/include/seqan/bam_io/write_bam.h
@@ -144,7 +144,7 @@ _writeBamRecord(TTarget & target,
// bin_mq_nl
unsigned l = 0;
_getLengthInRef(l, record.cigar);
- record.bin =_reg2Bin(record.beginPos, record.beginPos + std::max(1u, l));
+ record.bin =_reg2Bin(record.beginPos, record.beginPos + l);
// Write fixed-size BamAlignmentRecordCore.
appendRawPod(target, (BamAlignmentRecordCore &)record);
@@ -238,14 +238,9 @@ _writeBamRecordWrapper(TTarget & target,
template <typename TTarget, typename TNameStore, typename TNameStoreCache, typename TStorageSpec>
void write(TTarget & target,
BamAlignmentRecord const & record,
- BamIOContext<TNameStore, TNameStoreCache, TStorageSpec> & context,
+ BamIOContext<TNameStore, TNameStoreCache, TStorageSpec> & /* context */,
Bam const & tag)
{
- // Check for valid IO Context.
- SEQAN_ASSERT_LT_MSG(record.rID, static_cast<__int32>(length(contigNames(context))), "BAM IO Assertion: Unknown REF ID!");
- SEQAN_ASSERT_LT_MSG(record.rNextId, static_cast<__int32>(length(contigNames(context))), "BAM IO Assertion: Unknown NEXT REF ID!");
- ignoreUnusedVariableWarning(context);
-
// Update internal lengths
__uint32 size = updateLengths(record);
diff --git a/include/seqan/bam_io/write_sam.h b/include/seqan/bam_io/write_sam.h
index bb101e1..10a63bc 100644
--- a/include/seqan/bam_io/write_sam.h
+++ b/include/seqan/bam_io/write_sam.h
@@ -128,10 +128,6 @@ inline void write(TTarget & target,
BamIOContext<TNameStore, TNameStoreCache, TStorageSpec> const & context,
Sam const & /*tag*/)
{
- // Check for valid IO Context.
- SEQAN_ASSERT_LT_MSG(record.rID, static_cast<__int32>(length(contigNames(context))), "SAM IO Assertion: Unknown REF ID!");
- SEQAN_ASSERT_LT_MSG(record.rNextId, static_cast<__int32>(length(contigNames(context))), "SAM IO Assertion: Unknown NEXT REF ID!");
-
write(target, record.qName);
writeValue(target, '\t');
diff --git a/include/seqan/basic/alphabet_residue.h b/include/seqan/basic/alphabet_residue.h
index c05d254..106b168 100644
--- a/include/seqan/basic/alphabet_residue.h
+++ b/include/seqan/basic/alphabet_residue.h
@@ -525,18 +525,18 @@ unknownValueImpl(Iupac *)
* @brief IUPAC code for amino acids.
* @signature typedef SingleType<unsigned char, AminoAcid_> AminoAcid;
*
- * The ValueSize of <tt>AminoAcid</tt> is 27.
+ * The ValueSize of <tt>AminoAcid</tt> is 26.
*
* The amino acid symbols are as follows, i.e. they are sorted alphabetically
* up until the last two symbols:
*
- * 'A' = 0, 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'Y', 'Z', 'X'. '*'
+ * 'A' = 0, 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'Y', 'Z', 'X'. '*'
*
* Of these 'B' is a wildcard for (Aspartic Acid, Asparagine),
* 'J' for (Leucine, Isoleucine), 'Z' for (Glutamic Acid, Glutamine) and
* 'X' for "any amino acid".
*
- * 'O' refers to the rare Pyrrolysine, 'U' refers to the rare Selenocysteine and '*' to the terminator tRNA.
+ * 'U' refers to the rare Selenocysteine and '*' to the terminator tRNA.
*
* Objects of type <tt>AminoAcid</tt> can be converted to <tt>char</tt> and vice versa. Unknown values are converted to
* <tt>'X'</tt>.
@@ -552,7 +552,7 @@ typedef SimpleType<unsigned char, AminoAcid_> AminoAcid;
template <> struct ValueSize<AminoAcid>
{
typedef __uint8 Type;
- static const Type VALUE = 27;
+ static const Type VALUE = 26;
};
template <> struct BitsPerValue<AminoAcid>
@@ -592,7 +592,7 @@ struct Finite;
template <typename TValue, unsigned SIZE>
struct ValueSize<SimpleType<TValue, Finite<SIZE> > >
{
- typedef unsigned Type;
+ typedef __uint8 Type;
static const Type VALUE = SIZE;
};
diff --git a/include/seqan/basic/alphabet_residue_tabs.h b/include/seqan/basic/alphabet_residue_tabs.h
index 2a94c11..3a01d80 100644
--- a/include/seqan/basic/alphabet_residue_tabs.h
+++ b/include/seqan/basic/alphabet_residue_tabs.h
@@ -359,10 +359,10 @@ char const TranslateTableByteToIupac_<T>::VALUE[256] =
template <typename T = void>
struct TranslateTableAAToChar_
{
- static char const VALUE[27];
+ static char const VALUE[26];
};
template <typename T>
-char const TranslateTableAAToChar_<T>::VALUE[27] =
+char const TranslateTableAAToChar_<T>::VALUE[26] =
{
'A', // Ala Alanine
'B', // Aspartic Acid, Asparagine
@@ -373,18 +373,17 @@ char const TranslateTableAAToChar_<T>::VALUE[27] =
'G', // Gly Glycine
'H', // His Histidine
'I', // Ile Isoleucine
- 'J', // Leucine, Isoleucine
+ 'J', // Leucine, Isoleucine.........
'K', // Lys Lysine
'L', // Leu Leucine
'M', // Met Methionine
'N', // Asn Asparagine
- 'O', // Pyl Pyrrolysine
'P', // Pro Proline
'Q', // Gln Glutamine
'R', // Arg Arginine
'S', // Ser Serine
'T', // Thr Threonine
- 'U', // Selenocystein
+ 'U', // Selenocystein...............
'V', // Val Valine
'W', // Trp Tryptophan
'Y', // Tyr Tyrosine
@@ -402,31 +401,31 @@ struct TranslateTableCharToAA_
template <typename T>
char const TranslateTableCharToAA_<T>::VALUE[256] =
{
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //0
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //1
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 25, 25, //2
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //0
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //1
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 24, 24, 24, 24, 24, //2
// *
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //3
- 25, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, //4
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //3
+ 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 24, //4
// , A, B, C, D, E, F, G, H, I, J, K, L, M, N, O,
- 15, 16, 17, 18, 19, 20, 21, 22, 25, 23, 24, 25, 25, 25, 25, 25, //5
+ 14, 15, 16, 17, 18, 19, 20, 21, 24, 22, 23, 24, 24, 24, 24, 24, //5
// P, Q, R, S, T, U, V, W, X, Y, Z, , , , , ,
- 25, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, //6
+ 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 24, //6
// , a, b, c, d, e, f, g, h, i, j, k, l, m, n, o,
- 15, 16, 17, 18, 19, 20, 21, 22, 25, 23, 24, 25, 25, 25, 25, //7
+ 14, 15, 16, 17, 18, 19, 20, 21, 24, 22, 23, 24, 24, 24, 24, 24, //7
// p, q, r, s, t, u, v, w, x, y, z, , , , , ,
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //8
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //9
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //10
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //11
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //12
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //13
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //14
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 //15
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //8
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //9
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //10
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //11
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //12
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //13
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //14
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 //15
};
template <typename T = void>
@@ -439,21 +438,21 @@ template <typename T>
char const TranslateTableByteToAA_<T>::VALUE[256] =
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, //0
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25, 25, 25, 25, 25, //1
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //2
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //3
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //4
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //5
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //6
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //7
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //8
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //9
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //10
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //11
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //12
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //13
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, //14
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 //15
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 24, 24, 24, 24, 24, 24, //1
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //2
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //3
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //4
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //5
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //6
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //7
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //8
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //9
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //10
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //11
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //12
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //13
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, //14
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 //15
};
} // namespace seqan
diff --git a/include/seqan/basic/alphabet_simple_type.h b/include/seqan/basic/alphabet_simple_type.h
index 535ea52..eddfb36 100644
--- a/include/seqan/basic/alphabet_simple_type.h
+++ b/include/seqan/basic/alphabet_simple_type.h
@@ -123,7 +123,7 @@ namespace seqan {
* The following example shows construction of a @link Dna @endlink (specialization of SimpleType) object with from
* <tt>char</tt> and integer values.
*
- * @snippet demos/dox/basic/simple_type_construction.cpp simple type construction and assignment
+ * @snippet demos/basic/simple_type_construction.cpp simple type construction and assignment
*/
#ifdef PLATFORM_WINDOWS
diff --git a/include/seqan/basic/basic_exception.h b/include/seqan/basic/basic_exception.h
index 4e84e41..7885ed0 100644
--- a/include/seqan/basic/basic_exception.h
+++ b/include/seqan/basic/basic_exception.h
@@ -350,8 +350,13 @@ struct AssertFunctor
// Function globalExceptionHandler()
// ----------------------------------------------------------------------------
-#if defined(SEQAN_EXCEPTIONS) && defined(SEQAN_GLOBAL_EXCEPTION_HANDLER)
+#if defined(SEQAN_EXCEPTIONS) && !defined(SEQAN_NO_GLOBAL_EXCEPTION_HANDLER)
// Declare global exception handler.
+static void globalExceptionHandler();
+
+// Install global exception handler.
+static const std::terminate_handler _globalExceptionHandler = std::set_terminate(globalExceptionHandler);
+
inline static void globalExceptionHandler()
{
SEQAN_TRY
@@ -367,11 +372,7 @@ inline static void globalExceptionHandler()
SEQAN_FAIL("Uncaught exception of unknown type.\n");
}
}
-
-// Install global exception handler.
-static const std::terminate_handler SEQAN_UNUSED _globalExceptionHandler = std::set_terminate(globalExceptionHandler);
-
-#endif // #if defined(SEQAN_EXCEPTIONS) && defined(SEQAN_GLOBAL_EXCEPTION_HANDLER)
+#endif // #if defined(SEQAN_EXCEPTIONS) && !defined(SEQAN_NO_GLOBAL_EXCEPTION_HANDLER)
} // namespace seqan
diff --git a/include/seqan/basic/basic_stream.h b/include/seqan/basic/basic_stream.h
index 7bc6e9f..ac76cfd 100644
--- a/include/seqan/basic/basic_stream.h
+++ b/include/seqan/basic/basic_stream.h
@@ -62,10 +62,6 @@ template <typename TChar, typename TCharTraits, typename TAlloc>
inline typename std::basic_string<TChar, TCharTraits, TAlloc>::size_type
length(std::basic_string<TChar, TCharTraits, TAlloc> const & me);
-// Needed for std::basic_string.
-template <typename TContainer, typename TValue>
-inline void appendValue(TContainer SEQAN_FORWARD_ARG me, TValue SEQAN_FORWARD_CARG val);
-
/*!
* @macro SEQAN_HAS_ZLIB
* @headerfile <seqan/stream.h>
@@ -1049,13 +1045,12 @@ write(TTarget &target, TFwdIterator &iter, TSize n)
}
// ----------------------------------------------------------------------------
-// Function write(TContainer) but not container of container
+// Function write(TContainer)
// ----------------------------------------------------------------------------
template <typename TTarget, typename TContainer>
-inline SEQAN_FUNC_ENABLE_IF(And< Not<IsContiguous<TContainer> >,
- And< Is<ContainerConcept<TContainer> >,
- Not<Is<ContainerConcept<typename Value<TContainer>::Type> > > > >, void)
+inline SEQAN_FUNC_ENABLE_IF(And< Is<ContainerConcept<TContainer> >,
+ Not<IsContiguous<TContainer> > >, void)
write(TTarget &target, TContainer &cont)
{
typename DirectionIterator<TContainer, Input>::Type iter = directionIterator(cont, Input());
@@ -1063,19 +1058,19 @@ write(TTarget &target, TContainer &cont)
}
template <typename TTarget, typename TContainer>
-inline SEQAN_FUNC_ENABLE_IF(And< IsContiguous<TContainer>,
- And< Is<ContainerConcept<TContainer> >,
- Not<Is<ContainerConcept<typename Value<TContainer>::Type> > > > >, void)
+inline SEQAN_FUNC_ENABLE_IF(And< Is<ContainerConcept<TContainer> >,
+ IsContiguous<TContainer> >, void)
write(TTarget &target, TContainer &cont)
{
typename Iterator<TContainer, Standard>::Type iter = begin(cont, Standard());
write(target, iter, length(cont));
}
+
+
template <typename TTarget, typename TContainer>
-inline SEQAN_FUNC_ENABLE_IF(And< Not<IsContiguous<TContainer> >,
- And< Is<ContainerConcept<TContainer> >,
- Not<Is<ContainerConcept<typename Value<TContainer>::Type> > > > >, void)
+inline SEQAN_FUNC_ENABLE_IF(And< Is<ContainerConcept<TContainer> >,
+ Not<IsContiguous<TContainer> > >, void)
write(TTarget &target, TContainer const &cont)
{
typename DirectionIterator<TContainer const, Input>::Type iter = directionIterator(cont, Input());
@@ -1083,15 +1078,16 @@ write(TTarget &target, TContainer const &cont)
}
template <typename TTarget, typename TContainer>
-inline SEQAN_FUNC_ENABLE_IF(And< IsContiguous<TContainer>,
- And< Is<ContainerConcept<TContainer> >,
- Not<Is<ContainerConcept<typename Value<TContainer>::Type> > > > >, void)
+inline SEQAN_FUNC_ENABLE_IF(And< Is<ContainerConcept<TContainer> >,
+ IsContiguous<TContainer> >, void)
write(TTarget &target, TContainer const &cont)
{
typename Iterator<TContainer const, Standard>::Type iter = begin(cont, Standard());
write(target, iter, length(cont));
}
+
+
template <typename TTarget, typename TValue>
inline void
write(TTarget &target, TValue * ptr)
diff --git a/include/seqan/basic/concept_checking.h b/include/seqan/basic/concept_checking.h
index d7512fa..108b7b7 100644
--- a/include/seqan/basic/concept_checking.h
+++ b/include/seqan/basic/concept_checking.h
@@ -73,6 +73,15 @@ namespace seqan {
# define SEQAN_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
//#endif
+//
+// If the compiler warns about unused typedefs then enable this:
+//
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
+# define SEQAN_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
+#else
+# define SEQAN_STATIC_ASSERT_UNUSED_ATTRIBUTE
+#endif
+
#ifdef SEQAN_CXX11_STANDARD
# define SEQAN_STATIC_ASSERT( B ) static_assert(B, #B)
#else
@@ -151,7 +160,7 @@ template<int x> struct static_assert_test{};
#define SEQAN_STATIC_ASSERT( B ) \
typedef static_assert_test<\
sizeof(STATIC_ASSERTION_FAILURE< SEQAN_STATIC_ASSERT_BOOL_CAST( B ) >)>\
- SEQAN_JOIN(seqan_static_assert_typedef_, __LINE__) SEQAN_UNUSED
+ SEQAN_JOIN(seqan_static_assert_typedef_, __LINE__) SEQAN_STATIC_ASSERT_UNUSED_ATTRIBUTE
#endif
/*
#else
@@ -223,7 +232,7 @@ struct concept_check_<void(*)(Model)>
# define SEQAN_CONCEPT_ASSERT_FN( ModelFnPtr ) \
typedef seqan::detail::instantiate< \
&seqan::requirement_<ModelFnPtr>::failed> \
- SEQAN_PP_CAT(seqan_concept_check,__LINE__) SEQAN_UNUSED
+ SEQAN_PP_CAT(seqan_concept_check,__LINE__) SEQAN_STATIC_ASSERT_UNUSED_ATTRIBUTE
// ---------------------------------------------------------------------------
// ==> boost/concept/assert.hpp <==
@@ -420,7 +429,7 @@ struct requirement_<void(*)(Model)>
# define SEQAN_CONCEPT_ASSERT_FN( ModelFnPtr ) \
typedef seqan::detail::instantiate< \
&seqan::requirement_<ModelFnPtr>::failed> \
- SEQAN_PP_CAT(seqan_concept_check,__LINE__) SEQAN_UNUSED
+ SEQAN_PP_CAT(seqan_concept_check,__LINE__) SEQAN_STATIC_ASSERT_UNUSED_ATTRIBUTE
// ---------------------------------------------------------------------------
// ==> boost/concept_check/detail/requires.hpp <==
diff --git a/include/seqan/basic/debug_test_system.h b/include/seqan/basic/debug_test_system.h
index b4a17bf..5c7ee24 100644
--- a/include/seqan/basic/debug_test_system.h
+++ b/include/seqan/basic/debug_test_system.h
@@ -361,9 +361,20 @@ inline const char * toCString(Demangler<T> const & me)
*/
#if !SEQAN_ENABLE_DEBUG
-#define SEQAN_TYPEDEF_FOR_DEBUG SEQAN_UNUSED
+# if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
+# define SEQAN_TYPEDEF_FOR_DEBUG __attribute__((unused))
+# else
+# define SEQAN_TYPEDEF_FOR_DEBUG
+# endif
#else
-#define SEQAN_TYPEDEF_FOR_DEBUG
+# define SEQAN_TYPEDEF_FOR_DEBUG
+#endif
+
+// TODO(holtgrew): This one is for profiling and in tests.
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
+# define SEQAN_UNUSED_TYPEDEF __attribute__((unused))
+#else
+# define SEQAN_UNUSED_TYPEDEF
#endif
namespace seqan {
@@ -2650,6 +2661,10 @@ void SEQAN_ASSERT_NOT_MSG(T1 const & _arg1, const char * comment, ...) {}
*
* @return TCharPtr <tt>char const *</tt>, string with the path to the parent directory of the tests directory.
*
+ * This only works when using the SeqAn SVN checkout!
+ *
+ * The pointed to string is initialized on program startup by the code generated by SEQAN_BEGIN_TESTSUITE.
+ *
* @section Examples
*
* @code{.cpp}
@@ -2661,9 +2676,6 @@ void SEQAN_ASSERT_NOT_MSG(T1 const & _arg1, const char * comment, ...) {}
* fclose(f);
* @endcode
*
- * @deprecated Unsafe.
- * @see getAbsolutePath
-
* @see SEQAN_TEMP_FILENAME
*/
@@ -2749,26 +2761,6 @@ void SEQAN_ASSERT_NOT_MSG(T1 const & _arg1, const char * comment, ...) {}
#endif // #if !SEQAN_ENABLE_TESTING
-
-// ----------------------------------------------------------------------------
-// Function getAbsolutePath()
-// ----------------------------------------------------------------------------
-
-/*!
- * @fn getAbsolutePath
- * @headerfile <seqan/basic.h>
- * @brief Returns absolute path for a filename within the source repository.
- *
- * @signature std::string getAbsolutePath(const char * filename)
- *
- * @return <tt>std::string</tt>, absolute path for a filename within the source repository.
- */
-
-inline std::string getAbsolutePath(const char * path)
-{
- return std::string(SEQAN_PATH_TO_ROOT()) + path;
-}
-
} // namespace seqan
#endif // SEQAN_INCLUDE_SEQAN_BASIC_DEBUG_TEST_SYSTEM_H_
diff --git a/include/seqan/basic/fundamental_tags.h b/include/seqan/basic/fundamental_tags.h
index 66713ee..141c10e 100644
--- a/include/seqan/basic/fundamental_tags.h
+++ b/include/seqan/basic/fundamental_tags.h
@@ -553,10 +553,7 @@ inline void assign(TagSelector<TTagList> &selector, TagSelector<TTagList> const
selector.tagId = other.tagId;
}
-// --------------------------------------------------------------------------
-// Function tagApply()
-// --------------------------------------------------------------------------
-
+// tagApply()
template <typename TFunctor, typename TTag>
inline bool
tagApply(TFunctor &func, TagList<TTag>)
@@ -573,29 +570,6 @@ tagApply(TFunctor &func, TagList<TTag, TSubList>)
return tagApply(func, TSubList());
}
-// --------------------------------------------------------------------------
-// Function tagApply()
-// --------------------------------------------------------------------------
-
-template <typename TContext>
-inline typename Value<TContext>::Type
-tagApply(TContext &, TagSelector<>)
-{
- return typename Value<TContext>::Type();
-}
-
-template <typename TContext, typename TTagList>
-inline typename Value<TContext>::Type
-tagApply(TContext &ctx, TagSelector<TTagList> &format)
-{
- typedef typename TTagList::Type TFormatTag;
-
- if (isEqual(format, TFormatTag()))
- return tagApply(ctx, TFormatTag());
-
- return tagApply(ctx, static_cast<typename TagSelector<TTagList>::Base &>(format));
-}
-
} // namespace seqan
diff --git a/include/seqan/basic/iterator_adapt_std.h b/include/seqan/basic/iterator_adapt_std.h
index 38a3628..2757970 100644
--- a/include/seqan/basic/iterator_adapt_std.h
+++ b/include/seqan/basic/iterator_adapt_std.h
@@ -55,17 +55,6 @@ namespace std
typedef typename seqan::Value<TIter>::Type * pointer; // nolint
typedef typename seqan::Reference<TIter>::Type reference; // nolint
};
-
- // there is a bug in vc2015 stl, it doesnt check the iterator_traits correctly
- // I have reported this bug to microsoft already (filed as DevDiv#1208117).
- // For now, this is a workaround.
-#if _MSC_VER == 1900
- template<class _Ty, class Tag>
- struct _Is_iterator<typename seqan::Iter<_Ty, Tag> >
- : true_type
- {
- };
-#endif
}
namespace seqan {
@@ -371,11 +360,12 @@ moveValue(Iter<TContainer, StdIteratorAdaptor> & me,
// Function operator==()
// ----------------------------------------------------------------------------
-template <typename TContainer, typename TContainer2>
-inline SEQAN_FUNC_ENABLE_IF(IsSameType<TContainer const &, TContainer2 const &>, bool)
+template <typename TContainer>
+inline bool
operator==(Iter<TContainer, StdIteratorAdaptor> const & left,
- Iter<TContainer2, StdIteratorAdaptor> const & right)
+ Iter<TContainer, StdIteratorAdaptor> const & right)
{
+ SEQAN_CHECKPOINT;
return hostIterator(left) == hostIterator(right);
}
@@ -383,11 +373,12 @@ operator==(Iter<TContainer, StdIteratorAdaptor> const & left,
// Function operator!=()
// ----------------------------------------------------------------------------
-template <typename TContainer, typename TContainer2>
-inline SEQAN_FUNC_ENABLE_IF(IsSameType<TContainer const &, TContainer2 const &>, bool)
+template <typename TContainer>
+inline bool
operator!=(Iter<TContainer, StdIteratorAdaptor> const & left,
- Iter<TContainer2, StdIteratorAdaptor> const & right)
+ Iter<TContainer, StdIteratorAdaptor> const & right)
{
+ SEQAN_CHECKPOINT;
return hostIterator(left) != hostIterator(right);
}
@@ -395,11 +386,12 @@ operator!=(Iter<TContainer, StdIteratorAdaptor> const & left,
// Function operator<()
// ----------------------------------------------------------------------------
-template <typename TContainer, typename TContainer2>
-inline SEQAN_FUNC_ENABLE_IF(IsSameType<TContainer const &, TContainer2 const &>, bool)
+template <typename TContainer>
+inline bool
operator<(Iter<TContainer, StdIteratorAdaptor> const & left,
- Iter<TContainer2, StdIteratorAdaptor> const & right)
+ Iter<TContainer, StdIteratorAdaptor> const & right)
{
+ SEQAN_CHECKPOINT;
return hostIterator(left) < hostIterator(right);
}
@@ -407,11 +399,12 @@ operator<(Iter<TContainer, StdIteratorAdaptor> const & left,
// Function operator>()
// ----------------------------------------------------------------------------
-template <typename TContainer, typename TContainer2>
-inline SEQAN_FUNC_ENABLE_IF(IsSameType<TContainer const &, TContainer2 const &>, bool)
+template <typename TContainer>
+inline bool
operator>(Iter<TContainer, StdIteratorAdaptor> const & left,
- Iter<TContainer2, StdIteratorAdaptor> const & right)
+ Iter<TContainer, StdIteratorAdaptor> const & right)
{
+ SEQAN_CHECKPOINT;
return hostIterator(left) > hostIterator(right);
}
@@ -419,10 +412,10 @@ operator>(Iter<TContainer, StdIteratorAdaptor> const & left,
// Function operator<=()
// ----------------------------------------------------------------------------
-template <typename TContainer, typename TContainer2>
-inline SEQAN_FUNC_ENABLE_IF(IsSameType<TContainer const &, TContainer2 const &>, bool)
+template <typename TContainer>
+inline bool
operator<=(Iter<TContainer, StdIteratorAdaptor> const & left,
- Iter<TContainer2, StdIteratorAdaptor> const & right)
+ Iter<TContainer, StdIteratorAdaptor> const & right)
{
return hostIterator(left) <= hostIterator(right);
}
@@ -431,11 +424,12 @@ operator<=(Iter<TContainer, StdIteratorAdaptor> const & left,
// Function operator>=()
// ----------------------------------------------------------------------------
-template <typename TContainer, typename TContainer2>
-inline SEQAN_FUNC_ENABLE_IF(IsSameType<TContainer const &, TContainer2 const &>, bool)
+template <typename TContainer>
+inline bool
operator>=(Iter<TContainer, StdIteratorAdaptor> const & left,
- Iter<TContainer2, StdIteratorAdaptor> const & right)
+ Iter<TContainer, StdIteratorAdaptor> const & right)
{
+ SEQAN_CHECKPOINT;
return hostIterator(left) >= hostIterator(right);
}
diff --git a/include/seqan/basic/iterator_adaptor.h b/include/seqan/basic/iterator_adaptor.h
index 61bf347..f627d93 100644
--- a/include/seqan/basic/iterator_adaptor.h
+++ b/include/seqan/basic/iterator_adaptor.h
@@ -725,12 +725,20 @@ operator-=(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & left,
// Function atEnd()
// ----------------------------------------------------------------------------
+//template <typename TContainer, typename TIterator, typename TSpec>
+//inline SEQAN_HOST_DEVICE bool
+//atEnd(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > & me)
+//{
+// SEQAN_CHECKPOINT;
+// return atEnd(me, container(me));
+//}
+//
template <typename TContainer, typename TIterator, typename TSpec>
inline SEQAN_HOST_DEVICE bool
atEnd(Iter<TContainer, AdaptorIterator<TIterator, TSpec> > const & me)
{
SEQAN_CHECKPOINT;
- return atEnd(hostIterator(me), container(me));
+ return atEnd(me, container(me));
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/basic/iterator_counting.h b/include/seqan/basic/iterator_counting.h
index d48b2ae..1465506 100644
--- a/include/seqan/basic/iterator_counting.h
+++ b/include/seqan/basic/iterator_counting.h
@@ -170,11 +170,10 @@ assignValue(Iter<TIncrementable, CountingIteratorImpl_<TSpec> > & me, TValue _va
// Function operator==()
// ----------------------------------------------------------------------------
-//NOTE(h-2): the other operators should get a similar const-container-tolerant interface
-template <typename TSpec, typename TIncrementable, typename TIncrementable2>
-inline SEQAN_FUNC_ENABLE_IF(IsSameType<TIncrementable const &, TIncrementable2 const &>, bool)
+template <typename TSpec, typename TIncrementable>
+inline bool
operator==(Iter<TIncrementable, CountingIteratorImpl_<TSpec> > const & left,
- Iter<TIncrementable2, CountingIteratorImpl_<TSpec> > const & right)
+ Iter<TIncrementable, CountingIteratorImpl_<TSpec> > const & right)
{
return position(left) == position(right);
}
diff --git a/include/seqan/basic/iterator_interface.h b/include/seqan/basic/iterator_interface.h
index bee86c9..75042be 100644
--- a/include/seqan/basic/iterator_interface.h
+++ b/include/seqan/basic/iterator_interface.h
@@ -338,6 +338,7 @@ inline SEQAN_HOST_DEVICE typename Position<TContainer>::Type
position(TIterator const & it,
TContainer const & me)
{
+ SEQAN_CHECKPOINT;
return it - begin(me, Standard());
}
@@ -349,12 +350,43 @@ position(TIterator const & it,
template <typename T, typename TContainer>
inline SEQAN_HOST_DEVICE bool
-atBegin(T const & it,
- TContainer const & cont)
+atBegin(T const & it, TContainer const & cont)
+{
+ SEQAN_CHECKPOINT;
+ return it == begin(cont, Standard());
+}
+
+template <typename T, typename TContainer>
+inline SEQAN_HOST_DEVICE bool
+atBegin(T const & it, TContainer & cont)
{
+ SEQAN_CHECKPOINT;
return it == begin(cont, Standard());
}
+template <typename T, typename TContainer>
+inline SEQAN_HOST_DEVICE bool
+atBegin(T & it, TContainer & cont)
+{
+ SEQAN_CHECKPOINT;
+ return it == begin(cont, Standard());
+}
+
+template <typename T, typename TContainer>
+inline SEQAN_HOST_DEVICE bool
+atBegin(T & it, TContainer const & cont)
+{
+ SEQAN_CHECKPOINT;
+ return it == begin(cont, Standard());
+}
+
+template <typename T>
+inline SEQAN_HOST_DEVICE bool
+atBegin(T & it)
+{
+ return atBegin(it, container(it));
+}
+
template <typename T>
inline SEQAN_HOST_DEVICE bool
atBegin(T const & it)
@@ -368,12 +400,48 @@ atBegin(T const & it)
template <typename T, typename TContainer>
inline SEQAN_HOST_DEVICE bool
+atEnd(T & it,
+ TContainer const & cont)
+{
+ SEQAN_CHECKPOINT;
+ return it == end(cont, Standard());
+}
+
+template <typename T, typename TContainer>
+inline SEQAN_HOST_DEVICE bool
atEnd(T const & it,
TContainer const & cont)
{
+ SEQAN_CHECKPOINT;
return it == end(cont, Standard());
}
+template <typename T, typename TContainer>
+inline SEQAN_HOST_DEVICE bool
+atEnd(T & it,
+ TContainer & cont)
+{
+ SEQAN_CHECKPOINT;
+ return it == end(cont, Standard());
+}
+
+template <typename T, typename TContainer>
+inline SEQAN_HOST_DEVICE bool
+atEnd(T const & it,
+ TContainer & cont)
+{
+ SEQAN_CHECKPOINT;
+ return it == end(cont, Standard());
+}
+
+//template <typename T>
+//inline SEQAN_HOST_DEVICE bool
+//atEnd(T & it)
+//{
+// SEQAN_CHECKPOINT;
+// return atEnd(it, container(it));
+//}
+
template <typename T>
inline SEQAN_HOST_DEVICE bool
atEnd(T const & it)
diff --git a/include/seqan/basic/iterator_range.h b/include/seqan/basic/iterator_range.h
old mode 100644
new mode 100755
diff --git a/include/seqan/basic/metaprogramming_control.h b/include/seqan/basic/metaprogramming_control.h
index e4b5119..30fa4cd 100644
--- a/include/seqan/basic/metaprogramming_control.h
+++ b/include/seqan/basic/metaprogramming_control.h
@@ -66,7 +66,7 @@ namespace seqan {
*
* The following shows a complete example of using the Switch statement.
*
- * @snippet demos/dox/basic/metaprogramming_switch.cpp switch demo
+ * @snippet demos/basic/metaprogramming_switch.cpp switch demo
*/
// TODO(holtgrew): Use Tag<>?
@@ -158,13 +158,13 @@ struct Switch<TAG, NilCase>
* We define the following worker to print an integer. The first argument is of <tt>Nothing</tt> as a dummy. Note that
* the parameter is not const.
*
- * @snippet demos/dox/basic/metaprogramming_control.cpp print worker
+ * @snippet demos/basic/metaprogramming_control.cpp print worker
*
* The following shows an example calling <tt>PrintWorker::body()</tt> through Loop. We have to create a local variable
* since the first parameter is not const. The reason for this is that the parameter can also be used for a mutable
* object that holds some state.
*
- * @snippet demos/dox/basic/metaprogramming_control.cpp print worker call loop reverse
+ * @snippet demos/basic/metaprogramming_control.cpp print worker call loop reverse
*
* @see LoopReverse
*
@@ -231,13 +231,13 @@ public:
* We define the following worker to print an integer. The first argument is of <tt>Nothing</tt> as a dummy. Note that
* the parameter is not const.
*
- * @snippet demos/dox/basic/metaprogramming_control.cpp print worker
+ * @snippet demos/basic/metaprogramming_control.cpp print worker
*
* The following shows an example calling <tt>PrintWorker::body()</tt> through LoopReverse. We have to create a local
* variable since the first parameter is not const. The reason for this is that the parameter can also be used for a
* mutable object that holds some state.
*
- * @snippet demos/dox/basic/metaprogramming_control.cpp print worker call loop
+ * @snippet demos/basic/metaprogramming_control.cpp print worker call loop
*
* @see Loop
*
diff --git a/include/seqan/basic/metaprogramming_enable_if.h b/include/seqan/basic/metaprogramming_enable_if.h
index 513d54d..e78301a 100644
--- a/include/seqan/basic/metaprogramming_enable_if.h
+++ b/include/seqan/basic/metaprogramming_enable_if.h
@@ -265,7 +265,7 @@ struct DisableIf2<true, T> {};
* The following shows an example on how to properly use <tt>SEQAN_CTOR_ENABLE_IF</tt> as the last argument to the
* constructor and suppressing the unused variable warning for the dummy parameter.
*
- * @snippet demos/dox/basic/enable_if.cpp enable if example constructor
+ * @snippet demos/basic/enable_if.cpp enable if example constructor
*/
#define SEQAN_CTOR_ENABLE_IF(...) typename seqan::EnableIf<__VA_ARGS__>::Type * dummy = 0
@@ -293,7 +293,7 @@ struct DisableIf2<true, T> {};
* The following shows an example on how to properly use <tt>SEQAN_CTOR_DISABLE_IF</tt> as the last argument to the
* constructor and suppressing the unused variable warning for the dummy parameter.
*
- * @snippet demos/dox/basic/enable_if.cpp disable if example constructor
+ * @snippet demos/basic/enable_if.cpp disable if example constructor
*/
#define SEQAN_CTOR_DISABLE_IF(...) typename seqan::DisableIf<__VA_ARGS__>::Type * dummy = 0
@@ -322,7 +322,7 @@ struct DisableIf2<true, T> {};
* The following shows an example on how to properly use <tt>SEQAN_FUNC_ENABLE_IF</tt> as the last argument to the
* constructor and suppressing the unused variable warning for the dummy parameter.
*
- * @snippet demos/dox/basic/enable_if.cpp enable if example function
+ * @snippet demos/basic/enable_if.cpp enable if example function
*/
#define SEQAN_FUNC_ENABLE_IF(...) typename seqan::EnableIf<__VA_ARGS__>::Type
@@ -351,7 +351,7 @@ struct DisableIf2<true, T> {};
* The following shows an example on how to properly use <tt>SEQAN_FUNC_DISABLE_IF</tt> as the last argument to the
* constructor and suppressing the unused variable warning for the dummy parameter.
*
- * @snippet demos/dox/basic/enable_if.cpp disable if example function
+ * @snippet demos/basic/enable_if.cpp disable if example function
*/
#define SEQAN_FUNC_DISABLE_IF(...) typename seqan::DisableIf<__VA_ARGS__>::Type
diff --git a/include/seqan/basic/metaprogramming_logic.h b/include/seqan/basic/metaprogramming_logic.h
index 824a06e..c65f832 100644
--- a/include/seqan/basic/metaprogramming_logic.h
+++ b/include/seqan/basic/metaprogramming_logic.h
@@ -67,18 +67,18 @@ namespace seqan {
*
* Print the values of the tags/metafunctions <tt>True</tt> and <tt>False</tt>.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp tags true false
+ * @snippet demos/basic/metaprogramming_logic.cpp tags true false
*
* @section Inheriting from True and False
*
* The two tags True and False have the special property that they can also be used as metafunctions and both have a
* <tt>VALUE</tt> as well as a <tt>TYPE</tt>. This property makes it very convenient to define metafunctions by inheriting from the <tt>True</tt> or <tt>False</tt>.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp inheriting from true false
+ * @snippet demos/basic/metaprogramming_logic.cpp inheriting from true false
*
* The metafunction <tt>IsInt32</tt> can now be used as follows.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp using isint32
+ * @snippet demos/basic/metaprogramming_logic.cpp using isint32
*/
/*!
@@ -158,7 +158,7 @@ struct False
*
* Here is an example for this:
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp shortcut to type feature
+ * @snippet demos/basic/metaprogramming_logic.cpp shortcut to type feature
*
* @see LogicalValuesTags#True
* @see LogicalValuesTags#False
@@ -179,11 +179,11 @@ struct False
*
* We define the following two helper functions.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp true false print helpers
+ * @snippet demos/basic/metaprogramming_logic.cpp true false print helpers
*
* Now, we can write the following code and achieve the following output:
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp print bool type eval
+ * @snippet demos/basic/metaprogramming_logic.cpp print bool type eval
*/
template <bool B>
@@ -213,11 +213,11 @@ struct Eval<true> : True {};
*
* We define the following two helper functions.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp true false print helpers
+ * @snippet demos/basic/metaprogramming_logic.cpp true false print helpers
*
* Now, we can write the following code using Not.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp print bool type not
+ * @snippet demos/basic/metaprogramming_logic.cpp print bool type not
*/
template <typename TBool1>
@@ -249,11 +249,11 @@ struct Not<True> : False {};
*
* We define the following two helper functions.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp true false print helpers
+ * @snippet demos/basic/metaprogramming_logic.cpp true false print helpers
*
* Now, we can write the following code using NotC.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp print bool type notc
+ * @snippet demos/basic/metaprogramming_logic.cpp print bool type notc
*/
template <bool B>
@@ -286,11 +286,11 @@ struct NotC<true> : False {};
*
* We define the following two helper functions.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp true false print helpers
+ * @snippet demos/basic/metaprogramming_logic.cpp true false print helpers
*
* Now, we can write the following code using Or.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp print bool type or
+ * @snippet demos/basic/metaprogramming_logic.cpp print bool type or
*/
template <typename TBool1, typename TBool2>
@@ -327,11 +327,11 @@ struct Or<True, True> : True {};
*
* We define the following two helper functions.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp true false print helpers
+ * @snippet demos/basic/metaprogramming_logic.cpp true false print helpers
*
* Now, we can write the following code using OrC.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp print bool type orc
+ * @snippet demos/basic/metaprogramming_logic.cpp print bool type orc
*/
template <bool B1, bool B2>
@@ -368,11 +368,11 @@ struct OrC<true, true> : True {};
*
* We define the following two helper functions.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp true false print helpers
+ * @snippet demos/basic/metaprogramming_logic.cpp true false print helpers
*
* Now, we can write the following code using And.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp print bool type and
+ * @snippet demos/basic/metaprogramming_logic.cpp print bool type and
*/
template <typename TBool1, typename TBool2>
@@ -409,11 +409,11 @@ struct And<True, True> : True {};
*
* We define the following two helper functions.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp true false print helpers
+ * @snippet demos/basic/metaprogramming_logic.cpp true false print helpers
*
* Now, we can write the following code using AndC.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp print bool type andc
+ * @snippet demos/basic/metaprogramming_logic.cpp print bool type andc
*/
template <bool B1, bool B2>
@@ -449,11 +449,11 @@ struct AndC<true, true> : True {};
*
* We define the following two helper functions.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp true false print helpers
+ * @snippet demos/basic/metaprogramming_logic.cpp true false print helpers
*
* Now, we can write the following code using If.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp print bool type if
+ * @snippet demos/basic/metaprogramming_logic.cpp print bool type if
*/
template <typename TCondition, typename T1, typename T2>
@@ -526,11 +526,11 @@ ifSwitch(False, TArgT const &, TArgF const & argFalse)
*
* We define the following two helper functions.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp true false print helpers
+ * @snippet demos/basic/metaprogramming_logic.cpp true false print helpers
*
* Now, we can write the following code using If.
*
- * @snippet demos/dox/basic/metaprogramming_logic.cpp print bool type if
+ * @snippet demos/basic/metaprogramming_logic.cpp print bool type if
*/
template <bool FLAG, typename T1, typename T2>
diff --git a/include/seqan/basic/metaprogramming_math.h b/include/seqan/basic/metaprogramming_math.h
index 78348fd..e2426b1 100644
--- a/include/seqan/basic/metaprogramming_math.h
+++ b/include/seqan/basic/metaprogramming_math.h
@@ -81,7 +81,7 @@ struct ConstUInt {};
*
* @section Example
*
- * @snippet demos/dox/basic/metaprogramming_math.cpp log2 call
+ * @snippet demos/basic/metaprogramming_math.cpp log2 call
*/
template <__uint64 numerus, __uint64 base>
@@ -113,7 +113,7 @@ template <__uint64 base> struct LogN<0, base> { static const __uint64 VALUE = 0;
*
* @section Example
*
- * @snippet demos/dox/basic/metaprogramming_math.cpp log2floor call
+ * @snippet demos/basic/metaprogramming_math.cpp log2floor call
*/
template <__uint64 numerus, __uint64 base>
@@ -144,7 +144,7 @@ template <__uint64 base> struct LogNFloor<0, base> { static const __uint64 VALUE
*
* @return __uint64 b<sup>e</sup
*
- * @snippet demos/dox/basic/metaprogramming_math.cpp power call
+ * @snippet demos/basic/metaprogramming_math.cpp power call
*/
template <__int64 base, __int64 exponent>
diff --git a/include/seqan/consensus/consensus_aligner_interface.h b/include/seqan/consensus/consensus_aligner_interface.h
index 98c1e50..3e2f054 100644
--- a/include/seqan/consensus/consensus_aligner_interface.h
+++ b/include/seqan/consensus/consensus_aligner_interface.h
@@ -124,11 +124,11 @@ namespace seqan {
* <tt>consensusAlignment()</tt> is then used to compute a MSA and the consensus sequence is stored in
* <tt>store.contigStore[0].seq</tt>.
*
- * @include demos/dox/consensus/consensus_alignment.cpp
+ * @include demos/consensus/consensus_alignment.cpp
*
* The output is as follows:
*
- * @include demos/dox/consensus/consensus_alignment.cpp.stdout
+ * @include demos/consensus/consensus_alignment.cpp.stdout
*/
template <typename TSpec, typename TConfig>
diff --git a/include/seqan/consensus/consensus_builder.h b/include/seqan/consensus/consensus_builder.h
index 38463b3..7cc8b61 100644
--- a/include/seqan/consensus/consensus_builder.h
+++ b/include/seqan/consensus/consensus_builder.h
@@ -290,8 +290,7 @@ bool alignmentGraphToFragmentStore(TFragmentStore & store,
typedef typename TAlignedRead::TGapAnchors TGapAnchors;
typedef typename TFragmentStore::TReadSeq TReadSeq;
SEQAN_ASSERT_NOT(empty(store.readSeqStore[*itS]));
- Gaps<TReadSeq, AnchorGaps<TGapAnchors> > gaps(static_cast<TReadSeq>(store.readSeqStore[*itS]),
- store.alignedReadStore[*itS].gaps);
+ Gaps<TReadSeq, AnchorGaps<TGapAnchors> > gaps(store.readSeqStore[*itS], store.alignedReadStore[*itS].gaps);
insertGaps(gaps, from - store.alignedReadStore[*itS].beginPos, fLen);
store.alignedReadStore[*itS].endPos += fLen;
if (DEBUG_INCONSISTENT_LEN)
@@ -317,7 +316,7 @@ bool alignmentGraphToFragmentStore(TFragmentStore & store,
for (TAlignedReadIter it2 = begin(store.alignedReadStore, Standard()); it2 != itEnd; ++it2)
{
typedef Gaps<TReadSeq, AnchorGaps<String<typename TFragmentStore::TReadGapAnchor> > > TReadGaps;
- TReadGaps readGaps(static_cast<TReadSeq>(store.readSeqStore[it2->readId]), it2->gaps);
+ TReadGaps readGaps(store.readSeqStore[it2->readId], it2->gaps);
SEQAN_ASSERT_EQ(length(readGaps) - length(store.readSeqStore[it2->readId]), gapCount[it2->readId]);
if (DEBUG_INCONSISTENT_LEN)
std::cerr << "READ GAPS\t" << (it2 - begin(store.alignedReadStore, Standard())) << "\t>>>" << readGaps << "<<< (" << length(readGaps) << ")\n"
diff --git a/include/seqan/find/find_ahocorasick.h b/include/seqan/find/find_ahocorasick.h
index fde25ee..566868c 100644
--- a/include/seqan/find/find_ahocorasick.h
+++ b/include/seqan/find/find_ahocorasick.h
@@ -66,7 +66,7 @@ namespace SEQAN_NAMESPACE_MAIN
* The following example program searches for three needles (<tt>queries</tt>) in two haystack sequences (<tt>db</tt>)
* using the Aho-Corasick algorithm.
*
- * @include demos/dox/find/finder_aho_corasick.cpp
+ * @include demos/find/finder_aho_corasick.cpp
*
* When executed, this program will create the following output.
*
diff --git a/include/seqan/find/find_base.h b/include/seqan/find/find_base.h
index ecc2651..c8f1c66 100644
--- a/include/seqan/find/find_base.h
+++ b/include/seqan/find/find_base.h
@@ -196,20 +196,20 @@ struct Needle<Segment<THost, TSpec> const>
* The following example shows how one can search online for a pattern in a haystack. Note that it is neccessary to
* reset the finder befor searching for another pattern.
*
- * @include demos/dox/find/finder_online.cpp
+ * @include demos/find/finder_online.cpp
*
* The output is as follows.
*
- * @include demos/dox/find/finder_online.cpp.stdout
+ * @include demos/find/finder_online.cpp.stdout
*
* In contrast to the example above the code below shows how one can use a Finder with an index as base. Again, note
* that it is neccessary to reset the finder befor searching for another pattern.
*
- * @include demos/dox/find/finder_index.cpp
+ * @include demos/find/finder_index.cpp
*
* The output is as follows.
*
- * @include demos/dox/find/finder_index.cpp.stdout
+ * @include demos/find/finder_index.cpp.stdout
*/
diff --git a/include/seqan/find/find_set_horspool.h b/include/seqan/find/find_set_horspool.h
index 6572e93..8e395ca 100644
--- a/include/seqan/find/find_set_horspool.h
+++ b/include/seqan/find/find_set_horspool.h
@@ -286,8 +286,6 @@ inline bool find(TFinder & finder, Pattern<TNeedle, SetHorspool> & me) {
else clear(me.data_endPositions);
me.data_lastState = current;
finder -= me.data_needleLength;
- _setFinderLength(finder, me.data_needleLength+1);
- _setFinderEnd(finder, position(finder)+length(finder));
return true;
}
oldMatch = false;
diff --git a/include/seqan/gff_io/gff_io_base.h b/include/seqan/gff_io/gff_io_base.h
index d1ec0a8..3e576ba 100644
--- a/include/seqan/gff_io/gff_io_base.h
+++ b/include/seqan/gff_io/gff_io_base.h
@@ -349,12 +349,9 @@ void readRecord(GffRecord & record, CharString & buffer, TFwdIterator & iter)
{
IsNewline isNewline;
- // skip commented lines
- while (!atEnd(iter) && value(iter) == '#')
- skipLine(iter);
-
clear(record);
- skipUntil(iter, NotFunctor<IsWhitespace>()); //skip empty lines
+
+ skipUntil(iter, NotFunctor<OrFunctor<EqualsChar<'#'>, IsWhitespace> >()); //skip commments and empty lines
// read column 1: seqid
readUntil(record.ref, iter, OrFunctor<IsTab, AssertFunctor<NotFunctor<IsNewline>, ParseError, Gff> >());
diff --git a/include/seqan/graph_algorithms/all_pairs_shortest_path.h b/include/seqan/graph_algorithms/all_pairs_shortest_path.h
index e0df2f2..a164553 100644
--- a/include/seqan/graph_algorithms/all_pairs_shortest_path.h
+++ b/include/seqan/graph_algorithms/all_pairs_shortest_path.h
@@ -170,9 +170,9 @@ _extendShortestPaths(TMatrix& local,
*
* @section Example
*
- * @include demos/dox/graph_algorithms/all_pairs_shortest_path.cpp
+ * @include demos/graph_algorithms/all_pairs_shortest_path.cpp
*
- * @include demos/dox/graph_algorithms/all_pairs_shortest_path.cpp.stdout
+ * @include demos/graph_algorithms/all_pairs_shortest_path.cpp.stdout
*
* @see floydWarshallAlgorithm
*/
diff --git a/include/seqan/graph_algorithms/bellman_ford.h b/include/seqan/graph_algorithms/bellman_ford.h
index dee3e62..cd92d72 100644
--- a/include/seqan/graph_algorithms/bellman_ford.h
+++ b/include/seqan/graph_algorithms/bellman_ford.h
@@ -82,9 +82,9 @@ namespace seqan {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/bellman_ford_algorithm.cpp
+ * @include demos/graph_algorithms/bellman_ford_algorithm.cpp
*
- * @include demos/dox/graph_algorithms/bellman_ford_algorithm.cpp.stdout
+ * @include demos/graph_algorithms/bellman_ford_algorithm.cpp.stdout
*
* @see dagShortestPath
* @see dijkstra
diff --git a/include/seqan/graph_algorithms/breadth_first_search.h b/include/seqan/graph_algorithms/breadth_first_search.h
index 8c8730f..904f197 100644
--- a/include/seqan/graph_algorithms/breadth_first_search.h
+++ b/include/seqan/graph_algorithms/breadth_first_search.h
@@ -77,9 +77,9 @@ namespace seqan {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/breadth_first_search.cpp
+ * @include demos/graph_algorithms/breadth_first_search.cpp
*
- * @include demos/dox/graph_algorithms/breadth_first_search.cpp.stdout
+ * @include demos/graph_algorithms/breadth_first_search.cpp.stdout
*
* @see depthFirstSearch
*/
diff --git a/include/seqan/graph_algorithms/depth_first_search.h b/include/seqan/graph_algorithms/depth_first_search.h
index 7966b42..f4990b9 100644
--- a/include/seqan/graph_algorithms/depth_first_search.h
+++ b/include/seqan/graph_algorithms/depth_first_search.h
@@ -104,9 +104,9 @@ _dfsVisit(Graph<TSpec> const& g,
*
* @section Example
*
- * @include demos/dox/graph_algorithms/depth_first_search.cpp
+ * @include demos/graph_algorithms/depth_first_search.cpp
*
- * @include demos/dox/graph_algorithms/depth_first_search.cpp.stdout
+ * @include demos/graph_algorithms/depth_first_search.cpp.stdout
*
* @see breadthFirstSearch
*/
diff --git a/include/seqan/graph_algorithms/dijkstra.h b/include/seqan/graph_algorithms/dijkstra.h
index 683a04d..384b4fb 100644
--- a/include/seqan/graph_algorithms/dijkstra.h
+++ b/include/seqan/graph_algorithms/dijkstra.h
@@ -78,9 +78,9 @@ namespace seqan {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/dijkstra.cpp
+ * @include demos/graph_algorithms/dijkstra.cpp
*
- * @include demos/dox/graph_algorithms/dijkstra.cpp.stdout
+ * @include demos/graph_algorithms/dijkstra.cpp.stdout
*
* @see dagShortestPath
* @see bellmanFordAlgorithm
diff --git a/include/seqan/graph_algorithms/floyd_warshall.h b/include/seqan/graph_algorithms/floyd_warshall.h
index 8d399f9..5611838 100644
--- a/include/seqan/graph_algorithms/floyd_warshall.h
+++ b/include/seqan/graph_algorithms/floyd_warshall.h
@@ -78,9 +78,9 @@ namespace seqan {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/floyd_warshall_algorithm.cpp
+ * @include demos/graph_algorithms/floyd_warshall_algorithm.cpp
*
- * @include demos/dox/graph_algorithms/floyd_warshall_algorithm.cpp.stdout
+ * @include demos/graph_algorithms/floyd_warshall_algorithm.cpp.stdout
*
* @see allPairsShortestPath
*/
diff --git a/include/seqan/graph_algorithms/ford_fulkerson.h b/include/seqan/graph_algorithms/ford_fulkerson.h
index 08d8e90..0362026 100644
--- a/include/seqan/graph_algorithms/ford_fulkerson.h
+++ b/include/seqan/graph_algorithms/ford_fulkerson.h
@@ -153,9 +153,9 @@ _getMinimumAug(Graph<TSpec> const & rG,
*
* @section Example
*
- * @include demos/dox/graph_algorithms/ford_fulkerson_algorithm.cpp
+ * @include demos/graph_algorithms/ford_fulkerson_algorithm.cpp
*
- * @include demos/dox/graph_algorithms/ford_fulkerson_algorithm.cpp.stdout
+ * @include demos/graph_algorithms/ford_fulkerson_algorithm.cpp.stdout
*/
template <typename TSpec, typename TVertexDescriptor, typename TCapMap, typename TFlowMap>
typename Value<TFlowMap>::Type
diff --git a/include/seqan/graph_algorithms/graph_algorithm_lis_his.h b/include/seqan/graph_algorithms/graph_algorithm_lis_his.h
index e1cfa6c..d489a3b 100644
--- a/include/seqan/graph_algorithms/graph_algorithm_lis_his.h
+++ b/include/seqan/graph_algorithms/graph_algorithm_lis_his.h
@@ -108,7 +108,7 @@ _nextInSortedSequence(TSortedSequence const& list, TIterator const& prev) {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/longest_increasing_subsequence.cpp
+ * @include demos/graph_algorithms/longest_increasing_subsequence.cpp
*
* @code{.console}
* 5,3,4,9,6,2,1,8,7,10,
@@ -196,7 +196,7 @@ longestIncreasingSubsequence(TString const& str, TPositions& pos) {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/longest_common_subsequence.cpp
+ * @include demos/graph_algorithms/longest_common_subsequence.cpp
*
* @code{.console}
* Score = 3
@@ -351,7 +351,7 @@ globalAlignment(TAlign& align,
*
* @section Example
*
- * @include demos/dox/graph_algorithms/heaviest_increasing_subsequence.cpp
+ * @include demos/graph_algorithms/heaviest_increasing_subsequence.cpp
*
* @code{.console}
* z(Weight=1),e(Weight=1),i(Weight=10),t(Weight=1),g(Weight=1),e(Weight=1),i(Weight=1),s(Weight=1),t(Weight=1),
diff --git a/include/seqan/graph_algorithms/kruskal.h b/include/seqan/graph_algorithms/kruskal.h
index ab5316b..af45cd7 100644
--- a/include/seqan/graph_algorithms/kruskal.h
+++ b/include/seqan/graph_algorithms/kruskal.h
@@ -84,9 +84,9 @@ struct LessPairI1_ : public std::unary_function<Pair<TWeight, TPair>, bool>
*
* @section Example
*
- * @include demos/dox/graph_algorithms/kruskals_algorithm.cpp
+ * @include demos/graph_algorithms/kruskals_algorithm.cpp
*
- * @include demos/dox/graph_algorithms/kruskals_algorithm.cpp.stdout
+ * @include demos/graph_algorithms/kruskals_algorithm.cpp.stdout
*
* @see primsAlgorithm
*/
diff --git a/include/seqan/graph_algorithms/prim.h b/include/seqan/graph_algorithms/prim.h
index 0aa30dc..3835e7c 100644
--- a/include/seqan/graph_algorithms/prim.h
+++ b/include/seqan/graph_algorithms/prim.h
@@ -75,9 +75,9 @@ namespace seqan {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/prims_algorithm.cpp
+ * @include demos/graph_algorithms/prims_algorithm.cpp
*
- * @include demos/dox/graph_algorithms/prims_algorithm.cpp.stdout
+ * @include demos/graph_algorithms/prims_algorithm.cpp.stdout
*
* @see kruskalsAlgorithm
*/
diff --git a/include/seqan/graph_algorithms/single_source_shortest_path.h b/include/seqan/graph_algorithms/single_source_shortest_path.h
index 74e6219..4e6feaf 100644
--- a/include/seqan/graph_algorithms/single_source_shortest_path.h
+++ b/include/seqan/graph_algorithms/single_source_shortest_path.h
@@ -190,9 +190,9 @@ _relax(Graph<TSpec> const& g,
*
* @section Example
*
- * @include demos/dox/graph_algorithms/dag_shortest_path.cpp
+ * @include demos/graph_algorithms/dag_shortest_path.cpp
*
- * @include demos/dox/graph_algorithms/dag_shortest_path.cpp.stdout
+ * @include demos/graph_algorithms/dag_shortest_path.cpp.stdout
*
* @see bellmanFordAlgorithm
* @see dijkstra
diff --git a/include/seqan/graph_algorithms/strongly_connected_compnents.h b/include/seqan/graph_algorithms/strongly_connected_compnents.h
index deccda6..1ee4837 100644
--- a/include/seqan/graph_algorithms/strongly_connected_compnents.h
+++ b/include/seqan/graph_algorithms/strongly_connected_compnents.h
@@ -74,9 +74,9 @@ namespace seqan {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/strongly_connected_components.cpp
+ * @include demos/graph_algorithms/strongly_connected_components.cpp
*
- * @include demos/dox/graph_algorithms/strongly_connected_components.cpp.stdout
+ * @include demos/graph_algorithms/strongly_connected_components.cpp.stdout
*/
template <typename TSpec, typename TComponents>
typename Size<Graph<TSpec> >::Type
diff --git a/include/seqan/graph_algorithms/topological_sort.h b/include/seqan/graph_algorithms/topological_sort.h
index 35a7048..9cf81bd 100644
--- a/include/seqan/graph_algorithms/topological_sort.h
+++ b/include/seqan/graph_algorithms/topological_sort.h
@@ -74,9 +74,9 @@ namespace seqan {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/topological_sort.cpp
+ * @include demos/graph_algorithms/topological_sort.cpp
*
- * @include demos/dox/graph_algorithms/topological_sort.cpp.stdout
+ * @include demos/graph_algorithms/topological_sort.cpp.stdout
*/
template <typename TSpec, typename TVertexDescriptor>
void topologicalSort(String<TVertexDescriptor> & topSort,
diff --git a/include/seqan/graph_algorithms/transitive_closure.h b/include/seqan/graph_algorithms/transitive_closure.h
index b553c86..6e8374c 100644
--- a/include/seqan/graph_algorithms/transitive_closure.h
+++ b/include/seqan/graph_algorithms/transitive_closure.h
@@ -72,9 +72,9 @@ namespace seqan {
*
* @section Example
*
- * @include demos/dox/graph_algorithms/transitive_closure.cpp
+ * @include demos/graph_algorithms/transitive_closure.cpp
*
- * @include demos/dox/graph_algorithms/transitive_closure.cpp.stdout
+ * @include demos/graph_algorithms/transitive_closure.cpp.stdout
*/
template <typename TSpec, typename TMatrix>
void transitiveClosure(TMatrix & closure,
diff --git a/include/seqan/graph_align/graph_impl_align.h b/include/seqan/graph_align/graph_impl_align.h
index 4313fbd..33f9cfa 100644
--- a/include/seqan/graph_align/graph_impl_align.h
+++ b/include/seqan/graph_align/graph_impl_align.h
@@ -195,7 +195,7 @@ public:
*
* @section Example
*
- * @include demos/dox/graph_align/graph_align.cpp
+ * @include demos/graph_align/graph_align.cpp
*
* @code{.console}
* Score = -8
diff --git a/include/seqan/graph_types/graph_interface.h b/include/seqan/graph_types/graph_interface.h
index 1f4ec57..03f1d19 100644
--- a/include/seqan/graph_types/graph_interface.h
+++ b/include/seqan/graph_types/graph_interface.h
@@ -79,11 +79,11 @@ struct Hmm;
* This is an example for Dijktra's algorithm on a directed graph with an external property map. The property map
* labels the edges with weights. The xample only outputs distances, not th edetails of the paths.
*
- * @include demos/dox/graph_types/graph_algo_dijkstra.cpp
+ * @include demos/graph/graph_algo_dijkstra.cpp
*
* The output of the distances is as follows:
*
- * @include demos/dox/graph_types/graph_algo_dijkstra.cpp.stdout
+ * @include demos/graph/graph_algo_dijkstra.cpp.stdout
*/
template<typename TSpec = Directed<> >
diff --git a/include/seqan/index/index_base.h b/include/seqan/index/index_base.h
index 1b965ae..34abc67 100644
--- a/include/seqan/index/index_base.h
+++ b/include/seqan/index/index_base.h
@@ -195,20 +195,20 @@ template <
* The following code shows how to search for exact matches between the reference "tobeornottobe" and the
* pattern "to" with the means of a Finder.
*
- * @include demos/dox/index/finder.cpp
+ * @include demos/index/index_finder.cpp
*
* The result is as follows
*
- * @include demos/dox/index/finder.cpp.stdout
+ * @include demos/index/index_finder.cpp.stdout
*
* This code shows how an index can be used with iterators to achieve a pre-order tree like traversal
* in DFS of the text "tobeornottobe". In order to do so a Top-Down History iterator is used.
*
- * @include demos/dox/index/iterator.cpp
+ * @include demos/index/index_iterator.cpp
*
* The result is as follows
*
- * @include demos/dox/index/iterator.cpp.stdout
+ * @include demos/index/index_iterator.cpp.stdout
*
* Note that you can also use specialized iterators such as:
*
@@ -224,11 +224,11 @@ template <
*
* You can achieve a post-order traversal like this:
*
- * @snippet demos/dox/index/iterator_short.cpp iteration
+ * @snippet demos/index/index_iterator_short.cpp iteration
*
* The result is as follows
*
- * @include demos/dox/index/iterator_short.cpp.stdout
+ * @include demos/index/index_iterator_short.cpp.stdout
*/
template <typename TObject, typename TSpec>
@@ -717,11 +717,11 @@ template <
*
* The following example shows how to search for a pattern in a string.
*
- * @include demos/dox/index/getOccurrences_getFrequency_range_getFibre.cpp
+ * @include demos/index/index_getOccurrences_getFrequency_range_getFibre.cpp
*
* The output is as follows:
*
- * @include demos/dox/index/getOccurrences_getFrequency_range_getFibre.cpp.stdout
+ * @include demos/index/index_getOccurrences_getFrequency_range_getFibre.cpp.stdout
*
* @see Fibre
*/
@@ -893,11 +893,11 @@ template <
* The following example shows how to count characters of an index, determine the number of sequences involved and how
* to search for a pattern.
*
- * @include demos/dox/index/length_countSequences.cpp
+ * @include demos/index/index_length_countSequences.cpp
*
* The output is as follows:
*
- * @include demos/dox/index/length_countSequences.cpp.stdout
+ * @include demos/index/index_length_countSequences.cpp.stdout
*/
template <typename TText, typename TSpec>
@@ -923,7 +923,7 @@ template <
* The following example shows how to count characters of an index, determine the number of sequences involved and how
* to search for a pattern.
*
- * @include demos/dox/index/length_countSequences.cpp
+ * @include demos/index/index_length_countSequences.cpp
*
* The output is as follows:
*
@@ -1292,11 +1292,11 @@ template <
*
* The following code shows how the BWT of a text can be computed.
*
- * @include demos/dox/index/textAt_indexText_saAt_indexRequire.cpp
+ * @include demos/index/index_textAt_indexText_saAt_indexRequire.cpp
*
* The output is as follows:
*
- * @include demos/dox/index/textAt_indexText_saAt_indexRequire.cpp.stdout
+ * @include demos/index/index_textAt_indexText_saAt_indexRequire.cpp.stdout
*/
template <typename TText, typename TSpec>
@@ -1527,11 +1527,11 @@ template <
*
* The following code shows how the function @link Index#open @endlink is used with indices.
*
- * @include demos/dox/index/open_save.cpp
+ * @include demos/index/index_open_save.cpp
*
* The output is as follows:
*
- * @include demos/dox/index/open_save.cpp.stdout
+ * @include demos/index/index_open_save.cpp.stdout
*/
// ----------------------------------------------------------------------------
@@ -1559,11 +1559,11 @@ template <
*
* The following code shows how the function @link Index#save @endlink is used with indices.
*
- * @include demos/dox/index/open_save.cpp
+ * @include demos/index/index_open_save.cpp
*
* The output is as follows:
*
- * @include demos/dox/index/open_save.cpp.stdout
+ * @include demos/index/index_open_save.cpp.stdout
*/
}
diff --git a/include/seqan/index/index_esa_base.h b/include/seqan/index/index_esa_base.h
index e321b43..7fd34e5 100644
--- a/include/seqan/index/index_esa_base.h
+++ b/include/seqan/index/index_esa_base.h
@@ -99,7 +99,7 @@ namespace SEQAN_NAMESPACE_MAIN
*
* The following example shows how a the @link TopDown @endlink tag is used.
*
- * @include demos/dox/index/begin_atEnd_representative.cpp
+ * @include demos/index/index_begin_atEnd_representative.cpp
*
* @code{.output}
* A
@@ -144,7 +144,7 @@ namespace SEQAN_NAMESPACE_MAIN
*
* The following example shows how the @link BottomUp @endlink tag is used.
*
- * @include demos/dox/index/begin_atEnd_representative_bottomUp.cpp
+ * @include demos/index/index_begin_atEnd_representative_bottomUp.cpp
*
* @code{.txt}
* AA
diff --git a/include/seqan/index/index_esa_stree.h b/include/seqan/index/index_esa_stree.h
index c108c26..7e8d845 100644
--- a/include/seqan/index/index_esa_stree.h
+++ b/include/seqan/index/index_esa_stree.h
@@ -121,7 +121,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
* This code shows how an index can be used with iterators to achieve a pre-order tree like traversal
* in DFS of the text "tobeornottobe". In order to do so a Top-Down History iterator is used.
*
- * @include demos/dox/index/iterator.cpp
+ * @include demos/index/index_iterator.cpp
*
* @code{.output}
*
@@ -1062,11 +1062,11 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
*
* @section Examples
*
- * @include demos/dox/index/counting.cpp
+ * @include demos/index/index_counting.cpp
*
* The result is as follows:
*
- * @include demos/dox/index/counting.cpp.stdout
+ * @include demos/index/index_counting.cpp.stdout
*/
template < typename TIndex, class TSpec >
@@ -1547,11 +1547,11 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
* returns an iterator pointing to the root node, while in the second case @link StringTreeConcept#begin @endlink returns a pointer to the
* left most node.
*
- * @include demos/dox/index/begin_atEnd_representative.cpp
+ * @include demos/index/index_begin_atEnd_representative.cpp
*
* The output is as follows:
*
- * @include demos/dox/index/begin_atEnd_representative.cpp.stdout
+ * @include demos/index/index_begin_atEnd_representative.cpp.stdout
*/
template < typename TText, typename TIndexSpec, class TSpec >
inline typename Iterator<Index<TText, TIndexSpec>, TSpec >::Type
@@ -1738,7 +1738,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
*
* The following code shows a simple example how the function @link TopDownIterator#goDown @endlink is used.
*
- * @include demos/dox/index/begin_range_goDown_representative_repLength.cpp
+ * @include demos/index/index_begin_range_goDown_representative_repLength.cpp
*
* @code{.output}
* The string ISSI occurs 2 times in MISSISSIPPI and has 4 characters.
@@ -2040,7 +2040,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
*
* The following code shows how the function @link TopDownHistoryIterator#goUp @endlink is used.
*
- * @include demos/dox/index/iterator.cpp
+ * @include demos/index/index_iterator.cpp
*
* @code{.output}
* be
@@ -2386,7 +2386,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
*
* The following example shows the usage of the @link VSTreeIterator#atEnd @endlink function.
*
- * @include demos/dox/index/begin_atEnd_representative.cpp
+ * @include demos/index/index_begin_atEnd_representative.cpp
*
* @code{.output}
* A
@@ -2421,7 +2421,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
*
* The following example shows the usage of the @link BottomUp#atEnd @endlink function.
*
- * @include demos/dox/index/begin_atEnd_representative.cpp
+ * @include demos/index/index_begin_atEnd_representative.cpp
*
* @code{.output}
* A
@@ -2467,7 +2467,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
*
* The following example shows the usage of the @Function.isRoot@ function.
*
- * @include demos/dox/index/begin_atEnd_representative_bottomUp.cpp
+ * @include demos/index/index_begin_atEnd_representative_bottomUp.cpp
*
* code{.output}
* output:AA
@@ -2698,7 +2698,7 @@ SEQAN_CONCEPT_IMPL((Index<TText, IndexEsa<TSpec> > const), (StringTreeConcept));
* The following code how @link VSTreeIterator#getFrequency @endlink is used. Note that the result of alternative 1 and 2 is the same,
* however alternative one copies a string which requires more memory.
*
- * @include demos/dox/index/getOccurrences_getFrequency_range_getFibre.cpp
+ * @include demos/index/index_getOccurrences_getFrequency_range_getFibre.cpp
*
* @code{.output}
* SSI occurs in 2 sequences.
diff --git a/include/seqan/index/index_fm.h b/include/seqan/index/index_fm.h
index 72faa94..96128a5 100644
--- a/include/seqan/index/index_fm.h
+++ b/include/seqan/index/index_fm.h
@@ -366,10 +366,9 @@ _findFirstIndex(Finder<Index<TText, FMIndex<TSpec, TConfig> >, TSpecFinder> & fi
template <typename TText, typename TSpec, typename TConfig>
inline bool indexCreate(Index<TText, FMIndex<TSpec, TConfig> > & index, FibreSALF)
{
- typedef Index<TText, FMIndex<TSpec, TConfig> > TIndex;
- typedef typename Fibre<TIndex, FibreTempSA>::Type TTempSA;
- typedef typename Size<TIndex>::Type TSize;
- typedef typename DefaultIndexCreator<TIndex, FibreSA>::Type TAlgo;
+ typedef Index<TText, FMIndex<TSpec, TConfig> > TIndex;
+ typedef typename Fibre<TIndex, FibreTempSA>::Type TTempSA;
+ typedef typename Size<TIndex>::Type TSize;
TText const & text = indexText(index);
@@ -380,7 +379,7 @@ inline bool indexCreate(Index<TText, FMIndex<TSpec, TConfig> > & index, FibreSAL
// Create the full SA.
resize(tempSA, lengthSum(text), Exact());
- createSuffixArray(tempSA, text, TAlgo());
+ createSuffixArray(tempSA, text, Skew7());
// Create the LF table.
createLF(indexLF(index), text, tempSA);
diff --git a/include/seqan/index/index_fm_rank_dictionary_wt.h b/include/seqan/index/index_fm_rank_dictionary_wt.h
index 4d956a3..cb58f3a 100644
--- a/include/seqan/index/index_fm_rank_dictionary_wt.h
+++ b/include/seqan/index/index_fm_rank_dictionary_wt.h
@@ -115,8 +115,7 @@ typedef Tag<FibreTreeStructure_> const FibreTreeStructure;
template <typename TValue, typename TSpec, typename TConfig>
struct Fibre<RankDictionary<TValue, WaveletTree<TSpec, TConfig> >, FibreRanks>
{
- // TODO(esiragusa): use String and investigate issues with open/save() and valgrind.
- typedef StringSet<RankDictionary<bool, Levels<TSpec, TConfig> > > Type;
+ typedef String<RankDictionary<bool, Levels<TSpec, TConfig> > > Type;
};
template <typename TValue, typename TSpec, typename TConfig>
diff --git a/include/seqan/index/index_qgram_openaddressing.h b/include/seqan/index/index_qgram_openaddressing.h
index f199230..ffda280 100644
--- a/include/seqan/index/index_qgram_openaddressing.h
+++ b/include/seqan/index/index_qgram_openaddressing.h
@@ -333,66 +333,6 @@ namespace SEQAN_NAMESPACE_MAIN
return qgrams + 1;
}
-// ----------------------------------------------------------------------------
-// Function open()
-// ----------------------------------------------------------------------------
-
-template < typename TText, typename TShapeSpec>
-inline bool open(Index<TText, IndexQGram<TShapeSpec, OpenAddressing> > &index, const char *fileName, int openMode)
-{
- String<char> name;
-
- name = fileName; append(name, ".txt");
- if (!open(getFibre(index, QGramText()), toCString(name), openMode)) return false;
-
- name = fileName; append(name, ".sa");
- if (!open(getFibre(index, QGramSA()), toCString(name), openMode)) return false;
-
- name = fileName; append(name, ".dir");
- if (!open(getFibre(index, QGramDir()), toCString(name), openMode)) return false;
-
- name = fileName; append(name, ".bkt");
- if (!open(getFibre(index, QGramBucketMap()).qgramCode, toCString(name), openMode)) return false;
-
- return true;
-}
-
-template <typename TText, typename TShapeSpec>
-inline bool open(Index<TText, IndexQGram<TShapeSpec, OpenAddressing> > &index, const char *fileName)
-{
- return open(index, fileName, OPEN_RDONLY);
-}
-
-// ----------------------------------------------------------------------------
-// Function save()
-// ----------------------------------------------------------------------------
-
-template <typename TText, typename TShapeSpec>
-inline bool save(Index<TText, IndexQGram<TShapeSpec, OpenAddressing> > &index, const char *fileName, int openMode)
-{
- String<char> name;
-
- name = fileName; append(name, ".txt");
- if (!save(getFibre(index, QGramText()), toCString(name), openMode)) return false;
-
- name = fileName; append(name, ".sa");
- if (!save(getFibre(index, QGramSA()), toCString(name), openMode)) return false;
-
- name = fileName; append(name, ".dir");
- if (!save(getFibre(index, QGramDir()), toCString(name), openMode)) return false;
-
- name = fileName; append(name, ".bkt");
- if (!save(getFibre(index, QGramBucketMap()).qgramCode, toCString(name), openMode)) return false;
-
- return true;
-}
-
-template <typename TText, typename TShapeSpec>
-inline bool save(Index<TText, IndexQGram<TShapeSpec, OpenAddressing> > &index, const char *fileName)
-{
- return save(index, fileName, OPEN_WRONLY | OPEN_CREATE);
-}
-
}
#endif //#ifndef SEQAN_HEADER_...
diff --git a/include/seqan/index/index_sa_qsort.h b/include/seqan/index/index_sa_qsort.h
index 81c2df9..cea710d 100644
--- a/include/seqan/index/index_sa_qsort.h
+++ b/include/seqan/index/index_sa_qsort.h
@@ -86,8 +86,8 @@ namespace SEQAN_NAMESPACE_MAIN
{
typedef StringSet<TString, TSetSpec> const TText;
- TText &_text;
typename Size<TString>::Type _offset;
+ TText &_text;
SuffixLess_(TText &text):
_text(text) {}
diff --git a/include/seqan/index/index_shims.h b/include/seqan/index/index_shims.h
index cc45db7..1dbffc6 100644
--- a/include/seqan/index/index_shims.h
+++ b/include/seqan/index/index_shims.h
@@ -757,11 +757,11 @@ inline bool indexCreate(Index<TText, TSpec> & index, FibreSA, Trie)
*
* The following code shows how the BWT of an text can be computed.
*
- * @include demos/dox/index/textAt_indexText_saAt_indexRequire.cpp
+ * @include demos/index/index_textAt_indexText_saAt_indexRequire.cpp
*
* The output is as follows:
*
- * @include demos/dox/index/textAt_indexText_saAt_indexRequire.cpp.stdout
+ * @include demos/index/index_textAt_indexText_saAt_indexRequire.cpp.stdout
*/
template <typename TText, typename TSpec, typename TFibre>
diff --git a/include/seqan/index/repeat_base.h b/include/seqan/index/repeat_base.h
index f2605c4..33e6002 100644
--- a/include/seqan/index/repeat_base.h
+++ b/include/seqan/index/repeat_base.h
@@ -174,7 +174,7 @@ namespace seqan {
*
* The following demonstrates finding repeats of period 3.
*
- * @include demos/dox/index/find_repeats.cpp
+ * @include demos/index/find_repeats.cpp
*
* @code{.console}
* # of repeats: 15
diff --git a/include/seqan/index/shape_base.h b/include/seqan/index/shape_base.h
index 93fcb32..2f0c72f 100644
--- a/include/seqan/index/shape_base.h
+++ b/include/seqan/index/shape_base.h
@@ -471,7 +471,7 @@ namespace SEQAN_NAMESPACE_MAIN
* Two hash loop examples.
* The first loop uses @link Shape#hash @endlink/@link Shape#hashNext @endlink while the second use @link Shape#hashInit @endlink/@link Shape#hashNext @endlink and can process all hashes within the loop.
*
- * @include demos/dox/index/shape_hash_init.cpp
+ * @include demos/index/shape_hash_init.cpp
*
* @code{.stdout}
* 0 0 1 4 17 4 18 11 47 63 62 56
diff --git a/include/seqan/index/shape_threshold.h b/include/seqan/index/shape_threshold.h
old mode 100644
new mode 100755
diff --git a/include/seqan/misc/edit_environment.h b/include/seqan/misc/edit_environment.h
index 5d3e293..8bc1466 100644
--- a/include/seqan/misc/edit_environment.h
+++ b/include/seqan/misc/edit_environment.h
@@ -88,9 +88,9 @@ struct EditEnvironment;
*
* @section Examples
*
- * @include demos/dox/misc/enumerate_strings.cpp
+ * @include demos/misc/enumerate_strings.cpp
*
- * @include demos/dox/misc/enumerate_strings.cpp.stdout
+ * @include demos/misc/enumerate_strings.cpp.stdout
*/
/*!
diff --git a/include/seqan/misc/interval_tree.h b/include/seqan/misc/interval_tree.h
index da2f336..6b9f809 100644
--- a/include/seqan/misc/interval_tree.h
+++ b/include/seqan/misc/interval_tree.h
@@ -325,7 +325,7 @@ public:
* The following example creates an integer interval tree with string keys. This tree is quired for keys of intervals
* that overlap the interval <tt>[550, 990)</tt>.
*
- * @include demos/dox/misc/interval_tree_example.cpp
+ * @include demos/misc/interval_tree_example.cpp
*
* The resulting keys are:
*
diff --git a/include/seqan/misc/name_store_cache.h b/include/seqan/misc/name_store_cache.h
old mode 100644
new mode 100755
index 3216549..bc10dfa
--- a/include/seqan/misc/name_store_cache.h
+++ b/include/seqan/misc/name_store_cache.h
@@ -120,11 +120,11 @@ struct NameStoreLess_
* The demo below shows how to initialize a NameStoreCache with an existing name store, lookup existing names, add new
* names, and add names during lookup.
*
- * @include demos/dox/misc/name_store_cache.cpp
+ * @include demos/misc/name_store_cache.cpp
*
* Here is the output:
*
- * @include demos/dox/misc/name_store_cache.cpp.stdout
+ * @include demos/misc/name_store_cache.cpp.stdout
*/
/*!
diff --git a/include/seqan/misc/terminal.h b/include/seqan/misc/terminal.h
index 82fba15..78536c1 100644
--- a/include/seqan/misc/terminal.h
+++ b/include/seqan/misc/terminal.h
@@ -163,7 +163,7 @@ inline bool isAnsiColorTerminal()
*
* The following demonstrates the usage.
*
- * @include demos/dox/misc/get_terminal_size.cpp
+ * @include demos/misc/get_terminal_size.cpp
*
* @see isTerminal
* @see isAnsiColorTerminal
diff --git a/include/seqan/modifier/cyclic_shape.h b/include/seqan/modifier/cyclic_shape.h
index 967cf76..d920dab 100644
--- a/include/seqan/modifier/cyclic_shape.h
+++ b/include/seqan/modifier/cyclic_shape.h
@@ -85,11 +85,11 @@ typedef GappedShape<Default> GenericShape;
* is not allowed in @link Shape @endlink.
*
* @section Examples
- * @include demos/dox/modifier/cyclic_shape.cpp
+ * @include demos/cyclic_shape.cpp
*
* The output is as follows:
*
- * @include demos/dox/modifier/cyclic_shape.cpp.stdout
+ * @include demos/cyclic_shape.cpp.stdout
*
* @see ModCyclicShapeModifiedString
* @see ModCyclicShapeModifiedIterator
@@ -145,11 +145,11 @@ struct Size<CyclicShape<TSpec> >
* For longer sequences, prefer the @link FixedCyclicShape @endlink.
*
* @section Examples
- * @include demos/dox/modifier/cyclic_shape.cpp
+ * @include demos/cyclic_shape.cpp
*
* The output is as follows:
*
- * @include demos/dox/modifier/cyclic_shape.cpp.stdout
+ * @include demos/cyclic_shape.cpp.stdout
*
* @see ModCyclicShapeModifiedString
* @see ModCyclicShapeModifiedIterator
@@ -186,7 +186,7 @@ public:
* The default constructor generates the pattern "1".
* The copy constructor copies the GenericCyclicShape shape.
*
- * @snippet demos/dox/modifier/cyclic_shape_snippets.cpp Define GenericCyclicShape
+ * @snippet demos/cyclic_shape_snippets.cpp Define GenericCyclicShape
*
* @Remarks
*
@@ -280,7 +280,7 @@ public:
* This constructor does not do anything, the FixedCyclicShape is defined by its type alone.
* See the example on how to create a CyclicShape:
*
- * @snippet demos/dox/modifier/cyclic_shape_snippets.cpp Define FixedCyclicShape
+ * @snippet demos/cyclic_shape_snippets.cpp Define FixedCyclicShape
*/
CyclicShape()
{}
@@ -546,7 +546,7 @@ cyclicShapeToString(
* the distances between care positions, to a <tt>positions</tt> string directly
* containing the care positions. See the example:
*
- * @snippet demos/dox/modifier/cyclic_shape_snippets.cpp CyclicShape Care Positions
+ * @snippet demos/cyclic_shape_snippets.cpp CyclicShape Care Positions
*/
template<typename TString, typename TSpec>
diff --git a/include/seqan/modifier/modifier_cyclic_shape.h b/include/seqan/modifier/modifier_cyclic_shape.h
index f77f3a0..b9887c7 100644
--- a/include/seqan/modifier/modifier_cyclic_shape.h
+++ b/include/seqan/modifier/modifier_cyclic_shape.h
@@ -75,7 +75,7 @@ struct ModCyclicShape
* CyclicShape is repeated till the end of the string. The iterator behaves as if
* the don't-care-positions had been deleted without actually copying the string.
*
- * @snippet demos/dox/modifier/cyclic_shape_snippets.cpp Define CyclicShape Modified Iterator
+ * @snippet demos/cyclic_shape_snippets.cpp Define CyclicShape Modified Iterator
*
* @see ModCyclicShapeModifiedString
* @see CyclicShape
@@ -168,11 +168,11 @@ public:
*
* Use case for GenericCyclicShapes:
*
- * @snippet demos/dox/modifier/cyclic_shape_snippets.cpp Define GenericCyclicShape Modified String
+ * @snippet demos/cyclic_shape_snippets.cpp Define GenericCyclicShape Modified String
*
* Use case for FixedCyclicShapes:
*
- * @snippet demos/dox/modifier/cyclic_shape_snippets.cpp Define FixedCyclicShape Modified String
+ * @snippet demos/cyclic_shape_snippets.cpp Define FixedCyclicShape Modified String
*
*
* @see CyclicShape
diff --git a/include/seqan/modifier/modifier_iterator.h b/include/seqan/modifier/modifier_iterator.h
index 2b15381..fd0f1bb 100644
--- a/include/seqan/modifier/modifier_iterator.h
+++ b/include/seqan/modifier/modifier_iterator.h
@@ -68,25 +68,25 @@ template <typename THost, typename TSpec> class ModifiedString;
* <tt>THost</tt> can also be a modified iterator, so you can create custom iterators by combining predefined ones.
*/
-template <typename THostIter, typename TSpec = void>
+template <typename THost, typename TSpec = void>
class ModifiedIterator
{
public:
typedef typename Cargo<ModifiedIterator>::Type TCargo_;
- THostIter _host;
+ THost _host;
TCargo_ _cargo;
ModifiedIterator()
{}
- template <typename TOtherHostIter>
- ModifiedIterator(ModifiedIterator<TOtherHostIter, TSpec> const & origin):
+ template <typename TOtherHost>
+ ModifiedIterator(ModifiedIterator<TOtherHost, TSpec> const & origin):
_host(origin._host), _cargo(origin._cargo)
{}
explicit
- ModifiedIterator(THostIter const & host): _host(host)
+ ModifiedIterator(THost const & host): _host(host)
{}
};
@@ -147,7 +147,7 @@ struct Reference<ModifiedIterator<THost, TSpec> > : Reference<THost>
{};
template <typename THost, typename TSpec>
-struct Reference<ModifiedIterator<THost, TSpec> const> : Reference<THost>
+struct Reference<ModifiedIterator<THost, TSpec> const> : Reference< ModifiedIterator<THost, TSpec> >
{};
// --------------------------------------------------------------------------
@@ -374,7 +374,7 @@ goNext(ModifiedIterator<THost, TSpec> & me)
// --------------------------------------------------------------------------
template <typename THost, typename TSpec>
-inline ModifiedIterator<THost, TSpec> &
+inline ModifiedIterator<THost, TSpec> const &
operator++(ModifiedIterator<THost, TSpec> & me)
{
goNext(me);
@@ -406,7 +406,7 @@ goPrevious(ModifiedIterator<THost, TSpec> & me)
// --------------------------------------------------------------------------
template <typename THost, typename TSpec>
-inline ModifiedIterator<THost, TSpec> &
+inline ModifiedIterator<THost, TSpec> const &
operator--(ModifiedIterator<THost, TSpec> & me)
{
goPrevious(me);
@@ -520,7 +520,7 @@ operator-(ModifiedIterator<THost, TSpec> const & a, ModifiedIterator<THost, TSpe
//}
// --------------------------------------------------------------------------
-// Function position() (overloads for rooted iterators only)
+// Function position()
// --------------------------------------------------------------------------
template <typename THost, typename TSpec>
@@ -530,12 +530,11 @@ position(ModifiedIterator<THost, TSpec> const & me)
return position(host(me));
}
-template <typename TContainer1, typename TIterator, typename TSpec1, typename TSpec2, typename TContainer2>
-inline typename Position<ModifiedIterator<Iter<TContainer1, AdaptorIterator<TIterator, TSpec1> >, TSpec2> const>::Type
-position(ModifiedIterator<Iter<TContainer1, AdaptorIterator<TIterator, TSpec1> >, TSpec2> const & me,
- TContainer2 const &)
+template <typename THost, typename TSpec, typename TContainer>
+inline typename Position<ModifiedIterator<THost, TSpec> const>::Type
+position(ModifiedIterator<THost, TSpec> const & me, TContainer const &cont)
{
- return position(me); // rooted has container
+ return position(host(me), cont);
}
// --------------------------------------------------------------------------
@@ -583,43 +582,71 @@ operator>(ModifiedIterator<THost, TSpec> const & a, ModifiedIterator<THost, TSpe
}
// --------------------------------------------------------------------------
-// Function atBegin() (overloads for rooted iterators only)
+// Function atBegin()
// --------------------------------------------------------------------------
+template <typename THost, typename TSpec, typename TContainer>
+inline bool
+atBegin(ModifiedIterator<THost, TSpec> & me,
+ TContainer const & container)
+{
+ return atBegin(const_cast<ModifiedIterator<THost, TSpec> const &>(me), container);
+}
+
+template <typename THost, typename TSpec, typename TContainer>
+inline bool
+atBegin(ModifiedIterator<THost, TSpec> const & me,
+ TContainer const & container)
+{
+ return atBegin(host(me), container);
+}
+
template <typename THost, typename TSpec>
inline bool
-atBegin(ModifiedIterator<THost, TSpec> const & me)
+atBegin(ModifiedIterator<THost, TSpec> & me)
{
- return atBegin(host(me));
+ return atBegin(const_cast<ModifiedIterator<THost, TSpec> const &>(me));
}
-// rooted overload
-template <typename TContainer1, typename TIterator, typename TSpec1, typename TSpec2, typename TContainer2>
+template <typename THost, typename TSpec>
inline bool
-atBegin(ModifiedIterator<Iter<TContainer1, AdaptorIterator<TIterator, TSpec1> >, TSpec2> const & me,
- TContainer2 const &)
+atBegin(ModifiedIterator<THost, TSpec> const & me)
{
- return atBegin(me);
+ return atBegin(host(me));
}
// --------------------------------------------------------------------------
-// Function atEnd() (overloads for rooted iterators only)
+// Function atEnd()
// --------------------------------------------------------------------------
+template <typename THost, typename TSpec, typename TContainer>
+inline bool
+atEnd(ModifiedIterator<THost, TSpec> & me,
+ TContainer const & container)
+{
+ return atEnd(const_cast<ModifiedIterator<THost, TSpec> const &>(me), container);
+}
+
+template <typename THost, typename TSpec, typename TContainer>
+inline bool
+atEnd(ModifiedIterator<THost, TSpec> const & me,
+ TContainer const & container)
+{
+ return atEnd(host(me), container);
+}
+
template <typename THost, typename TSpec>
inline bool
-atEnd(ModifiedIterator<THost, TSpec> const & me)
+atEnd(ModifiedIterator<THost, TSpec> & me)
{
- return atEnd(host(me));
+ return atEnd(const_cast<ModifiedIterator<THost, TSpec> const &>(me));
}
-// rooted overload
-template <typename TContainer1, typename TIterator, typename TSpec1, typename TSpec2, typename TContainer2>
+template <typename THost, typename TSpec>
inline bool
-atEnd(ModifiedIterator<Iter<TContainer1, AdaptorIterator<TIterator, TSpec1> >, TSpec2> const & me,
- TContainer2 const &)
+atEnd(ModifiedIterator<THost, TSpec> const & me)
{
- return atEnd(me);
+ return atEnd(host(me));
}
}
diff --git a/include/seqan/modifier/modifier_reverse.h b/include/seqan/modifier/modifier_reverse.h
index 083cb1d..53fde53 100644
--- a/include/seqan/modifier/modifier_reverse.h
+++ b/include/seqan/modifier/modifier_reverse.h
@@ -103,13 +103,13 @@ struct Cargo<ModifiedIterator<THost, ModReverse> >
template <typename THost>
struct Iterator<ModifiedString<THost, ModReverse>, Standard>
{
- typedef ModifiedIterator<typename Iterator<THost, Rooted>::Type, ModReverse> Type;
+ typedef ModifiedIterator<typename Iterator<THost const, Rooted>::Type, ModReverse> Type;
};
template <typename THost>
struct Iterator<ModifiedString<THost, ModReverse> const, Standard>
{
- typedef ModifiedIterator<typename Iterator<THost, Rooted>::Type, ModReverse> Type;
+ typedef ModifiedIterator<typename Iterator<THost const, Rooted>::Type, ModReverse> Type;
};
// --------------------------------------------------------------------------
@@ -274,16 +274,6 @@ operator-=(ModifiedIterator<THost, ModReverse> & me, TDelta delta)
}
return me;
}
-// --------------------------------------------------------------------------
-// Function operator-() [ModReverse ModifiedIterator]
-// --------------------------------------------------------------------------
-
-template <typename THost, typename TPos>
-inline ModifiedIterator<THost, ModReverse>
-operator-(ModifiedIterator<THost, ModReverse> me, TPos const i)
-{
- return me -= i;
-}
// --------------------------------------------------------------------------
// Function operator-() [ModReverse ModifiedIterator]
@@ -316,15 +306,6 @@ position(ModifiedIterator<THost, ModReverse> const & me)
return length(container(host(me))) - 1 - position(host(me));
}
-// rooted overload
-template <typename TContainer1, typename TIterator, typename TSpec, typename TContainer2>
-inline typename Position<ModifiedIterator<Iter<TContainer1, AdaptorIterator<TIterator, TSpec> >, ModReverse> const>::Type
-position(ModifiedIterator<Iter<TContainer1, AdaptorIterator<TIterator, TSpec> >, ModReverse> const & me,
- TContainer2 const &)
-{
- return position(me); // rooted has container
-}
-
template <typename THost, typename TContainer>
inline typename Position<ModifiedIterator<THost, ModReverse> const>::Type
position(ModifiedIterator<THost, ModReverse> const & me, TContainer const &cont)
diff --git a/include/seqan/modifier/modifier_string.h b/include/seqan/modifier/modifier_string.h
index 5b95afa..0679cdb 100644
--- a/include/seqan/modifier/modifier_string.h
+++ b/include/seqan/modifier/modifier_string.h
@@ -73,27 +73,27 @@ template <typename TType, typename TTestType> struct IsAnInnerHost;
*
* @subsection Using ModReverseString
*
- * @include demos/dox/modifier/modified_string.cpp
+ * @include demos/modifier/modified_string.cpp
*
* The output is als follows:
*
- * @include demos/dox/modifier/modified_string.cpp.stdout
+ * @include demos/modifier/modified_string.cpp.stdout
*
* @subsection Using a custom functor for ModViewString
*
- * @include demos/dox/modifier/modified_string_mod_view.cpp
+ * @include demos/modifier/modified_string_mod_view.cpp
*
* The output is as follows:
*
- * @include demos/dox/modifier/modified_string_mod_view.cpp.stdout
+ * @include demos/modifier/modified_string_mod_view.cpp.stdout
*
* @subsection Using nested modified strings.
*
- * @include demos/dox/modifier/modified_string_nested.cpp
+ * @include demos/modifier/modified_string_nested.cpp
*
* The output is as follows:
*
- * @include demos/dox/modifier/modified_string_nested.cpp.stdout
+ * @include demos/modifier/modified_string_nested.cpp.stdout
*/
template <typename THost, typename TSpec = void>
@@ -125,6 +125,22 @@ public:
ignoreUnusedVariableWarning(dummy);
}
+#ifdef SEQAN_CXX11_STANDARD
+
+ // Constructor for an inner host type; forward host to hosted type.
+ template <typename THost_>
+ explicit
+ ModifiedString(THost_ && host,
+ SEQAN_CTOR_ENABLE_IF(IsAnInnerHost<
+ typename RemoveReference<THost>::Type,
+ typename RemoveReference<THost_>::Type >)) :
+ _host(std::forward<THost_>(host)), _cargo()
+ {
+ ignoreUnusedVariableWarning(dummy);
+ }
+
+#else // SEQAN_CXX11_STANDARD
+
// Constructor for an inner host type; forward host to hosted type.
template <typename THost_>
explicit
@@ -135,6 +151,17 @@ public:
ignoreUnusedVariableWarning(dummy);
}
+ template <typename THost_>
+ explicit
+ ModifiedString(THost_ const & host,
+ SEQAN_CTOR_ENABLE_IF(IsAnInnerHost<THost, THost_ const>)) :
+ _host(host), _cargo()
+ {
+ ignoreUnusedVariableWarning(dummy);
+ }
+
+#endif // SEQAN_CXX11_STANDARD
+
template <typename TPos>
inline typename Reference<ModifiedString>::Type
operator[](TPos pos)
@@ -325,16 +352,16 @@ struct Iterator<ModifiedString<THost, TSpec> const, Rooted>
};
// VARIANT B: const ModifiedString propagates its constness upwards
-// template <typename THost, typename TSpec >
-// struct Iterator<ModifiedString<THost, TSpec> const, Standard>
-// {
+//template <typename THost, typename TSpec >
+//struct Iterator<ModifiedString<THost, TSpec> const, Standard>
+//{
// typedef ModifiedIterator<typename Iterator<THost const, Standard>::Type, TSpec> Type;
-// };
-// template <typename THost, typename TSpec >
-// struct Iterator<ModifiedString<THost, TSpec> const, Rooted>
-// {
+//};
+//template <typename THost, typename TSpec >
+//struct Iterator<ModifiedString<THost, TSpec> const, Rooted>
+//{
// typedef ModifiedIterator<typename Iterator<THost const, Rooted>::Type, TSpec> Type;
-// };
+//};
// --------------------------------------------------------------------------
// Metafunction Host
@@ -364,10 +391,10 @@ struct Host<ModifiedString<THost, TSpec> const > {
};
// VARIANT B: const ModifiedString propagates its constness upwards
-// template <typename THost, typename TSpec >
-// struct Host<ModifiedString<THost, TSpec> const > {
+//template <typename THost, typename TSpec >
+//struct Host<ModifiedString<THost, TSpec> const > {
// typedef typename ConvertArrayToPointer<THost const>::Type Type;
-// };
+//};
// --------------------------------------------------------------------------
// Metafunction Parameter_
@@ -552,7 +579,7 @@ value(ModifiedString<THost, TSpec> & me, TPos pos)
}
template <typename THost, typename TSpec, typename TPos>
-inline typename Reference<ModifiedString<THost, TSpec> const>::Type
+inline typename Reference<ModifiedString<THost, TSpec> const >::Type
value(ModifiedString<THost, TSpec> const & me, TPos pos)
{
return value(begin(me, Standard()) + pos);
@@ -851,14 +878,14 @@ open(StringSet<ModifiedString<THost, TSpec>, Owner<ConcatDirect<TSpec2> > > &,
template <typename THost, typename TSpec >
inline bool
-save(ModifiedString<THost, TSpec> const &, const char *, int)
+save(ModifiedString<THost, TSpec> &, const char *, int)
{
return true; // NOOP; this has to be done manually right now
}
template <typename THost, typename TSpec, typename TSpec2>
inline bool
-save(StringSet<ModifiedString<THost, TSpec>, Owner<ConcatDirect<TSpec2> > > const &,
+save(StringSet<ModifiedString<THost, TSpec>, Owner<ConcatDirect<TSpec2> > > &,
const char *,
int)
{
diff --git a/include/seqan/modifier/modifier_view.h b/include/seqan/modifier/modifier_view.h
index 96db20c..7b4c43f 100644
--- a/include/seqan/modifier/modifier_view.h
+++ b/include/seqan/modifier/modifier_view.h
@@ -306,23 +306,12 @@ struct Value<ModifiedIterator<THost, ModView<TFunctor> > >
typedef typename RemoveConst_<TResult_>::Type Type;
};
-template <typename THost, typename TFunctor>
-struct Value<ModifiedIterator<THost, ModView<TFunctor> > const> :
- Value<ModifiedIterator<THost, ModView<TFunctor> > >
-{};
-
// --------------------------------------------------------------------------
// Metafunction GetValue [ModifiedIterator]
// --------------------------------------------------------------------------
template <typename THost, typename TFunctor>
-struct GetValue<ModifiedIterator<THost, ModView<TFunctor> > > :
- Value<ModifiedIterator<THost, ModView<TFunctor> > >
-{};
-
-template <typename THost, typename TFunctor>
-struct GetValue<ModifiedIterator<THost, ModView<TFunctor> > const> :
- Value<ModifiedIterator<THost, ModView<TFunctor> > >
+struct GetValue<ModifiedIterator<THost, ModView<TFunctor> > > : Value<ModifiedIterator<THost, ModView<TFunctor> > >
{};
// --------------------------------------------------------------------------
@@ -330,26 +319,10 @@ struct GetValue<ModifiedIterator<THost, ModView<TFunctor> > const> :
// --------------------------------------------------------------------------
template <typename THost, typename TFunctor>
-struct Reference<ModifiedIterator<THost, ModView<TFunctor> > > :
- Value<ModifiedIterator<THost, ModView<TFunctor> > >
-{};
-
-template <typename THost, typename TFunctor>
-struct Reference<ModifiedIterator<THost, ModView<TFunctor> > const> :
- Value<ModifiedIterator<THost, ModView<TFunctor> > >
-{};
-
-// NOTE(h-2): ModView element access is always by copy never by reference
-// This is a workaround for dangling references to the stack when
-// combining infixes and modified views, more precisely:
-// if you iterate over an infix of a modview then value() on the iterator
-// will return reference to the tmp_value inside the moditerator
-// which might have been destructed.
-// This is a more general problem that stems from the fact that
-// "virtual strings" of the same type (infixes, modstrings) can be
-// automatically compacted into one layer, but combinations cannot.
-// This workaround happens in ModView, because it is used less frequently
-// then Infixes.
+struct Reference<ModifiedIterator<THost, ModView<TFunctor> > >
+{
+ typedef typename Value<ModifiedIterator<THost, ModView<TFunctor> > >::Type & Type;
+};
// --------------------------------------------------------------------------
// Metafunction Cargo [ModifiedString]
@@ -366,75 +339,79 @@ struct Cargo< ModifiedString<THost, ModView<TFunctor> > >
// ==========================================================================
// --------------------------------------------------------------------------
-// Function getValue() [ModifiedIterator]
+// Function value() [ModifiedIterator]
// --------------------------------------------------------------------------
template <typename THost, typename TFunctor>
-inline typename GetValue<ModifiedIterator<THost, ModView<TFunctor> > >::Type
-getValue(ModifiedIterator<THost, ModView<TFunctor> > & me)
+inline typename Reference<ModifiedIterator<THost, ModView<TFunctor> > >::Type
+value(ModifiedIterator<THost, ModView<TFunctor> > & me)
{
- return cargo(me).func(getValue(host(me)));
+ me.tmp_value = cargo(me).func(getValue(host(me)));
+ return me.tmp_value;
}
template <typename THost, typename TFunctor>
-inline typename GetValue<ModifiedIterator<THost, ModView<TFunctor> > const>::Type
-getValue(ModifiedIterator<THost, ModView<TFunctor> > const & me)
+inline typename Reference<ModifiedIterator<THost, ModView<TFunctor> > const>::Type
+value(ModifiedIterator<THost, ModView<TFunctor> > const & me)
{
- return cargo(me).func(getValue(host(me)));
+ me.tmp_value = cargo(me).func(getValue(host(me)));
+ return me.tmp_value;
}
// --------------------------------------------------------------------------
-// Function value() [ModifiedIterator]
+// Function getValue() [ModifiedIterator]
// --------------------------------------------------------------------------
template <typename THost, typename TFunctor>
inline typename GetValue<ModifiedIterator<THost, ModView<TFunctor> > >::Type
-value(ModifiedIterator<THost, ModView<TFunctor> > & me)
+getValue(ModifiedIterator<THost, ModView<TFunctor> > & me)
{
- return getValue(me);
+ return cargo(me).func(getValue(host(me)));
}
template <typename THost, typename TFunctor>
inline typename GetValue<ModifiedIterator<THost, ModView<TFunctor> > const>::Type
-value(ModifiedIterator<THost, ModView<TFunctor> > const & me)
+getValue(ModifiedIterator<THost, ModView<TFunctor> > const & me)
{
- return getValue(me);
+ return cargo(me).func(getValue(host(me)));
}
// --------------------------------------------------------------------------
-// Function getValue() [ModifiedString]
+// Function value() [ModifiedString]
// --------------------------------------------------------------------------
template <typename THost, typename TFunctor, typename TPos>
-inline typename GetValue<ModifiedString<THost, ModView<TFunctor> > >::Type
-getValue(ModifiedString<THost, ModView<TFunctor> > & me, TPos pos)
+inline typename Reference<ModifiedString<THost, ModView<TFunctor> > >::Type
+value(ModifiedString<THost, ModView<TFunctor> > & me, TPos pos)
{
- return cargo(me).func(getValue(host(me), pos));
+ me.tmp_value = cargo(me).func(getValue(host(me), pos));
+ return me.tmp_value;
}
template <typename THost, typename TFunctor, typename TPos>
-inline typename GetValue<ModifiedString<THost, ModView<TFunctor> > const>::Type
-getValue(ModifiedString<THost, ModView<TFunctor> > const & me, TPos pos)
+inline typename Reference<ModifiedString<THost, ModView<TFunctor> > const>::Type
+value(ModifiedString<THost, ModView<TFunctor> > const & me, TPos pos)
{
- return cargo(me).func(getValue(host(me), pos));
+ me.tmp_value = cargo(me).func(getValue(host(me), pos));
+ return me.tmp_value;
}
// --------------------------------------------------------------------------
-// Function value() [ModifiedString]
+// Function getValue() [ModifiedString]
// --------------------------------------------------------------------------
template <typename THost, typename TFunctor, typename TPos>
inline typename GetValue<ModifiedString<THost, ModView<TFunctor> > >::Type
-value(ModifiedString<THost, ModView<TFunctor> > & me, TPos pos)
+getValue(ModifiedString<THost, ModView<TFunctor> > & me, TPos pos)
{
- return getValue(me, pos);
+ return cargo(me).func(getValue(host(me), pos));
}
template <typename THost, typename TFunctor, typename TPos>
inline typename GetValue<ModifiedString<THost, ModView<TFunctor> > const>::Type
-value(ModifiedString<THost, ModView<TFunctor> > const & me, TPos pos)
+getValue(ModifiedString<THost, ModView<TFunctor> > const & me, TPos pos)
{
- return getValue(me, pos);
+ return cargo(me).func(getValue(host(me), pos));
}
// --------------------------------------------------------------------------
diff --git a/include/seqan/parallel/parallel_macros.h b/include/seqan/parallel/parallel_macros.h
index 11f0fe7..780b088 100644
--- a/include/seqan/parallel/parallel_macros.h
+++ b/include/seqan/parallel/parallel_macros.h
@@ -124,10 +124,10 @@ inline double omp_get_wtime()
SEQAN_HOST_DEVICE inline unsigned getThreadId()
{
-#if defined(__CUDA_ARCH__)
+#ifdef __CUDA_ARCH__
return blockIdx.x * blockDim.x + threadIdx.x;
-#elif defined(_OPENMP)
+#elif _OPENMP
return omp_get_thread_num();
#else
diff --git a/include/seqan/parallel/parallel_queue.h b/include/seqan/parallel/parallel_queue.h
index 7c88ddb..688e252 100644
--- a/include/seqan/parallel/parallel_queue.h
+++ b/include/seqan/parallel/parallel_queue.h
@@ -72,11 +72,11 @@ namespace seqan {
*
* Simple example for a single producer single consumer (SPSC) dynamic queue.
*
- * @include demos/dox/parallel/queue_example.cpp
+ * @include demos/parallel/queue_example.cpp
*
* The output is:
*
- * @include demos/dox/parallel/queue_example.cpp.stdout
+ * @include demos/parallel/queue_example.cpp.stdout
*/
template <typename TValue, typename TSpec = void>
diff --git a/include/seqan/parallel/parallel_splitting.h b/include/seqan/parallel/parallel_splitting.h
index 65686db..2f7ae1e 100644
--- a/include/seqan/parallel/parallel_splitting.h
+++ b/include/seqan/parallel/parallel_splitting.h
@@ -65,11 +65,11 @@ typedef Tag<Equidistant_> Equidistant;
*
* Simple example for equidistant (default) splitting.
*
- * @include demos/dox/parallel/splitter_example.cpp
+ * @include demos/parallel/splitter_example.cpp
*
* The output is:
*
- * @include demos/dox/parallel/splitter_example.cpp.stdout
+ * @include demos/parallel/splitter_example.cpp.stdout
*/
/*!
@@ -109,7 +109,7 @@ typedef Tag<Equidistant_> Equidistant;
*
* Simple example for equidistant splitting.
*
- * @include demos/dox/parallel/splitter_example.cpp
+ * @include demos/parallel/splitter_example.cpp
*
* Output:
*
diff --git a/include/seqan/pipe/pool_sorter.h b/include/seqan/pipe/pool_sorter.h
index 69a5469..3d906c7 100644
--- a/include/seqan/pipe/pool_sorter.h
+++ b/include/seqan/pipe/pool_sorter.h
@@ -147,7 +147,7 @@ namespace SEQAN_NAMESPACE_MAIN
*
* @section Example
*
- * @include demos/dox/pipe/pool_sorter.cpp
+ * @include demos/pipe/pool_sorter.cpp
*
* @code{.console}
* Sorted elements:
diff --git a/include/seqan/platform.h b/include/seqan/platform.h
index 12c5f72..2249d4f 100755
--- a/include/seqan/platform.h
+++ b/include/seqan/platform.h
@@ -97,13 +97,4 @@
#define SEQAN_UNLIKELY(x) (x)
#endif
-// A macro to eliminate warnings on GCC and Clang
-#if (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))) || defined(__clang__)
-# define SEQAN_UNUSED __attribute__((unused))
-#else
-# define SEQAN_UNUSED
-#endif
-// backwards compatibility
-#define SEQAN_UNUSED_TYPEDEF SEQAN_UNUSED
-
#endif
diff --git a/include/seqan/platform/platform_windows.h b/include/seqan/platform/platform_windows.h
index 273b444..f0ca0c8 100644
--- a/include/seqan/platform/platform_windows.h
+++ b/include/seqan/platform/platform_windows.h
@@ -71,11 +71,6 @@
#pragma warning( disable : 4345 )
#pragma warning( disable : 4351 )
-// Disable warning for "this" used in derived c'tor
-// Documentation of C4355 from Microsoft:
-// https://msdn.microsoft.com/en-us/library/3c594ae3(v=vs.100).aspx
-#pragma warning( disable : 4355 )
-
// ==========================================================================
// Define Integers
// ==========================================================================
@@ -133,11 +128,9 @@ inline T round(T const & x)
}
// Rename some underscore-functions in Windows.
-#if _MSC_VER < 1900
#ifndef snprintf
#define snprintf _snprintf
#endif // #ifndef snprintf
-#endif
// Define ftello
#ifndef ftello
diff --git a/include/seqan/random/ext_MersenneTwister.h b/include/seqan/random/ext_MersenneTwister.h
old mode 100644
new mode 100755
diff --git a/include/seqan/random/random_base.h b/include/seqan/random/random_base.h
index 19e8d79..83ffa29 100644
--- a/include/seqan/random/random_base.h
+++ b/include/seqan/random/random_base.h
@@ -60,7 +60,7 @@ struct MersenneTwister;
*
* The following code shows how to generate random numbers and shuffle a text.
*
- * @include demos/dox/random/random.cpp
+ * @include demos/random/random.cpp
*
* @code{.console}
* pickRandomNumber(rng) == 1608637542
diff --git a/include/seqan/realign/realign_base.h b/include/seqan/realign/realign_base.h
index 61e649b..b2fcad1 100644
--- a/include/seqan/realign/realign_base.h
+++ b/include/seqan/realign/realign_base.h
@@ -592,7 +592,7 @@ public:
for (TAlignedReadIter it2 = begin(alignedReadStore, Standard()); it2 != itEnd; ++it2)
{
typedef Gaps<TReadSeq, AnchorGaps<String<typename TFragmentStore::TReadGapAnchor> > > TReadGaps;
- TReadGaps readGaps(static_cast<TReadSeq>(store.readSeqStore[it2->readId]), it2->gaps);
+ TReadGaps readGaps(store.readSeqStore[it2->readId], it2->gaps);
// if (options.debug)
// std::cerr << "it2->beginPos == " << it2->beginPos << ", it2->endPos == " << it2->endPos << "\n";
if ((unsigned)abs((int)(it2->endPos - it2->beginPos)) != length(readGaps))
@@ -813,7 +813,7 @@ void AnsonMyersRealigner_<TFragmentStore>::_beginContig(unsigned contigID)
// We create Gaps for the read we are iterating over.
// TODO(holtgrew): Is clipping stored in the read gaps? It appears so in Tobias' original code.
- TReadGaps readGaps(static_cast<TReadSeq>(store.readSeqStore[it->readId]), it->gaps);
+ TReadGaps readGaps(store.readSeqStore[it->readId], it->gaps);
// Get iterators to beginning of read gaps and the corresponding positions in the contig gaps and the profile
// string.
diff --git a/include/seqan/reduced_aminoacid/reduced_aminoacid_murphy10_base.h b/include/seqan/reduced_aminoacid/reduced_aminoacid_murphy10_base.h
index 387d13e..7a0980b 100644
--- a/include/seqan/reduced_aminoacid/reduced_aminoacid_murphy10_base.h
+++ b/include/seqan/reduced_aminoacid/reduced_aminoacid_murphy10_base.h
@@ -66,7 +66,7 @@ namespace seqan {
* Since it was created from the 20-letter alphabet the clusters in SeqAn are
* not identical (they contain more symbols). This is the clustering:
* @code{.txt}
- * 'A', // A O U X
+ * 'A', // A U X
* 'B', // B D E N Q Z
* 'C', // C
* 'F', // F W Y *
diff --git a/include/seqan/reduced_aminoacid/reduced_aminoacid_murphy10_tables.h b/include/seqan/reduced_aminoacid/reduced_aminoacid_murphy10_tables.h
index c2e8083..6ba0650 100644
--- a/include/seqan/reduced_aminoacid/reduced_aminoacid_murphy10_tables.h
+++ b/include/seqan/reduced_aminoacid/reduced_aminoacid_murphy10_tables.h
@@ -66,7 +66,7 @@ struct TranslateTableCharToRedAA_<Murphy10, TSpec>
template <typename TSpec>
struct TranslateTableAAToRedAA_<Murphy10, TSpec>
{
- static const char VALUE[27];
+ static const char VALUE[26];
};
template <typename TSpec>
@@ -80,7 +80,7 @@ struct TranslateTableByteToRedAA_<Murphy10, TSpec>
template <typename TVoidSpec>
char const TranslateTableRedAAToChar_<Murphy10, TVoidSpec>::VALUE[10] =
{
- 'A', // A O U X
+ 'A', // A U X
'B', // B D E N Q Z
'C', // C
'F', // F W Y *
@@ -116,10 +116,10 @@ char const TranslateTableCharToRedAA_<Murphy10, TVoidSpec>::VALUE[256] =
};
template <typename TVoidSpec>
-char const TranslateTableAAToRedAA_<Murphy10, TVoidSpec>::VALUE[27] =
+char const TranslateTableAAToRedAA_<Murphy10, TVoidSpec>::VALUE[26] =
{
0, 1, 2, 1, 1, 3, 4, 5, 6, 6, 7, 6, 6,
- 1, 0, 8, 1, 7, 9, 9, 0, 6, 3, 3, 1, 0, 3
+ 1, 8, 1, 7, 9, 9, 0, 6, 3, 3, 1, 0, 3
};
template <typename TVoidSpec>
diff --git a/include/seqan/score/score_base.h b/include/seqan/score/score_base.h
index 4346d61..e8bd441 100644
--- a/include/seqan/score/score_base.h
+++ b/include/seqan/score/score_base.h
@@ -57,11 +57,11 @@ namespace seqan {
*
* @section Examples
*
- * @include demos/dox/score/score.cpp
+ * @include demos/score/score.cpp
*
* The output is as follows:
*
- * @include demos/dox/score/score.cpp.stdout
+ * @include demos/score/score.cpp.stdout
*/
template <typename TValue = int, typename TSpec = Simple>
diff --git a/include/seqan/score/score_matrix_data.h b/include/seqan/score/score_matrix_data.h
index 0ae9c17..54ebef5 100644
--- a/include/seqan/score/score_matrix_data.h
+++ b/include/seqan/score/score_matrix_data.h
@@ -60,12 +60,9 @@ M3 = M2(:,[1 21 5 4 7 14 8 9 10 12 11 13 3 15 6 2 16 17 20 18 19 22 23 24]);
## add J column
M4 = [M3(1:9,:); round((M3(9,:) + M3(11,:)) /2); M3(10:end,:)];
M4 = [M4(:,1:9), round((M4(:,9) + M4(:,11)) /2), M4(:,10:end)];
-## add O column
-M5 = [M4(:,1:14), M4(:,24), M4(:,15:25)];
-M5 = [M5(1:14,:); M5(24,:); M5(15:25,:)];
## add U column
-M6 = [M5(:,1:20), M5(:,25), M5(:,21:26)];
-M6 = [M6(1:20,:); M6(25,:); M6(21:26,:)];
+M5 = [M4(:,1:19), M4(:,24), M4(:,20:25)];
+M5 = [M5(1:19,:); M5(24,:); M5(20:25,:)];
*/
#ifndef SEQAN_SSCORE_MATRIX_DATA_H_
@@ -98,21 +95,20 @@ typedef Blosum30_ ScoreSpecBlosum30;
* L -1 -1 0 -1 -1 2 -2 -1 2 3 -2 4
* M 1 -2 -2 -3 -1 -2 -2 2 1 2 2 2 6
* N 0 4 -1 1 -1 -1 0 -1 0 -1 0 -2 0 8
- * X 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1
- * P -1 -2 -3 -1 1 -4 -1 1 -3 -3 1 -3 -4 -3 -1 11
- * Q 1 -1 -2 -1 2 -3 -2 0 -2 -2 0 -2 -1 -1 0 0 8
- * R -1 -2 -2 -1 -1 -1 -2 -1 -3 -3 1 -2 0 -2 -1 -1 3 8
- * S 1 0 -2 0 0 -1 0 -1 -1 -2 0 -2 -2 0 0 -1 -1 -1 4
- * T 1 0 -2 -1 -2 -2 -2 -2 0 0 -1 0 0 1 0 0 0 -3 2 5
- * U 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 -1 0 -1 0 0 -1
- * V 1 -2 -2 -2 -3 1 -3 -3 4 3 -2 1 0 -2 0 -4 -3 -1 -1 1 0 5
- * W -5 -5 -2 -4 -1 1 1 -5 -3 -3 -2 -2 -3 -7 -2 -3 -1 0 -3 -5 -2 -3 20
- * Y -4 -3 -6 -1 -2 3 -3 0 -1 1 -1 3 -1 -4 -1 -2 -1 0 -2 -1 -1 1 5 9
- * Z 0 0 0 0 5 -4 -2 0 -3 -2 1 -1 -1 -1 0 0 4 0 -1 -1 0 -3 -1 -2 4
- * X 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 -1 0 -1 0 0 -1 0 -2 -1 0 -1
- * * -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 1
+ * P -1 -2 -3 -1 1 -4 -1 1 -3 -3 1 -3 -4 -3 11
+ * Q 1 -1 -2 -1 2 -3 -2 0 -2 -2 0 -2 -1 -1 0 8
+ * R -1 -2 -2 -1 -1 -1 -2 -1 -3 -3 1 -2 0 -2 -1 3 8
+ * S 1 0 -2 0 0 -1 0 -1 -1 -2 0 -2 -2 0 -1 -1 -1 4
+ * T 1 0 -2 -1 -2 -2 -2 -2 0 0 -1 0 0 1 0 0 -3 2 5
+ * U 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 0 -1 0 0 -1
+ * V 1 -2 -2 -2 -3 1 -3 -3 4 3 -2 1 0 -2 -4 -3 -1 -1 1 0 5
+ * W -5 -5 -2 -4 -1 1 1 -5 -3 -3 -2 -2 -3 -7 -3 -1 0 -3 -5 -2 -3 20
+ * Y -4 -3 -6 -1 -2 3 -3 0 -1 1 -1 3 -1 -4 -2 -1 0 -2 -1 -1 1 5 9
+ * Z 0 0 0 0 5 -4 -2 0 -3 -2 1 -1 -1 -1 0 4 0 -1 -1 0 -3 -1 -2 4
+ * X 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 0 -1 0 0 -1 0 -2 -1 0 -1
+ * * -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 1
*
- * A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
+ * A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
* @endcode
*/
@@ -136,33 +132,32 @@ struct ScoringMatrixData_<int, AminoAcid, ScoreSpecBlosum30> {
// Cluster Percentage: >= 30
// Entropy = 0.1424, Expected = -0.1074
static int const _data[TAB_SIZE] = {
- 4, 0, -3, 0, 0, -2, 0, -2, 0, -1, 0, -1, 1, 0, 0, -1, 1, -1, 1, 1, 0, 1, -5, -4, 0, 0, -7,
- 0, 5, -2, 5, 0, -3, 0, -2, -2, -2, 0, -1, -2, 4, -1, -2, -1, -2, 0, 0, -1, -2, -5, -3, 0, -1, -7,
- -3, -2, 17, -3, 1, -3, -4, -5, -2, -1, -3, 0, -2, -1, -2, -3, -2, -2, -2, -2, -2, -2, -2, -6, 0, -2, -7,
- 0, 5, -3, 9, 1, -5, -1, -2, -4, -3, 0, -1, -3, 1, -1, -1, -1, -1, 0, -1, -1, -2, -4, -1, 0, -1, -7,
- 0, 0, 1, 1, 6, -4, -2, 0, -3, -2, 2, -1, -1, -1, -1, 1, 2, -1, 0, -2, -1, -3, -1, -2, 5, -1, -7,
- -2, -3, -3, -5, -4, 10, -3, -3, 0, 1, -1, 2, -2, -1, -1, -4, -3, -1, -1, -2, -1, 1, 1, 3, -4, -1, -7,
- 0, 0, -4, -1, -2, -3, 8, -3, -1, -2, -1, -2, -2, 0, -1, -1, -2, -2, 0, -2, -1, -3, 1, -3, -2, -1, -7,
- -2, -2, -5, -2, 0, -3, -3, 14, -2, -2, -2, -1, 2, -1, -1, 1, 0, -1, -1, -2, -1, -3, -5, 0, 0, -1, -7,
- 0, -2, -2, -4, -3, 0, -1, -2, 6, 4, -2, 2, 1, 0, 0, -3, -2, -3, -1, 0, 0, 4, -3, -1, -3, 0, -7,
- -1, -2, -1, -3, -2, 1, -2, -2, 4, 4, -2, 3, 2, -1, 0, -3, -2, -3, -2, 0, 0, 3, -3, 1, -2, 0, -7,
- 0, 0, -3, 0, 2, -1, -1, -2, -2, -2, 4, -2, 2, 0, 0, 1, 0, 1, 0, -1, 0, -2, -2, -1, 1, 0, -7,
- -1, -1, 0, -1, -1, 2, -2, -1, 2, 3, -2, 4, 2, -2, 0, -3, -2, -2, -2, 0, 0, 1, -2, 3, -1, 0, -7,
- 1, -2, -2, -3, -1, -2, -2, 2, 1, 2, 2, 2, 6, 0, 0, -4, -1, 0, -2, 0, 0, 0, -3, -1, -1, 0, -7,
- 0, 4, -1, 1, -1, -1, 0, -1, 0, -1, 0, -2, 0, 8, 0, -3, -1, -2, 0, 1, 0, -2, -7, -4, -1, 0, -7,
- 0, -1, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1, 0, -2, -1, 0, -1, -7,
- -1, -2, -3, -1, 1, -4, -1, 1, -3, -3, 1, -3, -4, -3, -1, 11, 0, -1, -1, 0, -1, -4, -3, -2, 0, -1, -7,
- 1, -1, -2, -1, 2, -3, -2, 0, -2, -2, 0, -2, -1, -1, 0, 0, 8, 3, -1, 0, 0, -3, -1, -1, 4, 0, -7,
- -1, -2, -2, -1, -1, -1, -2, -1, -3, -3, 1, -2, 0, -2, -1, -1, 3, 8, -1, -3, -1, -1, 0, 0, 0, -1, -7,
- 1, 0, -2, 0, 0, -1, 0, -1, -1, -2, 0, -2, -2, 0, 0, -1, -1, -1, 4, 2, 0, -1, -3, -2, -1, 0, -7,
- 1, 0, -2, -1, -2, -2, -2, -2, 0, 0, -1, 0, 0, 1, 0, 0, 0, -3, 2, 5, 0, 1, -5, -1, -1, 0, -7,
- 0, -1, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1, 0, -2, -1, 0, -1, -7,
- 1, -2, -2, -2, -3, 1, -3, -3, 4, 3, -2, 1, 0, -2, 0, -4, -3, -1, -1, 1, 0, 5, -3, 1, -3, 0, -7,
- -5, -5, -2, -4, -1, 1, 1, -5, -3, -3, -2, -2, -3, -7, -2, -3, -1, 0, -3, -5, -2, -3, 20, 5, -1, -2, -7,
- -4, -3, -6, -1, -2, 3, -3, 0, -1, 1, -1, 3, -1, -4, -1, -2, -1, 0, -2, -1, -1, 1, 5, 9, -2, -1, -7,
- 0, 0, 0, 0, 5, -4, -2, 0, -3, -2, 1, -1, -1, -1, 0, 0, 4, 0, -1, -1, 0, -3, -1, -2, 4, 0, -7,
- 0, -1, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1, 0, -2, -1, 0, -1, -7,
- -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, 1
+ 4, 0, -3, 0, 0, -2, 0, -2, 0, -1, 0, -1, 1, 0, -1, 1, -1, 1, 1, 0, 1, -5, -4, 0, 0, -7,
+ 0, 5, -2, 5, 0, -3, 0, -2, -2, -2, 0, -1, -2, 4, -2, -1, -2, 0, 0, -1, -2, -5, -3, 0, -1, -7,
+ -3, -2, 17, -3, 1, -3, -4, -5, -2, -1, -3, 0, -2, -1, -3, -2, -2, -2, -2, -2, -2, -2, -6, 0, -2, -7,
+ 0, 5, -3, 9, 1, -5, -1, -2, -4, -3, 0, -1, -3, 1, -1, -1, -1, 0, -1, -1, -2, -4, -1, 0, -1, -7,
+ 0, 0, 1, 1, 6, -4, -2, 0, -3, -2, 2, -1, -1, -1, 1, 2, -1, 0, -2, -1, -3, -1, -2, 5, -1, -7,
+ -2, -3, -3, -5, -4, 10, -3, -3, 0, 1, -1, 2, -2, -1, -4, -3, -1, -1, -2, -1, 1, 1, 3, -4, -1, -7,
+ 0, 0, -4, -1, -2, -3, 8, -3, -1, -2, -1, -2, -2, 0, -1, -2, -2, 0, -2, -1, -3, 1, -3, -2, -1, -7,
+ -2, -2, -5, -2, 0, -3, -3, 14, -2, -2, -2, -1, 2, -1, 1, 0, -1, -1, -2, -1, -3, -5, 0, 0, -1, -7,
+ 0, -2, -2, -4, -3, 0, -1, -2, 6, 4, -2, 2, 1, 0, -3, -2, -3, -1, 0, 0, 4, -3, -1, -3, 0, -7,
+ -1, -2, -1, -3, -2, 1, -2, -2, 4, 4, -2, 3, 2, -1, -3, -2, -3, -2, 0, 0, 3, -3, 1, -2, 0, -7,
+ 0, 0, -3, 0, 2, -1, -1, -2, -2, -2, 4, -2, 2, 0, 1, 0, 1, 0, -1, 0, -2, -2, -1, 1, 0, -7,
+ -1, -1, 0, -1, -1, 2, -2, -1, 2, 3, -2, 4, 2, -2, -3, -2, -2, -2, 0, 0, 1, -2, 3, -1, 0, -7,
+ 1, -2, -2, -3, -1, -2, -2, 2, 1, 2, 2, 2, 6, 0, -4, -1, 0, -2, 0, 0, 0, -3, -1, -1, 0, -7,
+ 0, 4, -1, 1, -1, -1, 0, -1, 0, -1, 0, -2, 0, 8, -3, -1, -2, 0, 1, 0, -2, -7, -4, -1, 0, -7,
+ -1, -2, -3, -1, 1, -4, -1, 1, -3, -3, 1, -3, -4, -3, 11, 0, -1, -1, 0, -1, -4, -3, -2, 0, -1, -7,
+ 1, -1, -2, -1, 2, -3, -2, 0, -2, -2, 0, -2, -1, -1, 0, 8, 3, -1, 0, 0, -3, -1, -1, 4, 0, -7,
+ -1, -2, -2, -1, -1, -1, -2, -1, -3, -3, 1, -2, 0, -2, -1, 3, 8, -1, -3, -1, -1, 0, 0, 0, -1, -7,
+ 1, 0, -2, 0, 0, -1, 0, -1, -1, -2, 0, -2, -2, 0, -1, -1, -1, 4, 2, 0, -1, -3, -2, -1, 0, -7,
+ 1, 0, -2, -1, -2, -2, -2, -2, 0, 0, -1, 0, 0, 1, 0, 0, -3, 2, 5, 0, 1, -5, -1, -1, 0, -7,
+ 0, -1, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, -2, -1, 0, -1, -7,
+ 1, -2, -2, -2, -3, 1, -3, -3, 4, 3, -2, 1, 0, -2, -4, -3, -1, -1, 1, 0, 5, -3, 1, -3, 0, -7,
+ -5, -5, -2, -4, -1, 1, 1, -5, -3, -3, -2, -2, -3, -7, -3, -1, 0, -3, -5, -2, -3, 20, 5, -1, -2, -7,
+ -4, -3, -6, -1, -2, 3, -3, 0, -1, 1, -1, 3, -1, -4, -2, -1, 0, -2, -1, -1, 1, 5, 9, -2, -1, -7,
+ 0, 0, 0, 0, 5, -4, -2, 0, -3, -2, 1, -1, -1, -1, 0, 4, 0, -1, -1, 0, -3, -1, -2, 4, 0, -7,
+ 0, -1, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, -2, -1, 0, -1, -7,
+ -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, 1
};
return _data;
}
@@ -193,21 +188,20 @@ typedef Blosum45_ ScoreSpecBlosum45;
* L -1 -3 -2 -3 -2 1 -3 -2 2 4 -3 5
* M -1 -2 -2 -3 -2 0 -2 0 2 2 -1 2 6
* N -1 4 -2 2 0 -2 0 1 -2 -3 0 -3 -2 6
- * O 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
- * P -1 -2 -4 -1 0 -3 -2 -2 -2 -3 -1 -3 -2 -2 -1 9
- * Q -1 0 -3 0 2 -4 -2 1 -2 -2 1 -2 0 0 -1 -1 6
- * R -2 -1 -3 -1 0 -2 -2 0 -3 -3 3 -2 -1 0 -1 -2 1 7
- * S 1 0 -1 0 0 -2 0 -1 -2 -3 -1 -3 -2 1 0 -1 0 -1 4
- * T 0 0 -1 -1 -1 -1 -2 -2 -1 -1 -1 -1 -1 0 0 -1 -1 -1 2 5
- * U 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1
- * V 0 -3 -1 -3 -3 0 -3 -3 3 2 -2 1 1 -3 -1 -3 -3 -2 -1 0 -1 5
- * W -2 -4 -5 -4 -3 1 -2 -3 -2 -2 -2 -2 -2 -4 -2 -3 -2 -2 -4 -3 -2 -3 15
- * Y -2 -2 -3 -2 -2 3 -3 2 0 0 -1 0 0 -2 -1 -3 -1 -1 -2 -1 -1 -1 3 8
- * Z -1 2 -3 1 4 -3 -2 0 -3 -3 1 -2 -1 0 -1 -1 4 0 0 -1 -1 -3 -2 -2 4
- * X 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -2 -1 -1 -1
- * * -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 1
+ * P -1 -2 -4 -1 0 -3 -2 -2 -2 -3 -1 -3 -2 -2 9
+ * Q -1 0 -3 0 2 -4 -2 1 -2 -2 1 -2 0 0 -1 6
+ * R -2 -1 -3 -1 0 -2 -2 0 -3 -3 3 -2 -1 0 -2 1 7
+ * S 1 0 -1 0 0 -2 0 -1 -2 -3 -1 -3 -2 1 -1 0 -1 4
+ * T 0 0 -1 -1 -1 -1 -2 -2 -1 -1 -1 -1 -1 0 -1 -1 -1 2 5
+ * U 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1
+ * V 0 -3 -1 -3 -3 0 -3 -3 3 2 -2 1 1 -3 -3 -3 -2 -1 0 -1 5
+ * W -2 -4 -5 -4 -3 1 -2 -3 -2 -2 -2 -2 -2 -4 -3 -2 -2 -4 -3 -2 -3 15
+ * Y -2 -2 -3 -2 -2 3 -3 2 0 0 -1 0 0 -2 -3 -1 -1 -2 -1 -1 -1 3 8
+ * Z -1 2 -3 1 4 -3 -2 0 -3 -3 1 -2 -1 0 -1 4 0 0 -1 -1 -3 -2 -2 4
+ * X 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -2 -1 -1 -1
+ * * -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 1
*
- * A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
+ * A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
*
* @endcode
*/
@@ -231,33 +225,32 @@ struct ScoringMatrixData_<int, AminoAcid, ScoreSpecBlosum45> {
// Cluster Percentage: >= 45
// Entropy = 0.3795, Expected = -0.2789
static int const _data[TAB_SIZE] = {
- 5, -1, -1, -2, -1, -2, 0, -2, -1, -1, -1, -1, -1, -1, 0, -1, -1, -2, 1, 0, 0, 0, -2, -2, -1, 0, -5,
- -1, 4, -2, 5, 1, -3, -1, 0, -3, -3, 0, -3, -2, 4, -1, -2, 0, -1, 0, 0, -1, -3, -4, -2, 2, -1, -5,
- -1, -2, 12, -3, -3, -2, -3, -3, -3, -3, -3, -2, -2, -2, -2, -4, -3, -3, -1, -1, -2, -1, -5, -3, -3, -2, -5,
- -2, 5, -3, 7, 2, -4, -1, 0, -4, -4, 0, -3, -3, 2, -1, -1, 0, -1, 0, -1, -1, -3, -4, -2, 1, -1, -5,
- -1, 1, -3, 2, 6, -3, -2, 0, -3, -3, 1, -2, -2, 0, -1, 0, 2, 0, 0, -1, -1, -3, -3, -2, 4, -1, -5,
- -2, -3, -2, -4, -3, 8, -3, -2, 0, 1, -3, 1, 0, -2, -1, -3, -4, -2, -2, -1, -1, 0, 1, 3, -3, -1, -5,
- 0, -1, -3, -1, -2, -3, 7, -2, -4, -4, -2, -3, -2, 0, -1, -2, -2, -2, 0, -2, -1, -3, -2, -3, -2, -1, -5,
- -2, 0, -3, 0, 0, -2, -2, 10, -3, -3, -1, -2, 0, 1, -1, -2, 1, 0, -1, -2, -1, -3, -3, 2, 0, -1, -5,
- -1, -3, -3, -4, -3, 0, -4, -3, 5, 4, -3, 2, 2, -2, -1, -2, -2, -3, -2, -1, -1, 3, -2, 0, -3, -1, -5,
- -1, -3, -3, -4, -3, 1, -4, -3, 4, 4, -3, 4, 2, -3, -1, -3, -2, -3, -3, -1, -1, 2, -2, 0, -3, -1, -5,
- -1, 0, -3, 0, 1, -3, -2, -1, -3, -3, 5, -3, -1, 0, -1, -1, 1, 3, -1, -1, -1, -2, -2, -1, 1, -1, -5,
- -1, -3, -2, -3, -2, 1, -3, -2, 2, 4, -3, 5, 2, -3, -1, -3, -2, -2, -3, -1, -1, 1, -2, 0, -2, -1, -5,
- -1, -2, -2, -3, -2, 0, -2, 0, 2, 2, -1, 2, 6, -2, -1, -2, 0, -1, -2, -1, -1, 1, -2, 0, -1, -1, -5,
- -1, 4, -2, 2, 0, -2, 0, 1, -2, -3, 0, -3, -2, 6, -1, -2, 0, 0, 1, 0, -1, -3, -4, -2, 0, -1, -5,
- 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -5,
- -1, -2, -4, -1, 0, -3, -2, -2, -2, -3, -1, -3, -2, -2, -1, 9, -1, -2, -1, -1, -1, -3, -3, -3, -1, -1, -5,
- -1, 0, -3, 0, 2, -4, -2, 1, -2, -2, 1, -2, 0, 0, -1, -1, 6, 1, 0, -1, -1, -3, -2, -1, 4, -1, -5,
- -2, -1, -3, -1, 0, -2, -2, 0, -3, -3, 3, -2, -1, 0, -1, -2, 1, 7, -1, -1, -1, -2, -2, -1, 0, -1, -5,
- 1, 0, -1, 0, 0, -2, 0, -1, -2, -3, -1, -3, -2, 1, 0, -1, 0, -1, 4, 2, 0, -1, -4, -2, 0, 0, -5,
- 0, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 2, 5, 0, 0, -3, -1, -1, 0, -5,
- 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -5,
- 0, -3, -1, -3, -3, 0, -3, -3, 3, 2, -2, 1, 1, -3, -1, -3, -3, -2, -1, 0, -1, 5, -3, -1, -3, -1, -5,
- -2, -4, -5, -4, -3, 1, -2, -3, -2, -2, -2, -2, -2, -4, -2, -3, -2, -2, -4, -3, -2, -3, 15, 3, -2, -2, -5,
- -2, -2, -3, -2, -2, 3, -3, 2, 0, 0, -1, 0, 0, -2, -1, -3, -1, -1, -2, -1, -1, -1, 3, 8, -2, -1, -5,
- -1, 2, -3, 1, 4, -3, -2, 0, -3, -3, 1, -2, -1, 0, -1, -1, 4, 0, 0, -1, -1, -3, -2, -2, 4, -1, -5,
- 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -5,
- -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 1
+ 5, -1, -1, -2, -1, -2, 0, -2, -1, -1, -1, -1, -1, -1, -1, -1, -2, 1, 0, 0, 0, -2, -2, -1, 0, -5,
+ -1, 4, -2, 5, 1, -3, -1, 0, -3, -3, 0, -3, -2, 4, -2, 0, -1, 0, 0, -1, -3, -4, -2, 2, -1, -5,
+ -1, -2, 12, -3, -3, -2, -3, -3, -3, -3, -3, -2, -2, -2, -4, -3, -3, -1, -1, -2, -1, -5, -3, -3, -2, -5,
+ -2, 5, -3, 7, 2, -4, -1, 0, -4, -4, 0, -3, -3, 2, -1, 0, -1, 0, -1, -1, -3, -4, -2, 1, -1, -5,
+ -1, 1, -3, 2, 6, -3, -2, 0, -3, -3, 1, -2, -2, 0, 0, 2, 0, 0, -1, -1, -3, -3, -2, 4, -1, -5,
+ -2, -3, -2, -4, -3, 8, -3, -2, 0, 1, -3, 1, 0, -2, -3, -4, -2, -2, -1, -1, 0, 1, 3, -3, -1, -5,
+ 0, -1, -3, -1, -2, -3, 7, -2, -4, -4, -2, -3, -2, 0, -2, -2, -2, 0, -2, -1, -3, -2, -3, -2, -1, -5,
+ -2, 0, -3, 0, 0, -2, -2, 10, -3, -3, -1, -2, 0, 1, -2, 1, 0, -1, -2, -1, -3, -3, 2, 0, -1, -5,
+ -1, -3, -3, -4, -3, 0, -4, -3, 5, 4, -3, 2, 2, -2, -2, -2, -3, -2, -1, -1, 3, -2, 0, -3, -1, -5,
+ -1, -3, -3, -4, -3, 1, -4, -3, 4, 4, -3, 4, 2, -3, -3, -2, -3, -3, -1, -1, 2, -2, 0, -3, -1, -5,
+ -1, 0, -3, 0, 1, -3, -2, -1, -3, -3, 5, -3, -1, 0, -1, 1, 3, -1, -1, -1, -2, -2, -1, 1, -1, -5,
+ -1, -3, -2, -3, -2, 1, -3, -2, 2, 4, -3, 5, 2, -3, -3, -2, -2, -3, -1, -1, 1, -2, 0, -2, -1, -5,
+ -1, -2, -2, -3, -2, 0, -2, 0, 2, 2, -1, 2, 6, -2, -2, 0, -1, -2, -1, -1, 1, -2, 0, -1, -1, -5,
+ -1, 4, -2, 2, 0, -2, 0, 1, -2, -3, 0, -3, -2, 6, -2, 0, 0, 1, 0, -1, -3, -4, -2, 0, -1, -5,
+ -1, -2, -4, -1, 0, -3, -2, -2, -2, -3, -1, -3, -2, -2, 9, -1, -2, -1, -1, -1, -3, -3, -3, -1, -1, -5,
+ -1, 0, -3, 0, 2, -4, -2, 1, -2, -2, 1, -2, 0, 0, -1, 6, 1, 0, -1, -1, -3, -2, -1, 4, -1, -5,
+ -2, -1, -3, -1, 0, -2, -2, 0, -3, -3, 3, -2, -1, 0, -2, 1, 7, -1, -1, -1, -2, -2, -1, 0, -1, -5,
+ 1, 0, -1, 0, 0, -2, 0, -1, -2, -3, -1, -3, -2, 1, -1, 0, -1, 4, 2, 0, -1, -4, -2, 0, 0, -5,
+ 0, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -1, 0, -1, -1, -1, 2, 5, 0, 0, -3, -1, -1, 0, -5,
+ 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -5,
+ 0, -3, -1, -3, -3, 0, -3, -3, 3, 2, -2, 1, 1, -3, -3, -3, -2, -1, 0, -1, 5, -3, -1, -3, -1, -5,
+ -2, -4, -5, -4, -3, 1, -2, -3, -2, -2, -2, -2, -2, -4, -3, -2, -2, -4, -3, -2, -3, 15, 3, -2, -2, -5,
+ -2, -2, -3, -2, -2, 3, -3, 2, 0, 0, -1, 0, 0, -2, -3, -1, -1, -2, -1, -1, -1, 3, 8, -2, -1, -5,
+ -1, 2, -3, 1, 4, -3, -2, 0, -3, -3, 1, -2, -1, 0, -1, 4, 0, 0, -1, -1, -3, -2, -2, 4, -1, -5,
+ 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -5,
+ -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 1
};
return _data;
}
@@ -288,21 +281,20 @@ typedef Blosum62_ ScoreSpecBlosum62;
* L -1 -4 -1 -4 -3 0 -4 -3 2 3 -2 4
* M -1 -3 -1 -3 -2 0 -3 -2 1 2 -1 2 5
* N -2 3 -3 1 0 -3 0 1 -3 -3 0 -3 -2 6
- * X 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
- * P -1 -2 -3 -1 -1 -4 -2 -2 -3 -3 -1 -3 -2 -2 -2 7
- * Q -1 0 -3 0 2 -3 -2 0 -3 -3 1 -2 0 0 -1 -1 5
- * R -1 -1 -3 -2 0 -3 -2 0 -3 -3 2 -2 -1 0 -1 -2 1 5
- * S 1 0 -1 0 0 -2 0 -1 -2 -2 0 -2 -1 1 0 -1 0 -1 4
- * T 0 -1 -1 -1 -1 -2 -2 -2 -1 -1 -1 -1 -1 0 0 -1 -1 -1 1 5
- * U 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1
- * V 0 -3 -1 -3 -2 -1 -3 -3 3 2 -2 1 1 -3 -1 -2 -2 -3 -2 0 -1 4
- * W -3 -4 -2 -4 -3 1 -2 -2 -3 -3 -3 -2 -1 -4 -2 -4 -2 -3 -3 -2 -2 -3 11
- * Y -2 -3 -2 -3 -2 3 -3 2 -1 -1 -2 -1 -1 -2 -1 -3 -1 -2 -2 -2 -1 -1 2 7
- * Z -1 1 -3 1 4 -3 -2 0 -3 -3 1 -3 -1 0 -1 -1 3 0 0 -1 -1 -2 -3 -2 4
- * X 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1 -1 -2 -1 -1 -1
- * * -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 1
+ * P -1 -2 -3 -1 -1 -4 -2 -2 -3 -3 -1 -3 -2 -2 7
+ * Q -1 0 -3 0 2 -3 -2 0 -3 -3 1 -2 0 0 -1 5
+ * R -1 -1 -3 -2 0 -3 -2 0 -3 -3 2 -2 -1 0 -2 1 5
+ * S 1 0 -1 0 0 -2 0 -1 -2 -2 0 -2 -1 1 -1 0 -1 4
+ * T 0 -1 -1 -1 -1 -2 -2 -2 -1 -1 -1 -1 -1 0 -1 -1 -1 1 5
+ * U 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1
+ * V 0 -3 -1 -3 -2 -1 -3 -3 3 2 -2 1 1 -3 -2 -2 -3 -2 0 -1 4
+ * W -3 -4 -2 -4 -3 1 -2 -2 -3 -3 -3 -2 -1 -4 -4 -2 -3 -3 -2 -2 -3 11
+ * Y -2 -3 -2 -3 -2 3 -3 2 -1 -1 -2 -1 -1 -2 -3 -1 -2 -2 -2 -1 -1 2 7
+ * Z -1 1 -3 1 4 -3 -2 0 -3 -3 1 -3 -1 0 -1 3 0 0 -1 -1 -2 -3 -2 4
+ * X 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1 -1 -2 -1 -1 -1
+ * * -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 1
*
- * A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
+ * A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
* @endcode
*/
@@ -325,33 +317,32 @@ struct ScoringMatrixData_<int, AminoAcid, ScoreSpecBlosum62> {
// Cluster Percentage: >= 62
// Entropy = 0.6979, Expected = -0.5209
static int const _data[TAB_SIZE] = {
- 4, -2, 0, -2, -1, -2, 0, -2, -1, -1, -1, -1, -1, -2, 0, -1, -1, -1, 1, 0, 0, 0, -3, -2, -1, 0, -4,
- -2, 4, -3, 4, 1, -3, -1, 0, -3, -4, 0, -4, -3, 3, -1, -2, 0, -1, 0, -1, -1, -3, -4, -3, 1, -1, -4,
- 0, -3, 9, -3, -4, -2, -3, -3, -1, -1, -3, -1, -1, -3, -2, -3, -3, -3, -1, -1, -2, -1, -2, -2, -3, -2, -4,
- -2, 4, -3, 6, 2, -3, -1, -1, -3, -4, -1, -4, -3, 1, -1, -1, 0, -2, 0, -1, -1, -3, -4, -3, 1, -1, -4,
- -1, 1, -4, 2, 5, -3, -2, 0, -3, -3, 1, -3, -2, 0, -1, -1, 2, 0, 0, -1, -1, -2, -3, -2, 4, -1, -4,
- -2, -3, -2, -3, -3, 6, -3, -1, 0, 0, -3, 0, 0, -3, -1, -4, -3, -3, -2, -2, -1, -1, 1, 3, -3, -1, -4,
- 0, -1, -3, -1, -2, -3, 6, -2, -4, -4, -2, -4, -3, 0, -1, -2, -2, -2, 0, -2, -1, -3, -2, -3, -2, -1, -4,
- -2, 0, -3, -1, 0, -1, -2, 8, -3, -3, -1, -3, -2, 1, -1, -2, 0, 0, -1, -2, -1, -3, -2, 2, 0, -1, -4,
- -1, -3, -1, -3, -3, 0, -4, -3, 4, 3, -3, 2, 1, -3, -1, -3, -3, -3, -2, -1, -1, 3, -3, -1, -3, -1, -4,
- -1, -4, -1, -4, -3, 0, -4, -3, 3, 3, -3, 3, 2, -3, -1, -3, -3, -3, -2, -1, -1, 2, -3, -1, -3, -1, -4,
- -1, 0, -3, -1, 1, -3, -2, -1, -3, -3, 5, -2, -1, 0, -1, -1, 1, 2, 0, -1, -1, -2, -3, -2, 1, -1, -4,
- -1, -4, -1, -4, -3, 0, -4, -3, 2, 3, -2, 4, 2, -3, -1, -3, -2, -2, -2, -1, -1, 1, -2, -1, -3, -1, -4,
- -1, -3, -1, -3, -2, 0, -3, -2, 1, 2, -1, 2, 5, -2, -1, -2, 0, -1, -1, -1, -1, 1, -1, -1, -1, -1, -4,
- -2, 3, -3, 1, 0, -3, 0, 1, -3, -3, 0, -3, -2, 6, -1, -2, 0, 0, 1, 0, -1, -3, -4, -2, 0, -1, -4,
- 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -4,
- -1, -2, -3, -1, -1, -4, -2, -2, -3, -3, -1, -3, -2, -2, -2, 7, -1, -2, -1, -1, -2, -2, -4, -3, -1, -2, -4,
- -1, 0, -3, 0, 2, -3, -2, 0, -3, -3, 1, -2, 0, 0, -1, -1, 5, 1, 0, -1, -1, -2, -2, -1, 3, -1, -4,
- -1, -1, -3, -2, 0, -3, -2, 0, -3, -3, 2, -2, -1, 0, -1, -2, 1, 5, -1, -1, -1, -3, -3, -2, 0, -1, -4,
- 1, 0, -1, 0, 0, -2, 0, -1, -2, -2, 0, -2, -1, 1, 0, -1, 0, -1, 4, 1, 0, -2, -3, -2, 0, 0, -4,
- 0, -1, -1, -1, -1, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 1, 5, 0, 0, -2, -2, -1, 0, -4,
- 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -4,
- 0, -3, -1, -3, -2, -1, -3, -3, 3, 2, -2, 1, 1, -3, -1, -2, -2, -3, -2, 0, -1, 4, -3, -1, -2, -1, -4,
- -3, -4, -2, -4, -3, 1, -2, -2, -3, -3, -3, -2, -1, -4, -2, -4, -2, -3, -3, -2, -2, -3, 11, 2, -3, -2, -4,
- -2, -3, -2, -3, -2, 3, -3, 2, -1, -1, -2, -1, -1, -2, -1, -3, -1, -2, -2, -2, -1, -1, 2, 7, -2, -1, -4,
- -1, 1, -3, 1, 4, -3, -2, 0, -3, -3, 1, -3, -1, 0, -1, -1, 3, 0, 0, -1, -1, -2, -3, -2, 4, -1, -4,
- 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -4,
- -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 1
+ 4, -2, 0, -2, -1, -2, 0, -2, -1, -1, -1, -1, -1, -2, -1, -1, -1, 1, 0, 0, 0, -3, -2, -1, 0, -4,
+ -2, 4, -3, 4, 1, -3, -1, 0, -3, -4, 0, -4, -3, 3, -2, 0, -1, 0, -1, -1, -3, -4, -3, 1, -1, -4,
+ 0, -3, 9, -3, -4, -2, -3, -3, -1, -1, -3, -1, -1, -3, -3, -3, -3, -1, -1, -2, -1, -2, -2, -3, -2, -4,
+ -2, 4, -3, 6, 2, -3, -1, -1, -3, -4, -1, -4, -3, 1, -1, 0, -2, 0, -1, -1, -3, -4, -3, 1, -1, -4,
+ -1, 1, -4, 2, 5, -3, -2, 0, -3, -3, 1, -3, -2, 0, -1, 2, 0, 0, -1, -1, -2, -3, -2, 4, -1, -4,
+ -2, -3, -2, -3, -3, 6, -3, -1, 0, 0, -3, 0, 0, -3, -4, -3, -3, -2, -2, -1, -1, 1, 3, -3, -1, -4,
+ 0, -1, -3, -1, -2, -3, 6, -2, -4, -4, -2, -4, -3, 0, -2, -2, -2, 0, -2, -1, -3, -2, -3, -2, -1, -4,
+ -2, 0, -3, -1, 0, -1, -2, 8, -3, -3, -1, -3, -2, 1, -2, 0, 0, -1, -2, -1, -3, -2, 2, 0, -1, -4,
+ -1, -3, -1, -3, -3, 0, -4, -3, 4, 3, -3, 2, 1, -3, -3, -3, -3, -2, -1, -1, 3, -3, -1, -3, -1, -4,
+ -1, -4, -1, -4, -3, 0, -4, -3, 3, 3, -3, 3, 2, -3, -3, -3, -3, -2, -1, -1, 2, -3, -1, -3, -1, -4,
+ -1, 0, -3, -1, 1, -3, -2, -1, -3, -3, 5, -2, -1, 0, -1, 1, 2, 0, -1, -1, -2, -3, -2, 1, -1, -4,
+ -1, -4, -1, -4, -3, 0, -4, -3, 2, 3, -2, 4, 2, -3, -3, -2, -2, -2, -1, -1, 1, -2, -1, -3, -1, -4,
+ -1, -3, -1, -3, -2, 0, -3, -2, 1, 2, -1, 2, 5, -2, -2, 0, -1, -1, -1, -1, 1, -1, -1, -1, -1, -4,
+ -2, 3, -3, 1, 0, -3, 0, 1, -3, -3, 0, -3, -2, 6, -2, 0, 0, 1, 0, -1, -3, -4, -2, 0, -1, -4,
+ -1, -2, -3, -1, -1, -4, -2, -2, -3, -3, -1, -3, -2, -2, 7, -1, -2, -1, -1, -2, -2, -4, -3, -1, -2, -4,
+ -1, 0, -3, 0, 2, -3, -2, 0, -3, -3, 1, -2, 0, 0, -1, 5, 1, 0, -1, -1, -2, -2, -1, 3, -1, -4,
+ -1, -1, -3, -2, 0, -3, -2, 0, -3, -3, 2, -2, -1, 0, -2, 1, 5, -1, -1, -1, -3, -3, -2, 0, -1, -4,
+ 1, 0, -1, 0, 0, -2, 0, -1, -2, -2, 0, -2, -1, 1, -1, 0, -1, 4, 1, 0, -2, -3, -2, 0, 0, -4,
+ 0, -1, -1, -1, -1, -2, -2, -2, -1, -1, -1, -1, -1, 0, -1, -1, -1, 1, 5, 0, 0, -2, -2, -1, 0, -4,
+ 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -4,
+ 0, -3, -1, -3, -2, -1, -3, -3, 3, 2, -2, 1, 1, -3, -2, -2, -3, -2, 0, -1, 4, -3, -1, -2, -1, -4,
+ -3, -4, -2, -4, -3, 1, -2, -2, -3, -3, -3, -2, -1, -4, -4, -2, -3, -3, -2, -2, -3, 11, 2, -3, -2, -4,
+ -2, -3, -2, -3, -2, 3, -3, 2, -1, -1, -2, -1, -1, -2, -3, -1, -2, -2, -2, -1, -1, 2, 7, -2, -1, -4,
+ -1, 1, -3, 1, 4, -3, -2, 0, -3, -3, 1, -3, -1, 0, -1, 3, 0, 0, -1, -1, -2, -3, -2, 4, -1, -4,
+ 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, 0, 0, -1, -1, -2, -1, -1, -1, -4,
+ -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 1
};
return _data;
}
@@ -382,21 +373,22 @@ typedef Blosum80_ ScoreSpecBlosum80;
* L -3 -7 -3 -7 -6 0 -7 -5 2 4 -4 6
* M -2 -5 -3 -6 -4 0 -5 -4 2 3 -3 3 9
* N -3 5 -5 2 -1 -6 -1 1 -6 -6 0 -6 -4 9
- * O -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -2
- * P -1 -4 -6 -3 -2 -6 -5 -4 -5 -5 -2 -5 -4 -4 -3 12
- * Q -2 -1 -5 -1 3 -5 -4 1 -5 -5 2 -4 -1 0 -2 -3 9
- * R -3 -2 -6 -3 -1 -5 -4 0 -5 -5 3 -4 -3 -1 -2 -3 1 9
- * S 2 0 -2 -1 -1 -4 -1 -2 -4 -4 -1 -4 -3 1 -1 -2 -1 -2 7
- * T 0 -1 -2 -2 -2 -4 -3 -3 -2 -3 -1 -3 -1 0 -1 -3 -1 -2 2 8
- * U -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2
- * V -1 -6 -2 -6 -4 -2 -6 -5 4 3 -4 1 1 -5 -2 -4 -4 -4 -3 0 -2 7
- * W -5 -8 -5 -8 -6 0 -6 -4 -5 -5 -6 -4 -3 -7 -5 -7 -4 -5 -6 -5 -5 -5 16
- * Y -4 -5 -5 -6 -5 4 -6 3 -3 -3 -4 -2 -3 -4 -3 -6 -3 -4 -3 -3 -3 -3 3 11
- * Z -2 0 -7 1 6 -6 -4 0 -6 -6 1 -5 -3 -1 -1 -2 5 0 -1 -2 -1 -4 -5 -4 6
- * X -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2 -2 -5 -3 -1 -2
- * * -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
+ * P -1 -4 -6 -3 -2 -6 -5 -4 -5 -5 -2 -5 -4 -4 12
+ * Q -2 -1 -5 -1 3 -5 -4 1 -5 -5 2 -4 -1 0 -3 9
+ * R -3 -2 -6 -3 -1 -5 -4 0 -5 -5 3 -4 -3 -1 -3 1 9
+ * S 2 0 -2 -1 -1 -4 -1 -2 -4 -4 -1 -4 -3 1 -2 -1 -2 7
+ * T 0 -1 -2 -2 -2 -4 -3 -3 -2 -3 -1 -3 -1 0 -3 -1 -2 2 8
+ * U -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2
+ * V -1 -6 -2 -6 -4 -2 -6 -5 4 3 -4 1 1 -5 -4 -4 -4 -3 0 -2 7
+ * W -5 -8 -5 -8 -6 0 -6 -4 -5 -5 -6 -4 -3 -7 -7 -4 -5 -6 -5 -5 -5 16
+ * Y -4 -5 -5 -6 -5 4 -6 3 -3 -3 -4 -2 -3 -4 -6 -3 -4 -3 -3 -3 -3 3 11
+ * Z -2 0 -7 1 6 -6 -4 0 -6 -6 1 -5 -3 -1 -2 5 0 -1 -2 -1 -4 -5 -4 6
+ * X -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2 -2 -5 -3 -1 -2
+ * * -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
+ *
+ * A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+ *
*
- * A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
* @endcode
*/
@@ -419,33 +411,32 @@ struct ScoringMatrixData_<int, AminoAcid, ScoreSpecBlosum80> {
// Cluster Percentage: >= 80
// Entropy = 0.9868, Expected = -0.7442
static int const _data[TAB_SIZE] = {
- 7, -3, -1, -3, -2, -4, 0, -3, -3, -3, -1, -3, -2, -3, -1, -1, -2, -3, 2, 0, -1, -1, -5, -4, -2, -1, -8,
- -3, 6, -6, 6, 1, -6, -2, -1, -6, -7, -1, -7, -5, 5, -3, -4, -1, -2, 0, -1, -3, -6, -8, -5, 0, -3, -8,
- -1, -6, 13, -7, -7, -4, -6, -7, -2, -3, -6, -3, -3, -5, -4, -6, -5, -6, -2, -2, -4, -2, -5, -5, -7, -4, -8,
- -3, 6, -7, 10, 2, -6, -3, -2, -7, -7, -2, -7, -6, 2, -3, -3, -1, -3, -1, -2, -3, -6, -8, -6, 1, -3, -8,
- -2, 1, -7, 2, 8, -6, -4, 0, -6, -6, 1, -6, -4, -1, -2, -2, 3, -1, -1, -2, -2, -4, -6, -5, 6, -2, -8,
- -4, -6, -4, -6, -6, 10, -6, -2, -1, -1, -5, 0, 0, -6, -3, -6, -5, -5, -4, -4, -3, -2, 0, 4, -6, -3, -8,
- 0, -2, -6, -3, -4, -6, 9, -4, -7, -7, -3, -7, -5, -1, -3, -5, -4, -4, -1, -3, -3, -6, -6, -6, -4, -3, -8,
- -3, -1, -7, -2, 0, -2, -4, 12, -6, -6, -1, -5, -4, 1, -2, -4, 1, 0, -2, -3, -2, -5, -4, 3, 0, -2, -8,
- -3, -6, -2, -7, -6, -1, -7, -6, 7, 5, -5, 2, 2, -6, -2, -5, -5, -5, -4, -2, -2, 4, -5, -3, -6, -2, -8,
- -3, -7, -3, -7, -6, -1, -7, -6, 5, 5, -5, 4, 3, -6, -2, -5, -5, -5, -4, -3, -2, 3, -5, -3, -6, -2, -8,
- -1, -1, -6, -2, 1, -5, -3, -1, -5, -5, 8, -4, -3, 0, -2, -2, 2, 3, -1, -1, -2, -4, -6, -4, 1, -2, -8,
- -3, -7, -3, -7, -6, 0, -7, -5, 2, 4, -4, 6, 3, -6, -2, -5, -4, -4, -4, -3, -2, 1, -4, -2, -5, -2, -8,
- -2, -5, -3, -6, -4, 0, -5, -4, 2, 3, -3, 3, 9, -4, -2, -4, -1, -3, -3, -1, -2, 1, -3, -3, -3, -2, -8,
- -3, 5, -5, 2, -1, -6, -1, 1, -6, -6, 0, -6, -4, 9, -2, -4, 0, -1, 1, 0, -2, -5, -7, -4, -1, -2, -8,
- -1, -3, -4, -3, -2, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -1, -1, -2, -2, -5, -3, -1, -2, -8,
- -1, -4, -6, -3, -2, -6, -5, -4, -5, -5, -2, -5, -4, -4, -3, 12, -3, -3, -2, -3, -3, -4, -7, -6, -2, -3, -8,
- -2, -1, -5, -1, 3, -5, -4, 1, -5, -5, 2, -4, -1, 0, -2, -3, 9, 1, -1, -1, -2, -4, -4, -3, 5, -2, -8,
- -3, -2, -6, -3, -1, -5, -4, 0, -5, -5, 3, -4, -3, -1, -2, -3, 1, 9, -2, -2, -2, -4, -5, -4, 0, -2, -8,
- 2, 0, -2, -1, -1, -4, -1, -2, -4, -4, -1, -4, -3, 1, -1, -2, -1, -2, 7, 2, -1, -3, -6, -3, -1, -1, -8,
- 0, -1, -2, -2, -2, -4, -3, -3, -2, -3, -1, -3, -1, 0, -1, -3, -1, -2, 2, 8, -1, 0, -5, -3, -2, -1, -8,
- -1, -3, -4, -3, -2, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -1, -1, -2, -2, -5, -3, -1, -2, -8,
- -1, -6, -2, -6, -4, -2, -6, -5, 4, 3, -4, 1, 1, -5, -2, -4, -4, -4, -3, 0, -2, 7, -5, -3, -4, -2, -8,
- -5, -8, -5, -8, -6, 0, -6, -4, -5, -5, -6, -4, -3, -7, -5, -7, -4, -5, -6, -5, -5, -5, 16, 3, -5, -5, -8,
- -4, -5, -5, -6, -5, 4, -6, 3, -3, -3, -4, -2, -3, -4, -3, -6, -3, -4, -3, -3, -3, -3, 3, 11, -4, -3, -8,
- -2, 0, -7, 1, 6, -6, -4, 0, -6, -6, 1, -5, -3, -1, -1, -2, 5, 0, -1, -2, -1, -4, -5, -4, 6, -1, -8,
- -1, -3, -4, -3, -2, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -1, -1, -2, -2, -5, -3, -1, -2, -8,
- -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1
+ 7, -3, -1, -3, -2, -4, 0, -3, -3, -3, -1, -3, -2, -3, -1, -2, -3, 2, 0, -1, -1, -5, -4, -2, -1, -8,
+ -3, 6, -6, 6, 1, -6, -2, -1, -6, -7, -1, -7, -5, 5, -4, -1, -2, 0, -1, -3, -6, -8, -5, 0, -3, -8,
+ -1, -6, 13, -7, -7, -4, -6, -7, -2, -3, -6, -3, -3, -5, -6, -5, -6, -2, -2, -4, -2, -5, -5, -7, -4, -8,
+ -3, 6, -7, 10, 2, -6, -3, -2, -7, -7, -2, -7, -6, 2, -3, -1, -3, -1, -2, -3, -6, -8, -6, 1, -3, -8,
+ -2, 1, -7, 2, 8, -6, -4, 0, -6, -6, 1, -6, -4, -1, -2, 3, -1, -1, -2, -2, -4, -6, -5, 6, -2, -8,
+ -4, -6, -4, -6, -6, 10, -6, -2, -1, -1, -5, 0, 0, -6, -6, -5, -5, -4, -4, -3, -2, 0, 4, -6, -3, -8,
+ 0, -2, -6, -3, -4, -6, 9, -4, -7, -7, -3, -7, -5, -1, -5, -4, -4, -1, -3, -3, -6, -6, -6, -4, -3, -8,
+ -3, -1, -7, -2, 0, -2, -4, 12, -6, -6, -1, -5, -4, 1, -4, 1, 0, -2, -3, -2, -5, -4, 3, 0, -2, -8,
+ -3, -6, -2, -7, -6, -1, -7, -6, 7, 5, -5, 2, 2, -6, -5, -5, -5, -4, -2, -2, 4, -5, -3, -6, -2, -8,
+ -3, -7, -3, -7, -6, -1, -7, -6, 5, 5, -5, 4, 3, -6, -5, -5, -5, -4, -3, -2, 3, -5, -3, -6, -2, -8,
+ -1, -1, -6, -2, 1, -5, -3, -1, -5, -5, 8, -4, -3, 0, -2, 2, 3, -1, -1, -2, -4, -6, -4, 1, -2, -8,
+ -3, -7, -3, -7, -6, 0, -7, -5, 2, 4, -4, 6, 3, -6, -5, -4, -4, -4, -3, -2, 1, -4, -2, -5, -2, -8,
+ -2, -5, -3, -6, -4, 0, -5, -4, 2, 3, -3, 3, 9, -4, -4, -1, -3, -3, -1, -2, 1, -3, -3, -3, -2, -8,
+ -3, 5, -5, 2, -1, -6, -1, 1, -6, -6, 0, -6, -4, 9, -4, 0, -1, 1, 0, -2, -5, -7, -4, -1, -2, -8,
+ -1, -4, -6, -3, -2, -6, -5, -4, -5, -5, -2, -5, -4, -4, 12, -3, -3, -2, -3, -3, -4, -7, -6, -2, -3, -8,
+ -2, -1, -5, -1, 3, -5, -4, 1, -5, -5, 2, -4, -1, 0, -3, 9, 1, -1, -1, -2, -4, -4, -3, 5, -2, -8,
+ -3, -2, -6, -3, -1, -5, -4, 0, -5, -5, 3, -4, -3, -1, -3, 1, 9, -2, -2, -2, -4, -5, -4, 0, -2, -8,
+ 2, 0, -2, -1, -1, -4, -1, -2, -4, -4, -1, -4, -3, 1, -2, -1, -2, 7, 2, -1, -3, -6, -3, -1, -1, -8,
+ 0, -1, -2, -2, -2, -4, -3, -3, -2, -3, -1, -3, -1, 0, -3, -1, -2, 2, 8, -1, 0, -5, -3, -2, -1, -8,
+ -1, -3, -4, -3, -2, -3, -3, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -1, -1, -2, -2, -5, -3, -1, -2, -8,
+ -1, -6, -2, -6, -4, -2, -6, -5, 4, 3, -4, 1, 1, -5, -4, -4, -4, -3, 0, -2, 7, -5, -3, -4, -2, -8,
+ -5, -8, -5, -8, -6, 0, -6, -4, -5, -5, -6, -4, -3, -7, -7, -4, -5, -6, -5, -5, -5, 16, 3, -5, -5, -8,
+ -4, -5, -5, -6, -5, 4, -6, 3, -3, -3, -4, -2, -3, -4, -6, -3, -4, -3, -3, -3, -3, 3, 11, -4, -3, -8,
+ -2, 0, -7, 1, 6, -6, -4, 0, -6, -6, 1, -5, -3, -1, -2, 5, 0, -1, -2, -1, -4, -5, -4, 6, -1, -8,
+ -1, -3, -4, -3, -2, -3, -3, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -1, -1, -2, -2, -5, -3, -1, -2, -8,
+ -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1
};
return _data;
}
@@ -462,35 +453,34 @@ typedef Pam40_ ScoreSpecPam40;
* @signature typedef Score<int, ScoreMatrix<AminoAcid, ScoreSpecPam40> > Pam40;
*
* @code{.txt}
- * A 6
- * B -3 6
- * C -6 -11 9
- * D -3 6 -12 7
- * E -2 2 -12 3 7
- * F -7 -9 -11 -13 -12 9
- * G -1 -2 -8 -3 -3 -8 6
- * H -6 -1 -7 -3 -4 -5 -8 9
- * I -4 -5 -5 -6 -5 -2 -9 -8 8
- * J -5 -7 -9 -9 -7 -2 -9 -7 4 4
- * K -6 -2 -12 -4 -4 -12 -6 -5 -5 -6 6
- * L -5 -8 -13 -11 -8 -2 -9 -5 -1 3 -7 7
- * M -4 -8 -12 -9 -6 -3 -7 -9 0 1 -1 1 11
- * N -3 6 -9 2 -1 -8 -2 1 -4 -5 0 -6 -7 7
- * O -3 -4 -8 -5 -4 -7 -4 -4 -4 -5 -4 -5 -4 -3 -4
- * P -1 -6 -7 -7 -5 -9 -5 -3 -7 -7 -6 -6 -7 -5 -4 8
- * Q -3 -2 -12 -2 2 -11 -6 1 -7 -6 -2 -4 -3 -3 -4 -2 8
- * R -6 -6 -7 -9 -8 -8 -8 -1 -5 -7 1 -8 -3 -5 -5 -3 -1 8
- * S 0 -1 -2 -3 -4 -6 -1 -5 -6 -7 -3 -7 -5 0 -2 -1 -4 -2 6
- * T 0 -2 -7 -4 -5 -8 -5 -6 -2 -4 -2 -6 -3 -1 -3 -3 -5 -5 1 7
- * U -3 -4 -8 -5 -4 -7 -4 -4 -4 -5 -4 -5 -4 -3 -4 -4 -4 -5 -2 -3 -4
- * V -2 -7 -5 -7 -6 -7 -5 -6 2 0 -8 -2 -1 -7 -4 -5 -6 -7 -5 -2 -4 7
- * W -12 -9 -14 -13 -15 -4 -13 -6 -12 -9 -10 -5 -11 -7 -9 -12 -11 -1 -4 -11 -9 -14 13
- * Y -7 -6 -3 -10 -8 2 -12 -3 -5 -6 -8 -6 -10 -4 -7 -12 -10 -9 -6 -6 -7 -6 -4 10
- * Z -2 1 -12 2 6 -12 -4 0 -5 -6 -3 -6 -4 -2 -4 -3 6 -3 -4 -5 -4 -6 -13 -8 6
- * X -3 -4 -8 -5 -4 -7 -4 -4 -4 -5 -4 -5 -4 -3 -4 -4 -4 -5 -2 -3 -4 -4 -9 -7 -4 -4
- * * -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 1
+ * A 7
+ * B -3 6
+ * C -1 -6 13
+ * D -3 6 -7 10
+ * E -2 1 -7 2 8
+ * F -4 -6 -4 -6 -6 10
+ * G 0 -2 -6 -3 -4 -6 9
+ * H -3 -1 -7 -2 0 -2 -4 12
+ * I -3 -6 -2 -7 -6 -1 -7 -6 7
+ * J -3 -7 -3 -7 -6 -1 -7 -6 5 5
+ * K -1 -1 -6 -2 1 -5 -3 -1 -5 -5 8
+ * L -3 -7 -3 -7 -6 0 -7 -5 2 4 -4 6
+ * M -2 -5 -3 -6 -4 0 -5 -4 2 3 -3 3 9
+ * N -3 5 -5 2 -1 -6 -1 1 -6 -6 0 -6 -4 9
+ * P -1 -4 -6 -3 -2 -6 -5 -4 -5 -5 -2 -5 -4 -4 12
+ * Q -2 -1 -5 -1 3 -5 -4 1 -5 -5 2 -4 -1 0 -3 9
+ * R -3 -2 -6 -3 -1 -5 -4 0 -5 -5 3 -4 -3 -1 -3 1 9
+ * S 2 0 -2 -1 -1 -4 -1 -2 -4 -4 -1 -4 -3 1 -2 -1 -2 7
+ * T 0 -1 -2 -2 -2 -4 -3 -3 -2 -3 -1 -3 -1 0 -3 -1 -2 2 8
+ * U -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2
+ * V -1 -6 -2 -6 -4 -2 -6 -5 4 3 -4 1 1 -5 -4 -4 -4 -3 0 -2 7
+ * W -5 -8 -5 -8 -6 0 -6 -4 -5 -5 -6 -4 -3 -7 -7 -4 -5 -6 -5 -5 -5 16
+ * Y -4 -5 -5 -6 -5 4 -6 3 -3 -3 -4 -2 -3 -4 -6 -3 -4 -3 -3 -3 -3 3 11
+ * Z -2 0 -7 1 6 -6 -4 0 -6 -6 1 -5 -3 -1 -2 5 0 -1 -2 -1 -4 -5 -4 6
+ * X -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2 -2 -5 -3 -1 -2
+ * * -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
*
- * A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
+ * A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
* @endcode
*/
@@ -516,33 +506,32 @@ struct ScoringMatrixData_<int, AminoAcid, ScoreSpecPam40> {
// Lowest score = -15, Highest score = 13
//
static int const _data[TAB_SIZE] = {
- 6, -3, -6, -3, -2, -7, -1, -6, -4, -5, -6, -5, -4, -3, -3, -1, -3, -6, 0, 0, -3, -2, -12, -7, -2, -3, -15,
- -3, 6, -11, 6, 2, -9, -2, -1, -5, -7, -2, -8, -8, 6, -4, -6, -2, -6, -1, -2, -4, -7, -9, -6, 1, -4, -15,
- -6, -11, 9, -12, -12, -11, -8, -7, -5, -9, -12, -13, -12, -9, -8, -7, -12, -7, -2, -7, -8, -5, -14, -3, -12, -8, -15,
- -3, 6, -12, 7, 3, -13, -3, -3, -6, -9, -4, -11, -9, 2, -5, -7, -2, -9, -3, -4, -5, -7, -13, -10, 2, -5, -15,
- -2, 2, -12, 3, 7, -12, -3, -4, -5, -7, -4, -8, -6, -1, -4, -5, 2, -8, -4, -5, -4, -6, -15, -8, 6, -4, -15,
- -7, -9, -11, -13, -12, 9, -8, -5, -2, -2, -12, -2, -3, -8, -7, -9, -11, -8, -6, -8, -7, -7, -4, 2, -12, -7, -15,
- -1, -2, -8, -3, -3, -8, 6, -8, -9, -9, -6, -9, -7, -2, -4, -5, -6, -8, -1, -5, -4, -5, -13, -12, -4, -4, -15,
- -6, -1, -7, -3, -4, -5, -8, 9, -8, -7, -5, -5, -9, 1, -4, -3, 1, -1, -5, -6, -4, -6, -6, -3, 0, -4, -15,
- -4, -5, -5, -6, -5, -2, -9, -8, 8, 4, -5, -1, 0, -4, -4, -7, -7, -5, -6, -2, -4, 2, -12, -5, -5, -4, -15,
- -5, -7, -9, -9, -7, -2, -9, -7, 4, 4, -6, 3, 1, -5, -5, -7, -6, -7, -7, -4, -5, 0, -9, -6, -6, -5, -15,
- -6, -2, -12, -4, -4, -12, -6, -5, -5, -6, 6, -7, -1, 0, -4, -6, -2, 1, -3, -2, -4, -8, -10, -8, -3, -4, -15,
- -5, -8, -13, -11, -8, -2, -9, -5, -1, 3, -7, 7, 1, -6, -5, -6, -4, -8, -7, -6, -5, -2, -5, -6, -6, -5, -15,
- -4, -8, -12, -9, -6, -3, -7, -9, 0, 1, -1, 1, 11, -7, -4, -7, -3, -3, -5, -3, -4, -1, -11, -10, -4, -4, -15,
- -3, 6, -9, 2, -1, -8, -2, 1, -4, -5, 0, -6, -7, 7, -3, -5, -3, -5, 0, -1, -3, -7, -7, -4, -2, -3, -15,
- -3, -4, -8, -5, -4, -7, -4, -4, -4, -5, -4, -5, -4, -3, -4, -4, -4, -5, -2, -3, -4, -4, -9, -7, -4, -4, -15,
- -1, -6, -7, -7, -5, -9, -5, -3, -7, -7, -6, -6, -7, -5, -4, 8, -2, -3, -1, -3, -4, -5, -12, -12, -3, -4, -15,
- -3, -2, -12, -2, 2, -11, -6, 1, -7, -6, -2, -4, -3, -3, -4, -2, 8, -1, -4, -5, -4, -6, -11, -10, 6, -4, -15,
- -6, -6, -7, -9, -8, -8, -8, -1, -5, -7, 1, -8, -3, -5, -5, -3, -1, 8, -2, -5, -5, -7, -1, -9, -3, -5, -15,
- 0, -1, -2, -3, -4, -6, -1, -5, -6, -7, -3, -7, -5, 0, -2, -1, -4, -2, 6, 1, -2, -5, -4, -6, -4, -2, -15,
- 0, -2, -7, -4, -5, -8, -5, -6, -2, -4, -2, -6, -3, -1, -3, -3, -5, -5, 1, 7, -3, -2, -11, -6, -5, -3, -15,
- -3, -4, -8, -5, -4, -7, -4, -4, -4, -5, -4, -5, -4, -3, -4, -4, -4, -5, -2, -3, -4, -4, -9, -7, -4, -4, -15,
- -2, -7, -5, -7, -6, -7, -5, -6, 2, 0, -8, -2, -1, -7, -4, -5, -6, -7, -5, -2, -4, 7, -14, -6, -6, -4, -15,
- -12, -9, -14, -13, -15, -4, -13, -6, -12, -9, -10, -5, -11, -7, -9, -12, -11, -1, -4, -11, -9, -14, 13, -4, -13, -9, -15,
- -7, -6, -3, -10, -8, 2, -12, -3, -5, -6, -8, -6, -10, -4, -7, -12, -10, -9, -6, -6, -7, -6, -4, 10, -8, -7, -15,
- -2, 1, -12, 2, 6, -12, -4, 0, -5, -6, -3, -6, -4, -2, -4, -3, 6, -3, -4, -5, -4, -6, -13, -8, 6, -4, -15,
- -3, -4, -8, -5, -4, -7, -4, -4, -4, -5, -4, -5, -4, -3, -4, -4, -4, -5, -2, -3, -4, -4, -9, -7, -4, -4, -15,
- -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, 1
+ 6, -3, -6, -3, -2, -7, -1, -6, -4, -5, -6, -5, -4, -3, -1, -3, -6, 0, 0, -3, -2, -12, -7, -2, -3, -15,
+ -3, 6, -11, 6, 2, -9, -2, -1, -5, -7, -2, -8, -8, 6, -6, -2, -6, -1, -2, -4, -7, -9, -6, 1, -4, -15,
+ -6, -11, 9, -12, -12, -11, -8, -7, -5, -9, -12, -13, -12, -9, -7, -12, -7, -2, -7, -8, -5, -14, -3, -12, -8, -15,
+ -3, 6, -12, 7, 3, -13, -3, -3, -6, -9, -4, -11, -9, 2, -7, -2, -9, -3, -4, -5, -7, -13, -10, 2, -5, -15,
+ -2, 2, -12, 3, 7, -12, -3, -4, -5, -7, -4, -8, -6, -1, -5, 2, -8, -4, -5, -4, -6, -15, -8, 6, -4, -15,
+ -7, -9, -11, -13, -12, 9, -8, -5, -2, -2, -12, -2, -3, -8, -9, -11, -8, -6, -8, -7, -7, -4, 2, -12, -7, -15,
+ -1, -2, -8, -3, -3, -8, 6, -8, -9, -9, -6, -9, -7, -2, -5, -6, -8, -1, -5, -4, -5, -13, -12, -4, -4, -15,
+ -6, -1, -7, -3, -4, -5, -8, 9, -8, -7, -5, -5, -9, 1, -3, 1, -1, -5, -6, -4, -6, -6, -3, 0, -4, -15,
+ -4, -5, -5, -6, -5, -2, -9, -8, 8, 4, -5, -1, 0, -4, -7, -7, -5, -6, -2, -4, 2, -12, -5, -5, -4, -15,
+ -5, -7, -9, -9, -7, -2, -9, -7, 4, 4, -6, 3, 1, -5, -7, -6, -7, -7, -4, -5, 0, -9, -6, -6, -5, -15,
+ -6, -2, -12, -4, -4, -12, -6, -5, -5, -6, 6, -7, -1, 0, -6, -2, 1, -3, -2, -4, -8, -10, -8, -3, -4, -15,
+ -5, -8, -13, -11, -8, -2, -9, -5, -1, 3, -7, 7, 1, -6, -6, -4, -8, -7, -6, -5, -2, -5, -6, -6, -5, -15,
+ -4, -8, -12, -9, -6, -3, -7, -9, 0, 1, -1, 1, 11, -7, -7, -3, -3, -5, -3, -4, -1, -11, -10, -4, -4, -15,
+ -3, 6, -9, 2, -1, -8, -2, 1, -4, -5, 0, -6, -7, 7, -5, -3, -5, 0, -1, -3, -7, -7, -4, -2, -3, -15,
+ -1, -6, -7, -7, -5, -9, -5, -3, -7, -7, -6, -6, -7, -5, 8, -2, -3, -1, -3, -4, -5, -12, -12, -3, -4, -15,
+ -3, -2, -12, -2, 2, -11, -6, 1, -7, -6, -2, -4, -3, -3, -2, 8, -1, -4, -5, -4, -6, -11, -10, 6, -4, -15,
+ -6, -6, -7, -9, -8, -8, -8, -1, -5, -7, 1, -8, -3, -5, -3, -1, 8, -2, -5, -5, -7, -1, -9, -3, -5, -15,
+ 0, -1, -2, -3, -4, -6, -1, -5, -6, -7, -3, -7, -5, 0, -1, -4, -2, 6, 1, -2, -5, -4, -6, -4, -2, -15,
+ 0, -2, -7, -4, -5, -8, -5, -6, -2, -4, -2, -6, -3, -1, -3, -5, -5, 1, 7, -3, -2, -11, -6, -5, -3, -15,
+ -3, -4, -8, -5, -4, -7, -4, -4, -4, -5, -4, -5, -4, -3, -4, -4, -5, -2, -3, -4, -4, -9, -7, -4, -4, -15,
+ -2, -7, -5, -7, -6, -7, -5, -6, 2, 0, -8, -2, -1, -7, -5, -6, -7, -5, -2, -4, 7, -14, -6, -6, -4, -15,
+ -12, -9, -14, -13, -15, -4, -13, -6, -12, -9, -10, -5, -11, -7, -12, -11, -1, -4, -11, -9, -14, 13, -4, -13, -9, -15,
+ -7, -6, -3, -10, -8, 2, -12, -3, -5, -6, -8, -6, -10, -4, -12, -10, -9, -6, -6, -7, -6, -4, 10, -8, -7, -15,
+ -2, 1, -12, 2, 6, -12, -4, 0, -5, -6, -3, -6, -4, -2, -3, 6, -3, -4, -5, -4, -6, -13, -8, 6, -4, -15,
+ -3, -4, -8, -5, -4, -7, -4, -4, -4, -5, -4, -5, -4, -3, -4, -4, -5, -2, -3, -4, -4, -9, -7, -4, -4, -15,
+ -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -15, 1
};
return _data;
}
@@ -573,21 +562,20 @@ typedef Pam120_ ScoreSpecPam120;
* L -3 -4 -7 -5 -4 0 -5 -3 1 3 -4 5
* M -2 -4 -6 -4 -3 -1 -4 -4 1 2 0 3 8
* N -1 3 -5 2 1 -4 0 2 -2 -3 1 -4 -3 4
- * O -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -1
- * P 1 -2 -4 -3 -2 -5 -2 -1 -3 -3 -2 -3 -3 -2 -2 6
- * Q -1 0 -7 1 2 -6 -3 3 -3 -3 0 -2 -1 0 -1 0 6
- * R -3 -2 -4 -3 -3 -5 -4 1 -2 -3 2 -4 -1 -1 -2 -1 1 6
- * S 1 0 0 0 -1 -3 1 -2 -2 -3 -1 -4 -2 1 -1 1 -2 -1 3
- * T 1 0 -3 -1 -2 -4 -1 -3 0 -2 -1 -3 -1 0 -1 -1 -2 -2 2 4
- * U -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -2 -2 -1 -2 -1 -1 -2
- * V 0 -3 -3 -3 -3 -3 -2 -3 3 2 -4 1 1 -3 -1 -2 -3 -3 -2 0 -1 5
- * W -7 -6 -8 -8 -8 -1 -8 -3 -6 -5 -5 -3 -6 -4 -5 -7 -6 1 -2 -6 -5 -8 12
- * Y -4 -3 -1 -5 -5 4 -6 -1 -2 -2 -5 -2 -4 -2 -3 -6 -5 -5 -3 -3 -3 -3 -2 8
- * Z -1 2 -7 3 4 -6 -2 1 -3 -3 -1 -3 -2 0 -1 -1 4 -1 -1 -2 -1 -3 -7 -5 4
- * X -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -2 -2 -1 -2 -1 -1 -2 -1 -5 -3 -1 -2
- * * -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
+ * P 1 -2 -4 -3 -2 -5 -2 -1 -3 -3 -2 -3 -3 -2 6
+ * Q -1 0 -7 1 2 -6 -3 3 -3 -3 0 -2 -1 0 0 6
+ * R -3 -2 -4 -3 -3 -5 -4 1 -2 -3 2 -4 -1 -1 -1 1 6
+ * S 1 0 0 0 -1 -3 1 -2 -2 -3 -1 -4 -2 1 1 -2 -1 3
+ * T 1 0 -3 -1 -2 -4 -1 -3 0 -2 -1 -3 -1 0 -1 -2 -2 2 4
+ * U -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -2 -1 -2 -1 -1 -2
+ * V 0 -3 -3 -3 -3 -3 -2 -3 3 2 -4 1 1 -3 -2 -3 -3 -2 0 -1 5
+ * W -7 -6 -8 -8 -8 -1 -8 -3 -6 -5 -5 -3 -6 -4 -7 -6 1 -2 -6 -5 -8 12
+ * Y -4 -3 -1 -5 -5 4 -6 -1 -2 -2 -5 -2 -4 -2 -6 -5 -5 -3 -3 -3 -3 -2 8
+ * Z -1 2 -7 3 4 -6 -2 1 -3 -3 -1 -3 -2 0 -1 4 -1 -1 -2 -1 -3 -7 -5 4
+ * X -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -2 -1 -2 -1 -1 -2 -1 -5 -3 -1 -2
+ * * -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
*
- * A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
+ * A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
* @endcode
*/
@@ -612,33 +600,32 @@ struct ScoringMatrixData_<int, AminoAcid, ScoreSpecPam120> {
// Lowest score = -8, Highest score = 12
//
static int const _data[TAB_SIZE] = {
- 3, 0, -3, 0, 0, -4, 1, -3, -1, -2, -2, -3, -2, -1, -1, 1, -1, -3, 1, 1, -1, 0, -7, -4, -1, -1, -8,
- 0, 4, -6, 4, 3, -5, 0, 1, -3, -4, 0, -4, -4, 3, -1, -2, 0, -2, 0, 0, -1, -3, -6, -3, 2, -1, -8,
- -3, -6, 9, -7, -7, -6, -4, -4, -3, -5, -7, -7, -6, -5, -4, -4, -7, -4, 0, -3, -4, -3, -8, -1, -7, -4, -8,
- 0, 4, -7, 5, 3, -7, 0, 0, -3, -4, -1, -5, -4, 2, -2, -3, 1, -3, 0, -1, -2, -3, -8, -5, 3, -2, -8,
- 0, 3, -7, 3, 5, -7, -1, -1, -3, -4, -1, -4, -3, 1, -1, -2, 2, -3, -1, -2, -1, -3, -8, -5, 4, -1, -8,
- -4, -5, -6, -7, -7, 8, -5, -3, 0, 0, -7, 0, -1, -4, -3, -5, -6, -5, -3, -4, -3, -3, -1, 4, -6, -3, -8,
- 1, 0, -4, 0, -1, -5, 5, -4, -4, -5, -3, -5, -4, 0, -2, -2, -3, -4, 1, -1, -2, -2, -8, -6, -2, -2, -8,
- -3, 1, -4, 0, -1, -3, -4, 7, -4, -4, -2, -3, -4, 2, -2, -1, 3, 1, -2, -3, -2, -3, -3, -1, 1, -2, -8,
- -1, -3, -3, -3, -3, 0, -4, -4, 6, 4, -3, 1, 1, -2, -1, -3, -3, -2, -2, 0, -1, 3, -6, -2, -3, -1, -8,
- -2, -4, -5, -4, -4, 0, -5, -4, 4, 4, -4, 3, 2, -3, -2, -3, -3, -3, -3, -2, -2, 2, -5, -2, -3, -2, -8,
- -2, 0, -7, -1, -1, -7, -3, -2, -3, -4, 5, -4, 0, 1, -2, -2, 0, 2, -1, -1, -2, -4, -5, -5, -1, -2, -8,
- -3, -4, -7, -5, -4, 0, -5, -3, 1, 3, -4, 5, 3, -4, -2, -3, -2, -4, -4, -3, -2, 1, -3, -2, -3, -2, -8,
- -2, -4, -6, -4, -3, -1, -4, -4, 1, 2, 0, 3, 8, -3, -2, -3, -1, -1, -2, -1, -2, 1, -6, -4, -2, -2, -8,
- -1, 3, -5, 2, 1, -4, 0, 2, -2, -3, 1, -4, -3, 4, -1, -2, 0, -1, 1, 0, -1, -3, -4, -2, 0, -1, -8,
- -1, -1, -4, -2, -1, -3, -2, -2, -1, -2, -2, -2, -2, -1, -2, -2, -1, -2, -1, -1, -2, -1, -5, -3, -1, -2, -8,
- 1, -2, -4, -3, -2, -5, -2, -1, -3, -3, -2, -3, -3, -2, -2, 6, 0, -1, 1, -1, -2, -2, -7, -6, -1, -2, -8,
- -1, 0, -7, 1, 2, -6, -3, 3, -3, -3, 0, -2, -1, 0, -1, 0, 6, 1, -2, -2, -1, -3, -6, -5, 4, -1, -8,
- -3, -2, -4, -3, -3, -5, -4, 1, -2, -3, 2, -4, -1, -1, -2, -1, 1, 6, -1, -2, -2, -3, 1, -5, -1, -2, -8,
- 1, 0, 0, 0, -1, -3, 1, -2, -2, -3, -1, -4, -2, 1, -1, 1, -2, -1, 3, 2, -1, -2, -2, -3, -1, -1, -8,
- 1, 0, -3, -1, -2, -4, -1, -3, 0, -2, -1, -3, -1, 0, -1, -1, -2, -2, 2, 4, -1, 0, -6, -3, -2, -1, -8,
- -1, -1, -4, -2, -1, -3, -2, -2, -1, -2, -2, -2, -2, -1, -2, -2, -1, -2, -1, -1, -2, -1, -5, -3, -1, -2, -8,
- 0, -3, -3, -3, -3, -3, -2, -3, 3, 2, -4, 1, 1, -3, -1, -2, -3, -3, -2, 0, -1, 5, -8, -3, -3, -1, -8,
- -7, -6, -8, -8, -8, -1, -8, -3, -6, -5, -5, -3, -6, -4, -5, -7, -6, 1, -2, -6, -5, -8, 12, -2, -7, -5, -8,
- -4, -3, -1, -5, -5, 4, -6, -1, -2, -2, -5, -2, -4, -2, -3, -6, -5, -5, -3, -3, -3, -3, -2, 8, -5, -3, -8,
- -1, 2, -7, 3, 4, -6, -2, 1, -3, -3, -1, -3, -2, 0, -1, -1, 4, -1, -1, -2, -1, -3, -7, -5, 4, -1, -8,
- -1, -1, -4, -2, -1, -3, -2, -2, -1, -2, -2, -2, -2, -1, -2, -2, -1, -2, -1, -1, -2, -1, -5, -3, -1, -2, -8,
- -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1
+ 3, 0, -3, 0, 0, -4, 1, -3, -1, -2, -2, -3, -2, -1, 1, -1, -3, 1, 1, -1, 0, -7, -4, -1, -1, -8,
+ 0, 4, -6, 4, 3, -5, 0, 1, -3, -4, 0, -4, -4, 3, -2, 0, -2, 0, 0, -1, -3, -6, -3, 2, -1, -8,
+ -3, -6, 9, -7, -7, -6, -4, -4, -3, -5, -7, -7, -6, -5, -4, -7, -4, 0, -3, -4, -3, -8, -1, -7, -4, -8,
+ 0, 4, -7, 5, 3, -7, 0, 0, -3, -4, -1, -5, -4, 2, -3, 1, -3, 0, -1, -2, -3, -8, -5, 3, -2, -8,
+ 0, 3, -7, 3, 5, -7, -1, -1, -3, -4, -1, -4, -3, 1, -2, 2, -3, -1, -2, -1, -3, -8, -5, 4, -1, -8,
+ -4, -5, -6, -7, -7, 8, -5, -3, 0, 0, -7, 0, -1, -4, -5, -6, -5, -3, -4, -3, -3, -1, 4, -6, -3, -8,
+ 1, 0, -4, 0, -1, -5, 5, -4, -4, -5, -3, -5, -4, 0, -2, -3, -4, 1, -1, -2, -2, -8, -6, -2, -2, -8,
+ -3, 1, -4, 0, -1, -3, -4, 7, -4, -4, -2, -3, -4, 2, -1, 3, 1, -2, -3, -2, -3, -3, -1, 1, -2, -8,
+ -1, -3, -3, -3, -3, 0, -4, -4, 6, 4, -3, 1, 1, -2, -3, -3, -2, -2, 0, -1, 3, -6, -2, -3, -1, -8,
+ -2, -4, -5, -4, -4, 0, -5, -4, 4, 4, -4, 3, 2, -3, -3, -3, -3, -3, -2, -2, 2, -5, -2, -3, -2, -8,
+ -2, 0, -7, -1, -1, -7, -3, -2, -3, -4, 5, -4, 0, 1, -2, 0, 2, -1, -1, -2, -4, -5, -5, -1, -2, -8,
+ -3, -4, -7, -5, -4, 0, -5, -3, 1, 3, -4, 5, 3, -4, -3, -2, -4, -4, -3, -2, 1, -3, -2, -3, -2, -8,
+ -2, -4, -6, -4, -3, -1, -4, -4, 1, 2, 0, 3, 8, -3, -3, -1, -1, -2, -1, -2, 1, -6, -4, -2, -2, -8,
+ -1, 3, -5, 2, 1, -4, 0, 2, -2, -3, 1, -4, -3, 4, -2, 0, -1, 1, 0, -1, -3, -4, -2, 0, -1, -8,
+ 1, -2, -4, -3, -2, -5, -2, -1, -3, -3, -2, -3, -3, -2, 6, 0, -1, 1, -1, -2, -2, -7, -6, -1, -2, -8,
+ -1, 0, -7, 1, 2, -6, -3, 3, -3, -3, 0, -2, -1, 0, 0, 6, 1, -2, -2, -1, -3, -6, -5, 4, -1, -8,
+ -3, -2, -4, -3, -3, -5, -4, 1, -2, -3, 2, -4, -1, -1, -1, 1, 6, -1, -2, -2, -3, 1, -5, -1, -2, -8,
+ 1, 0, 0, 0, -1, -3, 1, -2, -2, -3, -1, -4, -2, 1, 1, -2, -1, 3, 2, -1, -2, -2, -3, -1, -1, -8,
+ 1, 0, -3, -1, -2, -4, -1, -3, 0, -2, -1, -3, -1, 0, -1, -2, -2, 2, 4, -1, 0, -6, -3, -2, -1, -8,
+ -1, -1, -4, -2, -1, -3, -2, -2, -1, -2, -2, -2, -2, -1, -2, -1, -2, -1, -1, -2, -1, -5, -3, -1, -2, -8,
+ 0, -3, -3, -3, -3, -3, -2, -3, 3, 2, -4, 1, 1, -3, -2, -3, -3, -2, 0, -1, 5, -8, -3, -3, -1, -8,
+ -7, -6, -8, -8, -8, -1, -8, -3, -6, -5, -5, -3, -6, -4, -7, -6, 1, -2, -6, -5, -8, 12, -2, -7, -5, -8,
+ -4, -3, -1, -5, -5, 4, -6, -1, -2, -2, -5, -2, -4, -2, -6, -5, -5, -3, -3, -3, -3, -2, 8, -5, -3, -8,
+ -1, 2, -7, 3, 4, -6, -2, 1, -3, -3, -1, -3, -2, 0, -1, 4, -1, -1, -2, -1, -3, -7, -5, 4, -1, -8,
+ -1, -1, -4, -2, -1, -3, -2, -2, -1, -2, -2, -2, -2, -1, -2, -1, -2, -1, -1, -2, -1, -5, -3, -1, -2, -8,
+ -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1
};
return _data;
}
@@ -669,21 +656,20 @@ typedef Pam200_ ScoreSpecPam200;
* L -2 -4 -7 -5 -4 2 -5 -3 2 5 -4 7
* M -2 -3 -6 -4 -3 0 -4 -3 2 3 1 4 8
* N 0 3 -5 3 2 -4 0 2 -2 -3 1 -4 -2 3
- * O 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1
- * P 1 -1 -4 -2 -1 -6 -1 -1 -3 -3 -2 -3 -3 -1 -1 7
- * Q -1 1 -7 2 3 -6 -2 3 -3 -3 1 -2 -1 1 -1 0 5
- * R -2 -1 -4 -2 -2 -5 -4 2 -2 -3 4 -4 -1 0 -1 0 1 7
- * S 1 1 0 0 0 -4 1 -1 -2 -3 0 -4 -2 1 0 1 -1 -1 2
- * T 1 0 -3 0 -1 -4 0 -2 0 -1 0 -2 -1 0 0 0 -1 -1 2 4
- * U 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1 -1 -1 -1 0 0 -1
- * V 0 -3 -2 -3 -2 -2 -2 -3 4 3 -3 2 2 -2 -1 -2 -3 -3 -1 0 -1 5
- * W -7 -6 -9 -8 -9 0 -8 -3 -6 -4 -4 -2 -5 -5 -5 -7 -6 2 -3 -6 -5 -8 18
- * Y -4 -4 0 -5 -5 7 -6 0 -2 -2 -5 -2 -3 -2 -3 -6 -5 -5 -3 -3 -3 -3 -1 11
- * Z 0 2 -7 3 4 -6 -1 2 -3 -3 0 -3 -2 1 -1 -1 4 0 -1 -1 -1 -2 -7 -5 4
- * X 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1 -1 -1 -1 0 0 -1 -1 -5 -3 -1 -1
- * * -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 1
+ * P 1 -1 -4 -2 -1 -6 -1 -1 -3 -3 -2 -3 -3 -1 7
+ * Q -1 1 -7 2 3 -6 -2 3 -3 -3 1 -2 -1 1 0 5
+ * R -2 -1 -4 -2 -2 -5 -4 2 -2 -3 4 -4 -1 0 0 1 7
+ * S 1 1 0 0 0 -4 1 -1 -2 -3 0 -4 -2 1 1 -1 -1 2
+ * T 1 0 -3 0 -1 -4 0 -2 0 -1 0 -2 -1 0 0 -1 -1 2 4
+ * U 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1 -1 -1 0 0 -1
+ * V 0 -3 -2 -3 -2 -2 -2 -3 4 3 -3 2 2 -2 -2 -3 -3 -1 0 -1 5
+ * W -7 -6 -9 -8 -9 0 -8 -3 -6 -4 -4 -2 -5 -5 -7 -6 2 -3 -6 -5 -8 18
+ * Y -4 -4 0 -5 -5 7 -6 0 -2 -2 -5 -2 -3 -2 -6 -5 -5 -3 -3 -3 -3 -1 11
+ * Z 0 2 -7 3 4 -6 -1 2 -3 -3 0 -3 -2 1 -1 4 0 -1 -1 -1 -2 -7 -5 4
+ * X 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1 -1 -1 0 0 -1 -1 -5 -3 -1 -1
+ * * -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 1
*
- * A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
+ * A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
* @endcode
*/
@@ -708,33 +694,32 @@ struct ScoringMatrixData_<int, AminoAcid, ScoreSpecPam200> {
// Lowest score = -9, Highest score = 18
//
static int const _data[TAB_SIZE] = {
- 3, 0, -3, 0, 0, -4, 1, -2, -1, -2, -2, -2, -2, 0, 0, 1, -1, -2, 1, 1, 0, 0, -7, -4, 0, 0, -9,
- 0, 3, -5, 4, 3, -6, 0, 1, -3, -4, 0, -4, -3, 3, -1, -1, 1, -1, 1, 0, -1, -3, -6, -4, 2, -1, -9,
- -3, -5, 12, -6, -7, -6, -4, -4, -3, -5, -7, -7, -6, -5, -4, -4, -7, -4, 0, -3, -4, -2, -9, 0, -7, -4, -9,
- 0, 4, -6, 5, 4, -7, 0, 0, -3, -4, 0, -5, -4, 3, -1, -2, 2, -2, 0, 0, -1, -3, -8, -5, 3, -1, -9,
- 0, 3, -7, 4, 5, -7, 0, 0, -3, -4, 0, -4, -3, 2, -1, -1, 3, -2, 0, -1, -1, -2, -9, -5, 4, -1, -9,
- -4, -6, -6, -7, -7, 10, -6, -2, 1, 2, -7, 2, 0, -4, -3, -6, -6, -5, -4, -4, -3, -2, 0, 7, -6, -3, -9,
- 1, 0, -4, 0, 0, -6, 6, -3, -3, -4, -2, -5, -4, 0, -1, -1, -2, -4, 1, 0, -1, -2, -8, -6, -1, -1, -9,
- -2, 1, -4, 0, 0, -2, -3, 8, -3, -3, -1, -3, -3, 2, -1, -1, 3, 2, -1, -2, -1, -3, -3, 0, 2, -1, -9,
- -1, -3, -3, -3, -3, 1, -3, -3, 6, 4, -2, 2, 2, -2, -1, -3, -3, -2, -2, 0, -1, 4, -6, -2, -3, -1, -9,
- -2, -4, -5, -4, -4, 2, -4, -3, 4, 5, -3, 5, 3, -3, -2, -3, -3, -3, -3, -1, -2, 3, -4, -2, -3, -2, -9,
- -2, 0, -7, 0, 0, -7, -2, -1, -2, -3, 6, -4, 1, 1, -1, -2, 1, 4, 0, 0, -1, -3, -4, -5, 0, -1, -9,
- -2, -4, -7, -5, -4, 2, -5, -3, 2, 5, -4, 7, 4, -4, -2, -3, -2, -4, -4, -2, -2, 2, -2, -2, -3, -2, -9,
- -2, -3, -6, -4, -3, 0, -4, -3, 2, 3, 1, 4, 8, -2, -1, -3, -1, -1, -2, -1, -1, 2, -5, -3, -2, -1, -9,
- 0, 3, -5, 3, 2, -4, 0, 2, -2, -3, 1, -4, -2, 3, 0, -1, 1, 0, 1, 0, 0, -2, -5, -2, 1, 0, -9,
- 0, -1, -4, -1, -1, -3, -1, -1, -1, -2, -1, -2, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1, -5, -3, -1, -1, -9,
- 1, -1, -4, -2, -1, -6, -1, -1, -3, -3, -2, -3, -3, -1, -1, 7, 0, 0, 1, 0, -1, -2, -7, -6, -1, -1, -9,
- -1, 1, -7, 2, 3, -6, -2, 3, -3, -3, 1, -2, -1, 1, -1, 0, 5, 1, -1, -1, -1, -3, -6, -5, 4, -1, -9,
- -2, -1, -4, -2, -2, -5, -4, 2, -2, -3, 4, -4, -1, 0, -1, 0, 1, 7, -1, -1, -1, -3, 2, -5, 0, -1, -9,
- 1, 1, 0, 0, 0, -4, 1, -1, -2, -3, 0, -4, -2, 1, 0, 1, -1, -1, 2, 2, 0, -1, -3, -3, -1, 0, -9,
- 1, 0, -3, 0, -1, -4, 0, -2, 0, -1, 0, -2, -1, 0, 0, 0, -1, -1, 2, 4, 0, 0, -6, -3, -1, 0, -9,
- 0, -1, -4, -1, -1, -3, -1, -1, -1, -2, -1, -2, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1, -5, -3, -1, -1, -9,
- 0, -3, -2, -3, -2, -2, -2, -3, 4, 3, -3, 2, 2, -2, -1, -2, -3, -3, -1, 0, -1, 5, -8, -3, -2, -1, -9,
- -7, -6, -9, -8, -9, 0, -8, -3, -6, -4, -4, -2, -5, -5, -5, -7, -6, 2, -3, -6, -5, -8, 18, -1, -7, -5, -9,
- -4, -4, 0, -5, -5, 7, -6, 0, -2, -2, -5, -2, -3, -2, -3, -6, -5, -5, -3, -3, -3, -3, -1, 11, -5, -3, -9,
- 0, 2, -7, 3, 4, -6, -1, 2, -3, -3, 0, -3, -2, 1, -1, -1, 4, 0, -1, -1, -1, -2, -7, -5, 4, -1, -9,
- 0, -1, -4, -1, -1, -3, -1, -1, -1, -2, -1, -2, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1, -5, -3, -1, -1, -9,
- -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 1
+ 3, 0, -3, 0, 0, -4, 1, -2, -1, -2, -2, -2, -2, 0, 1, -1, -2, 1, 1, 0, 0, -7, -4, 0, 0, -9,
+ 0, 3, -5, 4, 3, -6, 0, 1, -3, -4, 0, -4, -3, 3, -1, 1, -1, 1, 0, -1, -3, -6, -4, 2, -1, -9,
+ -3, -5, 12, -6, -7, -6, -4, -4, -3, -5, -7, -7, -6, -5, -4, -7, -4, 0, -3, -4, -2, -9, 0, -7, -4, -9,
+ 0, 4, -6, 5, 4, -7, 0, 0, -3, -4, 0, -5, -4, 3, -2, 2, -2, 0, 0, -1, -3, -8, -5, 3, -1, -9,
+ 0, 3, -7, 4, 5, -7, 0, 0, -3, -4, 0, -4, -3, 2, -1, 3, -2, 0, -1, -1, -2, -9, -5, 4, -1, -9,
+ -4, -6, -6, -7, -7, 10, -6, -2, 1, 2, -7, 2, 0, -4, -6, -6, -5, -4, -4, -3, -2, 0, 7, -6, -3, -9,
+ 1, 0, -4, 0, 0, -6, 6, -3, -3, -4, -2, -5, -4, 0, -1, -2, -4, 1, 0, -1, -2, -8, -6, -1, -1, -9,
+ -2, 1, -4, 0, 0, -2, -3, 8, -3, -3, -1, -3, -3, 2, -1, 3, 2, -1, -2, -1, -3, -3, 0, 2, -1, -9,
+ -1, -3, -3, -3, -3, 1, -3, -3, 6, 4, -2, 2, 2, -2, -3, -3, -2, -2, 0, -1, 4, -6, -2, -3, -1, -9,
+ -2, -4, -5, -4, -4, 2, -4, -3, 4, 5, -3, 5, 3, -3, -3, -3, -3, -3, -1, -2, 3, -4, -2, -3, -2, -9,
+ -2, 0, -7, 0, 0, -7, -2, -1, -2, -3, 6, -4, 1, 1, -2, 1, 4, 0, 0, -1, -3, -4, -5, 0, -1, -9,
+ -2, -4, -7, -5, -4, 2, -5, -3, 2, 5, -4, 7, 4, -4, -3, -2, -4, -4, -2, -2, 2, -2, -2, -3, -2, -9,
+ -2, -3, -6, -4, -3, 0, -4, -3, 2, 3, 1, 4, 8, -2, -3, -1, -1, -2, -1, -1, 2, -5, -3, -2, -1, -9,
+ 0, 3, -5, 3, 2, -4, 0, 2, -2, -3, 1, -4, -2, 3, -1, 1, 0, 1, 0, 0, -2, -5, -2, 1, 0, -9,
+ 1, -1, -4, -2, -1, -6, -1, -1, -3, -3, -2, -3, -3, -1, 7, 0, 0, 1, 0, -1, -2, -7, -6, -1, -1, -9,
+ -1, 1, -7, 2, 3, -6, -2, 3, -3, -3, 1, -2, -1, 1, 0, 5, 1, -1, -1, -1, -3, -6, -5, 4, -1, -9,
+ -2, -1, -4, -2, -2, -5, -4, 2, -2, -3, 4, -4, -1, 0, 0, 1, 7, -1, -1, -1, -3, 2, -5, 0, -1, -9,
+ 1, 1, 0, 0, 0, -4, 1, -1, -2, -3, 0, -4, -2, 1, 1, -1, -1, 2, 2, 0, -1, -3, -3, -1, 0, -9,
+ 1, 0, -3, 0, -1, -4, 0, -2, 0, -1, 0, -2, -1, 0, 0, -1, -1, 2, 4, 0, 0, -6, -3, -1, 0, -9,
+ 0, -1, -4, -1, -1, -3, -1, -1, -1, -2, -1, -2, -1, 0, -1, -1, -1, 0, 0, -1, -1, -5, -3, -1, -1, -9,
+ 0, -3, -2, -3, -2, -2, -2, -3, 4, 3, -3, 2, 2, -2, -2, -3, -3, -1, 0, -1, 5, -8, -3, -2, -1, -9,
+ -7, -6, -9, -8, -9, 0, -8, -3, -6, -4, -4, -2, -5, -5, -7, -6, 2, -3, -6, -5, -8, 18, -1, -7, -5, -9,
+ -4, -4, 0, -5, -5, 7, -6, 0, -2, -2, -5, -2, -3, -2, -6, -5, -5, -3, -3, -3, -3, -1, 11, -5, -3, -9,
+ 0, 2, -7, 3, 4, -6, -1, 2, -3, -3, 0, -3, -2, 1, -1, 4, 0, -1, -1, -1, -2, -7, -5, 4, -1, -9,
+ 0, -1, -4, -1, -1, -3, -1, -1, -1, -2, -1, -2, -1, 0, -1, -1, -1, 0, 0, -1, -1, -5, -3, -1, -1, -9,
+ -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 1
};
return _data;
}
@@ -765,21 +750,20 @@ typedef Pam250_ ScoreSpecPam250;
* L -2 -3 -6 -4 -3 2 -4 -2 2 4 -3 6
* M -1 -2 -5 -3 -2 0 -3 -2 2 3 0 4 6
* N 0 2 -4 2 1 -3 0 2 -2 -3 1 -3 -2 2
- * O 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1
- * P 1 -1 -3 -1 -1 -5 0 0 -2 -3 -1 -3 -2 0 -1 6
- * Q 0 1 -5 2 2 -5 -1 3 -2 -2 1 -2 -1 1 -1 0 4
- * R -2 -1 -4 -1 -1 -4 -3 2 -2 -3 3 -3 0 0 -1 0 1 6
- * S 1 0 0 0 0 -3 1 -1 -1 -2 0 -3 -2 1 0 1 -1 0 2
- * T 1 0 -2 0 0 -3 0 -1 0 -1 0 -2 -1 0 0 0 -1 -1 1 3
- * U 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 0 0 -1
- * V 0 -2 -2 -2 -2 -1 -1 -2 4 3 -2 2 2 -2 -1 -1 -2 -2 -1 0 -1 4
- * W -6 -5 -8 -7 -7 0 -7 -3 -5 -4 -3 -2 -4 -4 -4 -6 -5 2 -2 -5 -4 -6 17
- * Y -3 -3 0 -4 -4 7 -5 0 -1 -1 -4 -1 -2 -2 -2 -5 -4 -4 -3 -3 -2 -2 0 10
- * Z 0 2 -5 3 3 -5 0 2 -2 -3 0 -3 -2 1 -1 0 3 0 0 -1 -1 -2 -6 -4 3
- * X 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 0 0 -1 -1 -4 -2 -1 -1
- * * -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
+ * P 1 -1 -3 -1 -1 -5 0 0 -2 -3 -1 -3 -2 0 6
+ * Q 0 1 -5 2 2 -5 -1 3 -2 -2 1 -2 -1 1 0 4
+ * R -2 -1 -4 -1 -1 -4 -3 2 -2 -3 3 -3 0 0 0 1 6
+ * S 1 0 0 0 0 -3 1 -1 -1 -2 0 -3 -2 1 1 -1 0 2
+ * T 1 0 -2 0 0 -3 0 -1 0 -1 0 -2 -1 0 0 -1 -1 1 3
+ * U 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 0 0 -1
+ * V 0 -2 -2 -2 -2 -1 -1 -2 4 3 -2 2 2 -2 -1 -2 -2 -1 0 -1 4
+ * W -6 -5 -8 -7 -7 0 -7 -3 -5 -4 -3 -2 -4 -4 -6 -5 2 -2 -5 -4 -6 17
+ * Y -3 -3 0 -4 -4 7 -5 0 -1 -1 -4 -1 -2 -2 -5 -4 -4 -3 -3 -2 -2 0 10
+ * Z 0 2 -5 3 3 -5 0 2 -2 -3 0 -3 -2 1 0 3 0 0 -1 -1 -2 -6 -4 3
+ * X 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 0 0 -1 -1 -4 -2 -1 -1
+ * * -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
*
- * A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
+ * A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
* @endcode
*/
@@ -804,33 +788,32 @@ struct ScoringMatrixData_<int, AminoAcid, ScoreSpecPam250> {
// Lowest score = -8, Highest score = 17
//
static int const _data[TAB_SIZE] = {
- 2, 0, -2, 0, 0, -3, 1, -1, -1, -2, -1, -2, -1, 0, 0, 1, 0, -2, 1, 1, 0, 0, -6, -3, 0, 0, -8,
- 0, 3, -4, 3, 3, -4, 0, 1, -2, -3, 1, -3, -2, 2, -1, -1, 1, -1, 0, 0, -1, -2, -5, -3, 2, -1, -8,
- -2, -4, 12, -5, -5, -4, -3, -3, -2, -4, -5, -6, -5, -4, -3, -3, -5, -4, 0, -2, -3, -2, -8, 0, -5, -3, -8,
- 0, 3, -5, 4, 3, -6, 1, 1, -2, -3, 0, -4, -3, 2, -1, -1, 2, -1, 0, 0, -1, -2, -7, -4, 3, -1, -8,
- 0, 3, -5, 3, 4, -5, 0, 1, -2, -3, 0, -3, -2, 1, -1, -1, 2, -1, 0, 0, -1, -2, -7, -4, 3, -1, -8,
- -3, -4, -4, -6, -5, 9, -5, -2, 1, 2, -5, 2, 0, -3, -2, -5, -5, -4, -3, -3, -2, -1, 0, 7, -5, -2, -8,
- 1, 0, -3, 1, 0, -5, 5, -2, -3, -4, -2, -4, -3, 0, -1, 0, -1, -3, 1, 0, -1, -1, -7, -5, 0, -1, -8,
- -1, 1, -3, 1, 1, -2, -2, 6, -2, -2, 0, -2, -2, 2, -1, 0, 3, 2, -1, -1, -1, -2, -3, 0, 2, -1, -8,
- -1, -2, -2, -2, -2, 1, -3, -2, 5, 4, -2, 2, 2, -2, -1, -2, -2, -2, -1, 0, -1, 4, -5, -1, -2, -1, -8,
- -2, -3, -4, -3, -3, 2, -4, -2, 4, 4, -3, 4, 3, -3, -1, -3, -2, -3, -2, -1, -1, 3, -4, -1, -3, -1, -8,
- -1, 1, -5, 0, 0, -5, -2, 0, -2, -3, 5, -3, 0, 1, -1, -1, 1, 3, 0, 0, -1, -2, -3, -4, 0, -1, -8,
- -2, -3, -6, -4, -3, 2, -4, -2, 2, 4, -3, 6, 4, -3, -1, -3, -2, -3, -3, -2, -1, 2, -2, -1, -3, -1, -8,
- -1, -2, -5, -3, -2, 0, -3, -2, 2, 3, 0, 4, 6, -2, -1, -2, -1, 0, -2, -1, -1, 2, -4, -2, -2, -1, -8,
- 0, 2, -4, 2, 1, -3, 0, 2, -2, -3, 1, -3, -2, 2, 0, 0, 1, 0, 1, 0, 0, -2, -4, -2, 1, 0, -8,
- 0, -1, -3, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1, -4, -2, -1, -1, -8,
- 1, -1, -3, -1, -1, -5, 0, 0, -2, -3, -1, -3, -2, 0, -1, 6, 0, 0, 1, 0, -1, -1, -6, -5, 0, -1, -8,
- 0, 1, -5, 2, 2, -5, -1, 3, -2, -2, 1, -2, -1, 1, -1, 0, 4, 1, -1, -1, -1, -2, -5, -4, 3, -1, -8,
- -2, -1, -4, -1, -1, -4, -3, 2, -2, -3, 3, -3, 0, 0, -1, 0, 1, 6, 0, -1, -1, -2, 2, -4, 0, -1, -8,
- 1, 0, 0, 0, 0, -3, 1, -1, -1, -2, 0, -3, -2, 1, 0, 1, -1, 0, 2, 1, 0, -1, -2, -3, 0, 0, -8,
- 1, 0, -2, 0, 0, -3, 0, -1, 0, -1, 0, -2, -1, 0, 0, 0, -1, -1, 1, 3, 0, 0, -5, -3, -1, 0, -8,
- 0, -1, -3, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1, -4, -2, -1, -1, -8,
- 0, -2, -2, -2, -2, -1, -1, -2, 4, 3, -2, 2, 2, -2, -1, -1, -2, -2, -1, 0, -1, 4, -6, -2, -2, -1, -8,
- -6, -5, -8, -7, -7, 0, -7, -3, -5, -4, -3, -2, -4, -4, -4, -6, -5, 2, -2, -5, -4, -6, 17, 0, -6, -4, -8,
- -3, -3, 0, -4, -4, 7, -5, 0, -1, -1, -4, -1, -2, -2, -2, -5, -4, -4, -3, -3, -2, -2, 0, 10, -4, -2, -8,
- 0, 2, -5, 3, 3, -5, 0, 2, -2, -3, 0, -3, -2, 1, -1, 0, 3, 0, 0, -1, -1, -2, -6, -4, 3, -1, -8,
- 0, -1, -3, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1, -4, -2, -1, -1, -8,
- -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1,
+ 2, 0, -2, 0, 0, -3, 1, -1, -1, -2, -1, -2, -1, 0, 1, 0, -2, 1, 1, 0, 0, -6, -3, 0, 0, -8,
+ 0, 3, -4, 3, 3, -4, 0, 1, -2, -3, 1, -3, -2, 2, -1, 1, -1, 0, 0, -1, -2, -5, -3, 2, -1, -8,
+ -2, -4, 12, -5, -5, -4, -3, -3, -2, -4, -5, -6, -5, -4, -3, -5, -4, 0, -2, -3, -2, -8, 0, -5, -3, -8,
+ 0, 3, -5, 4, 3, -6, 1, 1, -2, -3, 0, -4, -3, 2, -1, 2, -1, 0, 0, -1, -2, -7, -4, 3, -1, -8,
+ 0, 3, -5, 3, 4, -5, 0, 1, -2, -3, 0, -3, -2, 1, -1, 2, -1, 0, 0, -1, -2, -7, -4, 3, -1, -8,
+ -3, -4, -4, -6, -5, 9, -5, -2, 1, 2, -5, 2, 0, -3, -5, -5, -4, -3, -3, -2, -1, 0, 7, -5, -2, -8,
+ 1, 0, -3, 1, 0, -5, 5, -2, -3, -4, -2, -4, -3, 0, 0, -1, -3, 1, 0, -1, -1, -7, -5, 0, -1, -8,
+ -1, 1, -3, 1, 1, -2, -2, 6, -2, -2, 0, -2, -2, 2, 0, 3, 2, -1, -1, -1, -2, -3, 0, 2, -1, -8,
+ -1, -2, -2, -2, -2, 1, -3, -2, 5, 4, -2, 2, 2, -2, -2, -2, -2, -1, 0, -1, 4, -5, -1, -2, -1, -8,
+ -2, -3, -4, -3, -3, 2, -4, -2, 4, 4, -3, 4, 3, -3, -3, -2, -3, -2, -1, -1, 3, -4, -1, -3, -1, -8,
+ -1, 1, -5, 0, 0, -5, -2, 0, -2, -3, 5, -3, 0, 1, -1, 1, 3, 0, 0, -1, -2, -3, -4, 0, -1, -8,
+ -2, -3, -6, -4, -3, 2, -4, -2, 2, 4, -3, 6, 4, -3, -3, -2, -3, -3, -2, -1, 2, -2, -1, -3, -1, -8,
+ -1, -2, -5, -3, -2, 0, -3, -2, 2, 3, 0, 4, 6, -2, -2, -1, 0, -2, -1, -1, 2, -4, -2, -2, -1, -8,
+ 0, 2, -4, 2, 1, -3, 0, 2, -2, -3, 1, -3, -2, 2, 0, 1, 0, 1, 0, 0, -2, -4, -2, 1, 0, -8,
+ 1, -1, -3, -1, -1, -5, 0, 0, -2, -3, -1, -3, -2, 0, 6, 0, 0, 1, 0, -1, -1, -6, -5, 0, -1, -8,
+ 0, 1, -5, 2, 2, -5, -1, 3, -2, -2, 1, -2, -1, 1, 0, 4, 1, -1, -1, -1, -2, -5, -4, 3, -1, -8,
+ -2, -1, -4, -1, -1, -4, -3, 2, -2, -3, 3, -3, 0, 0, 0, 1, 6, 0, -1, -1, -2, 2, -4, 0, -1, -8,
+ 1, 0, 0, 0, 0, -3, 1, -1, -1, -2, 0, -3, -2, 1, 1, -1, 0, 2, 1, 0, -1, -2, -3, 0, 0, -8,
+ 1, 0, -2, 0, 0, -3, 0, -1, 0, -1, 0, -2, -1, 0, 0, -1, -1, 1, 3, 0, 0, -5, -3, -1, 0, -8,
+ 0, -1, -3, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, 0, -1, -1, -4, -2, -1, -1, -8,
+ 0, -2, -2, -2, -2, -1, -1, -2, 4, 3, -2, 2, 2, -2, -1, -2, -2, -1, 0, -1, 4, -6, -2, -2, -1, -8,
+ -6, -5, -8, -7, -7, 0, -7, -3, -5, -4, -3, -2, -4, -4, -6, -5, 2, -2, -5, -4, -6, 17, 0, -6, -4, -8,
+ -3, -3, 0, -4, -4, 7, -5, 0, -1, -1, -4, -1, -2, -2, -5, -4, -4, -3, -3, -2, -2, 0, 10, -4, -2, -8,
+ 0, 2, -5, 3, 3, -5, 0, 2, -2, -3, 0, -3, -2, 1, 0, 3, 0, 0, -1, -1, -2, -6, -4, 3, -1, -8,
+ 0, -1, -3, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, 0, -1, -1, -4, -2, -1, -1, -8,
+ -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1,
};
return _data;
}
@@ -861,21 +844,20 @@ typedef Vtml200_ ScoreSpecVtml200;
* L -2 -5 -3 -5 -4 2 -5 -2 3 4 -3 5
* M -1 -3 -1 -4 -3 1 -4 -3 2 3 -2 3 6
* N -1 4 -2 3 1 -4 0 1 -4 -4 1 -4 -3 6
- * X -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -1
- * P 0 -1 -3 -1 -1 -4 -2 -2 -4 -4 -1 -3 -3 -2 -2 9
- * Q -1 1 -3 1 2 -3 -2 2 -3 -3 2 -2 -1 1 -1 -1 5
- * R -2 -1 -3 -2 -1 -4 -2 1 -3 -3 4 -3 -2 0 -1 -1 2 7
- * S 1 1 1 0 0 -3 0 0 -3 -3 0 -3 -2 1 -1 0 0 -1 4
- * T 1 0 0 -1 -1 -3 -2 -1 -1 -2 0 -2 -1 0 -1 -1 0 -1 2 4
- * U -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1
- * V 0 -3 1 -4 -3 -1 -4 -3 4 3 -3 2 2 -3 -1 -3 -2 -3 -2 0 -1 4
- * W -4 -5 -6 -6 -6 3 -5 -1 -2 -2 -4 -1 -3 -5 -2 -4 -6 -3 -4 -5 -2 -4 15
- * Y -3 -3 0 -4 -3 5 -5 3 -2 -2 -3 -1 -2 -2 -1 -5 -3 -2 -2 -3 -1 -2 4 9
- * Z -1 1 -4 2 4 -4 -2 1 -3 -3 2 -3 -2 1 -1 -1 4 0 0 -1 -1 -3 -6 -3 4
- * X -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1
- * * -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 1
+ * P 0 -1 -3 -1 -1 -4 -2 -2 -4 -4 -1 -3 -3 -2 9
+ * Q -1 1 -3 1 2 -3 -2 2 -3 -3 2 -2 -1 1 -1 5
+ * R -2 -1 -3 -2 -1 -4 -2 1 -3 -3 4 -3 -2 0 -1 2 7
+ * S 1 1 1 0 0 -3 0 0 -3 -3 0 -3 -2 1 0 0 -1 4
+ * T 1 0 0 -1 -1 -3 -2 -1 -1 -2 0 -2 -1 0 -1 0 -1 2 4
+ * U -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1
+ * V 0 -3 1 -4 -3 -1 -4 -3 4 3 -3 2 2 -3 -3 -2 -3 -2 0 -1 4
+ * W -4 -5 -6 -6 -6 3 -5 -1 -2 -2 -4 -1 -3 -5 -4 -6 -3 -4 -5 -2 -4 15
+ * Y -3 -3 0 -4 -3 5 -5 3 -2 -2 -3 -1 -2 -2 -5 -3 -2 -2 -3 -1 -2 4 9
+ * Z -1 1 -4 2 4 -4 -2 1 -3 -3 2 -3 -2 1 -1 4 0 0 -1 -1 -3 -6 -3 4
+ * X -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1
+ * * -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 1
*
- * A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
+ * A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
* @endcode
*/
@@ -917,33 +899,32 @@ struct ScoringMatrixData_<int, AminoAcid, ScoreSpecVtml200> {
// The latest version of this perl script can be downloaded at
// http://www.molgen.mpg.de/~muelle_t
static int const _data[TAB_SIZE] = {
- 4, -1, 1, -1, -1, -3, 0, -2, -1, -2, -1, -2, -1, -1, -1, 0, -1, -2, 1, 1, -1, 0, -4, -3, -1, -1, -6,
- -1, 4, -3, 5, 2, -5, 0, 1, -4, -5, 0, -5, -3, 4, -1, -1, 1, -1, 1, 0, -1, -3, -5, -3, 1, -1, -6,
- 1, -3, 12, -4, -4, -3, -2, -2, 0, -2, -4, -3, -1, -2, -1, -3, -3, -3, 1, 0, -1, 1, -6, 0, -4, -1, -6,
- -1, 5, -4, 6, 3, -6, -1, 0, -5, -5, 0, -5, -4, 3, -2, -1, 1, -2, 0, -1, -2, -4, -6, -4, 2, -2, -6,
- -1, 2, -4, 3, 5, -5, -1, 0, -4, -4, 1, -4, -3, 1, -1, -1, 2, -1, 0, -1, -1, -3, -6, -3, 4, -1, -6,
- -3, -5, -3, -6, -5, 8, -5, 0, 0, 1, -5, 2, 1, -4, -1, -4, -3, -4, -3, -3, -1, -1, 3, 5, -4, -1, -6,
- 0, 0, -2, -1, -1, -5, 8, -2, -6, -6, -2, -5, -4, 0, -2, -2, -2, -2, 0, -2, -2, -4, -5, -5, -2, -2, -6,
- -2, 1, -2, 0, 0, 0, -2, 8, -3, -3, 0, -2, -3, 1, 0, -2, 2, 1, 0, -1, 0, -3, -1, 3, 1, 0, -6,
- -1, -4, 0, -5, -4, 0, -6, -3, 5, 4, -3, 3, 2, -4, -1, -4, -3, -3, -3, -1, -1, 4, -2, -2, -3, -1, -6,
- -2, -5, -2, -5, -4, 1, -6, -3, 4, 4, -3, 4, 3, -4, -1, -4, -3, -3, -3, -2, -1, 3, -2, -2, -3, -1, -6,
- -1, 0, -4, 0, 1, -5, -2, 0, -3, -3, 5, -3, -2, 1, -1, -1, 2, 4, 0, 0, -1, -3, -4, -3, 2, -1, -6,
- -2, -5, -3, -5, -4, 2, -5, -2, 3, 4, -3, 5, 3, -4, -1, -3, -2, -3, -3, -2, -1, 2, -1, -1, -3, -1, -6,
- -1, -3, -1, -4, -3, 1, -4, -3, 2, 3, -2, 3, 6, -3, -1, -3, -1, -2, -2, -1, -1, 2, -3, -2, -2, -1, -6,
- -1, 4, -2, 3, 1, -4, 0, 1, -4, -4, 1, -4, -3, 6, -1, -2, 1, 0, 1, 0, -1, -3, -5, -2, 1, -1, -6,
- -1, -1, -1, -2, -1, -1, -2, 0, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -6,
- 0, -1, -3, -1, -1, -4, -2, -2, -4, -4, -1, -3, -3, -2, -2, 9, -1, -1, 0, -1, -2, -3, -4, -5, -1, -2, -6,
- -1, 1, -3, 1, 2, -3, -2, 2, -3, -3, 2, -2, -1, 1, -1, -1, 5, 2, 0, 0, -1, -2, -6, -3, 4, -1, -6,
- -2, -1, -3, -2, -1, -4, -2, 1, -3, -3, 4, -3, -2, 0, -1, -1, 2, 7, -1, -1, -1, -3, -3, -2, 0, -1, -6,
- 1, 1, 1, 0, 0, -3, 0, 0, -3, -3, 0, -3, -2, 1, -1, 0, 0, -1, 4, 2, -1, -2, -4, -2, 0, -1, -6,
- 1, 0, 0, -1, -1, -3, -2, -1, -1, -2, 0, -2, -1, 0, -1, -1, 0, -1, 2, 4, -1, 0, -5, -3, -1, -1, -6,
- -1, -1, -1, -2, -1, -1, -2, 0, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -6,
- 0, -3, 1, -4, -3, -1, -4, -3, 4, 3, -3, 2, 2, -3, -1, -3, -2, -3, -2, 0, -1, 4, -4, -2, -3, -1, -6,
- -4, -5, -6, -6, -6, 3, -5, -1, -2, -2, -4, -1, -3, -5, -2, -4, -6, -3, -4, -5, -2, -4, 15, 4, -6, -2, -6,
- -3, -3, 0, -4, -3, 5, -5, 3, -2, -2, -3, -1, -2, -2, -1, -5, -3, -2, -2, -3, -1, -2, 4, 9, -3, -1, -6,
- -1, 1, -4, 2, 4, -4, -2, 1, -3, -3, 2, -3, -2, 1, -1, -1, 4, 0, 0, -1, -1, -3, -6, -3, 4, -1, -6,
- -1, -1, -1, -2, -1, -1, -2, 0, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -6,
- -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, 1
+ 4, -1, 1, -1, -1, -3, 0, -2, -1, -2, -1, -2, -1, -1, 0, -1, -2, 1, 1, -1, 0, -4, -3, -1, -1, -6,
+ -1, 4, -3, 5, 2, -5, 0, 1, -4, -5, 0, -5, -3, 4, -1, 1, -1, 1, 0, -1, -3, -5, -3, 1, -1, -6,
+ 1, -3, 12, -4, -4, -3, -2, -2, 0, -2, -4, -3, -1, -2, -3, -3, -3, 1, 0, -1, 1, -6, 0, -4, -1, -6,
+ -1, 5, -4, 6, 3, -6, -1, 0, -5, -5, 0, -5, -4, 3, -1, 1, -2, 0, -1, -2, -4, -6, -4, 2, -2, -6,
+ -1, 2, -4, 3, 5, -5, -1, 0, -4, -4, 1, -4, -3, 1, -1, 2, -1, 0, -1, -1, -3, -6, -3, 4, -1, -6,
+ -3, -5, -3, -6, -5, 8, -5, 0, 0, 1, -5, 2, 1, -4, -4, -3, -4, -3, -3, -1, -1, 3, 5, -4, -1, -6,
+ 0, 0, -2, -1, -1, -5, 8, -2, -6, -6, -2, -5, -4, 0, -2, -2, -2, 0, -2, -2, -4, -5, -5, -2, -2, -6,
+ -2, 1, -2, 0, 0, 0, -2, 8, -3, -3, 0, -2, -3, 1, -2, 2, 1, 0, -1, 0, -3, -1, 3, 1, 0, -6,
+ -1, -4, 0, -5, -4, 0, -6, -3, 5, 4, -3, 3, 2, -4, -4, -3, -3, -3, -1, -1, 4, -2, -2, -3, -1, -6,
+ -2, -5, -2, -5, -4, 1, -6, -3, 4, 4, -3, 4, 3, -4, -4, -3, -3, -3, -2, -1, 3, -2, -2, -3, -1, -6,
+ -1, 0, -4, 0, 1, -5, -2, 0, -3, -3, 5, -3, -2, 1, -1, 2, 4, 0, 0, -1, -3, -4, -3, 2, -1, -6,
+ -2, -5, -3, -5, -4, 2, -5, -2, 3, 4, -3, 5, 3, -4, -3, -2, -3, -3, -2, -1, 2, -1, -1, -3, -1, -6,
+ -1, -3, -1, -4, -3, 1, -4, -3, 2, 3, -2, 3, 6, -3, -3, -1, -2, -2, -1, -1, 2, -3, -2, -2, -1, -6,
+ -1, 4, -2, 3, 1, -4, 0, 1, -4, -4, 1, -4, -3, 6, -2, 1, 0, 1, 0, -1, -3, -5, -2, 1, -1, -6,
+ 0, -1, -3, -1, -1, -4, -2, -2, -4, -4, -1, -3, -3, -2, 9, -1, -1, 0, -1, -2, -3, -4, -5, -1, -2, -6,
+ -1, 1, -3, 1, 2, -3, -2, 2, -3, -3, 2, -2, -1, 1, -1, 5, 2, 0, 0, -1, -2, -6, -3, 4, -1, -6,
+ -2, -1, -3, -2, -1, -4, -2, 1, -3, -3, 4, -3, -2, 0, -1, 2, 7, -1, -1, -1, -3, -3, -2, 0, -1, -6,
+ 1, 1, 1, 0, 0, -3, 0, 0, -3, -3, 0, -3, -2, 1, 0, 0, -1, 4, 2, -1, -2, -4, -2, 0, -1, -6,
+ 1, 0, 0, -1, -1, -3, -2, -1, -1, -2, 0, -2, -1, 0, -1, 0, -1, 2, 4, -1, 0, -5, -3, -1, -1, -6,
+ -1, -1, -1, -2, -1, -1, -2, 0, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -6,
+ 0, -3, 1, -4, -3, -1, -4, -3, 4, 3, -3, 2, 2, -3, -3, -2, -3, -2, 0, -1, 4, -4, -2, -3, -1, -6,
+ -4, -5, -6, -6, -6, 3, -5, -1, -2, -2, -4, -1, -3, -5, -4, -6, -3, -4, -5, -2, -4, 15, 4, -6, -2, -6,
+ -3, -3, 0, -4, -3, 5, -5, 3, -2, -2, -3, -1, -2, -2, -5, -3, -2, -2, -3, -1, -2, 4, 9, -3, -1, -6,
+ -1, 1, -4, 2, 4, -4, -2, 1, -3, -3, 2, -3, -2, 1, -1, 4, 0, 0, -1, -1, -3, -6, -3, 4, -1, -6,
+ -1, -1, -1, -2, -1, -1, -2, 0, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -6,
+ -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, 1
};
return _data;
}
diff --git a/include/seqan/score/score_simple.h b/include/seqan/score/score_simple.h
index d3cc49b..9ab5140 100644
--- a/include/seqan/score/score_simple.h
+++ b/include/seqan/score/score_simple.h
@@ -198,15 +198,6 @@ scoreGapExtend(Score<TValue, TSpec> const & me) {
return me.data_gap_extend;
}
-/*!
- * @fn SimpleScore#setScoreGapExtend
- * @brief Set gap extend score.
- *
- * @signature void setScoreGapExtend(score, value);
- *
- * @param[in,out] score The SimpleScore scoring scheme to set the gap extend value for.
- * @param[in] value The value to set the gap open score to.
- */
template <typename TValue, typename TSpec>
inline void
diff --git a/include/seqan/seeds/banded_chain_alignment_impl.h b/include/seqan/seeds/banded_chain_alignment_impl.h
index f9eabbb..a6e9e80 100644
--- a/include/seqan/seeds/banded_chain_alignment_impl.h
+++ b/include/seqan/seeds/banded_chain_alignment_impl.h
@@ -1087,7 +1087,6 @@ _finishBandedChain(TTraceSet & globalTraceSet,
upperDiagonal(band)+ 1, 1 - lowerDiagonal(band));
// TODO(rmaerker): Should we not set the nextGridOrigin to 0 as it is the case for the last rectangle? We want to compute the last full path.
// Compute the last anchor which crosses the end of the global grid.
- clear(localTraceSet);
TScoreValue score = _computeAlignment(localTraceSet, dpScoutState, infixH, infixV, scoreSchemeAnchor, band,
DPProfile_<BandedChainAlignment_<TFreeEndGaps, BandedChainFinalDPMatrix>, TGaps, TracebackOn<TTracebackConfig> >());
diff --git a/include/seqan/seeds/banded_chain_alignment_traceback.h b/include/seqan/seeds/banded_chain_alignment_traceback.h
index 7266d54..3b797df 100644
--- a/include/seqan/seeds/banded_chain_alignment_traceback.h
+++ b/include/seqan/seeds/banded_chain_alignment_traceback.h
@@ -125,12 +125,6 @@ inline void _glueTracebacks(TTraceSet & globalTraces, TTraceSet & localTraces)
bool isGlued = false;
- if (empty(globalTraces))
- {
- globalTraces = localTraces;
- return;
- }
-
TSize lengthGlobalTraces = length(globalTraces);
TSize oldNumOfGlobalTraces = lengthGlobalTraces;
String<unsigned> elementsToErase;
@@ -199,7 +193,6 @@ inline void _glueTracebacks(TTraceSet & globalTraces, TTraceSet & localTraces)
erase(globalTraces, elementsToErase[i-1]); // erase from behind to avoid accessing an element beyond the scope
}
SEQAN_ASSERT_EQ_MSG(isGlued, true, "Fatal error while trying to connect trace backs: No glue point available!");
- ignoreUnusedVariableWarning(isGlued);
}
// ----------------------------------------------------------------------------
diff --git a/include/seqan/seeds/seeds_global_chaining.h b/include/seqan/seeds/seeds_global_chaining.h
index 68cce42..7255703 100644
--- a/include/seqan/seeds/seeds_global_chaining.h
+++ b/include/seqan/seeds/seeds_global_chaining.h
@@ -82,11 +82,11 @@ typedef Tag<SparseChaining_> SparseChaining;
* @endlink is built and filled with @link SimpleSeed @endlink object. Then, a @link String @endlink of @link
* SimpleSeed @endlink objects is defined and filled using the <tt>chainSeedsGlobally()</tt> function.
*
- * @include demos/dox/seeds/seeds_chaining.cpp
+ * @include demos/seeds/seeds_chaining.cpp
*
* The output is as follows. Only the first and last seeds are written to <tt>std::cout</tt>.
*
- * @include demos/dox/seeds/seeds_chaining.cpp.stdout
+ * @include demos/seeds/seeds_chaining.cpp.stdout
*
* @section References
*
@@ -177,7 +177,7 @@ chainSeedsGlobally(
// *first* one that compares greater than the reference
// one. Searching for the this one and decrementing the
// result iterator gives the desired result.
- TIntermediateSolution referenceSolution(beginPositionV(seedK), maxValue<TSize>(), maxValue<unsigned>());
+ TIntermediateSolution referenceSolution(beginPositionV(seedK), 0, maxValue<unsigned>());
// std::cout << " intermediateSolutions.upper_bound(" << beginPositionV(seedK) << ")" << std::endl;
TIntermediateSolutionsIterator itJ = intermediateSolutions.upper_bound(referenceSolution);
if (itJ == intermediateSolutions.begin()) {
diff --git a/include/seqan/seeds/seeds_seed_base.h b/include/seqan/seeds/seeds_seed_base.h
index 267316b..93f53db 100644
--- a/include/seqan/seeds/seeds_seed_base.h
+++ b/include/seqan/seeds/seeds_seed_base.h
@@ -115,15 +115,15 @@ struct DefaultSeedConfig
* The following example shows the usage of three seed extension algorithms using the tags <tt>MaxExtend</tt>,
* <tt>UnGappedXDrop</tt>, and <tt>GappedXDrop</tt>.
*
- * @include demos/dox/seeds/seeds_extension.cpp
+ * @include demos/seeds/seeds_extension.cpp
*
* The output is as follows:
*
- * @include demos/dox/seeds/seeds_extension.cpp.stdout
+ * @include demos/seeds/seeds_extension.cpp.stdout
*
* Here is an example for global seed chaining:
*
- * @include demos/dox/seeds/seeds_chaining.cpp
+ * @include demos/seeds/seeds_chaining.cpp
*/
template <typename TSpec, typename TConfig = DefaultSeedConfig>
diff --git a/include/seqan/seeds/seeds_seed_set_base.h b/include/seqan/seeds/seeds_seed_set_base.h
index 2f3d4b8..63e7bde 100644
--- a/include/seqan/seeds/seeds_seed_set_base.h
+++ b/include/seqan/seeds/seeds_seed_set_base.h
@@ -125,7 +125,7 @@ class SeedSet;
*
* @section Examples
*
- * @include demos/dox/seeds/seeds_add_seed.cpp
+ * @include demos/seeds/seeds_add_seed.cpp
*
* The output is as follows:
*
diff --git a/include/seqan/seq_io/fai_index.h b/include/seqan/seq_io/fai_index.h
index e5ce007..14f240e 100644
--- a/include/seqan/seq_io/fai_index.h
+++ b/include/seqan/seq_io/fai_index.h
@@ -111,11 +111,11 @@ clear(FaiIndexEntry_ &entry)
*
* The following example demonstrates the usage of the FaiIndex class.
*
- * @include demos/dox/seq_io/fai_index_example.cpp
+ * @include demos/seq_io/fai_index_example.cpp
*
* The output is as follows:
*
- * @include demos/dox/seq_io/fai_index_example.cpp.stdout
+ * @include demos/seq_io/fai_index_example.cpp.stdout
*
* @fn FaiIndex::FaiIndex
* @brief Constructor.
diff --git a/include/seqan/seq_io/fasta_fastq.h b/include/seqan/seq_io/fasta_fastq.h
index 47f4432..dd07959 100644
--- a/include/seqan/seq_io/fasta_fastq.h
+++ b/include/seqan/seq_io/fasta_fastq.h
@@ -104,17 +104,17 @@ struct MagicHeader<Raw, T> :
template <typename T>
struct FileExtensions<Fasta, T>
{
- static char const * VALUE[6];
+ static char const * VALUE[2];
};
template <typename T>
-char const * FileExtensions<Fasta, T>::VALUE[6] =
+char const * FileExtensions<Fasta, T>::VALUE[2] =
{
".fa", // default output extension
- ".fasta",
- ".faa", // FASTA Amino Acid file
- ".ffn", // FASTA nucleotide coding regions file
- ".fna", // FASTA Nucleic Acid file
- ".frn"
+ ".fasta"
+// ".faa", // FASTA Amino Acid file
+// ".ffn", // FASTA nucleotide coding regions file
+// ".fna", // FASTA Nucleic Acid file
+// ".frn"
};
@@ -139,7 +139,8 @@ struct FileExtensions<Raw, T>
template <typename T>
char const * FileExtensions<Raw, T>::VALUE[1] =
{
- ".raw" // default output extension
+ ".txt" // default output extension
+// ".seq"
};
// ----------------------------------------------------------------------------
diff --git a/include/seqan/sequence/adapt_std_list.h b/include/seqan/sequence/adapt_std_list.h
index 638c62d..1b3680d 100644
--- a/include/seqan/sequence/adapt_std_list.h
+++ b/include/seqan/sequence/adapt_std_list.h
@@ -281,15 +281,6 @@ reserve(std::list<T> & /*list*/, TTag const & /*tag*/)
SEQAN_CHECKPOINT;
}
-template <typename T, typename TAlloc, typename TSize, typename TExpand>
-inline typename Size<std::list<T, TAlloc> >::Type
-resize(std::list<T, TAlloc> & me, TSize new_length, Tag<TExpand>)
-{
- SEQAN_CHECKPOINT;
- me.resize(new_length);
- return me.size();
-}
-
template <typename T>
inline typename Size<std::list<T> >::Type
capacity(std::list<T> const & list)
diff --git a/include/seqan/sequence/adapt_std_string.h b/include/seqan/sequence/adapt_std_string.h
index ebe037b..456f1cb 100644
--- a/include/seqan/sequence/adapt_std_string.h
+++ b/include/seqan/sequence/adapt_std_string.h
@@ -163,21 +163,6 @@ struct DefaultOverflowImplicit< std::basic_string<TChar, TCharTraits, TAlloc> >
template <typename TChar, typename TCharTraits, typename TAlloc>
struct IsSequence<std::basic_string<TChar, TCharTraits, TAlloc> > : True {};
-// ----------------------------------------------------------------------------
-// Metafunction Chunk
-// ----------------------------------------------------------------------------
-
-// Chunk interface for std::basic strings.
-template <typename TChar, typename TCharTraits, typename TAlloc, typename TSpec>
-struct Chunk<Iter<std::basic_string<TChar, TCharTraits, TAlloc>, AdaptorIterator<TChar*, TSpec> > >
-{
- typedef typename Chunk<std::basic_string<TChar, TCharTraits, TAlloc> >::Type Type;
-};
-
-template <typename TChar, typename TCharTraits, typename TAlloc, typename TSpec>
-struct Chunk<Iter<std::basic_string<TChar, TCharTraits, TAlloc> const, AdaptorIterator<TChar*, TSpec> > > :
- Chunk<Iter<std::basic_string<TChar, TCharTraits, TAlloc>, AdaptorIterator<TChar*, TSpec> > > {};
-
// ===========================================================================
// Functions
// ===========================================================================
diff --git a/include/seqan/sequence/segment_base.h b/include/seqan/sequence/segment_base.h
index 3cf74ac..e71eec0 100644
--- a/include/seqan/sequence/segment_base.h
+++ b/include/seqan/sequence/segment_base.h
@@ -165,7 +165,7 @@ namespace SEQAN_NAMESPACE_MAIN
*
* Segments support element access (reading and writing) as well as random access iteration.
*
- * @snippet demos/dox/sequence/segment.cpp basic operations
+ * @snippet demos/sequence/segment.cpp basic operations
*
* You can get the type of the infix/prefix/suffix of a sequence using @link SegmentableConcept#Infix @endlink,
* @link SegmentableConcept#Prefix @endlink, and @link SegmentableConcept#Suffix @endlink. These metafunctions will
@@ -176,12 +176,12 @@ namespace SEQAN_NAMESPACE_MAIN
* A suffix of a suffix remains a suffix, a prefix of a prefix remains a prefix. Any other combination leads to
* the resulting type being a infix segment.
*
- * @snippet demos/dox/sequence/segment.cpp metafunction examples
+ * @snippet demos/sequence/segment.cpp metafunction examples
*
* If you explicitely need a segment and keep the underlying sequence as it is, explicitely use the <tt>Segment</tt>
* template class.
*
- * @snippet demos/dox/sequence/segment.cpp explicit segment
+ * @snippet demos/sequence/segment.cpp explicit segment
*
* @aka substring
*/
diff --git a/include/seqan/sequence/segment_infix.h b/include/seqan/sequence/segment_infix.h
index ff84b8b..92fe18d 100644
--- a/include/seqan/sequence/segment_infix.h
+++ b/include/seqan/sequence/segment_infix.h
@@ -152,14 +152,6 @@ SEQAN_CHECKPOINT
assign(*this, source);
return *this;
}
-#if defined(SEQAN_CXX11_STANDARD) && (!defined(_MSC_VER) || _MSC_VER >= 1800)
- template<typename T> explicit operator T () const
- {
- T temp_copy;
- assign(temp_copy, *this);
- return temp_copy;
- }
-#endif
//____________________________________________________________________________
public:
diff --git a/include/seqan/sequence/segment_prefix.h b/include/seqan/sequence/segment_prefix.h
index e0f32c1..dfcbde7 100644
--- a/include/seqan/sequence/segment_prefix.h
+++ b/include/seqan/sequence/segment_prefix.h
@@ -119,15 +119,6 @@ public:
assign(*this, source);
return *this;
}
-
-#if defined(SEQAN_CXX11_STANDARD) && (!defined(_MSC_VER) || _MSC_VER >= 1800)
- template<typename T> explicit operator T () const
- {
- T temp_copy;
- assign(temp_copy, *this);
- return temp_copy;
- }
-#endif
//____________________________________________________________________________
public:
diff --git a/include/seqan/sequence/segment_suffix.h b/include/seqan/sequence/segment_suffix.h
index 2d2c9e4..24cde20 100644
--- a/include/seqan/sequence/segment_suffix.h
+++ b/include/seqan/sequence/segment_suffix.h
@@ -139,14 +139,6 @@ SEQAN_CHECKPOINT
assign(*this, source);
return *this;
}
-#if defined(SEQAN_CXX11_STANDARD) && (!defined(_MSC_VER) || _MSC_VER >= 1800)
- template<typename T> explicit operator T () const
- {
- T temp_copy;
- assign(temp_copy, *this);
- return temp_copy;
- }
-#endif
//____________________________________________________________________________
public:
diff --git a/include/seqan/sequence/string_array.h b/include/seqan/sequence/string_array.h
index a6adb5e..2d592cb 100644
--- a/include/seqan/sequence/string_array.h
+++ b/include/seqan/sequence/string_array.h
@@ -244,22 +244,6 @@ reserve(String<TValue, Array<CAPACITY> > & me,
return capacity(me);
}
-// ----------------------------------------------------------------------------
-// Function -*allocateStorage()
-// ----------------------------------------------------------------------------
-
-template <typename TValue, size_t CAPACITY, typename TSize>
-inline TValue *
-_allocateStorage(String<TValue, Array<CAPACITY> > & me, TSize /*capacity*/)
-{
- return me.data_begin;
-}
-
-template <typename TValue, size_t CAPACITY, typename TSize>
-inline void
-_deallocateStorage(String<TValue, Array<CAPACITY> > & /*me*/, TValue * /*ptr*/, TSize /*capacity*/)
-{
-}
// ----------------------------------------------------------------------------
// Function _setLength()
diff --git a/include/seqan/sequence/string_base.h b/include/seqan/sequence/string_base.h
index 4126d92..25ed5e0 100644
--- a/include/seqan/sequence/string_base.h
+++ b/include/seqan/sequence/string_base.h
@@ -160,11 +160,11 @@ struct Alloc {};
* are models for the @link StringConcept sequence concept @endlink but extend the sequence concept by allowing
* implicit conversion of other sequence into strings as long as the element conversion works:
*
- * @snippet demos/dox/sequence/string.cpp initializing strings
+ * @snippet demos/sequence/string.cpp initializing strings
*
* Aside from that, the usual operations (appending, insertion, removing, element access) are available as well.
*
- * @snippet demos/dox/sequence/string.cpp usual operations
+ * @snippet demos/sequence/string.cpp usual operations
*
* Strings have a size (the actual number of elements) and a capacity (the number of elements that memory has been
* allocated for). Note that clearing a string does not free the memory (as the STL, SeqAn assumes that strings will
@@ -172,7 +172,7 @@ struct Alloc {};
* force a re-allocation of the memory such that the string afterward uses the minimal amount of memory to accomodate
* all of its objects.
*
- * @snippet demos/dox/sequence/string.cpp clear and resize
+ * @snippet demos/sequence/string.cpp clear and resize
*
* @section Examples
*
@@ -181,11 +181,11 @@ struct Alloc {};
* String container with other than simple type values. See class @link Index @endlink example for efficiently finding
* the same pattern matches using an index.
*
- * @include demos/dox/sequence/string2.cpp
+ * @include demos/sequence/string2.cpp
*
* The output is as follows:
*
- * @include demos/dox/sequence/string2.cpp.stdout
+ * @include demos/sequence/string2.cpp.stdout
*
* @see StringSet
*/
diff --git a/include/seqan/sequence/string_set_base.h b/include/seqan/sequence/string_set_base.h
index 0ba3ade..cbd9174 100644
--- a/include/seqan/sequence/string_set_base.h
+++ b/include/seqan/sequence/string_set_base.h
@@ -74,11 +74,11 @@ struct Owner {};
*
* @section Examples
*
- * @include demos/dox/sequence/stringset.cpp
+ * @include demos/sequence/stringset.cpp
*
* The output is as follows:
*
- * @include demos/dox/sequence/stringset.cpp.stdout
+ * @include demos/sequence/stringset.cpp.stdout
*/
template <typename TString, typename TSpec = Owner<> >
@@ -1597,7 +1597,6 @@ concat(StringSet<TString, TSpec> const & constMe)
return me.concat;
}
-// this function is deprecated and the return value is very ungeneric, e.g. doesn't work if strings are std::string
template <typename TStrings, typename TDelim>
inline String<typename Value<typename Value<TStrings>::Type>::Type>
concat(TStrings const & strings, TDelim const & delimiter, bool ignoreEmptyStrings = false)
@@ -1775,53 +1774,58 @@ operator!=(StringSet<TLeftString, TLeftSpec> const & left,
}
// ----------------------------------------------------------------------------
-// Function write() (works on any container of container)
+// Function write(StringSet)
// ----------------------------------------------------------------------------
-template <typename TTarget, typename TSequences, typename TDelim>
-inline SEQAN_FUNC_ENABLE_IF(And<Is<ContainerConcept<TSequences> >,
- Is<ContainerConcept<typename Value<TSequences>::Type > > >, void)
-write(TTarget & target, TSequences const & seqs, TDelim const & delimiter)
+template <typename TTarget, typename TSequence, typename TSpec>
+inline void
+write(TTarget &target, StringSet<TSequence, TSpec> &seqs)
{
- typedef typename Iterator<TSequences const>::Type TSourceIt;
-
- if (SEQAN_UNLIKELY(empty(seqs)))
- return;
- for (TSourceIt it = begin(seqs, Standard()), itBack = (end(seqs, Standard()) - 1); it != itBack; ++it)
+ typedef typename Size<StringSet<TSequence, TSpec> >::Type TSize;
+ for (TSize i = 0; i < length(seqs); ++i)
{
- write(target, *it);
- write(target, delimiter);
+ write(target, seqs[i]);
+ writeValue(target, '\n');
}
- write(target, back(seqs)); // no delimiter after last
}
-template <typename TTarget, typename TSequences>
-inline SEQAN_FUNC_ENABLE_IF(And<Is<ContainerConcept<TSequences> >,
- Is<ContainerConcept<typename Value<TSequences>::Type > > >, void)
-write(TTarget & target, TSequences const & seqs)
+template <typename TTarget, typename TSequence, typename TSpec>
+inline void
+write(TTarget &target, StringSet<TSequence, TSpec> const &seqs)
{
- write(target, seqs, '\n');
+ typedef typename Size<StringSet<TSequence, TSpec> const>::Type TSize;
+ for (TSize i = 0; i < length(seqs); ++i)
+ {
+ write(target, seqs[i]);
+ writeValue(target, '\n');
+ }
}
-// ----------------------------------------------------------------------------
-// Function append() (works on any container of container)
-// ----------------------------------------------------------------------------
-
-template <typename TSequences1, typename TSequences2, typename TExpand >
-inline SEQAN_FUNC_ENABLE_IF(And<And<Is<ContainerConcept<TSequences1> >,
- Is<ContainerConcept<typename Value<TSequences1>::Type > > >,
- And<Is<ContainerConcept<TSequences2> >,
- Is<ContainerConcept<typename Value<TSequences2>::Type > > > >, void)
-append(TSequences1 & me, TSequences2 const & obj, Tag<TExpand>)
+template <typename TTarget, typename TSequence, typename TSpec>
+inline SEQAN_FUNC_ENABLE_IF(Is<ContainerConcept<TSequence> >, void)
+write(TTarget &target, String<TSequence, TSpec> &seqs)
{
- typedef typename Iterator<TSequences2 const>::Type TSourceIt;
+ typedef typename Size<String<TSequence, TSpec> >::Type TSize;
+ for (TSize i = 0; i < length(seqs); ++i)
+ {
+ write(target, seqs[i]);
+ writeValue(target, '\n');
+ }
+}
- typename Size<typename Value<TSequences1>::Type>::Type oldLength = length(me);
- resize(me, oldLength + length(obj), Tag<TExpand>());
- for (TSourceIt it = begin(obj, Standard()), itEnd = end(obj, Standard()); it != itEnd; ++it)
- assignValue(me, oldLength++, *it);
+template <typename TTarget, typename TSequence, typename TSpec>
+inline SEQAN_FUNC_ENABLE_IF(Is<ContainerConcept<TSequence> >, void)
+write(TTarget &target, String<TSequence, TSpec> const &seqs)
+{
+ typedef typename Size<String<TSequence, TSpec> const>::Type TSize;
+ for (TSize i = 0; i < length(seqs); ++i)
+ {
+ write(target, seqs[i]);
+ writeValue(target, '\n');
+ }
}
+
} // namespace seqan
#endif // #ifndef SEQAN_SEQUENCE_STRING_SET_BASE_H_
diff --git a/include/seqan/sequence/string_set_concat_direct.h b/include/seqan/sequence/string_set_concat_direct.h
index acdbc76..4eacc3f 100644
--- a/include/seqan/sequence/string_set_concat_direct.h
+++ b/include/seqan/sequence/string_set_concat_direct.h
@@ -40,8 +40,6 @@
#ifndef SEQAN_SEQUENCE_STRING_SET_CONCAT_DIRECT_H_
#define SEQAN_SEQUENCE_STRING_SET_CONCAT_DIRECT_H_
-#include <algorithm>
-
namespace seqan {
// ============================================================================
@@ -93,16 +91,6 @@ public:
}
template <typename TOtherString, typename TOtherSpec>
- StringSet(StringSet<TOtherString, Owner<ConcatDirect<TOtherSpec> > > & other) :
- limits(other.limits), concat(other.concat)
- {}
-
- template <typename TOtherString, typename TOtherSpec>
- StringSet(StringSet<TOtherString, Owner<ConcatDirect<TOtherSpec> > > const & other) :
- limits(other.limits), concat(other.concat)
- {}
-
- template <typename TOtherString, typename TOtherSpec>
StringSet(StringSet<TOtherString, TOtherSpec> &other)
{
_initStringSetLimits(*this);
@@ -346,51 +334,6 @@ template <typename TString, typename TSpec >
inline void _refreshStringSetLimits(StringSet<TString, Owner<ConcatDirect<TSpec> > > &) {}
// --------------------------------------------------------------------------
-// Function append()
-// --------------------------------------------------------------------------
-
-// more efficient overload for concat direct stringsets
-template <typename TString, typename TSpec, typename TStrings2, typename TExpand >
-inline SEQAN_FUNC_ENABLE_IF(And<Is<ContainerConcept<TStrings2> >,
- Is<ContainerConcept<typename Value<TStrings2>::Type > > >, void)
-append(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me,
- TStrings2 const & obj,
- Tag<TExpand>)
-{
- typedef typename Iterator<TStrings2 const>::Type TIt;
-
- reserve(me.concat, lengthSum(me) + lengthSum(obj), Tag<TExpand>());
- reserve(me.limits, length(me.limits) + length(obj), Tag<TExpand>());
-
- for (TIt it = begin(obj), itEnd = end(obj); it != itEnd; ++it)
- appendValue(me, *it, Tag<TExpand>());
-}
-
-// even more efficient if both stringsets are concatdirect
-template <typename TString1, typename TString2, typename TSpec1, typename TSpec2, typename TExpand>
-inline void
-append(StringSet<TString1, Owner<ConcatDirect<TSpec1> > > & me,
- StringSet<TString2, Owner<ConcatDirect<TSpec2> > > const & obj,
- Tag<TExpand>)
-{
- typedef typename Size<TString1>::Type TSize;
- typedef StringSet<TString1, Owner<ConcatDirect<TSpec1> > > TMe;
- typedef typename Iterator<typename StringSetLimits<TMe>::Type>::Type TIt;
-
- if (SEQAN_UNLIKELY(empty(obj)))
- return;
-
- TSize const oldLimLength = length(me.limits);
- TSize const oldLength = back(me.limits);
-
- append(me.concat, obj.concat, Tag<TExpand>());
- append(me.limits, suffix(obj.limits, 1), Tag<TExpand>());
-
- for (TIt it = begin(me.limits, Standard()) + oldLimLength, itEnd = end(me.limits, Standard()); it != itEnd; ++it)
- *it += oldLength;
-}
-
-// --------------------------------------------------------------------------
// Function appendValue()
// --------------------------------------------------------------------------
@@ -398,10 +341,10 @@ template <typename TString, typename TString2, typename TSpec, typename TExpand>
inline void appendValue(
StringSet<TString, Owner<ConcatDirect<TSpec> > > & me,
TString2 const & obj,
- Tag<TExpand>)
+ Tag<TExpand> tag)
{
- appendValue(me.limits, lengthSum(me) + length(obj), Tag<TExpand>());
- append(me.concat, obj, Tag<TExpand>());
+ appendValue(me.limits, lengthSum(me) + length(obj), tag);
+ append(me.concat, obj, tag);
}
// --------------------------------------------------------------------------
@@ -486,8 +429,7 @@ template <typename TString, typename TSpec, typename TSize, typename TExpand >
inline typename Size<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type
resize(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me, TSize new_size, Tag<TExpand> tag)
{
- typedef typename Size<typename StringSetLimits<StringSet<TString, Owner<ConcatDirect<TSpec> > > >::Type>::Type TS;
- if (static_cast<TS>(new_size) < length(me.limits))
+ if (new_size < length(me.limits))
{
resize(me.concat, me.limits[new_size]);
return resize(me.limits, new_size + 1, tag) - 1;
@@ -495,6 +437,7 @@ resize(StringSet<TString, Owner<ConcatDirect<TSpec> > > & me, TSize new_size, Ta
return resize(me.limits, new_size + 1, back(me.limits), tag) - 1;
}
+
// --------------------------------------------------------------------------
// Function reserve()
// --------------------------------------------------------------------------
diff --git a/include/seqan/sequence/string_set_owner.h b/include/seqan/sequence/string_set_owner.h
index e810dd0..164b27a 100644
--- a/include/seqan/sequence/string_set_owner.h
+++ b/include/seqan/sequence/string_set_owner.h
@@ -141,21 +141,6 @@ public:
// ============================================================================
// --------------------------------------------------------------------------
-// Function append()
-// --------------------------------------------------------------------------
-
-// better solution if both stringsets are Owner<Default>
-template <typename TString, typename TString2, typename TExpand >
-inline void append(StringSet<TString, Owner<Default> > & me,
- StringSet<TString2, Owner<Default> > const & obj,
- Tag<TExpand>)
-{
- // we rather invalidate limits here to allow to do modify appended strings:
- me.limitsValid = false;
- append(me.strings, obj.strings, Tag<TExpand>());
-}
-
-// --------------------------------------------------------------------------
// Function appendValue()
// --------------------------------------------------------------------------
diff --git a/include/seqan/statistics/statistics_markov_model.h b/include/seqan/statistics/statistics_markov_model.h
index 90e5585..fbb2989 100644
--- a/include/seqan/statistics/statistics_markov_model.h
+++ b/include/seqan/statistics/statistics_markov_model.h
@@ -63,7 +63,7 @@ namespace seqan {
*
* @subsection Build a MarkovModel from Background
*
- * @include demos/dox/statistics/build_markov_model.cpp
+ * @include demos/statistics/build_markov_model.cpp
*
* The following example shows how to build a MarkovModel over a Dna alphabet from a set of background sequence. After
* build the model, we compute the zscore.
@@ -78,7 +78,7 @@ namespace seqan {
* not have the background word set here but only the model, we compute the variance of a word using the function
* calculateVariance from the alignment_free module.
*
- * @include demos/dox/statistics/load_markov_model.cpp
+ * @include demos/statistics/load_markov_model.cpp
*
* @code{.console}
* variance: 0.267919
diff --git a/include/seqan/store/store_all.h b/include/seqan/store/store_all.h
index 71055e9..1d4f65b 100644
--- a/include/seqan/store/store_all.h
+++ b/include/seqan/store/store_all.h
@@ -108,7 +108,7 @@ struct FragmentStoreConfig
*
* Load read alignments and a reference genome and display the multiple alignment in a genomic range:
*
- * @include demos/dox/store/store_example.cpp
+ * @include demos/store/store_example.cpp
*
* @code{.console}
* ATTTAAGAAATTACAAAATATAGTTGAAAGCTCTAACAATAGACTAAACCAAGCAGAAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCTTATGAATTAA
@@ -2065,7 +2065,7 @@ void convertMatchesToGlobalAlignment(FragmentStore<TSpec, TConfig> &store, TScor
// }
if (rBegin < insPos)
{
- TReadGaps gaps(static_cast<TReadSeq>(store.readSeqStore[j->readId]), j->gaps);
+ TReadGaps gaps(store.readSeqStore[j->readId], j->gaps);
insertGap(gaps, insPos - rBegin);
} else
{
diff --git a/include/seqan/store/store_io.h b/include/seqan/store/store_io.h
index c8c0098..953fe2f 100644
--- a/include/seqan/store/store_io.h
+++ b/include/seqan/store/store_io.h
@@ -890,27 +890,6 @@ write(TTarget & target,
}
}
-// ----------------------------------------------------------------------------
-// Function writeRecords()
-// ----------------------------------------------------------------------------
-
-
-/*!
- * @fn FragmentStore#writeRecords
- * @brief Write all records to a file.
- *
- * @signature void writeRecords(bamFileOut, store);
- * @signature void writeRecords(gffFileOut, store);
- * @signature void writeRecords(ucscFileIn, store);
- *
- * @param[in,out] bamFileOut The @link BamFileOut @endlink object to write into.
- * @param[in,out] gffFileOut The @link GffFileOut @endlink object to write into.
- * @param[in,out] ucscFileOut The @link UcscFileOut @endlink object to write into.
- * @param[in] store The @link FragmentStore @endlink object.
- *
- * @throw IOError On low-level I/O errors.
- */
-
//////////////////////////////////////////////////////////////////////////////
/*!
@@ -935,28 +914,6 @@ bool writeContigs(FormattedFile<Fastq, Output, TSpec> & file, FragmentStore<TFSS
return true;
}
-// ----------------------------------------------------------------------------
-// Function readRecords()
-// ----------------------------------------------------------------------------
-
-/*!
- * @fn FragmentStore#readRecords
- * @brief Read all records from a file.
- *
- * @signature void readRecords(store, bamFileIn[, importFlags]);
- * @signature void readRecords(store, gffFileIn);
- * @signature void readRecords(store, ucscFileIn);
- *
- * @param[in,out] store The @link FragmentStore @endlink object to store the records into.
- * @param[in,out] bamFileIn The @link BamFileIn @endlink object to read from.
- * @param[in,out] gffFileIn The @link GffFileIn @endlink object to read from.
- * @param[in,out] ucscFileIn The @link UcscFileIn @endlink object to read from.
- * @param[in] importFlags The import flags.
- *
- * @throw IOError On low-level I/O errors.
- * @throw ParseError On high-level file format errors.
- */
-
//////////////////////////////////////////////////////////////////////////////
/*!
diff --git a/include/seqan/store/store_io_gff.h b/include/seqan/store/store_io_gff.h
index 0472b22..61f127f 100644
--- a/include/seqan/store/store_io_gff.h
+++ b/include/seqan/store/store_io_gff.h
@@ -61,8 +61,7 @@ struct IOContextGff_
CharString gtfGeneId;
CharString gtfGeneName;
- CharString gffTranscriptId; // For Gtf transcipt_id is stored in parentName
- CharString gtfTranscriptName;
+ CharString gtfTranscriptName; // transcipt_id is stored in parentName
TId annotationId;
TAnnotation annotation;
@@ -95,12 +94,11 @@ inline void clear(IOContextGff_<TFragmentStore, TSpec> & ctx)
//
// reads in one annotation line from a Gff file
-template <typename TFragmentStore, typename TSpec, typename TTagList>
+template <typename TFragmentStore, typename TSpec>
inline void
_readOneAnnotation(
IOContextGff_<TFragmentStore, TSpec> & ctx,
- GffRecord const & record,
- TagSelector<TTagList> const & format)
+ GffRecord const & record)
{
//IOREV _nodoc_ _hasCRef_
typedef typename TFragmentStore::TContigPos TContigPos;
@@ -143,25 +141,11 @@ _readOneAnnotation(
appendValue(ctx.values, ctx._value);
}
- if (ctx._key == "Parent" || ctx._key == "ParentID")
+ if (ctx._key == "Parent" || ctx._key == "ParentID" || ctx._key == "transcript_id")
{
ctx.parentKey = ctx._key;
ctx.parentName = ctx._value;
}
- else if (ctx._key == "transcript_id")
- {
- if (isEqual(format, Gtf()))
- {
- ctx.parentKey = ctx._key;
- ctx.parentName = ctx._value;
- }
- else
- {
- // According to the Gff3 specifications, transcript_id should NOT hold any special meaning,
- // only Id should be used in determining parent/child relations.
- ctx.gffTranscriptId = ctx._value;
- }
- }
else if (ctx._key == "transcript_name")
{
ctx.gtfTranscriptName = ctx._value;
@@ -314,10 +298,6 @@ _storeOneAnnotation(
_adjustParent(parent, ctx.annotation);
if (!empty(ctx.gtfTranscriptName))
annotationAssignValueByKey(fragStore, parent, "transcript_name", ctx.gtfTranscriptName);
-
- // Gff only.
- if (!empty(ctx.gffTranscriptId))
- annotationAssignValueByKey(fragStore, parent, "transcript_id", ctx.gffTranscriptId);
}
}
@@ -341,7 +321,7 @@ readRecords(FragmentStore<TSpec, TConfig> & fragStore,
while (!atEnd(gffFile))
{
readRecord(record, gffFile);
- _readOneAnnotation(ctx, record, format(gffFile));
+ _readOneAnnotation(ctx, record);
_storeOneAnnotation(fragStore, ctx);
}
_storeClearAnnoBackLinks(fragStore.annotationStore);
diff --git a/include/seqan/store/store_io_sam.h b/include/seqan/store/store_io_sam.h
index f57e483..2976dd9 100644
--- a/include/seqan/store/store_io_sam.h
+++ b/include/seqan/store/store_io_sam.h
@@ -338,6 +338,20 @@ readRecords(FragmentStore<TSpec, TConfig> & store,
}
}
+/*!
+ * @fn FragmentStore#readRecords
+ * @brief Read all records from one @link BamFileIn @endlink.
+ *
+ * @signature void readRecords(store, bamFileIn, importFlags);
+ *
+ * @param[in,out] store The @link FragmentStore @endlink object to store the records into.
+ * @param[in,out] bamFileIn The @link BamFileIn @endlink object to read from.
+ * @param[in] importFlags The import flags.
+ *
+ * @throw IOError On low-level I/O errors.
+ * @throw ParseError On high-level file format errors.
+ */
+
template <typename TFSSpec, typename TConfig, typename TDirection, typename TSpec>
inline void
readRecords(FragmentStore<TFSSpec, TConfig> & store,
@@ -1109,6 +1123,19 @@ writeRecords(FormattedFile<Bam, Output, TSpec> & bamFile,
writeAlignments(bamFile, store, functor);
}
+/*!
+ * @fn FragmentStore#writeRecords
+ * @brief Write all records to one @link BamFileOut @endlink.
+ *
+ * @signature void readRecords(bamFileOut, store);
+ *
+ * @param[in,out] bamFileOut The @link BamFileOut @endlink object to write into.
+ * @param[in] store The @link FragmentStore @endlink object.
+ *
+ * @throw IOError On low-level I/O errors.
+ * @throw ParseError On high-level file format errors.
+ */
+
template <typename TSpec, typename TFSSpec, typename TFSConfig>
inline void
writeRecords(FormattedFile<Bam, Output, TSpec> & bamFile,
diff --git a/include/seqan/store/store_io_ucsc.h b/include/seqan/store/store_io_ucsc.h
old mode 100644
new mode 100755
diff --git a/include/seqan/stream.h b/include/seqan/stream.h
index 2a199e9..c0215c5 100644
--- a/include/seqan/stream.h
+++ b/include/seqan/stream.h
@@ -88,19 +88,6 @@
#include <seqan/stream/file_stream.h>
#include <seqan/stream/stream_compressor.h>
#include <seqan/stream/buffered_stream.h>
-
-#if SEQAN_HAS_ZLIB
-#include <zlib.h>
-#include <seqan/stream/iostream_zutil.h>
-#include <seqan/stream/iostream_zip.h>
-#include <seqan/stream/iostream_zip_impl.h>
-#include <seqan/stream/iostream_bgzf.h>
-#endif
-
-#if SEQAN_HAS_BZIP2
-#include <seqan/stream/iostream_bzip2.h>
-#endif
-
#include <seqan/stream/virtual_stream.h>
#include <seqan/stream/formatted_file.h>
diff --git a/include/seqan/stream/buffered_stream.h b/include/seqan/stream/buffered_stream.h
index db96ba3..91156f0 100644
--- a/include/seqan/stream/buffered_stream.h
+++ b/include/seqan/stream/buffered_stream.h
@@ -48,6 +48,14 @@ template <typename TValue, typename TDirection, typename TTraits = std::char_tra
class BufferedStreamBuf;
// ============================================================================
+// Tags, Enums
+// ============================================================================
+
+// ============================================================================
+// Metafunctions
+// ============================================================================
+
+// ============================================================================
// Classes
// ============================================================================
@@ -55,6 +63,8 @@ class BufferedStreamBuf;
// Class BufferedStream
// ----------------------------------------------------------------------------
+// TODO(esiragusa): @extends BasicStream::Type
+
/*!
* @class BufferedStream
* @implements StreamConcept
@@ -67,7 +77,6 @@ class BufferedStreamBuf;
* @tparam TUnbufferedStream The type of the unbuffered @link StreamConcept stream @endlink to wrap.
* @tparam TDirection The stream direction, one of @link DirectionTags @endlink.
*/
-// TODO(esiragusa): @extends BasicStream::Type
template <typename TUnbufferedStream, typename TDirection>
class BufferedStream :
@@ -131,9 +140,11 @@ public:
};
// ----------------------------------------------------------------------------
-// Class BufferedStreamBuf
+// Class BufferedStream
// ----------------------------------------------------------------------------
+// TODO(holtgrew): Implementation detail, should thus be called BufferedStreamBuf_ or documented.
+
template <typename TValue, typename TDirection, typename TTraits>
class BufferedStreamBuf :
public std::basic_streambuf<TValue, TTraits>
@@ -221,14 +232,14 @@ protected:
numPutback * sizeof(TValue));
// read new characters
- std::streamsize numRead = streamBufPtr->sgetn(
+ size_t numRead = streamBufPtr->sgetn(
&buffer[putbackSize],
buffer.size() - putbackSize);
// reset buffer pointers
setg(&buffer[putbackSize - numPutback], // beginning of putback area
&buffer[putbackSize], // read position
- &buffer[putbackSize + static_cast<size_t>(numRead)]); // end position
+ &buffer[putbackSize + numRead]); // end position
if (numRead <= 0)
{
diff --git a/include/seqan/stream/file_stream.h b/include/seqan/stream/file_stream.h
index 6379077..2196d9d 100644
--- a/include/seqan/stream/file_stream.h
+++ b/include/seqan/stream/file_stream.h
@@ -982,8 +982,7 @@ struct FileStreamBuffer :
}
}
- // on libc++ TFilePos is different from TPosition for some of our MMapConfig'ed files
- TPosition _seek(typename TPageFrame::TFilePos pos, Input)
+ TPosition _seek(TPosition pos, Input)
{
if (readPage != NULL)
{
@@ -1013,7 +1012,7 @@ struct FileStreamBuffer :
return pos;
}
- TPosition _seek(typename TPageFrame::TFilePos pos, Output)
+ TPosition _seek(TPosition pos, Output)
{
if (writePage != NULL)
{
diff --git a/include/seqan/stream/formatted_file.h b/include/seqan/stream/formatted_file.h
index 71974f3..4cbe736 100644
--- a/include/seqan/stream/formatted_file.h
+++ b/include/seqan/stream/formatted_file.h
@@ -354,8 +354,9 @@ struct FormattedFile
_getCompressionExtensions(extensions,
TFileFormats(),
- CompressedFileTypesWithoutBgzf_(),
- false);
+ typename FileFormat<TStream>::Type(),
+// true);
+ IsSameType<TDirection, Output>::VALUE);
return extensions;
}
};
@@ -399,12 +400,6 @@ struct FormattedFileContext
typedef Nothing Type;
};
-template <typename TFormattedFile, typename TStorageSpec>
-struct FormattedFileContext<TFormattedFile const, TStorageSpec>
-{
- typedef typename FormattedFileContext<TFormattedFile, TStorageSpec>::Type const Type;
-};
-
// ----------------------------------------------------------------------------
// Metafunction StorageSwitch
// ----------------------------------------------------------------------------
@@ -641,9 +636,8 @@ inline bool _open(FormattedFile<TFileFormat, TDirection, TSpec> & file,
}
template <typename TFileFormat, typename TDirection, typename TSpec, typename TStream>
-inline SEQAN_FUNC_ENABLE_IF(Is<StreamConcept<TStream> >, bool)
-open(FormattedFile<TFileFormat, TDirection, TSpec> & file,
- TStream &stream)
+inline bool open(FormattedFile<TFileFormat, TDirection, TSpec> & file,
+ TStream &stream)
{
return _open(file, stream, _mapFileFormatToCompressionFormat(file.format), False());
}
@@ -748,8 +742,6 @@ inline bool close(FormattedFile<TFileFormat, TDirection, TSpec> & file)
*
* @param[in,out] file The FormattedFile to check.
* @return bool <tt>true</tt> in the case of success, <tt>false</tt> otherwise.
- *
- * @datarace Not thread safe.
*/
template <typename TFileFormat, typename TDirection, typename TSpec>
diff --git a/include/seqan/stream/iostream_bgzf.h b/include/seqan/stream/iostream_bgzf.h
deleted file mode 100644
index 2ce0719..0000000
--- a/include/seqan/stream/iostream_bgzf.h
+++ /dev/null
@@ -1,923 +0,0 @@
-// zipstream Library License:
-// --------------------------
-//
-// The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
-//
-// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution
-//
-//
-// Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003 (original zlib stream)
-// Author: David Weese, dave.weese at gmail.com, 2014 (extension to parallel block-wise compression in bgzf format)
-
-#ifndef INCLUDE_SEQAN_STREAM_IOSTREAM_BGZF_H_
-#define INCLUDE_SEQAN_STREAM_IOSTREAM_BGZF_H_
-
-namespace seqan {
-
-const unsigned BGZF_MAX_BLOCK_SIZE = 64 * 1024;
-const unsigned BGZF_BLOCK_HEADER_LENGTH = 18;
-const unsigned BGZF_BLOCK_FOOTER_LENGTH = 8;
-const unsigned ZLIB_BLOCK_OVERHEAD = 5; // 5 bytes block overhead (see 3.2.4. at http://www.gzip.org/zlib/rfc-deflate.html)
-
-// Reduce the maximal input size, such that the compressed data
-// always fits in one block even for level Z_NO_COMPRESSION.
-const unsigned BGZF_BLOCK_SIZE = BGZF_MAX_BLOCK_SIZE - BGZF_BLOCK_HEADER_LENGTH - BGZF_BLOCK_FOOTER_LENGTH - ZLIB_BLOCK_OVERHEAD;
-
-// ===========================================================================
-// Classes
-// ===========================================================================
-
-// --------------------------------------------------------------------------
-// Class basic_bgzf_streambuf
-// --------------------------------------------------------------------------
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bgzf_streambuf : public std::basic_streambuf<Elem, Tr>
-{
-public:
- typedef std::basic_ostream<Elem, Tr>& ostream_reference;
- typedef ElemA char_allocator_type;
- typedef ByteT byte_type;
- typedef ByteAT byte_allocator_type;
- typedef byte_type* byte_buffer_type;
- typedef typename Tr::char_type char_type;
- typedef typename Tr::int_type int_type;
-
- typedef ConcurrentQueue<size_t, Suspendable<Limit> > TJobQueue;
-
- struct OutputBuffer
- {
- char buffer[BGZF_MAX_BLOCK_SIZE];
- size_t size;
- };
-
- struct BufferWriter
- {
- ostream_reference ostream;
-
- BufferWriter(ostream_reference ostream) :
- ostream(ostream)
- {}
-
- bool operator() (OutputBuffer const & outputBuffer)
- {
- ostream.write(outputBuffer.buffer, outputBuffer.size);
- return ostream.good();
- }
- };
-
- struct CompressionJob
- {
- typedef std::vector<char_type, char_allocator_type> TBuffer;
-
- TBuffer buffer;
- size_t size;
- OutputBuffer *outputBuffer;
-
- CompressionJob() :
- buffer(BGZF_BLOCK_SIZE / sizeof(char_type), 0),
- size(0),
- outputBuffer(NULL)
- {}
- };
-
- // string of recycable jobs
- size_t numThreads;
- size_t numJobs;
- String<CompressionJob> jobs;
- TJobQueue jobQueue;
- TJobQueue idleQueue;
- Serializer<
- OutputBuffer,
- BufferWriter> serializer;
-
- size_t currentJobId;
- bool currentJobAvail;
-
-
- struct CompressionThread
- {
- basic_bgzf_streambuf *streamBuf;
- CompressionContext<BgzfFile> compressionCtx;
- size_t threadNum;
-
- void operator()()
- {
- ScopedReadLock<TJobQueue> readLock(streamBuf->jobQueue);
- ScopedWriteLock<TJobQueue> writeLock(streamBuf->idleQueue);
-
- // wait for a new job to become available
- bool success = true;
- while (success)
- {
- size_t jobId = -1;
- if (!popFront(jobId, streamBuf->jobQueue))
- return;
-
- CompressionJob &job = streamBuf->jobs[jobId];
-
- // compress block with zlib
- job.outputBuffer->size = _compressBlock(
- job.outputBuffer->buffer, sizeof(job.outputBuffer->buffer),
- &job.buffer[0], job.size, compressionCtx);
-
- success = releaseValue(streamBuf->serializer, job.outputBuffer);
- appendValue(streamBuf->idleQueue, jobId);
- }
- }
- };
-
- // array of worker threads
- Thread<CompressionThread> *threads;
-
- basic_bgzf_streambuf(ostream_reference ostream_,
- size_t numThreads = 16,
- size_t jobsPerThread = 8) :
- numThreads(numThreads),
- numJobs(numThreads * jobsPerThread),
- jobQueue(numJobs),
- idleQueue(numJobs),
- serializer(ostream_, numThreads * jobsPerThread)
- {
- resize(jobs, numJobs, Exact());
- currentJobId = 0;
-
- lockWriting(jobQueue);
- lockReading(idleQueue);
- setReaderWriterCount(jobQueue, numThreads, 1);
- setReaderWriterCount(idleQueue, 1, numThreads);
-
- for (unsigned i = 0; i < numJobs; ++i)
- {
- bool success = appendValue(idleQueue, i);
- ignoreUnusedVariableWarning(success);
- SEQAN_ASSERT(success);
- }
-
- threads = new Thread<CompressionThread>[numThreads];
- for (unsigned i = 0; i < numThreads; ++i)
- {
- threads[i].worker.streamBuf = this;
- threads[i].worker.threadNum = i;
- run(threads[i]);
- }
-
- currentJobAvail = popFront(currentJobId, idleQueue);
- SEQAN_ASSERT(currentJobAvail);
-
- CompressionJob &job = jobs[currentJobId];
- job.outputBuffer = aquireValue(serializer);
- this->setp(&job.buffer[0], &job.buffer[0] + (job.buffer.size() - 1));
- }
-
- ~basic_bgzf_streambuf()
- {
- // the buffer is now (after addFooter()) and flush will append the empty EOF marker
- flush(true);
-
- unlockWriting(jobQueue);
- unlockReading(idleQueue);
-
- for (unsigned i = 0; i < numThreads; ++i)
- waitFor(threads[i]);
- delete[] threads;
- }
-
- bool compressBuffer(size_t size)
- {
- // submit current job
- if (currentJobAvail)
- {
- jobs[currentJobId].size = size;
- appendValue(jobQueue, currentJobId);
- }
-
- // recycle existing idle job
- if (!(currentJobAvail = popFront(currentJobId, idleQueue)))
- return false;
-
- jobs[currentJobId].outputBuffer = aquireValue(serializer);
-
- return serializer;
- }
-
- int_type overflow(int_type c)
- {
- int w = static_cast<int>(this->pptr() - this->pbase());
- if (c != EOF)
- {
- *this->pptr() = c;
- ++w;
- }
- if (compressBuffer(w))
- {
- CompressionJob &job = jobs[currentJobId];
- this->setp(&job.buffer[0], &job.buffer[0] + (job.buffer.size() - 1));
- return c;
- }
- else
- {
- return EOF;
- }
- }
-
- std::streamsize flush(bool flushEmptyBuffer = false)
- {
- int w = static_cast<int>(this->pptr() - this->pbase());
- if ((w != 0 || flushEmptyBuffer) && compressBuffer(w))
- {
- CompressionJob &job = jobs[currentJobId];
- this->setp(&job.buffer[0], &job.buffer[0] + (job.buffer.size() - 1));
- }
- else
- {
- w = 0;
- }
-
- // wait for running compressor threads
- waitForMinSize(idleQueue, numJobs - 1);
-
- serializer.worker.ostream.flush();
- return w;
- }
-
- int sync()
- {
- if (this->pptr() != this->pbase())
- {
- int c = overflow(EOF);
- if (c == EOF)
- return -1;
- }
- return 0;
- }
-
- void addFooter()
- {
- // we flush the filled buffer here, so that an empty (EOF) buffer is flushed in the d'tor
- if (this->pptr() != this->pbase())
- overflow(EOF);
- }
-
- // returns a reference to the output stream
- ostream_reference get_ostream() const { return serializer.worker.ostream; };
-};
-
-// --------------------------------------------------------------------------
-// Class basic_unbgzf_streambuf
-// --------------------------------------------------------------------------
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_unbgzf_streambuf :
- public std::basic_streambuf<Elem, Tr>
-{
-public:
- typedef std::basic_istream<Elem, Tr>& istream_reference;
- typedef ElemA char_allocator_type;
- typedef ByteT byte_type;
- typedef ByteAT byte_allocator_type;
- typedef byte_type* byte_buffer_type;
- typedef typename Tr::char_type char_type;
- typedef typename Tr::int_type int_type;
- typedef typename Tr::off_type off_type;
- typedef typename Tr::pos_type pos_type;
-
- typedef std::vector<char_type, char_allocator_type> TBuffer;
- typedef ConcurrentQueue<int, Suspendable<Limit> > TJobQueue;
-
- static const size_t MAX_PUTBACK = 4;
-
- struct Serializer
- {
- istream_reference istream;
- Mutex lock;
- IOError *error;
- off_type fileOfs;
-
- Serializer(istream_reference istream) :
- istream(istream),
- lock(false),
- error(NULL),
- fileOfs(0u)
- {}
-
- ~Serializer()
- {
- delete error;
- }
- };
-
- Serializer serializer;
-
- struct DecompressionJob
- {
- typedef std::vector<byte_type, byte_allocator_type> TInputBuffer;
-
- TInputBuffer inputBuffer;
- TBuffer buffer;
- off_type fileOfs;
- int size;
- unsigned compressedSize;
-
- CriticalSection cs;
- Condition readyEvent;
- bool ready;
-
- DecompressionJob() :
- inputBuffer(BGZF_MAX_BLOCK_SIZE, 0),
- buffer(MAX_PUTBACK + BGZF_MAX_BLOCK_SIZE / sizeof(char_type), 0),
- fileOfs(),
- size(0),
- readyEvent(cs),
- ready(true)
- {}
-
- DecompressionJob(DecompressionJob const &other) :
- inputBuffer(other.inputBuffer),
- buffer(other.buffer),
- fileOfs(other.fileOfs),
- size(other.size),
- readyEvent(cs),
- ready(other.ready)
- {}
- };
-
- // string of recycable jobs
- size_t numThreads;
- size_t numJobs;
- String<DecompressionJob> jobs;
- TJobQueue runningQueue;
- TJobQueue todoQueue;
- int currentJobId;
-
- struct DecompressionThread
- {
- basic_unbgzf_streambuf *streamBuf;
- CompressionContext<BgzfFile> compressionCtx;
-
- void operator()()
- {
- ScopedReadLock<TJobQueue> readLock(streamBuf->todoQueue);
- ScopedWriteLock<TJobQueue> writeLock(streamBuf->runningQueue);
-
- // wait for a new job to become available
- while (true)
- {
- int jobId = -1;
- if (!popFront(jobId, streamBuf->todoQueue))
- return;
-
- DecompressionJob &job = streamBuf->jobs[jobId];
- size_t tailLen = 0;
-
- // typically the idle queue contains only ready jobs
- // however, if seek() fast forwards running jobs into the todoQueue
- // the caller defers the task of waiting to the decompression threads
- if (!job.ready)
- {
- ScopedLock<CriticalSection> lock(job.cs);
- if (!job.ready)
- {
- waitFor(job.readyEvent);
- job.ready = true;
- }
- }
-
- {
- ScopedLock<Mutex> scopedLock(streamBuf->serializer.lock);
-
- if (streamBuf->serializer.error != NULL)
- return;
-
- // remember start offset (for tellg later)
- job.fileOfs = streamBuf->serializer.fileOfs;
- job.size = -1;
- job.compressedSize = 0;
-
- // only load if not at EOF
- if (job.fileOfs != -1)
- {
- // read header
- streamBuf->serializer.istream.read(
- (char*)&job.inputBuffer[0],
- BGZF_BLOCK_HEADER_LENGTH);
-
- if (!streamBuf->serializer.istream.good())
- {
- streamBuf->serializer.fileOfs = -1;
- if (streamBuf->serializer.istream.eof())
- goto eofSkip;
- streamBuf->serializer.error = new IOError("Stream read error.");
- return;
- }
-
- // check header
- if (!_bgzfCheckHeader(&job.inputBuffer[0]))
- {
- streamBuf->serializer.fileOfs = -1;
- streamBuf->serializer.error = new IOError("Invalid BGZF block header.");
- return;
- }
-
- // extract length of compressed data
- tailLen = _bgzfUnpack16(&job.inputBuffer[0] + 16) + 1u - BGZF_BLOCK_HEADER_LENGTH;
-
- // read compressed data and tail
- streamBuf->serializer.istream.read(
- (char*)&job.inputBuffer[0] + BGZF_BLOCK_HEADER_LENGTH,
- tailLen);
-
- if (!streamBuf->serializer.istream.good())
- {
- streamBuf->serializer.fileOfs = -1;
- if (streamBuf->serializer.istream.eof())
- goto eofSkip;
- streamBuf->serializer.error = new IOError("Stream read error.");
- return;
- }
-
- job.compressedSize = BGZF_BLOCK_HEADER_LENGTH + tailLen;
- streamBuf->serializer.fileOfs += job.compressedSize;
- job.ready = false;
-
- eofSkip:
- streamBuf->serializer.istream.clear(
- streamBuf->serializer.istream.rdstate() & ~std::ios_base::failbit);
- }
-
- if (!appendValue(streamBuf->runningQueue, jobId))
- {
- // signal that job is ready
- {
- ScopedLock<CriticalSection> lock(job.cs);
- job.ready = true;
- signal(job.readyEvent);
- }
- return;
- }
- }
-
- if (!job.ready)
- {
- // decompress block
- job.size = _decompressBlock(
- &job.buffer[0] + MAX_PUTBACK, capacity(job.buffer),
- &job.inputBuffer[0], job.compressedSize, compressionCtx);
-
- // signal that job is ready
- {
- ScopedLock<CriticalSection> lock(job.cs);
- job.ready = true;
- signal(job.readyEvent);
- }
- }
- }
- }
- };
-
- // array of worker threads
- Thread<DecompressionThread> *threads;
- TBuffer putbackBuffer;
-
- basic_unbgzf_streambuf(istream_reference istream_,
- size_t numThreads = 16,
- size_t jobsPerThread = 8) :
- serializer(istream_),
- numThreads(numThreads),
- numJobs(numThreads * jobsPerThread),
- runningQueue(numJobs),
- todoQueue(numJobs),
- putbackBuffer(MAX_PUTBACK)
- {
- resize(jobs, numJobs, Exact());
- currentJobId = -1;
-
- lockReading(runningQueue);
- lockWriting(todoQueue);
- setReaderWriterCount(runningQueue, 1, numThreads);
- setReaderWriterCount(todoQueue, numThreads, 1);
-
- for (unsigned i = 0; i < numJobs; ++i)
- {
- bool success = appendValue(todoQueue, i);
- ignoreUnusedVariableWarning(success);
- SEQAN_ASSERT(success);
- }
-
- threads = new Thread<DecompressionThread>[numThreads];
- for (unsigned i = 0; i < numThreads; ++i)
- {
- threads[i].worker.streamBuf = this;
- run(threads[i]);
- }
- }
-
- ~basic_unbgzf_streambuf()
- {
- unlockWriting(todoQueue);
- unlockReading(runningQueue);
-
- for (unsigned i = 0; i < numThreads; ++i)
- waitFor(threads[i]);
- delete[] threads;
- }
-
- int_type underflow()
- {
- // no need to use the next buffer?
- if (this->gptr() && this->gptr() < this->egptr())
- return Tr::to_int_type(*this->gptr());
-
- size_t putback = this->gptr() - this->eback();
- if (putback > MAX_PUTBACK)
- putback = MAX_PUTBACK;
-
- // save at most MAX_PUTBACK characters from previous page to putback buffer
- if (putback != 0)
- std::copy(
- this->gptr() - putback,
- this->gptr(),
- &putbackBuffer[0]);
-
- if (currentJobId >= 0)
- appendValue(todoQueue, currentJobId);
-
- while (true)
- {
- if (!popFront(currentJobId, runningQueue))
- {
- currentJobId = -1;
- SEQAN_ASSERT(serializer.error != NULL);
- if (serializer.error != NULL)
- throw *serializer.error;
- return EOF;
- }
-
- DecompressionJob &job = jobs[currentJobId];
-
- // restore putback buffer
- this->setp(&job.buffer[0], &job.buffer[0] + (job.buffer.size() - 1));
- if (putback != 0)
- std::copy(
- &putbackBuffer[0],
- &putbackBuffer[0] + putback,
- &job.buffer[0] + (MAX_PUTBACK - putback));
-
- // wait for the end of decompression
- {
- ScopedLock<CriticalSection> lock(job.cs);
- if (!job.ready)
- waitFor(job.readyEvent);
- }
-
- size_t size = (job.size != -1)? job.size : 0;
-
- // reset buffer pointers
- this->setg(
- &job.buffer[0] + (MAX_PUTBACK - putback), // beginning of putback area
- &job.buffer[0] + MAX_PUTBACK, // read position
- &job.buffer[0] + (MAX_PUTBACK + size)); // end of buffer
-
- if (job.size == -1)
- return EOF;
- else if (job.size > 0)
- return Tr::to_int_type(*this->gptr()); // return next character
- }
- }
-
- pos_type seekoff(off_type ofs, std::ios_base::seekdir dir, std::ios_base::openmode openMode)
- {
- if ((openMode & (std::ios_base::in | std::ios_base::out)) == std::ios_base::in)
- {
- if (dir == std::ios_base::cur && ofs >= 0)
- {
- // forward delta seek
- while (currentJobId < 0 || this->egptr() - this->gptr() < ofs)
- {
- ofs -= this->egptr() - this->gptr();
- if (this->underflow() == EOF)
- break;
- }
-
- if (currentJobId >= 0 && ofs <= this->egptr() - this->gptr())
- {
- DecompressionJob &job = jobs[currentJobId];
-
- // reset buffer pointers
- this->setg(
- this->eback(), // beginning of putback area
- this->gptr() + ofs, // read position
- this->egptr()); // end of buffer
-
- if (this->gptr() != this->egptr())
- return pos_type((job.fileOfs << 16) + ((this->gptr() - &job.buffer[MAX_PUTBACK])));
- else
- return pos_type((job.fileOfs + job.compressedSize) << 16);
- }
-
- }
- else if (dir == std::ios_base::beg)
- {
- // random seek
- std::streampos destFileOfs = ofs >> 16;
-
- // are we in the same block?
- if (currentJobId >= 0 && jobs[currentJobId].fileOfs == (off_type)destFileOfs)
- {
- DecompressionJob &job = jobs[currentJobId];
-
- // reset buffer pointers
- this->setg(
- this->eback(), // beginning of putback area
- &job.buffer[0] + (MAX_PUTBACK + (ofs & 0xffff)), // read position
- this->egptr()); // end of buffer
- return ofs;
- }
-
- // ok, different block
- {
- ScopedLock<Mutex> scopedLock(serializer.lock);
-
- // remove all running jobs and put them in the idle queue unless we
- // find our seek target
-
- if (currentJobId >= 0)
- appendValue(todoQueue, currentJobId);
-
- // Note that if we are here the current job does not represent the sought block.
- // Hence if the running queue is empty we need to explicitly unset the jobId,
- // otherwise we would not update the serializers istream pointer to the correct position.
- if (empty(runningQueue))
- currentJobId = -1;
-
- // empty is thread-safe in serializer.lock
- while (!empty(runningQueue))
- {
- popFront(currentJobId, runningQueue);
-
- if (jobs[currentJobId].fileOfs == (off_type)destFileOfs)
- break;
-
- // push back useless job
- appendValue(todoQueue, currentJobId);
- currentJobId = -1;
- }
-
- if (currentJobId == -1)
- {
- SEQAN_ASSERT(empty(runningQueue));
- serializer.istream.clear(serializer.istream.rdstate() & ~std::ios_base::eofbit);
- if (serializer.istream.rdbuf()->pubseekpos(destFileOfs, std::ios_base::in) == destFileOfs)
- serializer.fileOfs = destFileOfs;
- else
- currentJobId = -2; // temporarily signals a seek error
- }
- }
-
- // if our block wasn't in the running queue yet, it should now
- // be the first that falls out after modifying serializer.fileOfs
- if (currentJobId == -1)
- popFront(currentJobId, runningQueue);
- else if (currentJobId == -2)
- currentJobId = -1;
-
- if (currentJobId >= 0)
- {
- // wait for the end of decompression
- DecompressionJob &job = jobs[currentJobId];
- {
- ScopedLock<CriticalSection> lock(job.cs);
- if (!job.ready)
- waitFor(job.readyEvent);
- }
-
- SEQAN_ASSERT_EQ(job.fileOfs, (off_type)destFileOfs);
-
- // reset buffer pointers
- this->setg(
- &job.buffer[0] + MAX_PUTBACK, // no putback area
- &job.buffer[0] + (MAX_PUTBACK + (ofs & 0xffff)), // read position
- &job.buffer[0] + (MAX_PUTBACK + job.size)); // end of buffer
- return ofs;
- }
- }
- }
- return pos_type(off_type(-1));
- }
-
- pos_type seekpos(pos_type pos, std::ios_base::openmode openMode)
- {
- return seekoff(off_type(pos), std::ios_base::beg, openMode);
- }
-
- // returns the compressed input istream
- istream_reference get_istream() { return serializer.istream; };
-};
-
-// --------------------------------------------------------------------------
-// Class basic_bgzf_ostreambase
-// --------------------------------------------------------------------------
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bgzf_ostreambase : virtual public std::basic_ios<Elem,Tr>
-{
-public:
- typedef std::basic_ostream<Elem, Tr>& ostream_reference;
- typedef basic_bgzf_streambuf<Elem, Tr, ElemA, ByteT, ByteAT> bgzf_streambuf_type;
-
- basic_bgzf_ostreambase(ostream_reference ostream_)
- : m_buf(ostream_)
- {
- this->init(&m_buf );
- };
-
- // returns the underlying zip ostream object
- bgzf_streambuf_type* rdbuf() { return &m_buf; };
- // returns the bgzf error state
- int get_zerr() const { return m_buf.get_err(); };
- // returns the uncompressed data crc
- long get_crc() const { return m_buf.get_crc(); };
- // returns the compressed data size
- long get_out_size() const { return m_buf.get_out_size(); };
- // returns the uncompressed data size
- long get_in_size() const { return m_buf.get_in_size(); };
-
-private:
- bgzf_streambuf_type m_buf;
-};
-
-// --------------------------------------------------------------------------
-// Class basic_bgzf_istreambase
-// --------------------------------------------------------------------------
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bgzf_istreambase : virtual public std::basic_ios<Elem,Tr>
-{
-public:
- typedef std::basic_istream<Elem, Tr>& istream_reference;
- typedef basic_unbgzf_streambuf<Elem, Tr, ElemA, ByteT, ByteAT> unbgzf_streambuf_type;
-
- basic_bgzf_istreambase(istream_reference ostream_)
- : m_buf(ostream_)
- {
- this->init(&m_buf );
- };
-
- // returns the underlying unzip istream object
- unbgzf_streambuf_type* rdbuf() { return &m_buf; };
-
- // returns the bgzf error state
- int get_zerr() const { return m_buf.get_zerr(); };
- // returns the uncompressed data crc
- long get_crc() const { return m_buf.get_crc(); };
- // returns the uncompressed data size
- long get_out_size() const { return m_buf.get_out_size(); };
- // returns the compressed data size
- long get_in_size() const { return m_buf.get_in_size(); };
-
-private:
- unbgzf_streambuf_type m_buf;
-};
-
-// --------------------------------------------------------------------------
-// Class basic_bgzf_ostream
-// --------------------------------------------------------------------------
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bgzf_ostream :
- public basic_bgzf_ostreambase<Elem,Tr,ElemA,ByteT,ByteAT>,
- public std::basic_ostream<Elem,Tr>
-{
-public:
- typedef basic_bgzf_ostreambase<Elem,Tr,ElemA,ByteT,ByteAT> bgzf_ostreambase_type;
- typedef std::basic_ostream<Elem,Tr> ostream_type;
- typedef ostream_type& ostream_reference;
-
- basic_bgzf_ostream(ostream_reference ostream_) :
- bgzf_ostreambase_type(ostream_),
- ostream_type(bgzf_ostreambase_type::rdbuf())
- {}
-
- // flush inner buffer and zipper buffer
- basic_bgzf_ostream<Elem,Tr>& zflush()
- {
- this->flush(); this->rdbuf()->flush(); return *this;
- };
-
- ~basic_bgzf_ostream()
- {
- this->rdbuf()->addFooter();
- }
-
-private:
- static void put_long(ostream_reference out_, unsigned long x_);
-#ifdef _WIN32
- void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
- void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
-#endif
-};
-
-// --------------------------------------------------------------------------
-// Class basic_bgzf_istream
-// --------------------------------------------------------------------------
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bgzf_istream :
- public basic_bgzf_istreambase<Elem,Tr,ElemA,ByteT,ByteAT>,
- public std::basic_istream<Elem,Tr>
-{
-public:
- typedef basic_bgzf_istreambase<Elem,Tr,ElemA,ByteT,ByteAT> bgzf_istreambase_type;
- typedef std::basic_istream<Elem,Tr> istream_type;
- typedef istream_type & istream_reference;
- typedef char byte_type;
-
- basic_bgzf_istream(istream_reference istream_) :
- bgzf_istreambase_type(istream_),
- istream_type(bgzf_istreambase_type::rdbuf()),
- m_is_gzip(false),
- m_gbgzf_data_size(0)
- {};
-
- // returns true if it is a gzip file
- bool is_gzip() const { return m_is_gzip; };
- // return data size check
- bool check_data_size() const { return this->get_out_size() == m_gbgzf_data_size; };
-
- // return the data size in the file
- long get_gbgzf_data_size() const { return m_gbgzf_data_size; };
-
-protected:
- static void read_long(istream_reference in_, unsigned long& x_);
-
- int check_header();
- bool m_is_gzip;
- unsigned long m_gbgzf_data_size;
-
-#ifdef _WIN32
-private:
- void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
- void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
-#endif
-};
-
-// ===========================================================================
-// Typedefs
-// ===========================================================================
-
-// A typedef for basic_bgzf_ostream<char>
-typedef basic_bgzf_ostream<char> bgzf_ostream;
-// A typedef for basic_bgzf_ostream<wchar_t>
-typedef basic_bgzf_ostream<wchar_t> bgzf_wostream;
-// A typedef for basic_bgzf_istream<char>
-typedef basic_bgzf_istream<char> bgzf_istream;
-// A typedef for basic_bgzf_istream<wchart>
-typedef basic_bgzf_istream<wchar_t> bgzf_wistream;
-
-} // namespace seqan
-
-#endif // INCLUDE_SEQAN_STREAM_IOSTREAM_BGZF_H_
diff --git a/include/seqan/stream/iostream_bzip2.h b/include/seqan/stream/iostream_bzip2.h
deleted file mode 100644
index 94f134b..0000000
--- a/include/seqan/stream/iostream_bzip2.h
+++ /dev/null
@@ -1,302 +0,0 @@
-// bzip2stream Library License:
-// --------------------------
-//
-// The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
-//
-// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution
-//
-// Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003
-
-#ifndef INCLUDE_SEQAN_STREAM_IOSTREAM_BZIP2_H_
-#define INCLUDE_SEQAN_STREAM_IOSTREAM_BZIP2_H_
-
-#define BZ_NO_STDIO
-
-#include <bzlib.h>
-#include <vector>
-#include <iostream>
-#include <algorithm>
-
-namespace bzip2_stream{
-
-const size_t default_buffer_size = 4096;
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bzip2_streambuf :
- public std::basic_streambuf<Elem, Tr>
-{
-public:
- typedef std::basic_streambuf< Elem, Tr > basic_streambuf_type;
- typedef std::basic_ostream<Elem, Tr>& ostream_reference;
- typedef ElemA char_allocator_type;
- typedef ByteT byte_type;
- typedef ByteAT byte_allocator_type;
- typedef byte_type* byte_buffer_type;
- typedef typename Tr::char_type char_type;
- typedef typename Tr::int_type int_type;
- typedef std::vector<byte_type, byte_allocator_type > byte_vector_type;
- typedef std::vector<char_type, char_allocator_type > char_vector_type;
-
- using basic_streambuf_type::epptr;
- using basic_streambuf_type::pbase;
- using basic_streambuf_type::pptr;
-
- basic_bzip2_streambuf(
- ostream_reference ostream_,
- size_t block_size_100k_ ,
- size_t verbosity_ ,
- size_t work_factor_,
- size_t buffer_size_
- );
-
- ~basic_bzip2_streambuf();
-
- int sync ();
- int_type overflow (int_type c);
-
- std::streamsize flush(int flush_mode);
- int get_zerr() const
- { return m_err;};
- __uint64 get_in_size() const
- {
- return ((__uint64)m_bzip2_stream.total_in_hi32 << 32)
- + m_bzip2_stream.total_in_lo32;
- }
- __uint64 get_out_size() const
- {
- return ((__uint64)m_bzip2_stream.total_out_hi32 << 32)
- + m_bzip2_stream.total_out_lo32;
- }
-private:
- bool bzip2_to_stream( char_type*, std::streamsize);
- size_t fill_input_buffer();
-
- ostream_reference m_ostream;
- bz_stream m_bzip2_stream;
- int m_err;
- byte_vector_type m_output_buffer;
- char_vector_type m_buffer;
-};
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_unbzip2_streambuf :
- public std::basic_streambuf<Elem, Tr>
-{
-public:
- typedef std::basic_istream<Elem, Tr>& istream_reference;
- typedef ElemA char_allocator_type;
- typedef ByteT byte_type;
- typedef ByteAT byte_allocator_type;
- typedef byte_type* byte_buffer_type;
- typedef typename Tr::char_type char_type;
- typedef typename Tr::int_type int_type;
- typedef std::vector<byte_type, byte_allocator_type > byte_vector_type;
- typedef std::vector<char_type, char_allocator_type > char_vector_type;
-
- basic_unbzip2_streambuf(
- istream_reference istream_,
- size_t verbosity_,
- bool small_,
- size_t read_buffer_size_,
- size_t input_buffer_size_
- );
-
- ~basic_unbzip2_streambuf();
-
- int_type underflow();
-
- istream_reference get_istream() { return m_istream;};
- bz_stream& get_bzip2_stream() { return m_bzip2_stream;};
- int get_zerr() const { return m_err;};
-private:
- std::streamsize unbzip2_from_stream( char_type*, std::streamsize);
- void put_back_from_bzip2_stream();
- size_t fill_input_buffer();
-
- istream_reference m_istream;
- bz_stream m_bzip2_stream;
- int m_err;
- byte_vector_type m_input_buffer;
- char_vector_type m_buffer;
-};
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bzip2_ostreambase : virtual public std::basic_ios<Elem,Tr>
-{
-public:
- typedef std::basic_ostream<Elem, Tr>& ostream_reference;
- typedef basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT> bzip2_streambuf_type;
-
- basic_bzip2_ostreambase(
- ostream_reference ostream_,
- size_t block_size_100k_ ,
- size_t verbosity_ ,
- size_t work_factor_,
- size_t buffer_size_
- )
- : m_buf(ostream_,block_size_100k_, verbosity_, work_factor_, buffer_size_)
- {
- this->init(&m_buf );
- };
-
- bzip2_streambuf_type* rdbuf() { return &m_buf; };
-
-private:
- bzip2_streambuf_type m_buf;
-};
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bzip2_istreambase : virtual public std::basic_ios<Elem,Tr>
-{
-public:
- typedef std::basic_istream<Elem, Tr>& istream_reference;
- typedef basic_unbzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT> unbzip2_streambuf_type;
-
- basic_bzip2_istreambase(
- istream_reference ostream_,
- size_t verbosity_,
- bool small_,
- size_t read_buffer_size_,
- size_t input_buffer_size_
- )
- : m_buf(
- ostream_,
- verbosity_,
- small_,
- read_buffer_size_,
- input_buffer_size_
- )
- {
- this->init(&m_buf );
- };
-
- unbzip2_streambuf_type* rdbuf() { return &m_buf; };
-
-private:
- unbzip2_streambuf_type m_buf;
-};
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bzip2_ostream :
- public basic_bzip2_ostreambase<Elem,Tr,ElemA,ByteT,ByteAT>,
- public std::basic_ostream<Elem,Tr>
-{
-public:
- typedef basic_bzip2_ostreambase<
- Elem,Tr,ElemA,ByteT,ByteAT> bzip2_ostreambase_type;
- typedef std::basic_ostream<Elem,Tr> ostream_type;
- typedef ostream_type& ostream_reference;
-
- basic_bzip2_ostream(
- ostream_reference ostream_,
- size_t block_size_100k_ = 9,
- size_t verbosity_ = 0,
- size_t work_factor_ = 30,
- size_t buffer_size_ = default_buffer_size
- )
- :
- bzip2_ostreambase_type(ostream_,block_size_100k_, verbosity_, work_factor_,buffer_size_),
- ostream_type(bzip2_ostreambase_type::rdbuf())
- {
-
- };
-
- basic_bzip2_ostream& add_header();
- basic_bzip2_ostream& zflush()
- {
- this->flush(); this->rdbuf()->flush(); return *this;
- };
-
-#ifdef _WIN32
-private:
- void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
- void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
-#endif
-};
-
-template<
- typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = char,
- typename ByteAT = std::allocator<ByteT>
->
-class basic_bzip2_istream :
- public basic_bzip2_istreambase<Elem,Tr,ElemA,ByteT,ByteAT>,
- public std::basic_istream<Elem,Tr>
-{
-public:
- typedef basic_bzip2_istreambase<
- Elem,Tr,ElemA,ByteT,ByteAT> bzip2_istreambase_type;
- typedef std::basic_istream<Elem,Tr> istream_type;
- typedef istream_type& istream_reference;
- typedef unsigned char byte_type;
-
- basic_bzip2_istream(
- istream_reference istream_,
- size_t verbosity_ = 0,
- bool small_ = false,
- size_t read_buffer_size_ = default_buffer_size,
- size_t input_buffer_size_ = default_buffer_size
- )
- :
- bzip2_istreambase_type(istream_,verbosity_, small_, read_buffer_size_, input_buffer_size_),
- istream_type(bzip2_istreambase_type::rdbuf())
- {};
-#ifdef _WIN32
-private:
- void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
- void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
-#endif
-};
-
-typedef basic_bzip2_ostream<char> bzip2_ostream;
-typedef basic_bzip2_ostream<wchar_t> bzip2_wostream;
-typedef basic_bzip2_istream<char> bzip2_istream;
-typedef basic_bzip2_istream<wchar_t> bzip2_wistream;
-
-} // bzip2_stream
-
-#include "iostream_bzip2_impl.h"
-
-#endif // INCLUDE_SEQAN_STREAM_IOSTREAM_BZIP2_H_
diff --git a/include/seqan/stream/iostream_bzip2_impl.h b/include/seqan/stream/iostream_bzip2_impl.h
deleted file mode 100644
index f0e5143..0000000
--- a/include/seqan/stream/iostream_bzip2_impl.h
+++ /dev/null
@@ -1,429 +0,0 @@
-// bzip2stream Library License:
-// --------------------------
-//
-// The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
-//
-// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution
-//
-// Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003
-
-#ifndef INCLUDE_SEQAN_STREAM_IOSTREAM_BZIP2_IMPL_H_
-#define INCLUDE_SEQAN_STREAM_IOSTREAM_BZIP2_IMPL_H_
-
-#include "iostream_bzip2.h"
-
-namespace bzip2_stream{
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >:: basic_bzip2_streambuf(
- ostream_reference ostream_,
- size_t block_size_100k_,
- size_t verbosity_,
- size_t work_factor_,
- size_t buffer_size_
- )
- :
- m_ostream(ostream_),
- m_output_buffer(buffer_size_,0),
- m_buffer(buffer_size_,0)
- {
- m_bzip2_stream.bzalloc=NULL;
- m_bzip2_stream.bzfree=NULL;
-
- m_bzip2_stream.next_in=NULL;
- m_bzip2_stream.avail_in=0;
- m_bzip2_stream.avail_out=0;
- m_bzip2_stream.next_out=NULL;
-
- m_err=BZ2_bzCompressInit(
- &m_bzip2_stream,
- std::min( 9, static_cast<int>(block_size_100k_) ),
- std::min( 4, static_cast<int>(verbosity_) ),
- std::min( 250, static_cast<int>(work_factor_) )
- );
-
- this->setp( &(m_buffer[0]), &(m_buffer[m_buffer.size()-1]));
- }
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::~basic_bzip2_streambuf()
- {
- flush(BZ_FINISH);
- m_ostream.flush();
- m_err=BZ2_bzCompressEnd(&m_bzip2_stream);
- }
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- int basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::sync ()
- {
- if ( this->pptr() && this->pptr() > this->pbase())
- {
- int c = overflow( EOF);
-
- if ( c == EOF)
- return -1;
- }
-
- return 0;
- }
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- typename basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::int_type
- basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::overflow (
- typename basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::int_type c
- )
- {
- int w = static_cast<int>(this->pptr() - this->pbase());
- if (c != EOF) {
- *this->pptr() = c;
- ++w;
- }
- if ( bzip2_to_stream( this->pbase(), w)) {
- this->setp( this->pbase(), this->epptr());
- return c;
- } else
- return EOF;
- }
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- bool basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::bzip2_to_stream(
- typename basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::char_type* buffer_,
- std::streamsize buffer_size_
- )
- {
- std::streamsize written_byte_size=0, total_written_byte_size = 0;
-
- m_bzip2_stream.next_in=(byte_buffer_type)buffer_;
- m_bzip2_stream.avail_in=buffer_size_*sizeof(char_type);
- m_bzip2_stream.avail_out=static_cast<unsigned int>(m_output_buffer.size());
- m_bzip2_stream.next_out=&(m_output_buffer[0]);
- size_t remainder=0;
-
- do
- {
- m_err = BZ2_bzCompress (&m_bzip2_stream, BZ_RUN );
-
- if (m_err == BZ_RUN_OK || m_err == BZ_STREAM_END)
- {
- written_byte_size= static_cast<std::streamsize>(m_output_buffer.size()) - m_bzip2_stream.avail_out;
- total_written_byte_size+=written_byte_size;
- // ouput buffer is full, dumping to ostream
- m_ostream.write(
- (const char_type*) &(m_output_buffer[0]),
- static_cast<std::streamsize>( written_byte_size/sizeof(char_type) )
- );
-
- // checking if some bytes were not written.
- if ( (remainder = written_byte_size%sizeof(char_type))!=0)
- {
- // copy to the beginning of the stream
- std::memmove(
- &(m_output_buffer[0]),
- &(m_output_buffer[written_byte_size-remainder]),
- remainder);
-
- }
-
- m_bzip2_stream.avail_out=static_cast<unsigned int>(m_output_buffer.size()-remainder);
- m_bzip2_stream.next_out=&m_output_buffer[remainder];
- }
- }
- while (m_bzip2_stream.avail_in != 0 && m_err == BZ_RUN_OK);
-
- return m_err == BZ_RUN_OK || m_err == BZ_FLUSH_OK;
- }
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- std::streamsize basic_bzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::flush(int flush_mode)
- {
- std::streamsize written_byte_size=0, total_written_byte_size=0;
-
- int const buffer_size = static_cast< int >( pptr() - pbase() ); // amount of data currently in buffer
-
- m_bzip2_stream.next_in=(byte_buffer_type)pbase();
- m_bzip2_stream.avail_in=static_cast< uInt >(buffer_size*sizeof(char_type));
- m_bzip2_stream.avail_out=static_cast< uInt >(m_output_buffer.size());
- m_bzip2_stream.next_out=&(m_output_buffer[0]);
- size_t remainder=0;
-
- do
- {
- m_err = BZ2_bzCompress (&m_bzip2_stream, flush_mode);
- if (m_err == BZ_FINISH_OK || m_err == BZ_STREAM_END)
- {
- written_byte_size=
- static_cast<std::streamsize>(m_output_buffer.size())
- - m_bzip2_stream.avail_out;
- total_written_byte_size+=written_byte_size;
- // ouput buffer is full, dumping to ostream
- m_ostream.write(
- (const char_type*) &(m_output_buffer[0]),
- static_cast<std::streamsize>( written_byte_size/sizeof(char_type)*sizeof(char) )
- );
-
- // checking if some bytes were not written.
- if ( (remainder = written_byte_size%sizeof(char_type))!=0)
- {
- // copy to the beginning of the stream
- std::memmove(
- &(m_output_buffer[0]),
- &(m_output_buffer[written_byte_size-remainder]),
- remainder);
-
- }
-
- m_bzip2_stream.avail_out=static_cast<unsigned int>(m_output_buffer.size()-remainder);
- m_bzip2_stream.next_out=&(m_output_buffer[remainder]);
- }
- } while (m_err == BZ_FINISH_OK);
-
- m_ostream.flush();
-
- return total_written_byte_size;
- }
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- basic_unbzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::basic_unbzip2_streambuf(
- istream_reference istream_,
- size_t verbosity_,
- bool small_,
- size_t read_buffer_size_,
- size_t input_buffer_size_
- )
- :
- m_istream(istream_),
- m_input_buffer(input_buffer_size_),
- m_buffer(read_buffer_size_)
- {
- // setting zalloc, zfree and opaque
- m_bzip2_stream.bzalloc=NULL;
- m_bzip2_stream.bzfree=NULL;
-
- m_bzip2_stream.next_in=NULL;
- m_bzip2_stream.avail_in=0;
- m_bzip2_stream.avail_out=0;
- m_bzip2_stream.next_out=NULL;
-
-
- m_err=BZ2_bzDecompressInit (
- &m_bzip2_stream,
- std::min(4, static_cast<int>(verbosity_)),
- static_cast<int>(small_)
- );
-
- this->setg(
- &(m_buffer[0])+4, // beginning of putback area
- &(m_buffer[0])+4, // read position
- &(m_buffer[0])+4); // end position
- }
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- size_t basic_unbzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::fill_input_buffer()
- {
- m_bzip2_stream.next_in=&(m_input_buffer[0]);
- m_istream.read(
- (char_type*)(&(m_input_buffer[0])),
- static_cast<std::streamsize>(m_input_buffer.size()/sizeof(char_type))
- );
- return m_bzip2_stream.avail_in=m_istream.gcount()*sizeof(char_type);
- }
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- void basic_unbzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::put_back_from_bzip2_stream()
- {
- if (m_bzip2_stream.avail_in==0)
- return;
-
- m_istream.clear( std::ios::goodbit );
- m_istream.seekg(
- -static_cast<int>(m_bzip2_stream.avail_in),
- std::ios_base::cur
- );
-
- m_bzip2_stream.avail_in=0;
- }
-
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- basic_unbzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::~basic_unbzip2_streambuf()
- {
- BZ2_bzDecompressEnd(&m_bzip2_stream);
- }
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- typename basic_unbzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::int_type
- basic_unbzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::underflow()
- {
- if ( this->gptr() && ( this->gptr() < this->egptr()))
- return * reinterpret_cast<unsigned char *>( this->gptr());
-
- int n_putback = static_cast<int>(this->gptr() - this->eback());
- if ( n_putback > 4)
- n_putback = 4;
- std::memmove(
- &(m_buffer[0]) + (4 - n_putback),
- this->gptr() - n_putback,
- n_putback*sizeof(char_type)
- );
-
- int num = unbzip2_from_stream(
- &(m_buffer[0])+4,
- static_cast<std::streamsize>((m_buffer.size()-4)*sizeof(char_type))
- );
- if (num <= 0) // ERROR or EOF
- return EOF;
-
- // reset buffer pointers
- this->setg(
- &(m_buffer[0]) + (4 - n_putback), // beginning of putback area
- &(m_buffer[0]) + 4, // read position
- &(m_buffer[0]) + 4 + num); // end of buffer
-
- // return next character
- return* reinterpret_cast<unsigned char *>( this->gptr());
- }
-
-
- template<
- typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT
- >
- std::streamsize basic_unbzip2_streambuf<
- Elem,Tr,ElemA,ByteT,ByteAT
- >::unbzip2_from_stream(
- char_type* buffer_,
- std::streamsize buffer_size_
- )
- {
- m_bzip2_stream.next_out=(byte_buffer_type)buffer_;
- m_bzip2_stream.avail_out=buffer_size_*sizeof(char_type);
- size_t count =m_bzip2_stream.avail_in;
-
- do
- {
- if (m_bzip2_stream.avail_in==0)
- count=fill_input_buffer();
-
- if (m_bzip2_stream.avail_in)
- {
- m_err = BZ2_bzDecompress( &m_bzip2_stream );
- }
- } while (m_err==BZ_OK && m_bzip2_stream.avail_out != 0 && count != 0);
-
- if (m_err == BZ_STREAM_END)
- put_back_from_bzip2_stream();
-
- return buffer_size_ - m_bzip2_stream.avail_out/sizeof(char_type);
- }
-
-
-} // zlib_sream
-
-#endif // INCLUDE_SEQAN_STREAM_IOSTREAM_BZIP2_IMPL_H_
diff --git a/include/seqan/stream/iostream_zip.h b/include/seqan/stream/iostream_zip.h
deleted file mode 100644
index 89fdf2e..0000000
--- a/include/seqan/stream/iostream_zip.h
+++ /dev/null
@@ -1,383 +0,0 @@
-// zipstream Library License:
-// --------------------------
-//
-// The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
-//
-// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution
-//
-// Altered zipstream library header
-// Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003
-// Author: David Weese <david.weese at fu-berlin.de>
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-
-#ifndef INCLUDE_SEQAN_STREAM_IOSTREAM_ZIP_H_
-#define INCLUDE_SEQAN_STREAM_IOSTREAM_ZIP_H_
-
-namespace zlib_stream {
-
-// Default gzip buffer size, change this to suite your needs.
-const size_t ZIP_DEFAULT_BUFFER_SIZE = 921600;
-
-// --------------------------------------------------------------------------
-// Enum EStrategy
-// --------------------------------------------------------------------------
-// Compression strategy, see zlib doc.
-
-enum EStrategy
-{
- StrategyFiltered = 1,
- StrategyHuffmanOnly = 2,
- DefaultStrategy = 0
-};
-
-// ===========================================================================
-// Classes
-// ===========================================================================
-
-// --------------------------------------------------------------------------
-// Class basic_zip_streambuf
-// --------------------------------------------------------------------------
-// A stream decorator that takes raw input and zips it to a ostream.
-// The class wraps up the inflate method of the zlib library 1.1.4 http://www.gzip.org/zlib/
-
-template <typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = unsigned char,
- typename ByteAT = std::allocator<ByteT>
- >
-class basic_zip_streambuf :
- public std::basic_streambuf<Elem, Tr>
-{
-public:
- typedef std::basic_ostream<Elem, Tr> & ostream_reference;
- typedef ElemA char_allocator_type;
- typedef ByteT byte_type;
- typedef ByteAT byte_allocator_type;
- typedef byte_type * byte_buffer_type;
- typedef Tr traits_type;
- typedef typename Tr::char_type char_type;
- typedef typename Tr::int_type int_type;
- typedef std::vector<byte_type, byte_allocator_type> byte_vector_type;
- typedef std::vector<char_type, char_allocator_type> char_vector_type;
-
- // Construct a zip stream
- // More info on the following parameters can be found in the zlib documentation.
- basic_zip_streambuf(ostream_reference ostream_,
- size_t level_,
- EStrategy strategy_,
- size_t window_size_,
- size_t memory_level_,
- size_t buffer_size_);
-
- ~basic_zip_streambuf();
-
- int sync();
- int_type overflow(int_type c);
-
- // flushes the zip buffer and output buffer.
- // This method should be called at the end of the compression.
- // Calling flush multiple times, will lower the compression ratio.
- std::streamsize flush();
-
- // flushes the zip buffer and output buffer and finalize the zip stream
- // This method should be called at the end of the compression.
- std::streamsize flush_finalize();
-
-
-private:
- bool zip_to_stream(char_type *, std::streamsize);
- size_t fill_input_buffer();
- // flush the zip buffer using a particular mode and flush output buffer
- std::streamsize flush(int flush_mode);
-
- ostream_reference m_ostream;
- z_stream m_zip_stream;
- int m_err;
- byte_vector_type m_output_buffer;
- char_vector_type m_buffer;
-};
-
-// --------------------------------------------------------------------------
-// Class basic_unzip_streambuf
-// --------------------------------------------------------------------------
-// A stream decorator that takes compressed input and unzips it to a istream.
-// The class wraps up the deflate method of the zlib library 1.1.4 http://www.gzip.org/zlib/
-
-template <typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = unsigned char,
- typename ByteAT = std::allocator<ByteT>
- >
-class basic_unzip_streambuf :
- public std::basic_streambuf<Elem, Tr>
-{
-public:
- typedef std::basic_istream<Elem, Tr> & istream_reference;
- typedef ElemA char_allocator_type;
- typedef ByteT byte_type;
- typedef ByteAT byte_allocator_type;
- typedef byte_type * byte_buffer_type;
- typedef Tr traits_type;
- typedef typename Tr::char_type char_type;
- typedef typename Tr::int_type int_type;
- typedef std::vector<byte_type, byte_allocator_type> byte_vector_type;
- typedef std::vector<char_type, char_allocator_type> char_vector_type;
-
- // Construct a unzip stream
- // More info on the following parameters can be found in the zlib documentation.
- basic_unzip_streambuf(istream_reference istream_,
- size_t window_size_,
- size_t read_buffer_size_,
- size_t input_buffer_size_);
-
- ~basic_unzip_streambuf();
-
- int_type underflow();
-
- // returns the compressed input istream
- istream_reference get_istream() { return m_istream; }
- // returns the zlib stream structure
- z_stream & get_zip_stream() { return m_zip_stream; }
-
-private:
- void put_back_from_zip_stream();
- std::streamsize unzip_from_stream(char_type *, std::streamsize);
- size_t fill_input_buffer();
-
- istream_reference m_istream;
- z_stream m_zip_stream;
- int m_err;
- byte_vector_type m_input_buffer;
- char_vector_type m_buffer;
-};
-
-// --------------------------------------------------------------------------
-// Class basic_zip_ostreambase
-// --------------------------------------------------------------------------
-// Base class for zip ostreams.
-// Contains a basic_zip_streambuf.
-
-template <typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = unsigned char,
- typename ByteAT = std::allocator<ByteT>
- >
-class basic_zip_ostreambase :
- virtual public std::basic_ios<Elem, Tr>
-{
-public:
- typedef std::basic_ostream<Elem, Tr> & ostream_reference;
- typedef basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT> zip_streambuf_type;
-
- // Construct a zip stream
- // More info on the following parameters can be found in the zlib documentation.
- basic_zip_ostreambase(ostream_reference ostream_,
- size_t level_,
- EStrategy strategy_,
- size_t window_size_,
- size_t memory_level_,
- size_t buffer_size_) :
- m_buf(ostream_, level_, strategy_, window_size_, memory_level_, buffer_size_)
- {
- this->init(&m_buf);
- }
-
- // returns the underlying zip ostream object
- zip_streambuf_type * rdbuf() { return &m_buf; }
-
-private:
- zip_streambuf_type m_buf;
-};
-
-// --------------------------------------------------------------------------
-// Class basic_zip_istreambase
-// --------------------------------------------------------------------------
-// Base class for unzip istreams
-// Contains a basic_unzip_streambuf.
-
-template <typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = unsigned char,
- typename ByteAT = std::allocator<ByteT>
- >
-class basic_zip_istreambase :
- virtual public std::basic_ios<Elem, Tr>
-{
-public:
- typedef std::basic_istream<Elem, Tr> & istream_reference;
- typedef basic_unzip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT> unzip_streambuf_type;
-
- basic_zip_istreambase(istream_reference ostream_,
- size_t window_size_,
- size_t read_buffer_size_,
- size_t input_buffer_size_) :
- m_buf(ostream_, window_size_, read_buffer_size_, input_buffer_size_)
- {
- this->init(&m_buf);
- }
-
- // returns the underlying unzip istream object
- unzip_streambuf_type * rdbuf() { return &m_buf; }
-
-private:
- unzip_streambuf_type m_buf;
-};
-
-// --------------------------------------------------------------------------
-// Class basic_zip_ostream
-// --------------------------------------------------------------------------
-// A zipper ostream
-//
-// This class is a ostream decorator that behaves 'almost' like any other ostream.
-// At construction, it takes any ostream that shall be used to output of the compressed data.
-// When finished, you need to call the special method zflush or call the destructor
-// to flush all the intermidiate streams.
-//
-// Example:
-//
-// // creating the target zip string, could be a fstream
-// ostringstream ostringstream_;
-// // creating the zip layer
-// zip_ostream zipper(ostringstream_);
-// // writing data
-// zipper<<f<<" "<<d<<" "<<ui<<" "<<ul<<" "<<us<<" "<<c<<" "<<dum;
-// // zip ostream needs special flushing...
-// zipper.zflush();
-
-template <typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = unsigned char,
- typename ByteAT = std::allocator<ByteT>
- >
-class basic_zip_ostream :
- public basic_zip_ostreambase<Elem, Tr, ElemA, ByteT, ByteAT>,
- public std::basic_ostream<Elem, Tr>
-{
-public:
- typedef basic_zip_ostreambase<Elem, Tr, ElemA, ByteT, ByteAT> zip_ostreambase_type;
- typedef std::basic_ostream<Elem, Tr> ostream_type;
- typedef ostream_type & ostream_reference;
-
- // Constructs a zipper ostream decorator
- //
- // ostream_ ostream where the compressed output is written
- // is_gzip_ true if gzip header and footer have to be added
- // level_ level of compression 0, bad and fast, 9, good and slower,
- // strategy_ compression strategy
- // window_size_ see zlib doc
- // memory_level_ see zlib doc
- // buffer_size_ the buffer size used to zip data
-
- basic_zip_ostream(ostream_reference ostream_,
- size_t level_ = Z_DEFAULT_COMPRESSION,
- EStrategy strategy_ = DefaultStrategy,
- size_t window_size_ = 31, // 15 (size) + 16 (gzip header)
- size_t memory_level_ = 8,
- size_t buffer_size_ = ZIP_DEFAULT_BUFFER_SIZE) :
- zip_ostreambase_type(ostream_, level_, strategy_, window_size_, memory_level_, buffer_size_),
- ostream_type(this->rdbuf())
- {}
-
- ~basic_zip_ostream()
- {
- this->flush(); this->rdbuf()->flush_finalize();
- }
-
- // flush inner buffer and zipper buffer
- basic_zip_ostream<Elem, Tr> & zflush()
- {
- this->flush(); this->rdbuf()->flush(); return *this;
- }
-
-#ifdef _WIN32
-private:
- void _Add_vtordisp1() {} // Required to avoid VC++ warning C4250
- void _Add_vtordisp2() {} // Required to avoid VC++ warning C4250
-#endif
-};
-
-// --------------------------------------------------------------------------
-// Class basic_zip_istream
-// --------------------------------------------------------------------------
-// A zipper istream
-//
-// This class is a istream decorator that behaves 'almost' like any other ostream.
-// At construction, it takes any istream that shall be used to input of the compressed data.
-//
-// Simlpe example:
-//
-// // create a stream on zip string
-// istringstream istringstream_( ostringstream_.str());
-// // create unzipper istream
-// zip_istream unzipper( istringstream_);
-// // read and unzip
-// unzipper>>f_r>>d_r>>ui_r>>ul_r>>us_r>>c_r>>dum_r;
-
-template <typename Elem,
- typename Tr = std::char_traits<Elem>,
- typename ElemA = std::allocator<Elem>,
- typename ByteT = unsigned char,
- typename ByteAT = std::allocator<ByteT>
- >
-class basic_zip_istream :
- public basic_zip_istreambase<Elem, Tr, ElemA, ByteT, ByteAT>,
- public std::basic_istream<Elem, Tr>
-{
-public:
- typedef basic_zip_istreambase<Elem, Tr, ElemA, ByteT, ByteAT> zip_istreambase_type;
- typedef std::basic_istream<Elem, Tr> istream_type;
- typedef istream_type & istream_reference;
- typedef ByteT byte_type;
- typedef Tr traits_type;
-
- // Construct a unzipper stream
- //
- // istream_ input buffer
- // window_size_
- // read_buffer_size_
- // input_buffer_size_
-
- basic_zip_istream(istream_reference istream_,
- size_t window_size_ = 31, // 15 (size) + 16 (gzip header)
- size_t read_buffer_size_ = ZIP_DEFAULT_BUFFER_SIZE,
- size_t input_buffer_size_ = ZIP_DEFAULT_BUFFER_SIZE) :
- zip_istreambase_type(istream_, window_size_, read_buffer_size_, input_buffer_size_),
- istream_type(this->rdbuf())
- {}
-
-#ifdef _WIN32
-private:
- void _Add_vtordisp1() {} // Required to avoid VC++ warning C4250
- void _Add_vtordisp2() {} // Required to avoid VC++ warning C4250
-#endif
-};
-
-// ===========================================================================
-// Typedefs
-// ===========================================================================
-
-// A typedef for basic_zip_ostream<char>
-typedef basic_zip_ostream<char> zip_ostream;
-// A typedef for basic_zip_ostream<wchar_t>
-typedef basic_zip_ostream<wchar_t> zip_wostream;
-// A typedef for basic_zip_istream<char>
-typedef basic_zip_istream<char> zip_istream;
-// A typedef for basic_zip_istream<wchart>
-typedef basic_zip_istream<wchar_t> zip_wistream;
-
-} // namespace zlib_stream
-
-#endif // INCLUDE_SEQAN_STREAM_IOSTREAM_ZIP_H_
diff --git a/include/seqan/stream/iostream_zip_impl.h b/include/seqan/stream/iostream_zip_impl.h
deleted file mode 100644
index 716986c..0000000
--- a/include/seqan/stream/iostream_zip_impl.h
+++ /dev/null
@@ -1,386 +0,0 @@
-// zipstream Library License:
-// --------------------------
-//
-// The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
-//
-// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source distribution
-//
-// Altered zipstream library header
-// Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003
-// Author: David Weese <david.weese at fu-berlin.de>
-// Author: Enrico Siragusa <enrico.siragusa at fu-berlin.de>
-
-#ifndef INCLUDE_SEQAN_STREAM_IOSTREAM_ZIP_IMPL_H_
-#define INCLUDE_SEQAN_STREAM_IOSTREAM_ZIP_IMPL_H_
-
-namespace zlib_stream {
-
-// --------------------------------------------------------------------------
-// Class basic_zip_streambuf
-// --------------------------------------------------------------------------
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::basic_zip_streambuf(
- ostream_reference ostream_,
- size_t level_,
- EStrategy strategy_,
- size_t window_size_,
- size_t memory_level_,
- size_t buffer_size_
- ) :
- m_ostream(ostream_),
- m_output_buffer(buffer_size_, 0),
- m_buffer(buffer_size_, 0)
-{
- m_zip_stream.zalloc = (alloc_func)0;
- m_zip_stream.zfree = (free_func)0;
-
- m_zip_stream.next_in = NULL;
- m_zip_stream.avail_in = 0;
- m_zip_stream.avail_out = 0;
- m_zip_stream.next_out = NULL;
-
- m_err = deflateInit2(
- &m_zip_stream,
- std::min(9, static_cast<int>(level_)),
- Z_DEFLATED,
- static_cast<int>(window_size_),
- std::min(9, static_cast<int>(memory_level_)),
- static_cast<int>(strategy_)
- );
-
- this->setp(&(m_buffer[0]), &(m_buffer[m_buffer.size() - 1]));
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::~basic_zip_streambuf()
-{
- flush_finalize();
- m_ostream.flush();
- m_err = deflateEnd(&m_zip_stream);
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-int basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::sync()
-{
- if (this->pptr() && this->pptr() > this->pbase())
- {
- if (traits_type::eq_int_type(overflow(traits_type::eof()), traits_type::eof()))
- return -1;
- }
-
- return 0;
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-typename basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::int_type
-basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::overflow(
- typename basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::int_type c)
-{
- int w = static_cast<int>(this->pptr() - this->pbase());
-
- if (!traits_type::eq_int_type(c, traits_type::eof()))
- {
- *this->pptr() = c;
- ++w;
- }
-
- if (zip_to_stream(this->pbase(), w))
- {
- this->setp(this->pbase(), this->epptr() - 1);
- return c;
- }
- else
- {
- return traits_type::eof();
- }
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-bool basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::zip_to_stream(
- typename basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::char_type * buffer_,
- std::streamsize buffer_size_)
-{
- std::streamsize written_byte_size = 0, total_written_byte_size = 0;
-
- m_zip_stream.next_in = (byte_buffer_type)buffer_;
- m_zip_stream.avail_in = static_cast<uInt>(buffer_size_ * sizeof(char_type));
- m_zip_stream.avail_out = static_cast<uInt>(m_output_buffer.size());
- m_zip_stream.next_out = &(m_output_buffer[0]);
- size_t remainder = 0;
-
- do
- {
- m_err = deflate(&m_zip_stream, 0);
-
- if (m_err == Z_OK || m_err == Z_STREAM_END)
- {
- written_byte_size = static_cast<std::streamsize>(m_output_buffer.size()) - m_zip_stream.avail_out;
- total_written_byte_size += written_byte_size;
-
- // ouput buffer is full, dumping to ostream
- m_ostream.write((const char_type *) &(m_output_buffer[0]),
- static_cast<std::streamsize>(written_byte_size / sizeof(char_type)));
-
- // checking if some bytes were not written.
- if ((remainder = written_byte_size % sizeof(char_type)) != 0)
- {
- // copy to the beginning of the stream
- std::memmove(&(m_output_buffer[0]),
- &(m_output_buffer[written_byte_size - remainder]),
- remainder);
- }
-
- m_zip_stream.avail_out = static_cast<uInt>(m_output_buffer.size() - remainder);
- m_zip_stream.next_out = &m_output_buffer[remainder];
- }
- }
- while (m_zip_stream.avail_in != 0 && m_err == Z_OK);
-
- return m_err == Z_OK;
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-std::streamsize basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::flush(int flush_mode)
-{
- int const buffer_size = static_cast<int>(this->pptr() - this->pbase()); // amount of data currently in buffer
-
- std::streamsize written_byte_size = 0, total_written_byte_size = 0;
-
- m_zip_stream.next_in = (byte_buffer_type) this->pbase();
- m_zip_stream.avail_in = static_cast<uInt>(buffer_size * sizeof(char_type));
- m_zip_stream.avail_out = static_cast<uInt>(m_output_buffer.size());
- m_zip_stream.next_out = &(m_output_buffer[0]);
- size_t remainder = 0;
-
- do
- {
- m_err = deflate(&m_zip_stream, flush_mode);
- if (m_err == Z_OK || m_err == Z_STREAM_END)
- {
- written_byte_size = static_cast<std::streamsize>(m_output_buffer.size()) - m_zip_stream.avail_out;
- total_written_byte_size += written_byte_size;
-
- // ouput buffer is full, dumping to ostream
- m_ostream.write((const char_type *) &(m_output_buffer[0]),
- static_cast<std::streamsize>(written_byte_size / sizeof(char_type) * sizeof(byte_type)));
-
- // checking if some bytes were not written.
- if ((remainder = written_byte_size % sizeof(char_type)) != 0)
- {
- // copy to the beginning of the stream
- std::memmove(&(m_output_buffer[0]),
- &(m_output_buffer[written_byte_size - remainder]),
- remainder);
- }
-
- m_zip_stream.avail_out = static_cast<uInt>(m_output_buffer.size() - remainder);
- m_zip_stream.next_out = &m_output_buffer[remainder];
- }
- }
- while (m_err == Z_OK);
-
- m_ostream.flush();
-
- return total_written_byte_size;
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-std::streamsize basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::flush()
-{
- return flush(Z_SYNC_FLUSH);
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-std::streamsize basic_zip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::flush_finalize()
-{
- return flush(Z_FINISH);
-}
-
-// --------------------------------------------------------------------------
-// Class basic_unzip_streambuf
-// --------------------------------------------------------------------------
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-basic_unzip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::basic_unzip_streambuf(
- istream_reference istream_,
- size_t window_size_,
- size_t read_buffer_size_,
- size_t input_buffer_size_
- ) :
- m_istream(istream_),
- m_input_buffer(input_buffer_size_),
- m_buffer(read_buffer_size_)
-{
- // setting zalloc, zfree and opaque
- m_zip_stream.zalloc = (alloc_func)0;
- m_zip_stream.zfree = (free_func)0;
-
- m_zip_stream.next_in = NULL;
- m_zip_stream.avail_in = 0;
- m_zip_stream.avail_out = 0;
- m_zip_stream.next_out = NULL;
-
- m_err = inflateInit2(&m_zip_stream, static_cast<int>(window_size_));
-
- this->setg(&(m_buffer[0]) + 4, // beginning of putback area
- &(m_buffer[0]) + 4, // read position
- &(m_buffer[0]) + 4); // end position
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-basic_unzip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::~basic_unzip_streambuf()
-{
- inflateEnd(&m_zip_stream);
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-typename basic_unzip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::int_type
-basic_unzip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::underflow()
-{
- if (this->gptr() && (this->gptr() < this->egptr()))
- return *reinterpret_cast<unsigned char *>(this->gptr());
-
- int n_putback = static_cast<int>(this->gptr() - this->eback());
- if (n_putback > 4)
- n_putback = 4;
-
- std::memmove(&(m_buffer[0]) + (4 - n_putback), this->gptr() - n_putback, n_putback * sizeof(char_type));
-
- int num = unzip_from_stream(&(m_buffer[0]) + 4,
- static_cast<std::streamsize>((m_buffer.size() - 4) * sizeof(char_type)));
-
- if (num <= 0) // ERROR or EOF
- return traits_type::eof();
-
- // reset buffer pointers
- this->setg(&(m_buffer[0]) + (4 - n_putback), // beginning of putback area
- &(m_buffer[0]) + 4, // read position
- &(m_buffer[0]) + 4 + num); // end of buffer
-
- // return next character
- return *reinterpret_cast<unsigned char *>(this->gptr());
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-std::streamsize basic_unzip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::unzip_from_stream(
- char_type * buffer_,
- std::streamsize buffer_size_)
-{
- m_zip_stream.next_out = (byte_buffer_type)buffer_;
- m_zip_stream.avail_out = static_cast<uInt>(buffer_size_ * sizeof(char_type));
- size_t count = m_zip_stream.avail_in;
-
- do
- {
- if (m_zip_stream.avail_in == 0)
- count = fill_input_buffer();
-
- if (m_zip_stream.avail_in)
- m_err = inflate(&m_zip_stream, Z_SYNC_FLUSH);
-
- if (m_err == Z_STREAM_END)
- inflateReset(&m_zip_stream);
- else if (m_err < 0)
- break;
- }
- while (m_zip_stream.avail_out > 0 && count > 0);
-
- std::streamsize n_read = buffer_size_ - m_zip_stream.avail_out / sizeof(char_type);
-
- // check if it is the end
- if (m_zip_stream.avail_out > 0 && m_err == Z_STREAM_END)
- put_back_from_zip_stream();
-
- return n_read;
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-size_t basic_unzip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::fill_input_buffer()
-{
- m_zip_stream.next_in = &(m_input_buffer[0]);
- m_istream.read((char_type *)(&(m_input_buffer[0])),
- static_cast<std::streamsize>(m_input_buffer.size() / sizeof(char_type)));
- return m_zip_stream.avail_in = m_istream.gcount() * sizeof(char_type);
-}
-
-template <typename Elem,
- typename Tr,
- typename ElemA,
- typename ByteT,
- typename ByteAT>
-void basic_unzip_streambuf<Elem, Tr, ElemA, ByteT, ByteAT>::put_back_from_zip_stream()
-{
- if (m_zip_stream.avail_in == 0)
- return;
-
- m_istream.clear(std::ios::goodbit);
- m_istream.seekg(-static_cast<int>(m_zip_stream.avail_in), std::ios_base::cur);
-
- m_zip_stream.avail_in = 0;
-}
-
-} // namespace zlib_stream
-
-
-#endif // INCLUDE_SEQAN_STREAM_IOSTREAM_ZIP_IMPL_H_
diff --git a/include/seqan/stream/iostream_zutil.h b/include/seqan/stream/iostream_zutil.h
deleted file mode 100644
index 4d5ace9..0000000
--- a/include/seqan/stream/iostream_zutil.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/* iostream_zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2002 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* @(#) $Id: iostream_zutil.h,v 1.2 2003/06/28 15:03:05 pelikhan Exp $ */
-
-#ifndef INCLUDE_SEQAN_STREAM_IOSTREAM_ZUTIL_H_
-#define INCLUDE_SEQAN_STREAM_IOSTREAM_ZUTIL_H_
-
-//#include "zlib.h"
-
-#ifdef STDC
-# include <stddef.h>
-# include <string.h>
-# include <stdlib.h>
-#endif
-
-//#define NO_ERRNO_H
-#ifdef NO_ERRNO_H
- int errno;
-#else
- #include <errno.h>
-#endif
-
-#ifndef local
-# define local static
-#endif
-/* compile with -Dlocal if your debugger can't find static symbols */
-
-typedef unsigned char uch;
-typedef uch FAR uchf;
-typedef unsigned short ush;
-typedef ush FAR ushf;
-typedef unsigned long ulg;
-
-extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
-/* (size given to avoid silly warnings with Visual C++) */
-
-#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
-
-#define ERR_RETURN(strm,err) \
- return (strm->msg = (char*)ERR_MSG(err), (err))
-/* To be used only when the state is known to be valid */
-
- /* common constants */
-
-#ifndef DEF_WBITS
-# define DEF_WBITS MAX_WBITS
-#endif
-/* default windowBits for decompression. MAX_WBITS is for compression only */
-
-#if MAX_MEM_LEVEL >= 8
-# define DEF_MEM_LEVEL 8
-#else
-# define DEF_MEM_LEVEL MAX_MEM_LEVEL
-#endif
-/* default memLevel */
-
-#define STORED_BLOCK 0
-#define STATIC_TREES 1
-#define DYN_TREES 2
-/* The three kinds of block type */
-
-#define MIN_MATCH 3
-#define MAX_MATCH 258
-/* The minimum and maximum match lengths */
-
-#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
-
- /* target dependencies */
-
-#ifdef MSDOS
-# define OS_CODE 0x00
-# if defined(__TURBOC__) || defined(__BORLANDC__)
-# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
- /* Allow compilation with ANSI keywords only enabled */
- void _Cdecl farfree( void *block );
- void *_Cdecl farmalloc( unsigned long nbytes );
-# else
-# include <alloc.h>
-# endif
-# else /* MSC or DJGPP */
-# include <malloc.h>
-# endif
-#endif
-
-#ifdef OS2
-# define OS_CODE 0x06
-#endif
-
-#ifdef WIN32 /* Window 95 & Windows NT */
-# define OS_CODE 0x0b
-#endif
-
-#if defined(VAXC) || defined(VMS)
-# define OS_CODE 0x02
-# define F_OPEN(name, mode) \
- fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
-#endif
-
-#ifdef AMIGA
-# define OS_CODE 0x01
-#endif
-
-#if defined(ATARI) || defined(atarist)
-# define OS_CODE 0x05
-#endif
-
-#if defined(MACOS) || defined(TARGET_OS_MAC)
-# define OS_CODE 0x07
-# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
-# include <unix.h> /* for fdopen */
-# else
-# ifndef fdopen
-# define fdopen(fd,mode) NULL /* No fdopen() */
-# endif
-# endif
-#endif
-
-#ifdef __50SERIES /* Prime/PRIMOS */
-# define OS_CODE 0x0F
-#endif
-
-#ifdef TOPS20
-# define OS_CODE 0x0a
-#endif
-
-#if defined(_BEOS_) || defined(RISCOS)
-# define fdopen(fd,mode) NULL /* No fdopen() */
-#endif
-
-#if (defined(_MSC_VER) && (_MSC_VER > 600))
-# define fdopen(fd,type) _fdopen(fd,type)
-#endif
-
-
- /* Common defaults */
-
-#ifndef OS_CODE
-# define OS_CODE 0x03 /* assume Unix */
-#endif
-
-#ifndef F_OPEN
-# define F_OPEN(name, mode) fopen((name), (mode))
-#endif
-
-#ifndef OF
-#define OF(x) x
-#endif
- /* functions */
-
-#ifdef HAVE_STRERROR
- extern char *strerror OF((int));
-# define zstrerror(errnum) strerror(errnum)
-#else
-# define zstrerror(errnum) ""
-#endif
-
-#if defined(pyr)
-# define NO_MEMCPY
-#endif
-#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
- /* Use our own functions for small and medium model with MSC <= 5.0.
- * You may have to use the same strategy for Borland C (untested).
- * The __SC__ check is for Symantec.
- */
-# define NO_MEMCPY
-#endif
-#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
-# define HAVE_MEMCPY
-#endif
-#ifdef HAVE_MEMCPY
-# ifdef SMALL_MEDIUM /* MSDOS small or medium model */
-# define zmemcpy _fmemcpy
-# define zmemcmp _fmemcmp
-# define zmemzero(dest, len) _fmemset(dest, 0, len)
-# else
-# define zmemcpy memcpy
-# define zmemcmp memcmp
-# define zmemzero(dest, len) memset(dest, 0, len)
-# endif
-#else
- extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
- extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
- extern void zmemzero OF((Bytef* dest, uInt len));
-#endif
-
-/* Diagnostic functions */
-#ifdef DEBUG
-# include <stdio.h>
- extern int z_verbose;
- extern void z_error OF((char *m));
-# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
-# define Trace(x) {if (z_verbose>=0) fprintf x ;}
-# define Tracev(x) {if (z_verbose>0) fprintf x ;}
-# define Tracevv(x) {if (z_verbose>1) fprintf x ;}
-# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
-# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
-#else
-# define Assert(cond,msg)
-# define Trace(x)
-# define Tracev(x)
-# define Tracevv(x)
-# define Tracec(c,x)
-# define Tracecv(c,x)
-#endif
-
-
-typedef uLong (ZEXPORT *check_func) OF((uLong check, const Bytef *buf,
- uInt len));
-voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
-void zcfree OF((voidpf opaque, voidpf ptr));
-
-#define ZALLOC(strm, items, size) \
- (*((strm)->zalloc))((strm)->opaque, (items), (size))
-#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
-#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
-
-#ifdef local
-#undef local
-#endif
-
-#endif /* INCLUDE_SEQAN_STREAM_IOSTREAM_ZUTIL_H_ */
diff --git a/include/seqan/stream/lexical_cast.h b/include/seqan/stream/lexical_cast.h
index 2ad58d4..a088f03 100644
--- a/include/seqan/stream/lexical_cast.h
+++ b/include/seqan/stream/lexical_cast.h
@@ -108,9 +108,9 @@ struct BadLexicalCast : ParseError
*
* The following example shows some lexical cast from various sequence types to numbers.
*
- * @include demos/dox/stream/lexical_cast.cpp
+ * @include demos/stream/lexical_cast.cpp
*
- * @include demos/dox/stream/lexical_cast.cpp.stdout
+ * @include demos/stream/lexical_cast.cpp.stdout
*/
// single char
diff --git a/include/seqan/stream/stream_base.h b/include/seqan/stream/stream_base.h
index e47fac1..28a85a6 100644
--- a/include/seqan/stream/stream_base.h
+++ b/include/seqan/stream/stream_base.h
@@ -121,13 +121,14 @@ char const MagicHeader<BZ2File, T>::VALUE[3] = { 0x42, 0x5a, 0x68 }; // bzip2's
template <typename T>
struct FileExtensions<GZFile, T>
{
- static char const * VALUE[1];
+ static char const * VALUE[2];
};
template <typename T>
-char const * FileExtensions<GZFile, T>::VALUE[1] =
+char const * FileExtensions<GZFile, T>::VALUE[2] =
{
- ".gz" // default output extension
+ ".gz", // default output extension
+ ".z"
};
@@ -150,13 +151,14 @@ char const * FileExtensions<BgzfFile, T>::VALUE[2] =
template <typename T>
struct FileExtensions<BZ2File, T>
{
- static char const * VALUE[1];
+ static char const * VALUE[2];
};
template <typename T>
-char const * FileExtensions<BZ2File, T>::VALUE[1] =
+char const * FileExtensions<BZ2File, T>::VALUE[2] =
{
- ".bz2" // default output extension
+ ".bz2", // default output extension
+ ".bz"
};
// ============================================================================
diff --git a/include/seqan/stream/stream_compressor.h b/include/seqan/stream/stream_compressor.h
index 51e5bb6..268fcde 100644
--- a/include/seqan/stream/stream_compressor.h
+++ b/include/seqan/stream/stream_compressor.h
@@ -39,7 +39,7 @@
#if SEQAN_HAS_ZLIB
// Zlib headers
#include <zlib.h>
-#include "iostream_zutil.h"
+#include "zipstream/zutil.h"
#endif
#include <algorithm> // copy
diff --git a/include/seqan/stream/tokenization.h b/include/seqan/stream/tokenization.h
index 31d587d..b7bfcb2 100644
--- a/include/seqan/stream/tokenization.h
+++ b/include/seqan/stream/tokenization.h
@@ -255,7 +255,7 @@ template <typename TTarget, typename TFwdIterator, typename TStopFunctor, typena
inline void
_readUntil(TTarget &target, TFwdIterator &iter, TStopFunctor &stopFunctor, TIgnoreFunctor &ignoreFunctor, TIChunk, TOChunk)
{
- typename RemoveConst<typename Value<TFwdIterator>::Type>::Type val;
+ typename Value<TFwdIterator>::Type val;
for (; !atEnd(iter); ++iter)
{
if (SEQAN_UNLIKELY(stopFunctor(val = *iter)))
diff --git a/include/seqan/stream/virtual_stream.h b/include/seqan/stream/virtual_stream.h
index d94361c..1ef2059 100644
--- a/include/seqan/stream/virtual_stream.h
+++ b/include/seqan/stream/virtual_stream.h
@@ -40,14 +40,23 @@
#ifndef SEQAN_STREAM_VIRTUAL_STREAM_
#define SEQAN_STREAM_VIRTUAL_STREAM_
+#if SEQAN_HAS_ZLIB
+#include "zipstream/zipstream.h"
+#include "zipstream/bgzfstream.h"
+#endif
+
+#if SEQAN_HAS_BZIP2
+#include "zipstream/bzip2stream.h"
+#endif
+
namespace seqan {
// ============================================================================
// Forwards
// ============================================================================
-template <typename TStream>
-struct StreamFormat;
+template <typename TFormattedFile>
+struct FileFormat;
// ============================================================================
// Tags, Enums
@@ -75,28 +84,6 @@ typedef
#endif
CompressedFileTypes; // if TagSelector is set to -1, the file format is auto-detected
-// --------------------------------------------------------------------------
-// TagList CompressedFileTypes
-// --------------------------------------------------------------------------
-// NOTE(h-2): this currently lacks BGZF, so that we don't get .fasta.bam, .m8.bam ...
-// in the long term bgzf should just not contain .bam but that would require more changes
-
-typedef
-#if SEQAN_HAS_ZLIB
- TagList<GZFile,
-#endif
-#if SEQAN_HAS_BZIP2
- TagList<BZ2File,
-#endif
- TagList<Nothing>
-#if SEQAN_HAS_BZIP2
- >
-#endif
-#if SEQAN_HAS_ZLIB
- >
-#endif
- CompressedFileTypesWithoutBgzf_;
-
// ============================================================================
// Metafunctions
// ============================================================================
@@ -199,18 +186,18 @@ struct VirtualStreamFactoryContext_;
// a compressed stream lives in the VirtualStreamContext_ and provides a basic_streambuf
// base class
-template <typename TValue, typename TTraits>
+template <typename TValue>
struct VirtualStreamContextBase_
{
- std::basic_streambuf<TValue, TTraits> *streamBuf;
+ std::basic_streambuf<TValue> *streamBuf;
VirtualStreamContextBase_(): streamBuf() {}
virtual ~VirtualStreamContextBase_() {}
};
// generic subclass with virtual destructor
-template <typename TValue, typename TDirection, typename TTraits, typename TFormatTag = void>
+template <typename TValue, typename TDirection, typename TFormatTag = void>
struct VirtualStreamContext_:
- VirtualStreamContextBase_<TValue, TTraits>
+ VirtualStreamContextBase_<TValue>
{
typename VirtualStreamSwitch_<TValue, TDirection, TFormatTag>::Type stream;
@@ -223,9 +210,9 @@ struct VirtualStreamContext_:
};
// special case: no compression, we simply forward the file stream
-template <typename TValue, typename TDirection, typename TTraits>
-struct VirtualStreamContext_<TValue, TDirection, TTraits, Nothing>:
- VirtualStreamContextBase_<TValue, TTraits>
+template <typename TValue, typename TDirection>
+struct VirtualStreamContext_<TValue, TDirection, Nothing>:
+ VirtualStreamContextBase_<TValue>
{
template <typename TObject>
VirtualStreamContext_(TObject &object)
@@ -237,35 +224,21 @@ struct VirtualStreamContext_<TValue, TDirection, TTraits, Nothing>:
// --------------------------------------------------------------------------
// Class VirtualStream
// --------------------------------------------------------------------------
-// The VirtualStream class auto-detects data compression from file name or stream.
-// It inherits from std::basic_Xstream to provide the convenient stream interface.
-// It accepts a file or stream.
-
-/*!
- * @class VirtualStream
- * @implements StreamConcept
- * @headerfile <seqan/stream.h>
- * @brief Provides seamless (de)compression for another @link StreamConcept stream @endlink.
- *
- * @signature template <typename TValue, typename TDirection, typename TTraits>
- * class VirtualStream;
- *
- * @tparam TValue The stream value type, e.g. <tt>char</tt>.
- * @tparam TDirection The stream direction, one of @link DirectionTags @endlink.
- * @tparam TTraits The stream traits, defaults to <tt>std::char_traits<TValue></tt>.
- */
+// The VirtualStream class handles a file or input stream and auto-detects data
+// compression from file name or stream.
+// We inherit from std::basic_Xstream to provide the convenient stream interface.
template <typename TValue, typename TDirection, typename TTraits = std::char_traits<TValue> >
class VirtualStream: public BasicStream<TValue, TDirection, TTraits>::Type
{
public:
typedef typename BasicStream<TValue, TDirection, TTraits>::Type TStream; // the stream base class we expose
- typedef std::basic_fstream<TValue, TTraits> TFile; // if a real file should be opened
-// typedef FileStream<TValue, TDirection> TFile; // if a real file should be opened
+ typedef std::fstream TFile; // if a real file should be opened
+// typedef FileStream<char, TDirection> TFile; // if a real file should be opened
typedef BufferedStream<TStream, TDirection> TBufferedStream; // if input stream is not buffered
- typedef std::basic_streambuf<TValue, TTraits> TStreamBuffer; // the streambuf to use
- typedef VirtualStreamContextBase_<TValue, TTraits> TVirtualStreamContext; // the owner of the streambuf
- typedef typename StreamFormat<VirtualStream>::Type TFormat; // detected stream format
+ typedef std::basic_streambuf<TValue> TStreamBuffer; // the streambuf to use
+ typedef VirtualStreamContextBase_<TValue> TVirtualStreamContext; // the owner of the streambuf
+ typedef typename FileFormat<VirtualStream>::Type TFormat; // detected format
TFile file;
TBufferedStream bufferedStream;
@@ -273,20 +246,6 @@ public:
TVirtualStreamContext *context;
TFormat format;
- /*!
- * @fn VirtualStream::VirtualStream
- * @brief Default constructor and construction from stream, stream buffer, or filename.
- *
- * @signature VirtualStream::VirtualStream();
- * @signature VirtualStream::VirtualStream(stream);
- * @signature VirtualStream::VirtualStream(streamBuf);
- * @signature VirtualStream::VirtualStream(fileName, openMode);
- *
- * @param[in] stream The @link StreamConcept stream @endlink to attach to.
- * @param[in] streamBuf The @link StreamBuffer stream buffer @endlink to attach to.
- * @param[in] fileName Path to the file to open. Type: <tt>char const *</tt>.
- * @param[in] openMode The open mode. Type: <tt>int</tt>.
- */
VirtualStream():
TStream(NULL),
streamBuf(),
@@ -342,14 +301,6 @@ public:
return streamBuf;
}
- /*!
- * @fn VirtualStream::getFileExtensions
- * @brief Static function that returns a list of allowed file format extension.
- *
- * @signature TExtensionVector getFileExtensions()
- *
- * @return TExtensionVector A <tt>std::vector<std::string></tt> with the allowed file extensions.
- */
static std::vector<std::string>
getFileExtensions()
{
@@ -360,26 +311,11 @@ public:
};
// ----------------------------------------------------------------------------
-// Metafunction StreamFormat
+// Metafunction FileFormats
// ----------------------------------------------------------------------------
-/*!
- * @defgroup StreamFormats Stream Formats
- * @brief Tags for identifying stream formats.
- */
-
-/*!
- * @mfn VirtualStream#StreamFormat
- * @brief Metafunction for retrieving the format type of a @link VirtualStream @endlink.
- *
- * @signature StreamFormat<TStream>::Type;
- *
- * @tparam TStream The stream file type to query for its file format type.
- * @return Type The resulting @link VirtualStream @endlink file formats type.
- */
-
template <typename TValue, typename TDirection, typename TTraits>
-struct StreamFormat<VirtualStream<TValue, TDirection, TTraits> >
+struct FileFormat<VirtualStream<TValue, TDirection, TTraits> >
{
typedef TagSelector<CompressedFileTypes> Type;
};
@@ -473,13 +409,32 @@ struct Value<VirtualStreamFactoryContext_<TVirtualStream> >
// --------------------------------------------------------------------------
// Function tagApply()
// --------------------------------------------------------------------------
-// NOTE(esiragusa): private / impl.
template <typename TValue, typename TDirection, typename TTraits, typename TFormat>
-inline VirtualStreamContextBase_<TValue, TTraits> *
+inline VirtualStreamContextBase_<TValue> *
tagApply(VirtualStreamFactoryContext_<VirtualStream<TValue, TDirection, TTraits> > &ctx, Tag<TFormat>)
{
- return new VirtualStreamContext_<TValue, TDirection, TTraits, Tag<TFormat> >(ctx.stream);
+ return new VirtualStreamContext_<TValue, TDirection, Tag<TFormat> >(ctx.stream);
+}
+
+
+template <typename TContext>
+inline typename Value<TContext>::Type
+tagApply(TContext &, TagSelector<>)
+{
+ return typename Value<TContext>::Type();
+}
+
+template <typename TContext, typename TTagList>
+inline typename Value<TContext>::Type
+tagApply(TContext &ctx, TagSelector<TTagList> &format)
+{
+ typedef typename TTagList::Type TFormatTag;
+
+ if (isEqual(format, TFormatTag()))
+ return tagApply(ctx, TFormatTag());
+
+ return tagApply(ctx, static_cast<typename TagSelector<TTagList>::Base &>(format));
}
// ----------------------------------------------------------------------------
@@ -552,20 +507,6 @@ _getUncompressedBasename(TFilename const & fname, TagSelector<TTagList> const &
// Function open()
// --------------------------------------------------------------------------
-/*!
- * @fn VirtualStream#open
- * @brief Open a VirtualStream.
- *
- * @signature bool open(stream, fileStream);
- * @signature bool open(stream, fileName, openMode);
- *
- * @param[in,out] stream The VirtualStream to open.
- * @param[in,out fileStream File stream to attach to. Type: <tt>std::fstream</tt>.
- * @param[in] fileName Path to the file to open. Type: <tt>char const *</tt>.
- * @param[in] openMode The open mode. Type: <tt>int</tt>.
- * @return bool <tt>true</tt> in the case of success, <tt>false</tt> otherwise.
- */
-
template <typename TValue, typename TDirection, typename TTraits, typename TStream, typename TCompressionType>
inline SEQAN_FUNC_DISABLE_IF(IsPointer<TStream>, bool)
open(VirtualStream<TValue, TDirection, TTraits> &stream, TStream &fileStream, TCompressionType & compressionType)
@@ -619,7 +560,7 @@ inline SEQAN_FUNC_DISABLE_IF(IsPointer<TStream>, bool)
open(VirtualStream<TValue, Input> &stream, TStream &fileStream)
{
// detect compression type from file extension
- assign(stream.format, typename StreamFormat<VirtualStream<TValue, Input> >::Type());
+ assign(stream.format, typename FileFormat<VirtualStream<TValue, Input> >::Type());
return open(stream, fileStream, stream.format);
}
@@ -637,7 +578,7 @@ open(VirtualStream<TValue, TDirection, TTraits> &stream,
return false;
// detect compression type from file extension
- assign(stream.format, typename StreamFormat<TVirtualStream>::Type());
+ assign(stream.format, typename FileFormat<TVirtualStream>::Type());
if (IsSameType<TDirection, Input>::VALUE && _isPipe(fileName))
open(stream, stream.file, stream.format); // read from a pipe (without file extension)
@@ -664,16 +605,6 @@ open(VirtualStream<TValue, TDirection, TTraits> &stream,
// Function close()
// --------------------------------------------------------------------------
-/*!
- * @fn VirtualStream#close
- * @brief Close a VirtualStream.
- *
- * @signature bool close(stream);
- *
- * @param[in,out] stream The VirtualStream to close.
- * @return bool <tt>true</tt> in the case of success, <tt>false</tt> otherwise.
- */
-
template <typename TValue, typename TDirection, typename TTraits>
inline bool
close(VirtualStream<TValue, TDirection, TTraits> &stream)
@@ -681,7 +612,7 @@ close(VirtualStream<TValue, TDirection, TTraits> &stream)
delete stream.context;
stream.context = NULL;
stream.streamBuf = NULL;
- assign(stream.format, typename StreamFormat<VirtualStream<TValue, TDirection, TTraits> >::Type());
+ assign(stream.format, typename FileFormat<VirtualStream<TValue, TDirection, TTraits> >::Type());
return !stream.file.is_open() || close(stream.file);
}
@@ -689,18 +620,8 @@ close(VirtualStream<TValue, TDirection, TTraits> &stream)
// Function format()
// ----------------------------------------------------------------------------
-/*!
- * @fn VirtualStream#format
- * @brief Return the format of a VirtualStream.
- *
- * @signature TFormat format(stream);
- *
- * @param[in] stream The VirtualStream to check.
- * @return TFormat The type as returned from @link VirtualStream#StreamFormat @endlink.
- */
-
template <typename TValue, typename TDirection, typename TTraits>
-inline typename StreamFormat<VirtualStream<TValue, TDirection, TTraits> >::Type &
+inline typename FileFormat<VirtualStream<TValue, TDirection, TTraits> >::Type &
format(VirtualStream<TValue, TDirection, TTraits> &stream)
{
return stream.format;
diff --git a/include/seqan/stream/zipstream/bgzfstream.h b/include/seqan/stream/zipstream/bgzfstream.h
new file mode 100644
index 0000000..0228a37
--- /dev/null
+++ b/include/seqan/stream/zipstream/bgzfstream.h
@@ -0,0 +1,969 @@
+/*
+zipstream Library License:
+--------------------------
+
+The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution
+
+Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003 (original zlib stream)
+Author: David Weese, dave.weese at gmail.com, 2014 (extension to parallel block-wise compression in bgzf format)
+*/
+
+#ifndef BGZFSTREAM_HPP
+#define BGZFSTREAM_HPP
+
+
+#include <vector>
+#include <iostream>
+#include <algorithm>
+#include <zlib.h>
+#include "zutil.h"
+
+namespace seqan {
+
+/// default gzip buffer size,
+/// change this to suite your needs
+const size_t default_buffer_size = 4096;
+
+const unsigned BGZF_MAX_BLOCK_SIZE = 64 * 1024;
+const unsigned BGZF_BLOCK_HEADER_LENGTH = 18;
+const unsigned BGZF_BLOCK_FOOTER_LENGTH = 8;
+const unsigned ZLIB_BLOCK_OVERHEAD = 5; // 5 bytes block overhead (see 3.2.4. at http://www.gzip.org/zlib/rfc-deflate.html)
+
+// Reduce the maximal input size, such that the compressed data
+// always fits in one block even for level Z_NO_COMPRESSION.
+const unsigned BGZF_BLOCK_SIZE = BGZF_MAX_BLOCK_SIZE - BGZF_BLOCK_HEADER_LENGTH - BGZF_BLOCK_FOOTER_LENGTH - ZLIB_BLOCK_OVERHEAD;
+
+/// Compression strategy, see bgzf doc.
+enum EStrategy
+{
+ StrategyFiltered = 1,
+ StrategyHuffmanOnly = 2,
+ DefaultStrategy = 0
+};
+
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bgzf_streambuf : public std::basic_streambuf<Elem, Tr>
+{
+public:
+ typedef std::basic_ostream<Elem, Tr>& ostream_reference;
+ typedef ElemA char_allocator_type;
+ typedef ByteT byte_type;
+ typedef ByteAT byte_allocator_type;
+ typedef byte_type* byte_buffer_type;
+ typedef typename Tr::char_type char_type;
+ typedef typename Tr::int_type int_type;
+
+ typedef ConcurrentQueue<size_t, Suspendable<Limit> > TJobQueue;
+
+ struct OutputBuffer
+ {
+ char buffer[BGZF_MAX_BLOCK_SIZE];
+ size_t size;
+ };
+
+ struct BufferWriter
+ {
+ ostream_reference ostream;
+
+ BufferWriter(ostream_reference ostream) :
+ ostream(ostream)
+ {}
+
+ bool operator() (OutputBuffer const & outputBuffer)
+ {
+ ostream.write(outputBuffer.buffer, outputBuffer.size);
+ return ostream.good();
+ }
+ };
+
+ struct CompressionJob
+ {
+ typedef std::vector<char_type, char_allocator_type> TBuffer;
+
+ TBuffer buffer;
+ size_t size;
+ OutputBuffer *outputBuffer;
+
+ CompressionJob() :
+ buffer(BGZF_BLOCK_SIZE / sizeof(char_type), 0),
+ size(0),
+ outputBuffer(NULL)
+ {}
+ };
+
+ // string of recycable jobs
+ size_t numThreads;
+ size_t numJobs;
+ String<CompressionJob> jobs;
+ TJobQueue jobQueue;
+ TJobQueue idleQueue;
+ Serializer<
+ OutputBuffer,
+ BufferWriter> serializer;
+
+ size_t currentJobId;
+ bool currentJobAvail;
+
+
+ struct CompressionThread
+ {
+ basic_bgzf_streambuf *streamBuf;
+ CompressionContext<BgzfFile> compressionCtx;
+ size_t threadNum;
+
+ void operator()()
+ {
+ ScopedReadLock<TJobQueue> readLock(streamBuf->jobQueue);
+ ScopedWriteLock<TJobQueue> writeLock(streamBuf->idleQueue);
+
+ // wait for a new job to become available
+ bool success = true;
+ while (success)
+ {
+ size_t jobId = -1;
+ if (!popFront(jobId, streamBuf->jobQueue))
+ return;
+
+ CompressionJob &job = streamBuf->jobs[jobId];
+
+ // compress block with zlib
+ job.outputBuffer->size = _compressBlock(
+ job.outputBuffer->buffer, sizeof(job.outputBuffer->buffer),
+ &job.buffer[0], job.size, compressionCtx);
+
+ success = releaseValue(streamBuf->serializer, job.outputBuffer);
+ appendValue(streamBuf->idleQueue, jobId);
+ }
+ }
+ };
+
+ // array of worker threads
+ Thread<CompressionThread> *threads;
+
+ basic_bgzf_streambuf(ostream_reference ostream_,
+ size_t numThreads = 16,
+ size_t jobsPerThread = 8) :
+ numThreads(numThreads),
+ numJobs(numThreads * jobsPerThread),
+ jobQueue(numJobs),
+ idleQueue(numJobs),
+ serializer(ostream_, numThreads * jobsPerThread)
+ {
+ resize(jobs, numJobs, Exact());
+ currentJobId = 0;
+
+ lockWriting(jobQueue);
+ lockReading(idleQueue);
+ setReaderWriterCount(jobQueue, numThreads, 1);
+ setReaderWriterCount(idleQueue, 1, numThreads);
+
+ for (unsigned i = 0; i < numJobs; ++i)
+ {
+ bool success = appendValue(idleQueue, i);
+ ignoreUnusedVariableWarning(success);
+ SEQAN_ASSERT(success);
+ }
+
+ threads = new Thread<CompressionThread>[numThreads];
+ for (unsigned i = 0; i < numThreads; ++i)
+ {
+ threads[i].worker.streamBuf = this;
+ threads[i].worker.threadNum = i;
+ run(threads[i]);
+ }
+
+ currentJobAvail = popFront(currentJobId, idleQueue);
+ SEQAN_ASSERT(currentJobAvail);
+
+ CompressionJob &job = jobs[currentJobId];
+ job.outputBuffer = aquireValue(serializer);
+ this->setp(&job.buffer[0], &job.buffer[0] + (job.buffer.size() - 1));
+ }
+
+ ~basic_bgzf_streambuf()
+ {
+ // the buffer is now (after addFooter()) and flush will append the empty EOF marker
+ flush(true);
+
+ unlockWriting(jobQueue);
+ unlockReading(idleQueue);
+
+ for (unsigned i = 0; i < numThreads; ++i)
+ waitFor(threads[i]);
+ delete[] threads;
+ }
+
+ bool compressBuffer(size_t size)
+ {
+ // submit current job
+ if (currentJobAvail)
+ {
+ jobs[currentJobId].size = size;
+ appendValue(jobQueue, currentJobId);
+ }
+
+ // recycle existing idle job
+ if (!(currentJobAvail = popFront(currentJobId, idleQueue)))
+ return false;
+
+ jobs[currentJobId].outputBuffer = aquireValue(serializer);
+
+ return serializer;
+ }
+
+ int_type overflow(int_type c)
+ {
+ int w = static_cast<int>(this->pptr() - this->pbase());
+ if (c != EOF)
+ {
+ *this->pptr() = c;
+ ++w;
+ }
+ if (compressBuffer(w))
+ {
+ CompressionJob &job = jobs[currentJobId];
+ this->setp(&job.buffer[0], &job.buffer[0] + (job.buffer.size() - 1));
+ return c;
+ }
+ else
+ {
+ return EOF;
+ }
+ }
+
+ std::streamsize flush(bool flushEmptyBuffer = false)
+ {
+ int w = static_cast<int>(this->pptr() - this->pbase());
+ if ((w != 0 || flushEmptyBuffer) && compressBuffer(w))
+ {
+ CompressionJob &job = jobs[currentJobId];
+ this->setp(&job.buffer[0], &job.buffer[0] + (job.buffer.size() - 1));
+ }
+ else
+ {
+ w = 0;
+ }
+
+ // wait for running compressor threads
+ waitForMinSize(idleQueue, numJobs - 1);
+
+ serializer.worker.ostream.flush();
+ return w;
+ }
+
+ int sync()
+ {
+ if (this->pptr() != this->pbase())
+ {
+ int c = overflow(EOF);
+ if (c == EOF)
+ return -1;
+ }
+ return 0;
+ }
+
+ void addFooter()
+ {
+ // we flush the filled buffer here, so that an empty (EOF) buffer is flushed in the d'tor
+ if (this->pptr() != this->pbase())
+ overflow(EOF);
+ }
+
+ /// returns a reference to the output stream
+ ostream_reference get_ostream() const { return serializer.worker.ostream; };
+};
+
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_unbgzf_streambuf :
+ public std::basic_streambuf<Elem, Tr>
+{
+public:
+ typedef std::basic_istream<Elem, Tr>& istream_reference;
+ typedef ElemA char_allocator_type;
+ typedef ByteT byte_type;
+ typedef ByteAT byte_allocator_type;
+ typedef byte_type* byte_buffer_type;
+ typedef typename Tr::char_type char_type;
+ typedef typename Tr::int_type int_type;
+ typedef typename Tr::off_type off_type;
+ typedef typename Tr::pos_type pos_type;
+
+ typedef std::vector<char_type, char_allocator_type> TBuffer;
+ typedef ConcurrentQueue<int, Suspendable<Limit> > TJobQueue;
+
+ static const size_t MAX_PUTBACK = 4;
+
+ struct Serializer
+ {
+ istream_reference istream;
+ Mutex lock;
+ IOError *error;
+ off_type fileOfs;
+
+ Serializer(istream_reference istream) :
+ istream(istream),
+ lock(false),
+ error(NULL),
+ fileOfs(0u)
+ {}
+
+ ~Serializer()
+ {
+ delete error;
+ }
+ };
+
+ Serializer serializer;
+
+ struct DecompressionJob
+ {
+ typedef std::vector<byte_type, byte_allocator_type> TInputBuffer;
+
+ TInputBuffer inputBuffer;
+ TBuffer buffer;
+ off_type fileOfs;
+ int size;
+
+ CriticalSection cs;
+ Condition readyEvent;
+ bool ready;
+
+ DecompressionJob() :
+ inputBuffer(BGZF_MAX_BLOCK_SIZE, 0),
+ buffer(MAX_PUTBACK + BGZF_MAX_BLOCK_SIZE / sizeof(char_type), 0),
+ fileOfs(),
+ size(0),
+ readyEvent(cs),
+ ready(true)
+ {}
+
+ DecompressionJob(DecompressionJob const &other) :
+ inputBuffer(other.inputBuffer),
+ buffer(other.buffer),
+ fileOfs(other.fileOfs),
+ size(other.size),
+ readyEvent(cs),
+ ready(other.ready)
+ {}
+ };
+
+ // string of recycable jobs
+ size_t numThreads;
+ size_t numJobs;
+ String<DecompressionJob> jobs;
+ TJobQueue runningQueue;
+ TJobQueue todoQueue;
+ int currentJobId;
+
+ struct DecompressionThread
+ {
+ basic_unbgzf_streambuf *streamBuf;
+ CompressionContext<BgzfFile> compressionCtx;
+
+ void operator()()
+ {
+ ScopedReadLock<TJobQueue> readLock(streamBuf->todoQueue);
+ ScopedWriteLock<TJobQueue> writeLock(streamBuf->runningQueue);
+
+ // wait for a new job to become available
+ while (true)
+ {
+ int jobId = -1;
+ if (!popFront(jobId, streamBuf->todoQueue))
+ return;
+
+ DecompressionJob &job = streamBuf->jobs[jobId];
+ size_t tailLen = 0;
+
+ // typically the idle queue contains only ready jobs
+ // however, if seek() fast forwards running jobs into the todoQueue
+ // the caller defers the task of waiting to the decompression threads
+ if (!job.ready)
+ {
+ ScopedLock<CriticalSection> lock(job.cs);
+ if (!job.ready)
+ {
+ waitFor(job.readyEvent);
+ job.ready = true;
+ }
+ }
+
+ {
+ ScopedLock<Mutex> scopedLock(streamBuf->serializer.lock);
+
+ if (streamBuf->serializer.error != NULL)
+ return;
+
+ // remember start offset (for tellg later)
+ job.fileOfs = streamBuf->serializer.fileOfs;
+ job.size = -1;
+
+ // only load if not at EOF
+ if (job.fileOfs != -1)
+ {
+ // read header
+ streamBuf->serializer.istream.read(
+ (char*)&job.inputBuffer[0],
+ BGZF_BLOCK_HEADER_LENGTH);
+
+ if (!streamBuf->serializer.istream.good())
+ {
+ streamBuf->serializer.fileOfs = -1;
+ if (streamBuf->serializer.istream.eof())
+ goto eofSkip;
+ streamBuf->serializer.error = new IOError("Stream read error.");
+ return;
+ }
+
+ // check header
+ if (!_bgzfCheckHeader(&job.inputBuffer[0]))
+ {
+ streamBuf->serializer.fileOfs = -1;
+ streamBuf->serializer.error = new IOError("Invalid BGZF block header.");
+ return;
+ }
+
+ // extract length of compressed data
+ tailLen = _bgzfUnpack16(&job.inputBuffer[0] + 16) + 1u - BGZF_BLOCK_HEADER_LENGTH;
+
+ // read compressed data and tail
+ streamBuf->serializer.istream.read(
+ (char*)&job.inputBuffer[0] + BGZF_BLOCK_HEADER_LENGTH,
+ tailLen);
+
+ if (!streamBuf->serializer.istream.good())
+ {
+ streamBuf->serializer.fileOfs = -1;
+ if (streamBuf->serializer.istream.eof())
+ goto eofSkip;
+ streamBuf->serializer.error = new IOError("Stream read error.");
+ return;
+ }
+
+ streamBuf->serializer.fileOfs += BGZF_BLOCK_HEADER_LENGTH + tailLen;
+ job.ready = false;
+
+ eofSkip:
+ streamBuf->serializer.istream.clear(
+ streamBuf->serializer.istream.rdstate() & ~std::ios_base::failbit);
+ }
+
+ if (!appendValue(streamBuf->runningQueue, jobId))
+ {
+ // signal that job is ready
+ {
+ ScopedLock<CriticalSection> lock(job.cs);
+ job.ready = true;
+ signal(job.readyEvent);
+ }
+ return;
+ }
+ }
+
+ if (!job.ready)
+ {
+ // decompress block
+ job.size = _decompressBlock(
+ &job.buffer[0] + MAX_PUTBACK, capacity(job.buffer),
+ &job.inputBuffer[0], BGZF_BLOCK_HEADER_LENGTH + tailLen, compressionCtx);
+
+ // signal that job is ready
+ {
+ ScopedLock<CriticalSection> lock(job.cs);
+ job.ready = true;
+ signal(job.readyEvent);
+ }
+ }
+ }
+ }
+ };
+
+ // array of worker threads
+ Thread<DecompressionThread> *threads;
+ TBuffer putbackBuffer;
+
+ basic_unbgzf_streambuf(istream_reference istream_,
+ size_t numThreads = 16,
+ size_t jobsPerThread = 8) :
+ serializer(istream_),
+ numThreads(numThreads),
+ numJobs(numThreads * jobsPerThread),
+ runningQueue(numJobs),
+ todoQueue(numJobs),
+ putbackBuffer(MAX_PUTBACK)
+ {
+ resize(jobs, numJobs, Exact());
+ currentJobId = -1;
+
+ lockReading(runningQueue);
+ lockWriting(todoQueue);
+ setReaderWriterCount(runningQueue, 1, numThreads);
+ setReaderWriterCount(todoQueue, numThreads, 1);
+
+ for (unsigned i = 0; i < numJobs; ++i)
+ {
+ bool success = appendValue(todoQueue, i);
+ ignoreUnusedVariableWarning(success);
+ SEQAN_ASSERT(success);
+ }
+
+ threads = new Thread<DecompressionThread>[numThreads];
+ for (unsigned i = 0; i < numThreads; ++i)
+ {
+ threads[i].worker.streamBuf = this;
+ run(threads[i]);
+ }
+ }
+
+ ~basic_unbgzf_streambuf()
+ {
+ unlockWriting(todoQueue);
+ unlockReading(runningQueue);
+
+ for (unsigned i = 0; i < numThreads; ++i)
+ waitFor(threads[i]);
+ delete[] threads;
+ }
+
+ int_type underflow()
+ {
+ // no need to use the next buffer?
+ if (this->gptr() && this->gptr() < this->egptr())
+ return Tr::to_int_type(*this->gptr());
+
+ size_t putback = this->gptr() - this->eback();
+ if (putback > MAX_PUTBACK)
+ putback = MAX_PUTBACK;
+
+ // save at most MAX_PUTBACK characters from previous page to putback buffer
+ if (putback != 0)
+ std::copy(
+ this->gptr() - putback,
+ this->gptr(),
+ &putbackBuffer[0]);
+
+ if (currentJobId >= 0)
+ appendValue(todoQueue, currentJobId);
+
+ while (true)
+ {
+ if (!popFront(currentJobId, runningQueue))
+ {
+ currentJobId = -1;
+ SEQAN_ASSERT(serializer.error != NULL);
+ if (serializer.error != NULL)
+ throw *serializer.error;
+ return EOF;
+ }
+
+ DecompressionJob &job = jobs[currentJobId];
+
+ // restore putback buffer
+ this->setp(&job.buffer[0], &job.buffer[0] + (job.buffer.size() - 1));
+ if (putback != 0)
+ std::copy(
+ &putbackBuffer[0],
+ &putbackBuffer[0] + putback,
+ &job.buffer[0] + (MAX_PUTBACK - putback));
+
+ // wait for the end of decompression
+ {
+ ScopedLock<CriticalSection> lock(job.cs);
+ if (!job.ready)
+ waitFor(job.readyEvent);
+ }
+
+ size_t size = (job.size != -1)? job.size : 0;
+
+ // reset buffer pointers
+ this->setg(
+ &job.buffer[0] + (MAX_PUTBACK - putback), // beginning of putback area
+ &job.buffer[0] + MAX_PUTBACK, // read position
+ &job.buffer[0] + (MAX_PUTBACK + size)); // end of buffer
+
+ if (job.size == -1)
+ return EOF;
+ else if (job.size > 0)
+ return Tr::to_int_type(*this->gptr()); // return next character
+ }
+ }
+
+ pos_type seekoff(off_type ofs, std::ios_base::seekdir dir, std::ios_base::openmode openMode)
+ {
+ if ((openMode & (std::ios_base::in | std::ios_base::out)) == std::ios_base::in)
+ {
+ if (dir == std::ios_base::cur && ofs >= 0)
+ {
+ // forward delta seek
+ while (currentJobId < 0 || this->egptr() - this->gptr() < ofs)
+ {
+ ofs -= this->egptr() - this->gptr();
+ if (this->underflow() == EOF)
+ break;
+ }
+
+ if (currentJobId >= 0 && ofs <= this->egptr() - this->gptr())
+ {
+ DecompressionJob &job = jobs[currentJobId];
+
+ // reset buffer pointers
+ this->setg(
+ this->eback(), // beginning of putback area
+ this->gptr() + ofs, // read position
+ this->egptr()); // end of buffer
+
+ return pos_type((job.fileOfs << 16) + ((this->gptr() - &job.buffer[MAX_PUTBACK])));
+ }
+
+ }
+ else if (dir == std::ios_base::beg)
+ {
+ // random seek
+ std::streampos destFileOfs = ofs >> 16;
+
+ // are we in the same block?
+ if (currentJobId >= 0 && jobs[currentJobId].fileOfs == (off_type)destFileOfs)
+ {
+ DecompressionJob &job = jobs[currentJobId];
+
+ // reset buffer pointers
+ this->setg(
+ this->eback(), // beginning of putback area
+ &job.buffer[0] + (MAX_PUTBACK + (ofs & 0xffff)), // read position
+ this->egptr()); // end of buffer
+ return ofs;
+ }
+
+ // ok, different block
+ {
+ ScopedLock<Mutex> scopedLock(serializer.lock);
+
+ // remove all running jobs and put them in the idle queue unless we
+ // find our seek target
+
+ if (currentJobId >= 0)
+ appendValue(todoQueue, currentJobId);
+
+ // Note that if we are here the current job does not represent the sought block.
+ // Hence if the running queue is empty we need to explicitly unset the jobId,
+ // otherwise we would not update the serializers istream pointer to the correct position.
+ if (empty(runningQueue))
+ currentJobId = -1;
+
+ // empty is thread-safe in serializer.lock
+ while (!empty(runningQueue))
+ {
+ popFront(currentJobId, runningQueue);
+
+ if (jobs[currentJobId].fileOfs == (off_type)destFileOfs)
+ break;
+
+ // push back useless job
+ appendValue(todoQueue, currentJobId);
+ currentJobId = -1;
+ }
+
+ if (currentJobId == -1)
+ {
+ SEQAN_ASSERT(empty(runningQueue));
+ serializer.istream.clear(serializer.istream.rdstate() & ~std::ios_base::eofbit);
+ if (serializer.istream.rdbuf()->pubseekpos(destFileOfs, std::ios_base::in) == destFileOfs)
+ serializer.fileOfs = destFileOfs;
+ else
+ currentJobId = -2; // temporarily signals a seek error
+ }
+ }
+
+ // if our block wasn't in the running queue yet, it should now
+ // be the first that falls out after modifying serializer.fileOfs
+ if (currentJobId == -1)
+ popFront(currentJobId, runningQueue);
+ else if (currentJobId == -2)
+ currentJobId = -1;
+
+ if (currentJobId >= 0)
+ {
+ // wait for the end of decompression
+ DecompressionJob &job = jobs[currentJobId];
+ {
+ ScopedLock<CriticalSection> lock(job.cs);
+ if (!job.ready)
+ waitFor(job.readyEvent);
+ }
+
+ SEQAN_ASSERT_EQ(job.fileOfs, (off_type)destFileOfs);
+
+ // reset buffer pointers
+ this->setg(
+ &job.buffer[0] + MAX_PUTBACK, // no putback area
+ &job.buffer[0] + (MAX_PUTBACK + (ofs & 0xffff)), // read position
+ &job.buffer[0] + (MAX_PUTBACK + job.size)); // end of buffer
+ return ofs;
+ }
+ }
+ }
+ return pos_type(off_type(-1));
+ }
+
+ pos_type seekpos(pos_type pos, std::ios_base::openmode openMode)
+ {
+ return seekoff(off_type(pos), std::ios_base::beg, openMode);
+ }
+
+ /// returns the compressed input istream
+ istream_reference get_istream() { return serializer.istream;};
+};
+
+/* \brief Base class for zip ostreams
+
+Contains a basic_bgzf_streambuf.
+*/
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bgzf_ostreambase : virtual public std::basic_ios<Elem,Tr>
+{
+public:
+ typedef std::basic_ostream<Elem, Tr>& ostream_reference;
+ typedef basic_bgzf_streambuf<
+ Elem,
+ Tr,
+ ElemA,
+ ByteT,
+ ByteAT
+ > bgzf_streambuf_type;
+
+ basic_bgzf_ostreambase(ostream_reference ostream_)
+ : m_buf(ostream_)
+ {
+ this->init(&m_buf );
+ };
+
+ /// returns the underlying zip ostream object
+ bgzf_streambuf_type* rdbuf() { return &m_buf; };
+
+ /// returns the bgzf error state
+ int get_zerr() const { return m_buf.get_err();};
+ /// returns the uncompressed data crc
+ long get_crc() const { return m_buf.get_crc();};
+ /// returns the compressed data size
+ long get_out_size() const { return m_buf.get_out_size();};
+ /// returns the uncompressed data size
+ long get_in_size() const { return m_buf.get_in_size();};
+private:
+ bgzf_streambuf_type m_buf;
+};
+
+/* \brief Base class for unzip istreams
+
+Contains a basic_unbgzf_streambuf.
+*/
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bgzf_istreambase : virtual public std::basic_ios<Elem,Tr>
+{
+public:
+ typedef std::basic_istream<Elem, Tr>& istream_reference;
+ typedef basic_unbgzf_streambuf<
+ Elem,
+ Tr,
+ ElemA,
+ ByteT,
+ ByteAT
+ > unbgzf_streambuf_type;
+
+ basic_bgzf_istreambase(istream_reference ostream_)
+ : m_buf(ostream_)
+ {
+ this->init(&m_buf );
+ };
+
+ /// returns the underlying unzip istream object
+ unbgzf_streambuf_type* rdbuf() { return &m_buf; };
+
+ /// returns the bgzf error state
+ int get_zerr() const { return m_buf.get_zerr();};
+ /// returns the uncompressed data crc
+ long get_crc() const { return m_buf.get_crc();};
+ /// returns the uncompressed data size
+ long get_out_size() const { return m_buf.get_out_size();};
+ /// returns the compressed data size
+ long get_in_size() const { return m_buf.get_in_size();};
+private:
+ unbgzf_streambuf_type m_buf;
+};
+
+/*brief A zipper ostream
+
+This class is a ostream decorator that behaves 'almost' like any other ostream.
+
+At construction, it takes any ostream that shall be used to output of the compressed data.
+
+When finished, you need to call the special method zflush or call the destructor
+to flush all the intermidiate streams.
+
+Example:
+\code
+// creating the target zip string, could be a fstream
+ostringstream ostringstream_;
+// creating the zip layer
+bgzf_ostream zipper(ostringstream_);
+
+
+// writing data
+zipper<<f<<" "<<d<<" "<<ui<<" "<<ul<<" "<<us<<" "<<c<<" "<<dum;
+// zip ostream needs special flushing...
+zipper.zflush();
+\endcode
+*/
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bgzf_ostream :
+ public basic_bgzf_ostreambase<Elem,Tr,ElemA,ByteT,ByteAT>,
+ public std::basic_ostream<Elem,Tr>
+{
+public:
+ typedef basic_bgzf_ostreambase<
+ Elem,Tr,ElemA,ByteT,ByteAT> bgzf_ostreambase_type;
+ typedef std::basic_ostream<Elem,Tr> ostream_type;
+ typedef ostream_type& ostream_reference;
+
+ basic_bgzf_ostream(ostream_reference ostream_)
+ :
+ bgzf_ostreambase_type(ostream_),
+ ostream_type(bgzf_ostreambase_type::rdbuf())
+ {}
+
+ /// flush inner buffer and zipper buffer
+ basic_bgzf_ostream<Elem,Tr>& zflush()
+ {
+ this->flush(); this->rdbuf()->flush(); return *this;
+ };
+
+ ~basic_bgzf_ostream()
+ {
+ this->rdbuf()->addFooter();
+ }
+
+private:
+ static void put_long(ostream_reference out_, unsigned long x_);
+#ifdef _WIN32
+ void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
+ void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
+#endif
+};
+
+/* \brief A zipper istream
+
+This class is a istream decorator that behaves 'almost' like any other ostream.
+
+At construction, it takes any istream that shall be used to input of the compressed data.
+
+Simlpe example:
+\code
+// create a stream on zip string
+istringstream istringstream_( ostringstream_.str());
+// create unzipper istream
+bgzf_istream unzipper( istringstream_);
+
+// read and unzip
+unzipper>>f_r>>d_r>>ui_r>>ul_r>>us_r>>c_r>>dum_r;
+\endcode
+*/
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bgzf_istream :
+ public basic_bgzf_istreambase<Elem,Tr,ElemA,ByteT,ByteAT>,
+ public std::basic_istream<Elem,Tr>
+{
+public:
+ typedef basic_bgzf_istreambase<
+ Elem,Tr,ElemA,ByteT,ByteAT> bgzf_istreambase_type;
+ typedef std::basic_istream<Elem,Tr> istream_type;
+ typedef istream_type& istream_reference;
+ typedef char byte_type;
+
+ basic_bgzf_istream(istream_reference istream_)
+ :
+ bgzf_istreambase_type(istream_),
+ istream_type(bgzf_istreambase_type::rdbuf()),
+ m_is_gzip(false),
+ m_gbgzf_data_size(0)
+ {};
+
+ /// returns true if it is a gzip file
+ bool is_gzip() const { return m_is_gzip;};
+ /// return data size check
+ bool check_data_size() const { return this->get_out_size() == m_gbgzf_data_size;};
+
+ /// return the data size in the file
+ long get_gbgzf_data_size() const { return m_gbgzf_data_size;};
+protected:
+ static void read_long(istream_reference in_, unsigned long& x_);
+
+ int check_header();
+ bool m_is_gzip;
+ unsigned long m_gbgzf_data_size;
+
+#ifdef _WIN32
+private:
+ void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
+ void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
+#endif
+};
+
+/// A typedef for basic_bgzf_ostream<char>
+typedef basic_bgzf_ostream<char> bgzf_ostream;
+/// A typedef for basic_bgzf_ostream<wchar_t>
+typedef basic_bgzf_ostream<wchar_t> bgzf_wostream;
+/// A typedef for basic_bgzf_istream<char>
+typedef basic_bgzf_istream<char> bgzf_istream;
+/// A typedef for basic_bgzf_istream<wchart>
+typedef basic_bgzf_istream<wchar_t> bgzf_wistream;
+
+} // namespace seqan
+
+#include "bgzfstream_impl.h"
+
+#endif
diff --git a/include/seqan/stream/zipstream/bgzfstream_impl.h b/include/seqan/stream/zipstream/bgzfstream_impl.h
new file mode 100644
index 0000000..4292015
--- /dev/null
+++ b/include/seqan/stream/zipstream/bgzfstream_impl.h
@@ -0,0 +1,203 @@
+/*
+zipstream Library License:
+--------------------------
+
+The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution
+
+Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003 (original zlib stream)
+Author: David Weese, dave.weese at gmail.com, 2014 (extension to parallel block-wise compression in bgzf format)
+*/
+#ifndef BGZFSTREAM_IPP
+#define BGZFSTREAM_IPP
+
+#include "bgzfstream.h"
+#include <sstream>
+
+namespace seqan {
+
+namespace detail{
+ const int gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
+
+ /* gzip flag byte */
+ const int gz_ascii_flag = 0x01; /* bit 0 set: file probably ascii text */
+ const int gz_head_crc = 0x02; /* bit 1 set: header CRC present */
+ const int gz_extra_field = 0x04; /* bit 2 set: extra field present */
+ const int gz_orig_name = 0x08; /* bit 3 set: original file name present */
+ const int gz_comment = 0x10; /* bit 4 set: file comment present */
+ const int gz_reserved = 0xE0; /* bits 5..7: reserved */
+
+}
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ int _checkGZHeader(basic_unbgzf_streambuf<Elem, Tr, ElemA, ByteT, ByteAT> *buf)
+ {
+ int method; /* method byte */
+ int flags; /* flags byte */
+ uInt len;
+ int c;
+ int err=0;
+ z_stream& bgzf_stream = buf->get_bgzf_stream();
+
+ std::basic_istream<Elem, Tr> &istream = buf->get_istream();
+ bool m_is_gzip;
+
+ /* Check the gzip magic header */
+ for (len = 0; len < 2; len++)
+ {
+ c = (int)istream.get();
+ if (c != detail::gz_magic[len])
+ {
+ if (len != 0)
+ istream.unget();
+ if (c!= EOF)
+ {
+ istream.unget();
+ }
+
+ err = bgzf_stream.avail_in != 0 ? Z_OK : Z_STREAM_END;
+ m_is_gzip = false;
+ return err;
+ }
+ }
+
+ m_is_gzip = true;
+ method = (int)istream.get();
+ flags = (int)istream.get();
+ if (method != Z_DEFLATED || (flags & detail::gz_reserved) != 0)
+ {
+ err = Z_DATA_ERROR;
+ return err;
+ }
+
+ /* Discard time, xflags and OS code: */
+ for (len = 0; len < 6; len++)
+ istream.get();
+
+ if ((flags & detail::gz_extra_field) != 0)
+ {
+ /* skip the extra field */
+ len = (uInt)istream.get();
+ len += ((uInt)istream.get())<<8;
+ /* len is garbage if EOF but the loop below will quit anyway */
+ while (len-- != 0 && istream.get() != EOF) ;
+ }
+ if ((flags & detail::gz_orig_name) != 0)
+ {
+ /* skip the original file name */
+ while ((c = istream.get()) != 0 && c != EOF) ;
+ }
+ if ((flags & detail::gz_comment) != 0)
+ {
+ /* skip the .gz file comment */
+ while ((c = istream.get()) != 0 && c != EOF) ;
+ }
+ if ((flags & detail::gz_head_crc) != 0)
+ { /* skip the header crc */
+ for (len = 0; len < 2; len++)
+ istream.get();
+ }
+ err = istream.eof() ? Z_DATA_ERROR : Z_OK;
+
+ return err;
+ }
+
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ int basic_bgzf_istream<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::check_header()
+ {
+ return _checkGZHeader(this->rdbuf());
+ }
+
+ template<
+ typename Elem,
+ typename Tr
+ >
+ void _putBinaryLong(std::basic_ostream<Elem,Tr> & out_, unsigned long x_)
+ {
+ static const int size_ul = sizeof(unsigned long);
+ static const int size_c = sizeof(typename Tr::char_type);
+ static const int n_end = size_ul/size_c;
+ out_.write(reinterpret_cast<typename Tr::char_type const*>(&x_), n_end);
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void basic_bgzf_istream<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::read_long(
+ istream_reference in_,
+ unsigned long& x_
+ )
+ {
+ static const int size_ul = sizeof(unsigned long);
+ static const int size_c = sizeof(typename Tr::char_type);
+ static const int n_end = size_ul/size_c;
+ in_.read(reinterpret_cast<char*>(&x_),n_end);
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void _addGZHeader(basic_bgzf_streambuf<Elem, Tr, ElemA, ByteT, ByteAT> *buf)
+ {
+ typename Tr::char_type zero=0;
+
+ buf->get_ostream()
+ .put(static_cast<typename Tr::char_type>(detail::gz_magic[0]))
+ .put(static_cast<typename Tr::char_type>(detail::gz_magic[1]))
+ .put(static_cast<typename Tr::char_type>(Z_DEFLATED))
+ .put(zero) //flags
+ .put(zero).put(zero).put(zero).put(zero) // time
+ .put(zero) //xflags
+ .put(static_cast<typename Tr::char_type>(OS_CODE));
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void _addGZFooter(basic_bgzf_streambuf<Elem, Tr, ElemA, ByteT, ByteAT> *buf)
+ {
+ _putBinaryLong( buf->get_ostream(), buf->get_crc() );
+ _putBinaryLong( buf->get_ostream(), buf->get_in_size() );
+ }
+
+} // namespace seqan
+
+#endif
diff --git a/include/seqan/stream/zipstream/bzip2stream.h b/include/seqan/stream/zipstream/bzip2stream.h
new file mode 100644
index 0000000..8553855
--- /dev/null
+++ b/include/seqan/stream/zipstream/bzip2stream.h
@@ -0,0 +1,305 @@
+/*
+bzip2stream Library License:
+--------------------------
+
+The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution
+
+Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003
+*/
+
+#ifndef BZIP2STREAM_HPP
+#define BZIP2STREAM_HPP
+
+#define BZ_NO_STDIO
+
+#include <bzlib.h>
+#include <vector>
+#include <iostream>
+#include <algorithm>
+
+namespace bzip2_stream{
+
+const size_t default_buffer_size = 4096;
+
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bzip2_streambuf :
+ public std::basic_streambuf<Elem, Tr>
+{
+public:
+ typedef std::basic_streambuf< Elem, Tr > basic_streambuf_type;
+ typedef std::basic_ostream<Elem, Tr>& ostream_reference;
+ typedef ElemA char_allocator_type;
+ typedef ByteT byte_type;
+ typedef ByteAT byte_allocator_type;
+ typedef byte_type* byte_buffer_type;
+ typedef typename Tr::char_type char_type;
+ typedef typename Tr::int_type int_type;
+ typedef std::vector<byte_type, byte_allocator_type > byte_vector_type;
+ typedef std::vector<char_type, char_allocator_type > char_vector_type;
+
+ using basic_streambuf_type::epptr;
+ using basic_streambuf_type::pbase;
+ using basic_streambuf_type::pptr;
+
+ basic_bzip2_streambuf(
+ ostream_reference ostream_,
+ size_t block_size_100k_ ,
+ size_t verbosity_ ,
+ size_t work_factor_,
+ size_t buffer_size_
+ );
+
+ ~basic_bzip2_streambuf();
+
+ int sync ();
+ int_type overflow (int_type c);
+
+ std::streamsize flush(int flush_mode);
+ int get_zerr() const
+ { return m_err;};
+ __uint64 get_in_size() const
+ {
+ return ((__uint64)m_bzip2_stream.total_in_hi32 << 32)
+ + m_bzip2_stream.total_in_lo32;
+ }
+ __uint64 get_out_size() const
+ {
+ return ((__uint64)m_bzip2_stream.total_out_hi32 << 32)
+ + m_bzip2_stream.total_out_lo32;
+ }
+private:
+ bool bzip2_to_stream( char_type*, std::streamsize);
+ size_t fill_input_buffer();
+
+ ostream_reference m_ostream;
+ bz_stream m_bzip2_stream;
+ int m_err;
+ byte_vector_type m_output_buffer;
+ char_vector_type m_buffer;
+};
+
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_unbzip2_streambuf :
+ public std::basic_streambuf<Elem, Tr>
+{
+public:
+ typedef std::basic_istream<Elem, Tr>& istream_reference;
+ typedef ElemA char_allocator_type;
+ typedef ByteT byte_type;
+ typedef ByteAT byte_allocator_type;
+ typedef byte_type* byte_buffer_type;
+ typedef typename Tr::char_type char_type;
+ typedef typename Tr::int_type int_type;
+ typedef std::vector<byte_type, byte_allocator_type > byte_vector_type;
+ typedef std::vector<char_type, char_allocator_type > char_vector_type;
+
+ basic_unbzip2_streambuf(
+ istream_reference istream_,
+ size_t verbosity_,
+ bool small_,
+ size_t read_buffer_size_,
+ size_t input_buffer_size_
+ );
+
+ ~basic_unbzip2_streambuf();
+
+ int_type underflow();
+
+ istream_reference get_istream() { return m_istream;};
+ bz_stream& get_bzip2_stream() { return m_bzip2_stream;};
+ int get_zerr() const { return m_err;};
+private:
+ std::streamsize unbzip2_from_stream( char_type*, std::streamsize);
+ void put_back_from_bzip2_stream();
+ size_t fill_input_buffer();
+
+ istream_reference m_istream;
+ bz_stream m_bzip2_stream;
+ int m_err;
+ byte_vector_type m_input_buffer;
+ char_vector_type m_buffer;
+};
+
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bzip2_ostreambase : virtual public std::basic_ios<Elem,Tr>
+{
+public:
+ typedef std::basic_ostream<Elem, Tr>& ostream_reference;
+ typedef basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT> bzip2_streambuf_type;
+
+ basic_bzip2_ostreambase(
+ ostream_reference ostream_,
+ size_t block_size_100k_ ,
+ size_t verbosity_ ,
+ size_t work_factor_,
+ size_t buffer_size_
+ )
+ : m_buf(ostream_,block_size_100k_, verbosity_, work_factor_, buffer_size_)
+ {
+ this->init(&m_buf );
+ };
+
+ bzip2_streambuf_type* rdbuf() { return &m_buf; };
+
+private:
+ bzip2_streambuf_type m_buf;
+};
+
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bzip2_istreambase : virtual public std::basic_ios<Elem,Tr>
+{
+public:
+ typedef std::basic_istream<Elem, Tr>& istream_reference;
+ typedef basic_unbzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT> unbzip2_streambuf_type;
+
+ basic_bzip2_istreambase(
+ istream_reference ostream_,
+ size_t verbosity_,
+ bool small_,
+ size_t read_buffer_size_,
+ size_t input_buffer_size_
+ )
+ : m_buf(
+ ostream_,
+ verbosity_,
+ small_,
+ read_buffer_size_,
+ input_buffer_size_
+ )
+ {
+ this->init(&m_buf );
+ };
+
+ unbzip2_streambuf_type* rdbuf() { return &m_buf; };
+
+private:
+ unbzip2_streambuf_type m_buf;
+};
+
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bzip2_ostream :
+ public basic_bzip2_ostreambase<Elem,Tr,ElemA,ByteT,ByteAT>,
+ public std::basic_ostream<Elem,Tr>
+{
+public:
+ typedef basic_bzip2_ostreambase<
+ Elem,Tr,ElemA,ByteT,ByteAT> bzip2_ostreambase_type;
+ typedef std::basic_ostream<Elem,Tr> ostream_type;
+ typedef ostream_type& ostream_reference;
+
+ basic_bzip2_ostream(
+ ostream_reference ostream_,
+ size_t block_size_100k_ = 9,
+ size_t verbosity_ = 0,
+ size_t work_factor_ = 30,
+ size_t buffer_size_ = default_buffer_size
+ )
+ :
+ bzip2_ostreambase_type(ostream_,block_size_100k_, verbosity_, work_factor_,buffer_size_),
+ ostream_type(bzip2_ostreambase_type::rdbuf())
+ {
+
+ };
+
+ basic_bzip2_ostream& add_header();
+ basic_bzip2_ostream& zflush()
+ {
+ this->flush(); this->rdbuf()->flush(); return *this;
+ };
+
+#ifdef _WIN32
+private:
+ void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
+ void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
+#endif
+};
+
+template<
+ typename Elem,
+ typename Tr = std::char_traits<Elem>,
+ typename ElemA = std::allocator<Elem>,
+ typename ByteT = char,
+ typename ByteAT = std::allocator<ByteT>
+>
+class basic_bzip2_istream :
+ public basic_bzip2_istreambase<Elem,Tr,ElemA,ByteT,ByteAT>,
+ public std::basic_istream<Elem,Tr>
+{
+public:
+ typedef basic_bzip2_istreambase<
+ Elem,Tr,ElemA,ByteT,ByteAT> bzip2_istreambase_type;
+ typedef std::basic_istream<Elem,Tr> istream_type;
+ typedef istream_type& istream_reference;
+ typedef unsigned char byte_type;
+
+ basic_bzip2_istream(
+ istream_reference istream_,
+ size_t verbosity_ = 0,
+ bool small_ = false,
+ size_t read_buffer_size_ = default_buffer_size,
+ size_t input_buffer_size_ = default_buffer_size
+ )
+ :
+ bzip2_istreambase_type(istream_,verbosity_, small_, read_buffer_size_, input_buffer_size_),
+ istream_type(bzip2_istreambase_type::rdbuf())
+ {};
+#ifdef _WIN32
+private:
+ void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
+ void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
+#endif
+};
+
+typedef basic_bzip2_ostream<char> bzip2_ostream;
+typedef basic_bzip2_ostream<wchar_t> bzip2_wostream;
+typedef basic_bzip2_istream<char> bzip2_istream;
+typedef basic_bzip2_istream<wchar_t> bzip2_wistream;
+
+} // bzip2_stream
+
+#include "bzip2stream_impl.h"
+
+#endif
+
diff --git a/include/seqan/stream/zipstream/bzip2stream_impl.h b/include/seqan/stream/zipstream/bzip2stream_impl.h
new file mode 100644
index 0000000..1529bdd
--- /dev/null
+++ b/include/seqan/stream/zipstream/bzip2stream_impl.h
@@ -0,0 +1,430 @@
+/*
+bzip2stream Library License:
+--------------------------
+
+The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution
+
+Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003
+*/
+#ifndef BZIP2STREAM_IPP
+#define BZIP2STREAM_IPP
+
+#include "bzip2stream.h"
+
+namespace bzip2_stream{
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >:: basic_bzip2_streambuf(
+ ostream_reference ostream_,
+ size_t block_size_100k_,
+ size_t verbosity_,
+ size_t work_factor_,
+ size_t buffer_size_
+ )
+ :
+ m_ostream(ostream_),
+ m_output_buffer(buffer_size_,0),
+ m_buffer(buffer_size_,0)
+ {
+ m_bzip2_stream.bzalloc=NULL;
+ m_bzip2_stream.bzfree=NULL;
+
+ m_bzip2_stream.next_in=NULL;
+ m_bzip2_stream.avail_in=0;
+ m_bzip2_stream.avail_out=0;
+ m_bzip2_stream.next_out=NULL;
+
+ m_err=BZ2_bzCompressInit(
+ &m_bzip2_stream,
+ std::min( 9, static_cast<int>(block_size_100k_) ),
+ std::min( 4, static_cast<int>(verbosity_) ),
+ std::min( 250, static_cast<int>(work_factor_) )
+ );
+
+ this->setp( &(m_buffer[0]), &(m_buffer[m_buffer.size()-1]));
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::~basic_bzip2_streambuf()
+ {
+ flush(BZ_FINISH);
+ m_ostream.flush();
+ m_err=BZ2_bzCompressEnd(&m_bzip2_stream);
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ int basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::sync ()
+ {
+ if ( this->pptr() && this->pptr() > this->pbase())
+ {
+ int c = overflow( EOF);
+
+ if ( c == EOF)
+ return -1;
+ }
+
+ return 0;
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ typename basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::int_type
+ basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::overflow (
+ typename basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::int_type c
+ )
+ {
+ int w = static_cast<int>(this->pptr() - this->pbase());
+ if (c != EOF) {
+ *this->pptr() = c;
+ ++w;
+ }
+ if ( bzip2_to_stream( this->pbase(), w)) {
+ this->setp( this->pbase(), this->epptr());
+ return c;
+ } else
+ return EOF;
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ bool basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::bzip2_to_stream(
+ typename basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::char_type* buffer_,
+ std::streamsize buffer_size_
+ )
+ {
+ std::streamsize written_byte_size=0, total_written_byte_size = 0;
+
+ m_bzip2_stream.next_in=(byte_buffer_type)buffer_;
+ m_bzip2_stream.avail_in=buffer_size_*sizeof(char_type);
+ m_bzip2_stream.avail_out=static_cast<unsigned int>(m_output_buffer.size());
+ m_bzip2_stream.next_out=&(m_output_buffer[0]);
+ size_t remainder=0;
+
+ do
+ {
+ m_err = BZ2_bzCompress (&m_bzip2_stream, BZ_RUN );
+
+ if (m_err == BZ_RUN_OK || m_err == BZ_STREAM_END)
+ {
+ written_byte_size= static_cast<std::streamsize>(m_output_buffer.size()) - m_bzip2_stream.avail_out;
+ total_written_byte_size+=written_byte_size;
+ // ouput buffer is full, dumping to ostream
+ m_ostream.write(
+ (const char_type*) &(m_output_buffer[0]),
+ static_cast<std::streamsize>( written_byte_size/sizeof(char_type) )
+ );
+
+ // checking if some bytes were not written.
+ if ( (remainder = written_byte_size%sizeof(char_type))!=0)
+ {
+ // copy to the beginning of the stream
+ std::memmove(
+ &(m_output_buffer[0]),
+ &(m_output_buffer[written_byte_size-remainder]),
+ remainder);
+
+ }
+
+ m_bzip2_stream.avail_out=static_cast<unsigned int>(m_output_buffer.size()-remainder);
+ m_bzip2_stream.next_out=&m_output_buffer[remainder];
+ }
+ }
+ while (m_bzip2_stream.avail_in != 0 && m_err == BZ_RUN_OK);
+
+ return m_err == BZ_RUN_OK || m_err == BZ_FLUSH_OK;
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ std::streamsize basic_bzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::flush(int flush_mode)
+ {
+ std::streamsize written_byte_size=0, total_written_byte_size=0;
+
+ int const buffer_size = static_cast< int >( pptr() - pbase() ); // amount of data currently in buffer
+
+ m_bzip2_stream.next_in=(byte_buffer_type)pbase();
+ m_bzip2_stream.avail_in=static_cast< uInt >(buffer_size*sizeof(char_type));
+ m_bzip2_stream.avail_out=static_cast< uInt >(m_output_buffer.size());
+ m_bzip2_stream.next_out=&(m_output_buffer[0]);
+ size_t remainder=0;
+
+ do
+ {
+ m_err = BZ2_bzCompress (&m_bzip2_stream, flush_mode);
+ if (m_err == BZ_FINISH_OK || m_err == BZ_STREAM_END)
+ {
+ written_byte_size=
+ static_cast<std::streamsize>(m_output_buffer.size())
+ - m_bzip2_stream.avail_out;
+ total_written_byte_size+=written_byte_size;
+ // ouput buffer is full, dumping to ostream
+ m_ostream.write(
+ (const char_type*) &(m_output_buffer[0]),
+ static_cast<std::streamsize>( written_byte_size/sizeof(char_type)*sizeof(char) )
+ );
+
+ // checking if some bytes were not written.
+ if ( (remainder = written_byte_size%sizeof(char_type))!=0)
+ {
+ // copy to the beginning of the stream
+ std::memmove(
+ &(m_output_buffer[0]),
+ &(m_output_buffer[written_byte_size-remainder]),
+ remainder);
+
+ }
+
+ m_bzip2_stream.avail_out=static_cast<unsigned int>(m_output_buffer.size()-remainder);
+ m_bzip2_stream.next_out=&(m_output_buffer[remainder]);
+ }
+ } while (m_err == BZ_FINISH_OK);
+
+ m_ostream.flush();
+
+ return total_written_byte_size;
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ basic_unbzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::basic_unbzip2_streambuf(
+ istream_reference istream_,
+ size_t verbosity_,
+ bool small_,
+ size_t read_buffer_size_,
+ size_t input_buffer_size_
+ )
+ :
+ m_istream(istream_),
+ m_input_buffer(input_buffer_size_),
+ m_buffer(read_buffer_size_)
+ {
+ // setting zalloc, zfree and opaque
+ m_bzip2_stream.bzalloc=NULL;
+ m_bzip2_stream.bzfree=NULL;
+
+ m_bzip2_stream.next_in=NULL;
+ m_bzip2_stream.avail_in=0;
+ m_bzip2_stream.avail_out=0;
+ m_bzip2_stream.next_out=NULL;
+
+
+ m_err=BZ2_bzDecompressInit (
+ &m_bzip2_stream,
+ std::min(4, static_cast<int>(verbosity_)),
+ static_cast<int>(small_)
+ );
+
+ this->setg(
+ &(m_buffer[0])+4, // beginning of putback area
+ &(m_buffer[0])+4, // read position
+ &(m_buffer[0])+4); // end position
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ size_t basic_unbzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::fill_input_buffer()
+ {
+ m_bzip2_stream.next_in=&(m_input_buffer[0]);
+ m_istream.read(
+ (char_type*)(&(m_input_buffer[0])),
+ static_cast<std::streamsize>(m_input_buffer.size()/sizeof(char_type))
+ );
+ return m_bzip2_stream.avail_in=m_istream.gcount()*sizeof(char_type);
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void basic_unbzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::put_back_from_bzip2_stream()
+ {
+ if (m_bzip2_stream.avail_in==0)
+ return;
+
+ m_istream.clear( std::ios::goodbit );
+ m_istream.seekg(
+ -static_cast<int>(m_bzip2_stream.avail_in),
+ std::ios_base::cur
+ );
+
+ m_bzip2_stream.avail_in=0;
+ }
+
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ basic_unbzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::~basic_unbzip2_streambuf()
+ {
+ BZ2_bzDecompressEnd(&m_bzip2_stream);
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ typename basic_unbzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::int_type
+ basic_unbzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::underflow()
+ {
+ if ( this->gptr() && ( this->gptr() < this->egptr()))
+ return * reinterpret_cast<unsigned char *>( this->gptr());
+
+ int n_putback = static_cast<int>(this->gptr() - this->eback());
+ if ( n_putback > 4)
+ n_putback = 4;
+ std::memmove(
+ &(m_buffer[0]) + (4 - n_putback),
+ this->gptr() - n_putback,
+ n_putback*sizeof(char_type)
+ );
+
+ int num = unbzip2_from_stream(
+ &(m_buffer[0])+4,
+ static_cast<std::streamsize>((m_buffer.size()-4)*sizeof(char_type))
+ );
+ if (num <= 0) // ERROR or EOF
+ return EOF;
+
+ // reset buffer pointers
+ this->setg(
+ &(m_buffer[0]) + (4 - n_putback), // beginning of putback area
+ &(m_buffer[0]) + 4, // read position
+ &(m_buffer[0]) + 4 + num); // end of buffer
+
+ // return next character
+ return* reinterpret_cast<unsigned char *>( this->gptr());
+ }
+
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ std::streamsize basic_unbzip2_streambuf<
+ Elem,Tr,ElemA,ByteT,ByteAT
+ >::unbzip2_from_stream(
+ char_type* buffer_,
+ std::streamsize buffer_size_
+ )
+ {
+ m_bzip2_stream.next_out=(byte_buffer_type)buffer_;
+ m_bzip2_stream.avail_out=buffer_size_*sizeof(char_type);
+ size_t count =m_bzip2_stream.avail_in;
+
+ do
+ {
+ if (m_bzip2_stream.avail_in==0)
+ count=fill_input_buffer();
+
+ if (m_bzip2_stream.avail_in)
+ {
+ m_err = BZ2_bzDecompress( &m_bzip2_stream );
+ }
+ } while (m_err==BZ_OK && m_bzip2_stream.avail_out != 0 && count != 0);
+
+ if (m_err == BZ_STREAM_END)
+ put_back_from_bzip2_stream();
+
+ return buffer_size_ - m_bzip2_stream.avail_out/sizeof(char_type);
+ }
+
+
+} // zlib_sream
+
+#endif
diff --git a/include/seqan/stream/zipstream/zipstream.h b/include/seqan/stream/zipstream/zipstream.h
new file mode 100644
index 0000000..a73fd01
--- /dev/null
+++ b/include/seqan/stream/zipstream/zipstream.h
@@ -0,0 +1,665 @@
+// -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
+// vi: set ts=2 noet:
+//
+// (c) Copyright Rosetta Commons Member Institutions.
+// (c) This file is part of the Rosetta software suite and is made available under license.
+// (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
+// (c) For more information, see http://www.rosettacommons.org. Questions about this can be
+// (c) addressed to University of Washington UW TechTransfer, email: license at u.washington.edu.
+
+/// @file utility/io/zipstream.hpp
+/// @brief Altered zipstream library header
+/// @author Jonathan de Halleux (dehalleux at pelikhan.com)
+/// @author Stuart G. Mentzer (Stuart_Mentzer at objexx.com)
+/// @author David Kim (dekim at u.washington.edu)
+/// @author Yih-En Andrew Ban (yab at u.washington.edu)
+
+// zipstream Library License:
+// --------------------------
+//
+// The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
+//
+// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution
+//
+// Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003
+
+
+#ifndef INCLUDED_utility_io_zipstream_HPP
+#define INCLUDED_utility_io_zipstream_HPP
+
+
+// Zlib headers
+#include <zlib.h>
+#include "zutil.h"
+
+
+
+// C++ headers
+#include <algorithm>
+#include <iostream>
+#include <vector>
+
+
+namespace zlib_stream {
+
+
+/// @brief Default gzip buffer size, change this to suite your needs
+const size_t default_buffer_size = 921600; // Was 102400; Was 4096;
+
+
+
+/// Compression strategy, see zlib doc.
+enum EStrategy
+{
+ StrategyFiltered = 1,
+ StrategyHuffmanOnly = 2,
+ DefaultStrategy = 0
+};
+
+
+/// @brief A stream decorator that takes raw input and zips it to a ostream.
+/// @note The class wraps up the inflate method of the zlib library 1.1.4 http://www.gzip.org/zlib/
+template<
+ typename Elem,
+ typename Tr = std::char_traits< Elem >,
+ typename ElemA = std::allocator< Elem >,
+ typename ByteT = unsigned char,
+ typename ByteAT = std::allocator< ByteT >
+>
+class basic_zip_streambuf :
+ public std::basic_streambuf< Elem, Tr >
+{
+
+public:
+
+ typedef std::basic_streambuf< Elem, Tr > basic_streambuf_type;
+ typedef std::basic_ostream< Elem, Tr > & ostream_reference;
+ typedef Elem char_type;
+ typedef ElemA char_allocator_type;
+ typedef ByteT byte_type;
+ typedef ByteAT byte_allocator_type;
+ typedef byte_type * byte_buffer_type;
+ typedef std::vector< byte_type, byte_allocator_type > byte_vector_type;
+ typedef std::vector< char_type, char_allocator_type > char_vector_type;
+ typedef Tr traits_type;
+ typedef typename Tr::int_type int_type;
+
+ using basic_streambuf_type::epptr;
+ using basic_streambuf_type::pbase;
+ using basic_streambuf_type::pptr;
+
+ /// @brief Construct a zip stream
+ /// @note More info on the following parameters can be found in the zlib documentation
+ basic_zip_streambuf(
+ ostream_reference ostream_,
+ size_t level_,
+ EStrategy strategy_,
+ size_t window_size_,
+ size_t memory_level_,
+ size_t buffer_size_
+ );
+
+ ~basic_zip_streambuf();
+
+ int sync();
+ int_type overflow( int_type c );
+
+ /// @brief flushes the zip buffer and output buffer
+ std::streamsize flush();
+
+ /// @brief flushes the zip buffer and output buffer and finalize the zip stream
+ /// @details This method should be called at the end of the compression.
+ std::streamsize flush_finalize();
+
+ /// @brief resets the zip stream and zeros the crc
+ /// @details This method should be called after flush_finalize()
+ /// @deatils to allow future writes
+ void reset_state();
+
+ /// @brief returns a reference to the output stream
+ ostream_reference get_ostream() const { return m_ostream; }
+
+ /// @brief returns the latest zlib error status
+ int get_zerr() const { return m_err; }
+
+ /// @brief returns the crc of the input data compressed so far
+ uLong get_crc() const { return m_crc; }
+
+ /// @brief returns the size (bytes) of the input data compressed so far
+ uLong get_in_size() const { return m_zip_stream.total_in; }
+
+ /// @brief returns the size (bytes) of the compressed data so far
+ uLong get_out_size() const { return m_zip_stream.total_out; }
+
+private:
+
+ bool zip_to_stream( char_type*, std::streamsize );
+ size_t fill_input_buffer();
+
+ /// @brief flush the zip buffer using a particular mode and flush output buffer
+ std::streamsize flush( int flush_mode );
+
+ ostream_reference m_ostream;
+ z_stream m_zip_stream;
+ int m_err;
+ byte_vector_type m_output_buffer;
+ char_vector_type m_buffer;
+ uLong m_crc;
+
+}; // basic_zip_streambuf
+
+
+/// @brief A stream decorator that takes compressed input and unzips it to a istream.
+/// @note The class wraps up the deflate method of the zlib library 1.1.4 http://www.gzip.org/zlib/
+template<
+ typename Elem,
+ typename Tr = std::char_traits< Elem >,
+ typename ElemA = std::allocator< Elem >,
+ typename ByteT = unsigned char,
+ typename ByteAT = std::allocator< ByteT >
+>
+class basic_unzip_streambuf :
+ public std::basic_streambuf< Elem, Tr >
+{
+
+public:
+
+ typedef std::basic_streambuf< Elem, Tr > basic_streambuf_type;
+ typedef std::basic_istream< Elem, Tr > & istream_reference;
+ typedef Elem char_type;
+ typedef ElemA char_allocator_type;
+ typedef ByteT byte_type;
+ typedef ByteAT byte_allocator_type;
+ typedef byte_type * byte_buffer_type;
+ typedef std::vector< byte_type, byte_allocator_type > byte_vector_type;
+ typedef std::vector< char_type, char_allocator_type > char_vector_type;
+ typedef typename Tr::int_type int_type;
+
+ using basic_streambuf_type::eback;
+ using basic_streambuf_type::egptr;
+ using basic_streambuf_type::gptr;
+
+ /// @brief Construct an unzip stream
+ /// @note More info on the following parameters can be found in the zlib documentation
+ basic_unzip_streambuf(
+ istream_reference istream_,
+ size_t window_size_,
+ size_t read_buffer_size_,
+ size_t input_buffer_size_
+ );
+
+ ~basic_unzip_streambuf();
+
+ int_type underflow();
+
+ /// @brief returns the compressed input istream
+ istream_reference get_istream() { return m_istream; }
+
+ /// @brief returns the zlib stream structure
+ z_stream & get_zip_stream() { return m_zip_stream; }
+
+ /// @brief returns the latest zlib error state
+ int get_zerr() const { return m_err; }
+
+ /// @brief returns the crc of the uncompressed data so far
+ uLong get_crc() const { return m_crc; }
+
+ /// @brief returns the number of uncompressed bytes
+ uLong get_out_size() const { return m_zip_stream.total_out; }
+
+ /// @brief returns the number of read compressed bytes
+ uLong get_in_size() const { return m_zip_stream.total_in; }
+
+private:
+
+ void put_back_from_zip_stream();
+
+ std::streamsize unzip_from_stream( char_type*, std::streamsize );
+
+ size_t fill_input_buffer();
+
+ istream_reference m_istream;
+ z_stream m_zip_stream;
+ int m_err;
+ byte_vector_type m_input_buffer;
+ char_vector_type m_buffer;
+ uLong m_crc;
+
+}; // basic_unzip_streambuf
+
+
+/// @brief Base class for zip ostreams
+/// @note Contains a basic_zip_streambuf
+template<
+ typename Elem,
+ typename Tr = std::char_traits< Elem >,
+ typename ElemA = std::allocator< Elem >,
+ typename ByteT = unsigned char,
+ typename ByteAT = std::allocator< ByteT >
+>
+class basic_zip_ostreambase :
+ virtual public std::basic_ios< Elem, Tr >
+{
+
+public:
+
+ typedef std::basic_ostream<Elem, Tr> & ostream_reference;
+ typedef basic_zip_streambuf<
+ Elem,
+ Tr,
+ ElemA,
+ ByteT,
+ ByteAT
+ > zip_streambuf_type;
+
+ /// @brief Construct a zip stream
+ /// @note More info on the following parameters can be found in the zlib documentation.
+ basic_zip_ostreambase(
+ ostream_reference ostream_,
+ size_t level_,
+ EStrategy strategy_,
+ size_t window_size_,
+ size_t memory_level_,
+ size_t buffer_size_
+ ) :
+ m_buf( ostream_, level_, strategy_, window_size_, memory_level_, buffer_size_ )
+ {
+ this->init( &m_buf );
+ }
+
+ /// @brief returns the underlying zip ostream object
+ zip_streambuf_type * rdbuf() { return &m_buf; }
+
+ /// @brief returns the zlib error state
+ int get_zerr() const { return m_buf.get_err(); }
+
+ /// @brief returns the uncompressed data crc
+ uLong get_crc() const { return m_buf.get_crc(); }
+
+ /// @brief returns the compressed data size
+ uLong get_out_size() const { return m_buf.get_out_size(); }
+
+ /// @brief returns the uncompressed data size
+ uLong get_in_size() const { return m_buf.get_in_size(); }
+
+private:
+
+ zip_streambuf_type m_buf;
+
+}; // basic_zip_ostreambase
+
+
+/// @brief Base class for unzip istreams
+/// @note Contains a basic_unzip_streambuf
+template<
+ typename Elem,
+ typename Tr = std::char_traits< Elem >,
+ typename ElemA = std::allocator< Elem >,
+ typename ByteT = unsigned char,
+ typename ByteAT = std::allocator< ByteT >
+>
+class basic_zip_istreambase :
+ virtual public std::basic_ios< Elem, Tr >
+{
+
+public:
+
+ typedef std::basic_istream< Elem, Tr > & istream_reference;
+ typedef basic_unzip_streambuf<
+ Elem,
+ Tr,
+ ElemA,
+ ByteT,
+ ByteAT
+ > unzip_streambuf_type;
+
+ basic_zip_istreambase(
+ istream_reference ostream_,
+ size_t window_size_,
+ size_t read_buffer_size_,
+ size_t input_buffer_size_
+ ) :
+ m_buf( ostream_, window_size_, read_buffer_size_, input_buffer_size_ )
+ {
+ this->init( &m_buf );
+ }
+
+ /// @brief returns the underlying unzip istream object
+ unzip_streambuf_type * rdbuf() { return &m_buf; }
+
+ /// @brief returns the zlib error state
+ int get_zerr() const { return m_buf.get_zerr(); }
+
+ /// @brief returns the uncompressed data crc
+ uLong get_crc() const { return m_buf.get_crc(); }
+
+ /// @brief returns the uncompressed data size
+ uLong get_out_size() const { return m_buf.get_out_size(); }
+
+ /// @brief returns the compressed data size
+ uLong get_in_size() const { return m_buf.get_in_size(); }
+
+private:
+
+ unzip_streambuf_type m_buf;
+
+}; // basic_zip_istreambase
+
+
+/// @brief A zipper ostream
+///
+/// @remarks
+///
+/// This class is a ostream decorator that behaves 'almost' like any other ostream.
+///
+/// At construction, it takes any ostream that shall be used to output of the compressed data.
+///
+/// When finished, you need to call the special method zflush or call the destructor
+/// to flush all the intermidiate streams.
+///
+/// Example:
+/// \code
+/// // creating the target zip string, could be a fstream
+/// ostringstream ostringstream_;
+/// // creating the zip layer
+/// zip_ostream zipper(ostringstream_);
+///
+///
+/// // writing data
+/// zipper<<f<<" "<<d<<" "<<ui<<" "<<ul<<" "<<us<<" "<<c<<" "<<dum;
+/// // zip ostream needs special flushing...
+/// zipper.zflush();
+/// \endcode
+template<
+ typename Elem,
+ typename Tr = std::char_traits< Elem >,
+ typename ElemA = std::allocator< Elem >,
+ typename ByteT = unsigned char,
+ typename ByteAT = std::allocator< ByteT >
+>
+class basic_zip_ostream :
+ public basic_zip_ostreambase< Elem, Tr, ElemA, ByteT, ByteAT >,
+ public std::basic_ostream< Elem, Tr >
+{
+
+public:
+
+ typedef basic_zip_ostreambase< Elem, Tr, ElemA, ByteT, ByteAT > zip_ostreambase_type;
+ typedef std::basic_ostream< Elem, Tr > ostream_type;
+ typedef std::basic_ostream< Elem, Tr > & ostream_reference;
+ typedef Elem char_type;
+
+ using ostream_type::flush;
+ using zip_ostreambase_type::rdbuf;
+
+ /// @brief Constructs a zipper ostream decorator
+ ///
+ /// @param ostream_ ostream where the compressed output is written
+ /// @param is_gzip_ true if gzip header and footer have to be added
+ /// @param level_ level of compression 0, bad and fast, 9, good and slower,
+ /// @param strategy_ compression strategy
+ /// @param window_size_ see zlib doc
+ /// @param memory_level_ see zlib doc
+ /// @param buffer_size_ the buffer size used to zip data
+ ///
+ /// @note When is_gzip_ is true, a gzip header and footer is automatically added
+ basic_zip_ostream(
+ ostream_reference ostream_,
+ // int open_mode = std::ios::out,
+ bool is_gzip_ = true,
+ size_t level_ = Z_DEFAULT_COMPRESSION,
+ EStrategy strategy_ = DefaultStrategy,
+ size_t window_size_ = 15,
+ size_t memory_level_ = 8,
+ size_t buffer_size_ = default_buffer_size
+ ) :
+ zip_ostreambase_type(
+ ostream_,
+ level_,
+ strategy_,
+ window_size_,
+ memory_level_,
+ buffer_size_
+ ),
+ ostream_type( rdbuf() ),
+ m_is_gzip( is_gzip_ ),
+ m_zip_stream_finalized( false )
+ {
+ if ( m_is_gzip ) add_header();
+ }
+
+ ~basic_zip_ostream()
+ {
+ // adding a footer is not necessary here, as it will be
+ // taken care of during the last zflush_finalize()
+ // called by the higher level close() routines
+ zflush_finalize();
+ }
+
+ /// @brief returns true if it is a gzip
+ bool is_gzip() const { return m_is_gzip; }
+
+ /// @brief flush inner buffer and zipper buffer
+ basic_zip_ostream< Elem, Tr > &
+ zflush()
+ {
+ flush(); rdbuf()->flush(); return *this;
+ }
+
+ /// @brief flush inner and zipper buffers and finalize zip stream
+ basic_zip_ostream< Elem, Tr > &
+ zflush_finalize()
+ {
+
+ flush(); rdbuf()->flush_finalize();
+
+ if ( m_is_gzip && ( rdbuf()->get_zerr() == Z_STREAM_END ) && ( !m_zip_stream_finalized ) ) {
+ add_footer(); // writes crc trailer to end the current zip stream
+ flush();
+ m_zip_stream_finalized = true;
+ }
+
+ return *this;
+ }
+
+ /// @brief stream output
+ /// @details if zip stream has been finalized, will reset
+ /// @details the stream and add header if necessary
+ template< typename T >
+ inline
+ basic_zip_ostream &
+ operator <<( T const & t )
+ {
+ reset_zip_stream();
+ static_cast< std::ostream & >( *this ) << t;
+ return *this;
+ }
+
+ /// @brief write char
+ /// @details if zip stream has been finalized, will reset
+ /// @details the stream and add header if necessary
+ inline
+ basic_zip_ostream &
+ put( char const c )
+ {
+ reset_zip_stream();
+ static_cast< std::ostream & >( *this ).put( c );
+ return *this;
+ }
+
+ /// @brief write a string
+ /// @details if zip stream has been finalized, will reset
+ /// @details the stream and add header if necessary
+ inline
+ basic_zip_ostream &
+ write( char const * str, std::streamsize const count )
+ {
+ reset_zip_stream();
+ static_cast< std::ostream & >( *this ).write( str, count );
+ return *this;
+ }
+
+private:
+
+ /// @brief if end of stream, reset the zip stream and add header
+ inline
+ bool
+ reset_zip_stream()
+ {
+ if ( rdbuf()->get_zerr() == Z_STREAM_END ) {
+ rdbuf()->reset_state();
+ add_header();
+ m_zip_stream_finalized = false;
+ return true;
+ }
+ return false;
+ }
+
+ static void put_long_as_uint32( ostream_reference out_, unsigned long x_ );
+
+ void add_header();
+ void add_footer();
+
+ bool m_is_gzip;
+
+ /// @brief tracks to see if zip stream was finalized
+ /// @details set to true during zflush_finalize()
+ /// @details set to false during reset_state()
+ bool m_zip_stream_finalized;
+
+#ifdef _WIN32
+private:
+ void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
+ void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
+#endif
+}; // basic_zip_ostream
+
+
+/// @brief A zipper istream
+///
+/// @remarks
+///
+/// This class is a istream decorator that behaves 'almost' like any other ostream.
+///
+/// At construction, it takes any istream that shall be used to input of the compressed data.
+///
+/// Simlpe example:
+/// \code
+/// // create a stream on zip string
+/// istringstream istringstream_( ostringstream_.str());
+/// // create unzipper istream
+/// zip_istream unzipper( istringstream_);
+///
+/// // read and unzip
+/// unzipper>>f_r>>d_r>>ui_r>>ul_r>>us_r>>c_r>>dum_r;
+/// \endcode
+template<
+ typename Elem,
+ typename Tr = std::char_traits< Elem >,
+ typename ElemA = std::allocator< Elem >,
+ typename ByteT = unsigned char,
+ typename ByteAT = std::allocator< ByteT >
+>
+class basic_zip_istream :
+ public basic_zip_istreambase< Elem, Tr, ElemA, ByteT, ByteAT >,
+ public std::basic_istream< Elem, Tr >
+{
+
+public:
+
+ typedef basic_zip_istreambase< Elem, Tr, ElemA, ByteT, ByteAT > zip_istreambase_type;
+ typedef std::basic_istream< Elem, Tr > istream_type;
+ typedef std::basic_istream< Elem, Tr > & istream_reference;
+ typedef Elem char_type;
+ typedef unsigned char byte_type;
+
+ using zip_istreambase_type::get_crc;
+ using zip_istreambase_type::get_out_size;
+ using zip_istreambase_type::rdbuf;
+
+ /// @brief Construct a unzipper stream
+ ///
+ /// @param istream_ input buffer
+ /// @param window_size_
+ /// @param read_buffer_size_
+ /// @param input_buffer_size_
+ basic_zip_istream(
+ istream_reference istream_,
+ size_t window_size_ = 15,
+ size_t read_buffer_size_ = default_buffer_size,
+ size_t input_buffer_size_ = default_buffer_size
+ ) :
+ zip_istreambase_type( istream_, window_size_, read_buffer_size_, input_buffer_size_ ),
+ istream_type( rdbuf() ),
+ m_is_gzip( false ),
+ m_gzip_crc( 0 ),
+ m_gzip_data_size( 0 )
+ {
+ if ( rdbuf()->get_zerr() == Z_OK ) check_header();
+ }
+
+ /// @brief returns true if it is a gzip file
+ bool is_gzip() const { return m_is_gzip; }
+
+ /// @brief reads the gzip footer
+ void read_footer();
+
+ /// @brief return crc check result
+ ///
+ /// @note When you have finished reading the compressed data,
+ /// call read_footer to read the uncompressed data crc.
+ /// @note This method compares it to the crc of the uncompressed data.
+ ///
+ /// @return true if crc check is succesful
+ bool check_crc() const { return get_crc() == m_gzip_crc; }
+
+ /// @brief return data size check
+ bool check_data_size() const { return get_out_size() == m_gzip_data_size; }
+
+ /// @brief return the crc value in the file
+ uLong get_gzip_crc() const { return m_gzip_crc; }
+
+ /// @brief return the data size in the file
+ uLong get_gzip_data_size() const { return m_gzip_data_size; }
+
+protected:
+
+ static void read_uint32( istream_reference in_, unsigned long & x_ );
+
+ int check_header();
+
+ bool m_is_gzip;
+ uLong m_gzip_crc;
+ uLong m_gzip_data_size;
+
+#ifdef _WIN32
+private:
+ void _Add_vtordisp1() { } // Required to avoid VC++ warning C4250
+ void _Add_vtordisp2() { } // Required to avoid VC++ warning C4250
+#endif
+}; // basic_zip_istream
+
+
+// Types
+typedef basic_zip_ostream< char > zip_ostream;
+typedef basic_zip_ostream< wchar_t > zip_wostream;
+typedef basic_zip_istream< char > zip_istream;
+typedef basic_zip_istream< wchar_t > zip_wistream;
+
+
+} // namespace zlib_stream
+
+
+// Implementation
+#include "zipstream_impl.h"
+
+
+#endif // INCLUDED_utility_io_zipstream_HPP
diff --git a/include/seqan/stream/zipstream/zipstream_impl.h b/include/seqan/stream/zipstream/zipstream_impl.h
new file mode 100644
index 0000000..00d8bfa
--- /dev/null
+++ b/include/seqan/stream/zipstream/zipstream_impl.h
@@ -0,0 +1,675 @@
+// -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
+// vi: set ts=2 noet:
+//
+// (c) Copyright Rosetta Commons Member Institutions.
+// (c) This file is part of the Rosetta software suite and is made available under license.
+// (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
+// (c) For more information, see http://www.rosettacommons.org. Questions about this can be
+// (c) addressed to University of Washington UW TechTransfer, email: license at u.washington.edu.
+
+/// @file utility/io/zipstream.ipp
+/// @brief Altered zipstream library implementation
+/// @author Jonathan de Halleux (dehalleux at pelikhan.com)
+/// @author Stuart G. Mentzer (Stuart_Mentzer at objexx.com)
+/// @author David Kim (dekim at u.washington.edu)
+/// @author Yih-En Andrew Ban (yab at u.washington.edu)
+
+// zipstream Library License:
+// --------------------------
+//
+// The zlib/libpng License Copyright (c) 2003 Jonathan de Halleux.
+//
+// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source distribution
+//
+// Author: Jonathan de Halleux, dehalleux at pelikhan.com, 2003
+
+
+#ifndef INCLUDED_utility_io_zipstream_IPP
+#define INCLUDED_utility_io_zipstream_IPP
+
+
+// Unit headers
+#include "zipstream.h"
+
+// C++ headers
+#include <sstream>
+#include <cstdio>
+#include <istream>
+
+namespace zlib_stream {
+
+
+namespace detail {
+
+ const int gz_magic[2] = { 0x1f, 0x8b }; // gzip magic header
+
+ // gzip flag byte
+ const int gz_ascii_flag = 0x01; // bit 0 set: file probably ascii text
+ const int gz_head_crc = 0x02; // bit 1 set: header CRC present
+ const int gz_extra_field = 0x04; // bit 2 set: extra field present
+ const int gz_orig_name = 0x08; // bit 3 set: original file name present
+ const int gz_comment = 0x10; // bit 4 set: file comment present
+ const int gz_reserved = 0xE0; // bits 5..7: reserved
+
+} // namespace detail
+
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::basic_zip_streambuf(
+ ostream_reference ostream_,
+ size_t level_,
+ EStrategy strategy_,
+ size_t window_size_,
+ size_t memory_level_,
+ size_t buffer_size_
+ ) :
+ m_ostream( ostream_ ),
+ m_output_buffer( buffer_size_, 0 ),
+ m_buffer( buffer_size_, 0 ),
+ m_crc( 0 )
+ {
+ m_zip_stream.zalloc = (alloc_func)0;
+ m_zip_stream.zfree = (free_func)0;
+
+ m_zip_stream.next_in = NULL;
+ m_zip_stream.avail_in = 0;
+ m_zip_stream.avail_out = 0;
+ m_zip_stream.next_out = NULL;
+
+ m_err = deflateInit2(
+ &m_zip_stream,
+ std::min( 9, static_cast< int >( level_ ) ),
+ Z_DEFLATED,
+ - static_cast< int >(window_size_), // <-- changed
+ std::min( 9, static_cast< int >( memory_level_ ) ),
+ static_cast< int >( strategy_ )
+ );
+
+ this->setp( &(m_buffer[0]), &(m_buffer[m_buffer.size()-1]) );
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::~basic_zip_streambuf()
+ {
+ flush_finalize();
+ m_ostream.flush();
+ m_err=deflateEnd( &m_zip_stream );
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ int
+ basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::sync()
+ {
+ if ( pptr() && pptr() > pbase() ) {
+ if ( traits_type::eq_int_type( overflow( traits_type::eof() ), traits_type::eof() ) ) return -1;
+ }
+
+ return 0;
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ typename basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::int_type
+ basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::overflow(
+ typename basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::int_type c
+ )
+ {
+ bool const test_eof = traits_type::eq_int_type( c, traits_type::eof() );
+ int w = static_cast< int >( pptr() - pbase() );
+ if ( !test_eof ) {
+ *pptr() = c;
+ ++w;
+ }
+ if ( zip_to_stream( pbase(), w ) ) {
+ this->setp( pbase(), epptr() );
+ return traits_type::not_eof( c );
+ } else {
+ return traits_type::eof();
+ }
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ bool
+ basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::zip_to_stream(
+ typename basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::char_type * buffer_,
+ std::streamsize buffer_size_
+ )
+ {
+ std::streamsize written_byte_size = 0, total_written_byte_size = 0;
+
+ m_zip_stream.next_in = (byte_buffer_type)buffer_;
+ m_zip_stream.avail_in = static_cast< uInt >( buffer_size_ * sizeof(char_type) );
+ m_zip_stream.avail_out = static_cast< uInt >( m_output_buffer.size() );
+ m_zip_stream.next_out = &(m_output_buffer[0]);
+ size_t remainder = 0;
+
+ // updating crc
+ m_crc = crc32(
+ m_crc,
+ m_zip_stream.next_in,
+ m_zip_stream.avail_in
+ );
+
+ do {
+ m_err = deflate( &m_zip_stream, 0 );
+
+ if ( m_err == Z_OK || m_err == Z_STREAM_END ) {
+ written_byte_size =
+ static_cast< std::streamsize >( m_output_buffer.size() )
+ - m_zip_stream.avail_out;
+ total_written_byte_size += written_byte_size;
+ // ouput buffer is full, dumping to ostream
+ // std::cerr << "dump to m_ostream " << std::endl;
+ m_ostream.write(
+ (const char_type*) &(m_output_buffer[0]),
+ static_cast< std::streamsize >( written_byte_size / sizeof( char_type ) )
+ );
+ // std::cerr << "dump to m_ostream -- done " << std::endl;
+ // checking if some bytes were not written.
+ if ( ( remainder = written_byte_size%sizeof( char_type ) ) != 0 ) {
+ // copy to the beginning of the stream
+ // std::cerr << "before memcopy in zipstream.ipp: 206" << std::endl;
+ std::memmove(
+ &(m_output_buffer[0]),
+ &(m_output_buffer[written_byte_size-remainder]),
+ remainder
+ );
+ // std::cerr << "after memcopy in zipstream.ipp: 206" << std::endl;
+ }
+
+ m_zip_stream.avail_out =
+ static_cast< uInt >( m_output_buffer.size() - remainder );
+ m_zip_stream.next_out = &m_output_buffer[remainder];
+ // std::cerr << "after static_cast: line 219" << std::endl;
+ }
+ } while ( m_zip_stream.avail_in != 0 && m_err == Z_OK );
+ // std::cerr << "line 222" << std::endl;
+ return m_err == Z_OK;
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ std::streamsize basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::flush(
+ int flush_mode
+ )
+ {
+ std::streamsize written_byte_size = 0, total_written_byte_size = 0;
+
+ int const buffer_size = static_cast< int >( pptr() - pbase() ); // amount of data currently in buffer
+
+ m_zip_stream.next_in = (byte_buffer_type)pbase();
+ m_zip_stream.avail_in = static_cast< uInt >( buffer_size * sizeof(char_type) );
+ m_zip_stream.avail_out = static_cast< uInt >( m_output_buffer.size() );
+ m_zip_stream.next_out = &(m_output_buffer[0]);
+ size_t remainder = 0;
+
+ // std::cerr << "flush() " << std::endl;
+
+ // updating crc
+ m_crc = crc32(
+ m_crc,
+ m_zip_stream.next_in,
+ m_zip_stream.avail_in
+ );
+
+ do {
+ m_err = deflate( &m_zip_stream, flush_mode );
+ if ( m_err == Z_OK || m_err == Z_STREAM_END ) {
+ written_byte_size =
+ static_cast< std::streamsize >( m_output_buffer.size() )
+ - m_zip_stream.avail_out;
+ total_written_byte_size += written_byte_size;
+ // ouput buffer is full, dumping to ostream
+ m_ostream.write(
+ (const char_type*) &(m_output_buffer[0]),
+ static_cast< std::streamsize >( written_byte_size / sizeof( char_type ) * sizeof( byte_type ) )
+ );
+
+ // checking if some bytes were not written.
+ if ( ( remainder = written_byte_size%sizeof( char_type ) ) != 0 ) {
+ // copy to the beginning of the stream
+ std::memmove(
+ &(m_output_buffer[0]),
+ &(m_output_buffer[written_byte_size-remainder]),
+ remainder
+ );
+
+ }
+
+ m_zip_stream.avail_out = static_cast< uInt >( m_output_buffer.size() - remainder );
+ m_zip_stream.next_out = &m_output_buffer[remainder];
+ }
+ } while (m_err == Z_OK);
+
+ m_ostream.flush();
+ // std::cerr << "flush() -- done" << std::endl;
+
+ return total_written_byte_size;
+ }
+
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ std::streamsize basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::flush()
+ {
+ std::streamsize const total_written_byte_size = flush( Z_SYNC_FLUSH );
+ return total_written_byte_size;
+ }
+
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ std::streamsize basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::flush_finalize()
+ {
+ std::streamsize const total_written_byte_size = flush( Z_FINISH );
+ return total_written_byte_size;
+ }
+
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void basic_zip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::reset_state()
+ {
+ m_crc = 0;
+
+ m_zip_stream.next_in = NULL;
+ m_zip_stream.avail_in = 0;
+ m_zip_stream.avail_out = 0;
+ m_zip_stream.next_out = NULL;
+
+ m_err = deflateReset( &m_zip_stream );
+ }
+
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::basic_unzip_streambuf(
+ istream_reference istream_,
+ size_t window_size_,
+ size_t read_buffer_size_,
+ size_t input_buffer_size_
+ ) :
+ m_istream( istream_ ),
+ m_input_buffer( input_buffer_size_ ),
+ m_buffer( read_buffer_size_ ),
+ m_crc( 0 )
+ {
+ // setting zalloc, zfree and opaque
+ m_zip_stream.zalloc = (alloc_func)0;
+ m_zip_stream.zfree = (free_func)0;
+
+ m_zip_stream.next_in = NULL;
+ m_zip_stream.avail_in = 0;
+ m_zip_stream.avail_out = 0;
+ m_zip_stream.next_out = NULL;
+
+ m_err = inflateInit2( &m_zip_stream, -static_cast< int >( window_size_ ) );
+
+ this->setg(
+ &( m_buffer[0] ) + 4, // beginning of putback area
+ &( m_buffer[0] ) + 4, // read position
+ &( m_buffer[0] ) + 4 // end position
+ );
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ size_t basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::fill_input_buffer()
+ {
+ m_zip_stream.next_in = &( m_input_buffer[0] );
+ m_istream.read(
+ (char_type*)( &( m_input_buffer[0] ) ),
+ static_cast< std::streamsize >( m_input_buffer.size() / sizeof( char_type ) )
+ );
+ return m_zip_stream.avail_in = m_istream.gcount() * sizeof( char_type );
+ }
+
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::~basic_unzip_streambuf()
+ {
+ inflateEnd( &m_zip_stream );
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ typename basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::int_type
+ basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::underflow()
+ {
+ if ( gptr() && ( gptr() < egptr() ) ) return *reinterpret_cast< unsigned char * >( gptr() );
+
+ int n_putback = static_cast< int >( gptr() - eback() );
+ if ( n_putback > 4 ) n_putback = 4;
+ std::memmove(
+ &( m_buffer[0] ) + ( 4 - n_putback ),
+ gptr() - n_putback,
+ n_putback * sizeof( char_type )
+ );
+
+ int num = unzip_from_stream(
+ &( m_buffer[0] ) + 4,
+ static_cast< std::streamsize >( ( m_buffer.size() - 4 ) * sizeof( char_type ) )
+ );
+ if ( num <= 0 ) return EOF; // ERROR or EOF
+
+ // reset buffer pointers
+ this->setg(
+ &( m_buffer[0] ) + ( 4 - n_putback ), // beginning of putback area
+ &( m_buffer[0] ) + 4, // read position
+ &( m_buffer[0] ) + 4 + num // end of buffer
+ );
+
+ // return next character
+ return *reinterpret_cast< unsigned char * >( gptr() );
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ std::streamsize basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::unzip_from_stream(
+ char_type * buffer_,
+ std::streamsize buffer_size_
+ )
+ {
+ m_zip_stream.next_out = (byte_buffer_type)buffer_;
+ m_zip_stream.avail_out = static_cast< uInt >( buffer_size_ * sizeof( char_type ) );
+ size_t count = m_zip_stream.avail_in;
+
+ do {
+ if ( m_zip_stream.avail_in == 0 ) count = fill_input_buffer();
+
+ if ( m_zip_stream.avail_in ) {
+ m_err = inflate( &m_zip_stream, Z_SYNC_FLUSH );
+ }
+ } while ( m_err == Z_OK && m_zip_stream.avail_out != 0 && count != 0 );
+
+ // updating crc
+ m_crc = crc32(
+ m_crc,
+ (byte_buffer_type)buffer_,
+ buffer_size_ - m_zip_stream.avail_out / sizeof( char_type )
+ );
+ std::streamsize n_read = buffer_size_ - m_zip_stream.avail_out / sizeof( char_type );
+
+ // check if it is the end
+ if ( m_err == Z_STREAM_END ) put_back_from_zip_stream();
+
+ return n_read;
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void basic_unzip_streambuf< Elem, Tr, ElemA, ByteT, ByteAT >::put_back_from_zip_stream()
+ {
+ if ( m_zip_stream.avail_in == 0 ) return;
+
+ m_istream.clear( std::ios::goodbit );
+ m_istream.seekg(
+ -static_cast< int >( m_zip_stream.avail_in ),
+ std::ios_base::cur
+ );
+
+ m_zip_stream.avail_in = 0;
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ int
+ basic_zip_istream< Elem, Tr, ElemA, ByteT, ByteAT >::check_header()
+ {
+ int method; // method byte
+ int flags; // flags byte
+ uInt len;
+ int c;
+ int err = 0;
+ z_stream & zip_stream = rdbuf()->get_zip_stream();
+
+ // Check the gzip magic header
+ for ( len = 0; len < 2; ++len ) {
+ c = (int)rdbuf()->get_istream().get();
+ if ( c != detail::gz_magic[len] ) {
+ if ( len != 0 ) rdbuf()->get_istream().unget();
+ if ( c != EOF ) {
+ rdbuf()->get_istream().unget();
+ }
+
+ err = ( zip_stream.avail_in != 0 ? Z_OK : Z_STREAM_END );
+ m_is_gzip = false;
+ return err;
+ }
+ }
+
+ m_is_gzip = true;
+ method = (int)rdbuf()->get_istream().get();
+ flags = (int)rdbuf()->get_istream().get();
+ if ( method != Z_DEFLATED || ( flags & detail::gz_reserved ) != 0 ) {
+ err = Z_DATA_ERROR;
+ return err;
+ }
+
+ // Discard time, xflags and OS code:
+ for ( len = 0; len < 6; ++len ) rdbuf()->get_istream().get();
+
+ if ( ( flags & detail::gz_extra_field ) != 0 ) {
+ // skip the extra field
+ len = (uInt)rdbuf()->get_istream().get();
+ len += ((uInt)rdbuf()->get_istream().get()) << 8;
+ // len is garbage if EOF but the loop below will quit anyway
+ while ( len-- != 0 && rdbuf()->get_istream().get() != EOF ) {}
+ }
+ if ( ( flags & detail::gz_orig_name ) != 0 ) {
+ // skip the original file name
+ while ( ( c = rdbuf()->get_istream().get() ) != 0 && c != EOF ) {}
+ }
+ if ( ( flags & detail::gz_comment ) != 0 ) {
+ // skip the .gz file comment
+ while ( ( c = rdbuf()->get_istream().get() ) != 0 && c != EOF ) {}
+ }
+ if ( ( flags & detail::gz_head_crc ) != 0 ) { // skip the header crc
+ for ( len = 0; len < 2; ++len ) rdbuf()->get_istream().get();
+ }
+ err = ( rdbuf()->get_istream().eof() ? Z_DATA_ERROR : Z_OK );
+
+ return err;
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void basic_zip_istream< Elem, Tr, ElemA, ByteT, ByteAT >::read_footer()
+ {
+ if ( m_is_gzip ) {
+ read_uint32( rdbuf()->get_istream(), m_gzip_crc );
+ read_uint32( rdbuf()->get_istream(), m_gzip_data_size );
+ }
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void basic_zip_ostream< Elem, Tr, ElemA, ByteT, ByteAT >::put_long_as_uint32(
+ typename basic_zip_ostream< Elem, Tr, ElemA, ByteT, ByteAT >::ostream_reference out_,
+ unsigned long x_
+ )
+ {
+ // yab: 20090414, modified to conform to gzip standard where
+ // trailer crc and length must both be 32-bit, otherwise there
+ // is breakage in systems where 'unsigned long' is not 32-bit
+ // and external archiving programs end up complaining.
+ char b1, b2, b3, b4; // assuming char is 8 bits
+ b1 = 0xFF & x_;
+ b2 = 0xFF & ( x_ >> 8 );
+ b3 = 0xFF & ( x_ >> 16 );
+ b4 = 0xFF & ( x_ >> 24 );
+
+ out_.write( &b1, 1 );
+ out_.write( &b2, 1 );
+ out_.write( &b3, 1 );
+ out_.write( &b4, 1 );
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void basic_zip_istream< Elem, Tr, ElemA, ByteT, ByteAT >::read_uint32(
+ istream_reference in_,
+ unsigned long & x_
+ )
+ {
+ // yab: 20090414, modified to conform to gzip standard where
+ // trailer crc and length must both be 32-bit, otherwise there
+ // is breakage in systems where 'unsigned long' is not 32-bit
+ // and external archiving programs end up complaining.
+ unsigned char b1, b2, b3, b4; // assuming char is 8 bits
+
+ in_.read( reinterpret_cast< char * >( &b1 ), 1 );
+ in_.read( reinterpret_cast< char * >( &b2 ), 1 );
+ in_.read( reinterpret_cast< char * >( &b3 ), 1 );
+ in_.read( reinterpret_cast< char * >( &b4 ), 1 );
+
+ x_ = b1 + ( b2 << 8 ) + ( b3 << 16 ) + ( b4 << 24 );
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void basic_zip_ostream< Elem, Tr, ElemA, ByteT, ByteAT >::add_header()
+ {
+ char_type zero = 0;
+
+ rdbuf()->get_ostream()
+ .put( static_cast< char_type >( detail::gz_magic[0] ) )
+ .put( static_cast< char_type >( detail::gz_magic[1] ) )
+ .put( static_cast< char_type >( Z_DEFLATED ) )
+ .put( zero ) // flags
+ .put( zero ).put( zero ).put( zero ).put( zero ) // time
+ .put( zero ) // xflags
+ .put( static_cast< char_type >( OS_CODE ) );
+ }
+
+ template<
+ typename Elem,
+ typename Tr,
+ typename ElemA,
+ typename ByteT,
+ typename ByteAT
+ >
+ void basic_zip_ostream< Elem, Tr, ElemA, ByteT, ByteAT >::add_footer()
+ {
+ put_long_as_uint32( rdbuf()->get_ostream(), rdbuf()->get_crc() );
+ put_long_as_uint32( rdbuf()->get_ostream(), rdbuf()->get_in_size() );
+ }
+
+
+} // namespace zlib_stream
+
+
+#endif // INCLUDED_utility_io_zipstream_IPP
diff --git a/include/seqan/stream/zipstream/zutil.h b/include/seqan/stream/zipstream/zutil.h
new file mode 100644
index 0000000..2806344
--- /dev/null
+++ b/include/seqan/stream/zipstream/zutil.h
@@ -0,0 +1,226 @@
+/* zutil.h -- internal interface and configuration of the compression library
+ * Copyright (C) 1995-2002 Jean-loup Gailly.
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+/* WARNING: this file should *not* be used by applications. It is
+ part of the implementation of the compression library and is
+ subject to change. Applications should only use zlib.h.
+ */
+
+/* @(#) $Id: zutil.h,v 1.2 2003/06/28 15:03:05 pelikhan Exp $ */
+
+#ifndef _Z_UTIL_H
+#define _Z_UTIL_H
+
+//#include "zlib.h"
+
+#ifdef STDC
+# include <stddef.h>
+# include <string.h>
+# include <stdlib.h>
+#endif
+
+//#define NO_ERRNO_H
+#ifdef NO_ERRNO_H
+ int errno;
+#else
+ #include <errno.h>
+#endif
+
+#ifndef local
+# define local static
+#endif
+/* compile with -Dlocal if your debugger can't find static symbols */
+
+typedef unsigned char uch;
+typedef uch FAR uchf;
+typedef unsigned short ush;
+typedef ush FAR ushf;
+typedef unsigned long ulg;
+
+extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
+/* (size given to avoid silly warnings with Visual C++) */
+
+#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
+
+#define ERR_RETURN(strm,err) \
+ return (strm->msg = (char*)ERR_MSG(err), (err))
+/* To be used only when the state is known to be valid */
+
+ /* common constants */
+
+#ifndef DEF_WBITS
+# define DEF_WBITS MAX_WBITS
+#endif
+/* default windowBits for decompression. MAX_WBITS is for compression only */
+
+#if MAX_MEM_LEVEL >= 8
+# define DEF_MEM_LEVEL 8
+#else
+# define DEF_MEM_LEVEL MAX_MEM_LEVEL
+#endif
+/* default memLevel */
+
+#define STORED_BLOCK 0
+#define STATIC_TREES 1
+#define DYN_TREES 2
+/* The three kinds of block type */
+
+#define MIN_MATCH 3
+#define MAX_MATCH 258
+/* The minimum and maximum match lengths */
+
+#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
+
+ /* target dependencies */
+
+#ifdef MSDOS
+# define OS_CODE 0x00
+# if defined(__TURBOC__) || defined(__BORLANDC__)
+# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
+ /* Allow compilation with ANSI keywords only enabled */
+ void _Cdecl farfree( void *block );
+ void *_Cdecl farmalloc( unsigned long nbytes );
+# else
+# include <alloc.h>
+# endif
+# else /* MSC or DJGPP */
+# include <malloc.h>
+# endif
+#endif
+
+#ifdef OS2
+# define OS_CODE 0x06
+#endif
+
+#ifdef WIN32 /* Window 95 & Windows NT */
+# define OS_CODE 0x0b
+#endif
+
+#if defined(VAXC) || defined(VMS)
+# define OS_CODE 0x02
+# define F_OPEN(name, mode) \
+ fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
+#endif
+
+#ifdef AMIGA
+# define OS_CODE 0x01
+#endif
+
+#if defined(ATARI) || defined(atarist)
+# define OS_CODE 0x05
+#endif
+
+#if defined(MACOS) || defined(TARGET_OS_MAC)
+# define OS_CODE 0x07
+# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
+# include <unix.h> /* for fdopen */
+# else
+# ifndef fdopen
+# define fdopen(fd,mode) NULL /* No fdopen() */
+# endif
+# endif
+#endif
+
+#ifdef __50SERIES /* Prime/PRIMOS */
+# define OS_CODE 0x0F
+#endif
+
+#ifdef TOPS20
+# define OS_CODE 0x0a
+#endif
+
+#if defined(_BEOS_) || defined(RISCOS)
+# define fdopen(fd,mode) NULL /* No fdopen() */
+#endif
+
+#if (defined(_MSC_VER) && (_MSC_VER > 600))
+# define fdopen(fd,type) _fdopen(fd,type)
+#endif
+
+
+ /* Common defaults */
+
+#ifndef OS_CODE
+# define OS_CODE 0x03 /* assume Unix */
+#endif
+
+#ifndef F_OPEN
+# define F_OPEN(name, mode) fopen((name), (mode))
+#endif
+
+ /* functions */
+
+#ifdef HAVE_STRERROR
+ extern char *strerror OF((int));
+# define zstrerror(errnum) strerror(errnum)
+#else
+# define zstrerror(errnum) ""
+#endif
+
+#if defined(pyr)
+# define NO_MEMCPY
+#endif
+#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
+ /* Use our own functions for small and medium model with MSC <= 5.0.
+ * You may have to use the same strategy for Borland C (untested).
+ * The __SC__ check is for Symantec.
+ */
+# define NO_MEMCPY
+#endif
+#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
+# define HAVE_MEMCPY
+#endif
+#ifdef HAVE_MEMCPY
+# ifdef SMALL_MEDIUM /* MSDOS small or medium model */
+# define zmemcpy _fmemcpy
+# define zmemcmp _fmemcmp
+# define zmemzero(dest, len) _fmemset(dest, 0, len)
+# else
+# define zmemcpy memcpy
+# define zmemcmp memcmp
+# define zmemzero(dest, len) memset(dest, 0, len)
+# endif
+#else
+ extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
+ extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
+ extern void zmemzero OF((Bytef* dest, uInt len));
+#endif
+
+/* Diagnostic functions */
+#ifdef DEBUG
+# include <stdio.h>
+ extern int z_verbose;
+ extern void z_error OF((char *m));
+# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
+# define Trace(x) {if (z_verbose>=0) fprintf x ;}
+# define Tracev(x) {if (z_verbose>0) fprintf x ;}
+# define Tracevv(x) {if (z_verbose>1) fprintf x ;}
+# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
+# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
+#else
+# define Assert(cond,msg)
+# define Trace(x)
+# define Tracev(x)
+# define Tracevv(x)
+# define Tracec(c,x)
+# define Tracecv(c,x)
+#endif
+
+
+typedef uLong (ZEXPORT *check_func) OF((uLong check, const Bytef *buf,
+ uInt len));
+voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
+void zcfree OF((voidpf opaque, voidpf ptr));
+
+#define ZALLOC(strm, items, size) \
+ (*((strm)->zalloc))((strm)->opaque, (items), (size))
+#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
+#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
+
+#ifdef local
+#undef local
+#endif
+
+#endif /* _Z_UTIL_H */
diff --git a/include/seqan/translation/translation.h b/include/seqan/translation/translation.h
index c1ee782..db908a9 100644
--- a/include/seqan/translation/translation.h
+++ b/include/seqan/translation/translation.h
@@ -245,8 +245,8 @@ _translateImplLoop(StringSet<String<AminoAcid, TSpec1>, TSpec2> & target,
if (i % 2)
{
- TVal val(value(source, i/2));
- _translateString(target[i], TRevComp(val), TCode());
+ TRevComp revComp(value(source, i/2));
+ _translateString(target[i], revComp, TCode());
}
else
{
@@ -286,8 +286,9 @@ _translateImplLoop(StringSet<String<AminoAcid, TSpec1>, TSpec2> & target,
if ((i % 6) > 2)
{
- TVal val(prefix(value(source, i/6), length(value(source,i/6)) - (i % 3)));
- _translateString(target[i], TRevComp(val), TCode());
+ TRevComp revComp(prefix(value(source, i/6),
+ length(value(source,i/6)) - (i % 3)));
+ _translateString(target[i], revComp, TCode());
}
else
{
diff --git a/include/seqan/ucsc_io/ucsc_file.h b/include/seqan/ucsc_io/ucsc_file.h
index 1d385bc..44a5a08 100644
--- a/include/seqan/ucsc_io/ucsc_file.h
+++ b/include/seqan/ucsc_io/ucsc_file.h
@@ -67,7 +67,7 @@ typedef FormattedFile<Ucsc, Input> UcscFileIn;
// ----------------------------------------------------------------------------
/*!
- * @class UcscFileOut
+ * @class UcscFileInOut
* @signature typedef FormattedFile<Ucsc, Output> UcscFileOut;
* @extends FormattedFileOut
* @headerfile <seqan/ucsc_io.h>
diff --git a/include/seqan/vcf_io/vcf_io_context.h b/include/seqan/vcf_io/vcf_io_context.h
index 14012c3..2f86f16 100644
--- a/include/seqan/vcf_io/vcf_io_context.h
+++ b/include/seqan/vcf_io/vcf_io_context.h
@@ -150,13 +150,6 @@ contigNames(VcfIOContext<TNameStore, TNameStoreCache, TStorageSpec> & context)
return _referenceCast<TNameStore &>(context._contigNames);
}
-template <typename TNameStore, typename TNameStoreCache, typename TStorageSpec>
-inline TNameStore const &
-contigNames(VcfIOContext<TNameStore, TNameStoreCache, TStorageSpec> const & context)
-{
- return _referenceCast<TNameStore &>(context._contigNames);
-}
-
/*!
* @fn VcfIOContext#contigNamesCache
* @brief Return reference to contig names cache from @link VcfIOContext @endlink.
@@ -175,13 +168,6 @@ contigNamesCache(VcfIOContext<TNameStore, TNameStoreCache, TStorageSpec> & conte
return _referenceCast<TNameStoreCache &>(context._contigNamesCache);
}
-template <typename TNameStore, typename TNameStoreCache, typename TStorageSpec>
-inline TNameStoreCache const &
-contigNamesCache(VcfIOContext<TNameStore, TNameStoreCache, TStorageSpec> const & context)
-{
- return _referenceCast<TNameStoreCache &>(context._contigNamesCache);
-}
-
/*!
* @fn VcfIOContext#sampleNames
* @brief Return reference to the sample names from @link VcfIOContext @endlink.
@@ -201,26 +187,12 @@ sampleNames(VcfIOContext<TNameStore, TNameStoreCache, TStorageSpec> & context)
}
template <typename TNameStore, typename TNameStoreCache, typename TStorageSpec>
-inline TNameStore const &
-sampleNames(VcfIOContext<TNameStore, TNameStoreCache, TStorageSpec> const & context)
-{
- return _referenceCast<TNameStore &>(context._sampleNames);
-}
-
-template <typename TNameStore, typename TNameStoreCache, typename TStorageSpec>
inline TNameStoreCache &
sampleNamesCache(VcfIOContext<TNameStore, TNameStoreCache, TStorageSpec> & context)
{
return _referenceCast<TNameStoreCache &>(context._sampleNamesCache);
}
-template <typename TNameStore, typename TNameStoreCache, typename TStorageSpec>
-inline TNameStoreCache const &
-sampleNamesCache(VcfIOContext<TNameStore, TNameStoreCache, TStorageSpec> const & context)
-{
- return _referenceCast<TNameStoreCache &>(context._sampleNamesCache);
-}
-
} // namespace seqan
#endif // #ifndef SEQAN_INCLUDE_SEQAN_VCF_IO_VCF_IO_CONTEXT_H_
diff --git a/include/seqan/version.h b/include/seqan/version.h
index a79d6da..43000b2 100644
--- a/include/seqan/version.h
+++ b/include/seqan/version.h
@@ -41,7 +41,7 @@
#define SEQAN_VERSION_MINOR 0
-#define SEQAN_VERSION_PATCH 1
+#define SEQAN_VERSION_PATCH 0
#define SEQAN_VERSION_PRE_RELEASE 0
diff --git a/manual/requirements.txt b/manual/requirements.txt
index 6c3be10..0218b7b 100644
--- a/manual/requirements.txt
+++ b/manual/requirements.txt
@@ -1,4 +1,3 @@
-seqansphinx>=0.3.2
+seqansphinx>=0.3.0
sphinx_rtd_theme
sphinxcontrib-bibtex
-nose
diff --git a/manual/source/BuildManual/UsingTheSeqAnBuildSystem.rst b/manual/source/BuildManual/UsingTheSeqAnBuildSystem.rst
index 668759a..ef4d093 100644
--- a/manual/source/BuildManual/UsingTheSeqAnBuildSystem.rst
+++ b/manual/source/BuildManual/UsingTheSeqAnBuildSystem.rst
@@ -100,7 +100,7 @@ The library will be installed to ``~/local/seqan``.
~ # cd seqan-build/library_only
library_only # cmake ../../seqan-src -DCMAKE_INSTALL_PREFIX=~/local/seqan \
-DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_LIBRARY
- library_only # make dox
+ library_only # make docs
library_only # make install
The user can now find the SeqAn library in ``~/local/seqan/include``:
@@ -189,7 +189,7 @@ Packaging Library Releases
^^^^^^^^^^^^^^^^^^^^^^^^^^
Packaging the library and documentation is quite simple. Note that we
-have to build the documentation using ``make dox`` before calling
+have to build the documentation using ``make docs`` before calling
``make package`` because of a `bug in
CMake <http://public.kitware.com/Bug/view.php?id=8438>`_ that prevents
us from doing it automatically.
@@ -205,7 +205,7 @@ whether it is a pre-release of the next version.
~ # mkdir -p seqan-build/release_library
~ # cd seqan-build/release_library
release_library # cmake ../../seqan-src -DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_LIBRARY
- release_library # make dox
+ release_library # make docs
release_library # make package
On Linux, this will build three archives:
@@ -337,7 +337,7 @@ Library Only
release_library # cmake ../../seqan-src -DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_LIBRARY \
-DSEQAN_NIGHTLY_RELEASE=TRUE
- release_library # make dox
+ release_library # make docs
release_library # make package
release_library # ls -l seqan-library-20121120-*
-rw-rw-r-- 1 USER GROUP 3368034 Nov 20 14:07 seqan-library-20121120-Linux.deb
diff --git a/manual/source/HowTo/ClipAlignments.rst b/manual/source/HowTo/ClipAlignments.rst
index 5971c2a..fe95f61 100644
--- a/manual/source/HowTo/ClipAlignments.rst
+++ b/manual/source/HowTo/ClipAlignments.rst
@@ -31,5 +31,5 @@ An Example
The following extensive example shows how to practically translate between the coordinate systems.
-.. includefrags:: demos/howto/align_gaps_clipping.cpp
+.. includefrags:: demos/align_gaps_clipping.cpp
diff --git a/manual/source/HowTo/GenerateSeqAnKnimeNodes.rst b/manual/source/HowTo/GenerateSeqAnKnimeNodes.rst
index 9534903..4e99901 100644
--- a/manual/source/HowTo/GenerateSeqAnKnimeNodes.rst
+++ b/manual/source/HowTo/GenerateSeqAnKnimeNodes.rst
@@ -105,7 +105,7 @@ We then execute ant and pass the variables ``knime.sdk`` with the path to the KN
The generated files are within the *generated_plugin* directory of the directory *GenericKnimeNodes*.
-If you ran into problems, you may copy the file `knime_node_app.zip <https://github.com/seqan/knime_node_template/archive/master.zip>`_, which contains the ``knime_node`` app and the adjusted *CMakeList.txt* file.
+If you ran into problems, you may copy the file :download:`knime_node_app.zip <knime_node_app.zip>`, which contains the ``knime_node`` app and the adjusted *CMakeList.txt* file.
Unpack this file in the ``apps`` directory.
You still have to call *ant* though.
diff --git a/manual/source/HowTo/UseSeqAnNodesInKnime.rst b/manual/source/HowTo/UseSeqAnNodesInKnime.rst
index 3302c08..4850bdb 100644
--- a/manual/source/HowTo/UseSeqAnNodesInKnime.rst
+++ b/manual/source/HowTo/UseSeqAnNodesInKnime.rst
@@ -29,7 +29,7 @@ In the opening dialog fill in the following Information:
``Name``
``KNIME Nightly Unstable``
``Location``
- ``http://update.knime.org/community-contributions/trunk/``
+ ``http://tech.knime.org/update/community-contributions/nightly/``
.. figure:: install-knime-3.png
diff --git a/manual/source/HowTo/WorkWithCustomScoreMatrices.rst b/manual/source/HowTo/WorkWithCustomScoreMatrices.rst
index 0ee3be9..67cddfa 100644
--- a/manual/source/HowTo/WorkWithCustomScoreMatrices.rst
+++ b/manual/source/HowTo/WorkWithCustomScoreMatrices.rst
@@ -37,8 +37,9 @@ We define a function ``showScoringMatrix`` for displaying a matrix.
Finally, the function ``main`` function demostrates some of the things you can do with scores:
* Construct empty score matrix object (2.)
-* Programmatically fill the score matrix in a loop (3.1)
-* Programatically fill the matrix with the user-defined matrix values (3.2)
+* Programatically fill the matrix with a built-in matrix values (3.1)
+* Programmatically fill the score matrix in a loop (3.2)
+* Programatically fill the matrix with the user-defined matrix values (3.3)
* Directly create a score matrix with the user-defined matrix values (4)
.. includefrags:: demos/howto/scores/init_score.cpp
@@ -46,7 +47,124 @@ Finally, the function ``main`` function demostrates some of the things you can d
Here is the output of the program:
-.. includefrags:: demos/howto/scores/init_score.cpp.stdout
+.. code-block:: console
+
+ $ make tutorial_init_score
+ $ ./demos/tutorial_init_score
+ BLOSUM 30
+ A R N D C Q E G H I L K M F P S T W Y V B Z X *
+ A 4 -1 0 0 -3 1 0 0 -2 0 -1 0 1 -2 -1 1 1 -5 -4 1 0 0 0 -7
+ R -1 8 -2 -1 -2 3 -1 -2 -1 -3 -2 1 0 -1 -1 -1 -3 0 0 -1 -2 0 -1 -7
+ N 0 -2 8 1 -1 -1 -1 0 -1 0 -2 0 0 -1 -3 0 1 -7 -4 -2 4 -1 0 -7
+ D 0 -1 1 9 -3 -1 1 -1 -2 -4 -1 0 -3 -5 -1 0 -1 -4 -1 -2 5 0 -1 -7
+ C -3 -2 -1 -3 17 -2 1 -4 -5 -2 0 -3 -2 -3 -3 -2 -2 -2 -6 -2 -2 0 -2 -7
+ Q 1 3 -1 -1 -2 8 2 -2 0 -2 -2 0 -1 -3 0 -1 0 -1 -1 -3 -1 4 0 -7
+ E 0 -1 -1 1 1 2 6 -2 0 -3 -1 2 -1 -4 1 0 -2 -1 -2 -3 0 5 -1 -7
+ G 0 -2 0 -1 -4 -2 -2 8 -3 -1 -2 -1 -2 -3 -1 0 -2 1 -3 -3 0 -2 -1 -7
+ H -2 -1 -1 -2 -5 0 0 -3 14 -2 -1 -2 2 -3 1 -1 -2 -5 0 -3 -2 0 -1 -7
+ I 0 -3 0 -4 -2 -2 -3 -1 -2 6 2 -2 1 0 -3 -1 0 -3 -1 4 -2 -3 0 -7
+ L -1 -2 -2 -1 0 -2 -1 -2 -1 2 4 -2 2 2 -3 -2 0 -2 3 1 -1 -1 0 -7
+ K 0 1 0 0 -3 0 2 -1 -2 -2 -2 4 2 -1 1 0 -1 -2 -1 -2 0 1 0 -7
+ M 1 0 0 -3 -2 -1 -1 -2 2 1 2 2 6 -2 -4 -2 0 -3 -1 0 -2 -1 0 -7
+ F -2 -1 -1 -5 -3 -3 -4 -3 -3 0 2 -1 -2 10 -4 -1 -2 1 3 1 -3 -4 -1 -7
+ P -1 -1 -3 -1 -3 0 1 -1 1 -3 -3 1 -4 -4 11 -1 0 -3 -2 -4 -2 0 -1 -7
+ S 1 -1 0 0 -2 -1 0 0 -1 -1 -2 0 -2 -1 -1 4 2 -3 -2 -1 0 -1 0 -7
+ T 1 -3 1 -1 -2 0 -2 -2 -2 0 0 -1 0 -2 0 2 5 -5 -1 1 0 -1 0 -7
+ W -5 0 -7 -4 -2 -1 -1 1 -5 -3 -2 -2 -3 1 -3 -3 -5 20 5 -3 -5 -1 -2 -7
+ Y -4 0 -4 -1 -6 -1 -2 -3 0 -1 3 -1 -1 3 -2 -2 -1 5 9 1 -3 -2 -1 -7
+ V 1 -1 -2 -2 -2 -3 -3 -3 -3 4 1 -2 0 1 -4 -1 1 -3 1 5 -2 -3 0 -7
+ B 0 -2 4 5 -2 -1 0 0 -2 -2 -1 0 -2 -3 -2 0 0 -5 -3 -2 5 0 -1 -7
+ Z 0 0 -1 0 0 4 5 -2 0 -3 -1 1 -1 -4 0 -1 -1 -1 -2 -3 0 4 0 -7
+ X 0 -1 0 -1 -2 0 -1 -1 -1 0 0 0 0 -1 -1 0 0 -2 -1 0 -1 0 -1 -7
+ * -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 1
+
+ Coordinate Products
+ A R N D C Q E G H I L K M F P S T W Y V B Z X *
+ A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ R 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
+ N 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46
+ D 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69
+ C 0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92
+ Q 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115
+ E 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84 90 96 102 108 114 120 126 132 138
+ G 0 7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 112 119 126 133 140 147 154 161
+ H 0 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120 128 136 144 152 160 168 176 184
+ I 0 9 18 27 36 45 54 63 72 81 90 99 108 117 126 135 144 153 162 171 180 189 198 207
+ L 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230
+ K 0 11 22 33 44 55 66 77 88 99 110 121 132 143 154 165 176 187 198 209 220 231 242 253
+ M 0 12 24 36 48 60 72 84 96 108 120 132 144 156 168 180 192 204 216 228 240 252 264 276
+ F 0 13 26 39 52 65 78 91 104 117 130 143 156 169 182 195 208 221 234 247 260 273 286 299
+ P 0 14 28 42 56 70 84 98 112 126 140 154 168 182 196 210 224 238 252 266 280 294 308 322
+ S 0 15 30 45 60 75 90 105 120 135 150 165 180 195 210 225 240 255 270 285 300 315 330 345
+ T 0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256 272 288 304 320 336 352 368
+ W 0 17 34 51 68 85 102 119 136 153 170 187 204 221 238 255 272 289 306 323 340 357 374 391
+ Y 0 18 36 54 72 90 108 126 144 162 180 198 216 234 252 270 288 306 324 342 360 378 396 414
+ V 0 19 38 57 76 95 114 133 152 171 190 209 228 247 266 285 304 323 342 361 380 399 418 437
+ B 0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400 420 440 460
+ Z 0 21 42 63 84 105 126 147 168 189 210 231 252 273 294 315 336 357 378 399 420 441 462 483
+ X 0 22 44 66 88 110 132 154 176 198 220 242 264 286 308 330 352 374 396 418 440 462 484 506
+ * 0 23 46 69 92 115 138 161 184 207 230 253 276 299 322 345 368 391 414 437 460 483 506 529
+
+ User defined matrix (also BLOSUM 30)...
+ A R N D C Q E G H I L K M F P S T W Y V B Z X *
+ A 4 -1 0 0 -3 1 0 0 -2 0 -1 0 1 -2 -1 1 1 -5 -4 1 0 0 0 -7
+ R -1 8 -2 -1 -2 3 -1 -2 -1 -3 -2 1 0 -1 -1 -1 -3 0 0 -1 -2 0 -1 -7
+ N 0 -2 8 1 -1 -1 -1 0 -1 0 -2 0 0 -1 -3 0 1 -7 -4 -2 4 -1 0 -7
+ D 0 -1 1 9 -3 -1 1 -1 -2 -4 -1 0 -3 -5 -1 0 -1 -4 -1 -2 5 0 -1 -7
+ C -3 -2 -1 -3 17 -2 1 -4 -5 -2 0 -3 -2 -3 -3 -2 -2 -2 -6 -2 -2 0 -2 -7
+ Q 1 3 -1 -1 -2 8 2 -2 0 -2 -2 0 -1 -3 0 -1 0 -1 -1 -3 -1 4 0 -7
+ E 0 -1 -1 1 1 2 6 -2 0 -3 -1 2 -1 -4 1 0 -2 -1 -2 -3 0 5 -1 -7
+ G 0 -2 0 -1 -4 -2 -2 8 -3 -1 -2 -1 -2 -3 -1 0 -2 1 -3 -3 0 -2 -1 -7
+ H -2 -1 -1 -2 -5 0 0 -3 14 -2 -1 -2 2 -3 1 -1 -2 -5 0 -3 -2 0 -1 -7
+ I 0 -3 0 -4 -2 -2 -3 -1 -2 6 2 -2 1 0 -3 -1 0 -3 -1 4 -2 -3 0 -7
+ L -1 -2 -2 -1 0 -2 -1 -2 -1 2 4 -2 2 2 -3 -2 0 -2 3 1 -1 -1 0 -7
+ K 0 1 0 0 -3 0 2 -1 -2 -2 -2 4 2 -1 1 0 -1 -2 -1 -2 0 1 0 -7
+ M 1 0 0 -3 -2 -1 -1 -2 2 1 2 2 6 -2 -4 -2 0 -3 -1 0 -2 -1 0 -7
+ F -2 -1 -1 -5 -3 -3 -4 -3 -3 0 2 -1 -2 10 -4 -1 -2 1 3 1 -3 -4 -1 -7
+ P -1 -1 -3 -1 -3 0 1 -1 1 -3 -3 1 -4 -4 11 -1 0 -3 -2 -4 -2 0 -1 -7
+ S 1 -1 0 0 -2 -1 0 0 -1 -1 -2 0 -2 -1 -1 4 2 -3 -2 -1 0 -1 0 -7
+ T 1 -3 1 -1 -2 0 -2 -2 -2 0 0 -1 0 -2 0 2 5 -5 -1 1 0 -1 0 -7
+ W -5 0 -7 -4 -2 -1 -1 1 -5 -3 -2 -2 -3 1 -3 -3 -5 20 5 -3 -5 -1 -2 -7
+ Y -4 0 -4 -1 -6 -1 -2 -3 0 -1 3 -1 -1 3 -2 -2 -1 5 9 1 -3 -2 -1 -7
+ V 1 -1 -2 -2 -2 -3 -3 -3 -3 4 1 -2 0 1 -4 -1 1 -3 1 5 -2 -3 0 -7
+ B 0 -2 4 5 -2 -1 0 0 -2 -2 -1 0 -2 -3 -2 0 0 -5 -3 -2 5 0 -1 -7
+ Z 0 0 -1 0 0 4 5 -2 0 -3 -1 1 -1 -4 0 -1 -1 -1 -2 -3 0 4 0 -7
+ X 0 -1 0 -1 -2 0 -1 -1 -1 0 0 0 0 -1 -1 0 0 -2 -1 0 -1 0 -1 -7
+ * -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 1
+
+ A R N D C Q E G H I L K M F P S T W Y V B Z X *
+ A 4 -1 0 0 -3 1 0 0 -2 0 -1 0 1 -2 -1 1 1 -5 -4 1 0 0 0 -7
+ R -1 8 -2 -1 -2 3 -1 -2 -1 -3 -2 1 0 -1 -1 -1 -3 0 0 -1 -2 0 -1 -7
+ N 0 -2 8 1 -1 -1 -1 0 -1 0 -2 0 0 -1 -3 0 1 -7 -4 -2 4 -1 0 -7
+ D 0 -1 1 9 -3 -1 1 -1 -2 -4 -1 0 -3 -5 -1 0 -1 -4 -1 -2 5 0 -1 -7
+ C -3 -2 -1 -3 17 -2 1 -4 -5 -2 0 -3 -2 -3 -3 -2 -2 -2 -6 -2 -2 0 -2 -7
+ Q 1 3 -1 -1 -2 8 2 -2 0 -2 -2 0 -1 -3 0 -1 0 -1 -1 -3 -1 4 0 -7
+ E 0 -1 -1 1 1 2 6 -2 0 -3 -1 2 -1 -4 1 0 -2 -1 -2 -3 0 5 -1 -7
+ G 0 -2 0 -1 -4 -2 -2 8 -3 -1 -2 -1 -2 -3 -1 0 -2 1 -3 -3 0 -2 -1 -7
+ H -2 -1 -1 -2 -5 0 0 -3 14 -2 -1 -2 2 -3 1 -1 -2 -5 0 -3 -2 0 -1 -7
+ I 0 -3 0 -4 -2 -2 -3 -1 -2 6 2 -2 1 0 -3 -1 0 -3 -1 4 -2 -3 0 -7
+ L -1 -2 -2 -1 0 -2 -1 -2 -1 2 4 -2 2 2 -3 -2 0 -2 3 1 -1 -1 0 -7
+ K 0 1 0 0 -3 0 2 -1 -2 -2 -2 4 2 -1 1 0 -1 -2 -1 -2 0 1 0 -7
+ M 1 0 0 -3 -2 -1 -1 -2 2 1 2 2 6 -2 -4 -2 0 -3 -1 0 -2 -1 0 -7
+ F -2 -1 -1 -5 -3 -3 -4 -3 -3 0 2 -1 -2 10 -4 -1 -2 1 3 1 -3 -4 -1 -7
+ P -1 -1 -3 -1 -3 0 1 -1 1 -3 -3 1 -4 -4 11 -1 0 -3 -2 -4 -2 0 -1 -7
+ S 1 -1 0 0 -2 -1 0 0 -1 -1 -2 0 -2 -1 -1 4 2 -3 -2 -1 0 -1 0 -7
+ T 1 -3 1 -1 -2 0 -2 -2 -2 0 0 -1 0 -2 0 2 5 -5 -1 1 0 -1 0 -7
+ W -5 0 -7 -4 -2 -1 -1 1 -5 -3 -2 -2 -3 1 -3 -3 -5 20 5 -3 -5 -1 -2 -7
+ Y -4 0 -4 -1 -6 -1 -2 -3 0 -1 3 -1 -1 3 -2 -2 -1 5 9 1 -3 -2 -1 -7
+ V 1 -1 -2 -2 -2 -3 -3 -3 -3 4 1 -2 0 1 -4 -1 1 -3 1 5 -2 -3 0 -7
+ B 0 -2 4 5 -2 -1 0 0 -2 -2 -1 0 -2 -3 -2 0 0 -5 -3 -2 5 0 -1 -7
+ Z 0 0 -1 0 0 4 5 -2 0 -3 -1 1 -1 -4 0 -1 -1 -1 -2 -3 0 4 0 -7
+ X 0 -1 0 -1 -2 0 -1 -1 -1 0 0 0 0 -1 -1 0 0 -2 -1 0 -1 0 -1 -7
+ * -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 1
+
+ User DNA scoring scheme...
+ A C G T N
+ A 1 0 0 0 0
+ C 0 1 0 0 0
+ G 0 0 1 0 0
+ T 0 0 0 1 0
+ N 0 0 0 0 0
Loading Score Matrices From File
------------------------------------
@@ -64,11 +182,20 @@ We define a function that can show a scoring matrix.
.. includefrags:: demos/howto/scores/load_score.cpp
:fragment: show-scoring-matrix
-Finally, the main program loads the scoring matrix and then shows it.
+Finally, the main program loads the scoring matrix from the file given on the command line and then shows it.
.. includefrags:: demos/howto/scores/load_score.cpp
:fragment: main
Here's the program output.
-.. includefrags:: demos/howto/scores/load_score.cpp.stdout
+.. code-block:: console
+
+ $ make tutorial_load_score
+ $ ./demos/tutorial_load_score ../../demos/howto/scores/dna_example.txt
+ A C G T
+ A 1 -1 -1 -1
+ C -1 1 -1 -1
+ G -1 -1 1 -1
+ T -1 -1 -1 1
+
diff --git a/manual/source/HowTo/knime_node_app.zip b/manual/source/HowTo/knime_node_app.zip
new file mode 100644
index 0000000..592094e
Binary files /dev/null and b/manual/source/HowTo/knime_node_app.zip differ
diff --git a/manual/source/HowTo/workflow_plugin_dir.zip b/manual/source/HowTo/workflow_plugin_dir.zip
index 15397a5..47ccf60 100644
Binary files a/manual/source/HowTo/workflow_plugin_dir.zip and b/manual/source/HowTo/workflow_plugin_dir.zip differ
diff --git a/manual/source/Infrastructure/Documentation.rst b/manual/source/Infrastructure/Documentation.rst
index e1550bd..f9f2ba5 100644
--- a/manual/source/Infrastructure/Documentation.rst
+++ b/manual/source/Infrastructure/Documentation.rst
@@ -38,13 +38,3 @@ Follow these instructions to setup a local sphinx environment and build the manu
(seqan-manual-env) $ make html
Note that you have to first build the dox documentation since plugins for generating the ``:dox:`` links rely on the generated search index for checks.
-In order to get correct dox-links within the generated manuals, you have to specify the correct branch version.
-If you are working on the develop branch there is nothing to do, since ``'develop'`` is set by default.
-But if you are working on another branch, for example ``master``, you can set the correct branch by calling
-
-.. code-block:: console
-
- (seqan-manual-env) $ export READTHEDOCS_VERSION='master'
-
-before you call ``make html`` as described in the previous step.
-This will generate the correct links to the master's version of the dox, i.e., ``http://docs.seqan.de/seqan/master/``
\ No newline at end of file
diff --git a/manual/source/StyleGuide/Cpp.rst b/manual/source/StyleGuide/Cpp.rst
index afc75ff..49dac98 100644
--- a/manual/source/StyleGuide/Cpp.rst
+++ b/manual/source/StyleGuide/Cpp.rst
@@ -69,18 +69,34 @@ Do this instead.
Exceptions
^^^^^^^^^^
-SeqAn functions throw exceptions only to report unrecoverable errors, usually during I/O.
-Instead, functions expected to either success or fail use boolean return values to report their status.
+Currently, the SeqAn code does not use any exceptions and is not exception safe.
+Do not use any exceptions yourself, instead use return codes.
-Virtual Member Functions
-^^^^^^^^^^^^^^^^^^^^^^^^
+.. container:: foldable
-SeqAn heavily uses template subclassing instead of C++ built-in subclassing.
-This technique requires using global member functions instead of in-class member functions.
+ The following is an example where two chars are read using ``<cstdio>`` I/O.
+ We use a return code of ``0`` to indicate no errors.
-If the design requires using in-class member functions, the keyword ``virtual`` should be avoided.
-Virtual member functions cannot be inlined and are thus slow when used in tight loops.
+ .. code-block:: cpp
+
+ int readSome(char & c, FILE * fp)
+ {
+ int res = fgetc(fp);
+ if (res < 0)
+ return res;
+ res = fgetc(fp);
+ if (res < 0)
+ return res;
+ c = res;
+ return 0;
+ }
+
+Virtual Member Functions
+^^^^^^^^^^^^^^^^^^^^^^^^
+Do not use virtual member functions.
+Since we mostly use template subclassing instead of C++ built-in subclassing, there rarely is the need for member functions.
+In the case where there are member functions, they should not be ``virtual`` since this is slow when used in tight loops.
``static_cast<>``
^^^^^^^^^^^^^^^^^
diff --git a/manual/source/StyleGuide/DoxApiDocs.rst b/manual/source/StyleGuide/DoxApiDocs.rst
index bba40d4..20e71ae 100644
--- a/manual/source/StyleGuide/DoxApiDocs.rst
+++ b/manual/source/StyleGuide/DoxApiDocs.rst
@@ -661,7 +661,7 @@ metafunction then use a ``TXyz`` return type in ``@return`` and document
**Signature** ``@return Exception Label``
-Add note on a function or macro throwing an exception.
+Add note on a function or macro throwing ane xception.
.. code-block:: cpp
@@ -676,28 +676,6 @@ Add note on a function or macro throwing an exception.
*/
void myFunction(char const * filename);
- at datarace
-^^^^^^^^^
-
-**Signature** ``@datarace Description``
-
-Describe possible data races for functions and macros.
-If this value is not specified it defaults to ``Thread safety unknown!``
-
-.. code-block:: cpp
-
- /*!
- * @fn myFunction
- * @brief Writes things to a file.
- * @signature void myFunction(char const * filename);
- *
- * @param[in] filename File to write to.
- *
- * @datarace This function is not thread safe and concurrent writes to the file might invalidate the output.
- */
- void myFunction(char const * filename);
-
-
@section
^^^^^^^^
diff --git a/manual/source/Tutorial.rst b/manual/source/Tutorial.rst
index 3664903..91289e7 100644
--- a/manual/source/Tutorial.rst
+++ b/manual/source/Tutorial.rst
@@ -19,7 +19,7 @@ Tutorial
:maxdepth: 2
Tutorial/GettingStarted
- Tutorial/AFirstExample
+ Tutorial/FirstStepsInSeqAn
Tutorial/BackgroundAndMotivation
Tutorial/Sequences
@@ -35,19 +35,19 @@ Tutorial
Tutorial/Indices
Tutorial/IndexIterators
- Tutorial/QgramIndex
+ Tutorial/IndexQGram
Tutorial/PatternMatching
Tutorial/Graphs
- Tutorial/FileIOOverview
+ Tutorial/InputOutputOverview
Tutorial/SequenceIO
Tutorial/IndexedFastaIO
- Tutorial/SamAndBamIO
+ Tutorial/SamBamIO
Tutorial/VcfIO
Tutorial/BedIO
- Tutorial/GffAndGtfIO
+ Tutorial/GffGtfIO
Tutorial/Modifiers
@@ -57,19 +57,21 @@ Tutorial
Tutorial/ParsingCommandLineArguments
- Tutorial/GenomeAnnotations
+ Tutorial/AnnotationStore
Tutorial/FragmentStore
Tutorial/ConsensusAlignment
Tutorial/Realignment
Tutorial/SimpleRnaSeq
- Tutorial/JournaledSet
+ Tutorial/SimpleReadMapping
+ Tutorial/MiniBowtie
+ Tutorial/JournalSet
Tutorial/KnimeNode
Tutorial/BasicTechniques
Tutorial/Metafunctions
- Tutorial/GenericProgramming
+ Tutorial/TemplateSubclassing
Tutorial/GlobalFunctionInterface
Tutorial/Basics
@@ -228,6 +230,13 @@ The article :ref:`build-manual-integration-with-your-own-build-system` contains
:ref:`tutorial-simple-rna-seq`
In this tutorial you will learn how to implement a simple RNA-Seq based gene quantification tool, that computes RPKM expression levels based on a given genome annotation and RNA-Seq read alignments.
+:ref:`tutorial-simple-read-mapping`
+ This tutorial shows how to implement a simple read mapping program based on the SWIFT filter and online Hamming finder for verification.
+
+:ref:`tutorial-mini-bowtie`
+ Mini-Bowtie is a very basic read aligner that is inspired by the well known Bowtie program :cite:`Langmead2009`.
+ It serves as an example to show that you can write sophisticated programs with SeqAn using few lines of code.
+
:ref:`tutorial-data-journaling`
In this tutorial we demonstrate how you can handle multiple large sequence in main memory while the data structures themself support a certain parallel sequence analysis.
diff --git a/manual/source/Tutorial/AFirstExample.rst b/manual/source/Tutorial/AFirstExample.rst
deleted file mode 100644
index f3f7003..0000000
--- a/manual/source/Tutorial/AFirstExample.rst
+++ /dev/null
@@ -1,563 +0,0 @@
-.. sidebar:: ToC
-
- .. contents::
-
-
-.. _tutorial-first-steps-in-seqan:
-
-A First Example
----------------
-
-Learning Objective
- You will learn the most basic concepts of SeqAn.
- After this tutorial you will be ready to deal with the more specific tutorials, e.g. Sequences.
-
-Difficulty
- Very basic
-
-Duration
- 1.5h
-
-Prerequisites
- Basic C or C++ knowledge
-
-Welcome to the SeqAn "Hello World".
-This is the first practical tutorial you should look at when starting to use our software library.
-
-We assume that you have some programming experience (preferably in C++ or C) and concentrate on SeqAn specific aspects.
-We will start out pretty slowly and hopefully the tutorial will make sense to you even if you are new to C++.
-However, to really leverage the power of SeqAn you will have to learn C++.
-There are many tutorials on C++, for example `the tutorial at cplusplus.com <http://www.cplusplus.com/doc/tutorial/>`_.
-
-This tutorial will walk you through a simple example program that highlights the things that are most prominently different from the libraries that many SeqAn newcomers are used to:
-
-* extensive usage of C++ templates,
-* generic programming using templates,
-* using references instead of pointers in most places,
-* and more.
-
-Running Example
-~~~~~~~~~~~~~~~
-
-Our example program will do a pattern search of a short query sequence in a long database sequence.
-As the score, we will compute the number of equal characters at each position.
-
-The following figure shows an example:
-
-::
-
- score: 101 ... ... 801 ...
- text: This is an awesome tutorial to get to know SeqAn!
- pattern: tutorial tutorial
- tutorial tutorial
- ... ...
-
-
-The first position has a score of 1, because the ``i`` in the pattern matches the ``i`` in ``is``.
-This is only a toy example for explanatory reasons and we ignore any more advanced implementations.
-
-In SeqAn the program could look like this (we will explain every line of code shortly):
-
-.. includefrags:: demos/tutorial/a_first_example/basic_code.cpp
- :fragment: all
-
-Whenever we use SeqAn classes or functions we have to explicitly write the namespace qualifier ``seqan::`` in front of the class name or function.
-This can be circumvented if we include the line ``using namespace seqan;`` at the top of the working example.
-However, during this tutorial we will not do this, such that SeqAn classes and functions can be recognized more easily.
-
-.. attention::
-
- Argument-Dependent Name Lookup (Koenig Lookup)
-
- Using the namespace prefix ``seqan::`` is not really necessary in all places.
- In many cases, the Koenig lookup rule in C++ for functions makes this unnecessary.
- Consider the following, compiling, example.
-
- .. code-block:: cpp
-
- seqan::String<char> s = "example";
- unsigned i = length(s);
-
-Here, the function ``length`` does not have a namespace prefix.
-The code compiles nevertheless.
-The compiler automatically looks for a function ``length`` in the namespace of its arguments.
-
-Note that we follow the rules for variable, function, and class names as outlined in the :ref:`SeqAn style guide <style-guide-cpp>`.
-For example: (1) variables and functions use lower case, (2) struct, enum and classes use CamelCase, (3) metafunctions start with a capital letter, and (4) metafunction values are UPPERCASE.
-
-Assignment 1
-^^^^^^^^^^^^
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Create a demo program and replace its content with the code above.
-
- Hint
- Depending on your operating system you have different alternatives to create a demo application.
- An in depth description can be found in GettingStarted.
-
- Solution
- Click ''more...''
-
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/a_first_example/solution_1.cpp
-
-SeqAn and Templates
-~~~~~~~~~~~~~~~~~~~
-
-Let us now have a detailed look at the program.
-
-We first include the IOStreams library that we need to print to the screen and the SeqAn's ``<seqan/file.h>`` as well as ``<seqan/sequence.h>`` module from the SeqAn library that provides SeqAn :dox:`String`.
-
-.. includefrags:: demos/tutorial/a_first_example/basic_code_detailed.cpp
- :fragment: includes
-
-The :dox:`String String class` is one of the most fundamental classes in SeqAn, which comes as no surprise since SeqAn is used to analyse sequences (there is an extra tutorial for SeqAn :ref:`sequences <tutorial-sequences>` and :ref:`alphabets <tutorial-alphabets>`).
-
-In contrast to the popular string classes of Java or C++, SeqAn provides different string implementations and different alphabets for its strings.
-There is one string implementation that stores characters in memory, just like normal C++ strings.
-Another string implementation stores the characters on disk and only keeps a part of the sequence in memory.
-For alphabets, you can use strings of nucleotides, such as genomes, or you can use strings of amino acids, for example.
-
-SeqAn uses **template functions** and **template classes** to implement the different types of strings using the **generic programming** paradigm.
-Template functions/classes are normal functions/classes with the additional feature that one passes the type of a variable as well as its value (see also: `templates in cpp <http://www.cplusplus.com/doc/tutorial/templates/>`_).
-This means that SeqAn algorithms and data structures are implemented in such a way that they work on all types implementing an informal interface (see information box below for more details).
-This is similar to the philosophy employed in the C++ STL (Standard Template Library).
-Even though we provide further tutorials on templates in SeqAn (:ref:`tutorial-basic-techniques`, :ref:`tutorial-metafunctions`, :ref:`tutorial-template-subclassing`, :ref:`tutorial-global-function-interface`), they are more advanced and not required to follow this tutorial.
-
-The following two lines make use of template programming to define two strings of type char, a text and a pattern.
-
-.. includefrags:: demos/tutorial/a_first_example/basic_code_detailed.cpp
- :fragment: sequences
-
-In order to store the similarities between the pattern and different text positions we additionally create a string storing integer values.
-
-.. includefrags:: demos/tutorial/a_first_example/basic_code_detailed.cpp
- :fragment: score
-
-Note that in contrast to the first two string definitions we do not know the values of the different positions in the string in advance.
-In order to dynamically adjust the length of the new string to the text we can use the function :dox:`StringConcept#resize`.
-The resize function is not a member function of the string class because SeqAn is not object oriented in the typical sence (we will see later how we adapt SeqAn to object oriented programming).
-Therefore, instead of writing ``string.resize(newLength)`` we use ``resize(string, newLength)``.
-
-.. includefrags:: demos/tutorial/a_first_example/basic_code_detailed.cpp
- :fragment: resize
-
-.. note::
-
- Global function interfaces.
-
- SeqAn uses **global interfaces** for its data types/classes.
- Generally, you have to use ``function(variable)`` instead of ``variable.function()``.
-
- This has the advantage that we can extend the interface of a type outside of its definition.
- For example, we can provide a ``length()`` function for STL containers ``std::string<T>`` and ``std::vector<T>`` outside their class files.
- We can use such global functions to make one data type have the same interface as a second.
- This is called **adaption**.
-
- Additionally, we can use one function definition for several data types.
- For example, the alignment algorithms in SeqAn are written such that we can compute alignments using any :dox:`String` with any alphabet:
- There are more than 5 :dox:`String` variants in SeqAn and more than 8 built-in alphabets.
- Thus, one implementation can be used for more than 40 different data types!
-
-After the string initializations it is now time for the similarity computation.
-In this toy example we simply take the pattern and shift it over the text from left to right.
-After each step, we check how many characters are equal between the corresponding substring of the text and the pattern.
-We implement this using two loops; the outer one iterates over the given text and the inner loop over the given pattern:
-
-.. includefrags:: demos/tutorial/a_first_example/basic_code_detailed.cpp
- :fragment: similarity
-
-There are two things worth mentioning here: (1) SeqAn containers or strings start at position 0 and (2) you will notice that we use ``++variable`` instead of ``variable++`` wherever possible.
-The reason is that ``++variable`` is slightly faster than its alternative, since the alternative needs to make a copy of itself before returning the result.
-
-In the last step we simply print the result that we stored in the variable ``````score`` on screen.
-This gives the similarity of the pattern to the string at each position.
-
-.. includefrags:: demos/tutorial/a_first_example/basic_code_detailed.cpp
- :fragment: print
-
-Code Encapsulation
-~~~~~~~~~~~~~~~~~~
-
-At this point, we have already created a working solution!
-However, in order to make it easier to maintain and reuse parts of the code we need to export them into functions.
-In this example the interesting piece of code is the similarity computation, which consists of an outer and inner loop.
-We encapsulate the outer loop in function ``computeScore`` and the inner loop in function ``computeLocalScore`` as can be seen in the following code.
-
-.. includefrags:: demos/tutorial/a_first_example/code_encapsulation.cpp
- :fragment: all
-
-The function computeScore() now contains the fundamental part of the code and can be reused by other functions.
-The input arguments are two strings.
-One is the pattern itself and one is a substring of the text.
-In order to obtain the substring we can use the function :dox:`SegmentableConcept#infix` implemented in SeqAn.
-The function call ``infix(text, i, j)`` generates a substring equal to ``text[i ... j - 1]``, e.g. ``infix(text, 1, 5)`` equals "ello", where ``text`` is "Hello World".
-To be more precise, infix() generates a :dox:`InfixSegment Infix` which can be used as a string, but is implemented using pointers such that no copying is necessary and running time and memory is saved.
-
-Assignment 2
-^^^^^^^^^^^^
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Replace the code in your current file by the code above and encapsulate the print instructions.
-
- Hint
- The function head should look like this:
-
- .. code-block::cpp
-
- void print(seqan::String<int> score)
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/a_first_example/solution_2.cpp
-
-The Role of References in SeqAn
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Let us now have a closer look at the signature of ``computeScore()``.
-
-Both the text and the pattern are passed *by value*.
-This means that both the text and the pattern are copied when the function is called, which consumes twice the memory.
-This can become a real bottleneck since copying longer sequences is very memory and time consuming, think of the human genome, for example.
-
-Instead of copying we could use **references**.
-A reference in C++ is created using an ampersand sign (``&``) and creates an alias to the referenced value.
-Basically, a reference is a pointer to an object which can be used just like the referenced object itself.
-This means that when you change something in the reference you also change the original object it came from.
-But there is a solution to circumvent this modification problem as well, namely the word **const**.
-A ``const`` object cannot be modified.
-
-.. important::
-
- If an object does not need to be modified make it an nonmodifiably object using the keyword ``const``.
- This makes it impossible to *unwillingly* change objects, which can be really hard to debug.
- Therefore it is recommended to use it as often as possible.
-
-Therefore we change the signature of computeScore to:
-
-.. code-block:: cpp
-
- seqan::String<int> computeScore(seqan::String<char> const & text, seqan::String<char> const & pattern)
-
-Reading from right to left the function expects two ``references`` to
-``const objects`` of type ``String`` of ``char``.
-
-Assignment 3
-^^^^^^^^^^^^
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Adjust your current code to be more memory and time efficient by using references in the function header.
-
- Hint
- The function head for ``computeLocalScore`` should look like this:
-
- .. code-block:: cpp
-
- int computeLocalScore(seqan::String<char> const & subText, seqan::String<char> const & pattern)
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/a_first_example/solution_3.cpp
-
-Generic and Reusable Code
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-As mentioned earlier, there is another issue: the function computeScore only works for Strings having the alphabet ``char``.
-If we wanted to use it for ``Dna`` or ``AminoAcid`` strings then we would have to reimplement it even though the only difference is the signature of the function.
-All used functions inside ``computeScore`` can already handle the other datatypes.
-
-The more appropriate solution is a generic design using templates, as often used in the SeqAn library.
-Instead of specifying the input arguments to be references of strings of ``char`` s we could use references of template arguments as shown in the following lines:
-
-.. code-block:: cpp
-
- template <typename TText, typename TPattern>
- seqan::String<int> computeScore(TText const & text, TPattern const & pattern)
-
-The first line above specifies that we create a template function with two template arguments ``TText`` and ``TPattern``.
-At compile time the template arguments are then replace with the correct types.
-If this line was missing the compiler would expect that there are types ``TText`` and ``TPattern`` with definitions.
-
-Now the function signature is better in terms of memory consumption, time efficiency, and generality.
-
-.. important::
-
- The SeqAn Style Guide
-
- The :ref:`SeqAn style guide <style-guide-cpp>` gives rules for formatting and structuring C++ code as well as naming conventions.
- Such rules make the code more consistent, easier to read, and also easier to use.
-
- #. **Naming Scheme**.
- Variable and function names are written in ``lowerCamelCase``, type names are written in ``UpperCamelCase``.
- Constants and enum values are written in ``UPPER_CASE``.
- Template variable names always start with 'T'.
- #. **Function Parameter Order**.
- The order is (1) output, (2) non-const input (e.g. file handles), (3) input, (4) tags.
- Output and non-const input can be modified, the rest is left untouched and either passed by copy or by const-reference (``const &``).
- #. **Global Functions**.
- With the exception of constructors and a few operators that have to be defined in-class, the interfaces in SeqAn use global functions.
- #. **No Exceptions**.
- The SeqAn interfaces do not throw any exceptions.
-
- While we are trying to make the interfaces consistent with our style guide, some functions have incorrect parameter order.
- This will change in the near future to be more in line with the style guide.
-
-Assignment 4
-^^^^^^^^^^^^
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Generalize the ``computeLocalScore`` function in your file.
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/a_first_example/solution_4.cpp
-
-From Object-Oriented Programming to SeqAn
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-There is another huge advantage of using templates: we can specialize a function without touching the existing function.
-In our working example it might be more appropriate to treat ``AminoAcid`` sequences differently.
-As you probably know, there is a similarity relation on amino acids: Certain amino acids are more similar to each other, than others.
-Therefore we want to score different kinds of mismatches differently.
-In order to take this into consideration we simple write a ``computeLocalScore()`` function for ``AminoAcid`` strings.
-In the future whenever 'computerScore' is called always the version above is used unless the second argument is of type String.
-Note that the second template argument was removed since we are using the specific type String-AminoAcid.
-
-.. code-block:: cpp
-
- template <typename TText>
- int computeLocalScore(TText const & subText, seqan::String<seqan::AminoAcid> const & pattern)
- {
- int localScore = 0;
- for (unsigned i = 0; i < seqan::length(pattern); ++i)
- localScore += seqan::score(seqan::Blosum62(), subText[i], pattern[i]);
-
- return localScore;
- }
-
-In order to score a mismatch we use the function ``score()`` from the SeqAn library.
-Note that we use the :dox:`Blosum62` matrix as a similarity measure.
-When looking into the documentation of :dox:`Score#score` you will notice that the score function requires a argument of type :dox:`Score`.
-This object tells the function how to compare two letters and there are several types of scoring schemes available in SeqAn (of course, you can extend this with your own).
-In addition, because they are so frequently used there are shortcuts as well.
-For example :dox:`Blosum62` is really a **shortcut** for ``Score<int, ScoreMatrix<AminoAcid, Blosum62_> >``, which is obviously very helpful.
-Other shortcuts are ``DnaString`` for ``String<Dna>`` (:ref:`sequence tutorial <tutorial-sequences>`), ``CharString`` for ``String<char>``, ...
-
-.. tip::
-
- Template Subclassing
-
- The main idea of template subclassing is to exploit the C++ template matching mechanism.
- For example, in the following code, the function calls (1) and (3) will call the function ``myFunction()`` in variant (A) while the function call (2) will call variant (B).
-
- .. code-block:: cpp
-
- struct SpecA;
- struct SpecB;
- struct SpecC;
-
- template <typename TAlphabet, typename TSpec>
- class String<TAlphabet, TSpec>;
-
- template <typename TAlphabet, typename TSpec>
- void myFunction(String<TAlphabet, TSpec> const & str); // Variant (A)
-
- template <typename TAlphabet>
- void myFunction(String<TAlphabet, SpecB> const & str); // Variant (B)
-
- // ...
-
- int main()
- {
- String<char, SpecA> a;
- String<char, SpecB> b;
- String<char, SpecC> c;
-
- myFunction(a); // calls (A)
- myFunction(b); // calls (B)
- myFunction(c); // calls (A)
- }
-
-For a detailed description and more examples see the tutorial :ref:`Template Subclassing <tutorial-template-subclassing>`.
-
-Assignment 5
-^^^^^^^^^^^^
-
-.. container:: assignment
-
- Type
- Application
-
- Objective
- Provide a generic print function which is used when the input type is not ``String<int>``.
-
- Hint
- Keep your current implementation and add a second function.
- Don't forget to make both template functions.
- Include ``<seqan/score.h>`` as well.
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/a_first_example/solution_5.cpp
-
-Tags in SeqAn
-~~~~~~~~~~~~~
-
-Sometimes you will see something like this:
-
-.. code-block:: cpp
-
- globalAlignment(align, seqan::MyersHirschberg())
-
-Having a closer look you will notice that there is a default constructor call (``MyersHirschberg()`` ) within a function call.
-Using this mechanism one can specify which function to call at compile time.
-The ``MyersHirschberg()`` `` is only a tag to determine which specialisation of the ``globalAligment`` function to call.
-
-**If you want more information on tags then read on** otherwise you are now ready to explore SeqAn in more detail and continue with one of the other tutorials.
-
-There is another use case of templates and function specialization.
-
-This might be useful in a ``print()`` function, for example.
-In some scenarios, we only want to print the position where the maximal similarity between pattern and text is found.
-In other cases, we might want to print the similarities of all positions.
-In SeqAn, we use **tag-based dispatching** to realize this.
-Here, the type of the **tag** holds the specialization information.
-
-.. tip::
-
- Tag-Based Dispatching
-
- You will often see **tags** in SeqAn code, e.g. ``Standard()``.
- These are parameters to functions that are passed as const-references.
- They are not passed for their values but for their type only.
- This way, we can select different specializations at **compile time** in a way that plays nicely together with metafunctions, template specializations, and an advanced technique called [[Tutorial/BasicTechniques| metaprogramming]].
-
- Consider the following example:
-
- .. code-block:: cpp
-
- struct TagA {};
- struct TagB {};
-
- void myFunction(TagA const &); // (1)
- void myFunction(TagB const &); // (2)
-
- int main()
- {
- myFunction(TagA()); // (3)
- myFunction(TagB()); // (4)
- return 0;
- }
-
- The function call in line (3) will call ``myFunction()`` in the variant in line (1).
- The function call in line (4) will call ``myFunction()`` in the variant in line (2).
-
-The code for the two different ``print()`` functions mentioned above could look like this:
-
-.. code-block:: cpp
-
- #include <iostream>
- #include <seqan/sequence.h>
- #include <seqan/score.h>
-
- template <typename TText, typename TSpec>
- void print(TText const & text, TSpec const & /*tag*/)
- {
- for (unsigned i = 0; i < seqan::length(text); ++i)
- std::cout << text[i] << " ";
- std::cout << std::endl;
- }
-
- struct MaxOnly {};
-
- template <typename TText>
- void print(TText const & score, MaxOnly const & /*tag*/)
- {
- int maxScore = score[0];
- seqan::String<int> output;
- appendValue(output, 0);
- for (unsigned i = 1; i < seqan::length(score); ++i)
- {
- if (score[i] > maxScore)
- {
- maxScore = score[i];
- clear(output);
- resize(output, 1, i);
- }
- else if (score[i] == maxScore)
- {
- appendValue(output, i);
- }
- }
-
- for (unsigned i = 0; i < seqan::length(output); ++i)
- std::cout << output[i] << " ";
- std::cout << std::endl;
- }
-
-If we call ``print()`` with something different than ``MaxOnly`` then we print all the positions with their similarity, because the generic template function accepts anything as the template argument.
-On the other hand, if we call print with ``MaxOnly`` only the positions with the maximum similarity as well as the maximal similarity will be shown.
-
-Assignment 6
-^^^^^^^^^^^^
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Provide a print function that prints pairs of positions and their score if the score is greater than 0.
-
- Hints
- SeqAn provides a data type :dox:`Pair`.
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/a_first_example/solution_6.cpp
-
-Obviously this is only a toy example in which we could have named the two ``print()`` functions differently.
-However, often this is not the case when the programs become more complex.
-Because SeqAn is very generic we do not know the datatypes of template functions in advance.
-This would pose a problem because the function call of function ``b()`` in function ``a()`` may depend on the data types of the template arguments of function ``a()``.
-
-The Final Result
-~~~~~~~~~~~~~~~~
-
-Don't worry if you have not fully understood the last section.
-If you have -- perfect.
-In any case the take home message is that you use data types for class specializations and if you see a line of code in which the default constructor is written in a function call this typical means that the data type is important to distinct between different function implementations.
-
-Now you are ready to explore more of the SeqAn library.
-There are several tutorials which will teach you how to use the different SeqAn data structures and algorithms.
-Below you find the complete code for our example with the corresponding output.
-
-.. includefrags:: demos/tutorial/a_first_example/final_result.cpp
- :fragment: result
-
diff --git a/manual/source/Tutorial/AlignmentRepresentation.rst b/manual/source/Tutorial/AlignmentRepresentation.rst
index 5cb8731..0ae083c 100644
--- a/manual/source/Tutorial/AlignmentRepresentation.rst
+++ b/manual/source/Tutorial/AlignmentRepresentation.rst
@@ -49,7 +49,7 @@ Before we can make use of any of the mentioned data structures, we need to tell
This can be achieved by including the header file ``<seqan/align.h>`` which contains the necessary data structures and functions associated with the alignments.
The next steps would be to implement the main function of our program and to define the types that we want to use.
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignments/alignment2_align.cpp
:fragment: main
We first define the type of the input sequences (``TSequence``).
@@ -59,7 +59,7 @@ You can use the Metafunction :dox:`Align#Row` to get the correct type of the use
In the following we use the term ``row`` to explicitly refer to a gapped sequence as a member of the Align object.
We will use the term ``gapped sequence`` to describe functionalities that is related to the Gaps data structure independent of the Align object.
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignments/alignment2_align.cpp
:fragment: typedefs
After defining the types, we can continue to actually construct our own Align object.
@@ -69,13 +69,13 @@ With the function :dox:`Align#row`, we get access to the gapped sequence at a sp
This is similar to the :dox:`RandomAccessContainerConcept#value` function used in :dox:`StringSet String Sets`.
Now, we can assign the source to the corresponding gapped sequence.
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignments/alignment2_align.cpp
:fragment: init
After assigning the sources to the gapped sequences, we need to add some gaps to make it to look like a real alignment.
You can use the functions :dox:`Gaps#insertGap insertGap()` and :dox:`Gaps#removeGap` to insert and delete one gap or :dox:`Gaps#insertGaps insertGaps()` and :dox:`Gaps#removeGaps` to insert and delete multiple gaps in a gapped sequence.
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignments/alignment2_align.cpp
:fragment: manipulation
Congratulations!
@@ -92,13 +92,13 @@ When inserting gaps, the gap space is modified and all coordinates right of the
At the same time, the coordinates of the source remain unchanged.
Using the function :dox:`Gaps#toSourcePosition toSourcePosition()`, we can determine to which position in the source space our current position in the gapped sequence (gap space) maps.
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignments/alignment2_align.cpp
:fragment: printingSourcePos
If the position in the gap space is actually a gap, then :dox:`Gaps#toSourcePosition toSourcePosition()` returns the source position of the next character to the right that is not a gap.
Vice versa, we can determine where our current source position maps into the gap space using the function :dox:`Gaps#toViewPosition toViewPosition()`.
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignments/alignment2_align.cpp
:fragment: printingViewPos
And here is the output of this short example program so far:
@@ -132,7 +132,7 @@ These functions shrink the gap space and can be understood as defining an infix
After the clipping, the relative view position changes according to the clipping and so does the mapping of the source positions to the gap space.
The mapping of the view positions to the source space does not change.
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignments/alignment2_align.cpp
:fragment: clipping
Here the output of the clipping procedure.
@@ -178,12 +178,12 @@ If you need to refresh the **Iterator Concept** you can read the Tutorial :ref:`
While we iterate over the gapped sequence, we can ask if the current value, at which the iterator ``it`` points to, is a gap or not by using the function :dox:`Gaps#isGap isGap()`.
Use :dox:`AlphabetWithGapsConcept#gapValue` to print the correct gap symbol.
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignments/alignment2_align.cpp
:fragment: iteratingRowClipped
We will now reset the clipping of ``row1`` using :dox:`Gaps#clearClipping` and iterate again over it to see its effect.
-.. includefrags:: demos/tutorial/alignment_representation/align.cpp
+.. includefrags:: demos/tutorial/alignments/alignment2_align.cpp
:fragment: iteratingRowClipped2
::
@@ -215,7 +215,7 @@ Assignment 1
Solution
.. container:: foldable
- .. includefrags :: demos/tutorial/alignment_representation/align_assignmen1.cpp
+ .. includefrags :: demos/tutorial/alignments/alignment_align_assignment1.cpp
:fragment: solution
AlignmentGraph Data Structure
@@ -231,7 +231,7 @@ In the following we will actually construct this example step by step.
First we include the ``iostream`` header from the STL and the ``<seqan/align.h>`` header to include all necessary functions and data structures we want to use.
We use the namespace ``seqan`` and write the ``main`` function with an empty body.
-.. includefrags:: demos/tutorial/alignment_representation/graph.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_representation_ag.cpp
:fragment: main
At the begin of the function we define our types we want to use later on.
@@ -243,12 +243,12 @@ That is the AlignmentGraph does not copy the sources into its data structure but
The :dox:`DependentStringSet Dependent StringSet` facilitates this behavior.
In the end we define the actual AlignmentGraph type.
-.. includefrags:: demos/tutorial/alignment_representation/graph.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_representation_ag.cpp
:fragment: typedef
We first create our two input sequences ``TTGT`` and ``TTAGT`` append them to the StringSet ``strings`` using the :dox:`StringConcept#appendValue` function and pass the initialized ``strings`` object as a parameter to the constructor of the AlignmentGraph ``alignG``.
-.. includefrags:: demos/tutorial/alignment_representation/graph.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_representation_ag.cpp
:fragment: init
Before we construct the alignment we print the unmodified AlignmentGraph.
@@ -265,7 +265,7 @@ In the next step we have to add a gap.
We can do this simply by just adding a vertex that covers the inserted string.
Finally we have to add the second edge to represent the last ungapped sequence and then we print the constructed alignment.
-.. includefrags:: demos/tutorial/alignment_representation/graph.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_representation_ag.cpp
:fragment: construct
Here the output of the program.
@@ -305,7 +305,7 @@ Assignment 2
Solution
.. container :: foldable
- .. includefrags :: demos/tutorial/alignment_representation/graph_assignment1.cpp
+ .. includefrags :: demos/tutorial/alignments/alignment_representation_ag_assignment1.cpp
:fragment: main
.. code-block :: console
diff --git a/manual/source/Tutorial/AnnotationStore.rst b/manual/source/Tutorial/AnnotationStore.rst
new file mode 100644
index 0000000..a28dc82
--- /dev/null
+++ b/manual/source/Tutorial/AnnotationStore.rst
@@ -0,0 +1,366 @@
+.. sidebar:: ToC
+
+ .. contents::
+
+
+.. _tutorial-genome-annotations:
+
+Genome Annotations
+------------------
+
+Learning Objective
+ You will learn how to work with annotations in SeqAn.
+ After this tutorial, you will be able to write your own programs using annotations and analyzing them.
+ You will be ready to continue with the :ref:`tutorial-fragment-store` Tutorial, e.g. if you want to combine your annotations with information from alignments.
+
+Difficulty
+ Average
+
+Duration
+ 1 h
+
+Prerequisites
+ :ref:`tutorial-sequences`, :ref:`tutorial-iterators`
+
+This tutorial will present SeqAn's efficient and easy-to-use data structures to work with annotations.
+They allow to annotate genome regions with features like 'gene', 'mRNA', 'exon', 'intron' and if required with custom features.
+We will give you an understanding of how to load annotations from a `GFF <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_ or `GTF <http://genome.ucsc.edu/FAQ/FAQformat.html#format4>`_ file, store them in efficient data structures, as well as how to traverse and access these information.
+
+AnnotationStore as Part of the FragmentStore
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+This section will give you a short introduction to data structures relevant for working with annotations.
+
+In SeqAn, annotations are stored in the so-called :dox:`FragmentStore::annotationStore`, which is part of the :dox:`FragmentStore`.
+The annotationStore can only be used together with the FragmentStore, because the latter stores additional information, e.g. the contig names or sequences.
+The FragmentStore is a data structure specifically designed for read mapping, genome assembly or gene annotation.
+
+The FragmentStore can be seen as a database, where each table (called "store") is implemented as a :dox:`String`.
+Each row of the table corresponds to an element in the string.
+The position of each element in the string implicitly represents the Id of such element in the table.
+All such strings are members of the class :dox:`FragmentStore`, are always present and empty if unused.
+For example, the member :dox:`FragmentStore::contigStore` is a string of elements, each one containing among others a contig sequence.
+
+For detailed information about the :dox:`FragmentStore` read the :ref:`tutorial-fragment-store` Tutorial.
+
+Accordingly, the :dox:`FragmentStore::annotationStore` is a :dox:`String`, where each element represents one annotation.
+Each element holds the necessary information, e.g. beginPos, endPos, parentId etc., as data members.
+
+.. Like many other stores, the :dox:`FragmentStore::annotationStore` has an associated name store, namely the :dox:`FragmentStore::annotationNameStore`, to store its element names.
+ The name store is a StringSet that stores the element name at the position of its id.
+
+AnnotationStore
+~~~~~~~~~~~~~~~
+
+In this section you will learn how to work with the :dox:`FragmentStore::annotationStore` itself.
+
+Annotations are represented hierarchically by a tree having at least a root node.
+
+A typical annotation tree looks as follows.
+
+.. figure:: AnnotationTree.png
+ :width: 400px
+
+ Annotation tree example
+
+
+The following entity-relationship diagram shows the tables holding store annotations, their relationships and cardinalities.
+
+.. figure:: AnnotationStore.png
+ :width: 600px
+
+ Stores involved in gene annotation
+
+The instantiation of an :dox:`FragmentStore::annotationStore` happens implicitly with the instantiation of a :dox:`FragmentStore`.
+Therefore we simply type:
+
+.. code-block:: cpp
+
+ FragmentStore<> store;
+
+Loading an Annotation File
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Before we deal with the actual annotation tree, we will first describe how you can easily load annotations from a `GFF <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_ or `GTF <http://genome.ucsc.edu/FAQ/FAQformat.html#format4>`_ file into the :dox:`FragmentStore`.
+
+An annotation file can be read from an open input stream with the function :dox:`File#read`.
+A tag specifies if we want to read a GFF, GTF or UCSC file.
+The following example shows how to read an GTF file:
+
+.. code-block:: cpp
+
+ // Open input stream from the current directory
+ std::ifstream file("example.gtf", std::ios_base::in | std::ios_base::binary);
+ // Read annotations from the GTF file
+ read(file, store, Gtf());
+
+The GFF-reader is also able to detect and read GTF files.
+The UCSC Genome Browser uses two seperate files, the ``kownGene.txt`` and ``knownIsoforms.txt``.
+They must be read by two consecutive calls of :dox:`File#read` (first ``knownGene.txt`` then ``knownIsoforms.txt``).
+
+.. tip::
+
+ An annotation can be loaded without loading the corresponding contigs.
+
+ In that case empty contigs are created in the contigStore with names given in the annonation.
+ A subsequent call of :dox:`FragmentStore#loadContigs` would load the sequences of these contigs, if they have the same identifier in the contig file.
+
+Traversing the Annotation Tree
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This section will illustrate how to use iterators to traverse the annotation tree.
+
+The annotation tree can be traversed and accessed with the :dox:`AnnotationTreeIterator AnnotationTree Iterator`.
+Again we use the metafunction `dox:ContainerConcept#Iterator Iterator` to determine the appropriate iterator type for our container.
+A new AnnotationTree iterator can be obtained by calling :dox:`ContainerConcept#begin` with a reference to the :dox:`FragmentStore` and the ``AnnotationTree`` tag:
+
+.. code-block:: cpp
+
+ Iterator<FragmentStore<>, AnnotationTree<> >::Type it;
+ it = begin(store, AnnotationTree<>());
+
+The AnnotationTree iterator starts at the root node and can be moved to adjacent tree nodes with the functions :dox:`AnnotationTreeIterator#goDown`, :dox:`AnnotationTreeIterator#goUp`, and :dox:`AnnotationTreeIterator#goRight`.
+These functions return a boolean value that indicates whether the iterator could be moved.
+The functions :dox:`AnnotationTreeIterator#isLeaf`, :dox:`AnnotationTreeIterator#isRoot`, :dox:`AnnotationTreeIterator#isLastChild` return the same boolean without moving the iterator.
+With :dox:`AnnotationTreeIterator#goRoot` or :dox:`AnnotationTreeIterator#goTo` the iterator can be moved to the root node or an arbitrary node given its annotationId.
+If the iterator should not be moved but a new iterator at an adjacent node is required, the functions :dox:`AnnotationTreeIterator#nodeDown`, :dox:`AnnotationTreeIterator#nodeUp`, :dox:`AnnotationTreeIterator#nodeRight` can be used.
+
+.. code-block:: cpp
+
+ // Move the iterator down to a leaf
+ while (goDown(it));
+ // Create a new iterator and if possible move it to the right sibling of the first iterator
+ Iterator<FragmentStore<>, AnnotationTree<> >::Type it2;
+ if (isLastChild(it))
+ it2 = nodeRight(it);
+
+The AnnotationTree iterator supports a preorder DFS traversal and therefore can also be used in typical begin-end loops with the functions :dox:`RootedRandomAccessIteratorConcept#goBegin` (== :dox:`AnnotationTreeIterator#goRoot`), :dox:`RootedRandomAccessIteratorConcept#goEnd`, :dox:`InputIteratorConcept#goNext`, :dox:`RootedIteratorConcept#atBegin`, :dox:`RootedIteratorConcept#atEnd`.
+During a preorder DFS, the descent into subtree can be skipped by :dox:`AnnotationTreeIterator#goNextRight`, or :dox:`AnnotationTreeIterator#goNextUp` which proceeds with the next sibling or returns to the parent node and proceeds with the next node in preorder DFS.
+
+.. code-block:: cpp
+
+ // Move the iterator back to the beginning
+ goBegin(it);
+ // Iterate over the nodes in preorder DFS while the end is not reached and
+ // output if the current node is a leaf
+ for (goBegin(it); atEnd(it); goNext(it))
+ {
+ if (isLeaf(it))
+ std::cout << " current node is leaf" << std::endl;
+ }
+
+Asignment 1
+"""""""""""
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Copy the code below, which loads the annotations from a given GTF file into the FragmentStore and initializes an iterator on the AnnotationTree.
+ Download the GTF file :download:`assignment_annotations.gtf <assignment_annotations.gtf>`, whose annotations build an AnnotationTree of the typical structure with gene, mRNA and exon level.
+ Adjust the code to go down to the exon level and iteratate over all children of the first mRNA and count them.
+ Print the result.
+
+ Click **more...** to see the code.
+
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/annotation_store/assignment_1_hint.cpp
+
+ Hints
+ In the given data the left-most leaf is a child of mRNA and has siblings.
+ You can use the function :dox:`AnnotationTreeIterator#goRight` to traverse over all siblings.
+
+ Solution
+ Click **more...** to see one possible solution.
+
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/annotation_store/assignment_1_solution.cpp
+
+ .. code-block:: console
+
+ No. of children of the first mRNA: 9
+
+Assignment 2
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Reuse the code and the GTF file from above.
+ Instead of counting only the children of the first mRNA adjust the code to count the children for each given mRNA.
+ Print the results.
+
+ Hints
+ After you reached the last child of the first mRNA you can use the functions :dox:`InputIteratorConcept#goNext` and :dox:`AnnotationTreeIterator#goDown` to traverse to the next leaf.
+
+ Solution
+ Click **more...** to see one possible solution.
+
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/annotation_store/assignment_2_solution.cpp
+
+ .. code-block:: console
+
+ 9
+ 2
+ 2
+
+Accessing the Annotation Tree
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Let us now have a closer look how to access the information stored in the different stores representing the annotation tree.
+
+To access or modify the node an iterator points at, the iterator returns the node's annotationId by the :dox:`IteratorAssociatedTypesConcept#value` function (== ``operator*``).
+With the annotationId the corresponding entry in the annotationStore could be modified manually or by using convenience functions.
+The function :dox:`AnnotationTreeIterator#getAnnotation` returns a reference to the corresponding entry in the annotationStore.
+:dox:`AnnotationTreeIterator#getName` and :dox:`AnnotationTreeIterator#setName` can be used to retrieve or change the identifier of the annotation element.
+As some annotation file formats don't give every annotation a name, the function :dox:`AnnotationTreeIterator#getUniqueName` returns the name if non-empty or generates one using the type and id.
+The name of the parent node in the tree can be determined with :dox:`AnnotationTreeIterator#getParentName`.
+The name of the annotation type, e.g. 'mRNA' or 'exon', can be determined and modified with :dox:`AnnotationTreeIterator#getType` and :dox:`AnnotationTreeIterator#setType`.
+
+Assume we have loaded the file ``example.gtf`` with the following content to the :dox:`FragmentStore` *store* and instantiated the iterator *it* of the corresponding annotation tree.
+
+::
+
+ chr1 MySource exon 150 200 . + . gene_id "381.000"; transcript_id "381.000.1";
+ chr1 MySource exon 300 401 . + . gene_id "381.000"; transcript_id "381.000.1";
+ chr1 MySource CDS 380 401 . + 0 gene_id "381.000"; transcript_id "381.000.1";
+ chr1 MySource exon 160 210 . + . gene_id "381.000"; transcript_id "381.000.2";
+
+We now want to iterate to the first exon and output a few information:
+
+.. code-block:: cpp
+
+ // Move the iterator to the begin of the annotation tree
+ it = begin(store, AnnotationTree<>());
+ // Go down to exon level
+ while (goDown(it)) ;
+ std::cout << "type: " << getType(it) << std::endl;
+ std::cout << "id: " << value(it) << std::endl;
+ std::cout << "begin position: " << getAnnotation(it).beginPos << std::endl;
+
+For our example the output would be:
+
+.. code-block:: console
+
+ type: exon
+ id: 3
+ begin position: 149
+
+An annotation can not only refer to a region of a contig but also contain additional information given as key-value pairs.
+The value of a key can be retrieved or set by :dox:`AnnotationTreeIterator#getValueByKey` and :dox:`AnnotationTreeIterator#assignValueByKey`.
+The values of a node can be cleared with :dox:`AnnotationTreeIterator#clearValues`.
+
+A new node can be created as first child, last child, or right sibling of the current node with :dox:`AnnotationTreeIterator#createLeftChild`, :dox:`AnnotationTreeIterator#createRightChild`, or :dox:`AnnotationTreeIterator#createSibling`.
+All three functions return an iterator to the newly created node.
+
+.. code-block:: cpp
+
+ Iterator<FragmentStore<>, AnnotationTree<> >::Type it2;
+ // Create a right sibling of the current node and return an iterator to this new node
+ it2 = createSibling(it);
+
+The following list summarizes the functions provided by the AnnotationTree iterator.
+
+:dox:`AnnotationTreeIterator#getAnnotation`, :dox:`IteratorAssociatedTypesConcept#value`
+ Return annotation object/id of current node
+:dox:`AnnotationTreeIterator#getName`, :dox:`AnnotationTreeIterator#setName`, :dox:`AnnotationTreeIterator#getType`, :dox:`AnnotationTreeIterator#setType`
+ Access name or type of current annotation object
+:dox:`AnnotationTreeIterator#getParentName`
+ Access parent name of current annotation object
+:dox:`AnnotationTreeIterator#clearValues clearValue`, :dox:`AnnotationTreeIterator#getValueByKey`, :dox:`AnnotationTreeIterator#assignValueByKey`
+ Access associated values
+:dox:`RootedRandomAccessIteratorConcept#goBegin`, :dox:`RootedRandomAccessIteratorConcept#goEnd`, :dox:`RootedIteratorConcept#atBegin`, :dox:`RootedIteratorConcept#atEnd`
+ Go to or test for begin/end of DFS traversal
+:dox:`InputIteratorConcept#goNext`, :dox:`AnnotationTreeIterator#goNextRight`, :dox:`AnnotationTreeIterator#goNextUp`
+ go next, skip subtree or siblings during DFS traversal
+:dox:`AnnotationTreeIterator#goRoot`, :dox:`AnnotationTreeIterator#goUp`, :dox:`AnnotationTreeIterator#goDown`, :dox:`AnnotationTreeIterator#goRight`
+ Navigate through annotation tree
+:dox:`AnnotationTreeIterator#createLeftChild`, :dox:`AnnotationTreeIterator#createRightChild`, :dox:`AnnotationTreeIterator#createSibling`
+ Create new annotation nodes
+:dox:`AnnotationTreeIterator#isRoot`, :dox:`AnnotationTreeIterator#isLeaf`
+ Test for root/leaf node
+
+Assignment 3
+""""""""""""
+
+.. container::
+
+ Type
+ Application
+
+ Objective
+ Again use the given GTF file :download:`assignment_annotations.gtf <assignment_annotations.gtf>` and create an iterator on the annotation tree.
+ Now iterate to the first node of type "exon" and output the following features:
+
+ #. type
+ #. begin position
+ #. end position
+ #. its Id
+ #. the Id of its parent
+ #. the name of its parent
+
+ Solution
+ Click **more...** to see one possible solution.
+
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/annotation_store/assignment_3_solution.cpp
+
+ .. code-block:: console
+
+ type: exon
+ begin position: 149
+ end position: 200
+ id: 3
+ parent id: 2
+ parent name: 381.000.1
+
+Assignment 4
+""""""""""""
+
+.. container:: assignment
+ Type
+ Transfer
+
+ Objective
+ Write a small statistic tool to analyse a given set of annotations.
+
+ #. Load the annotations given in the GTF file :download:`assignment_annotations.gtf <assignment_annotations.gtf>`.
+ #. Output the average number of mRNAs for genes.
+ #. Output the average number of exons for mRNAs.
+ #. Additionally output the average exon length.
+ #. Test your program also on large data, e.g. the annotation of the mouse genome `sim40mio_onlyY.sam.zip <http://ftp.seqan.de/manual_files/seqan-1.4/sim40mio_onlyY.sam.zip>`_ (don't forget to unzip first).
+
+ Solution
+ Click **more...** to see one possible solution.
+
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/annotation_store/assignment_4_solution.cpp
+
+ .. code-block:: console
+
+ Average number of mRNAs for genes: 1.5
+ Average number of exons for mRNAs: 3
+ Average length of exons: 95.5556
+
+Write an Annotation File
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+To write an annotation to an open output stream use the function :dox:`File#write` and specify the file format with a tag ``Gff()`` or ``Gtf()``.
+
+.. code-block:: cpp
+
+ // Open output stream
+ std::ofstream fileOut("example_out.gtf", std::ios_base::out | std::ios_base::binary);
+ // Write annotations to GTF file
+ write(fileOut, store, Gtf());
diff --git a/manual/source/Tutorial/BackgroundAndMotivation.rst b/manual/source/Tutorial/BackgroundAndMotivation.rst
index 7427912..d16dc8f 100644
--- a/manual/source/Tutorial/BackgroundAndMotivation.rst
+++ b/manual/source/Tutorial/BackgroundAndMotivation.rst
@@ -116,7 +116,7 @@ Otherwise, important applications in bioinformatics cannot be covered:
* 4-character DNA,
* 5-character DNA with ``N``,
* 15-character IUPAC, and
-* 27-character amino acids.
+* 23-character amino acids.
A simple implementation could simply store such strings as ASCII characters.
However, there are some implementation tricks that can lead to great reduction of memory usage (e.g. encoding eight 4-character DNA characters in one byte) or running time (fast lookup tables for characters or q-grams) for small alphabets.
@@ -155,3 +155,150 @@ It comes at the cost of some additional typing but has the advantage that the co
An example will be given in `the section "From OOP to SeqAn" in the First Steps Tutorial <tutorial-first-steps-in-seqan>`_.
The important point is that in contrast to runtime polymorphism such static polymorphism allows the compiler to inline functions.
+
+Performance Example
+^^^^^^^^^^^^^^^^^^^
+
+The following small program shows impressive performance gains when using inlined functions instead of virtual functions.
+We will sort random quadruples of ``int`` values using the STL function ``std::sort``.
+
+In the program, we will sort ``std::vector`` objects of the two types ``Item1`` and ``Item2``.
+The only difference is that the comparison operator ``operator<()`` for ``Item1`` can be inlined while ``operator<()`` for ``Item2`` is ``virtual`` and thus cannot be inlined.
+
+The relevant lines in the code below are highlighted.
+
+.. code-block:: cpp
+ :emphasize-lines: 12-43
+
+ #include <iostream>
+ #include <vector>
+ #include <algorithm>
+ #include <tr1/random>
+
+ #include <omp.h> // For omp_get_wtime() only.
+
+ const int ITERATIONS = 10;
+ const int N = 100*1000*1000;
+ const int SEED = 42;
+
+ struct Item1
+ {
+ int i1, i2, i3, i4, i5;
+
+ Item1() : i1(0), i2(0), i3(0), i4(0), i5(0)
+ {}
+
+ Item1(int i) : i1(i1), i2(i), i3(i), i4(i), i5(i)
+ {}
+
+ bool operator<(Item1 const & other) const
+ {
+ return i1 < other.i1;
+ }
+ };
+
+ struct Item2
+ {
+ int i1, i2, i3, i4, i5;
+
+ Item2() : i1(0), i2(0), i3(0), i4(0), i5(0)
+ {}
+
+ Item2(int i) : i1(i1), i2(i), i3(i), i4(i), i5(i)
+ {}
+
+ virtual
+ bool operator<(Item2 const & other) const
+ {
+ return i1 < other.i1;
+ }
+ };
+
+ int main()
+ {
+ double start = 0;
+ double timeAvg = 0;
+ double timeDev = 0;
+ std::vector<double> times;
+
+ std::cout << "Parameters\n";
+ std::cout << " # iterations: " << ITERATIONS << "\n";
+ std::cout << " # items : " << N << "\n";
+ std::cout << " seed : " << SEED << "\n\n";
+
+ // Generate random input.
+ std::cout << "Generating input.\n";
+ start = omp_get_wtime();
+ std::tr1::mt19937 eng(SEED);
+ std::tr1::uniform_int<int> unif;
+ std::vector<int> nums;
+ nums.reserve(N);
+ for (int i = 0; i < N; ++i)
+ nums.push_back(unif(eng));
+ std::cout << " time " << omp_get_wtime() - start << " s\n\n";
+
+ // Sort with inlining.
+ times.clear();
+ timeAvg = 0;
+ timeDev = 0;
+ std::cout << "std::sort with inlining\n";
+ for (int i = 0; i < ITERATIONS + 1; ++i)
+ {
+ std::vector<Item1> items(nums.begin(), nums.end());
+ start = omp_get_wtime();
+ std::sort(items.begin(), items.end());
+ if (i > 0)
+ times.push_back(omp_get_wtime() - start);
+ }
+ for (unsigned i = 0; i < times.size(); ++i)
+ timeAvg += times[i];
+ timeAvg /= times.size();
+ for (unsigned i = 0; i < times.size(); ++i)
+ timeDev += (timeAvg - times[i]) * (timeAvg - times[i]);
+ timeDev /= times.size();
+ timeDev = sqrt(timeDev);
+ std::cout << " time avg " << timeAvg << " s dev " << timeDev << "\n\n";
+
+ // Sorting with virtual operator<().
+ times.clear();
+ timeAvg = 0;
+ timeDev = 0;
+ std::cout << "std::sort without inlining\n";
+ for (int i = 0; i < ITERATIONS + 1; ++i)
+ {
+ std::vector<Item2> items(nums.begin(), nums.end());
+ start = omp_get_wtime();
+ std::sort(items.begin(), items.end());
+ if (i > 0)
+ times.push_back(omp_get_wtime() - start);
+ }
+ for (unsigned i = 0; i < times.size(); ++i)
+ timeAvg += times[i];
+ timeAvg /= times.size();
+ for (unsigned i = 0; i < times.size(); ++i)
+ timeDev += (timeAvg - times[i]) * (timeAvg - times[i]);
+ timeDev /= times.size();
+ timeDev = sqrt(timeDev);
+ std::cout << " time avg " << timeAvg << " s dev " << timeDev << "\n";
+
+ return 0;
+ }
+
+The resulting differences in running times on a Xeon X5550 @2.67 Ghz machine, compiled with g++ 4.4.5 are as follows.
+Thus, we have an improved performance with a **factor 2** of inlined functions instead of virtual function calls!
+
+.. code-block:: console
+
+ Parameters
+ # iterations: 10
+ # items : 100000000
+ seed : 42
+
+ Generating input.
+ time 0.836878 s
+
+ std::sort with inlining
+ time avg 5.43477 s dev 0.0817846
+
+ std::sort without inlining
+ time avg 11.0379 s dev 0.0425878
diff --git a/manual/source/Tutorial/BedIO.rst b/manual/source/Tutorial/BedIO.rst
index db28cc2..419207f 100644
--- a/manual/source/Tutorial/BedIO.rst
+++ b/manual/source/Tutorial/BedIO.rst
@@ -45,7 +45,13 @@ BED Format
The following is an example of a BED file:
- .. literalinclude:: ../../../demos/tutorial/bed_io/example.bed
+::
+
+ chr1 66999824 67210768 NM_032291 0 + 6700004167208778 0 25 227,64,25,72,57,55,176,12,12,25,52,86,93,75,501,128,127,60,112,156,133,203,65,165,2013, 0,91705,98928,101802,105635,108668,109402,126371,133388,136853,137802,139139,142862,145536,147727,155006,156048,161292,185152,195122,199606,205193,206516,207130,208931,
+ chr1 48998526 50489626 NM_032785 0 - 4899984450489468 0 14 1439,27,97,163,153,112,115,90,40,217,95,125,123,192, 0,2035,6787,54149,57978,101638,120482,130297,334336,512729,712915,1164458,1318541,1490908,
+ chr1 16767166 16786584 NM_018090 0 + 1676725616785385 0 8 182,101,105,82,109,178,76,1248, 0,2960,7198,7388,8421,11166,15146,18170,
+ chr1 33546713 33585995 NM_052998 0 + 3354785033585783 0 12 182,121,212,177,174,173,135,166,163,113,215,351,0,275,488,1065,2841,10937,12169,13435,15594,16954,36789,38931,
+ chr1 16767166 16786584 NM_001145278 0 + 1676725616785385 0 8 104,101,105,82,109,178,76,1248, 0,2960,7198,7388,8421,11166,15146,18170,
The meaning of the columns are as follows:
diff --git a/manual/source/Tutorial/ConsensusAlignment.rst b/manual/source/Tutorial/ConsensusAlignment.rst
index 28e01a3..3505b1a 100644
--- a/manual/source/Tutorial/ConsensusAlignment.rst
+++ b/manual/source/Tutorial/ConsensusAlignment.rst
@@ -34,28 +34,28 @@ The following program demonstrates this functionality.
First, we include the necessary headers.
-.. includefrags:: demos/tutorial/consensus_alignment/with_positions.cpp
+.. includefrags:: demos/tutorial/consensus/with_positions.cpp
:fragment: includes
Next, the fragment store is filled with reads and approximate positions.
The true alignment is shown in the comments.
-.. includefrags:: demos/tutorial/consensus_alignment/with_positions.cpp
+.. includefrags:: demos/tutorial/consensus/with_positions.cpp
:fragment: fill_store
This is followed by computing the consensus alignment using the function :dox:`consensusAlignment`.
-.. includefrags:: demos/tutorial/consensus_alignment/with_positions.cpp
+.. includefrags:: demos/tutorial/consensus/with_positions.cpp
:fragment: compute_consensus
Finally, the alignment is printed using an :dox:`AlignedReadLayout` object.
-.. includefrags:: demos/tutorial/consensus_alignment/with_positions.cpp
+.. includefrags:: demos/tutorial/consensus/with_positions.cpp
:fragment: print_layout
Here is the program's output:
-.. includefrags:: demos/tutorial/consensus_alignment/with_positions.cpp.stdout
+.. includefrags:: demos/tutorial/consensus/with_positions.cpp.stdout
Consensus without Approximate Positions
---------------------------------------
@@ -65,8 +65,8 @@ In this case, the consensus step performs an all-to-all alignment of all reads a
This is demonstrated by the following program.
-.. includefrags:: demos/tutorial/consensus_alignment/without_positions.cpp
+.. includefrags:: demos/tutorial/consensus/without_positions.cpp
Here is this modified programs' output:
-.. includefrags:: demos/tutorial/consensus_alignment/without_positions.cpp.stdout
+.. includefrags:: demos/tutorial/consensus/without_positions.cpp.stdout
diff --git a/manual/source/Tutorial/FileIOOverview.rst b/manual/source/Tutorial/FileIOOverview.rst
deleted file mode 100644
index 8658ad2..0000000
--- a/manual/source/Tutorial/FileIOOverview.rst
+++ /dev/null
@@ -1,232 +0,0 @@
-.. sidebar:: ToC
-
- .. contents::
-
-
-.. _tutorial-input-output-overview:
-
-File I/O Overview
-=================
-
-Learning Objective
- This article will give you an overview of the formatted file I/O in SeqAn.
-
-Difficulty
- Basic
-
-Duration
- 30 min
-
-Prerequisites
- :ref:`tutorial-sequences`
-
-
-Overview
---------
-
-Most file formats in bioinformatics are structured as lists of records.
-Often, they start out with a header that itself contains different header records.
-For example, the Binary Sequence Alignment/Map (SAM/BAM) format starts with an header that lists all contigs of the reference sequence.
-The BAM header is followed by a list of BAM alignment records that contain query sequences aligned to some reference contig.
-
-.. _tutorial-input-output-overview-formatted-files:
-
-Formatted Files
-"""""""""""""""
-
-SeqAn allows to read or write record-structured files through two types of classes: :dox:`FormattedFileIn` and :dox:`FormattedFileOut`.
-Classes of type :dox:`FormattedFileIn` allow to read files, whereas classes of type :dox:`FormattedFileOut` allow to write files.
-Note how these types of classes **do not allow to read and write the same file at the same time**.
-
-These types of classes provide the following I/O operations on formatted files:
-
-#. open a file given its filename or attach to an existing stream like `std::cin` or `std::cout`;
-#. guess the file format from the file content or filename extension;
-#. access compressed or uncompressed files transparently.
-
-.. warning::
-
- Access to compressed files relies on external libraries.
- For instance, you need to have zlib installed for reading ``.gz`` files and libbz2 for reading ``.bz2`` files.
- If you are using Linux or OS X and you followed the :ref:`tutorial-getting-started` tutorial closely, then you should have already installed the necessary libraries.
- On Windows, you will need to follow :ref:`how-to-install-contribs-on-windows` to get the necessary libraries.
-
- You can check whether you have installed these libraries by running CMake again.
- Simply call ``cmake .`` in your build directory.
- At the end of the output, there will be a section "SeqAn Features".
- If you can read ``ZLIB - FOUND`` and ``BZIP2 - FOUND`` then you can use zlib and libbz2 in your programs.
-
-
-Basic I/O
----------
-
-This tutorial shows the basic functionalities provided by any class of type :dox:`FormattedFileIn` or :dox:`FormattedFileOut`.
-In particular, this tutorial adopts the classes :dox:`BamFileIn` and :dox:`BamFileOut` as concrete types.
-The class :dox:`BamFileIn` allows to read files in SAM or BAM format, whereas the class :dox:`BamFileOut` allows to write them.
-Nonetheless, **these functionalities are independent from the particular file format** and thus valid for all record-based file formats supported by SeqAn.
-
-The demo application shown here is a simple BAM to SAM converter.
-
-
-Includes
-""""""""
-
-Support for a specific format comes by including a specific header file.
-In this case, we include the BAM header file:
-
-.. includefrags:: demos/tutorial/file_io_overview/example1.cpp
- :fragment: include
-
-
-Opening and Closing Files
-"""""""""""""""""""""""""
-
-Classes of type :dox:`FormattedFileIn` and :dox:`FormattedFileOut` allow to :dox:`FormattedFile#open` and :dox:`FormattedFile#close` files.
-
-A file can be opened by passing the filename to the constructor:
-
-.. includefrags:: demos/tutorial/file_io_overview/example1.cpp
- :fragment: ctor
-
-Alternatively, a file can be opened after construction by calling :dox:`FormattedFile#open`:
-
-.. includefrags:: demos/tutorial/file_io_overview/example1.cpp
- :fragment: open
-
-Noe that any file is closed *automatically* whenever the :dox:`FormattedFileIn` or :dox:`FormattedFileOut` object goes out of scope.
-Eventually, a file can be closed *manually* by calling :dox:`FormattedFile#close`.
-
-Accessing the Header
-""""""""""""""""""""
-
-To access the header, we need an object representing the format-specific header.
-In this case, we use an object of type :dox:`BamHeader`.
-The content of this object can be ignored for now, it will be covered in the :ref:`tutorial-sam-bam-io` tutorial.
-
-.. includefrags:: demos/tutorial/file_io_overview/example1.cpp
- :fragment: header
-
-Function :dox:`FormattedFileIn#readHeader` reads the header from the input SAM file and :dox:`FormattedFileOut#writeHeader` writes it to the BAM output file.
-
-Accessing the Records
-"""""""""""""""""""""
-
-Again, to access records, we need an object representing format-specific information.
-In this case, we use an object of type :dox:`BamAlignmentRecord`.
-Each call to :dox:`FormattedFileIn#readRecord` reads one record from the SAM input file and moves the :dox:`BamFileIn` forward.
-Each call to :dox:`FormattedFileOut#writeRecord` writes the record just read to the BAM output files.
-We check the end of the input file by calling :dox:`FormattedFile#atEnd`.
-
-.. includefrags:: demos/tutorial/file_io_overview/example1.cpp
- :fragment: records
-
-Our small SAM to BAM conversion demo is ready.
-The tool still lacks error handling, reading from standard input and writing to standard output.
-You are now going to add these features.
-
-Error Handling
---------------
-
-We distinguish between two types of errors: *low-level* file I/O errors and *high-level* file format errors.
-Possible file I/O errors can affect both input and output files.
-Example of errors are: the file permissions forbid a certain operations, the file does not exist, there is a disk reading error, a file being read gets deleted while we are reading from it, or there is a physical error in the hard disk.
-Conversely, file format errors can only affect input files: such errors arise whenever the content of the input file is incorrect or damaged.
-Error handling in SeqAn is implemented by means of exceptions.
-
-I/O Errors
-""""""""""
-
-All :dox:`FormattedFile#FormattedFile FormattedFileIn` and :dox:`FormattedFile#FormattedFile FormattedFileOut` constructors and functions throw exceptions of type :dox:`IOError` to signal *low-level* file I/O errors.
-Therefore, it is sufficient to catch these exceptions to handle I/O errors properly.
-
-There is only one exception to this rule.
-Function :dox:`FormattedFile#open` returns a ``bool`` to indicate whether the file was opened successfully or not.
-
-
-Assignment 1
-""""""""""""
-
-.. container:: assignment
-
- Type
- Application
-
- Objective
- Improve the program above to detect file I/O errors.
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/file_io_overview/solution1.cpp
-
-
-Format Errors
-"""""""""""""
-
-Classes of types :dox:`FormattedFileIn` throw exceptions of type :dox:`ParseError` to signal *high-level* input file format errors.
-
-
-Assignment 2
-""""""""""""
-
-.. container:: assignment
-
- Type
- Application
-
- Objective
- Improve the program above to detect file format errors.
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/file_io_overview/solution2.cpp
-
-
-Streams
--------
-
-The :dox:`FormattedFile#FormattedFile FormattedFileIn` and :dox:`FormattedFile#FormattedFile FormattedFileOut` constructors accept not only filenames, but also standard C++ streams, or any other class implementing the :dox:`StreamConcept Stream` concept.
-For instance, you can pass `std::cin` to any :dox:`FormattedFile#FormattedFile FormattedFileIn constructor` and `std::cout` to any :dox:`FormattedFile#FormattedFile FormattedFileOut constructor`.
-
-.. note::
-
- When writing to `std::cout`, classes of type :dox:`FormattedFileOut` cannot guess the file format from the filename extension.
- Therefore, the file format has to be specified explicitly by providing a tag, e.g. :dox:`FileFormats#Sam` or :dox:`FileFormats#Bam`.
-
-Assignment 3
-""""""""""""
-
-.. container:: assignment
-
- Type
- Application
-
- Objective
- Improve the program above to write to standard output.
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/file_io_overview/solution3.cpp
-
- Running this program results in the following output.
-
- .. includefrags:: demos/tutorial/file_io_overview/solution3.cpp.stdout
-
-
-Next Steps
-----------
-
-If you want, you can now have a look at the API documentation of the :dox:`FormattedFile` class.
-
-You can now read the tutorials for **already supported file formats**:
-
-* :ref:`tutorial-sequence-io`
-* :ref:`tutorial-sam-bam-io`
-* :ref:`tutorial-vcf-io`
-* :ref:`tutorial-bed-io`
-* :ref:`tutorial-gff-and-gtf-io`
-
-.. COMMENT or, if you want to learn how to develop **support for new file formats** then read the following article:
- * :ref:`tutorial-custom-io`
diff --git a/manual/source/Tutorial/FirstStepsInSeqAn.rst b/manual/source/Tutorial/FirstStepsInSeqAn.rst
new file mode 100644
index 0000000..8e0dce5
--- /dev/null
+++ b/manual/source/Tutorial/FirstStepsInSeqAn.rst
@@ -0,0 +1,562 @@
+.. sidebar:: ToC
+
+ .. contents::
+
+
+.. _tutorial-first-steps-in-seqan:
+
+A First Example
+---------------
+
+Learning Objective
+ You will learn the most basic concepts of SeqAn.
+ After this tutorial you will be ready to deal with the more specific tutorials, e.g. Sequences.
+
+Difficulty
+ Very basic
+
+Duration
+ 1.5h
+
+Prerequisites
+ Basic C or C++ knowledge
+
+Welcome to the SeqAn "Hello World".
+This is the first practical tutorial you should look at when starting to use our software library.
+
+We assume that you have some programming experience (preferably in C++ or C) and concentrate on SeqAn specific aspects.
+We will start out pretty slowly and hopefully the tutorial will make sense to you even if you are new to C++.
+However, to really leverage the power of SeqAn you will have to learn C++.
+There are many tutorials on C++, for example `the tutorial at cplusplus.com <http://www.cplusplus.com/doc/tutorial/>`_.
+
+This tutorial will walk you through a simple example program that highlights the things that are most prominently different from the libraries that many SeqAn newcomers are used to:
+
+* extensive usage of C++ templates,
+* generic programming using templates,
+* using references instead of pointers in most places,
+* and more.
+
+Running Example
+~~~~~~~~~~~~~~~
+
+Our example program will do a pattern search of a short query sequence in a long database sequence.
+As the score, we will compute the number of equal characters at each position.
+
+The following figure shows an example:
+
+::
+
+ score: 101 ... ... 801 ...
+ text: This is an awesome tutorial to get to know SeqAn!
+ pattern: tutorial tutorial
+ tutorial tutorial
+ ... ...
+
+
+The first position has a score of 1, because the ``i`` in the pattern matches the ``i`` in ``is``.
+This is only a toy example for explanatory reasons and we ignore any more advanced implementations.
+
+In SeqAn the program could look like this (we will explain every line of code shortly):
+
+.. includefrags:: demos/tutorial/first_steps/basic_code.cpp
+ :fragment: all
+
+Whenever we use SeqAn classes or functions we have to explicitly write the namespace qualifier ``seqan::`` in front of the class name or function.
+This can be circumvented if we include the line ``using namespace seqan;`` at the top of the working example.
+However, during this tutorial we will not do this, such that SeqAn classes and functions can be recognized more easily.
+
+.. attention::
+
+ Argument-Dependent Name Lookup (Koenig Lookup)
+
+ Using the namespace prefix ``seqan::`` is not really necessary in all places.
+ In many cases, the Koenig lookup rule in C++ for functions makes this unnecessary.
+ Consider the following, compiling, example.
+
+ .. code-block:: cpp
+
+ seqan::String<char> s = "example";
+ unsigned i = length(s);
+
+Here, the function ``length`` does not have a namespace prefix.
+The code compiles nevertheless.
+The compiler automatically looks for a function ``length`` in the namespace of its arguments.
+
+Note that we follow the rules for variable, function, and class names as outlined in the :ref:`SeqAn style guide <style-guide-cpp>`.
+For example: (1) variables and functions use lower case, (2) struct, enum and classes use CamelCase, (3) metafunctions start with a capital letter, and (4) metafunction values are UPPERCASE.
+
+Assignment 1
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Create a demo program and replace its content with the code above.
+
+ Hint
+ Depending on your operating system you have different alternatives to create a demo application.
+ An in depth description can be found in GettingStarted.
+
+ Solution
+ Click ''more...''
+
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/first_steps/solution_1.cpp
+
+SeqAn and Templates
+~~~~~~~~~~~~~~~~~~~
+
+Let us now have a detailed look at the program.
+
+We first include the IOStreams library that we need to print to the screen and the SeqAn's ``<seqan/file.h>`` as well as ``<seqan/sequence.h>`` module from the SeqAn library that provides SeqAn :dox:`String`.
+
+.. includefrags:: demos/tutorial/first_steps/basic_code_detailed.cpp
+ :fragment: includes
+
+The :dox:`String String class` is one of the most fundamental classes in SeqAn, which comes as no surprise since SeqAn is used to analyse sequences (there is an extra tutorial for SeqAn :ref:`sequences <tutorial-sequences>` and :ref:`alphabets <tutorial-alphabets>`).
+
+In contrast to the popular string classes of Java or C++, SeqAn provides different string implementations and different alphabets for its strings.
+There is one string implementation that stores characters in memory, just like normal C++ strings.
+Another string implementation stores the characters on disk and only keeps a part of the sequence in memory.
+For alphabets, you can use strings of nucleotides, such as genomes, or you can use strings of amino acids, for example.
+
+SeqAn uses **template functions** and **template classes** to implement the different types of strings using the **generic programming** paradigm.
+Template functions/classes are normal functions/classes with the additional feature that one passes the type of a variable as well as its value (see also: `templates in cpp <http://www.cplusplus.com/doc/tutorial/templates/>`_).
+This means that SeqAn algorithms and data structures are implemented in such a way that they work on all types implementing an informal interface (see information box below for more details).
+This is similar to the philosophy employed in the C++ STL (Standard Template Library).
+Even though we provide further tutorials on templates in SeqAn (:ref:`tutorial-basic-techniques`, :ref:`tutorial-metafunctions`, :ref:`tutorial-template-subclassing`, :ref:`tutorial-global-function-interface`), they are more advanced and not required to follow this tutorial.
+
+The following two lines make use of template programming to define two strings of type char, a text and a pattern.
+
+.. includefrags:: demos/tutorial/first_steps/basic_code_detailed.cpp
+ :fragment: sequences
+
+In order to store the similarities between the pattern and different text positions we additionally create a string storing integer values.
+
+.. includefrags:: demos/tutorial/first_steps/basic_code_detailed.cpp
+ :fragment: score
+
+Note that in contrast to the first two string definitions we do not know the values of the different positions in the string in advance.
+In order to dynamically adjust the length of the new string to the text we can use the function :dox:`StringConcept#resize`.
+The resize function is not a member function of the string class because SeqAn is not object oriented in the typical sence (we will see later how we adapt SeqAn to object oriented programming).
+Therefore, instead of writing ``string.resize(newLength)`` we use ``resize(string, newLength)``.
+
+.. includefrags:: demos/tutorial/first_steps/basic_code_detailed.cpp
+ :fragment: resize
+
+.. note::
+
+ Global function interfaces.
+
+ SeqAn uses **global interfaces** for its data types/classes.
+ Generally, you have to use ``function(variable)`` instead of ``variable.function()``.
+
+ This has the advantage that we can extend the interface of a type outside of its definition.
+ For example, we can provide a ``length()`` function for STL containers ``std::string<T>`` and ``std::vector<T>`` outside their class files.
+ We can use such global functions to make one data type have the same interface as a second.
+ This is called **adaption**.
+
+ Additionally, we can use one function definition for several data types.
+ For example, the alignment algorithms in SeqAn are written such that we can compute alignments using any :dox:`String` with any alphabet:
+ There are more than 5 :dox:`String` variants in SeqAn and more than 8 built-in alphabets.
+ Thus, one implementation can be used for more than 40 different data types!
+
+After the string initializations it is now time for the similarity computation.
+In this toy example we simply take the pattern and shift it over the text from left to right.
+After each step, we check how many characters are equal between the corresponding substring of the text and the pattern.
+We implement this using two loops; the outer one iterates over the given text and the inner loop over the given pattern:
+
+.. includefrags:: demos/tutorial/first_steps/basic_code_detailed.cpp
+ :fragment: similarity
+
+There are two things worth mentioning here: (1) SeqAn containers or strings start at position 0 and (2) you will notice that we use ``++variable`` instead of ``variable++`` wherever possible.
+The reason is that ``++variable`` is slightly faster than its alternative, since the alternative needs to make a copy of itself before returning the result.
+
+In the last step we simply print the result that we stored in the variable ``````score`` on screen.
+This gives the similarity of the pattern to the string at each position.
+
+.. includefrags:: demos/tutorial/first_steps/basic_code_detailed.cpp
+ :fragment: print
+
+Code Encapsulation
+~~~~~~~~~~~~~~~~~~
+
+At this point, we have already created a working solution!
+However, in order to make it easier to maintain and reuse parts of the code we need to export them into functions.
+In this example the interesting piece of code is the similarity computation, which consists of an outer and inner loop.
+We encapsulate the outer loop in function ``computeScore`` and the inner loop in function ``computeLocalScore`` as can be seen in the following code.
+
+.. includefrags:: demos/tutorial/first_steps/code_encapsulation.cpp
+ :fragment: all
+
+The function computeScore() now contains the fundamental part of the code and can be reused by other functions.
+The input arguments are two strings.
+One is the pattern itself and one is a substring of the text.
+In order to obtain the substring we can use the function :dox:`SegmentableConcept#infix` implemented in SeqAn.
+The function call ``infix(text, i, j)`` generates a substring equal to ``text[i ... j - 1]``, e.g. ``infix(text, 1, 5)`` equals "ello", where ``text`` is "Hello World".
+To be more precise, infix() generates a :dox:`InfixSegment Infix` which can be used as a string, but is implemented using pointers such that no copying is necessary and running time and memory is saved.
+
+Assignment 2
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Replace the code in your current file by the code above and encapsulate the print instructions.
+
+ Hint
+ The function head should look like this:
+
+ .. code-block::cpp
+
+ void print(seqan::String<int> score)
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/first_steps/solution_2.cpp
+
+The Role of References in SeqAn
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Let us now have a closer look at the signature of ``computeScore()``.
+
+Both the text and the pattern are passed *by value*.
+This means that both the text and the pattern are copied when the function is called, which consumes twice the memory.
+This can become a real bottleneck since copying longer sequences is very memory and time consuming, think of the human genome, for example.
+
+Instead of copying we could use **references**.
+A reference in C++ is created using an ampersand sign (``&``) and creates an alias to the referenced value.
+Basically, a reference is a pointer to an object which can be used just like the referenced object itself.
+This means that when you change something in the reference you also change the original object it came from.
+But there is a solution to circumvent this modification problem as well, namely the word **const**.
+A ``const`` object cannot be modified.
+
+.. important::
+
+ If an object does not need to be modified make it an nonmodifiably object using the keyword ``const``.
+ This makes it impossible to *unwillingly* change objects, which can be really hard to debug.
+ Therefore it is recommended to use it as often as possible.
+
+Therefore we change the signature of computeScore to:
+
+.. code-block:: cpp
+
+ seqan::String<int> computeScore(seqan::String<char> const & text, seqan::String<char> const & pattern)
+
+Reading from right to left the function expects two ``references`` to
+``const objects`` of type ``String`` of ``char``.
+
+Assignment 3
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Adjust your current code to be more memory and time efficient by using references in the function header.
+
+ Hint
+ The function head for ``computeLocalScore`` should look like this:
+
+ .. code-block:: cpp
+
+ int computeLocalScore(seqan::String<char> const & subText, seqan::String<char> const & pattern)
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/first_steps/solution_3.cpp
+
+Generic and Reusable Code
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+As mentioned earlier, there is another issue: the function computeScore only works for Strings having the alphabet ``char``.
+If we wanted to use it for ``Dna`` or ``AminoAcid`` strings then we would have to reimplement it even though the only difference is the signature of the function.
+All used functions inside ``computeScore`` can already handle the other datatypes.
+
+The more appropriate solution is a generic design using templates, as often used in the SeqAn library.
+Instead of specifying the input arguments to be references of strings of ``char`` s we could use references of template arguments as shown in the following lines:
+
+.. code-block:: cpp
+
+ template <typename TText, typename TPattern>
+ seqan::String<int> computeScore(TText const & text, TPattern const & pattern)
+
+The first line above specifies that we create a template function with two template arguments ``TText`` and ``TPattern``.
+At compile time the template arguments are then replace with the correct types.
+If this line was missing the compiler would expect that there are types ``TText`` and ``TPattern`` with definitions.
+
+Now the function signature is better in terms of memory consumption, time efficiency, and generality.
+
+.. important::
+
+ The SeqAn Style Guide
+
+ The :ref:`SeqAn style guide <style-guide-cpp>` gives rules for formatting and structuring C++ code as well as naming conventions.
+ Such rules make the code more consistent, easier to read, and also easier to use.
+
+ #. **Naming Scheme**.
+ Variable and function names are written in ``lowerCamelCase``, type names are written in ``UpperCamelCase``.
+ Constants and enum values are written in ``UPPER_CASE``.
+ Template variable names always start with 'T'.
+ #. **Function Parameter Order**.
+ The order is (1) output, (2) non-const input (e.g. file handles), (3) input, (4) tags.
+ Output and non-const input can be modified, the rest is left untouched and either passed by copy or by const-reference (``const &``).
+ #. **Global Functions**.
+ With the exception of constructors and a few operators that have to be defined in-class, the interfaces in SeqAn use global functions.
+ #. **No Exceptions**.
+ The SeqAn interfaces do not throw any exceptions.
+
+ While we are trying to make the interfaces consistent with our style guide, some functions have incorrect parameter order.
+ This will change in the near future to be more in line with the style guide.
+
+Assignment 4
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Generalize the ``computeLocalScore`` function in your file.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/first_steps/solution_4.cpp
+
+From Object-Oriented Programming to SeqAn
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+There is another huge advantage of using templates: we can specialize a function without touching the existing function.
+In our working example it might be more appropriate to treat ``AminoAcid`` sequences differently.
+As you probably know, there is a similarity relation on amino acids: Certain amino acids are more similar to each other, than others.
+Therefore we want to score different kinds of mismatches differently.
+In order to take this into consideration we simple write a ``computeLocalScore()`` function for ``AminoAcid`` strings.
+In the future whenever 'computerScore' is called always the version above is used unless the second argument is of type String.
+Note that the second template argument was removed since we are using the specific type String-AminoAcid.
+
+.. code-block:: cpp
+
+ template <typename TText>
+ int computeLocalScore(TText const & subText, seqan::String<seqan::AminoAcid> const & pattern)
+ {
+ int localScore = 0;
+ for (unsigned i = 0; i < seqan::length(pattern); ++i)
+ localScore += seqan::score(seqan::Blosum62(), subText[i], pattern[i]);
+
+ return localScore;
+ }
+
+In order to score a mismatch we use the function ``score()`` from the SeqAn library.
+Note that we use the :dox:`Blosum62` matrix as a similarity measure.
+When looking into the documentation of :dox:`Score#score` you will notice that the score function requires a argument of type :dox:`Score`.
+This object tells the function how to compare two letters and there are several types of scoring schemes available in SeqAn (of course, you can extend this with your own).
+In addition, because they are so frequently used there are shortcuts as well.
+For example :dox:`Blosum62` is really a **shortcut** for ``Score<int, ScoreMatrix<AminoAcid, Blosum62_> >``, which is obviously very helpful.
+Other shortcuts are ``DnaString`` for ``String<Dna>`` (:ref:`sequence tutorial <tutorial-sequences>`), ``CharString`` for ``String<char>``, ...
+
+.. tip::
+
+ Template Subclassing
+
+ The main idea of template subclassing is to exploit the C++ template matching mechanism.
+ For example, in the following code, the function calls (1) and (3) will call the function ``myFunction()`` in variant (A) while the function call (2) will call variant (B).
+
+ .. code-block:: cpp
+
+ struct SpecA;
+ struct SpecB;
+ struct SpecC;
+
+ template <typename TAlphabet, typename TSpec>
+ class String<TAlphabet, TSpec>;
+
+ template <typename TAlphabet, typename TSpec>
+ void myFunction(String<TAlphabet, TSpec> const & str); // Variant (A)
+
+ template <typename TAlphabet>
+ void myFunction(String<TAlphabet, SpecB> const & str); // Variant (B)
+
+ // ...
+
+ int main()
+ {
+ String<char, SpecA> a;
+ String<char, SpecB> b;
+ String<char, SpecC> c;
+
+ myFunction(a); // calls (A)
+ myFunction(b); // calls (B)
+ myFunction(c); // calls (A)
+ }
+
+For a detailed description and more examples see the tutorial :ref:`Template Subclassing <tutorial-template-subclassing>`.
+
+Assignment 5
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Provide a generic print function which is used when the input type is not ``String<int>``.
+
+ Hint
+ Keep your current implementation and add a second function.
+ Don't forget to make both template functions.
+ Include ``<seqan/score.h>`` as well.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/first_steps/solution_5.cpp
+
+Tags in SeqAn
+~~~~~~~~~~~~~
+
+Sometimes you will see something like this:
+
+.. code-block:: cpp
+
+ globalAlignment(align, seqan::MyersHirschberg())
+
+Having a closer look you will notice that there is a default constructor call (``MyersHirschberg()`` ) within a function call.
+Using this mechanism one can specify which function to call at compile time.
+The ``MyersHirschberg()`` `` is only a tag to determine which specialisation of the ``globalAligment`` function to call.
+
+**If you want more information on tags then read on** otherwise you are now ready to explore SeqAn in more detail and continue with one of the other tutorials.
+
+There is another use case of templates and function specialization.
+
+This might be useful in a ``print()`` function, for example.
+In some scenarios, we only want to print the position where the maximal similarity between pattern and text is found.
+In other cases, we might want to print the similarities of all positions.
+In SeqAn, we use **tag-based dispatching** to realize this.
+Here, the type of the **tag** holds the specialization information.
+
+.. tip::
+
+ Tag-Based Dispatching
+
+ You will often see **tags** in SeqAn code, e.g. ``Standard()``.
+ These are parameters to functions that are passed as const-references.
+ They are not passed for their values but for their type only.
+ This way, we can select different specializations at **compile time** in a way that plays nicely together with metafunctions, template specializations, and an advanced technique called [[Tutorial/BasicTechniques| metaprogramming]].
+
+ Consider the following example:
+
+ .. code-block:: cpp
+
+ struct TagA {};
+ struct TagB {};
+
+ void myFunction(TagA const &); // (1)
+ void myFunction(TagB const &); // (2)
+
+ int main()
+ {
+ myFunction(TagA()); // (3)
+ myFunction(TagB()); // (4)
+ return 0;
+ }
+
+ The function call in line (3) will call ``myFunction()`` in the variant in line (1).
+ The function call in line (4) will call ``myFunction()`` in the variant in line (2).
+
+The code for the two different ``print()`` functions mentioned above could look like this:
+
+.. code-block:: cpp
+
+ #include <iostream>
+ #include <seqan/sequence.h>
+ #include <seqan/score.h>
+
+ template <typename TText, typename TSpec>
+ void print(TText const & text, TSpec const & /*tag*/)
+ {
+ for (unsigned i = 0; i < seqan::length(text); ++i)
+ std::cout << text[i] << " ";
+ std::cout << std::endl;
+ }
+
+ struct MaxOnly {};
+
+ template <typename TText>
+ void print(TText const & score, MaxOnly const & /*tag*/)
+ {
+ int maxScore = score[0];
+ seqan::String<int> output;
+ appendValue(output, 0);
+ for (unsigned i = 1; i < seqan::length(score); ++i)
+ {
+ if (score[i] > maxScore)
+ {
+ maxScore = score[i];
+ clear(output);
+ resize(output, 1, i);
+ }
+ else if (score[i] == maxScore)
+ {
+ appendValue(output, i);
+ }
+ }
+
+ for (unsigned i = 0; i < seqan::length(output); ++i)
+ std::cout << output[i] << " ";
+ std::cout << std::endl;
+ }
+
+If we call ``print()`` with something different than ``MaxOnly`` then we print all the positions with their similarity, because the generic template function accepts anything as the template argument.
+On the other hand, if we call print with ``MaxOnly`` only the positions with the maximum similarity as well as the maximal similarity will be shown.
+
+Assignment 6
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Provide a print function that prints pairs of positions and their score if the score is greater than 0.
+
+ Hints
+ SeqAn provides a data type :dox:`Pair`.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/first_steps/solution_6.cpp
+
+Obviously this is only a toy example in which we could have named the two ``print()`` functions differently.
+However, often this is not the case when the programs become more complex.
+Because SeqAn is very generic we do not know the datatypes of template functions in advance.
+This would pose a problem because the function call of function ``b()`` in function ``a()`` may depend on the data types of the template arguments of function ``a()``.
+
+The Final Result
+~~~~~~~~~~~~~~~~
+
+Don't worry if you have not fully understood the last section.
+If you have -- perfect.
+In any case the take home message is that you use data types for class specializations and if you see a line of code in which the default constructor is written in a function call this typical means that the data type is important to distinct between different function implementations.
+
+Now you are ready to explore more of the SeqAn library.
+There are several tutorials which will teach you how to use the different SeqAn data structures and algorithms.
+Below you find the complete code for our example with the corresponding output.
+
+.. includefrags:: demos/tutorial/first_steps/final_result.cpp
+ :fragment: result
diff --git a/manual/source/Tutorial/FragmentStore.rst b/manual/source/Tutorial/FragmentStore.rst
index 8bddf85..a931c38 100644
--- a/manual/source/Tutorial/FragmentStore.rst
+++ b/manual/source/Tutorial/FragmentStore.rst
@@ -115,19 +115,57 @@ Therefore first a stairs layout of the reads must be computed via :dox:`AlignedR
The function :dox:`AlignedReadLayout#printAlignment` can then be used to output a window (beginPos,endPos,firstLine,lastLine) of the read alignment against a contig either to a stream or ``SVGFile``.
The following small example demonstrates how to first load two contigs from a Fasta file and then import a read alignment given in SAM format:
-.. includefrags:: demos/tutorial/fragment_store/display_aligned_reads.cpp
+.. includefrags:: demos/tutorial/store/store_diplay_aligned_reads.cpp
:fragment: includes
Then we create a stairs layout of the aligned reads and output a window from gapped position 0 to 150 and line 0 to 36 of the multiple alignments below contig 1 to standard out.
-.. includefrags:: demos/tutorial/fragment_store/display_aligned_reads.cpp
+.. includefrags:: demos/tutorial/store/store_diplay_aligned_reads.cpp
:fragment: ascii
-.. includefrags:: demos/tutorial/fragment_store/display_aligned_reads.cpp.stdout
+.. code-block:: console
+
+ TTCAAATGAACTTCTGTAATTGAAAAATTCATTTAAGAAATTACAAAATATAGTTGAAAGCTCTAACAATAGACTAAACCAAGCAGAAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCTTATGAATTAACCCAGTCAGACAAAAATAAA
+ TTCAAATGAACTTCTGTAATTGAAAAATTCATTTAA AATTACAAAATATAGTTGAAAGCTCTAACAATAGA AACCAAGCAGAAGAAAGAGGTTCAGAACTTGAAGA AGTCTCTTATGAATTAACCCAGTCAGACAAAAATA A
+ TTCAAATGAACTTCTGTAATTGAAAAATTCATTTA GAAATTACAAAATATAGTTGAAAGCTCTAACAATA ACTAAACCAAGCAGAAGAAAGAGGTTCAGAACTTG AGACAAGTCTCTTATGAATTAACCCAGTCAGACAA AAA
+ ttcaaatgaacttctgtaattgaaaaattcattta GAAATTACAAAATATAGTTGAAAGCTCTAACAATAG AACCAAGCAGAAGAAAGAGGCTCAGAACTTGAAGA AGTCTCTTATGAATTAACCCAGTCAGACAAAAATA A
+ TCAAATGAACTTCTGTAATTGAAAAATTCATTTAA ATTACAAAATATAGTTGAAAGATCTAACAATAGAC CCAAGCAGAAGAAAGAGGTTCAGAACTTGAAGACAA TTATGAATTAACCCAGTCAGACAAAAATAAA
+ AATGAACTTCTGTAATTGAAAAATTCATTTAAGAA TTACAAAATATAGTTGAAAGCTCTAACAATAGACT AAGCAGAAGAAAGAGGTTCAGAACTTGAAGACAAG TATGAATTAACCCAGTCAGACAAAAATAAA
+ ATGAACTTCTGTAATTGAAAAATTCATTTAAGAAA ACAAAATATAGTTGAAAGCTCTAACAATAGACTAA GCAGAAGAAAGAGGTTCAGAACTTGAAGACAAGTC ATGAATTAACCAAGTCAGACAAAAATAAA
+ ATGAACTTCTGTAATTGAAAAATTCATTTAAGAAA ACAAAATATAGTTGAAAGCTCTAACAATAGACTAA CAGAAGAAAGAGGTTCAGAACTTGAAGACAAGTCT TGAATTAACCCAGTCAGACAAAAATAAA
+ ATGAACTTCTGTAATTGAAAAATTCATTTAAGAAA ACAAAATATAGTTGAAAGCTCTAACAATAGACTAA CAGAAGAAAGAGGTTCANANNNTGANGACAAGTCT TGAATTAACCCAGTCAGACAAAAATAAA
+ TGAACTTCTGTAATTGAAAAATTCATTTAAGAAATT CAAAATATAGTTGAAAGCTCTAACAATAGACTAAA GAAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCT GAATTAACCCAGTCAGACAAAAANNAA
+ TGAACTTCTGTAATTGAAAAATTCATTTAAGAAAT AAAATATAGTTGAAAGCTCTAACAATAGACTAAAC AAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCGT GAATTAACCCAGTCAGACAAAAATAAA
+ TGAACTTCTGTAATTGAAAAATTCATTTAAGAAAT AAAATATAGTTGAAAGCTCTAACAATAGACTAAAC AAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCTT AATTAACCCAGTCAGACAAAAATAAA
+ TGAACTTCTGTAATTGAAAAATTCATTTAAGAAAT AAATATAGTTGAAAGCTCTAACAATAGACTAAACC GAAAGAGGTTCAGAACTTGAAGACAAGTCTCTTATG AAA
+ GAACTTCTGTAATTGAAAAATTCATTTAAGAAATT AAATATAGTTGAAAGCTCTAACAATAGACTAAACC AAGAGGTTCAGAACTTGAAGACAAGTCTCTTATGA
+ GAACTTCTGTAATTGAAAAATTCATTTAAGAAATT AATATAGTTGAAAGCTCTAACAATAGACTAAACCAA AAGAGGTTCAGAACTTGAAGACAAGTCTCTTATGA
+ CTTCTGTAATTGAAAAATTCATTTAAGAAATTACA ATATAGTTGAAAGCTCTAACAATAGACTAAACCAA GAGGTTCAGAACTTGAAGACAAGTCTCTTATGAAT
+ TTCTGTAATTGAAAAATTCATTTAAGAAATTACAA ATAGTTGAAAGCTCTAACAATAGACTAAACCAAGC GAGGTTCAGAACTTGAAGACAAGTCTCTTATGAAT
+ GTAATTGAAAAATTCATTTAAGAAATTACAAAATA AGTTGAAAGCTCTAACAATAGACTAAACCAAGCAG AGGTTCAGAACTTGAAGACAAGTCTCTTATGAATT
+ TAATTGAAAAATTCATTTAAGAAATTACAAAATAT TTGAAAGCTCTAACAATAGACTAAACCAAGCAGAA GGTTCAGAACTTGAAGACAAGTCTCTTATGAATTA
+ AATTGAAAAATTCATTTAAGAAATTACAAAATATA GAAAGCTCTAACAATAGACTAAACCAAGCAGAAGAAAGAG TTCAGAACTTGAAGACAAGTCTCTTATGAATTAAC
+ AAAATTCATTTAAGAAATTACAAAATATAGTTGAA CTAACAATAGACTAAACCAAGCAGAAGAAAGAGTT CTTGAAGACAAGTCTCTTATGAATTAACCCAGTCA
+ AAATTCATTTAAGAAATTACAAAATATAGTTGAAA CTAACAATAGACTAAACCAAGCAGAAGAAAGAGGTT TTGAAGACAAGTCTCTTATGAATTAACCCAGTCAG
+ AATTCATTTAAGAAATTACAAAATATAGTTGAAAG TAACAATAGACTAAACCAAGCAGAAGAAAGAGGTT TGAAGACAAGTCTCTTATGAATTAACCCAGTCAGA
+ CATTTAAGAAATTACAAAATATAGTTGAAAGCTCT ACAATAGACTAAACCAAGCAGAAGAAAGAGGTTCA TGAAGACAAGTCTCTTATGAATTAACCCAGTCAGACAAAA
+ TTAAGAAATTACAAAATATAGTTGAAAGCTCTAAC GACTAAACCAAGCAGAAGAAAGAGGTTCAGAACTT AAGACAAGTCTCTTATGAATTAACCCAGTCAGACA
+ TAAGAAATTACAAAATATAGTTGAAAGCTCTAACAATAGA GGTTCAGAACTTGAAGACAAGTCTCTTATGAATTA
+ TTACAAAATATAGTTGAAAGCTCTAACAATAGACT GGTTCAGAACTTGAAGACAAGTCTCTTATGAATTA
+ ATAGTTGAAAGCTCTAACAATAGACTAAACCAAGC GTTCAGAACTTGAAGACAAGTCTCTTATGAATTAAC
+ AAAGCTCTAACAATAGACTAAACCAAGCAGAAGAA TCAGAACTTGAAGACAAGTCTCTTATGAATTAACC
+ AAAGCTCTAACAATAGACTAAACCAAGCAGAAGAA NAAGACAAGTCTCTTATGAATTAACCCAGTCAGACA
+ AAGCTCTAACAATAGACTAAACCAAGCAGAAGAAA GAAGACAAGTCTCTTATGAATTAACCCAGTCAGAC
+ TAACAATAGACTAAACCAAGCAGAAGAAAGAGGTT AGTCTCTTATGAATTAACCCAGTCAGACAAAAATA
+ TAACAATAGACTAAACCAAGCAGAAGAAAGAGGTT GTCTCTTATGAATTAACCCAGTCAGACAAAAATAA
+ AACAATAGACTAAACCAAGCAGAAGAAAGAGGTTC
+ AACAATAGACTAAACCAAGCAGAAGAAAGAGGTTC
+ AATAGACTAAACCAAGCAGAAGAAAGAGGTTCAGA
+ AATAGACTAAACCAAGCAGAAGAAAGAGGTTCAGA
The same window can also be exported as a scalable vector graphic in SVG format (supported by Browsers, Inkscape; see :download:`original file <ReadLayout.svg>`]):
-.. includefrags:: demos/tutorial/fragment_store/display_aligned_reads.cpp
+.. includefrags:: demos/tutorial/store/store_diplay_aligned_reads.cpp
:fragment: svg
.. figure:: ReadLayout.png
@@ -143,7 +181,7 @@ In the next step, we want to access several pairwise alignments between reads an
Therefore we first need to get the associated types that the Fragment Store uses to store contig and read sequences and gaps.
This can be done by the following typedefs:
-.. includefrags:: demos/tutorial/fragment_store/access_aligned_reads.cpp
+.. includefrags:: demos/tutorial/store/store_access_aligned_reads.cpp
:fragment: typedefs
Now we want to extract and output the alignments from the :dox:`FragmentStore::alignedReadStore` at position 140,144,...,156.
@@ -160,10 +198,30 @@ After that we output both alignment rows.
The :dox:`Gaps` contains two :dox:`Holder` references to the sequence and the inserted gaps.
In our example these Holders are dependent and changes made to the Gaps object like the insertion/deletion of gaps would immediatly be persistent in the Fragment Store.
-.. includefrags:: demos/tutorial/fragment_store/access_aligned_reads.cpp
+.. includefrags:: demos/tutorial/store/store_access_aligned_reads.cpp
:fragment: output
-.. includefrags:: demos/tutorial/fragment_store/access_aligned_reads.cpp.stdout
+.. code-block:: console
+
+ ALIGNMENT 140
+ contig 0: CTGTGTTTAGTGCCTTTGTTCA-----ACCCCCTTGCAAC [266..306[
+ read 149: CTGTGTTTAGTGCCTTTGTTCA-----ACCCCCTTGCAAC
+
+ ALIGNMENT 144
+ contig 0: AGTGCCTTTGTTCA-----ACCCCCTTGCAACAACC [274..310[
+ read 153: AGTGCCTTTGTTCACATAGACCCCCTTGCAACAACC
+
+ ALIGNMENT 148
+ contig 0: TTCA-----ACCCCCTTGCAACAACCTTGAGAACCCCAGG [284..324[
+ read 157: ATAG-----ACCCCCTTGCAACAACCTTGAGAACCCCAGG
+
+ ALIGNMENT 152
+ contig 0: CA-----ACCCCCTTGCAACAACCTTGAGAACCCCAGGGA [286..326[
+ read 161: CA-----ACCCCCTTGCAACAACCTTGCGAACCCCAGGGA
+
+ ALIGNMENT 156
+ contig 0: CCCCCTTGCAACAACCTTGAGAACCCCAGGGAATT [294..329[
+ read 165: CCCCCTTGCAACAACCTTGAGAACCCCAGGGAATT
Assignment 1
""""""""""""
@@ -188,19 +246,39 @@ Assignment 1
As we copy the read sequence, it suffices to change the type of the target string readSeq and the sequence type of the read :dox:`Gaps` object into CharString, i.e. a :dox:`String` of ``char``.
- .. includefrags:: demos/tutorial/fragment_store/access_aligned_reads2.cpp
+ .. includefrags:: demos/tutorial/store/store_access_aligned_reads2.cpp
:fragment: typedefs
Then, we not only need to reverse-complement readSeq if the read aligns to the reverse strand (``endPos < beginPos``) but also need to convert its letters into lower-case.
Therefor SeqAn provides the function :dox:`toLower`.
Alternatively, we could iterate over readSeq and add ('a'-'A') to its elements.
- .. includefrags:: demos/tutorial/fragment_store/access_aligned_reads2.cpp
+ .. includefrags:: demos/tutorial/store/store_access_aligned_reads2.cpp
:fragment: output
Running this program results in the following output.
- .. includefrags:: demos/tutorial/fragment_store/access_aligned_reads2.cpp.stdout
+ .. code-block:: console
+
+ ALIGNMENT 140
+ contig 0: CTGTGTTTAGTGCCTTTGTTCA-----ACCCCCTTGCAAC [266..306[
+ read 149: ctgtgtttagtgcctttgttca-----acccccttgcaac
+
+ ALIGNMENT 144
+ contig 0: AGTGCCTTTGTTCA-----ACCCCCTTGCAACAACC [274..310[
+ read 153: AGTGCCTTTGTTCACATAGACCCCCTTGCAACAACC
+
+ ALIGNMENT 148
+ contig 0: TTCA-----ACCCCCTTGCAACAACCTTGAGAACCCCAGG [284..324[
+ read 157: ATAG-----ACCCCCTTGCAACAACCTTGAGAACCCCAGG
+
+ ALIGNMENT 152
+ contig 0: CA-----ACCCCCTTGCAACAACCTTGAGAACCCCAGGGA [286..326[
+ read 161: CA-----ACCCCCTTGCAACAACCTTGCGAACCCCAGGGA
+
+ ALIGNMENT 156
+ contig 0: CCCCCTTGCAACAACCTTGAGAACCCCAGGGAATT [294..329[
+ read 165: cccccttgcaacaaccttgagaaccccagggaatt
Gene Annotation
^^^^^^^^^^^^^^^
diff --git a/manual/source/Tutorial/GenomeAnnotations.rst b/manual/source/Tutorial/GenomeAnnotations.rst
deleted file mode 100644
index 758d48f..0000000
--- a/manual/source/Tutorial/GenomeAnnotations.rst
+++ /dev/null
@@ -1,315 +0,0 @@
-.. sidebar:: ToC
-
- .. contents::
-
-
-.. _tutorial-genome-annotations:
-
-Genome Annotations
-------------------
-
-Learning Objective
- You will learn how to work with annotations in SeqAn.
- After this tutorial, you will be able to write your own programs using annotations and analyzing them.
- You will be ready to continue with the :ref:`tutorial-fragment-store` Tutorial, e.g. if you want to combine your annotations with information from alignments.
-
-Difficulty
- Average
-
-Duration
- 1 h
-
-Prerequisites
- :ref:`tutorial-sequences`, :ref:`tutorial-iterators`
-
-This tutorial will present SeqAn's efficient and easy-to-use data structures to work with annotations.
-They allow to annotate genome regions with features like 'gene', 'mRNA', 'exon', 'intron' and if required with custom features.
-We will give you an understanding of how to load annotations from a `GFF <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_ or `GTF <http://genome.ucsc.edu/FAQ/FAQformat.html#format4>`_ file, store them in efficient data structures, as well as how to traverse and access these information.
-
-AnnotationStore as Part of the FragmentStore
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This section will give you a short introduction to data structures relevant for working with annotations.
-
-In SeqAn, annotations are stored in the so-called :dox:`FragmentStore::annotationStore`, which is part of the :dox:`FragmentStore`.
-The annotationStore can only be used together with the FragmentStore, because the latter stores additional information, e.g. the contig names or sequences.
-The FragmentStore is a data structure specifically designed for read mapping, genome assembly or gene annotation.
-
-The FragmentStore can be seen as a database, where each table (called "store") is implemented as a :dox:`String`.
-Each row of the table corresponds to an element in the string.
-The position of each element in the string implicitly represents the Id of such element in the table.
-All such strings are members of the class :dox:`FragmentStore`, are always present and empty if unused.
-For example, the member :dox:`FragmentStore::contigStore` is a string of elements, each one containing among others a contig sequence.
-
-For detailed information about the :dox:`FragmentStore` read the :ref:`tutorial-fragment-store` Tutorial.
-
-Accordingly, the :dox:`FragmentStore::annotationStore` is a :dox:`String`, where each element represents one annotation.
-Each element holds the necessary information, e.g. beginPos, endPos, parentId etc., as data members.
-
-.. Like many other stores, the :dox:`FragmentStore::annotationStore` has an associated name store, namely the :dox:`FragmentStore::annotationNameStore`, to store its element names.
- The name store is a StringSet that stores the element name at the position of its id.
-
-AnnotationStore
-~~~~~~~~~~~~~~~
-
-In this section you will learn how to work with the :dox:`FragmentStore::annotationStore` itself.
-
-Annotations are represented hierarchically by a tree having at least a root node.
-
-A typical annotation tree looks as follows.
-
-.. figure:: AnnotationTree.png
- :width: 400px
-
- Annotation tree example
-
-
-The following entity-relationship diagram shows the tables holding store annotations, their relationships and cardinalities.
-
-.. figure:: AnnotationStore.png
- :width: 600px
-
- Stores involved in gene annotation
-
-The instantiation of an :dox:`FragmentStore::annotationStore` happens implicitly with the instantiation of a :dox:`FragmentStore`.
-To access the FragmentStore definitions we'll need to include the correct header:
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp
- :fragment: INCLUDE
-
-Now we can simply write:
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp
- :fragment: SIGNATURE
-
-Loading an Annotation File
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Before we deal with the actual annotation tree, we will first describe how you can easily load annotations from a `GFF <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_ or `GTF <http://genome.ucsc.edu/FAQ/FAQformat.html#format4>`_ file into the :dox:`FragmentStore`.
-
-An annotation file can be read from an :dox:`GffFileIn` with the function :dox:`FragmentStore#readRecords`.
-The file extension specifies if we want to read a GFF, GTF or UCSC file.
-The following example shows how to read an GTF file:
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp
- :fragment: LOAD
-
-The GFF-reader is also able to detect and read GTF files.
-The UCSC Genome Browser uses two seperate files, the ``kownGene.txt`` and ``knownIsoforms.txt``.
-They must be read by using two different :dox:`UcscFileIn` objects (one for ``knownGene.txt`` and one for ``knownIsoforms.txt``).
-Finally you call :dox:`FragmentStore#readRecords` with both :dox:`UcscFileIn` objects.
-
-.. tip::
-
- An annotation can be loaded without loading the corresponding contigs.
-
- In that case empty contigs are created in the contigStore with names given in the annonation.
- A subsequent call of :dox:`FragmentStore#loadContigs` would load the sequences of these contigs, if they have the same identifier in the contig file.
-
-Traversing the Annotation Tree
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This section will illustrate how to use iterators to traverse the annotation tree.
-
-The annotation tree can be traversed and accessed with the :dox:`AnnotationTreeIterator AnnotationTree Iterator`.
-Again we use the metafunction `dox:ContainerConcept#Iterator Iterator` to determine the appropriate iterator type for our container.
-A new AnnotationTree iterator can be obtained by calling :dox:`ContainerConcept#begin` with a reference to the :dox:`FragmentStore` and the ``AnnotationTree`` tag:
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp
- :fragment: ITERATOR
-
-The AnnotationTree iterator starts at the root node and can be moved to adjacent tree nodes with the functions :dox:`AnnotationTreeIterator#goDown`, :dox:`AnnotationTreeIterator#goUp`, and :dox:`AnnotationTreeIterator#goRight`.
-These functions return a boolean value that indicates whether the iterator could be moved.
-The functions :dox:`AnnotationTreeIterator#isLeaf`, :dox:`AnnotationTreeIterator#isRoot`, :dox:`AnnotationTreeIterator#isLastChild` return the same boolean without moving the iterator.
-With :dox:`AnnotationTreeIterator#goRoot` or :dox:`AnnotationTreeIterator#goTo` the iterator can be moved to the root node or an arbitrary node given its annotationId.
-If the iterator should not be moved but a new iterator at an adjacent node is required, the functions :dox:`AnnotationTreeIterator#nodeDown`, :dox:`AnnotationTreeIterator#nodeUp`, :dox:`AnnotationTreeIterator#nodeRight` can be used.
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp
- :fragment: MOVE
-
-The AnnotationTree iterator supports a preorder DFS traversal and therefore can also be used in typical begin-end loops with the functions :dox:`RootedRandomAccessIteratorConcept#goBegin` (== :dox:`AnnotationTreeIterator#goRoot`), :dox:`RootedRandomAccessIteratorConcept#goEnd`, :dox:`InputIteratorConcept#goNext`, :dox:`RootedIteratorConcept#atBegin`, :dox:`RootedIteratorConcept#atEnd`.
-During a preorder DFS, the descent into subtree can be skipped by :dox:`AnnotationTreeIterator#goNextRight`, or :dox:`AnnotationTreeIterator#goNextUp` which proceeds with the next sibling or returns to the parent node and proceeds with the next node in preorder DFS.
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp
- :fragment: DFS
-
-Asignment 1
-"""""""""""
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Copy the code below, which loads the annotations from a given GTF file into the FragmentStore and initializes an iterator on the AnnotationTree.
- Download the GTF file :download:`assignment_annotations.gtf <assignment_annotations.gtf>`, whose annotations build an AnnotationTree of the typical structure with gene, mRNA and exon level.
- Adjust the code to go down to the exon level and iteratate over all children of the first mRNA and count them.
- Print the result.
-
- Click **more...** to see the code.
-
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/genome_annotations/assignment_1_hint.cpp
-
- Hints
- In the given data the left-most leaf is a child of mRNA and has siblings.
- You can use the function :dox:`AnnotationTreeIterator#goRight` to traverse over all siblings.
-
- Solution
- Click **more...** to see one possible solution.
-
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/genome_annotations/assignment_1_solution.cpp
-
- .. includefrags:: demos/tutorial/genome_annotations/assignment_1_solution.cpp.stdout
-
-
-Assignment 2
-""""""""""""
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Reuse the code and the GTF file from above.
- Instead of counting only the children of the first mRNA adjust the code to count the children for each given mRNA.
- Print the results.
-
- Hints
- After you reached the last child of the first mRNA you can use the functions :dox:`InputIteratorConcept#goNext` and :dox:`AnnotationTreeIterator#goDown` to traverse to the next leaf.
-
- Solution
- Click **more...** to see one possible solution.
-
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/genome_annotations/assignment_2_solution.cpp
-
- .. includefrags:: demos/tutorial/genome_annotations/assignment_2_solution.cpp.stdout
-
-
-Accessing the Annotation Tree
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Let us now have a closer look how to access the information stored in the different stores representing the annotation tree.
-
-To access or modify the node an iterator points at, the iterator returns the node's annotationId by the :dox:`IteratorAssociatedTypesConcept#value` function (== ``operator*``).
-With the annotationId the corresponding entry in the annotationStore could be modified manually or by using convenience functions.
-The function :dox:`AnnotationTreeIterator#getAnnotation` returns a reference to the corresponding entry in the annotationStore.
-:dox:`AnnotationTreeIterator#getName` and :dox:`AnnotationTreeIterator#setName` can be used to retrieve or change the identifier of the annotation element.
-As some annotation file formats don't give every annotation a name, the function :dox:`AnnotationTreeIterator#getUniqueName` returns the name if non-empty or generates one using the type and id.
-The name of the parent node in the tree can be determined with :dox:`AnnotationTreeIterator#getParentName`.
-The name of the annotation type, e.g. 'mRNA' or 'exon', can be determined and modified with :dox:`AnnotationTreeIterator#getType` and :dox:`AnnotationTreeIterator#setType`.
-
-Assume we have loaded the file ``example.gtf`` with the following content to the :dox:`FragmentStore` *store* and instantiated the iterator *it* of the corresponding annotation tree.
-
-.. includefrags:: demos/tutorial/genome_annotations/example.gtf
-
-We now want to iterate to the first exon and output a few information:
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp
- :fragment: ACCESS
-
-For our example the output would be:
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp.stdout
- :lines: 5-7
-
-An annotation can not only refer to a region of a contig but also contain additional information given as key-value pairs.
-The value of a key can be retrieved or set by :dox:`AnnotationTreeIterator#getValueByKey` and :dox:`AnnotationTreeIterator#assignValueByKey`.
-The values of a node can be cleared with :dox:`AnnotationTreeIterator#clearValues`.
-
-A new node can be created as first child, last child, or right sibling of the current node with :dox:`AnnotationTreeIterator#createLeftChild`, :dox:`AnnotationTreeIterator#createRightChild`, or :dox:`AnnotationTreeIterator#createSibling`.
-All three functions return an iterator to the newly created node.
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp
- :fragment: CREATE
-
-The following list summarizes the functions provided by the AnnotationTree iterator.
-
-:dox:`AnnotationTreeIterator#getAnnotation`, :dox:`IteratorAssociatedTypesConcept#value`
- Return annotation object/id of current node
-:dox:`AnnotationTreeIterator#getName`, :dox:`AnnotationTreeIterator#setName`, :dox:`AnnotationTreeIterator#getType`, :dox:`AnnotationTreeIterator#setType`
- Access name or type of current annotation object
-:dox:`AnnotationTreeIterator#getParentName`
- Access parent name of current annotation object
-:dox:`AnnotationTreeIterator#clearValues clearValue`, :dox:`AnnotationTreeIterator#getValueByKey`, :dox:`AnnotationTreeIterator#assignValueByKey`
- Access associated values
-:dox:`RootedRandomAccessIteratorConcept#goBegin`, :dox:`RootedRandomAccessIteratorConcept#goEnd`, :dox:`RootedIteratorConcept#atBegin`, :dox:`RootedIteratorConcept#atEnd`
- Go to or test for begin/end of DFS traversal
-:dox:`InputIteratorConcept#goNext`, :dox:`AnnotationTreeIterator#goNextRight`, :dox:`AnnotationTreeIterator#goNextUp`
- go next, skip subtree or siblings during DFS traversal
-:dox:`AnnotationTreeIterator#goRoot`, :dox:`AnnotationTreeIterator#goUp`, :dox:`AnnotationTreeIterator#goDown`, :dox:`AnnotationTreeIterator#goRight`
- Navigate through annotation tree
-:dox:`AnnotationTreeIterator#createLeftChild`, :dox:`AnnotationTreeIterator#createRightChild`, :dox:`AnnotationTreeIterator#createSibling`
- Create new annotation nodes
-:dox:`AnnotationTreeIterator#isRoot`, :dox:`AnnotationTreeIterator#isLeaf`
- Test for root/leaf node
-
-Assignment 3
-""""""""""""
-
-.. container:: assignment
-
- Type
- Application
-
- Objective
- Again use the given GTF file :download:`assignment_annotations.gtf <assignment_annotations.gtf>` and create an iterator on the annotation tree.
- Now iterate to the first node of type "exon" and output the following features:
-
- #. type
- #. begin position
- #. end position
- #. its Id
- #. the Id of its parent
- #. the name of its parent
-
- Solution
- Click **more...** to see one possible solution.
-
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/genome_annotations/assignment_3_solution.cpp
-
- .. includefrags:: demos/tutorial/genome_annotations/assignment_3_solution.cpp.stdout
-
-
-Assignment 4
-""""""""""""
-
-.. container:: assignment
- Type
- Transfer
-
- Objective
- Write a small statistic tool to analyse a given set of annotations.
-
- #. Load the annotations given in the GTF file :download:`assignment_annotations.gtf <assignment_annotations.gtf>`.
- #. Output the average number of mRNAs for genes.
- #. Output the average number of exons for mRNAs.
- #. Additionally output the average exon length.
- #. Test your program also on large data, e.g. the annotation of the mouse genome `sim40mio_onlyY.sam.zip <http://ftp.seqan.de/manual_files/seqan-1.4/sim40mio_onlyY.sam.zip>`_ (don't forget to unzip first).
-
- Solution
- Click **more...** to see one possible solution.
-
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/genome_annotations/assignment_4_solution.cpp
-
- .. includefrags:: demos/tutorial/genome_annotations/assignment_4_solution.cpp.stdout
-
-
-Write an Annotation File
-^^^^^^^^^^^^^^^^^^^^^^^^
-
-To write an annotation to a file use the function :dox:`FragmentStore#writeRecords`. Note that the format (``Gff()`` or ``Gtf()``) is specified by the file extension.
-
-.. includefrags:: demos/tutorial/genome_annotations/base.cpp
- :fragment: OUT
diff --git a/manual/source/Tutorial/GettingStarted.rst b/manual/source/Tutorial/GettingStarted.rst
index 7c70a42..7a5d1e9 100644
--- a/manual/source/Tutorial/GettingStarted.rst
+++ b/manual/source/Tutorial/GettingStarted.rst
@@ -6,7 +6,7 @@ Getting Started
This chapter gives you the necessary steps to get started with SeqAn:
- Necessary Prerequisites
-- Getting SeqAn from GitHub
+- Installing SeqAn from Subversion
- Creating a first build.
- Creating your own first application.
diff --git a/manual/source/Tutorial/GffAndGtfIO.rst b/manual/source/Tutorial/GffAndGtfIO.rst
deleted file mode 100644
index f4fe3ef..0000000
--- a/manual/source/Tutorial/GffAndGtfIO.rst
+++ /dev/null
@@ -1,214 +0,0 @@
-.. sidebar:: ToC
-
- .. contents::
-
-
-.. _tutorial-gff-and-gtf-io:
-
-GFF and GTF I/O
-===============
-
-Learning Objective
- In this tutorial, you will learn how to read and write GFF and GTF files.
-
-Difficulty
- Average
-
-Duration
- 45 min
-
-Prerequisites
- :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`, `GFF Format Specification <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_
-
-This tutorial shows how to read and write GFF and GTF files using the :dox:`GffFileIn` and :dox:`GffFileOut` classes.
-It starts out with a quick reminder on the structure of GFF and GTF files and will then continue with how to read and write GFF and GTF files.
-
-The GFF and GTF formats are used for annotating genomic intervals (an interval with begin/end position on a contig/chromosome).
-GFF exist in versions 2 and 3 and GTF is sometimes called "GFF 2.5".
-There are specifications for `GFF 2 <http://www.sanger.ac.uk/resources/software/gff/spec.html>`_, `GFF 3 <http://www.sequenceontology.org/gff3.shtml>`_, and `GTF <http://mblab.wustl.edu/GTF22.html>`_ available elsewhere.
-GFF and GTF are TSV-based formats and in general have the same structure.
-The main difference is the underlying system/ontology for the annotation but also smaller differences in the format.
-
-In this tutorial, we will focus on the format GFF 3 since it is the most current one with most complete tool support.
-The information of this tutorial can easily be translated to the other two formats.
-
-The SeqAn module ``gff_io`` allows the reading and writing of the GFF and GTF formats.
-
-.. tip::
-
- Format Version Support in SeqAn
-
- :dox:`GffFileIn` allows to read GFF files in version 2 and 3 and GTF files.
- For writing, :dox:`GffFileOut` supports only GFF 3 and GTF.
-
-GFF Format
-----------
-
-The following is an example of a GFF 3 file:
-
-.. includefrags:: demos/tutorial/gff_and_gtf_io/example.gff
-
-The meaning of the columns are as follows:
-
-seq id (1)
- Name of the reference sequence.
-
-source (2)
- Free text field describing the source of the annotation, such as a software (e.g. "Genescan") or a a database (e.g. "Genebank"), "``.``" for none.
-
-type (3)
- The type of the annotation.
-
-start (4)
- The 1-based begin position of the annotation.
-
-end (5)
- The 1-based end position of the annotation.
-
-score (6)
- The score of the annotation, "``.``" for none.
-
-strand (7)
- The strand of the annotation, "``+``" and "``-``" for forward and reverse strand, "``.``" for features that are not stranded.
-
-phase (8)
- Shift of the feature regarding to the reading frame, one of "``0``", "``1``", "``2``", and "``.``" for missing/dont-care.
-
-attributes (9)
- A list of key/value attributes.
- For GFF 3, this is a list of ``key=value`` pairs, separated by semicolons (e.g. ``ID=cds00003;Parent=mRNA00003``).
- For GTF and GFF 2, this is a list of tuples, separated by semicolon.
- The first entry gives the key, the following entries are values.
- Strings are generally enclosed in quotes (e.g. ``Target "HBA_HUMAN" 11 55 ; E_value 0.0003``)
-
-.. tip::
-
- 1-based and 0-based positions.
-
- There are two common ways of specifying intervals.
-
- #. Start counting positions at 1 and give intervals by the first and last position that are part of the interval (closed intervals).
- For example, the interval ``[1,000; 2,000]`` starts at character 1,000 and ends at character 2,000 and includes it.
- This way is natural to non-programmers and used when giving coordinates in GFF files or genome browsers such as UCSC Genome Browser and IGV.
- #. Start counting positions at 0 and give intervals by the first position that is part of the interval and giving the position behind the last position that is part of the interval.
- The interval from above would be ``[999; 2,000)`` in this case.
-
- In text representations, such as GFF and GTF, 1-based closed intervals are used whereas in the internal binary data structures, SeqAn uses 0-based half-open intervals.
-
-A First Working Example
------------------------
-
-The following example shows an example of a program that reads the file with the path ``example.gff`` and prints its contents back to the user on standard output.
-
-.. includefrags:: demos/tutorial/gff_and_gtf_io/example1.cpp
-
-The program first opens a :dox:`GffFileIn` for reading and a :dox:`GffFileOut` for writing.
-The GFF records are read into :dox:`GffRecord` objects which we will focus on below.
-
-Assignment 1
-""""""""""""
-
-.. container:: assignment
-
- Type
- Reproduction
-
- Objective
- Create a file with the sample GFF content from above and adjust the path ``"example.gff"`` to the path to your GFF file (e.g. ``"/path/to/my_example.gff"``).
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/gff_and_gtf_io/solution1.cpp
-
-
-Accessing the Records
----------------------
-
-The class :dox:`GffRecord` stores one record in a Gff file.
-
-.. code-block:: cpp
-
- namespace seqan {
-
- class GffRecord
- {
- public:
- CharString ref; // reference name
- __int32 rID; // index in sequenceNames of GffFile
- CharString source; // source free text descriptor
- CharString type; // type of the feature
- __int32 beginPos; // begin position of the interval
- __int32 endPos; // end position of the interval
- float score; // score of the annotation
- char strand; // the strand
- char phase; // one of '0', '1', '2', and '.'
-
- // The key/value list, split into a list of keys and values.
- StringSet<CharString> tagNames;
- StringSet<CharString> tagValues;
-
- // Returns float value for an invalid score.
- static float INVALID_SCORE();
-
- // Constants for marking reference id and position as invalid.
- static const __int32 INVALID_IDX = -1;
- static const __int32 INVALID_POS = -1;
- };
-
- } // namespace seqan
-
-The static members ``INVALID_POS``, ``INVALID_REFID`` store sentinel values for marking positions and reference sequence ids as invalid.
-The static funtion ``INVALID_SCORE()`` returns the IEEE float "NaN" value.
-
-Assignment 2
-""""""""""""
-
-.. container:: assignment
-
- Counting Records
-
- Type
- Review
-
- Objective
- Change the result of `Assignment 1`_ by counting the number of variants for each chromosome/contig instead of writing out the records.
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/gff_and_gtf_io/solution2.cpp
-
- The output is
-
- .. includefrags:: demos/tutorial/gff_and_gtf_io/solution2.cpp.stdout
-
-
-Creating a New File
--------------------
-
-Assignment 3
-""""""""""""
-
-.. container:: assignment
-
- Generating GFF From Scratch
-
- Type
- Application
-
- Objective
- Write a program that prints the following GFF file.
- Create ``GffRecord`` objects and write them to a ``GffFileOut`` using ``writeRecord()``.
-
- .. includefrags::demos/tutorial/gff_and_gtf_io/solution3.cpp.stdcout
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/gff_and_gtf_io/solution3.cpp
-
-Next Steps
-----------
-
-* Continue with the :ref:`tutorial`.
diff --git a/manual/source/Tutorial/GffGtfIO.rst b/manual/source/Tutorial/GffGtfIO.rst
new file mode 100644
index 0000000..e1e8060
--- /dev/null
+++ b/manual/source/Tutorial/GffGtfIO.rst
@@ -0,0 +1,243 @@
+.. sidebar:: ToC
+
+ .. contents::
+
+
+.. _tutorial-gff-and-gtf-io:
+
+GFF and GTF I/O
+===============
+
+Learning Objective
+ In this tutorial, you will learn how to read and write GFF and GTF files.
+
+Difficulty
+ Average
+
+Duration
+ 45 min
+
+Prerequisites
+ :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`, `GFF Format Specification <http://genome.ucsc.edu/FAQ/FAQformat.html#format3>`_
+
+This tutorial shows how to read and write GFF and GTF files using the :dox:`GffFileIn` and :dox:`GffFileOut` classes.
+It starts out with a quick reminder on the structure of GFF and GTF files and will then continue with how to read and write GFF and GTF files.
+
+The GFF and GTF formats are used for annotating genomic intervals (an interval with begin/end position on a contig/chromosome).
+GFF exist in versions 2 and 3 and GTF is sometimes called "GFF 2.5".
+There are specifications for `GFF 2 <http://www.sanger.ac.uk/resources/software/gff/spec.html>`_, `GFF 3 <http://www.sequenceontology.org/gff3.shtml>`_, and `GTF <http://mblab.wustl.edu/GTF22.html>`_ available elsewhere.
+GFF and GTF are TSV-based formats and in general have the same structure.
+The main difference is the underlying system/ontology for the annotation but also smaller differences in the format.
+
+In this tutorial, we will focus on the format GFF 3 since it is the most current one with most complete tool support.
+The information of this tutorial can easily be translated to the other two formats.
+
+The SeqAn module ``gff_io`` allows the reading and writing of the GFF and GTF formats.
+
+.. tip::
+
+ Format Version Support in SeqAn
+
+ :dox:`GffFileIn` allows to read GFF files in version 2 and 3 and GTF files.
+ For writing, :dox:`GffFileOut` supports only GFF 3 and GTF.
+
+GFF Format
+----------
+
+The following is an example of a GFF 3 file:
+
+::
+
+ ctg123 . gene 1000 9000 . + . ID=gene00001;Name=EDEN
+ ctg123 . TF_binding_site 1000 1012 . + . Parent=gene00001
+ ctg123 . mRNA 1050 9000 . + . ID=mRNA00001;Parent=gene00001
+ ctg123 . mRNA 1050 9000 . + . ID=mRNA00002;Parent=gene00001
+ ctg123 . mRNA 1300 9000 . + . ID=mRNA00003;Parent=gene00001
+ ctg123 . exon 1300 1500 . + . Parent=mRNA00003
+ ctg123 . exon 1050 1500 . + . Parent=mRNA00001,mRNA00002
+ ctg123 . exon 3000 3902 . + . Parent=mRNA00001,mRNA00003
+ ctg123 . exon 5000 5500 . + . Parent=mRNA00001,mRNA00002,mRNA00003
+ ctg123 . exon 7000 9000 . + . Parent=mRNA00001,mRNA00002,mRNA00003
+ ctg123 . CDS 1201 1500 . + 0 ID=cds00001;Parent=mRNA00001
+ ctg123 . CDS 3000 3902 . + 0 ID=cds00001;Parent=mRNA00001
+ ctg123 . CDS 5000 5500 . + 0 ID=cds00001;Parent=mRNA00001
+ ctg123 . CDS 7000 7600 . + 0 ID=cds00001;Parent=mRNA00001
+ ctg123 . CDS 1201 1500 . + 0 ID=cds00002;Parent=mRNA00002
+ ctg123 . CDS 5000 5500 . + 0 ID=cds00002;Parent=mRNA00002
+ ctg123 . CDS 7000 7600 . + 0 ID=cds00002;Parent=mRNA00002
+ ctg123 . CDS 3301 3902 . + 0 ID=cds00003;Parent=mRNA00003
+ ctg123 . CDS 5000 5500 . + 1 ID=cds00003;Parent=mRNA00003
+ ctg123 . CDS 7000 7600 . + 1 ID=cds00003;Parent=mRNA00003
+ ctg123 . CDS 3391 3902 . + 0 ID=cds00004;Parent=mRNA00003
+ ctg123 . CDS 5000 5500 . + 1 ID=cds00004;Parent=mRNA00003
+ ctg123 . CDS 7000 7600 . + 1 ID=cds00004;Parent=mRNA00003
+
+The meaning of the columns are as follows:
+
+seq id (1)
+ Name of the reference sequence.
+
+source (2)
+ Free text field describing the source of the annotation, such as a software (e.g. "Genescan") or a a database (e.g. "Genebank"), "``.``" for none.
+
+type (3)
+ The type of the annotation.
+
+start (4)
+ The 1-based begin position of the annotation.
+
+end (5)
+ The 1-based end position of the annotation.
+
+score (6)
+ The score of the annotation, "``.``" for none.
+
+strand (7)
+ The strand of the annotation, "``+``" and "``-``" for forward and reverse strand, "``.``" for features that are not stranded.
+
+phase (8)
+ Shift of the feature regarding to the reading frame, one of "``0``", "``1``", "``2``", and "``.``" for missing/dont-care.
+
+attributes (9)
+ A list of key/value attributes.
+ For GFF 3, this is a list of ``key=value`` pairs, separated by semicolons (e.g. ``ID=cds00003;Parent=mRNA00003``).
+ For GTF and GFF 2, this is a list of tuples, separated by semicolon.
+ The first entry gives the key, the following entries are values.
+ Strings are generally enclosed in quotes (e.g. ``Target "HBA_HUMAN" 11 55 ; E_value 0.0003``)
+
+.. tip::
+
+ 1-based and 0-based positions.
+
+ There are two common ways of specifying intervals.
+
+ #. Start counting positions at 1 and give intervals by the first and last position that are part of the interval (closed intervals).
+ For example, the interval ``[1,000; 2,000]`` starts at character 1,000 and ends at character 2,000 and includes it.
+ This way is natural to non-programmers and used when giving coordinates in GFF files or genome browsers such as UCSC Genome Browser and IGV.
+ #. Start counting positions at 0 and give intervals by the first position that is part of the interval and giving the position behind the last position that is part of the interval.
+ The interval from above would be ``[999; 2,000)`` in this case.
+
+ In text representations, such as GFF and GTF, 1-based closed intervals are used whereas in the internal binary data structures, SeqAn uses 0-based half-open intervals.
+
+A First Working Example
+-----------------------
+
+The following example shows an example of a program that reads the file with the path ``example.gff`` and prints its contents back to the user on standard output.
+
+.. includefrags:: demos/tutorial/gff_io/example1.cpp
+
+The program first opens a :dox:`GffFileIn` for reading and a :dox:`GffFileOut` for writing.
+The GFF records are read into :dox:`GffRecord` objects which we will focus on below.
+
+Assignment 1
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Reproduction
+
+ Objective
+ Create a file with the sample GFF content from above and adjust the path ``"example.gff"`` to the path to your GFF file (e.g. ``"/path/to/my_example.gff"``).
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/gff_io/solution1.cpp
+
+
+Accessing the Records
+---------------------
+
+The class :dox:`GffRecord` stores one record in a Gff file.
+
+.. code-block:: cpp
+
+ namespace seqan {
+
+ class GffRecord
+ {
+ public:
+ CharString ref; // reference name
+ __int32 rID; // index in sequenceNames of GffFile
+ CharString source; // source free text descriptor
+ CharString type; // type of the feature
+ __int32 beginPos; // begin position of the interval
+ __int32 endPos; // end position of the interval
+ float score; // score of the annotation
+ char strand; // the strand
+ char phase; // one of '0', '1', '2', and '.'
+
+ // The key/value list, split into a list of keys and values.
+ StringSet<CharString> tagNames;
+ StringSet<CharString> tagValues;
+
+ // Returns float value for an invalid score.
+ static float INVALID_SCORE();
+
+ // Constants for marking reference id and position as invalid.
+ static const __int32 INVALID_IDX = -1;
+ static const __int32 INVALID_POS = -1;
+ };
+
+ } // namespace seqan
+
+The static members ``INVALID_POS``, ``INVALID_REFID`` store sentinel values for marking positions and reference sequence ids as invalid.
+The static funtion ``INVALID_SCORE()`` returns the IEEE float "NaN" value.
+
+Assignment 2
+""""""""""""
+
+.. container:: assignment
+
+ Counting Records
+
+ Type
+ Review
+
+ Objective
+ Change the result of `Assignment 1`_ by counting the number of variants for each chromosome/contig instead of writing out the records.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/gff_io/solution2.cpp
+
+ The output is
+
+ .. code-block:: console
+
+ RECORDS ON CONTIGS
+ ctg123 23
+
+Creating a New File
+-------------------
+
+Assignment 3
+""""""""""""
+
+.. container:: assignment
+
+ Generating GFF From Scratch
+
+ Type
+ Application
+
+ Objective
+ Write a program that prints the following GFF file.
+ Create ``GffRecord`` objects and write them to a ``GffFileOut`` using ``writeRecord()``.
+
+ .. code-block:: console
+
+ ctg123 . gene 1000 9000 . + . ID=gene00001;Name=EDEN
+ ctg123 . TF_binding_site 1000 1012 . + . Parent=gene00001
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/gff_io/solution3.cpp
+
+Next Steps
+----------
+
+* Continue with the :ref:`tutorial`.
diff --git a/manual/source/Tutorial/IndexIterators.rst b/manual/source/Tutorial/IndexIterators.rst
index 5417536..7071ce8 100644
--- a/manual/source/Tutorial/IndexIterators.rst
+++ b/manual/source/Tutorial/IndexIterators.rst
@@ -48,12 +48,12 @@ We therefore want to use :dox:`TopDownIterator#goDown` which has an overload to
First we create an index of the text ``"How much wood would a woodchuck chuck?"``
-.. includefrags:: demos/tutorial/index_iterators/index_search.cpp
+.. includefrags:: demos/tutorial/index/index_search.cpp
:fragment: initialization
Afterwards we create the :dox:`TopDownIterator TopDown Iterator` using the metafunction Iterator, which expects two arguments, the type of the container to be iterated and a specialization tag (see the VSTree Iterator hierarchy and the :ref:`tutorial-iterators` Tutorial for more details).
-.. includefrags:: demos/tutorial/index_iterators/index_search.cpp
+.. includefrags:: demos/tutorial/index/index_search.cpp
:fragment: iterator
The main search can then be implemented using the functions :dox:`VSTreeIterator#repLength` and :dox:`VSTreeIterator#representative`.
@@ -62,13 +62,13 @@ The search can now be implemented as follows.
The algorithm descends the suffix tree along edges beginning with the corresponding pattern character.
In each step the ``unseen`` edge characters have to be verified.
-.. includefrags:: demos/tutorial/index_iterators/index_search.cpp
+.. includefrags:: demos/tutorial/index/index_search.cpp
:fragment: iteration
If all pattern characters could successfully be compared we end in the topmost node who's leaves point to text positions starting with the pattern.
Thus, the suffixes represented by this node are the occurrences of our pattern and can be retrieved with :dox:`VSTreeIterator#getOccurrences`.
-.. includefrags:: demos/tutorial/index_iterators/index_search.cpp
+.. includefrags:: demos/tutorial/index/index_search.cpp
:fragment: output
Program output:
@@ -83,7 +83,7 @@ Program output:
Alternatively, we could have used :dox:`TopDownIterator#goDown` to go down the path of a pattern instead single characters:
-.. includefrags:: demos/tutorial/index_iterators/index_search2.cpp
+.. includefrags:: demos/tutorial/index/index_search2.cpp
:fragment: output
.. code-block:: console
@@ -105,7 +105,7 @@ Assignment 1
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/index_iterators/iterator_solution1.cpp
+ .. includefrags:: demos/tutorial/index/iterator_solution1.cpp
The difference is the format of the positions of the found occurrences.
Here, we need a :dox:`Pair` to indicate the string within the :dox:`StringSet` and a position within the string.
@@ -170,7 +170,7 @@ Assignment 2
Thus, the DFS walk can be implemented in the following way:
- .. includefrags:: demos/tutorial/index_iterators/iterator_solution2.cpp
+ .. includefrags:: demos/tutorial/index/iterator_solution2.cpp
Assignment 3
""""""""""""
@@ -190,7 +190,7 @@ Assignment 3
We modify the DFS traversal to skip the descent if we walk into a node whose representative is longer than 3.
We then proceed to the right and up as long as the representative is longer than 3.
- .. includefrags:: demos/tutorial/index_iterators/index_assignment4.cpp
+ .. includefrags:: demos/tutorial/index/index_assignment4.cpp
:fragment: iteration
.. code-block:: console
@@ -234,18 +234,18 @@ Since these traversals are frequently needed SeqAn provides special iterators wh
We want to construct the suffix tree of the string "abracadabra" and output the substrings represented by tree nodes in preorder dfs.
In order to do so, we create the string "abracadabra" and an index specialized with the type of this string.
-.. includefrags:: demos/tutorial/index_iterators/index_preorder.cpp
+.. includefrags:: demos/tutorial/index/index_preorder.cpp
:fragment: includes
The :dox:`StringTreeConcept#Iterator` metafunction expects two arguments, the type of the container to be iterated and a specialization tag, as described earlier.
In this example we chose a :dox:`TopDownHistoryIterator TopDown History Iterator` whose signature in the second template argument is ``TopDown< ParentLinks<Preorder> >``.
-.. includefrags:: demos/tutorial/index_iterators/index_preorder.cpp
+.. includefrags:: demos/tutorial/index/index_preorder.cpp
:fragment: initialization
As all DFS suffix tree iterators implement the :dox:`VSTreeIterator VSTree Iterator`, they can be used via :dox:`VSTreeIterator#goNext`, :dox:`VSTreeIterator#atEnd`, etc.
-.. includefrags:: demos/tutorial/index_iterators/index_preorder.cpp
+.. includefrags:: demos/tutorial/index/index_preorder.cpp
:fragment: iteration
Program output:
@@ -306,20 +306,20 @@ Assignment 4
This could also be done by using :dox:`StringConcept#resize` and then assigning the members with ``operator[]``.
The first template argument of the index class has to be adapted and is now a StringSet.
- .. includefrags:: demos/tutorial/index_iterators/index_assignment1.cpp
+ .. includefrags:: demos/tutorial/index/index_assignment1.cpp
:fragment: initialization
To switch to postorder DFS we have two change the specialization tag of ``ParentLinks`` from ``Preorder`` to ``Postorder``.
Please note that the :dox:`TopDownHistoryIterator` always starts in the root node, which is the last postorder DFS node.
Therefore, the iterator has to be set explicitly to the first DFS node via :dox:`VSTreeIterator#goBegin`.
- .. includefrags:: demos/tutorial/index_iterators/index_assignment1.cpp
+ .. includefrags:: demos/tutorial/index/index_assignment1.cpp
:fragment: iteration1
Alternatively to a :dox:`TopDownHistoryIterator` you also could have used a :dox:`BottomUpIterator` with the same result.
The BottomUp Iterator automatically starts in the first DFS node as it supports no random access.
- .. includefrags:: demos/tutorial/index_iterators/index_assignment1.cpp
+ .. includefrags:: demos/tutorial/index/index_assignment1.cpp
:fragment: iteration2
Program output:
@@ -401,7 +401,7 @@ Assignment 5
Again, we start to create a :dox:`StringSet` of :dox:`CharString` and append the 2 strings.
- .. includefrags:: demos/tutorial/index_iterators/index_assignment2.cpp
+ .. includefrags:: demos/tutorial/index/index_assignment2.cpp
:fragment: initialization
After that we simply use the predefined iterator for searching MUMs, the :dox:`MumsIterator`.
@@ -410,7 +410,7 @@ Assignment 5
The iterator will halt in every node that is a MUM of the minimum length.
The corresponding match is the node's :dox:`VSTreeIterator#representative`.
- .. includefrags:: demos/tutorial/index_iterators/index_assignment2.cpp
+ .. includefrags:: demos/tutorial/index/index_assignment2.cpp
:fragment: iteration
Program output:
@@ -464,7 +464,7 @@ It is recommended to call :dox:`StringTreeConcept#resizeVertexMap` prior to ever
The following example iterates over all nodes in preorder dfs and recursively assigns the node depth to each node.
First we create a :dox:`String` of ``int`` to store the node depth for each suffix tree node.
-.. includefrags:: demos/tutorial/index_iterators/index_property_maps.cpp
+.. includefrags:: demos/tutorial/index/index_property_maps.cpp
:fragment: initialization
The main loop iterates over all nodes in preorder DFS, i.e. parents are visited prior children.
@@ -472,12 +472,12 @@ The node depth for the root node is 0 and for all other nodes it is the parent n
The functions :dox:`VSTreeIterator#assignProperty`, :dox:`VSTreeIterator#getProperty` and :dox:`VSTreeIterator#property` must be called with a :dox:`StringTreeConcept#VertexDescriptor`.
The vertex descriptor of the iterator node is returned by :dox:`VSTreeIterator#value` and the descriptor of the parent node is returned by :dox:`TopDownIterator#nodeUp`.
-.. includefrags:: demos/tutorial/index_iterators/index_property_maps.cpp
+.. includefrags:: demos/tutorial/index/index_property_maps.cpp
:fragment: iteration
At the end we again iterate over all nodes and output the calculated node depth.
-.. includefrags:: demos/tutorial/index_iterators/index_property_maps.cpp
+.. includefrags:: demos/tutorial/index/index_property_maps.cpp
:fragment: output
Program output:
diff --git a/manual/source/Tutorial/IndexQGram.rst b/manual/source/Tutorial/IndexQGram.rst
new file mode 100644
index 0000000..60ebdc5
--- /dev/null
+++ b/manual/source/Tutorial/IndexQGram.rst
@@ -0,0 +1,217 @@
+.. sidebar:: ToC
+
+ .. contents::
+
+
+.. _tutorial-q-gram-index:
+
+Q-gram Index
+------------
+
+Learning Objective
+ You will know the features of the q-gram Index, how it can be used for searching and how to access the different fibres.
+
+Difficulty
+ Average
+
+Duration
+ 1 h
+
+Prerequisites
+ :ref:`tutorial-sequences`, :ref:`tutorial-iterators`
+
+The Q-gram Index
+~~~~~~~~~~~~~~~~
+
+A q-gram index can be used to efficiently retrieve all occurrences of a certain q-gram in the text.
+It consists of various tables, called fibres (see :ref:`how-to-access-index-fibres`), to retrieve q-gram positions, q-gram counts, etc.
+However, it has no support for suffix tree iterators.
+A q-gram index must be specialized with a :dox:`Shape` type.
+A :dox:`Shape` defines q, the number of characters in a q-gram and possibly gaps between these characters.
+There are different specializations of :dox:`Shape` available:
+
++-----------------------+--------------------+----------------------+
+| Specialization | Modifiable | Number of Gaps |
++=======================+====================+======================+
+| :dox:`UngappedShape` | \- | 0 |
++-----------------------+--------------------+----------------------+
+| :dox:`SimpleShape` | \+ | 0 |
++-----------------------+--------------------+----------------------+
+| :dox:`OneGappedShape` | \+ | 0/1 |
++-----------------------+--------------------+----------------------+
+| :dox:`GappedShape` | \- | any |
++-----------------------+--------------------+----------------------+
+| :dox:`GenericShape` | \+ | any |
++-----------------------+--------------------+----------------------+
+
+* \- *fixed at compile time*, \+ *can be changed at runtime*
+
+Each shape evaluates a gapped or ungapped sequence of q characters to a hash value by the Functions :dox:`Shape#hash`, :dox:`Shape#hashNext`, etc.
+For example, the shape ``1101`` represents a 3-gram with one gap of length 1.
+This shape overlayed with the :dox:`Dna` text ``"GATTACA"`` at the third position corresponds to ``"TT-C"``.
+The function :dox:`Shape#hash` converts this 3-gram into :math:`61 = (\mathbf{3} \cdot 4 + \mathbf{3}) \cdot 4 + 1`.
+4 is the alphabet size in this example (see :dox:`FiniteOrderedAlphabetConcept#ValueSize`).
+
+With :dox:`Shape#hash` and :dox:`Shape#hash hashNext`, we can compute the hash values of arbitrary / adjacent q-grams and a loop that outputs the hash values of all overlapping ungapped 3-grams could look as follows:
+
+.. includefrags:: demos/tutorial/index/index_qgram_hash.cpp
+ :fragment: hash_loop1
+
+Note that the shape not only stores the length and gaps of a q-gram shape but also stores the hash value returned by the last hash/hashNext call.
+This hash value can be retrieved by calling :dox:`Shape#value` on the shape.
+However, one drawback of the example loop above is that the first hash value must be computed with :dox:`Shape#hash` while the hash values of the following overlapping q-grams can more efficiently be computed by :dox:`Shape#hashNext`.
+This complicates the structure of algorithms that need to iterate all hash values, as they have to handle this first hash differently.
+As a remedy, the :dox:`Shape#hashInit` function can be used first and then :dox:`Shape#hashNext` on the first and all following text positions in the same way:
+
+.. includefrags:: demos/tutorial/index/index_qgram_hash.cpp
+ :fragment: hash_loop2
+
+The q-gram index offers different functions to search or count occurrences of q-grams in an indexed text, see :dox:`IndexQGram#getOccurrences`, :dox:`IndexQGram#countOccurrences`.
+A q-gram index over a :dox:`StringSet` stores occurrence positions in the same way as the ESA index and in the same fibre (FibreSA).
+If only the number of q-grams per sequence are needed the QGramCounts and QGramCountsDir fibres can be used.
+They store pairs ``(seqNo, count)``, ``count``>0, for each q-gram that occurs ``counts`` times in sequence number ``seqNo``.
+
+To efficiently retrieve all occurrence positions or all pairs ``(seqNo, count)`` for a given q-gram, these positions or pairs are stored in contiguous blocks (in QGramSA, QGramCounts fibres), called buckets.
+The begin position of bucket i is stored in directory fibres (QGramDir, QGramCountsDir) at position i, the end position is the begin positions of the bucket i+1.
+The default implementation of the :dox:`IndexQGram` index maps q-gram hash values 1-to-1 to bucket numbers.
+For large q or large alphabets the :dox:`OpenAddressingQGramIndex Open Adressing QGram Index` can be more appropriate as its directories are additionally bound by the text length.
+This is realized by a non-trivial mapping from q-gram hashes to bucket numbers that requires an additional fibre (QGramBucketMap).
+
+For more details on q-gram index fibres see :ref:`how-to-access-index-fibres` or :dox:`QGramIndexFibres QGram Index Fibres`.
+
+Example
+~~~~~~~
+
+We want to construct the q-gram index of the string ``"CATGATTACATA"`` and output the occurrences of the ungapped 3-gram ``"CAT"``.
+As 3 is fixed at compile-time and the shape has no gaps we can use a :dox:`UngappedShape` which is the first template argument of :dox:`IndexQGram`, the second template argument of :dox:`Index`.
+Next we create the string ``"CATGATTACATA"`` and specialize the first index template argument with the type of this string.
+The string can be given to the index constructor.
+
+.. includefrags:: demos/tutorial/index/index_qgram.cpp
+ :fragment: initialization
+
+To get all occurrences of a q-gram, we first have to hash it with a shape of the same type as the index shape (we can even use the index shape returned by :dox:`IndexQGram#indexShape`).
+The hash value returned by :dox:`Shape#hash` or :dox:`Shape#hashNext` is also stored in the shape and is used by the function :dox:`IndexQGram#getOccurrences` to retrieve all occurrences of our 3-gram.
+
+.. includefrags:: demos/tutorial/index/index_qgram.cpp
+ :fragment: output
+
+Program output:
+
+.. code-block:: console
+
+ 0
+ 8
+
+Assignment 1
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Write a program that outputs all occurrences of the gapped q-gram "AT-A" in "CATGATTACATA".
+
+ Solution
+ .. container:: foldable
+
+ Before we can create a :dox:`DnaString` index of "CATGATTACATA", we have to choose an appropriate :dox:`Shape`.
+ Because our shape ``1101`` is known at compile-time and contains only one gap we could choose :dox:`OneGappedShape`, :dox:`GappedShape`, or :dox:`GenericShape` (see the commented-out code).
+ Although the :dox:`GenericShape` could be used for every possible shape, it is a good idea to choose a :dox:`Shape` with restrictions as its :dox:`Shape#hash` functions are more efficient in general.
+
+ .. includefrags:: demos/tutorial/index/index_assignment5.cpp
+ :fragment: initialization
+
+ Please note that the :dox:`Shape` object that corresponds to the :dox:`IndexQGram` index is empty initially and has to be set by :dox:`Shape#stringToShape` or :dox:`Shape#resize`.
+ This initialization is not necessary for :dox:`Shape` that are defined at compile-time, i.e. :dox:`UngappedShape` and :dox:`GappedShape`.
+ To search for "AT-A" we first have to hash it with the index shape or any other :dox:`Shape` with the same bitmap.
+ The we can use :dox:`IndexQGram#getOccurrences` to output all matches.
+
+ .. includefrags:: demos/tutorial/index/index_assignment5.cpp
+ :fragment: output
+
+ .. tip::
+
+ Instead of ``length(getOccurrences(...))`` we could have used :dox:`IndexQGram#countOccurrences`.
+ But beware that :dox:`IndexQGram#countOccurrences` requires only the ``QGram_Dir`` fibre, whereas :dox:`IndexQGram#getOccurrences` requires both ``QGram_Dir`` and ``QGram_SA``, see :ref:`how-to-access-index-fibres`.
+ Because ``QGram_SA`` can be much more efficiently constructed during the construction of ``QGram_Dir``, ``QGram_Dir`` would be constructed twice.
+
+ Program output:
+
+ .. code-block:: console
+
+ 1
+ 4
+
+Assignment 2
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Create and output a matrix M where M(i,j) is the number of common ungapped 5-grams between sequence i and sequence j for 3 random :dox:`Dna` sequences, each not longer than 200 characters.
+ Optional: Run the matrix calculation twice, once for an :dox:`IndexQGram` and once for an :dox:`OpenAddressingQGramIndex Open Adressing QGram Index` and output the directory sizes (QGram_Dir, QGram_CountsDir fibre).
+
+ Hint
+ A common q-gram that occurs :math:`a` times in one and :math:`b` times in the other sequence counts for :math:`\min(a,b)`.
+
+ Solution
+ .. container:: foldable
+
+ For generating random numbers we use the :dox:`MersenneTwisterRng` which is a specialization of the random number generator class :dox:`Rng`.
+ The random numbers returned by :dox:`Rng#pickRandomNumber` are arbitrary ``unsigned int`` values which we downscale to values between 0 and 3 and convert into :dox:`Dna` characters.
+ The 3 generated strings are of random length and appended to a :dox:`StringSet`.
+ The main algorithmus is encapsulated in a template function ``qgramCounting`` to easily switch between the two :dox:`IndexQGram` specializations.
+
+ .. includefrags:: demos/tutorial/index/index_assignment6.cpp
+ :fragment: initialization
+
+ The main function expects the :dox:`StringSet` and the :dox:`Index` specialization as a tag.
+ First, we define lots of types we need to iterate and access the fibres directly.
+ We then notify the index about the fibres we require.
+ For storing the common q-grams we use a 2-dimensional :dox:`Matrix` object whose lengths have to be set with ``setLength`` for each dimension.
+ The matrix is initialized with zeros by :dox:`Matrix#resize`.
+
+ .. includefrags:: demos/tutorial/index/index_assignment6.cpp
+ :fragment: matrix_init
+
+ The main part of the function iterates over the CountsDir fibre.
+ Each entry in this directory represents a q-gram bucket, a contiguous interval in the Counts fibre storing for every sequence the q-gram occurs in the number of occurrences in pairs (seqNo,count).
+ The interval begin of each bucket is stored in the directory and the interval end is the begin of the next bucket.
+ So the inner loops iterate over all non-empty buckets and two pairs (seqNo1,count1) and (seqNo2,count2) indicate that seqNo1 and seqNo2 have a common q-gram.
+ At the end the matrix can simply be output by shifting it to the ``cout`` stream.
+
+ .. includefrags:: demos/tutorial/index/index_assignment6.cpp
+ :fragment: matrix_calculation
+
+ Please note that the :dox:`OpenAddressingQGramIndex open addressing` q-gram index directories are smaller than the :dox:`IndexQGram` index directories.
+
+ Program output:
+
+ .. code-block:: console
+
+ >Seq0
+ TCATTTTCTCGATGAAAGCGTTGACCCCACATATCGTTAGTACTCTTGTACCCT
+ >Seq1
+ TGATTGTGTAGAAACCGAACTACGGTACCTCCTGTTGGTAGTCACGATAGATTATAAAAGTATGTTCCCACCCTATCGACGAGACTGGCA
+ >Seq2
+ CCTAGGTGTTTGCGGTGTTGGTACGTGCG
+
+ Length of the CountsDir fibre: 1025
+
+ Common 5-mers for Seq_i, Seq_j
+ 50 4 0
+ 0 86 5
+ 0 0 25
+
+ Length of the CountsDir fibre: 259
+
+ Common 5-mers for Seq_i, Seq_j
+ 50 4 0
+ 0 86 5
+ 0 0 25
diff --git a/manual/source/Tutorial/IndexedFastaIO.rst b/manual/source/Tutorial/IndexedFastaIO.rst
index 18339a1..cd5984d 100644
--- a/manual/source/Tutorial/IndexedFastaIO.rst
+++ b/manual/source/Tutorial/IndexedFastaIO.rst
@@ -33,14 +33,14 @@ The module ``<seqan/seq_io.h>`` allows to create and read such ``.fai`` index fi
FASTA/FASTQ Meta Data and Sequence Ids
- FASTA and FASTQ files have one metadata record for each sequence.
+ FASTA and FASTQ files have one meta data record for each sequence.
This usually contains the sequence name but sometimes a lot of additional information is stored.
- There is no consensus for the metadata.
+ There is no consensus for the meta data.
- However, it is common to store the sequence identifier (*id*) at the beginning of the metadata field before the first space.
- The id is unique to the whole file and often identifies the associated sequence uniquely in a database (see section Sequence Identifiers on the `Wikipedia FASTA format <http://en.wikipedia.org/wiki/FASTA_format>`_ page).
+ It is common, however, to store the identifier (*id*) of the sequence at the beginning of the meta data field before the first space.
+ The id is unique to the whole file and often identifies the associate sequence uniquely in a data base (see section Sequence Identifiers on the `Wikipedia FASTA format <http://en.wikipedia.org/wiki/FASTA_format>`_ page).
- While not documented anywhere explicitely, **only the characters up to the first space are used as identifiers** by widely used tools such as `BWA <http://bio-bwa.sourceforge.net/>`_.
+ While not documented anywhere explicitely, **only the characters up to the first space are used as the identifiers** by widely used tools such as `BWA <http://bio-bwa.sourceforge.net/>`_.
Only the identifier is carried over into files generated from the input files (BWA uses the sequence id from the genome FASTA to identify the contig/chromosome and the read id as the read name in the SAM output).
How Does It Work?
diff --git a/manual/source/Tutorial/Indices.rst b/manual/source/Tutorial/Indices.rst
index f2c68e2..c6afe90 100644
--- a/manual/source/Tutorial/Indices.rst
+++ b/manual/source/Tutorial/Indices.rst
@@ -66,7 +66,7 @@ In contrast, the next code snipped creates a FM index over a set of amino acid s
appendValue(protein, "GKTVXL");
appendValue(protein, "XLZ");
- Index<StringSet<String<AminoAcid> >, FMIndex<> > fmIndex(protein);
+ Index<StringSet<String<AminoAcid> >, FMIndex> fmIndex(protein);
Assignment 1
""""""""""""
@@ -100,7 +100,7 @@ Assignment 1
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/indices/assignment_1.cpp
+ .. includefrags:: demos/tutorial/index/indices_assignment_1.cpp
Index Based Pattern Search (Strings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -202,7 +202,7 @@ Assignment 2
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/indices/assignment_2.cpp
+ .. includefrags:: demos/tutorial/index/indices_assignment_2.cpp
You might have noticed that we only applied the :dox:`FMIndex` and :dox:`IndexEsa` in the examples.
The reason for this is that even though everything stated so far is true for the other indices as well, :dox:`IndexWotd` and :dox:`IndexDfi` are more usefull when used with iterators as explained in the tutorial :ref:`tutorial-index-iterators` and the :dox:`IndexQGram` uses :dox:`Shape Shapes` which is also explained in another tutorial.
@@ -304,7 +304,7 @@ In order to change the size type of the suffix array entry we simply have to ove
struct SAValue<String<Dna> >
{
typedef unsigned Type;
- };
+ }
If your text is a :dox:`StringSet`, then :dox:`SAValue` will return a :dox:`Pair` that can be overloaded in the same way.
@@ -314,7 +314,7 @@ If your text is a :dox:`StringSet`, then :dox:`SAValue` will return a :dox:`Pair
struct SAValue<StringSet<String<Dna> > >
{
typedef Pair<unsigned, unsigned> Type;
- };
+ }
The first type of the pair is used as the type for the index of a string in the string set.
So if you only have a few strings you could save even more memory like this.
@@ -325,7 +325,7 @@ So if you only have a few strings you could save even more memory like this.
struct SAValue<StringSet<String<Dna> > >
{
typedef Pair<unsigned char, unsigned> Type;
- };
+ }
FMIndex Fibres
diff --git a/manual/source/Tutorial/InputOutputOverview.rst b/manual/source/Tutorial/InputOutputOverview.rst
new file mode 100644
index 0000000..5f9e758
--- /dev/null
+++ b/manual/source/Tutorial/InputOutputOverview.rst
@@ -0,0 +1,227 @@
+.. sidebar:: ToC
+
+ .. contents::
+
+
+.. _tutorial-input-output-overview:
+
+File I/O Overview
+=================
+
+Learning Objective
+ This article will give you an overview of the formatted file I/O in SeqAn.
+
+Difficulty
+ Basic
+
+Duration
+ 30 min
+
+Prerequisites
+ :ref:`tutorial-sequences`
+
+
+Overview
+--------
+
+Most file formats in bioinformatics are structured as lists of records.
+Often, they start out with a header that itself contains different header records.
+For example, the Binary Sequence Alignment/Map (SAM/BAM) format starts with an header that lists all contigs of the reference sequence.
+The BAM header is followed by a list of BAM alignment records that contain query sequences aligned to some reference contig.
+
+Formatted Files
+"""""""""""""""
+
+SeqAn allows to read or write record-structured files through two types of classes: :dox:`FormattedFileIn` and :dox:`FormattedFileOut`.
+Classes of type :dox:`FormattedFileIn` allow to read files, whereas classes of type :dox:`FormattedFileOut` allow to write files.
+Note how these types of classes **do not allow to read and write the same file at the same time**.
+
+These types of classes provide the following I/O operations on formatted files:
+
+#. open a file given its filename or attach to an existing stream like `std::cin` or `std::cout`;
+#. guess the file format from the file content or filename extension;
+#. access compressed or uncompressed files transparently.
+
+
+.. warning::
+
+ Access to compressed files relies on external libraries.
+ For instance, you need to have zlib installed for reading ``.gz`` files and libbz2 for reading ``.bz2`` files.
+ If you are using Linux or OS X and you followed the :ref:`tutorial-getting-started` tutorial closely, then you should have already installed the necessary libraries.
+ On Windows, you will need to follow :ref:`how-to-install-contribs-on-windows` to get the necessary libraries.
+
+ You can check whether you have installed these libraries by running CMake again.
+ Simply call ``cmake .`` in your build directory.
+ At the end of the output, there will be a section "SeqAn Features".
+ If you can read ``ZLIB - FOUND`` and ``BZIP2 - FOUND`` then you can use zlib and libbz2 in your programs.
+
+
+Basic I/O
+---------
+
+This tutorial shows the basic functionalities provided by any class of type :dox:`FormattedFileIn` or :dox:`FormattedFileOut`.
+In particular, this tutorial adopts the classes :dox:`BamFileIn` and :dox:`BamFileOut` as concrete types.
+The class :dox:`BamFileIn` allows to read files in SAM or BAM format, whereas the class :dox:`BamFileOut` allows to write them.
+Nonetheless, **these functionalities are independent from the particular file format** and thus valid for all record-based file formats supported by SeqAn.
+
+The demo application shown here is a simple BAM to SAM converter.
+
+
+Includes
+""""""""
+
+Support for a specific format comes by including a specific header file.
+In this case, we include the BAM header file:
+
+.. includefrags:: demos/tutorial/base_io/example1.cpp
+ :fragment: include
+
+
+Opening and Closing Files
+"""""""""""""""""""""""""
+
+Classes of type :dox:`FormattedFileIn` and :dox:`FormattedFileOut` allow to :dox:`FormattedFile#open` and :dox:`FormattedFile#close` files.
+
+A file can be opened by passing the filename to the constructor:
+
+.. includefrags:: demos/tutorial/base_io/example1.cpp
+ :fragment: ctor
+
+Alternatively, a file can be opened after construction by calling :dox:`FormattedFile#open`:
+
+.. includefrags:: demos/tutorial/base_io/example1.cpp
+ :fragment: open
+
+Noe that any file is closed *automatically* whenever the :dox:`FormattedFileIn` or :dox:`FormattedFileOut` object goes out of scope.
+Eventually, a file can be closed *manually* by calling :dox:`FormattedFile#close`.
+
+Accessing the Header
+""""""""""""""""""""
+
+To access the header, we need an object representing the format-specific header.
+In this case, we use an object of type :dox:`BamHeader`.
+The content of this object can be ignored for now, it will be covered in the :ref:`tutorial-sam-bam-io` tutorial.
+
+.. includefrags:: demos/tutorial/base_io/example1.cpp
+ :fragment: header
+
+Function :dox:`FormattedFileIn#readHeader` reads the header from the input SAM file and :dox:`FormattedFileOut#writeHeader` writes it to the BAM output file.
+
+Accessing the Records
+"""""""""""""""""""""
+
+Again, to access records, we need an object representing format-specific information.
+In this case, we use an object of type :dox:`BamAlignmentRecord`.
+Each call to :dox:`FormattedFileIn#readRecord` reads one record from the SAM input file and moves the :dox:`BamFileIn` forward.
+Each call to :dox:`FormattedFileOut#writeRecord` writes the record just read to the BAM output files.
+We check the end of the input file by calling :dox:`FormattedFile#atEnd`.
+
+.. includefrags:: demos/tutorial/base_io/example1.cpp
+ :fragment: records
+
+Our small SAM to BAM conversion demo is ready.
+The tool still lacks error handling, reading from standard input and writing to standard output.
+You are now going to add these features.
+
+Error Handling
+--------------
+
+We distinguish between two types of errors: *low-level* file I/O errors and *high-level* file format errors.
+Possible file I/O errors can affect both input and output files.
+Example of errors are: the file permissions forbid a certain operations, the file does not exist, there is a disk reading error, a file being read gets deleted while we are reading from it, or there is a physical error in the hard disk.
+Conversely, file format errors can only affect input files: such errors arise whenever the content of the input file is incorrect or damaged.
+Error handling in SeqAn is implemented by means of exceptions.
+
+I/O Errors
+""""""""""
+
+All :dox:`FormattedFile#FormattedFile FormattedFileIn` and :dox:`FormattedFile#FormattedFile FormattedFileOut` constructors and functions throw exceptions of type :dox:`IOError` to signal *low-level* file I/O errors.
+Therefore, it is sufficient to catch these exceptions to handle I/O errors properly.
+
+There is only one exception to this rule.
+Function :dox:`FormattedFile#open` returns a ``bool`` to indicate whether the file was opened successfully or not.
+
+
+Assignment 1
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Improve the program above to detect file I/O errors.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/base_io/solution1.cpp
+
+
+Format Errors
+"""""""""""""
+
+Classes of types :dox:`FormattedFileIn` throw exceptions of type :dox:`ParseError` to signal *high-level* input file format errors.
+
+
+Assignment 2
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Improve the program above to detect file format errors.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/base_io/solution2.cpp
+
+
+Streams
+-------
+
+The :dox:`FormattedFile#FormattedFile FormattedFileIn` and :dox:`FormattedFile#FormattedFile FormattedFileOut` constructors accept not only filenames, but also standard C++ streams, or any other class implementing the :dox:`StreamConcept Stream` concept.
+For instance, you can pass `std::cin` to any :dox:`FormattedFile#FormattedFile FormattedFileIn constructor` and `std::cout` to any :dox:`FormattedFile#FormattedFile FormattedFileOut constructor`.
+
+.. note::
+
+ When writing to `std::cout`, classes of type :dox:`FormattedFileOut` cannot guess the file format from the filename extension.
+ Therefore, the file format has to be specified explicitly by providing a tag, e.g. :dox:`FileFormats#Sam` or :dox:`FileFormats#Bam`.
+
+Assignment 3
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Improve the program above to read from standard input and write to standard output.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/base_io/solution3.cpp
+
+
+Next Steps
+----------
+
+If you want, you can now have a look at the API documentation of the :dox:`FormattedFile` class.
+
+You can now read the tutorials for **already supported file formats**:
+
+* :ref:`tutorial-sequence-io`
+* :ref:`tutorial-sam-bam-io`
+* :ref:`tutorial-vcf-io`
+* :ref:`tutorial-bed-io`
+* :ref:`tutorial-gff-and-gtf-io`
+
+.. COMMENT or, if you want to learn how to develop **support for new file formats** then read the following article:
+ * :ref:`tutorial-custom-io`
diff --git a/manual/source/Tutorial/Iterators.rst b/manual/source/Tutorial/Iterators.rst
index 0b69fe3..3ae1a4b 100644
--- a/manual/source/Tutorial/Iterators.rst
+++ b/manual/source/Tutorial/Iterators.rst
@@ -174,7 +174,7 @@ Assignment 1
.. container:: foldable
- .. includefrags:: demos/tutorial/iterators/assignment_1_solution.cpp
+ .. includefrags:: demos/tutorial/iterators/iterators_assignment_1_solution.cpp
Assignment 2
^^^^^^^^^^^^
@@ -193,7 +193,7 @@ Assignment 2
.. container:: foldable
- .. includefrags:: demos/tutorial/iterators/assignment_2_solution.cpp
+ .. includefrags:: demos/tutorial/iterators/iterators_assignment_2_solution.cpp
Workshop Assignment 3
^^^^^^^^^^^^^^^^^^^^^
@@ -289,7 +289,7 @@ Workshop Assignment 3
.. container:: foldable
- .. includefrags:: demos/tutorial/iterators/assignment_3_workshop_solution.cpp
+ .. includefrags:: demos/tutorial/iterators/iterators_assignment_3_workshop_solution.cpp
Workshop Assignment 4
^^^^^^^^^^^^^^^^^^^^^
@@ -300,11 +300,11 @@ Workshop Assignment 4
Review
Objective
- Now, use rooted iterators in the example from Workshop Assignment 3.
+ Now, use rooted iterators in the example from Workshop ASsignment 3.
Solution
Click **more...** to see the solution.
.. container:: foldable
- .. includefrags:: demos/tutorial/iterators/assignment_4_workshop_solution.cpp
+ .. includefrags:: demos/tutorial/iterators/iterators_assignment_4_workshop_solution.cpp
diff --git a/manual/source/Tutorial/JournalSet.rst b/manual/source/Tutorial/JournalSet.rst
new file mode 100644
index 0000000..293effd
--- /dev/null
+++ b/manual/source/Tutorial/JournalSet.rst
@@ -0,0 +1,668 @@
+.. sidebar:: ToC
+
+ .. contents::
+
+
+.. _tutorial-data-journaling:
+
+Journaled Set
+=============
+
+Learning Objective
+ This tutorial introduces you to the new data structures Journaled Set and Journaled String.
+ You will learn how to use them and how to exploit these data structures for an efficient analysis, while implementing a native online search.
+
+Difficulty
+ Advanced
+
+Duration
+ 2 h
+
+Prerequisites
+ :ref:`tutorial-sequences`, :ref:`tutorial-string-sets`, :ref:`tutorial-iterators`
+
+A typical task in bioinformatics is to find patterns in biological sequences e.g. transcription factors, or to examine different biological traits and the effects of modifications on such traits.
+With the current advances in sequencing technologies, sequences of whole populations have been made available.
+But the time for searching in all these sequences is proportional to the number of sequences searched.
+That's why it is important to find novel strategies to cope with the deluge of sequencing data.
+Since, many biological problems often involve the analysis of sequences of the same species, one effective strategy would be to exploit the similarities of such sequences.
+
+For this special purpose we provide two data structures that are designed to improve the algorithmic tasks.
+The first one is the :dox:`JournaledString` and the second is the :dox:`JournaledSet`.
+
+In this tutorial, we will introduce you to both data structures and implement a simple online search step by step.
+
+Journaled String
+----------------
+
+The :dox:`JournaledString` data structure behaves like a normal :dox:`String` in SeqAn, except that it is composed of two data structures.
+
+#. The first data structure is a :dox:`Holder` which stores a sequence.
+#. The second data structure stores modifications that are made to this particular sequence using a **journal** (see `Journaling Filesystems <http://en.wikipedia.org/wiki/Journaling_file_system>`_ for more information).
+ This journal contains a list of deletions and insertions.
+ The inserted characters are stored in an additional **insertion buffer**.
+
+The advantage of this data structure lies in representing a String as a "patch" to another String.
+The journaled data structure can be modified without loosing the original context.
+We want to show you how to work with these data structures so you can build your own algorithms based on this.
+For this reason we keep the applicational background simple and implement an native online-search algorithm by which we examine different properties of the data structures.
+
+Before we start implementing our online search algorithm, we show you how to work with the Journaled String to learn the basic principles.
+To get access to the Journaled String implementation you have to include the ``<seqan/sequence_journaled.h>`` header file.
+Note that you will need the ``<seqan/file.h>`` too in order to print the sequences.
+
+.. includefrags:: demos/tutorial/data_journaling/example_journal_string_basic.cpp
+ :fragment: main
+
+In the next step we define the Journaled String type.
+A Journaled String is a specialization of the String class and is defined as ``String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> >``.
+The specialization takes two parameters: (1) ``TValue`` defines the alphabet type used for the Journaled String and (2) ``Journaled<>`` selects the Journaled String specialization of the String class.
+
+``Journaled<>`` is further specialized with
+
+* ``THostSpec`` selects the specialization of the underlying host sequence (``Alloc<>`` for [dox:AllocString Alloc String),
+* ``TJournaleSpec`` selects the used implementation to manage the journaled differences (here: ``SortedArray``), and
+* ``TBufferSpec`` selects the used specialization for the internally managed insertion buffer (here: ``Alloc<>`` as well).
+
+In our scenario we use a ``char`` alphabet and [dox:AllocString Alloc String for the host string and the insertion buffer.
+Additionally, we use a ``Sorted Array`` as the model to manage the recorded differences.
+
+We use the metafunction :dox:`HostedConcept#Host` to get the type of the underlying host string used for the Journaled String.
+
+.. includefrags:: demos/tutorial/data_journaling/example_journal_string_basic.cpp
+ :fragment: typedef
+
+Now we can define the variables holding data structures.
+First, we construct our host sequence and after that we construct the Journaled String.
+Then, we set the host sequence using the function :dox:`JournaledString#setHost`.
+Afterwards, we examine the data structure in more detail and print the host sequence the constructed journaled sequence and the nodes of it.
+
+.. includefrags:: demos/tutorial/data_journaling/example_journal_string_basic.cpp
+ :fragment: init
+
+.. tip::
+
+ The Journal
+
+ A node in the Journaled String represents either a part of the host sequence or a part of the insertion buffer.
+ The type of a node is distinguished by the member variable **segmentSource** and can be of value ``SOURCE_ORIGINAL`` to refere to a part in the host or ``SOURCE_PATCH`` to refere to a part in the insertion buffer.
+ A node further consists of three variables which specify the **virtual position**, the **physical position** and the **length** of this part.
+ The **virtual position** gives the relative position of the Journaled String after all modifications before this position have been "virtually" applied.
+ The **physical position** gives the absolute position where this part of the journal maps to either the host sequence or the insertion buffer.
+
+This is followed by modifying our Journaled String.
+We insert the string ``"modified"`` at position ``7`` and delete the suffix ``"sequence"`` at position ``19``.
+Note that position ``19`` refers to the string after the insertion of ``"modified"`` at position ``7``.
+Again we print the host, the journaled sequence and the nodes that represent the modifications to see how our changes affect the host and the journaled sequence.
+
+.. includefrags:: demos/tutorial/data_journaling/example_journal_string_basic.cpp
+ :fragment: modification
+
+All of this is followed by calling :dox:`JournaledString#flatten` on our journeld string.
+This call applies all journaled changes to the host sequence.
+Again we print the sequences to see the effects.
+
+.. includefrags:: demos/tutorial/data_journaling/example_journal_string_basic.cpp
+ :fragment: flatten
+
+Here is the output of our small program.
+
+.. code-block:: console
+
+ After creating the Journaled String:
+ Host: thisisahostsequence
+ Journal: thisisahostsequence
+ Nodes: JournalEntries({segmentSource=1, virtualPosition=0, physicalPosition=0, length=19})
+
+ After modifying the Journaled String:
+ Host: thisisahostsequence
+ Journal: thisisamodifiedhost
+ Nodes: JournalEntries({segmentSource=1, virtualPosition=0, physicalPosition=0, length=7}, {segmentSource=2, virtualPosition=7, physicalPosition=0, length=8}, {segmentSource=1, virtualPosition=15, physicalPosition=7, length=4})
+
+ After flatten the Journaled String:
+ Host: thisisamodifiedhost
+ Journal: thisisamodifiedhost
+ Nodes: JournalEntries({segmentSource=1, virtualPosition=0, physicalPosition=0, length=19})
+
+.. important::
+
+ Be careful when using the :dox:`JournaledString#flatten` function as it modifies the underlying host sequence.
+ This might affect other journaled sequences that share the same host sequence.
+ This becomes important especially when working with Journal Sets where a whole set of sequences is journaled to the same reference.
+
+Journaled Set
+-------------
+
+The :dox:`JournaledSet` is a specialization of the :dox:`StringSet` which can be used exactly as such but also provides some additional functions optimized to work with :dox:`JournaledString JournaledStrings`.
+The general interface is equal to the interface of the StringSet.
+But it also provides some interfaces specialized for the use of Journaled Strings.
+One of these interfaces is the :dox:`JournaledSet#join` function which journales a contained Journaled String to the previously set global reference.
+The following code snippet demonstrates the usage of the Journal Set and how to join a sequence to the previously set reference sequence.
+
+As usual we include the necessary headers.
+We need the header ``<seqan/journal_set.h>`` to get access to the Journal Set.
+Then we define a type for journaled sequences.
+After that we define our Journal Set.
+The Journal Set is a specialization of the :dox:`OwnerStringSet Owner` concept of StringSets and is defined as ``StringSet<TJournalString, Owner<JournaledSet> >``.
+
+.. includefrags:: demos/tutorial/data_journaling/example_join.cpp
+ :fragment: main
+
+In the subsequent steps we want to set a reference sequence to the Journal Set and add some sequences to it.
+We can set the reference sequence by using the function :dox:`JournaledSet#setHost`.
+This function stores only a pointer to the given sequence.
+In some cases it might be necessary to copy the reference sequence instead.
+For this purpose you can use the function :dox:`JournaledSet#createHost`.
+
+.. includefrags:: demos/tutorial/data_journaling/example_join.cpp
+ :fragment: init
+
+Just adding sequences to the Journal Set does not automatically journal them to the global reference sequence of the set.
+One can explicitly trigger this process using the function :dox:`JournaledSet#join`.
+This function takes as parameters the Journal Set and the position of the contained Journaled String which is to be journaled to the reference sequence.
+Thus, the programmer is free in the decision which sequence has to be journaled and which not.
+Furthermore, we can use the :dox:`JoinConfig` object to specify the method that shall be used for the journaling process.
+
+.. includefrags:: demos/tutorial/data_journaling/example_join.cpp
+ :fragment: join
+
+.. tip::
+
+ Configuration of the Join Methods
+
+ The :dox:`JoinConfig` object differentiates two methods in general and each method further differs in the used strategy.
+ The two methods are the :dox:`GlobalAlign` and the :dox:`GlobalChain` method.
+ They differ in the approach of computing the alignment which is necessary to construct the journal.
+ The first method uses a global alignment algorithm while the second one uses an anchor approach in which first exact seeds are found using a q-gram index and after that the optimal chain between the identified anchors is computed.
+ For each method the user can specify a different strategy.
+ The first strategy is triggered by using :dox:`JoinStrategiesTags JournaledManhatten`.
+ This means for the the GlobalAlign method, that the complete sequence is inserted and the complete reference is deleted, while for the GlobalChain methods this means that the gaps between the anchors are connected through the Manhatten distance.
+ The second strategy is specified using the :dox:`JoinStrategiesTags JournaledCompact` tag. It computes the most compact form of a journal by menas of memory requirements.
+
+Here is the output of the program.
+
+.. code-block:: console
+
+ Reference: DPKKPRGKMSSYAFFVQTSREEHKKKHPDASVNFSEFSKKCSERWKTMSAKEKGKFEDMAKADKARYEREMKTYIPPKGE
+ Journaled Sequence 0: DPKKPRGKMVNSPPAFFVQTSREEHKKKHPDASVFSKKCSERWKTMSAKEKGKFEDMAKARYEREMKTTYIPKGETYIPPKGE
+ Journaled Sequence 1: DPHHPPKPRGKMVNSPPAFFVQTSREEHKPDASVFSKKCSERRMPNHHTMSAKEKGKFEDMAKARYEREMKTTYIPKGETYIPPKGE
+ Journaled Sequence 2: DPKKPRGKMSSYAFFVQTSREEHKKKHPKKCDEFSKKCSERWKTMSAKEKGKFEDARYEREMKTYIPPKGE
+
+Implementing an Online-Search
+-----------------------------
+
+Now we have all foundations laid down to implement the online-search algorithm.
+Let us begin with the first assignment where we read in some sequences and use the currently learned things about the Journal Set.
+
+Assignment 1
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Review, Application
+
+ Objective
+ Download the fasta file :download:`sequences.fasta <sequences.fasta>` which contains some DNA sequences.
+ Write a method called ``loadAndJoin`` that gets a Journal Set and a stream file pointing to the downloaded fasta file.
+ The method reads in the sequences one after another using SeqAn's :dox:`SeqFileIn`.
+ The first read sequences is set to the reference sequence.
+ All following sequences are first appended to the StringSet and afterwards joined to the StringSet using a global alignment strategy and the most compact form.
+
+ Hints
+ .. container:: foldable
+
+ You can start using the following code snippet. Replace the path of the iostream such that it points to your path and fill in the missing parts ``A``, ``B`` and ``C`` in the function ``loadAndJoin`` (Altogether, you will need 4 lines of code.).
+
+ .. includefrags:: demos/tutorial/data_journaling/example_online_search_assignment1_hint.cpp
+ :fragment: main
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment1.cpp
+ :fragment: main
+
+Now we have loaded and journaled our sequences and we use the minimal possible memory requirements for our sequences.
+Let's continue and implement the exact online-search on the Journal Set.
+For this purpose we write a function called ``searchPattern`` which takes a StringSet of ``String<int>`` which we use to store each hit for each sequence in the Journal Set including the reference sequence.
+First we have to check whether the reference sequence is set.
+If not we abort the search since we cannot guarantee a correct search when the reference is not set.
+We also have to clear our ``hitSet`` to ensure there remain no phantom hits from previous searches.
+Then we resize it to the number of contained Journaled Strings plus an additional space for the global reference sequence.
+
+.. includefrags:: demos/tutorial/data_journaling/example_online_search.cpp
+ :fragment: searchPatternPart1
+
+Before we can search for the pattern in the Journaled Strings we have to find all occurrences in the reference sequence.
+Therefore we call the function ``findPatternInReference`` which takes a ``String<int>`` which we use to store the hits, the global reference and the pattern.
+
+.. includefrags:: demos/tutorial/data_journaling/example_online_search.cpp
+ :fragment: searchPatternPart2
+
+After that we implement the body to search for occurrences in the Journaled Strings.
+Therefore we use ``for``-loop to iterate over all contained sequences and call for each sequence the function ``findPatternInJournalString``.
+The function gets as parameters the corresponding ``String<int>`` from the ``hitSet``, the journaled sequence the pattern and the identified hits in the reference sequence.
+
+.. includefrags:: demos/tutorial/data_journaling/example_online_search.cpp
+ :fragment: searchPatternPart3
+
+So far our program won't compile. We have to first implement the both functions ``findPatternInReference`` and ``findPatternInJournalString``.
+
+Assignment 2
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Implement the function ``findPatternInReference`` using a brute force pattern search algorithm.
+ Store all found hits in the passed ``hits`` variable.
+ Print all occurrences in the end of the ``main`` function.
+
+ Hints
+ .. container:: foldable
+ The following code snippet provides you with the backbone for the search algorithm. Fill in the missing parts ``[A]``, ``[B]``, ``[C]`` and ``[D]``.
+
+ .. includefrags:: demos/tutorial/data_journaling/example_online_search_assignment2_hint.cpp
+ :fragment: findPatternInReferenceHint
+
+ Solution
+ .. container:: foldable
+
+ Here is the solution for this function.
+ Click **more...** below, to see a complete solution of everything we have done so far.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment2.cpp
+ :fragment: findPatternInReference
+
+ .. container:: foldable
+
+ Include the necessary headers.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment2.cpp
+ :fragment: include
+
+ Implementation of the `findPatternInReference` function.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment2.cpp
+ :fragment: findPatternInReference
+
+ Implementation of the `searchPattern` function. Note that we haven't implemented the function `findPatternInJournalString` yet.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment2.cpp
+ :fragment: searchPattern
+
+ Implementation of the `loadAndJoin` function.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment2.cpp
+ :fragment: loadAndJoin
+
+ Implementation of the `main` function.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment2.cpp
+ :fragment: main
+
+ Printing the hits of the reference sequence.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment2.cpp
+ :fragment: printResult
+
+ And here is the result.
+
+ .. code-block:: console
+
+ Search for: GTGGT:
+ Hit in reference at 311: GTGGT 644: GTGGT
+
+We know can search for all occurrences of a pattern in the reference sequence.
+Now we can try to find all occurrences in the journaled sequences.
+Therefore we implement the function ``findPatternInJournalString``.
+Our function gets the variable ``hitsTarget`` which stores the hits found in the JournaledString.
+It gets the search text and the pattern and finally the hits detected in the reference sequence.
+Instead of searching each position in the Journaled String, we only search in areas that are new to the search.
+This involves all inserted parts and all parts where the pattern crosses a border to another node.
+So instead of iterating over each position we iterate over the nodes of the Journaled String.
+To do so we have to determine the type of the data structure that is used by the Journaled String to manage the nodes.
+We can use the metafunction :dox:`JournaledString#JournalType` for this task.
+Afterwards we define an Iterator over the so called ``TJournalEntries`` data structure.
+
+Again we check first whether the pattern fits into our sequence.
+
+.. includefrags:: demos/tutorial/data_journaling/example_online_search.cpp
+ :fragment: findPatternInJournalStringPart1
+
+We then iterate over all nodes beginning from the first until we have reached the node in which the pattern reaches the end of the Journaled Sequence.
+The function findInJournalEntries helps us to find the corresponding node.
+We increment the position of the iterator by one such that it points behind the last element which is included by the search.
+
+.. includefrags:: demos/tutorial/data_journaling/example_online_search.cpp
+ :fragment: findPatternInJournalStringPart2
+
+Now we search in each node until we have reached the end.
+For each node we first check the type of the journaled operation.
+If we are in an "original" node we call the function ``_findInOriginalNode``.
+If we are in a "patch" node we call the function ``_findInPatchNode`` and in the end we call the function ``_searchAtBorder`` which is called for each node type and scans all possible hits at the border of a node.
+
+.. includefrags:: demos/tutorial/data_journaling/example_online_search.cpp
+ :fragment: findPatternInJournalStringPart3
+
+Let us begin with the implementation of the function ``_findInOriginalNode``.
+In this function we exploit the journaling concept such that we can speed up the search algorithm from :math:`\mathcal{O}(p \cdot n)` to :math:`\mathcal{O}(\log_2(k))`, where :math:`p` is the length of the pattern, :math:`n` is the length of the search text, and ``k`` is the number of hits identified in the reference sequence.
+We need at most :math:`\log_2(k)` comparisons to find the first hit which occurred in the reference sequence that also occurs in the current original node.
+
+Assignment 3
+^^^^^^^^^^^^
+
+.. container:: assignment
+
+ Type
+ Transfer
+
+ Objective
+ Implement the function ``_findInOriginalNode``, which identifies all shared hits between the current ``original`` node and the corresponding part in the reference sequence.
+ Note you do not need to scan all positions again.
+ In the end print all occurrences to the console.
+
+ Hints
+ .. container:: foldable
+ The following code snippet provides you with the backbone for this function.
+ Fill in the missing parts ``[A]``, ``[B]``, ``[C]``, ``[D]`` and ``[E]``.
+
+ Use the STL function `std::upper_bound <http://www.cplusplus.com/reference/algorithm/upper_bound/>`_ to conduct a binary search to find the first possible hit from the reference that is also represented by the current node.
+
+ .. includefrags:: demos/tutorial/data_journaling/example_online_search_assignment3_hint.cpp
+ :fragment: findInOriginalNode
+
+ Solution
+ .. container:: foldable
+
+ Here is the solution to this function.
+ Click **more...** below, to see a complete solution of everything we have done so far.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: findInOriginalNode
+
+ .. container:: foldable
+
+ Include the necessary headers.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: include
+
+ We know implement the method to search for hits in an original node.
+ We only need to check if the current node covers a region of the reference in which we've found a hit.
+ We use the function `std::upper_bound <http://www.cplusplus.com/reference/algorithm/upper_bound/>`_ to find the first element that is greater than the current physical position.
+ Since, we've found an upper bound we have to check additionally if there exists a previous hit that lies directly on the physical begin position of our current node.
+ We then include all hits that fit into this current node until we have found the first position where the pattern would cross the border of this node or we have reached the end of the reference hit set.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: findInOriginalNode
+
+ Implementing the backbone to search for a pattern in the reference string.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: findPatternInJournalString
+
+ Implementing the search within the reference sequence.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: findPatternInReference
+
+ Implementing the backbone of the search.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: searchPattern
+
+ Implement the `laodAndJoin` method.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: loadAndJoin
+
+ Implementing the main method.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: main
+
+ Printing the hits of the reference sequence.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: printResultReference
+
+ Printing the hits of the journaled sequences.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment3.cpp
+ :fragment: printResultJournalSequence
+
+ And here is the result.
+
+ .. code-block:: console
+
+ Search for: GTGGT:
+ Hit in reference at 311: GTGGT 644: GTGGT
+ Hit in sequence 0 at 312: GTGGT
+ Hit in sequence 1 at 308: GTGGT
+ Hit in sequence 2 at 311: GTGGT
+ Hit in sequence 3 at 327: GTGGT
+ Hit in sequence 4 at 317: GTGGT
+ Hit in sequence 5 at 320: GTGGT
+
+We are almost at the end of our online-search algorithm.
+Let's now implement the method ``_findInPatchNode``.
+We basically had this already implemented when we wrote the search function for the reference. Let's recall this part together.
+
+First we write the body of our function and define now an Iterator over the Journaled String.
+
+.. includefrags:: demos/tutorial/data_journaling/example_online_search.cpp
+ :fragment: findInPatchNodePart1
+
+We know specify the range in which we are searching for the pattern.
+This range starts at the current physical position of the insertion buffer and ends at the last position of this node where the pattern completely fits.
+
+.. includefrags:: demos/tutorial/data_journaling/example_online_search.cpp
+ :fragment: findInPatchNodePart2
+
+We need to use a second temporary iterator which is used to compare the current value with the pattern.
+If all positions matches then we report a match at the current virtual position.
+
+.. includefrags:: demos/tutorial/data_journaling/example_online_search.cpp
+ :fragment: findInPatchNodePart3
+
+To ensure that we are not missing any hits we also have to scan the regions where the pattern is leaving the current node.
+You can solve this problem in the next assignment.
+
+Assignment 4
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Review
+
+ Objective
+ Implement the last function ``_searchAtBorder``, which identifies all hits that cross the border of the current node to the next node.
+
+ Hints
+ .. container:: foldable
+
+ The following code snippet provides you with the backbone for this function.
+ Fill in the missing parts ``[A]``, ``[B]``, ``[C]`` and ``[D]``.
+
+ .. includefrags:: demos/tutorial/data_journaling/example_online_search_assignment4_hint.cpp
+ :fragment: searchAtBorder
+
+ Solution
+ .. container:: foldable
+
+ Here is the solution to this function.
+ Click **more...** below, to see a complete solution of everything we have done so far.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: searchAtBorder
+
+ .. container:: foldable
+
+ Include the necessary headers.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: include
+
+ Search at the border the current node for the pattern.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: searchAtBorder
+
+ Search for the pattern in the insertion region covered by the current node.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: findInPatchNode
+
+ Check if hit was reported for this region in the reference sequence.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: findInOriginalNode
+
+ Implementing the backbone of the search for the Journaled String.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: findPatternInJournalStringPart1
+
+ Implementing the search for the reference sequence.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: findPatternInReference
+
+ The backbone of the search method.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: searchPatternPart1
+
+ Loading and joining the sequences.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: loadAndJoin
+
+ Implementing the main function.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: main
+
+ Reporting the identified hits.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_assignment4.cpp
+ :fragment: printResult
+
+ And here is the result.
+
+ .. code-block:: console
+
+ Search for: GTGGT:
+ Hit in reference at 311: GTGGT 644: GTGGT
+ Hit in sequence 0 at 151: GTGGT 312: GTGGT
+ Hit in sequence 1 at 308: GTGGT
+ Hit in sequence 2 at 311: GTGGT 507: GTGGT
+ Hit in sequence 3 at 327: GTGGT
+ Hit in sequence 4 at 307: GTGGT 312: GTGGT 317: GTGGT
+ Hit in sequence 5 at 0: GTGGT 320: GTGGT 986: GTGGT
+
+Congratulations!
+You have just implemented a cool online-search which is speed up by exploiting the parallelism given by the data set.
+And here is the final result.
+
+.. code-block:: console
+
+ Search for: GTGGT:
+ Hit in reference at 311: GTGGT 644: GTGGT
+ Hit in sequence 0 at 151: GTGGT 312: GTGGT
+ Hit in sequence 1 at 308: GTGGT
+ Hit in sequence 2 at 311: GTGGT 507: GTGGT
+ Hit in sequence 3 at 327: GTGGT
+ Hit in sequence 4 at 307: GTGGT 312: GTGGT 317: GTGGT
+ Hit in sequence 5 at 0: GTGGT 320: GTGGT 986: GTGGT
+
+Assignment 5
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Transfer
+
+ Objective
+ Try to replace the brute force versions using using SeqAn's :dox:`Finder` and :dox:`Pattern` concept.
+ You can find additional material to this topic in the :ref:`tutorial-pattern-matching` Tutorial.
+
+ Solution
+ .. container:: foldable
+
+ Now we want to replace the brute force methods with some cool pattern matching algorithms.
+ Therefore we include the header `<seqan/finder.h>`.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_finder.cpp
+ :fragment: include
+
+ Now we can use the :dox:`Finder` interface of SeqAn.
+ One cool thing of the usage of the Finder class is that we don't have to check for the borders anymore.
+ This will do the Finder for us.
+ We only have to specify the correct infix over which the Finder should iterate to find the pattern.
+ We first compute the positions that enclose the search region.
+ Afterwards, we get an infix for this region and pass it to the Finder's constructor.
+ We also have to define the :dox:`Pattern` object which gets the pattern we are searching for.
+ Then we can simply call the function :dox:`Finder#find` until we there is no more match.
+ Be careful when storing the position that the Finder is returning.
+ We have to recompute the correct virtual position since we used an infix of the original search text.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_finder.cpp
+ :fragment: searchAtBorder
+
+ So the biggest change is done.
+ We simply repeat the changes from above and watch to get the correct virtual position.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_finder.cpp
+ :fragment: findInPatchNodePart1
+
+ Of course we don't need to change anything for the original nodes.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_finder.cpp
+ :fragment: findInOriginalNode
+
+ Also the function `findPatternInJournalString` remains the same.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_finder.cpp
+ :fragment: findPatternInJournalString
+
+ We will switch to the Finder concept for the function `findPatternInReference` too.
+ This is done quickly, since we have the basis already laid down in the previous functions.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_finder.cpp
+ :fragment: findPatternInReference
+
+ From here on, we don't have to change anything.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_finder.cpp
+ :fragment: searchPatternPart1
+
+ We write the same main body ...
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_finder.cpp
+ :fragment: laodAndJoin
+
+ and finally print the results.
+
+ .. includefrags:: demos/tutorial/data_journaling/solution_online_search_finder.cpp
+ :fragment: main
+
+ And here is the result using the Finder and Pattern concept of SeqAn.
+
+ .. code-block:: console
+
+ Search for: GTGGT:
+ Hit in reference at 311: GTGGT 644: GTGGT
+ Hit in sequence 0 at 151: GTGGT 312: GTGGT
+ Hit in sequence 1 at 308: GTGGT
+ Hit in sequence 2 at 311: GTGGT 507: GTGGT
+ Hit in sequence 3 at 327: GTGGT
+ Hit in sequence 4 at 307: GTGGT 312: GTGGT 317: GTGGT
+ Hit in sequence 5 at 0: GTGGT 320: GTGGT 986: GTGGT
diff --git a/manual/source/Tutorial/JournaledSet.rst b/manual/source/Tutorial/JournaledSet.rst
deleted file mode 100644
index fbc2988..0000000
--- a/manual/source/Tutorial/JournaledSet.rst
+++ /dev/null
@@ -1,655 +0,0 @@
-.. sidebar:: ToC
-
- .. contents::
-
-
-.. _tutorial-data-journaling:
-
-Journaled Set
-=============
-
-Learning Objective
- This tutorial introduces you to the new data structures Journaled Set and Journaled String.
- You will learn how to use them and how to exploit these data structures for an efficient analysis, while implementing a native online search.
-
-Difficulty
- Advanced
-
-Duration
- 2 h
-
-Prerequisites
- :ref:`tutorial-sequences`, :ref:`tutorial-string-sets`, :ref:`tutorial-iterators`
-
-A typical task in bioinformatics is to find patterns in biological sequences e.g. transcription factors, or to examine different biological traits and the effects of modifications on such traits.
-With the current advances in sequencing technologies, sequences of whole populations have been made available.
-But the time for searching in all these sequences is proportional to the number of sequences searched.
-That's why it is important to find novel strategies to cope with the deluge of sequencing data.
-Since, many biological problems often involve the analysis of sequences of the same species, one effective strategy would be to exploit the similarities of such sequences.
-
-For this special purpose we provide two data structures that are designed to improve the algorithmic tasks.
-The first one is the :dox:`JournaledString` and the second is the :dox:`JournaledSet`.
-
-In this tutorial, we will introduce you to both data structures and implement a simple online search step by step.
-
-Journaled String
-----------------
-
-The :dox:`JournaledString` data structure behaves like a normal :dox:`String` in SeqAn, except that it is composed of two data structures.
-
-#. The first data structure is a :dox:`Holder` which stores a sequence.
-#. The second data structure stores modifications that are made to this particular sequence using a **journal** (see `Journaling Filesystems <http://en.wikipedia.org/wiki/Journaling_file_system>`_ for more information).
- This journal contains a list of deletions and insertions.
- The inserted characters are stored in an additional **insertion buffer**.
-
-The advantage of this data structure lies in representing a String as a "patch" to another String.
-The journaled data structure can be modified without loosing the original context.
-We want to show you how to work with these data structures so you can build your own algorithms based on this.
-For this reason we keep the applicational background simple and implement an native online-search algorithm by which we examine different properties of the data structures.
-
-Before we start implementing our online search algorithm, we show you how to work with the Journaled String to learn the basic principles.
-To get access to the Journaled String implementation you have to include the ``<seqan/sequence_journaled.h>`` header file.
-Note that you will need the ``<seqan/file.h>`` too in order to print the sequences.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
- :fragment: main
-
-In the next step we define the Journaled String type.
-A Journaled String is a specialization of the String class and is defined as ``String<TValue, Journaled<THostSpec, TJournalSpec, TBufferSpec> >``.
-The specialization takes two parameters: (1) ``TValue`` defines the alphabet type used for the Journaled String and (2) ``Journaled<>`` selects the Journaled String specialization of the String class.
-
-``Journaled<>`` is further specialized with
-
-* ``THostSpec`` selects the specialization of the underlying host sequence (``Alloc<>`` for [dox:AllocString Alloc String),
-* ``TJournaleSpec`` selects the used implementation to manage the journaled differences (here: ``SortedArray``), and
-* ``TBufferSpec`` selects the used specialization for the internally managed insertion buffer (here: ``Alloc<>`` as well).
-
-In our scenario we use a ``char`` alphabet and [dox:AllocString Alloc String for the host string and the insertion buffer.
-Additionally, we use a ``Sorted Array`` as the model to manage the recorded differences.
-
-We use the metafunction :dox:`HostedConcept#Host` to get the type of the underlying host string used for the Journaled String.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
- :fragment: typedef
-
-Now we can define the variables holding data structures.
-First, we construct our host sequence and after that we construct the Journaled String.
-Then, we set the host sequence using the function :dox:`JournaledString#setHost`.
-Afterwards, we examine the data structure in more detail and print the host sequence the constructed journaled sequence and the nodes of it.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
- :fragment: init
-
-.. tip::
-
- The Journal
-
- A node in the Journaled String represents either a part of the host sequence or a part of the insertion buffer.
- The type of a node is distinguished by the member variable **segmentSource** and can be of value ``SOURCE_ORIGINAL`` to refere to a part in the host or ``SOURCE_PATCH`` to refere to a part in the insertion buffer.
- A node further consists of three variables which specify the **virtual position**, the **physical position** and the **length** of this part.
- The **virtual position** gives the relative position of the Journaled String after all modifications before this position have been "virtually" applied.
- The **physical position** gives the absolute position where this part of the journal maps to either the host sequence or the insertion buffer.
-
-This is followed by modifying our Journaled String.
-We insert the string ``"modified"`` at position ``7`` and delete the suffix ``"sequence"`` at position ``19``.
-Note that position ``19`` refers to the string after the insertion of ``"modified"`` at position ``7``.
-Again we print the host, the journaled sequence and the nodes that represent the modifications to see how our changes affect the host and the journaled sequence.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
- :fragment: modification
-
-All of this is followed by calling :dox:`JournaledString#flatten` on our journeld string.
-This call applies all journaled changes to the host sequence.
-Again we print the sequences to see the effects.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp
- :fragment: flatten
-
-Here is the output of our small program.
-
-.. includefrags:: demos/tutorial/journaled_set/example_journal_string_basic.cpp.stdout
-
-
-.. important::
-
- Be careful when using the :dox:`JournaledString#flatten` function as it modifies the underlying host sequence.
- This might affect other journaled sequences that share the same host sequence.
- This becomes important especially when working with Journal Sets where a whole set of sequences is journaled to the same reference.
-
-Journaled Set
--------------
-
-The :dox:`JournaledSet` is a specialization of the :dox:`StringSet` which can be used exactly as such but also provides some additional functions optimized to work with :dox:`JournaledString JournaledStrings`.
-The general interface is equal to the interface of the StringSet.
-But it also provides some interfaces specialized for the use of Journaled Strings.
-One of these interfaces is the :dox:`JournaledSet#join` function which journales a contained Journaled String to the previously set global reference.
-The following code snippet demonstrates the usage of the Journal Set and how to join a sequence to the previously set reference sequence.
-
-As usual we include the necessary headers.
-We need the header ``<seqan/journal_set.h>`` to get access to the Journal Set.
-Then we define a type for journaled sequences.
-After that we define our Journal Set.
-The Journal Set is a specialization of the :dox:`OwnerStringSet Owner` concept of StringSets and is defined as ``StringSet<TJournalString, Owner<JournaledSet> >``.
-
-.. includefrags:: demos/tutorial/journaled_set/example_join.cpp
- :fragment: main
-
-In the subsequent steps we want to set a reference sequence to the Journal Set and add some sequences to it.
-We can set the reference sequence by using the function :dox:`JournaledSet#setHost`.
-This function stores only a pointer to the given sequence.
-In some cases it might be necessary to copy the reference sequence instead.
-For this purpose you can use the function :dox:`JournaledSet#createHost`.
-
-.. includefrags:: demos/tutorial/journaled_set/example_join.cpp
- :fragment: init
-
-Just adding sequences to the Journal Set does not automatically journal them to the global reference sequence of the set.
-One can explicitly trigger this process using the function :dox:`JournaledSet#join`.
-This function takes as parameters the Journal Set and the position of the contained Journaled String which is to be journaled to the reference sequence.
-Thus, the programmer is free in the decision which sequence has to be journaled and which not.
-Furthermore, we can use the :dox:`JoinConfig` object to specify the method that shall be used for the journaling process.
-
-.. includefrags:: demos/tutorial/journaled_set/example_join.cpp
- :fragment: join
-
-.. tip::
-
- Configuration of the Join Methods
-
- The :dox:`JoinConfig` object differentiates two methods in general and each method further differs in the used strategy.
- The two methods are the :dox:`GlobalAlign` and the :dox:`GlobalChain` method.
- They differ in the approach of computing the alignment which is necessary to construct the journal.
- The first method uses a global alignment algorithm while the second one uses an anchor approach in which first exact seeds are found using a q-gram index and after that the optimal chain between the identified anchors is computed.
- For each method the user can specify a different strategy.
- The first strategy is triggered by using :dox:`JoinStrategiesTags JournaledManhatten`.
- This means for the the GlobalAlign method, that the complete sequence is inserted and the complete reference is deleted, while for the GlobalChain methods this means that the gaps between the anchors are connected through the Manhatten distance.
- The second strategy is specified using the :dox:`JoinStrategiesTags JournaledCompact` tag. It computes the most compact form of a journal by menas of memory requirements.
-
-Here is the output of the program.
-
-.. includefrags:: demos/tutorial/journaled_set/example_join.cpp.stdout
-
-
-Implementing an Online-Search
------------------------------
-
-Now we have all foundations laid down to implement the online-search algorithm.
-Let us begin with the first assignment where we read in some sequences and use the currently learned things about the Journal Set.
-
-Assignment 1
-""""""""""""
-
-.. container:: assignment
-
- Type
- Review, Application
-
- Objective
- Download the fasta file :download:`sequences.fasta <sequences.fasta>` which contains some DNA sequences.
- Write a method called ``loadAndJoin`` that gets a Journal Set and a stream file pointing to the downloaded fasta file.
- The method reads in the sequences one after another using SeqAn's :dox:`SeqFileIn`.
- The first read sequences is set to the reference sequence.
- All following sequences are first appended to the StringSet and afterwards joined to the StringSet using a global alignment strategy and the most compact form.
-
- Hints
- .. container:: foldable
-
- You can start using the following code snippet. Replace the path of the iostream such that it points to your path and fill in the missing parts ``A``, ``B`` and ``C`` in the function ``loadAndJoin`` (Altogether, you will need 4 lines of code.).
-
- .. includefrags:: demos/tutorial/journaled_set/example_online_search_assignment1_hint.cpp
- :fragment: main
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment1.cpp
- :fragment: main
-
-Now we have loaded and journaled our sequences and we use the minimal possible memory requirements for our sequences.
-Let's continue and implement the exact online-search on the Journal Set.
-For this purpose we write a function called ``searchPattern`` which takes a StringSet of ``String<int>`` which we use to store each hit for each sequence in the Journal Set including the reference sequence.
-First we have to check whether the reference sequence is set.
-If not we abort the search since we cannot guarantee a correct search when the reference is not set.
-We also have to clear our ``hitSet`` to ensure there remain no phantom hits from previous searches.
-Then we resize it to the number of contained Journaled Strings plus an additional space for the global reference sequence.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
- :fragment: searchPatternPart1
-
-Before we can search for the pattern in the Journaled Strings we have to find all occurrences in the reference sequence.
-Therefore we call the function ``findPatternInReference`` which takes a ``String<int>`` which we use to store the hits, the global reference and the pattern.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
- :fragment: searchPatternPart2
-
-After that we implement the body to search for occurrences in the Journaled Strings.
-Therefore we use ``for``-loop to iterate over all contained sequences and call for each sequence the function ``findPatternInJournalString``.
-The function gets as parameters the corresponding ``String<int>`` from the ``hitSet``, the journaled sequence the pattern and the identified hits in the reference sequence.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
- :fragment: searchPatternPart3
-
-So far our program won't compile. We have to first implement the both functions ``findPatternInReference`` and ``findPatternInJournalString``.
-
-Assignment 2
-""""""""""""
-
-.. container:: assignment
-
- Type
- Application
-
- Objective
- Implement the function ``findPatternInReference`` using a brute force pattern search algorithm.
- Store all found hits in the passed ``hits`` variable.
- Print all occurrences in the end of the ``main`` function.
-
- Hints
- .. container:: foldable
- The following code snippet provides you with the backbone for the search algorithm. Fill in the missing parts ``[A]``, ``[B]``, ``[C]`` and ``[D]``.
-
- .. code-block:: cpp
-
- template <typename TString, typename TPattern>
- void findPatternInReference(String<int> & hits,
- TString const & reference,
- TPattern const & pattern)
- {
- // [A] Check whether pattern fits into the sequence.
-
- // [B] Iterate over all positions at which the pattern might occur.
-
- // [C] Evaluate all positions of the pattern until you find a mismatch or you have found a hit.
-
- // [D] Report begin position at which pattern matches the sequence.
- }
-
- Solution
- .. container:: foldable
-
- Here is the solution for this function.
- Click **more...** below, to see a complete solution of everything we have done so far.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
- :fragment: findPatternInReference
-
- .. container:: foldable
-
- Include the necessary headers.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
- :fragment: include
-
- Implementation of the `findPatternInReference` function.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
- :fragment: findPatternInReference
-
- Implementation of the `searchPattern` function. Note that we haven't implemented the function `findPatternInJournalString` yet.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
- :fragment: searchPattern
-
- Implementation of the `loadAndJoin` function.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
- :fragment: loadAndJoin
-
- Implementation of the `main` function.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
- :fragment: main
-
- Printing the hits of the reference sequence.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp
- :fragment: printResult
-
- And here is the result.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment2.cpp.stdout
-
-
-We know can search for all occurrences of a pattern in the reference sequence.
-Now we can try to find all occurrences in the journaled sequences.
-Therefore we implement the function ``findPatternInJournalString``.
-Our function gets the variable ``hitsTarget`` which stores the hits found in the JournaledString.
-It gets the search text and the pattern and finally the hits detected in the reference sequence.
-Instead of searching each position in the Journaled String, we only search in areas that are new to the search.
-This involves all inserted parts and all parts where the pattern crosses a border to another node.
-So instead of iterating over each position we iterate over the nodes of the Journaled String.
-To do so we have to determine the type of the data structure that is used by the Journaled String to manage the nodes.
-We can use the metafunction :dox:`JournaledString#JournalType` for this task.
-Afterwards we define an Iterator over the so called ``TJournalEntries`` data structure.
-
-Again we check first whether the pattern fits into our sequence.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
- :fragment: findPatternInJournalStringPart1
-
-We then iterate over all nodes beginning from the first until we have reached the node in which the pattern reaches the end of the Journaled Sequence.
-The function findInJournalEntries helps us to find the corresponding node.
-We increment the position of the iterator by one such that it points behind the last element which is included by the search.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
- :fragment: findPatternInJournalStringPart2
-
-Now we search in each node until we have reached the end.
-For each node we first check the type of the journaled operation.
-If we are in an "original" node we call the function ``_findInOriginalNode``.
-If we are in a "patch" node we call the function ``_findInPatchNode`` and in the end we call the function ``_searchAtBorder`` which is called for each node type and scans all possible hits at the border of a node.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
- :fragment: findPatternInJournalStringPart3
-
-Let us begin with the implementation of the function ``_findInOriginalNode``.
-In this function we exploit the journaling concept such that we can speed up the search algorithm from :math:`\mathcal{O}(p \cdot n)` to :math:`\mathcal{O}(\log_2(k))`, where :math:`p` is the length of the pattern, :math:`n` is the length of the search text, and ``k`` is the number of hits identified in the reference sequence.
-We need at most :math:`\log_2(k)` comparisons to find the first hit which occurred in the reference sequence that also occurs in the current original node.
-
-Assignment 3
-^^^^^^^^^^^^
-
-.. container:: assignment
-
- Type
- Transfer
-
- Objective
- Implement the function ``_findInOriginalNode``, which identifies all shared hits between the current ``original`` node and the corresponding part in the reference sequence.
- Note you do not need to scan all positions again.
- In the end print all occurrences to the console.
-
- Hints
- .. container:: foldable
- The following code snippet provides you with the backbone for this function.
- Fill in the missing parts ``[A]``, ``[B]``, ``[C]``, ``[D]`` and ``[E]``.
-
- Use the STL function `std::upper_bound <http://www.cplusplus.com/reference/algorithm/upper_bound/>`_ to conduct a binary search to find the first possible hit from the reference that is also represented by the current node.
-
- .. code-block:: cpp
-
- template <typename TJournalEntriesIterator, typename TPattern>
- void _findInOriginalNode(String<int> & hitTarget,
- TJournalEntriesIterator & entriesIt,
- TPattern const & pattern,
- String<int> const & refHits)
- {
- // [A] Check if hits exist in the reference.
-
- // [B] Find upper bound to current physical position in sorted refHits using std::upper_bound.
-
- // [C] Make sure we do not miss hits that begin at physical position of current node.
-
- // [D] Store all hits that are found in the region of the reference which is covered by this node.
-
- // [E] Store the correct virtual position and check next hit.
- }
-
- Solution
- .. container:: foldable
-
- Here is the solution to this function.
- Click **more...** below, to see a complete solution of everything we have done so far.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: findInOriginalNode
-
- .. container:: foldable
-
- Include the necessary headers.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: include
-
- We know implement the method to search for hits in an original node.
- We only need to check if the current node covers a region of the reference in which we've found a hit.
- We use the function `std::upper_bound <http://www.cplusplus.com/reference/algorithm/upper_bound/>`_ to find the first element that is greater than the current physical position.
- Since, we've found an upper bound we have to check additionally if there exists a previous hit that lies directly on the physical begin position of our current node.
- We then include all hits that fit into this current node until we have found the first position where the pattern would cross the border of this node or we have reached the end of the reference hit set.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: findInOriginalNode
-
- Implementing the backbone to search for a pattern in the reference string.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: findPatternInJournalString
-
- Implementing the search within the reference sequence.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: findPatternInReference
-
- Implementing the backbone of the search.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: searchPattern
-
- Implement the `laodAndJoin` method.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: loadAndJoin
-
- Implementing the main method.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: main
-
- Printing the hits of the reference sequence.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: printResultReference
-
- Printing the hits of the journaled sequences.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp
- :fragment: printResultJournalSequence
-
- And here is the result.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment3.cpp.stdout
-
-
-We are almost at the end of our online-search algorithm.
-Let's now implement the method ``_findInPatchNode``.
-We basically had this already implemented when we wrote the search function for the reference. Let's recall this part together.
-
-First we write the body of our function and define now an Iterator over the Journaled String.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
- :fragment: findInPatchNodePart1
-
-We know specify the range in which we are searching for the pattern.
-This range starts at the current physical position of the insertion buffer and ends at the last position of this node where the pattern completely fits.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
- :fragment: findInPatchNodePart2
-
-We need to use a second temporary iterator which is used to compare the current value with the pattern.
-If all positions matches then we report a match at the current virtual position.
-
-.. includefrags:: demos/tutorial/journaled_set/example_online_search.cpp
- :fragment: findInPatchNodePart3
-
-To ensure that we are not missing any hits we also have to scan the regions where the pattern is leaving the current node.
-You can solve this problem in the next assignment.
-
-Assignment 4
-""""""""""""
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Implement the last function ``_searchAtBorder``, which identifies all hits that cross the border of the current node to the next node.
-
- Hints
- .. container:: foldable
-
- The following code snippet provides you with the backbone for this function.
- Fill in the missing parts ``[A]``, ``[B]``, ``[C]`` and ``[D]``.
-
- .. code-block:: cpp
-
- template <typename TString, typename TPattern>
- void findPatternInReference(String<int> & hits, TString const & reference, TPattern const & pattern)
- {
- // [A] Check whether pattern fits into the sequence.
-
- // [B] Iterate over all positions at which the pattern might occur.
-
- // [C] Evaluate all positions of the pattern until you find a mismatch or you have found a hit.
-
- // [D] Report begin position at which pattern matches the sequence.
- }
-
- Solution
- .. container:: foldable
-
- Here is the solution to this function.
- Click **more...** below, to see a complete solution of everything we have done so far.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: searchAtBorder
-
- .. container:: foldable
-
- Include the necessary headers.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: include
-
- Search at the border the current node for the pattern.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: searchAtBorder
-
- Search for the pattern in the insertion region covered by the current node.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: findInPatchNode
-
- Check if hit was reported for this region in the reference sequence.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: findInOriginalNode
-
- Implementing the backbone of the search for the Journaled String.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: findPatternInJournalStringPart1
-
- Implementing the search for the reference sequence.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: findPatternInReference
-
- The backbone of the search method.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: searchPatternPart1
-
- Loading and joining the sequences.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: loadAndJoin
-
- Implementing the main function.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: main
-
- Reporting the identified hits.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp
- :fragment: printResult
-
- And here is the result.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp.stdout
-
-
-Congratulations!
-You have just implemented a cool online-search which is speed up by exploiting the parallelism given by the data set.
-And here is the final result.
-
-.. includefrags:: demos/tutorial/journaled_set/solution_online_search_assignment4.cpp.stdout
-
-
-Assignment 5
-""""""""""""
-
-.. container:: assignment
-
- Type
- Transfer
-
- Objective
- Try to replace the brute force versions using using SeqAn's :dox:`Finder` and :dox:`Pattern` concept.
- You can find additional material to this topic in the :ref:`tutorial-pattern-matching` Tutorial.
-
- Solution
- .. container:: foldable
-
- Now we want to replace the brute force methods with some cool pattern matching algorithms.
- Therefore we include the header `<seqan/finder.h>`.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
- :fragment: include
-
- Now we can use the :dox:`Finder` interface of SeqAn.
- One cool thing of the usage of the Finder class is that we don't have to check for the borders anymore.
- This will do the Finder for us.
- We only have to specify the correct infix over which the Finder should iterate to find the pattern.
- We first compute the positions that enclose the search region.
- Afterwards, we get an infix for this region and pass it to the Finder's constructor.
- We also have to define the :dox:`Pattern` object which gets the pattern we are searching for.
- Then we can simply call the function :dox:`Finder#find` until we there is no more match.
- Be careful when storing the position that the Finder is returning.
- We have to recompute the correct virtual position since we used an infix of the original search text.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
- :fragment: searchAtBorder
-
- So the biggest change is done.
- We simply repeat the changes from above and watch to get the correct virtual position.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
- :fragment: findInPatchNodePart1
-
- Of course we don't need to change anything for the original nodes.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
- :fragment: findInOriginalNode
-
- Also the function `findPatternInJournalString` remains the same.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
- :fragment: findPatternInJournalString
-
- We will switch to the Finder concept for the function `findPatternInReference` too.
- This is done quickly, since we have the basis already laid down in the previous functions.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
- :fragment: findPatternInReference
-
- From here on, we don't have to change anything.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
- :fragment: searchPatternPart1
-
- We write the same main body ...
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
- :fragment: laodAndJoin
-
- and finally print the results.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp
- :fragment: main
-
- And here is the result using the Finder and Pattern concept of SeqAn.
-
- .. includefrags:: demos/tutorial/journaled_set/solution_online_search_finder.cpp.stdout
diff --git a/manual/source/Tutorial/Metafunctions.rst b/manual/source/Tutorial/Metafunctions.rst
index 8f6b253..3c4d523 100644
--- a/manual/source/Tutorial/Metafunctions.rst
+++ b/manual/source/Tutorial/Metafunctions.rst
@@ -162,46 +162,46 @@ Assignment 1
Hence we could define the function as follows:
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-declaration
The function is now quite generic allowing any container of type ``T``.
In addition we specify two positions that should be swapped (as integers which is not really generic, but it suffices for the demo) an the length of the swapped region.
Now we can define a helper variable ``help``, which can be of type ``T``.
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-metafunction
and do the swapping
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-work
Thats it.
We can now test our generic swap function using for example a `String` of characters or a `String` of integers.
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-apply
The whole program taken together looks as follows:
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-headers
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-declaration
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-metafunction
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-work
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-main
- .. includefrags:: demos/tutorial/metafunctions/swap.cpp
+ .. includefrags:: demos/tutorial/basics/swap.cpp
:fragment: swap-apply
diff --git a/manual/source/Tutorial/MiniBowtie.rst b/manual/source/Tutorial/MiniBowtie.rst
new file mode 100644
index 0000000..6225719
--- /dev/null
+++ b/manual/source/Tutorial/MiniBowtie.rst
@@ -0,0 +1,358 @@
+.. sidebar:: ToC
+
+ .. contents::
+
+
+.. _tutorial-mini-bowtie:
+
+Mini Bowtie
+===========
+
+Learning Objective
+ You will be able to write read mappers using SeqAn.
+
+Difficulty
+ Hard
+
+Duration
+ 2h
+
+Prerequisites
+ :ref:`tutorial-indices`, :ref:`tutorial-index-iterators`, :ref:`tutorial-fragment-store`
+
+Mini-Bowtie is a very basic read aligner that is inspired by the well known Bowtie program :cite:`Langmead2009`.
+It serves as an example to show that you can write sophisticated programs with SeqAn using few lines of code.
+
+Background
+----------
+
+Bowtie is based on the FM index :cite:`Ferragina2001` which uses the Burrows-Wheeler transform (BWT) to search for patterns in a text in :math:`\mathcal{O}(m)` time with ``m`` being the pattern length.
+Furthermore the index only consumes minute space because it can be compressed using favorable features of the BWT.
+
+Since this tutorial serves as an example of SeqAn's functionality, we will not completely re-implement Bowtie.
+Instead we will concentrate on providing a simple yet functional read mapper.
+We will start by reading the reference sequence and reads, then search approximately each read in the reference allowing at most one mismatch, and finally write the result into an informative SAM file.
+
+We do make use of the FM index, but we use only one key feature of Bowtie, namely a two phase search.
+Such two phase search speeds up approximate search on the FM index but requires two indices, i.e. one of the forward and one of the backward reference sequence.
+Instead of searching each read in one phase, allowing one mismatch in every possible position, we search it twice, but in two phases having some restrictions.
+We first search each read in the forward index by allowing one mismatch only in the second half of the read.
+Then we reverse each read and search it in the backward index, again by allowing one mismatch only in the second half of the read.
+The advantage of a two phase search will become clear in the following.
+
+.. tip::
+
+ The FM index implicitly represent a prefix trie of a text.
+ Searching on the FM index is performed backwards, starting with the last character of the pattern and working its way to the first.
+
+In the first search phase we search backwards the right half of the read without mismatches.
+If we succeed, in the second phase we continue backwards allowing one mismatch in the left half.
+The whole procedure is based on a depth-first traversal on the prefix trie of the reference.
+Trie’s edges are labeled with single characters and each path following some edges spells a substring of the reference.
+Thus, first we start in the root node and follow the path spelling the right half of the read.
+If we succeed, we continue in the subtree rooted in the previously reached node by following each possible path that spells the left half of the read with one substitution.
+
+.. figure:: mini_bowtie_search.png
+ :width: 600px
+
+The red arrows indicate the exact search of the right half of the read, the green arrows the approximate search of the left half.
+
+From the figure above you can see the advantage of using a two phase approach.
+By starting from the root node and performing exact search, we follow only one path and avoid visiting the top of the trie.
+Approximate search is more involved, since we have to try every path until we find a second mismatch, but it is limited to a small subtree.
+
+So far we have found all locations of a read having at most one mismatch in its left half.
+In order to find also all locations having at most one mismatch in the right half, we simply reverse the reference and the read and repeat the procedure from above.
+Note that we only reverse but do not complement the reference or the reads.
+
+Assignment 1
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Copy the code below and rearrange the rows such that they give a functional order.
+
+ .. code-block:: cpp
+
+ // ==========================================================================
+ // mini_bowtie
+ // ==========================================================================
+ // Copyright (c) 2006-2012, Knut Reinert, FU Berlin
+ // All rights reserved.
+
+
+ #include <iostream>
+ #include <seqan/basic.h>
+ #include <seqan/sequence.h>
+ #include <seqan/file.h>
+ #include <seqan/index.h>
+ #include <seqan/store.h>
+
+ using namespace seqan;
+
+ void search() {};
+
+ int main(int argc, char \*argv[])
+ {
+ // type definitions
+ typedef String<Dna5> TString;
+ typedef StringSet<TString> TStringSet;
+ typedef Index<StringSet<TString>, FMIndex<> > TIndex;
+ typedef Iterator<TIndex, TopDown<ParentLinks<> > >::Type TIter;
+
+ // reversing the sequences for backward search
+ // backward search
+ // reading the command line arguments
+ // declaration and initialization of the fragment store
+ // forward search
+ // combining the contigs of the reference into one string set
+ appendValue(text, fragStore.contigStore[i].seq);
+ std::cerr << "Invalid number of arguments." << std::endl
+ << "USAGE: mini_bowtie GENOME.fasta READS.fasta OUT.sam" << std::endl;
+ }
+ if (argc < 3) {
+ if (loadContigs(fragStore, argv[1])) return 1;
+ if (loadReads(fragStore, argv[2])) return 1;
+ clear(fmIndex);
+ clear(fmIndex);
+ StringSet<TString> text;
+ for (unsigned i = 0; i < length(fragStore.contigStore); ++i)
+ fmIndex = TIndex(text);
+ TIndex fmIndex(text);
+ TIter it(fmIndex);
+ search();
+ search();
+ clear(it);
+ clear(it);
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+ it = TIter(fmIndex);
+ FragmentStore<> fragStore;
+ return 0;
+ return 1;
+ }
+
+ Hint
+ .. container:: foldable
+
+ We make use of the :dox:`FragmentStore`.
+ While we can access the pattern/reads as if using a :dox:`StringSet`, we need to create a :dox:`StringSet` of the contigs, because in the :dox:`FragmentStore` the contigs are not stored in a :dox:`StringSet`.
+
+ Hint
+ .. container:: foldable
+
+ The correct order of the comments is:
+
+ .. code-block:: cpp
+
+ // reading the command line arguments
+ // declaration and initialization of the fragment store
+ // combining the contigs of the reference into one string set
+ // forward search
+ // reversing the sequences for backward search
+ // backward search
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/mini_bowtie/solution1.cpp
+
+Now that we have the backbone of our program we can start to implement the fundamental part, the search routine.
+The ``search`` function requires two input arguments, namely the iterator used to traverse the FM index of the reference sequence and the string set containing the reads.
+
+The ``search`` function iterates over the reads and searches them in the already mentioned two phase fashion.
+In the first phase the right half of the pattern is searched exactly.
+The second phase is more involved and will be discussed after the second assignment.
+
+Assignment 2
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Expand the solution to the last assignment by implementing the backbone of the search routine.
+ The backbone should consist of function definition, an outer loop traversing the pattern (using a standard iterator) and the first step of the search, namely the exact search of the right pattern half.
+
+ Hint
+ .. container:: foldable
+
+ The template function header could look like this:
+
+ .. code-block:: cpp
+
+ template <typename TIter, typename TStringSet>
+ void search(TIter & it, TStringSet const & pattern)
+
+
+ Hint
+ .. container:: foldable
+
+ You can obtain the correct iterator type using the metafunction :dox:`ContainerConcept#Iterator`.
+
+ .. code-block:: cpp
+
+ typedef typename Iterator<TStringSet const, Standard>::Type TPatternIter;
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/mini_bowtie/solution2.cpp
+
+At this point we need to implement the most critical part of the our program, which is the second step of the search phase.
+In our case this step works as follows:
+
+Assume that we have already found a path in the trie representing the pattern from position :math:`i` to :math:`(m - 1)` with m being the pattern length and :math:`i < m / 2`.
+Then we substitute the character of the pattern at position :math:`i - 1` with every character of the alphabet and search for the remaining characters exact.
+We repeat those two steps until we processed every character of the pattern.
+
+The corresponding pseudo code could look like this:
+
+.. code-block:: cpp
+
+ unsigned startApproxSearch = length(pattern) / 2;
+ for i = startApproxSearch to 0
+ {
+ for all c in the aphabet
+ {
+ if (goDown(it, c))
+ {
+ if (goDown(it, pattern[0..i - 1]))
+ {
+ HIT
+ }
+ goBack to last start
+ }
+ }
+ goDown correct character
+ }
+
+Assignment 3
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Include the pseudo code from above into the search function.
+
+ Hint
+ Make a copy of the iterator before following the path of the substituted character.
+ Doing so saves time and keeps the code simple because you do not need to use :dox:`TopDownHistoryIterator#goUp`.
+
+ Hint
+ .. container:: foldable
+
+ :dox:`TopDownIterator#goDown` returns a boolean indicating if a path exists or not.
+ In addition, you do not need to go through the steps of the pseudo code if the second pattern half was not found!
+
+ Hint
+ .. container:: foldable
+
+ :dox:`OrderedAlphabetConcept#MinValue` returns the lowest value of an alphabet, while :dox:`FiniteOrderedAlphabetConcept#ValueSize` returns the number of different values of a data type.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/mini_bowtie/solution3.cpp
+
+So far so good.
+But there is a slight mistake.
+While substituting we also substitute the character in the pattern with itself.
+Therefore we find locations of exact matches multiple times.
+
+Assignment 4
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Adjust the code to cope with the problem mentioned above.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/mini_bowtie/solution4.cpp
+
+So this is already the fundamental part of our program.
+What's left to do is to write the result into a SAM file.
+In order to do so, we make use of the :dox:`FragmentStore`.
+Everything we need to do is to fill the :dox:`FragmentStore::alignedReadStore` which is a member of the :dox:`FragmentStore`.
+This is very easy, because we only need to append a new value of type :dox:`AlignedReadStoreElement::AlignedReadStoreElement` specifying the match id, the pattern id, the id of the contig, as well as the begin and end position of the match in the reference.
+
+An ``addMatchToStore`` function could look like this:
+
+.. code-block:: cpp
+
+ template <typename TStore, typename TIter, typename TPatternIt>
+ void addMatchToStore(TStore & fragStore, TPatternIt const & patternIt, TIter const & localIt)
+ {
+ typedef FragmentStore<>::TAlignedReadStore TAlignedReadStore;
+ typedef Value<TAlignedReadStore>::Type TAlignedRead;
+
+ for (unsigned num = 0; num < countOccurrences(localIt); ++num)
+ {
+ unsigned pos = getOccurrences(localIt)[num].i2;
+ TAlignedRead match(length(fragStore.alignedReadStore), position(patternIt), getOccurrences(localIt)[num].i1 ,
+ pos, pos + length(value(patternIt)));
+ appendValue(fragStore.alignedReadStore, match);
+ }
+ }
+
+One could think we are done now.
+Unfortunately we are not.
+There are two problems.
+Recall, that in the second search phase we reverse the text and pattern, therefore we messed up start and end positions in the original reference.
+Furthermore we found exact matches twice, once in the forward index and once in the reversed index.
+
+Assignment 5
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Application
+
+ Objective
+ Include the following two lines into your code:
+
+ .. code-block:: cpp
+
+ struct ForwardTag {};
+ struct ReverseTag {};
+
+ and write a second ``addMatchToStore`` function that is called when we search in the reversed reference.
+ In addition, make all necessary changes to the code such that exact matches are only added once.``
+
+ Hint
+ .. container:: foldable
+
+ The metafunction :dox:`IsSameType` can be used to determine whether two types are equal or not.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/mini_bowtie/mini_bowtie.cpp
+
+Done? Not quite.
+
+We need to copy the following four lines of code into our code in order to write the correct result in the SAM file.
+Calling the reverse function is necessary because an alignment must be computed for every match to be written into the SAM file.
+
+.. code-block:: cpp
+
+ reverse(text);
+ reverse(fragStore.readSeqStore);
+ std::ofstream samFile(argv[3], std::ios_base::out);
+ write(samFile, fragStore, Sam());
diff --git a/manual/source/Tutorial/Modifiers.rst b/manual/source/Tutorial/Modifiers.rst
index 24b6412..ca9f086 100644
--- a/manual/source/Tutorial/Modifiers.rst
+++ b/manual/source/Tutorial/Modifiers.rst
@@ -48,19 +48,19 @@ ModReverse
We begin with the specialization :dox:`ModReverseString` from the example above.
Now we have a given string:
-.. includefrags:: demos/tutorial/modifiers/modreverse.cpp
+.. includefrags:: demos/tutorial/modifiers/modifier_modreverse.cpp
:fragment: main
and want to get the reverse.
So we need a :dox:`ModifiedString` specialized with ``String<char>`` and :dox:`ModReverseString`.
We create the modifier and link it with ``myString``:
-.. includefrags:: demos/tutorial/modifiers/modreverse.cpp
+.. includefrags:: demos/tutorial/modifiers/modifier_modreverse.cpp
:fragment: modifier
The result is:
-.. includefrags:: demos/tutorial/modifiers/modreverse.cpp
+.. includefrags:: demos/tutorial/modifiers/modifier_modreverse.cpp
:fragment: output1
.. code-block:: console
@@ -70,7 +70,7 @@ The result is:
To verify that we didn't copy ``myString``, we replace an infix of the original string and see that, as a side effect, the modified string has also changed:
-.. includefrags:: demos/tutorial/modifiers/modreverse.cpp
+.. includefrags:: demos/tutorial/modifiers/modifier_modreverse.cpp
:fragment: output2
.. code-block:: console
diff --git a/manual/source/Tutorial/MultipleSequenceAlignment.rst b/manual/source/Tutorial/MultipleSequenceAlignment.rst
index f1535c4..f1ad24c 100644
--- a/manual/source/Tutorial/MultipleSequenceAlignment.rst
+++ b/manual/source/Tutorial/MultipleSequenceAlignment.rst
@@ -42,24 +42,24 @@ The following example shows how to compute a global multiple sequence alignment
First, we include the necessary headers and begin the ``main`` function by declaring our strings as a char array.
-.. includefrags:: demos/tutorial/multiple_sequence_alignment/msa.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_msa.cpp
:fragment: main
Next, we build a :dox:`Align` object with underling :dox:`String SeqAn Strings` over the :dox:`AminoAcid` alphabet.
We create four rows and assign the previously defined amino acid strings into the rows.
-.. includefrags:: demos/tutorial/multiple_sequence_alignment/msa.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_msa.cpp
:fragment: init
Finally, we call :dox:`globalMsaAlignment` and print ``align`` to the standard output.
We use the :dox:`Blosum62` score matrix with the penalties from above.
-.. includefrags:: demos/tutorial/multiple_sequence_alignment/msa.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_msa.cpp
:fragment: alignment
The output of the program look as follows.
-.. includefrags:: demos/tutorial/multiple_sequence_alignment/msa.cpp.stdout
+.. includefrags:: demos/tutorial/alignments/alignment_msa.cpp.stdout
Note that we stored the MSA in an :dox:`Align` object which allows easy access to the individual rows of the MSA as :dox:`Gaps` objects.
:dox:`globalMsaAlignment` also allows storing the alignment as an :dox:`AlignmentGraph`.
@@ -81,11 +81,11 @@ Assignment 1
The solution looks as follows.
- .. includefrags:: demos/tutorial/multiple_sequence_alignment/assignment1.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_msa_assignment1.cpp
And here is the program's output.
- .. includefrags:: demos/tutorial/multiple_sequence_alignment/assignment1.cpp.stdout
+ .. includefrags:: demos/tutorial/alignments/alignment_msa_assignment1.cpp.stdout
Computing Consensus Sequences
-----------------------------
@@ -97,22 +97,22 @@ It is used by creating a :dox:`String` over :dox:`ProfileChar` as the alphabet.
The following program first computes a global MSA of four variants of exon1 of the gene SHH.
First, we compute the alignment as in the example above.
-.. includefrags:: demos/tutorial/multiple_sequence_alignment/consensus.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_msa_consensus.cpp
:fragment: align
Then, we create the profile string with the length of the MSA.
We then count the number of characters (and gap pseudo-characters which have an ``ordValue`` of ``4`` for :dox:`Gaps` over :dox:`Dna`) at each position.
-.. includefrags:: demos/tutorial/multiple_sequence_alignment/consensus.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_msa_consensus.cpp
:fragment: profile-computation
Finally, we compute the consensus and print it to the standard output.
At each position, the consensus is called as the character with the highest count.
Note that ``getMaxIndex`` breaks ties by the ordinal value of the caracters, i.e. ``A`` would be preferred over ``C``, ``C`` over ``G`` and so on.
-.. includefrags:: demos/tutorial/multiple_sequence_alignment/consensus.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_msa_consensus.cpp
:fragment: consensus-calling
The output of the program is as follows.
-.. includefrags:: demos/tutorial/multiple_sequence_alignment/consensus.cpp.stdout
+.. includefrags:: demos/tutorial/alignments/alignment_msa_consensus.cpp.stdout
diff --git a/manual/source/Tutorial/PairwiseSequenceAlignment.rst b/manual/source/Tutorial/PairwiseSequenceAlignment.rst
index d1c3b29..e9968e2 100644
--- a/manual/source/Tutorial/PairwiseSequenceAlignment.rst
+++ b/manual/source/Tutorial/PairwiseSequenceAlignment.rst
@@ -78,14 +78,14 @@ A good programming practice is to define all types that shall be used by the fun
In our case, we define a ``TSequence`` type for our input sequences and an :dox:`Align` object (``TAlign``) type to store the alignment.
For more information on the Align datastructure, please read the tutorial :ref:`tutorial-alignment-representation`.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_global_standard.cpp
:fragment: main
After we defined the types, we can define the variables and objects.
First, we create two input sequences ``seq1 = "CDFGHC"`` and ``seq2 = "CDEFGAHC"``.
We then define an 'align' object where we want to put the sequences into, we resize it to manage two :dox:`Gaps` objects, and then assign the sequences to it.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_global_standard.cpp
:fragment: init
Now, we can compute our first alignment.
@@ -93,7 +93,7 @@ To do so, we simply call the function :dox:`globalAlignment` and give as input p
The globalAlignment function returns the score of the best alignment, which we store in the ``score`` variable.
Afterwards, we print the computed score and the corresponding alignment.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_standard.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_global_standard.cpp
:fragment: alignment
The output is as follows:
@@ -139,7 +139,7 @@ Assignment 1
We use an :dox:`String` with the :dox:`Dna` alphabet, since we know that we work with DNA sequences.
The second type is our :dox:`Align` object storing the alignment later on.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment1.cpp
:fragment: main
In the next step we initialize our objects.
@@ -147,7 +147,7 @@ Assignment 1
We resize the underlying set of ``align`` that manages the separate :dox:`Gaps` data structures.
Finally, we assign the input sequences as sources to the corresponding row of ``align``.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment1.cpp
:fragment: init
Now we compute the alignment using a scoring scheme with affine gap costs.
@@ -155,7 +155,7 @@ Assignment 1
We store the computed score of the best alignment in the equally named variable ``score``.
In the end we print the score and the alignment using print methods provided by the ``iostream`` module of the STL.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment1.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment1.cpp
:fragment: alignment
Congratulation!
@@ -195,20 +195,20 @@ We will also make use of the :dox:`AlignmentGraph Alignment Graph` to store the
We start again with including the necessary headers and defining all types that we need.
We define the ``TStringSet`` type to store our input sequences in a StringSet and we define the ``TDepStringSet`` which is an :dox:`DependentStringSet` used internally by the AlignmentGraph.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_global_overlap.cpp
:fragment: main
Before we can initialize the AlignmentGraph we append the input sequences to the StringSet ``strings``.
Then we simply pass ``strings`` as an argument to the constructor of the AlignmentGraph ``alignG``.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_global_overlap.cpp
:fragment: init
Now we are ready to compute the alignment.
This time we change two things when calling the ``globalAlignment`` function.
First, we use an :dox:`AlignmentGraph` to store the computed alignment and second we use the :dox:`AlignConfig` object to compute the overlap alignment.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_overlap.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_global_overlap.cpp
:fragment: alignment
The output is as follows.
@@ -239,7 +239,7 @@ Assignment 2
.. container:: foldable
A semi-global alignment is a special form of an overlap alignment often used when aligning short sequences again a long sequence.
- Here we only allow free end-gaps at the beginning and the end of the shorter sequence.
+ Here we only allow free free end-gaps at the beginning and the end of the shorter sequence.
Solution
.. container:: foldable
@@ -253,12 +253,12 @@ Assignment 2
In this scenario we use an :dox:`AlignmentGraph` to store the alignment.
Remember, that the AlignmentGraph uses an :dox:`DependentStringSet` to map the vertices to the correct input sequences.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment2.cpp
:fragment: main
In the next step we initialize our input StringSet ``strings`` and pass it as argument to the constructor of the AlignmentGraph ``alignG``.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment2.cpp
:fragment: init
Now we compute the alignment using the Levenshtein distance and a AlignConfig object to set the correct free end-gaps.
@@ -266,7 +266,7 @@ Assignment 2
Hence, we have to use free end-gaps in the first and last row, which corresponds to the first and the last parameter in the AlignConfig object.
If you add the shorter sequence at first to ``strings``, then you simply have to flip the ``bool`` values of the AlignConfig object.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment2.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment2.cpp
:fragment: alignment
Here the result of the program.
@@ -310,13 +310,13 @@ We print the alignment and the score.
First the necessary includes and typedefs:
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_specialised.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_global_specialised.cpp
:fragment: main
In addition to the previous examined examples we tell the globalAlignment function to use the desired Hirschberg algorithm by explicitly passing the tag ``Hirschberg`` as last parameter.
The resulting alignment and score are then printed.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_specialised.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_global_specialised.cpp
:fragment: alignment
The output is as follows.
@@ -338,7 +338,7 @@ Assignment 3
Application
Objective
- Write a program that computes a global alignment between the :dox:`Rna` sequences ``AAGUGACUUAUUG`` and ``AGUCGGAUCUACUG`` using the Myers-Hirschberg variant. You should use the Align data structure to store the alignment.
+ Write a program that computes a fast global alignment between the :dox:`Rna` sequences ``AAGUGACUUAUUG`` and ``AGUCGGAUCUACUG`` using the Align data structure and the Levenshtein distance.
Print the score and the alignment. Additionally, output for each row of the Align object the view positions of the gaps.
Hint
@@ -355,22 +355,23 @@ Assignment 3
``TAlign`` and ``TRow`` are defined as in the previous example program.
The type ``Iterator<TRow>::Type`` will be used to iterate over the rows of the alignment.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment3.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment3.cpp
:fragment: main
- In the next step we initialize our Align object ``align`` with the corresponding source files.
+ In the next step we initialize our input StringSet ``strings`` and pass it as argument to the constructor of the AlignmentGraph ``alignG``.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment3.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment3.cpp
:fragment: init
- Now we compute the alignment using Myers-Hirschberg algorithm by specifying the correct tag at the end of the function.
+ Now we compute the alignment using the levenshtein distance and a AlignConfig object to set the correct free end-gaps.
+ In this example we put the shorter sequence on the vertical axis of our alignment matrix.
+ Hence, we have to use free end-gaps in the first and last row, which corresponds to the first and the last parameter in the AlignConfig object.
+ If you add the shorter sequence at first to ``strings``, then you simply have to flip the ``bool`` values of the AlignConfig object.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment3.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment3.cpp
:fragment: alignment
- Finally, we iterate over both gap structures and print the view positions of the gaps within the sequences.
-
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_global_assignment3.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_global_assignment3.cpp
:fragment: view
The output of the program is as follows.
@@ -402,24 +403,24 @@ SeqAn offers the classical Smith-Waterman algorithm that computes the best local
We are going to demonstrate the usage of both in the following example where first the best local alignment of two character strings and then all local alignments of two DNA sequences with a score greater than or equal to 4 are computed.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_pairwise_local.cpp
:fragment: main
Let's start with initializing the :dox:`Align` object to contain the two sequences.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_pairwise_local.cpp
:fragment: init1
Now the best alignment given the scoring parameters is computed by the function :dox:`localAlignment`.
The returned score value is printed directly, and the alignment itself in the next line.
The functions :dox:`Gaps#clippedBeginPosition` and :dox:`Gaps#clippedEndPosition` can be used to retrieve the begin and end position of the matching subsequences within the original sequences.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_pairwise_local.cpp
:fragment: ali1
Next, several local alignments of the two given DNA sequences are going to be computed. First, the :dox:`Align` object is created.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_pairwise_local.cpp
:fragment: init2
A :dox:`LocalAlignmentEnumerator` object needs to be initialized on the :dox:`Align` object.
@@ -427,7 +428,7 @@ In addition to the Align object and the scoring scheme, we now also pass the ``f
The ``WatermanEggert`` tag specifies the desired Waterman-Eggert algorithm.
While the score of the local alignment satisfies the minimal score cutoff, the alignments are printed with their scores and the subsequence begin and end positions.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_local.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_pairwise_local.cpp
:fragment: ali2
Here is the output of the first part of our example program:
@@ -484,17 +485,17 @@ Assignment 4
The usual includes.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_local_assignment1.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_pairwise_local_assignment1.cpp
:fragment: main
The initialization of the :dox:`Align` object.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_local_assignment1.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_pairwise_local_assignment1.cpp
:fragment: init
Computing the three best alignments with the desired scoring parameters:
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_local_assignment1.cpp
+ .. includefrags:: demos/tutorial/alignments/alignment_pairwise_local_assignment1.cpp
:fragment: ali
The resulting output is as follows.
@@ -547,13 +548,13 @@ In case of equality, the alignment is equivalent to the hamming distance problem
Let's compute a banded alignment.
The first step is to write the ``main`` function body including the type definitions and the initializations.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_banded.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_banded.cpp
:fragment: main
After we initialized everything, we will compute the banded alignment.
We pass the values ``-2`` for the lower diagonal and ``2`` for the upper diagonal.
-.. includefrags:: demos/tutorial/pairwise_sequence_alignment/alignment_banded.cpp
+.. includefrags:: demos/tutorial/alignments/alignment_banded.cpp
:fragment: alignment
And here is the output:
@@ -598,37 +599,37 @@ Assignment 5
Solution (Step 1)
.. container:: foldable
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5_step1.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step1.cpp
:fragment: main
Solution (Step 2)
.. container:: foldable
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5_step2.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step2.cpp
:fragment: main
Solution (Step 3)
.. container:: foldable
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5_step3.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step3.cpp
:fragment: main
Solution (Step 4)
.. container:: foldable
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5_step4.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step4.cpp
:fragment: main
Solution (Step 5)
.. container:: foldable
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5_step5.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step5.cpp
:fragment: main
Solution (Step 6)
.. container:: foldable
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5_step6.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5_step6.cpp
:fragment: main
Complete Solution (and more explanations)
@@ -636,7 +637,7 @@ Assignment 5
Write the `main` body of the program with type definition and initalization of the used data structures.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
:fragment: main
In the first part of the algorithm we implement am alignment based verification process to identify positions in the `database` at which we can find our pattern with at most `2` errors.
@@ -644,7 +645,7 @@ Assignment 5
If the score is greater or equal than `-2`, then we have found a hit.
We store the begin position of the hit in `locations`.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
:fragment: verification
In the second part of the algorithm we iterate over all reported locations.
@@ -652,35 +653,35 @@ Assignment 5
We also compute a band allowing at most `2` errors in either direction.
Don't forget to clear the gaps in each iteration, otherwise we might encounter wrong alignments.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
:fragment: alignment
In the next part we determine the cigar string for the matched pattern.
We have to remove leading and trailing gaps in the `gapsPattern` object using the functions :dox:`Gaps#setClippedBeginPosition` and :dox:`Gaps#setClippedEndPosition`.
We also need to set the clipped begin position for the `gapsText` object such that both Gaps begin at the same position.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
:fragment: cigar
First, we identify insertions using the functions :dox:`GapsIterator#isGap` and :dox:`GapsIterator#countGaps`.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
:fragment: cigarInsertion
We do the same to identify deletions.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
:fragment: cigarDeletion
If there is neither an insertion nor a deletion, then there must be a match or a mismatch. As long as we encounter matches we move forward in the Gaps structures and count the number of consecutive matches. When we are done we report the match count.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
:fragment: cigarMatch
In a similar procedure we determine the consecutive substitutions.
Finally we print out the position of the hit, its total number of edits and the corresponding cigar string.
- .. includefrags:: demos/tutorial/pairwise_sequence_alignment/assignment5.cpp
+ .. includefrags:: demos/tutorial/alignments/pairwise_sequence_alignment_assignment5.cpp
:fragment: cigarMismatch
Here is the output of this program.
diff --git a/manual/source/Tutorial/ParsingCommandLineArguments.rst b/manual/source/Tutorial/ParsingCommandLineArguments.rst
index 7b7dd0d..af4d879 100644
--- a/manual/source/Tutorial/ParsingCommandLineArguments.rst
+++ b/manual/source/Tutorial/ParsingCommandLineArguments.rst
@@ -59,7 +59,47 @@ A First Working Example
The following small program will (1) setup a :dox:`ArgumentParser` object named ``parser``, (2) parse the command line, (3) exit the program if there were errors or the user requested a functionality that is already built into the command line parser, and (4) printing the settings given from the command line.
Such functionality is printing the help, for example.
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1.cpp
+.. code-block:: cpp
+
+ #include <iostream>
+
+ #include <seqan/arg_parse.h>
+
+ int main(int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
+
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ // Extract option values and print them.
+ unsigned period = 0;
+ getOptionValue(period, parser, "period");
+ bool toUppercase = isSet(parser, "uppercase");
+ seqan::CharString text;
+ getArgumentValue(text, parser, 0);
+
+ std::cout << "period \t" << period << '\n'
+ << "uppercase\t" << toUppercase << '\n'
+ << "text \t" << text << '\n';
+
+ return 0;
+ }
Let us first play a bit around with the program before looking at it in detail.
@@ -112,21 +152,29 @@ A Detailed Look
Let us look at this program in detail now. The required SeqAn module is ``seqan/arg_parse.h``.
After inclusion, we can create an :dox:`ArgumentParser` object:
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
- :fragment: object
+.. code-block:: cpp
+
+ seqan::ArgumentParser parser("modify_string");
Then, we define a positional argument using the function :dox:`ArgumentParser#addArgument`.
The function accepts the parser and an :dox:`ArgParseArgument` object.
We call the :dox:`ArgParseArgument` constructor with three parameters: the type of the argument (a string), and a label for the documentation.
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
- :fragment: argument
+.. code-block:: cpp
+
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
Then, we add options to the parser using :dox:`ArgumentParser#addOption`.
We pass the parser and an :dox:`ArgParseOption` object.
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
- :fragment: option
+.. code-block:: cpp
+
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
The :dox:`ArgParseOption` constructor is called in two different variants.
Within the first :dox:`ArgumentParser#addOption` call, we construct an integer option with a short and long name, a documentation string, and give it the label "INT".
@@ -161,8 +209,9 @@ If it has two arguments and the last one is a list then ``arg1``, ``arg2``, and
Next, we parse the command line using :dox:`ArgumentParser#parse`.
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
- :fragment: parse
+.. code-block:: cpp
+
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
We then check the result of the parsing operation.
The result is ``seqan::ArgumentParser::PARSE_ERROR`` if there was a problem with the parsing.
@@ -174,15 +223,26 @@ The following two lines have the following behaviour.
If the parsing went through and no special functionality was triggered then the branch is not taken.
Otherwise, the method ``main()`` is left with ``1`` in case of errors and with ``0`` in case special behaviour was triggered (e.g. the help was printed).
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
- :fragment: check
+.. code-block:: cpp
+
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
Finally, we access the values from the command line using the :dox:`ArgumentParser`.
The function :dox:`ArgumentParser#getOptionValue` allows us to access the values from the command line after casting into C++ types.
The function :dox:`ArgumentParser#isSet` allows us to query whether a given argument was set on the command line.
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example1_detailed.cpp
- :fragment: print
+.. code-block:: cpp
+
+ unsigned period = 0;
+ getOptionValue(period, parser, "period");
+ bool toUppercase = isSet(parser, "uppercase");
+ seqan::CharString text;
+ getArgumentValue(text, parser, 0);
+
+ std::cout << "period \t" << period << '\n'
+ << "uppercase\t" << toUppercase << '\n'
+ << "text \t" << text << '\n';
Assignment 1
""""""""""""
@@ -220,7 +280,51 @@ Assignment 2
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment2_solution.cpp
+ .. code-block:: cpp
+
+ #include <iostream>
+
+ #include <seqan/arg_parse.h>
+
+ int main(int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
+
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+ addOption(parser, seqan::ArgParseOption(
+ "L", "lowercase", "Select to-lowercase as operation."));
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ // Extract option values and print them.
+ unsigned period = 0;
+ getOptionValue(period, parser, "period");
+ bool toUppercase = isSet(parser, "uppercase");
+ bool toLowercase = isSet(parser, "lowercase");
+ seqan::CharString text;
+ getArgumentValue(text, parser, 0);
+
+ std::cout << "period \t" << period << '\n'
+ << "uppercase\t" << toUppercase << '\n'
+ << "lowercase\t" << toLowercase << '\n'
+ << "text \t" << text << '\n';
+
+ return 0;
+ }
Using Default Values
^^^^^^^^^^^^^^^^^^^^
@@ -252,7 +356,50 @@ Assignment 3
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment3_solution.cpp
+ .. code-block:: cpp
+
+ #include <iostream>
+
+ #include <seqan/arg_parse.h>
+
+ int main(int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
+
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ setDefaultValue(parser, "period", "1");
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ // Extract option values and print them.
+ unsigned period = 0;
+ getOptionValue(period, parser, "period");
+ bool toUppercase = isSet(parser, "uppercase");
+ bool toLowercase = isSet(parser, "lowercase");
+ seqan::CharString text;
+ getArgumentValue(text, parser, 0);
+
+ std::cout << "period \t" << period << '\n'
+ << "uppercase\t" << toUppercase << '\n'
+ << "lowercase\t" << toLowercase << '\n'
+ << "text \t" << text << '\n';
+
+ return 0;
+ }
Best Practice: Using Option Structs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -282,7 +429,63 @@ Click ''more...'' to see the whole updated program.
.. container:: foldable
- .. includefrags:: demos/tutorial/parsing_command_line_arguments/example_with_struct.cpp
+ .. code-block:: cpp
+
+ #include <iostream>
+
+ #include <seqan/arg_parse.h>
+
+ struct ModifyStringOptions
+ {
+ unsigned period;
+ bool toUppercase;
+ bool toLowercase;
+ seqan::CharString text;
+
+ ModifyStringOptions() :
+ period(1), toUppercase(false), toLowercase(false)
+ {}
+ };
+
+ int main(int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
+
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ setDefaultValue(parser, "period", "1");
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+ addOption(parser, seqan::ArgParseOption(
+ "L", "lowercase", "Select to-lowercase as operation."));
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ // Extract option values and print them.
+ ModifyStringOptions options;
+ getOptionValue(options.period, parser, "period");
+ options.toUppercase = isSet(parser, "uppercase");
+ options.toLowercase = isSet(parser, "lowercase");
+ getArgumentValue(options.text, parser, 0);
+
+ std::cout << "period \t" << options.period << '\n'
+ << "uppercase\t" << options.toUppercase << '\n'
+ << "lowercase\t" << options.toLowercase << '\n'
+ << "text \t" << options.text << '\n';
+
+ return 0;
+ }
Best Practice: Wrapping Parsing In Its Own Function
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -299,8 +502,85 @@ Click **more...** to see the updated program.
.. container:: foldable
- .. includefrags:: demos/tutorial/parsing_command_line_arguments/example_with_own_function.cpp
-
+ .. code-block:: cpp
+
+ #include <iostream>
+
+ #include <seqan/arg_parse.h>
+
+ struct ModifyStringOptions
+ {
+ unsigned period;
+ bool toUppercase;
+ bool toLowercase;
+ seqan::CharString text;
+
+ ModifyStringOptions() :
+ period(1), toUppercase(false), toLowercase(false)
+ {}
+ };
+
+ seqan::ArgumentParser::ParseResult
+ parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+
+ // We require one argument.
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
+
+ // Define Options
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ setDefaultValue(parser, "period", "1");
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+ addOption(parser, seqan::ArgParseOption(
+ "L", "lowercase", "Select to-lowercase as operation."));
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // Only extract options if the program will continue after parseCommandLine()
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res;
+
+ // Extract option values.
+ getOptionValue(options.period, parser, "period");
+ options.toUppercase = isSet(parser, "uppercase");
+ options.toLowercase = isSet(parser, "lowercase");
+ getArgumentValue(options.text, parser, 0);
+
+ // If both to-uppercase and to-lowercase were selected then this is an error.
+ if (options.toUppercase && options.toLowercase)
+ {
+ std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
+ return seqan::ArgumentParser::PARSE_ERROR;
+ }
+
+ return seqan::ArgumentParser::PARSE_OK;
+ }
+
+ int main(int argc, char const ** argv)
+ {
+ // Parse the command line.
+ ModifyStringOptions options;
+ seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ std::cout << "period \t" << options.period << '\n'
+ << "uppercase\t" << options.toUppercase << '\n'
+ << "lowercase\t" << options.toLowercase << '\n'
+ << "text \t" << options.text << '\n';
+
+ return 0;
+ }
Feature-Complete Example Program
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -309,8 +589,111 @@ The command line parsing part of our program is done now.
Let us now add a function ``modifyText()`` that is given a ``ModifyStringOptions`` object and text and modifies the text.
We simply use the C standard library functios ``toupper()`` and ``tolower()`` from the header ``<cctype>`` for converting to upper and lower case.
-.. includefrags:: demos/tutorial/parsing_command_line_arguments/example_with_modifyString.cpp
+.. code-block:: cpp
+
+ #include <iostream>
+ #include <seqan/arg_parse.h>
+
+ struct ModifyStringOptions
+ {
+ unsigned period;
+ bool toUppercase;
+ bool toLowercase;
+ seqan::CharString text;
+
+ ModifyStringOptions() :
+ period(1), toUppercase(false), toLowercase(false)
+ {}
+ };
+
+ seqan::ArgumentParser::ParseResult
+ parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+
+ // We require one argument.
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
+
+ // Define Options
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ setDefaultValue(parser, "period", "1");
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+ addOption(parser, seqan::ArgParseOption(
+ "L", "lowercase", "Select to-lowercase as operation."));
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // Only extract options if the program will continue after parseCommandLine()
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res;
+
+ // Extract option values.
+ getOptionValue(options.period, parser, "period");
+ options.toUppercase = isSet(parser, "uppercase");
+ options.toLowercase = isSet(parser, "lowercase");
+ seqan::getArgumentValue(options.text, parser, 0);
+
+ // If both to-uppercase and to-lowercase were selected then this is an error.
+ if (options.toUppercase && options.toLowercase)
+ {
+ std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
+ return seqan::ArgumentParser::PARSE_ERROR;
+ }
+
+ return seqan::ArgumentParser::PARSE_OK;
+ }
+
+ seqan::CharString modifyString(seqan::CharString const & text,
+ ModifyStringOptions const & options)
+ {
+ seqan::CharString result;
+
+ if (options.toLowercase)
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ {
+ if (i % options.period == 0u)
+ appendValue(result, tolower(text[i]));
+ else
+ appendValue(result, text[i]);
+ }
+ }
+ else
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ {
+ if (i % options.period == 0u)
+ appendValue(result, toupper(text[i]));
+ else
+ appendValue(result, text[i]);
+ }
+ }
+
+ return result;
+ }
+
+ int main(int argc, char const ** argv)
+ {
+ // Parse the command line.
+ ModifyStringOptions options;
+ seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ std::cout << modifyString(options.text, options) << '\n';
+
+ return 0;
+ }
Setting Restrictions
^^^^^^^^^^^^^^^^^^^^
@@ -359,8 +742,119 @@ Assignment 4
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment4_solution.cpp
-
+ .. code-block:: cpp
+
+ #include <iostream>
+
+ #include <seqan/arg_parse.h>
+
+ struct ModifyStringOptions
+ {
+ unsigned period;
+ bool toUppercase;
+ bool toLowercase;
+ seqan::CharString text;
+
+ ModifyStringOptions() :
+ period(1), toUppercase(false), toLowercase(false)
+ {}
+ };
+
+ seqan::ArgumentParser::ParseResult
+ parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+
+ // We require one argument.
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
+
+ // Define Options
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ setMinValue(parser, "period", "1");
+ setDefaultValue(parser, "period", "1");
+ addOption(parser, seqan::ArgParseOption(
+ "r", "range", "Range of the text to modify.",
+ seqan::ArgParseArgument::INTEGER, "INT", false, 2));
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+ addOption(parser, seqan::ArgParseOption(
+ "L", "lowercase", "Select to-lowercase as operation."));
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // Only extract options if the program will continue after parseCommandLine()
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res;
+
+ // Extract option values.
+ getOptionValue(options.period, parser, "period");
+ getOptionValue(options.rangeBegin, parser, "range", 0);
+ getOptionValue(options.rangeEnd, parser, "range", 1);
+ options.toUppercase = isSet(parser, "uppercase");
+ options.toLowercase = isSet(parser, "lowercase");
+ seqan::getArgumentValue(options.text, parser, 0);
+
+ // If both to-uppercase and to-lowercase were selected then this is an error.
+ if (options.toUppercase && options.toLowercase)
+ {
+ std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
+ return seqan::ArgumentParser::PARSE_ERROR;
+ }
+
+ return seqan::ArgumentParser::PARSE_OK;
+ }
+
+ seqan::CharString modifyString(seqan::CharString const & text,
+ ModifyStringOptions const & options)
+ {
+ seqan::CharString result;
+
+ if (options.toLowercase)
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ {
+ if (i >= options.rangeBegin && i < options.rangeEnd &&
+ (i % options.period == 0u))
+ appendValue(result, tolower(text[i]));
+ else
+ appendValue(result, text[i]);
+ }
+ }
+ else
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ {
+ if (i >= options.rangeBegin && i < options.rangeEnd &&
+ (i % options.period == 0u))
+ appendValue(result, toupper(text[i]));
+ else
+ appendValue(result, text[i]);
+ }
+ }
+
+ return result;
+ }
+
+ int main(int argc, char const ** argv)
+ {
+ // Parse the command line.
+ ModifyStringOptions options;
+ seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ std::cout << modifyString(options.text, options) << '\n';
+
+ return 0;
+ }
Marking Options as Required
^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -458,7 +952,130 @@ Assignment 5
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment5_solution.cpp
+ .. code-block:: cpp
+
+ #include <iostream>
+
+ #include <seqan/arg_parse.h>
+
+ struct ModifyStringOptions
+ {
+ unsigned period;
+ unsigned rangeBegin, rangeEnd;
+ bool toUppercase;
+ bool toLowercase;
+ seqan::CharString inputFileName;
+
+ ModifyStringOptions() :
+ period(1), rangeBegin(0), rangeEnd(0),toUppercase(false),
+ toLowercase(false)
+ {}
+ };
+
+ seqan::ArgumentParser::ParseResult
+ parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+
+ // Define Options
+ addOption(parser, seqan::ArgParseOption(
+ "I", "input-file",
+ "A text file that will printed with the modifications applied.",
+ seqan::ArgParseArgument::INPUT_FILE));
+ setValidValues(parser, "input-file", "txt");
+ setRequired(parser, "input-file");
+
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ setMinValue(parser, "period", "1");
+ setDefaultValue(parser, "period", "1");
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+ addOption(parser, seqan::ArgParseOption(
+ "L", "lowercase", "Select to-lowercase as operation."));
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // Only extract options if the program will continue after parseCommandLine()
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res;
+
+ // Extract option values.
+ getOptionValue(options.period, parser, "period");
+ options.toUppercase = isSet(parser, "uppercase");
+ options.toLowercase = isSet(parser, "lowercase");
+ getOptionValue(options.inputFileName, parser, "input-file");
+
+ // If both to-uppercase and to-lowercase were selected then this is an error.
+ if (options.toUppercase && options.toLowercase)
+ {
+ std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
+ return seqan::ArgumentParser::PARSE_ERROR;
+ }
+
+ return seqan::ArgumentParser::PARSE_OK;
+ }
+
+ seqan::CharString modifyString(seqan::CharString const & text,
+ ModifyStringOptions const & options)
+ {
+ seqan::CharString result;
+
+ if (options.toLowercase)
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ {
+ if (i % options.period == 0u)
+ appendValue(result, tolower(text[i]));
+ else
+ appendValue(result, text[i]);
+ }
+ }
+ else
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ {
+ if (i % options.period == 0u)
+ appendValue(result, toupper(text[i]));
+ else
+ appendValue(result, text[i]);
+ }
+ }
+
+ return result;
+ }
+
+ int main(int argc, char const ** argv)
+ {
+ // Parse the command line.
+ ModifyStringOptions options;
+ seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ std::fstream inFile(toCString(options.inputFileName), std::ios::binary | std::ios::in);
+ if (inFile.good())
+ {
+ std::cerr << "ERROR: Could not open input file " << options.inputFileName << '\n';
+ return 1;
+ }
+ seqan::CharString text;
+ while (inFile.good())
+ {
+ char c = inFile.get();
+ if (inFile.good())
+ appendValue(text, c);
+ }
+ std::cout << modifyString(text, options);
+
+ return 0;
+ }
Tuples
^^^^^^
@@ -510,8 +1127,114 @@ Assignment 6
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/parsing_command_line_arguments/assignment6_solution.cpp
-
+ .. code-block:: cpp
+
+ #include <iostream>
+
+ #include <seqan/arg_parse.h>
+
+ struct ModifyStringOptions
+ {
+ unsigned period;
+ unsigned rangeBegin, rangeEnd;
+ bool toUppercase;
+ bool toLowercase;
+ seqan::CharString text;
+
+ ModifyStringOptions() :
+ period(1), rangeBegin(0), rangeEnd(0),toUppercase(false),
+ toLowercase(false)
+ {}
+ };
+
+ seqan::ArgumentParser::ParseResult
+ parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+
+ // We require one argument.
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
+
+ // Define Options
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ setMinValue(parser, "period", "1");
+ setDefaultValue(parser, "period", "1");
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+ addOption(parser, seqan::ArgParseOption(
+ "L", "lowercase", "Select to-lowercase as operation."));
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // Only extract options if the program will continue after parseCommandLine()
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res;
+
+ // Extract option values.
+ getOptionValue(options.period, parser, "period");
+ options.toUppercase = isSet(parser, "uppercase");
+ options.toLowercase = isSet(parser, "lowercase");
+ seqan::getArgumentValue(options.text, parser, 0);
+
+ // If both to-uppercase and to-lowercase were selected then this is an error.
+ if (options.toUppercase && options.toLowercase)
+ {
+ std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
+ return seqan::ArgumentParser::PARSE_ERROR;
+ }
+
+ return seqan::ArgumentParser::PARSE_OK;
+ }
+
+ seqan::CharString modifyString(seqan::CharString const & text,
+ ModifyStringOptions const & options)
+ {
+ seqan::CharString result;
+
+ if (options.toLowercase)
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ {
+ if (i % options.period == 0u)
+ appendValue(result, tolower(text[i]));
+ else
+ appendValue(result, text[i]);
+ }
+ }
+ else
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ {
+ if (i % options.period == 0u)
+ appendValue(result, toupper(text[i]));
+ else
+ appendValue(result, text[i]);
+ }
+ }
+
+ return result;
+ }
+
+ int main(int argc, char const ** argv)
+ {
+ // Parse the command line.
+ ModifyStringOptions options;
+ seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ std::cout << modifyString(options.text, options) << '\n';
+
+ return 0;
+ }
Embedding Rich Documentation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -583,8 +1306,124 @@ Click **more...** to see the complete program.
.. container:: foldable
- .. includefrags:: demos/tutorial/parsing_command_line_arguments/final_solution.cpp
-
+ .. code-block:: cpp
+
+ #include <iostream>
+
+ #include <seqan/arg_parse.h>
+
+ struct ModifyStringOptions
+ {
+ unsigned period;
+ bool toUppercase;
+ bool toLowercase;
+ seqan::CharString text;
+
+ ModifyStringOptions() :
+ period(1), toUppercase(false), toLowercase(false)
+ {}
+ };
+
+ seqan::ArgumentParser::ParseResult
+ parseCommandLine(ModifyStringOptions & options, int argc, char const ** argv)
+ {
+ // Setup ArgumentParser.
+ seqan::ArgumentParser parser("modify_string");
+ // Set short description, version, and date.
+ setShortDescription(parser, "String Modifier");
+ setVersion(parser, "1.0");
+ setDate(parser, "July 2012");
+
+ // Define usage line and long description.
+ addUsageLine(parser,
+ "[\\fIOPTIONS\\fP] \"\\fITEXT\\fP\"");
+ addDescription(parser,
+ "This program allows simple character modifications to "
+ "each i-th character.");
+
+ // We require one argument.
+ addArgument(parser, seqan::ArgParseArgument(
+ seqan::ArgParseArgument::STRING, "TEXT"));
+
+ // Define Options -- Section Modification Options
+ addSection(parser, "Modification Options");
+ addOption(parser, seqan::ArgParseOption(
+ "i", "period", "Period to use for the index.",
+ seqan::ArgParseArgument::INTEGER, "INT"));
+ setDefaultValue(parser, "period", "1");
+ addOption(parser, seqan::ArgParseOption(
+ "U", "uppercase", "Select to-uppercase as operation."));
+ addOption(parser, seqan::ArgParseOption(
+ "L", "lowercase", "Select to-lowercase as operation."));
+
+ // Add Examples Section.
+ addTextSection(parser, "Examples");
+ addListItem(parser,
+ "\\fBmodify_string\\fP \\fB-U\\fP \\fIveryverylongword\\fP",
+ "Print upper case version of \"veryverylongword\"");
+ addListItem(parser,
+ "\\fBmodify_string\\fP \\fB-L\\fP \\fB-i\\fP \\fI3\\fP "
+ "\\fIveryverylongword\\fP",
+ "Print \"veryverylongword\" with every third character "
+ "converted to upper case.");
+
+ // Parse command line.
+ seqan::ArgumentParser::ParseResult res = seqan::parse(parser, argc, argv);
+
+ // Only extract options if the program will continue after parseCommandLine()
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res;
+
+ // Extract option values.
+ getOptionValue(options.period, parser, "period");
+ options.toUppercase = isSet(parser, "uppercase");
+ options.toLowercase = isSet(parser, "lowercase");
+ seqan::getArgumentValue(options.text, parser, 0);
+
+ // If both to-uppercase and to-lowercase were selected then this is an error.
+ if (options.toUppercase && options.toLowercase)
+ {
+ std::cerr << "ERROR: You cannot specify both to-uppercase and to-lowercase!\n";
+ return seqan::ArgumentParser::PARSE_ERROR;
+ }
+
+ return seqan::ArgumentParser::PARSE_OK;
+ }
+
+ seqan::CharString modifyString(seqan::CharString const & text,
+ ModifyStringOptions const & options)
+ {
+ seqan::CharString result;
+
+ if (options.toLowercase)
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ appendValue(result, tolower(text[i]));
+ }
+ else
+ {
+ for (unsigned i = 0; i < length(text); ++i)
+ appendValue(result, toupper(text[i]));
+ }
+
+ return result;
+ }
+
+ int main(int argc, char const ** argv)
+ {
+ // Parse the command line.
+ ModifyStringOptions options;
+ seqan::ArgumentParser::ParseResult res = parseCommandLine(options, argc, argv);
+
+ // If parsing was not successful then exit with code 1 if there were errors.
+ // Otherwise, exit with code 0 (e.g. help was printed).
+ if (res != seqan::ArgumentParser::PARSE_OK)
+ return res == seqan::ArgumentParser::PARSE_ERROR;
+
+ std::cout << modifyString(options.text, options) << '\n';
+
+ return 0;
+ }
Let us look at the resulting documentation.
Simply call the new program with the ``--help`` option.
diff --git a/manual/source/Tutorial/PatternMatching.rst b/manual/source/Tutorial/PatternMatching.rst
index 7272115..011909a 100644
--- a/manual/source/Tutorial/PatternMatching.rst
+++ b/manual/source/Tutorial/PatternMatching.rst
@@ -58,12 +58,12 @@ Exact Search
The following code snippet illustrates the usage of online search algorithms in SeqAn using the example of the Hoorspool algorithm :cite:`Horspool1980`.
We begin by creating two strings of type ``char`` containing the ``haystack`` and the ``needle``.
-.. includefrags:: demos/tutorial/pattern_matching/find_exact.cpp
+.. includefrags:: demos/tutorial/find/find_exact.cpp
:fragment: initialization
We then create :dox:`Finder` and :dox:`Pattern` objects of these strings and choose :dox:`HorspoolPattern Horspool` as the specialization in the second template argument of :dox:`Pattern`.
-.. includefrags:: demos/tutorial/pattern_matching/find_exact.cpp
+.. includefrags:: demos/tutorial/find/find_exact.cpp
:fragment: output
Program output:
@@ -108,7 +108,7 @@ Currently the following exact online algorithms for searching a single sequence
:dox:`AhoCorasickPattern AhoCorasick`
:cite:`Aho1975`
-:dox:`MultipleShiftAndPattern MultipleShiftAnd`
+:dox:`MultipleShiftAndPattern MultiShiftAnd`
Extension of :dox:`ShiftAndPattern ShiftAnd`, should only be used if the sum of needle lengths doesn't exceed the machine word size.
Assignment 1
@@ -127,7 +127,7 @@ Assignment 1
Hint
Online search algorithms for multiple sequences simply expect needles of type ``String<String<...> >``.
- .. includefrags:: demos/tutorial/pattern_matching/assignment1.cpp
+ .. includefrags:: demos/tutorial/find/find_assignment1.cpp
You can use the specialization :dox:`WuManberPattern WuManber`.
@@ -136,7 +136,7 @@ Assignment 1
.. container:: foldable
- .. includefrags:: demos/tutorial/pattern_matching/assignment1_solution.cpp
+ .. includefrags:: demos/tutorial/find/find_assignment1_solution.cpp
We use a :dox:`Pattern` specialized with the :dox:`WuManberPattern WuManber` algorithm for the search and initialize it with our ``needles`` string.
For every match found by :dox:`Finder#find` we output the begin and end position and the match region in the ``haystack`` as well as the index of the found ``needle`` which is returned by ``position(pattern)``.
@@ -161,7 +161,7 @@ We want to find all semi-global alignments of a ``needle`` "more" with a :dox:`S
Again, we create ``haystack`` and ``needle`` strings first:
-.. includefrags:: demos/tutorial/pattern_matching/find_approx.cpp
+.. includefrags:: demos/tutorial/find/find_approx.cpp
:fragment: initialization
We then create :dox:`Finder` and :dox:`Pattern` objects of these strings and choose :dox:`DPSearchPattern DPSearch` as the specialization in the second template argument of :dox:`Pattern`.
@@ -172,7 +172,7 @@ If such a semi-global alignment end position is found the begin position is sear
Please note that we have to set the minimum score to the score of the match found (:dox:`LocalAlignmentEnumerator#getScore`) in order to find the begin of a best match.
We then output all begin and end positions and the corresponding ``haystack`` segment for each match found.
-.. includefrags:: demos/tutorial/pattern_matching/find_approx.cpp
+.. includefrags:: demos/tutorial/find/find_approx.cpp
:fragment: output
Program output:
@@ -219,7 +219,7 @@ Assignment 2
.. container:: foldable
- .. includefrags:: demos/tutorial/pattern_matching/assignment2_solution.cpp
+ .. includefrags:: demos/tutorial/find/find_assignment2_solution.cpp
We again set the ``needle`` to ``"more"``.
We then change the specialization tag of the :dox:`Pattern` to :dox:`MyersPattern Myers` with default arguments.
@@ -256,18 +256,18 @@ The following source illustrates the usage of an index based search in SeqAn usi
This is the default index specialization if no second template argument for the index is given.
We begin to create an index object of our ``haystack`` ``"tobeornottobe"`` and a ``needle`` ``"be"``.
-.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp
+.. includefrags:: demos/tutorial/find/find_index.cpp
:fragment: initialization
We proceed to create a :dox:`Pattern` of the needle and conduct the search in the usual way.
-.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp
+.. includefrags:: demos/tutorial/find/find_index.cpp
:fragment: output
Instead of creating and using a pattern solely storing the ``needle`` we can pass the needle directly to :dox:`Finder#find`.
Please note that an :dox:`Index` based :dox:`Finder` has to be reset with :dox:`Finder#clear` before conducting another search.
-.. includefrags:: demos/tutorial/pattern_matching/find_index.cpp
+.. includefrags:: demos/tutorial/find/find_index.cpp
:fragment: output_short
Program output:
@@ -282,12 +282,12 @@ Program output:
All indices also support :dox:`StringSet` texts and can therefore be used to search multiple ``haystacks`` as the following example shows.
We simply exchange the :dox:`CharString` of the haystack with a :dox:`StringSet` of :dox:`CharString` and append some strings to it.
-.. includefrags:: demos/tutorial/pattern_matching/find_index_multiple.cpp
+.. includefrags:: demos/tutorial/find/find_index_multiple.cpp
:fragment: initialization
The rest of the program remains unchanged.
-.. includefrags:: demos/tutorial/pattern_matching/find_index_multiple.cpp
+.. includefrags:: demos/tutorial/find/find_index_multiple.cpp
:fragment: output
.. code-block:: console
@@ -330,7 +330,7 @@ Assignment 3
.. container:: foldable
- .. includefrags:: demos/tutorial/pattern_matching/assignment3_solution.cpp
+ .. includefrags:: demos/tutorial/find/find_assignment3_solution.cpp
We simply add a second template argument to the definition of the :dox:`Index` as described in the documentation of the :dox:`OpenAddressingQGramIndex Open Adressing QGram Index`.
As shape we can use an :dox:`UngappedShape` of length 4.
diff --git a/manual/source/Tutorial/QgramIndex.rst b/manual/source/Tutorial/QgramIndex.rst
deleted file mode 100644
index c551602..0000000
--- a/manual/source/Tutorial/QgramIndex.rst
+++ /dev/null
@@ -1,217 +0,0 @@
-.. sidebar:: ToC
-
- .. contents::
-
-
-.. _tutorial-q-gram-index:
-
-Q-gram Index
-------------
-
-Learning Objective
- You will know the features of the q-gram Index, how it can be used for searching and how to access the different fibres.
-
-Difficulty
- Average
-
-Duration
- 1 h
-
-Prerequisites
- :ref:`tutorial-sequences`, :ref:`tutorial-iterators`
-
-The Q-gram Index
-~~~~~~~~~~~~~~~~
-
-A q-gram index can be used to efficiently retrieve all occurrences of a certain q-gram in the text.
-It consists of various tables, called fibres (see :ref:`how-to-access-index-fibres`), to retrieve q-gram positions, q-gram counts, etc.
-However, it has no support for suffix tree iterators.
-A q-gram index must be specialized with a :dox:`Shape` type.
-A :dox:`Shape` defines q, the number of characters in a q-gram and possibly gaps between these characters.
-There are different specializations of :dox:`Shape` available:
-
-+-----------------------+--------------------+----------------------+
-| Specialization | Modifiable | Number of Gaps |
-+=======================+====================+======================+
-| :dox:`UngappedShape` | \- | 0 |
-+-----------------------+--------------------+----------------------+
-| :dox:`SimpleShape` | \+ | 0 |
-+-----------------------+--------------------+----------------------+
-| :dox:`OneGappedShape` | \+ | 0/1 |
-+-----------------------+--------------------+----------------------+
-| :dox:`GappedShape` | \- | any |
-+-----------------------+--------------------+----------------------+
-| :dox:`GenericShape` | \+ | any |
-+-----------------------+--------------------+----------------------+
-
-* \- *fixed at compile time*, \+ *can be changed at runtime*
-
-Each shape evaluates a gapped or ungapped sequence of q characters to a hash value by the Functions :dox:`Shape#hash`, :dox:`Shape#hashNext`, etc.
-For example, the shape ``1101`` represents a 3-gram with one gap of length 1.
-This shape overlayed with the :dox:`Dna` text ``"GATTACA"`` at the third position corresponds to ``"TT-C"``.
-The function :dox:`Shape#hash` converts this 3-gram into :math:`61 = (\mathbf{3} \cdot 4 + \mathbf{3}) \cdot 4 + 1`.
-4 is the alphabet size in this example (see :dox:`FiniteOrderedAlphabetConcept#ValueSize`).
-
-With :dox:`Shape#hash` and :dox:`Shape#hash hashNext`, we can compute the hash values of arbitrary / adjacent q-grams and a loop that outputs the hash values of all overlapping ungapped 3-grams could look as follows:
-
-.. includefrags:: demos/tutorial/q_gram_index/index_qgram_hash.cpp
- :fragment: hash_loop1
-
-Note that the shape not only stores the length and gaps of a q-gram shape but also stores the hash value returned by the last hash/hashNext call.
-This hash value can be retrieved by calling :dox:`Shape#value` on the shape.
-However, one drawback of the example loop above is that the first hash value must be computed with :dox:`Shape#hash` while the hash values of the following overlapping q-grams can more efficiently be computed by :dox:`Shape#hashNext`.
-This complicates the structure of algorithms that need to iterate all hash values, as they have to handle this first hash differently.
-As a remedy, the :dox:`Shape#hashInit` function can be used first and then :dox:`Shape#hashNext` on the first and all following text positions in the same way:
-
-.. includefrags:: demos/tutorial/q_gram_index/index_qgram_hash.cpp
- :fragment: hash_loop2
-
-The q-gram index offers different functions to search or count occurrences of q-grams in an indexed text, see :dox:`IndexQGram#getOccurrences`, :dox:`IndexQGram#countOccurrences`.
-A q-gram index over a :dox:`StringSet` stores occurrence positions in the same way as the ESA index and in the same fibre (FibreSA).
-If only the number of q-grams per sequence are needed the QGramCounts and QGramCountsDir fibres can be used.
-They store pairs ``(seqNo, count)``, ``count``>0, for each q-gram that occurs ``counts`` times in sequence number ``seqNo``.
-
-To efficiently retrieve all occurrence positions or all pairs ``(seqNo, count)`` for a given q-gram, these positions or pairs are stored in contiguous blocks (in QGramSA, QGramCounts fibres), called buckets.
-The begin position of bucket i is stored in directory fibres (QGramDir, QGramCountsDir) at position i, the end position is the begin positions of the bucket i+1.
-The default implementation of the :dox:`IndexQGram` index maps q-gram hash values 1-to-1 to bucket numbers.
-For large q or large alphabets the :dox:`OpenAddressingQGramIndex Open Adressing QGram Index` can be more appropriate as its directories are additionally bound by the text length.
-This is realized by a non-trivial mapping from q-gram hashes to bucket numbers that requires an additional fibre (QGramBucketMap).
-
-For more details on q-gram index fibres see :ref:`how-to-access-index-fibres` or :dox:`QGramIndexFibres QGram Index Fibres`.
-
-Example
-~~~~~~~
-
-We want to construct the q-gram index of the string ``"CATGATTACATA"`` and output the occurrences of the ungapped 3-gram ``"CAT"``.
-As 3 is fixed at compile-time and the shape has no gaps we can use a :dox:`UngappedShape` which is the first template argument of :dox:`IndexQGram`, the second template argument of :dox:`Index`.
-Next we create the string ``"CATGATTACATA"`` and specialize the first index template argument with the type of this string.
-The string can be given to the index constructor.
-
-.. includefrags:: demos/tutorial/q_gram_index/index_qgram.cpp
- :fragment: initialization
-
-To get all occurrences of a q-gram, we first have to hash it with a shape of the same type as the index shape (we can even use the index shape returned by :dox:`IndexQGram#indexShape`).
-The hash value returned by :dox:`Shape#hash` or :dox:`Shape#hashNext` is also stored in the shape and is used by the function :dox:`IndexQGram#getOccurrences` to retrieve all occurrences of our 3-gram.
-
-.. includefrags:: demos/tutorial/q_gram_index/index_qgram.cpp
- :fragment: output
-
-Program output:
-
-.. code-block:: console
-
- 0
- 8
-
-Assignment 1
-""""""""""""
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Write a program that outputs all occurrences of the gapped q-gram "AT-A" in "CATGATTACATA".
-
- Solution
- .. container:: foldable
-
- Before we can create a :dox:`DnaString` index of "CATGATTACATA", we have to choose an appropriate :dox:`Shape`.
- Because our shape ``1101`` is known at compile-time and contains only one gap we could choose :dox:`OneGappedShape`, :dox:`GappedShape`, or :dox:`GenericShape` (see the commented-out code).
- Although the :dox:`GenericShape` could be used for every possible shape, it is a good idea to choose a :dox:`Shape` with restrictions as its :dox:`Shape#hash` functions are more efficient in general.
-
- .. includefrags:: demos/tutorial/q_gram_index/index_assignment5.cpp
- :fragment: initialization
-
- Please note that the :dox:`Shape` object that corresponds to the :dox:`IndexQGram` index is empty initially and has to be set by :dox:`Shape#stringToShape` or :dox:`Shape#resize`.
- This initialization is not necessary for :dox:`Shape` that are defined at compile-time, i.e. :dox:`UngappedShape` and :dox:`GappedShape`.
- To search for "AT-A" we first have to hash it with the index shape or any other :dox:`Shape` with the same bitmap.
- The we can use :dox:`IndexQGram#getOccurrences` to output all matches.
-
- .. includefrags:: demos/tutorial/q_gram_index/index_assignment5.cpp
- :fragment: output
-
- .. tip::
-
- Instead of ``length(getOccurrences(...))`` we could have used :dox:`IndexQGram#countOccurrences`.
- But beware that :dox:`IndexQGram#countOccurrences` requires only the ``QGram_Dir`` fibre, whereas :dox:`IndexQGram#getOccurrences` requires both ``QGram_Dir`` and ``QGram_SA``, see :ref:`how-to-access-index-fibres`.
- Because ``QGram_SA`` can be much more efficiently constructed during the construction of ``QGram_Dir``, ``QGram_Dir`` would be constructed twice.
-
- Program output:
-
- .. code-block:: console
-
- 1
- 4
-
-Assignment 2
-""""""""""""
-
-.. container:: assignment
-
- Type
- Review
-
- Objective
- Create and output a matrix M where M(i,j) is the number of common ungapped 5-grams between sequence i and sequence j for 3 random :dox:`Dna` sequences, each not longer than 200 characters.
- Optional: Run the matrix calculation twice, once for an :dox:`IndexQGram` and once for an :dox:`OpenAddressingQGramIndex Open Adressing QGram Index` and output the directory sizes (QGram_Dir, QGram_CountsDir fibre).
-
- Hint
- A common q-gram that occurs :math:`a` times in one and :math:`b` times in the other sequence counts for :math:`\min(a,b)`.
-
- Solution
- .. container:: foldable
-
- For generating random numbers we use the :dox:`MersenneTwisterRng` which is a specialization of the random number generator class :dox:`Rng`.
- The random numbers returned by :dox:`Rng#pickRandomNumber` are arbitrary ``unsigned int`` values which we downscale to values between 0 and 3 and convert into :dox:`Dna` characters.
- The 3 generated strings are of random length and appended to a :dox:`StringSet`.
- The main algorithmus is encapsulated in a template function ``qgramCounting`` to easily switch between the two :dox:`IndexQGram` specializations.
-
- .. includefrags:: demos/tutorial/q_gram_index/index_assignment6.cpp
- :fragment: initialization
-
- The main function expects the :dox:`StringSet` and the :dox:`Index` specialization as a tag.
- First, we define lots of types we need to iterate and access the fibres directly.
- We then notify the index about the fibres we require.
- For storing the common q-grams we use a 2-dimensional :dox:`Matrix` object whose lengths have to be set with ``setLength`` for each dimension.
- The matrix is initialized with zeros by :dox:`Matrix#resize`.
-
- .. includefrags:: demos/tutorial/q_gram_index/index_assignment6.cpp
- :fragment: matrix_init
-
- The main part of the function iterates over the CountsDir fibre.
- Each entry in this directory represents a q-gram bucket, a contiguous interval in the Counts fibre storing for every sequence the q-gram occurs in the number of occurrences in pairs (seqNo,count).
- The interval begin of each bucket is stored in the directory and the interval end is the begin of the next bucket.
- So the inner loops iterate over all non-empty buckets and two pairs (seqNo1,count1) and (seqNo2,count2) indicate that seqNo1 and seqNo2 have a common q-gram.
- At the end the matrix can simply be output by shifting it to the ``cout`` stream.
-
- .. includefrags:: demos/tutorial/q_gram_index/index_assignment6.cpp
- :fragment: matrix_calculation
-
- Please note that the :dox:`OpenAddressingQGramIndex open addressing` q-gram index directories are smaller than the :dox:`IndexQGram` index directories.
-
- Program output:
-
- .. code-block:: console
-
- >Seq0
- TCATTTTCTCGATGAAAGCGTTGACCCCACATATCGTTAGTACTCTTGTACCCT
- >Seq1
- TGATTGTGTAGAAACCGAACTACGGTACCTCCTGTTGGTAGTCACGATAGATTATAAAAGTATGTTCCCACCCTATCGACGAGACTGGCA
- >Seq2
- CCTAGGTGTTTGCGGTGTTGGTACGTGCG
-
- Length of the CountsDir fibre: 1025
-
- Common 5-mers for Seq_i, Seq_j
- 50 4 0
- 0 86 5
- 0 0 25
-
- Length of the CountsDir fibre: 259
-
- Common 5-mers for Seq_i, Seq_j
- 50 4 0
- 0 86 5
- 0 0 25
diff --git a/manual/source/Tutorial/Randomness.rst b/manual/source/Tutorial/Randomness.rst
index 78d3bf8..734c23b 100644
--- a/manual/source/Tutorial/Randomness.rst
+++ b/manual/source/Tutorial/Randomness.rst
@@ -38,13 +38,13 @@ These 32-bit numbers are then used by the :dox:`Pdf` specializations to generate
The following program gives an example.
First, we include the header ``<seqan/random.h>`` to get access to the module's functionality.
-.. includefrags:: demos/tutorial/randomness/examples.cpp
+.. includefrags:: demos/tutorial/random/random_examples.cpp
:fragment: header
During the initialization of the :dox:`Rng` object you have to pass a seed used as a start point for the randomization.
Finally, function :dox:`Rng#pickRandomNumber` picks a random number from a :dox:`Rng`.
-.. includefrags:: demos/tutorial/randomness/examples.cpp
+.. includefrags:: demos/tutorial/random/random_examples.cpp
:fragment: random-number-generation-raw
The output of this fragment is:
@@ -56,14 +56,14 @@ The output of this fragment is:
:dox:`MersenneTwisterRng Mersenne Twister Rng` generates 32-bit ``unsigned`` numbers.
However, you should not rely on any specific type and use :dox:`Value` metafunction instead.
-.. includefrags:: demos/tutorial/randomness/examples.cpp
+.. includefrags:: demos/tutorial/random/random_examples.cpp
:fragment: random-number-generation-metafunction-value
If you prefer a special distribution of the randomly generated numbers you can use the above mentioned specializations of :dox:`Pdf`.
SeqAn currently provides normal, log-normal and uniform probability density functions.
Note, for uniform distributions the range of values is given as a closed interval, i.e. the last value is enclosed in the range.
-.. includefrags:: demos/tutorial/randomness/examples.cpp
+.. includefrags:: demos/tutorial/random/random_examples.cpp
:fragment: random-number-generation-pdf
The output of this fragment is:
@@ -78,7 +78,7 @@ Also note that you can initialize the :dox:`LogNormalPdf Log-Normal Pdf` either
By default, you initialize it with the mean and standard deviation (mu and sigma) of the underlying normal distribution.
Use the tags :dox:`LognormalConstructionTags#MuSigma` and :dox:`LognormalConstructionTags#MeanStdDev` in the constructor to select a mode.
-.. includefrags:: demos/tutorial/randomness/examples.cpp
+.. includefrags:: demos/tutorial/random/random_examples.cpp
:fragment: random-number-generation-log-normal
.. code-block:: console
@@ -92,7 +92,7 @@ Shuffling
The function :dox:`shuffle` allows to shuffle a container, given a random number generator:
-.. includefrags:: demos/tutorial/randomness/examples.cpp
+.. includefrags:: demos/tutorial/random/random_examples.cpp
:fragment: shuffling
The output of this fragment is:
diff --git a/manual/source/Tutorial/Realignment.rst b/manual/source/Tutorial/Realignment.rst
index dea6497..5a514de 100644
--- a/manual/source/Tutorial/Realignment.rst
+++ b/manual/source/Tutorial/Realignment.rst
@@ -45,11 +45,11 @@ Consider the following program.
It creates a fragment store and then reads a small reference (with a length of 2kb) from a FASTA file and also a SAM file with reads spanning a complex indel region at position ~920.
Finally, it prints the multi-read alignment around this position using :dox:`AlignedReadLayout`.
-.. includefrags:: demos/tutorial/realignment/step1.cpp
+.. includefrags:: demos/tutorial/realign/step1.cpp
The output of the program is as follows:
-.. includefrags:: demos/tutorial/realignment/step1.cpp.stdout
+.. includefrags:: demos/tutorial/realign/step1.cpp.stdout
Performing the Realignment
--------------------------
@@ -76,9 +76,9 @@ The parameter ``bandwidth`` controls the bandwidth of the banded alignment used
If ``includeReference`` is ``true`` then the reference is added as a pseudo-read (a new read at the end of the read store).
This can be used for computing alignments of the reads agains the original reference.
-.. includefrags:: demos/tutorial/realignment/step2.cpp
+.. includefrags:: demos/tutorial/realign/step2.cpp
Here is the program's output.
The reference pseudo-read is here shown as the first read (second row) below the reference (first row).
-.. includefrags:: demos/tutorial/realignment/step2.cpp.stdout
+.. includefrags:: demos/tutorial/realign/step2.cpp.stdout
diff --git a/manual/source/Tutorial/SamAndBamIO.rst b/manual/source/Tutorial/SamAndBamIO.rst
deleted file mode 100644
index 2a95deb..0000000
--- a/manual/source/Tutorial/SamAndBamIO.rst
+++ /dev/null
@@ -1,342 +0,0 @@
-.. sidebar:: ToC
-
- .. contents::
-
-
-.. _tutorial-sam-bam-io:
-
-SAM and BAM I/O
-===============
-
-Learning Objective
- In this tutorial, you will learn how to read and write SAM and BAM files.
-
-Difficulty
- Average
-
-Duration
- 1 h (45 min if you know the SAM format)
-
-Prerequisites
- :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`, `SAM Format Specification <http://samtools.sourceforge.net/SAM1.pdf>`_
-
-Overview
---------
-
-.. warning::
-
- Before you can read/write BAM files (bgzf compressed SAM files) you need to make sure that your program is linked against the zlib library.
- When you build your application within the SeqAn build infrastructure, the zlib library is automatically located by looking at the standard places for the library.
- Also have a look at :ref:`tutorial-input-output-overview-formatted-files` to read more about support of compressed file I/O.
- If the macro ``SEQAN_HAS_ZLIB`` is set to ``0`` then reading/writing BAM file format is disabled.
- It is set to ``1`` if the zlib could be found and reading/writing of compressed files is enabled automatically.
- You can read :ref:`build-manual-integration-with-your-own-build-system`, :ref:`build-manual-using-the-find-seqan-cmake-module` and for windows users :ref:`how-to-install-contribs-on-windows` for further notes about using the zlib and libbz2 in your build infrastructure.
-
-This tutorial shows how to read and write SAM and BAM files using the :dox:`BamFileIn` and :dox:`BamFileOut` classes.
-It starts out with a quick reminder on the structure of SAM (and also BAM) files and continues with how to read and write SAM/BAM files and access the tags of a record.
-
-.. important::
-
- Note that this tutorial is targeted at readers that already know about the SAM format.
- If you do not know about the SAM format yet, then this tutorial will be harder for your to understand.
-
-Both SAM and BAM file store multi-read alignments.
-Storing alignments of longer sequences such as contigs from assemblies is also possible, but less common.
-Here, we will focus on multi-read alignments.
-
-SAM files are text files, having one record per line.
-BAM files are just binary, compressed versions of SAM files that have a stricter organization and aim to be more efficiently useable by programs and computers.
-The nuts and bolts of the formats are described in the `SAM Format Specification <http://samtools.sourceforge.net/SAM1.pdf>`_.
-
-The SAM and BAM related I/O functionality in SeqAn focuses on allowing access to these formats in SeqAn with thin abstractions.
-The :ref:`tutorial-fragment-store` Tutorial shows how to get a more high-level abstraction for multi-read alignments.
-
-.. important::
-
- SAM/BAM I/O vs. Fragment Store
-
- The :ref:`tutorial-fragment-store` provides a high-level view of multi-read alignments.
- This is very useful if you want to do SNP or small indel detection because you need to access the alignment of the reads around your candidate regions.
- However, storing the whole alignment of a 120GB BAM file obviously is not a good idea.
-
- The SAM/BAM I/O functionaliy in SeqAn is meant for sequentially reading through SAM and BAM files.
- Jumping within BAM files using BAI indices is described in the `Using BAM Indices`_.
-
-
-SAM / BAM Format
-----------------
-
-The following shows an example of a SAM file.
-
-.. includefrags:: demos/tutorial/sam_and_bam_io/example.sam
-
-SAM files are TSV (tab-separated-values) files and begin with an optional header.
-The header consists of multiple lines, starting with an ``'@'`` character, each line is a record.
-Each record starts with its identifier and is followed by tab-separated tags.
-Each tag in the header consists of a two-character identifier, followed by ``':'``, followed by the value.
-
-If present, the ``@HD`` record must be the first record and specifies the SAM version (tag ``VN``) used in this file and the sort order (``SO``).
-The optional ``@SQ`` header records give the reference sequence names (tag ``SN``) and lengths (tag ``LN``).
-There also are other header record types.
-
-The optional header section is followed by the alignment records.
-The alignment records are again tab-separated.
-There are 11 mandatory columns.
-
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| Col | Field | Type | N/A Value | Description |
-+===========+=============+==============+=================+===========================================+
-| 1 | QNAME | string | mandatory | The query/read name. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 2 | FLAG | int | mandatory | The record's flag. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 3 | RNAME | string | ``*`` | The reference name. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 4 | POS | 32-bit int | ``0`` | 1-based position on the reference. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 5 | MAPQ | 8-bit int | ``255`` | The mapping quality. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 6 | CIGAR | string | ``*`` | The CIGAR string of the alignment. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 7 | RNEXT | string | ``*`` | The reference of the next mate/segment. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 8 | PNEXT | string | ``0`` | The position of the next mate/seqgment. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 9 | TLEN | string | ``0`` | The observed length of the template. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 10 | SEQ | string | ``*`` | The query/read sequence. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-| 11 | QUAL | string | ``*`` | The ASCII PHRED-encoded base qualities. |
-+-----------+-------------+--------------+-----------------+-------------------------------------------+
-
-Notes:
-
-* The SAM standard talks about "queries".
- In the context of read mapping, where the format originates, queries are reads.
-* The SAM standard talks about "templates" and "segments".
- In the case of paired-end and mate-pair mapping the template consists of two segments, each is one read.
- The template length is the insert size.
-* Paired-end reads are stored as two alignments records with the same QNAME.
- The first and second mate are discriminated by the FLAG values.
-* When the FLAG indicates that SEQ is reverse-complemented, then QUAL is reversed.
-* Positions in the SAM file are 1-based.
- When read into a :dox:`BamAlignmentRecord` (see below), the positions become 0-based.
-* The qualities must be stored as ASCII PHRED-encoded qualities.
-* The query and reference names must not contain whitespace.
- It is common to trim query and reference ids at the first space.
-
-There are many ambiguities, recommendations, and some special cases in the formats that we do not describe here.
-We recommend that you follow this tutorial, start working with the SAM and BAM formats and later read the SAM specification "on demand" when you need it.
-
-The 11 mandatory columns are followed by an arbitrary number of optional tags.
-Tags have a two-character identifier followed by ``":${TYPE}:"``, followed by the tag's value.
-
-BAM files store their header as plain-text SAM headers.
-However, they additionally store the name and length information about the reference sequences.
-This information is mandatory since in BAM, the alignment records only contain the numeric ids of the reference sequences.
-Thus, the name is stored outside the record in the header.
-
-A First Working Example
------------------------
-
-The following program reads a file named ``example.sam`` and prints its contents back to the user on standard output.
-
-.. includefrags:: demos/tutorial/sam_and_bam_io/example1.cpp
-
-We instantiate a :dox:`BamFileIn` object for reading and a :dox:`BamFileOut` object for writing.
-First, we read the BAM header with :dox:`FormattedFileIn#readRecord` and we write it with :dox:`FormattedFileOut#writeRecord`.
-Then, we read each record from the input file and write it to the output file.
-The alignment records are read into :dox:`BamAlignmentRecord` objects, which we will focus on below.
-
-Assignment 1
-""""""""""""
-
-.. container:: assignment
-
- Type
- Reproduction
-
- Objective
- Create a file with the sample SAM content from above and adjust the path ``"example.sam"`` to the path to your SAM file (e.g. ``"/path/to/my_example.sam"``).
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/sam_and_bam_io/solution1.cpp
-
-
-Accessing the Header
---------------------
-
-Sequence information (i.e. @SQ records) from the BAM header is stored in the :dox:`BamIOContext`.
-All remaining BAM header information is stored in the class :dox:`BamHeader`.
-
-.. important::
- The header is not mandatory in SAM files and might be missing.
-
-The following program accesses the :dox:`BamIOContext` of its :dox:`BamFileIn` and prints the reference sequence names and lengths present in the BAM header.
-
-.. includefrags:: demos/tutorial/sam_and_bam_io/example2.cpp
-
-Accessing the Records
----------------------
-
-The class :dox:`BamAlignmentRecord` stores one alignment record of a SAM or BAM file.
-The class gives a in-memory representation that (1) is independent of whether it comes from/goes to a SAM or BAM file, (2) at the same time follows both formats closely, (3) allows for efficient storage and usage in C++, and (4) integrates well with the rest of the SeqAn library.
-
-The following definition gives an overview of the available fields, their types, and how they map to the SAM and BAM fields.
-Note that we use the :dox:`CigarElement` class to store entries in the CIGAR string.
-
-.. code-block:: cpp
-
- namespace seqan {
-
- class BamAlignmentRecord
- {
- public:
- CharString qName; // QNAME
- __uint16 flag; // FLAG
- __int32 rID; // REF
- __int32 beginPos; // POS
- __uint8 mapQ; // MAPQ mapping quality, 255 for */invalid
- __uint16 bin; // bin for indexing
- String<CigarElement<> > cigar; // CIGAR string
- __int32 rNextId; // RNEXT (0-based)
- __int32 pNext; // PNEXT (0-based)
- __int32 tLen; // TLEN
- CharString seq; // SEQ, as in SAM/BAM file.
- CharString qual; // Quality string as in SAM (Phred).
- CharString tags; // Tags, raw as in BAM.
-
- // Constants for marking pos, reference id and length members invalid (== 0/*).
- static __int32 const INVALID_POS = -1;
- static __int32 const INVALID_REFID = -1;
- static __int32 const INVALID_LEN = 0;
- };
-
- } // namespace seqan
-
-The static members ``INVALID_POS``, ``INVALID_REFID``, and ``INVALID_LEN`` store sentinel values for marking positions, reference sequence ids, and lengths as invalid or N/A.
-
-.. tip::
- A :dox:`BamAlignmentRecord` is linked to a reference sequence by the field ``rID``.
- The reference sequence information is stored in the BAM header and kept in the :dox:`BamIOContext`.
- To easily access reference sequence name and and length relative to a given :dox:`BamAlignmentRecord` within a :dox:`BamFileIn`, use functions :dox:`BamAlignmentRecord#getContigName` and :dox:`BamAlignmentRecord#getContigLength`.
-
-An important related type is the enum :dox:`BamFlags` that provides constants for bit operations on the ``flag`` field.
-The functions :dox:`BamAlignmentRecord#hasFlagAllProper`, :dox:`BamAlignmentRecord#hasFlagDuplicate`, :dox:`BamAlignmentRecord#hasFlagFirst`, :dox:`BamAlignmentRecord#hasFlagLast`, :dox:`BamAlignmentRecord#hasFlagMultiple`, :dox:`BamAlignmentRecord#hasFlagNextRC`, :dox:`BamAlignmentRecord#hasFlagNextUnmapped`, :dox:`BamAlignmentRecord#hasFlagQCNoPass`, :dox:`BamAlignmentRecord#hasFlagRC`, :dox:`BamAlignmentRecord#hasFlagSecondary`, :dox:`BamAlignmentRecord#hasFlagUnmapped`, and :dox:`Bam [...]
-
-
-
-Assignment 2
-""""""""""""
-
-.. container:: assignment
-
- Counting Records
-
- Type
- Review
-
- Objective
- Count the number of unmapped reads.
-
- Hints
- Use the function :dox:`BamAlignmentRecord#hasFlagUnmapped`.
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/sam_and_bam_io/solution2.cpp
-
-
-Accessing the Records' Tags
----------------------------
-
-You can use the :dox:`BamTagsDict` class to access the the tag list of a record in a dictionary-like fashion.
-This class also performs the necessary casting when reading and writing tag list entries.
-
-:dox:`BamTagsDict` acts as a wrapper around the raw ``tags`` member of a :dox:`BamAlignmentRecord`, which is of type :dox:`CharString`:
-
-.. code-block:: cpp
-
- seqan::BamAlignmentRecord record;
- seqan::BamTagsDict tagsDict(record.tags);
-
-We can add a tag using the function :dox:`BamTagsDict#setTagValue`.
-When setting an already existing tag's value, its value will be overwritten.
-Note that in the following, we give the tags value in SAM format because it is easier to read, although they are stored in BAM format internally.
-
-.. code-block:: cpp
-
- setTagValue(tagsDict, "NM", 2);
- // => tags: "NM:i:2"
- setTagValue(tagsDict, "NH", 1);
- // => tags: "NM:i:2 NH:i:1"
- setTagValue(tagsDict, "NM", 3);
- // => tags: "NM:i:3 NH:i:1"
-
-The first parameter to :dox:`BamTagsDict#setTagValue` is the :dox:`BamTagsDict`, the second one is a two-character string with the key, and the third one is the value.
-Note that the type of tag entry will be taken automatically from the type of the third parameter.
-
-Reading values is slightly more complex because we have to handle the case that the value is not present.
-First, we get the index of the tag in the tag list.
-
-.. code-block:: cpp
-
- unsigned tagIdx = 0;
- if (!findTagKey(tagIdx, tagsDict, "NH"))
- std::cerr << "ERROR: Unknown key!\n";
-
-Then, we can read the value from the :dox:`BamTagsDict` using the function :dox:`BamTagsDict#extractTagValue`.
-
-.. code-block:: cpp
-
- int tagValInt = 0;
- if (!extractTagValue(tagValInt, tagsDict, tagIdx))
- std::cerr << "ERROR: There was an error extracting NH from tags!\n";
-
-The function returns a ``bool`` that is ``true`` on success and ``false`` otherwise.
-The extraction can fail if the index is out of bounds or the value in the dictionary cannot be cast to the type of the first parameter.
-
-The value in the tags dictionary will be casted to the type of the first parameter of :dox:`BamTagsDict#extractTagValue`:
-
-.. code-block:: cpp
-
- short tagValShort = 0;
- extractTagValue(tagValShort, tagsDict, tagIdx);
-
-Assignment 3
-""""""""""""
-
-.. container:: assignment
-
- Reading Tags
-
- Type
- Review
-
- Objective
- Modify the solution of Assignment 2 to count the number of records having the ``"XX"`` tag.
-
- Solution
- .. container:: foldable
-
- .. includefrags:: demos/tutorial/sam_and_bam_io/solution3.cpp
-
-
-Using BAM Indices
------------------
-
-SeqAn also contains features for reading BAM indices with the format ``.bai``. These indices can be built using the ``samtools index`` command. In the near future we plan to support building the bam index with SeqAn as well.
-
-You can read indices into a :dox:`BaiBamIndex` object with the function :dox:`BamIndex#open`. Then, you can use the function :dox:`BamFileIn#jumpToRegion` to jump to a specific position within BAM files. After jumping, the next record to be read is before the given region. Therefore, you have to skip records until you access the one you are looking for.
-
-.. includefrags:: demos/tutorial/sam_and_bam_io/example7.cpp
-
-
-Next Steps
-----------
-
-* Read the `SAM Format Specification <http://samtools.sourceforge.net/SAM1.pdf>`_.
-* Continue with the :ref:`tutorial`.
diff --git a/manual/source/Tutorial/SamBamIO.rst b/manual/source/Tutorial/SamBamIO.rst
new file mode 100644
index 0000000..f8dc385
--- /dev/null
+++ b/manual/source/Tutorial/SamBamIO.rst
@@ -0,0 +1,332 @@
+.. sidebar:: ToC
+
+ .. contents::
+
+
+.. _tutorial-sam-bam-io:
+
+SAM and BAM I/O
+===============
+
+Learning Objective
+ In this tutorial, you will learn how to read and write SAM and BAM files.
+
+Difficulty
+ Average
+
+Duration
+ 1 h (45 min if you know the SAM format)
+
+Prerequisites
+ :ref:`tutorial-sequences`, :ref:`tutorial-input-output-overview`, `SAM Format Specification <http://samtools.sourceforge.net/SAM1.pdf>`_
+
+Overview
+--------
+
+This tutorial shows how to read and write SAM and BAM files using the :dox:`BamFileIn` and :dox:`BamFileOut` classes.
+It starts out with a quick reminder on the structure of SAM (and also BAM) files and continues with how to read and write SAM/BAM files and access the tags of a record.
+
+.. important::
+
+ Note that this tutorial is targeted at readers that already know about the SAM format.
+ If you do not know about the SAM format yet, then this tutorial will be harder for your to understand.
+
+Both SAM and BAM file store multi-read alignments.
+Storing alignments of longer sequences such as contigs from assemblies is also possible, but less common.
+Here, we will focus on multi-read alignments.
+
+SAM files are text files, having one record per line.
+BAM files are just binary, compressed versions of SAM files that have a stricter organization and aim to be more efficiently useable by programs and computers.
+The nuts and bolts of the formats are described in the `SAM Format Specification <http://samtools.sourceforge.net/SAM1.pdf>`_.
+
+The SAM and BAM related I/O functionality in SeqAn focuses on allowing access to these formats in SeqAn with thin abstractions.
+The :ref:`tutorial-fragment-store` Tutorial shows how to get a more high-level abstraction for multi-read alignments.
+
+.. important::
+
+ SAM/BAM I/O vs. Fragment Store
+
+ The :ref:`tutorial-fragment-store` provides a high-level view of multi-read alignments.
+ This is very useful if you want to do SNP or small indel detection because you need to access the alignment of the reads around your candidate regions.
+ However, storing the whole alignment of a 120GB BAM file obviously is not a good idea.
+
+ The SAM/BAM I/O functionaliy in SeqAn is meant for sequentially reading through SAM and BAM files.
+ Jumping within BAM files using BAI indices is described in the :ref:`tutorial-sam-bam-io` tutorial.
+
+SAM / BAM Format
+----------------
+
+The following shows an example of a SAM file.
+
+::
+
+ @HD VN:1.3 SO:coordinate
+ @SQ SN:ref LN:45
+ @SQ SN:ref2 LN:40
+ r001 163 ref 7 30 8M4I4M1D3M = 37 39 TTAGATAAAGAGGATACTG * XX:B:S,12561,2,20,112
+ r002 0 ref 9 30 1S2I6M1P1I1P1I4M2I * 0 0 AAAAGATAAGGGATAAA *
+ r003 0 ref 9 30 5H6M * 0 0 AGCTAA *
+ r004 0 ref 16 30 6M14N1I5M * 0 0 ATAGCTCTCAGC *
+ r003 16 ref 29 30 6H5M * 0 0 TAGGC *
+ r001 83 ref 37 30 9M = 7 -39 CAGCGCCAT *
+
+SAM files are TSV (tab-separated-values) files and begin with an optional header.
+The header consists of multiple lines, starting with an ``'@'`` character, each line is a record.
+Each record starts with its identifier and is followed by tab-separated tags.
+Each tag in the header consists of a two-character identifier, followed by ``':'``, followed by the value.
+
+If present, the ``@HD`` record must be the first record and specifies the SAM version (tag ``VN``) used in this file and the sort order (``SO``).
+The optional ``@SQ`` header records give the reference sequence names (tag ``SN``) and lengths (tag ``LN``).
+There also are other header record types.
+
+The optional header section is followed by the alignment records.
+The alignment records are again tab-separated.
+There are 11 mandatory columns.
+
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| Col | Field | Type | N/A Value | Description |
++===========+=============+==============+=================+===========================================+
+| 1 | QNAME | string | mandatory | The query/read name. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 2 | FLAG | int | mandatory | The record's flag. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 3 | RNAME | string | ``*`` | The reference name. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 4 | POS | 32-bit int | ``0`` | 1-based position on the reference. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 5 | MAPQ | 8-bit int | ``255`` | The mapping quality. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 6 | CIGAR | string | ``*`` | The CIGAR string of the alignment. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 7 | RNEXT | string | ``*`` | The reference of the next mate/segment. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 8 | PNEXT | string | ``0`` | The position of the next mate/seqgment. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 9 | TLEN | string | ``0`` | The observed length of the template. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 10 | SEQ | string | ``*`` | The query/read sequence. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+| 11 | QUAL | string | ``*`` | The ASCII PHRED-encoded base qualities. |
++-----------+-------------+--------------+-----------------+-------------------------------------------+
+
+Notes:
+
+* The SAM standard talks about "queries".
+ In the context of read mapping, where the format originates, queries are reads.
+* The SAM standard talks about "templates" and "segments".
+ In the case of paired-end and mate-pair mapping the template consists of two segments, each is one read.
+ The template length is the insert size.
+* Paired-end reads are stored as two alignments records with the same QNAME.
+ The first and second mate are discriminated by the FLAG values.
+* When the FLAG indicates that SEQ is reverse-complemented, then QUAL is reversed.
+* Positions in the SAM file are 1-based.
+ When read into a :dox:`BamAlignmentRecord` (see below), the positions become 0-based.
+* The qualities must be stored as ASCII PHRED-encoded qualities.
+* The query and reference names must not contain whitespace.
+ It is common to trim query and reference ids at the first space.
+
+There are many ambiguities, recommendations, and some special cases in the formats that we do not describe here.
+We recommend that you follow this tutorial, start working with the SAM and BAM formats and later read the SAM specification "on demand" when you need it.
+
+The 11 mandatory columns are followed by an arbitrary number of optional tags.
+Tags have a two-character identifier followed by ``":${TYPE}:"``, followed by the tag's value.
+
+BAM files store their header as plain-text SAM headers.
+However, they additionally store the name and length information about the reference sequences.
+This information is mandatory since in BAM, the alignment records only contain the numeric ids of the reference sequences.
+Thus, the name is stored outside the record in the header.
+
+A First Working Example
+-----------------------
+
+The following program reads a file named ``example.sam`` and prints its contents back to the user on standard output.
+
+.. includefrags:: demos/tutorial/bam_io/example1.cpp
+
+We instantiate a :dox:`BamFileIn` object for reading and a :dox:`BamFileOut` object for writing.
+First, we read the BAM header with :dox:`FormattedFileIn#readRecord` and we write it with :dox:`FormattedFileOut#writeRecord`.
+Then, we read each record from the input file and write it to the output file.
+The alignment records are read into :dox:`BamAlignmentRecord` objects, which we will focus on below.
+
+Assignment 1
+""""""""""""
+
+.. container:: assignment
+
+ Type
+ Reproduction
+
+ Objective
+ Create a file with the sample SAM content from above and adjust the path ``"example.sam"`` to the path to your SAM file (e.g. ``"/path/to/my_example.sam"``).
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/bam_io/solution1.cpp
+
+
+Accessing the Header
+--------------------
+
+Sequence information (i.e. @SQ records) from the BAM header is stored in the :dox:`BamIOContext`.
+All remaining BAM header information is stored in the class :dox:`BamHeader`.
+
+.. important::
+ The header is not mandatory in SAM files and might be missing.
+
+The following program accesses the :dox:`BamIOContext` of its :dox:`BamFileIn` and prints the reference sequence names and lengths present in the BAM header.
+
+.. includefrags:: demos/tutorial/bam_io/example2.cpp
+
+Accessing the Records
+---------------------
+
+The class :dox:`BamAlignmentRecord` stores one alignment record of a SAM or BAM file.
+The class gives a in-memory representation that (1) is independent of whether it comes from/goes to a SAM or BAM file, (2) at the same time follows both formats closely, (3) allows for efficient storage and usage in C++, and (4) integrates well with the rest of the SeqAn library.
+
+The following definition gives an overview of the available fields, their types, and how they map to the SAM and BAM fields.
+Note that we use the :dox:`CigarElement` class to store entries in the CIGAR string.
+
+.. code-block:: cpp
+
+ namespace seqan {
+
+ class BamAlignmentRecord
+ {
+ public:
+ CharString qName; // QNAME
+ __uint16 flag; // FLAG
+ __int32 rID; // REF
+ __int32 beginPos; // POS
+ __uint8 mapQ; // MAPQ mapping quality, 255 for */invalid
+ __uint16 bin; // bin for indexing
+ String<CigarElement<> > cigar; // CIGAR string
+ __int32 rNextId; // RNEXT (0-based)
+ __int32 pNext; // PNEXT (0-based)
+ __int32 tLen; // TLEN
+ CharString seq; // SEQ, as in SAM/BAM file.
+ CharString qual; // Quality string as in SAM (Phred).
+ CharString tags; // Tags, raw as in BAM.
+
+ // Constants for marking pos, reference id and length members invalid (== 0/*).
+ static __int32 const INVALID_POS = -1;
+ static __int32 const INVALID_REFID = -1;
+ static __int32 const INVALID_LEN = 0;
+ };
+
+ } // namespace seqan
+
+The static members ``INVALID_POS``, ``INVALID_REFID``, and ``INVALID_LEN`` store sentinel values for marking positions, reference sequence ids, and lengths as invalid or N/A.
+
+.. tip::
+ A :dox:`BamAlignmentRecord` is linked to a reference sequence by the field ``rID``.
+ The reference sequence information is stored in the BAM header and kept in the :dox:`BamIOContext`.
+ To easily access reference sequence name and and length relative to a given :dox:`BamAlignmentRecord` within a :dox:`BamFileIn`, use functions :dox:`BamAlignmentRecord#getContigName` and :dox:`BamAlignmentRecord#getContigLength`.
+
+An important related type is the enum :dox:`BamFlags` that provides constants for bit operations on the ``flag`` field.
+The functions :dox:`BamAlignmentRecord#hasFlagAllProper`, :dox:`BamAlignmentRecord#hasFlagDuplicate`, :dox:`BamAlignmentRecord#hasFlagFirst`, :dox:`BamAlignmentRecord#hasFlagLast`, :dox:`BamAlignmentRecord#hasFlagMultiple`, :dox:`BamAlignmentRecord#hasFlagNextRC`, :dox:`BamAlignmentRecord#hasFlagNextUnmapped`, :dox:`BamAlignmentRecord#hasFlagQCNoPass`, :dox:`BamAlignmentRecord#hasFlagRC`, :dox:`BamAlignmentRecord#hasFlagSecondary`, :dox:`BamAlignmentRecord#hasFlagUnmapped`, and :dox:`Bam [...]
+
+
+
+Assignment 2
+""""""""""""
+
+.. container:: assignment
+
+ Counting Records
+
+ Type
+ Review
+
+ Objective
+ Count the number of unmapped reads.
+
+ Hints
+ Use the function :dox:`BamAlignmentRecord#hasFlagUnmapped`.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/bam_io/solution2.cpp
+
+
+Accessing the Records' Tags
+---------------------------
+
+You can use the :dox:`BamTagsDict` class to access the the tag list of a record in a dictionary-like fashion.
+This class also performs the necessary casting when reading and writing tag list entries.
+
+:dox:`BamTagsDict` acts as a wrapper around the raw ``tags`` member of a :dox:`BamAlignmentRecord`, which is of type :dox:`CharString`:
+
+.. code-block:: cpp
+
+ seqan::BamAlignmentRecord record;
+ seqan::BamTagsDict tagsDict(record.tags);
+
+We can add a tag using the function :dox:`BamTagsDict#setTagValue`.
+When setting an already existing tag's value, its value will be overwritten.
+Note that in the following, we give the tags value in SAM format because it is easier to read, although they are stored in BAM format internally.
+
+.. code-block:: cpp
+
+ setTagValue(tagsDict, "NM", 2);
+ // => tags: "NM:i:2"
+ setTagValue(tagsDict, "NH", 1);
+ // => tags: "NM:i:2 NH:i:1"
+ setTagValue(tagsDict, "NM", 3);
+ // => tags: "NM:i:3 NH:i:1"
+
+The first parameter to :dox:`BamTagsDict#setTagValue` is the :dox:`BamTagsDict`, the second one is a two-character string with the key, and the third one is the value.
+Note that the type of tag entry will be taken automatically from the type of the third parameter.
+
+Reading values is slightly more complex because we have to handle the case that the value is not present.
+First, we get the index of the tag in the tag list.
+
+.. code-block:: cpp
+
+ unsigned tagIdx = 0;
+ if (!findTagKey(tagIdx, tagsDict, "NH"))
+ std::cerr << "ERROR: Unknown key!\n";
+
+Then, we can read the value from the :dox:`BamTagsDict` using the function :dox:`BamTagsDict#extractTagValue`.
+
+.. code-block:: cpp
+
+ int tagValInt = 0;
+ if (!extractTagValue(tagValInt, tagsDict, tagIdx))
+ std::cerr << "ERROR: There was an error extracting NH from tags!\n";
+
+The function returns a ``bool`` that is ``true`` on success and ``false`` otherwise.
+The extraction can fail if the index is out of bounds or the value in the dictionary cannot be cast to the type of the first parameter.
+
+The value in the tags dictionary will be casted to the type of the first parameter of :dox:`BamTagsDict#extractTagValue`:
+
+.. code-block:: cpp
+
+ short tagValShort = 0;
+ extractTagValue(tagValShort, tagsDict, tagIdx);
+
+Assignment 3
+""""""""""""
+
+.. container:: assignment
+
+ Reading Tags
+
+ Type
+ Review
+
+ Objective
+ Modify the solution of Assignment 2 to count the number of records having the ``"XX"`` tag.
+
+ Solution
+ .. container:: foldable
+
+ .. includefrags:: demos/tutorial/bam_io/solution3.cpp
+
+
+Next Steps
+~~~~~~~~~~
+
+* Read the `SAM Format Specification <http://samtools.sourceforge.net/SAM1.pdf>`_.
+* Continue with the :ref:`tutorial`.
diff --git a/manual/source/Tutorial/SequenceIO.rst b/manual/source/Tutorial/SequenceIO.rst
index 63d475a..0d42318 100644
--- a/manual/source/Tutorial/SequenceIO.rst
+++ b/manual/source/Tutorial/SequenceIO.rst
@@ -31,13 +31,33 @@ FASTA/FASTQ are record-based files.
A FASTA record contains the sequence id and the sequence characters.
Here is an example of FASTA file:
-.. includefrags:: demos/tutorial/sequence_io/example.fa
+::
+
+ >seq1
+ CCCCCCCCCCCCCCC
+ >seq2
+ CGATCGATC
+ >seq3
+ TTTTTTT
In addition to that, a FASTQ record contains also a quality value for each sequence character.
Here is an example of FASTQ file:
-.. includefrags:: demos/tutorial/sequence_io/example.fq
+::
+
+ @seq1
+ CCCCCCCCCCCCCCC
+ +
+ IIIIIHIIIIIIIII
+ @seq2
+ CGATCGATC
+ +
+ IIIIIIIII
+ @seq3
+ TTTTTTT
+ +
+ IIIIHHG
SeqFile Formats
@@ -56,7 +76,7 @@ A First Working Example
Let us start out with a minimal working example.
The following program reads a FASTA file called ``example.fa`` and prints out the identifier and the sequence of the first record.
-.. includefrags:: demos/tutorial/sequence_io/example1.cpp
+.. includefrags:: demos/tutorial/seq_io/example1.cpp
We call the :dox:`FormattedFile#FormattedFile SeqFileIn constructor` with the path to the file to read.
Successively, we call the function :dox:`SeqFileIn#readRecord` to read the first record from the file.
@@ -74,15 +94,19 @@ Assignment 1
Copy the above example of FASTA file in a new file ``example.fa`` in a directory of your choice.
Copy the program above into a new application ``basic_seq_io_example``, adjust the path ``"example.fa"`` to the just created FASTA file, compile the program, and run it.
+ For example, if you stored the file ``example.fa`` in ``/home/username/example.fa``, you replace the line ``seqan::SeqFileIn seqFileIn("example.fa");`` from above with ``seqan::SeqFileIn seqFileIn("/home/username/example.fa");``.
You should see the following output:
- .. includefrags:: demos/tutorial/sequence_io/example1.cpp.stdout
+ .. code-block:: console
+
+ # basic_seq_io
+ seq1 CCCCCCCCCCCCCCC
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/sequence_io/solution1.cpp
+ .. includefrags:: demos/tutorial/seq_io/solution1.cpp
Handling Errors
@@ -105,7 +129,7 @@ Assignment 2
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/sequence_io/solution2.cpp
+ .. includefrags:: demos/tutorial/seq_io/solution2.cpp
Accessing Records in Batches
@@ -155,7 +179,12 @@ Assignment 3
You should be able to run your program on the example file we created above and see the following output:
- .. includefrags:: demos/tutorial/sequence_io/solution3.cpp.stdout
+ .. code-block:: console
+
+ # basic_seq_io_example example.fa
+ seq1 CCCCCCCCCCCCCCC
+ seq2 CGATCGATC
+ seq3 TTTTTTT
Hint
You can use the function :dox:`SeqFileIn#readRecords` to load all records at once.
@@ -163,7 +192,7 @@ Assignment 3
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/sequence_io/solution3.cpp
+ .. includefrags:: demos/tutorial/seq_io/solution3.cpp
Accessing Qualities
@@ -210,12 +239,17 @@ Assignment 4
When your program is called on this file, the result should look as follows.
- .. includefrags:: demos/tutorial/sequence_io/solution4.cpp.stdout
+ .. code-block:: console
+
+ # basic_seq_io_example example.fq
+ seq1 CCCCCCCCCCCCCCC IIIIIHIIIIIIIII
+ seq2 CGATCGATC IIIIIIIII
+ seq3 TTTTTTT IIIIHHG
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/sequence_io/solution4.cpp
+ .. includefrags:: demos/tutorial/seq_io/solution4.cpp
Next Steps
diff --git a/manual/source/Tutorial/Sequences.rst b/manual/source/Tutorial/Sequences.rst
index fbef6de..28beaec 100644
--- a/manual/source/Tutorial/Sequences.rst
+++ b/manual/source/Tutorial/Sequences.rst
@@ -69,8 +69,8 @@ You can find detailed information in the tutorial :ref:`tutorial-alphabets`.
.. code-block:: cpp
- String<Dna> myGenome; // A string of nucleotides.
- String<AminoAcid> myProtein; // A string of amino acids.
+ String<Dna> myGenome; // A string of nucleotides.
+ String<AminAcid> myProtein; // A string of amino acids.
For commonly used string parameterizations, SeqAn has a range of shortcuts implemented, e.g. :dox:`DnaString`, :dox:`RnaString` and :dox:`Peptide`.
@@ -180,16 +180,41 @@ Assignment 1
#. Using the ``getRevCompl`` function, get the reverse complement for every nucleotide ``genome`` and store it in reverse order ``revComplGenome``.
#. Print out the original genome and the reverse complement.
- .. includefrags:: demos/tutorial/sequences/assignment_1_solution.cpp
- :fragment: top
+ .. code-block:: cpp
- .. code-block:: cpp
+ #include <seqan/sequence.h>
+ #include <seqan/basic.h>
+ #include <iostream>
+ #include <seqan/file.h>
+ #include <seqan/modifier.h>
+
+ using namespace seqan;
- // Your code snippet here
+ Dna getRevCompl(Dna const & nucleotide)
+ {
+ if (nucleotide == (Dna)'A')
+ return (Dna)'T';
+ if (nucleotide == (Dna)'T')
+ return (Dna)'A';
+ if (nucleotide == (Dna)'C')
+ return (Dna)'G';
+ return (Dna)'C';
+ }
+ int main()
+ {
+ DnaString genome = "TATATACGCGCGAGTCGT";
+ DnaString revComplGenome;
- .. includefrags:: demos/tutorial/sequences/assignment_1_solution.cpp
- :fragment: bottom
+ // Your code snippet
+
+ // And to check if your output is correct,
+ // use the given SeqAn function reverseComplement(),
+ // which modifies the sequence in-place
+ reverseComplement(genome);
+ std::cout << genome << std::endl;
+ return 0;
+ }
Hints
Remember that the last element in ``genome`` is stored at position ``length(genome) - 1``.
@@ -199,12 +224,47 @@ Assignment 1
.. container:: foldable
- .. includefrags:: demos/tutorial/sequences/assignment_1_solution.cpp
- :fragment: full
-
+ .. code-block:: cpp
-Assignment 2
-^^^^^^^^^^^^
+ #include <seqan/sequence.h>
+ #include <seqan/basic.h>
+ #include <iostream>
+ #include <seqan/file.h>
+ #include <seqan/modifier.h>
+
+ using namespace seqan;
+
+ Dna getRevCompl(Dna const & nucleotide)
+ {
+ if (nucleotide == (Dna)'A')
+ return (Dna)'T';
+ if (nucleotide == (Dna)'T')
+ return (Dna)'A';
+ if (nucleotide == (Dna)'C')
+ return (Dna)'G';
+ return (Dna)'C';
+ }
+
+ int main()
+ {
+ DnaString genome = "TATATACGCGCGAGTCGT";
+ DnaString revComplGenome;
+ resize(revComplGenome, length(genome));
+
+ for (unsigned i = 0; i < length(genome); ++i)
+ {
+ revComplGenome[length(genome) - 1 - i] = getRevCompl(genome[i]);
+ }
+
+ std::cout << genome << std::endl;
+ std::cout << revComplGenome << std::endl;
+ reverseComplement(genome);
+ std::cout << genome << std::endl;
+ return 0;
+ }
+
+Workshop Assignment 1
+^^^^^^^^^^^^^^^^^^^^^
.. container:: assignment
@@ -220,29 +280,78 @@ Assignment 2
#. Build another String bsChr1 as a copy of chr1, and exchange every 'C' with a 'T', as in a bisulfite treated genome.
#. Print alignments of the reads and chr1 (or bschr1) using the function ``printAlign`` and the string ``alignPosList``.
- .. includefrags:: demos/tutorial/sequences/assignment_2_solution.cpp
- :fragment: one
-
- .. code-block:: cpp
-
- // Your code snippet here for 1.+2.
-
- .. includefrags:: demos/tutorial/sequences/assignment_2_solution.cpp
- :fragment: two
-
- .. code-block:: cpp
-
- // Your code snippet here for 3.
-
- .. includefrags:: demos/tutorial/sequences/assignment_2_solution.cpp
- :fragment: three
-
- .. code-block:: cpp
-
- // Your code snippet here for 3.
+ .. code-block:: cpp
- .. includefrags:: demos/tutorial/sequences/assignment_2_solution.cpp
- :fragment: four
+ #include <iostream>
+ #include <seqan/sequence.h>
+ #include <seqan/file.h>
+
+ using namespace seqan;
+ // Function to print simple alignment between two sequences with the same length
+ template <typename TText1, typename TText2>
+ void printAlign(TText1 const & genomeFragment, TText2 const & read)
+ {
+ std::cout << "Alignment " << std::endl;
+ std::cout << " genome : " << genomeFragment << std::endl;
+ std::cout << " read : " << read << std::endl;
+ }
+
+ int main(int, char const **)
+ {
+ // Build reads and genomes
+ DnaString chr1 = "TATAATATTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTG"
+ "CGATATATCGCGCTAGATGTGCAGCTCGATCGAATGCACGTGTGTGCGATC"
+ "GATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATA"
+ "TTAGCGGTCTAGCATTTAG";
+
+ // Build List containing all reads
+ typedef String<DnaString> TDnaList;
+ TDnaList readList;
+ resize(readList, 4);
+ readList[0] = "TTGCTATCGCGATATCGCTAGCTAGCTACGGATTATGCGCTCTGCGATATATCGCGCT";
+ readList[1] = "TCGATTAGCGTCGATCATCGATCTATATTAGCGCGCGGTATCGGACGATCATATTAGCGGTCTAGCATT";
+ readList[2] = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCATGTGCGCTGAAGCACACATGCACA";
+ readList[3] = "CGTGCACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGACA";
+
+ // Append a second chromosome sequence fragment to chr1
+ DnaString chr2 = "AGCCTGCGTACGTTGCAGTGCGTGCGTAGACTGTTGCAAGCCGGGGGTTCAT"
+ "GTGCGCTGAAGCACACATGCACACGTCTCTGTGTTCCGACGTGTGTCACGTG"
+ "CACTGCTGACGTCGTGGTTGTCACATCGTCGTGCGTGCGTACTGCTGCTGAC"
+ "ACATGCTGCTG";
+ append(chr1, chr2);
+
+ // Print readlist
+ std::cout << " \n Read list: " << std::endl;
+ for(unsigned i = 0; i < length(readList); ++i)
+ std::cout << readList[i] << std::endl;
+
+ // Assume we have mapped the 4 reads to chr1 (and chr2) and now have the mapping start positions (no gaps).
+ // Store the start position in a String alignPosList: 7, 100, 172, 272
+
+ // Optional
+ // Bisulfite conversion
+ // Assume chr1 is beeing bisulfate treated: Copy chr1 to a new genome bsChr1 and exchange every 'C' with a 'T'
+ DnaString bsChr1;
+
+ // Print alignments of the reads with chr1 (or bsChr1) sequence using the function printAlign
+ // and the positions in alignPosList.
+ // To do that, you have to create a copy of the fragment in chr1 (bsChr1) that is aligned to the read.
+ std::cout << " \n Print alignment: " << std::endl;
+ for(unsigned i = 0; i < length(readList); ++i)
+ {
+ // Temporary copy of begin position (beginPosition) from alignPosList
+ // of a given alignment between the read and the genome
+
+ // Genome fragment
+ DnaString genomeFragment;
+ // We have to create a copy of the corresponding fragment of the genome, where the read aligns to
+
+
+ // Call of our function to print the simple alignment
+ printAlign(genomeFragment, readList[i]);
+ }
+ return 1;
+ }
Hints
You have to create a copy of the fragment in chr1 (bsChr1) that is aligned to the read.
@@ -252,8 +361,7 @@ Assignment 2
.. container:: foldable
- .. includefrags:: demos/tutorial/sequences/assignment_2_solution.cpp
- :fragment: full
+ .. includefrags:: demos/tutorial/sequences/string_assignment_1_solution.cpp
Comparisons
^^^^^^^^^^^
@@ -337,7 +445,7 @@ In some cases, :dox:`AssignableConcept#move` can also perform an in-place conver
acgtgcat
-Assignment 3
+Assignment 2
^^^^^^^^^^^^
.. container:: assignment
@@ -352,7 +460,7 @@ Assignment 3
.. code-block:: cpp
- #include <seqan/stream.h>
+ #include <iostream>
#include <seqan/sequence.h>
#include <seqan/file.h>
@@ -376,9 +484,31 @@ Assignment 3
.. container:: foldable
- .. includefrags:: demos/tutorial/sequences/assignment_3_solution.cpp
+ .. code-block:: cpp
+
+ #include <iostream>
+ #include <seqan/sequence.h>
+ #include <seqan/file.h>
-Assignment 4
+ using namespace seqan;
+
+ int main()
+ {
+ String<Dna5> nucleotides = "AGTCGTGNNANCT";
+ String<Dna5> lesser;
+ String<Dna5> greater;
+
+ for (unsigned i = 0; i < length(nucleotides); ++i){
+ if (nucleotides[i] < 'G')
+ appendValue(lesser, nucleotides[i]);
+ else if (nucleotides[i] > 'G')
+ appendValue(greater, nucleotides[i]);
+ }
+ std::cout << "Lesser nucleotides: " << lesser << std::endl;
+ std::cout << "Greater nucleotides: " << greater << std::endl;
+ }
+
+Assignment 3
^^^^^^^^^^^^
.. container:: assignment
@@ -401,7 +531,7 @@ Assignment 4
.. container:: foldable
- .. includefrags:: demos/tutorial/sequences/assignment_4_solution.cpp
+ .. includefrags:: demos/tutorial/sequences/lexical_assignment_solution.cpp
Segments
~~~~~~~~
@@ -445,7 +575,7 @@ The segment is *not* a copy of the sequence segment.
If you want to change the host sequence, you have to explicilty modify this.
If you want to modify only the segment, you have to explicitly make a copy of the string.
-Assignment 5
+Assignment 4
^^^^^^^^^^^^
.. container:: assignment
@@ -461,34 +591,17 @@ Assignment 5
In the main function a fragment of the Dna5String ``genome`` is copied and passed together with the Dna5String ``read`` to a ``print`` function.
Adjust the code to use an infix of the genome, instead of copying the corresponding fragment.
- .. includefrags:: demos/tutorial/sequences/assignment_5_solution.cpp
- :fragment: top
-
-
- .. code-block:: cpp
-
- // We have to create a copy of the corresponding fragment of the genome, where the read aligns to
- for (unsigned i = 0; i < length(read); ++i)
- {
- appendValue(genomeFragment, genome[beginPosition + i]);
- }
-
-
- .. includefrags:: demos/tutorial/sequences/assignment_5_solution.cpp
- :fragment: bottom
-
-
+ .. includefrags:: demos/tutorial/sequences/segments_assignment_hint.cpp
Solution
Click **more...** to see the solution.
.. container:: foldable
- .. includefrags:: demos/tutorial/sequences/assignment_5_solution.cpp
- :fragment: full
+ .. includefrags:: demos/tutorial/sequences/segments_assignment_solution.cpp
-Assignment 6
-^^^^^^^^^^^^
+Workshop Assignment 2
+^^^^^^^^^^^^^^^^^^^^^
.. container:: assignment
@@ -506,4 +619,4 @@ Assignment 6
.. container:: foldable
- .. includefrags:: demos/tutorial/sequences/assignment_6_solution.cpp
+ .. includefrags:: demos/tutorial/sequences/segments_assignment_2_solution.cpp
diff --git a/manual/source/Tutorial/SequencesInDepth.rst b/manual/source/Tutorial/SequencesInDepth.rst
index c32a7ab..ab5248a 100644
--- a/manual/source/Tutorial/SequencesInDepth.rst
+++ b/manual/source/Tutorial/SequencesInDepth.rst
@@ -104,7 +104,7 @@ Each sequence object has a capacity, i.e. the reserved space for this object.
The capacity can be set explicitly by functions such as :dox:`String#reserve` or :dox:`StringConcept#resize`.
It can also bet set implicitly by functions like :dox:`ContainerConcept#append`, :dox:`AssignableConcept#assign`, :dox:`StringConcept#insert` or :dox:`StringConcept#replace`, if the operation's result exceeds the length of the target sequence.
-If the current capacity of a sequence is exceeded by chaining the length, we say that the sequence overflows.
+If the current capacity of a sequence is exceeded by chaning the length, we say that the sequence overflows.
There are several overflow strategies that determine what actually happens when a string should be expanded beyond its capacity.
The user can specify this for a function call by additionally handing over a tag.
If no overflow strategy is specified, a default overflow strategy is selected depending on the type of the sequence.
@@ -127,11 +127,22 @@ The following overflow strategies exist:
The next example illustrates how the different strategies could be used:
-.. includefrags:: demos/tutorial/sequences_in_depth/example_overflow.cpp
- :fragment: example
+.. code-block:: cpp
+
+ String<Dna> dnaSeq;
+ // Sets the capacity of dnaSeq to 5.
+ resize(dnaSeq, 4, Exact());
+ // Only "TATA" is assigned to dnaSeq, since dnaSeq is limited to 4.
+ assign(str, "TATAGGGG", Limit());
+ std::cout << dnaSeq << std::endl;
+ // Use the default expansion strategy.
+ append(dnaSeq, "GCGCGC");
+ std::cout << dnaSeq << std::endl;
-.. includefrags:: demos/tutorial/sequences_in_depth/example_overflow.cpp.stdout
+.. code-block:: console
+ TATA
+ TATAGCGCGC
Workshop Assignment 1
^^^^^^^^^^^^^^^^^^^^^
diff --git a/manual/source/Tutorial/SimpleReadMapping.rst b/manual/source/Tutorial/SimpleReadMapping.rst
new file mode 100644
index 0000000..a5169be
--- /dev/null
+++ b/manual/source/Tutorial/SimpleReadMapping.rst
@@ -0,0 +1,161 @@
+.. sidebar:: ToC
+
+ .. contents::
+
+
+.. _tutorial-simple-read-mapping:
+
+Simple Read Mapping
+===================
+
+Learning Objective
+ You will be able to write read mappers using SeqAn.
+
+Difficulty
+ Hard
+
+Duration
+ 2 h
+
+Prerequisites
+ :ref:`tutorial-indices`, :ref:`tutorial-fragment-store`
+
+In this tutorial, we will walk you through the code of a simple read mapper **minimapper** that uses the SWIFT filter and uses approximate string search for verification.
+There are severe limitations to its capabilities but it's a read mapper in **12 effective lines of code** (ignoring includes, comments, typedefs, I/O and lines with closing braces).
+
+Try It
+------
+
+You can find the source code in the directory ``demos/tutorial/read_mapping/demos/tutorial/read_mapping``.
+Copy over the FASTA files into your build directory and test it:
+
+.. code-block:: console
+
+ $ cp .../demos/tutorial/read_mapping/*.fasta .
+ $ make demo_tutorial_minimapper
+ ...
+ $ ./demos/tutorial/read_mapping/demo_tutorial_minimapper
+ Invalid number of arguments.
+ USAGE: minimapper GENOME.fasta READS.fasta OUT.sam
+ $ ./demos/tutorial/read_mapping/tutorial_minimapper nc_001454.fasta reads_hamming.fasta out.sam
+ $ cat out.sam
+ @HD VN:1.0
+ @SQ SN:gi|9626553|ref|NC_001454.1| LN:34214
+ @PG ID:SeqAn
+ nc_001454.fasta.fasta.000000005 8 gi|9626553|ref|NC_001454.1| 1396 255 36M * 0 0 TAGTGTTAGTTTATTCTGATGGAGTTGTGGAGTGAG ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
+ nc_001454.fasta.fasta.000000003 8 gi|9626553|ref|NC_001454.1| 20574 255 36M * 0 0 CCGGCGGCGTACACTGGCTGGCCCTNGCCTGGAACC ]]]]]]]]]]]]]]]]]]]]]]]]]!]]]]]]]]]]
+ nc_001454.fasta.fasta.000000007 8 gi|9626553|ref|NC_001454.1| 23191 255 36M * 0 0 GTGACAACGCGCGTTTGGCCGTACTCAAACGCACCA ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
+
+Code Walkthrough
+----------------
+
+First, include the headers of the SeqAn modules we will use.
+
+.. includefrags:: demos/tutorial/read_mapping/minimapper.cpp
+ :fragment: includes
+
+We will now use some typedefs for the FragmentStore and SWIFT filter to get shortcuts to types used below.
+
+.. includefrags:: demos/tutorial/read_mapping/minimapper.cpp
+ :fragment: typedefs
+
+We define the global constant ``EPSILON`` (:math:`\vareps`), the allowed error rate.
+
+.. includefrags:: demos/tutorial/read_mapping/minimapper.cpp
+ :fragment: global-constants
+
+Evaluate the arguments from the command line.
+Use the functions :dox:`FragmentStore#loadContigs` and :dox:`FragmentStore#loadReads` to load the reference sequence (possibly more than one if the FASTA file contains more than one sequence) and reads into the FragmentStore.
+Note that these functions will automatically guess the file type for you.
+
+.. includefrags:: demos/tutorial/read_mapping/minimapper.cpp
+ :fragment: main-input
+
+Initialize :dox:`Finder` and :dox:`Pattern` for the q-gram index used by the swift filter.
+
+.. includefrags:: demos/tutorial/read_mapping/minimapper.cpp
+ :fragment: pattern-finder
+
+Now, iterate over all input sequence contigs and enumerate all SWIFT hits.
+These hits will contain all possible matches of the reads in the FragmentStore with up to :math:`\varepsilon \cdot \ell` (with :math:`\ell =` :dox:`ContainerConcept#length length(read)`) errors.
+Mismatches and indels are taken into consideration.
+
+.. includefrags:: demos/tutorial/read_mapping/minimapper.cpp
+ :fragment: swift
+
+Now, verify each possible match using a :dox:`HammingSimplePattern`.
+The verified matches will have Hamming distance :math:`< \lfloor \varepsilon \cdot \ell \rfloor`, edit distance is not considered.
+
+.. includefrags:: demos/tutorial/read_mapping/minimapper.cpp
+ :fragment: verification
+
+Finally, write out the resulting multiple read alignment to the SAM file with the file name on the command line.
+
+.. includefrags:: demos/tutorial/read_mapping/minimapper.cpp
+ :fragment: main-output
+
+Hands On!
+---------
+
+Programming can only be learned by programming, so let's get started.
+We create a new demo for the minimapper.
+
+.. code-block:: console
+
+ ~ $ cd seqan-src/demos
+ demos $ mkdir minimapper
+ demos $ mkdir minimapper/minimapper.cpp
+
+Now, we copy over the code from the original location into our new app and build it.
+
+.. code-block:: console
+
+ demos $ cp tutorial/read_mapping/minimapper.cpp minimapper/minimapper.cpp
+ $ cd ../../build/Debug
+ $ cmake .
+ $ make demo_minimapper_minimapper
+ $ ./bin/demo_minimapper_minimapper
+ Invalid number of arguments.
+ USAGE: minimapper GENOME.fasta READS.fasta OUT.sam
+
+Now, play around with the source code.
+Here are some examples for things to try out.
+There are no solutions, and they are merely thought to get you started playing...
+
+Task 1: Use the ArgumentParser
+""""""""""""""""""""""""""""""
+
+Global constants are kind of inflexible.
+Instead of the global constant *EPSILON*, create an *Options* struct with a member variable *epsilon*, initialize it to 0.8 in the constructor and use an *Option* struct in the main program.
+Make the value for configurable using the class :dox:`ArgumentParser` described in the :ref:`tutorial-parsing-command-line-arguments` Tutorial.
+
+Task 2: Allow Edit Distance for Verification
+""""""""""""""""""""""""""""""""""""""""""""
+
+Currently, the read mapper can only find reads with mismatches but not
+with indels. The SWIFT filter will already create hits for positions
+with indels so you only have to adjust the verification step.
+
+Hint
+ Use the :dox:`MyersPattern Myers Pattern` for the approximate search.
+ Don't forget to call :dox:`Finder#findBegin` using the score (:dox:`MyersPattern#getScore`) of the last hit as the find begin score.
+ You can use one Myers Pattern object per read sequence to only perform the precomputation once.
+ If you reuse your finder object, don't forget to call :dox:`Finder#clear`.
+
+Task 3: Find Matches On Reverse-Complement
+""""""""""""""""""""""""""""""""""""""""""
+
+Another limitation is that only reads from the forward strand will be found.
+Either reverse-complement all reads or the contigs to find reads from the reverse strand.
+
+Maybe add options to limit searching to the forward or reverse strand.
+
+Hint
+ Reverse-complementing the contigs will be faster in practice:
+ First, an index is built over the reads which would have to be built twice if the reads were complemented.
+ Second, there will usually be more reads data than genome data if the coverage is greater than 1.
+
+Task 4: Allow Other Output Formats
+""""""""""""""""""""""""""""""""""
+
+Read the documentation on the function :dox:`FragmentStore#write` of the class :dox:`FragmentStore`.
diff --git a/manual/source/Tutorial/SimpleRnaSeq.rst b/manual/source/Tutorial/SimpleRnaSeq.rst
index 731a5ef..04e4b1a 100644
--- a/manual/source/Tutorial/SimpleRnaSeq.rst
+++ b/manual/source/Tutorial/SimpleRnaSeq.rst
@@ -114,7 +114,7 @@ Assignment 1
.. container:: foldable
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment1.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment1.cpp
Hint
* Open STL `std::fstream <http://www.cplusplus.com/reference/iostream/ifstream>`_ objects and use the function :dox:`File#read` with a SAM or GTF tag.
@@ -125,7 +125,7 @@ Assignment 1
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_solution1.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_solution1.cpp
:fragment: solution
Extract Gene Intervals
@@ -178,22 +178,22 @@ Assignment 2
Extend the definitions:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment2.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment2.cpp
:fragment: definitions
Add a function:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment2.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment2.cpp
:fragment: yourcode
Extend the ``main`` function:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment2.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment2.cpp
:fragment: main
and
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment2.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment2.cpp
:fragment: main2
Hint
@@ -216,7 +216,7 @@ Assignment 2
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_solution2.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_solution2.cpp
:fragment: solution
Construct Interval Trees
@@ -251,22 +251,22 @@ Assignment 3
Extend the definitions:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment3.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment3.cpp
:fragment: definitions
Add a function:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment3.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment3.cpp
:fragment: yourcode
Extend the ``main`` function:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment3.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment3.cpp
:fragment: main
and
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment3.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment3.cpp
:fragment: main2
Hint
@@ -288,7 +288,7 @@ Assignment 3
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_solution3.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_solution3.cpp
:fragment: solution
Compute Gene Coverage
@@ -335,22 +335,22 @@ Assignment 4
Extend the definitions:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment4.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment4.cpp
:fragment: definitions
Add a function:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment4.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment4.cpp
:fragment: yourcode
Extend the ``main`` function:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment4.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment4.cpp
:fragment: main
and
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment4.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment4.cpp
:fragment: main2
Hint
@@ -377,7 +377,7 @@ Assignment 4
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_solution4.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_solution4.cpp
:fragment: solution
@@ -396,8 +396,28 @@ To compute the exon length of the gene (maximal exon length of all mRNA) use an
For the number of total mapped reads simply use the number of alignments in the :dox:`FragmentStore::alignedReadStore`.
Output the gene names and their RPKM values separated by tabs as follows:
-.. includefrags:: demos/tutorial/simple_rna_seq/genequant_solution5.cpp.stdout
-
+.. code-block:: console
+
+ #gene name RPKM value
+ ENSMUSG00000053211 5932.12
+ ENSMUSG00000069053 10540.1
+ ENSMUSG00000056673 12271.3
+ ENSMUSG00000069049 10742.2
+ ENSMUSG00000091749 7287.66
+ ENSMUSG00000068457 37162.8
+ ENSMUSG00000069045 13675
+ ENSMUSG00000069044 6380.36
+ ENSMUSG00000077793 2088.62
+ ENSMUSG00000000103 7704.74
+ ENSMUSG00000091571 10965.2
+ ENSMUSG00000069036 127128
+ ENSMUSG00000090405 10965.2
+ ENSMUSG00000090652 35271.2
+ ENSMUSG00000052831 68211.2
+ ENSMUSG00000069031 37564.2
+ ENSMUSG00000071960 34984
+ ENSMUSG00000091987 37056.3
+ ENSMUSG00000090600 2310.18
.. todo: Move the files to somewhere else.
@@ -420,12 +440,12 @@ Assignment 5
Add a function:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment5.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment5.cpp
:fragment: yourcode
Extend the ``main`` function:
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_assignment5.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_assignment5.cpp
:fragment: main
Hint
@@ -441,7 +461,7 @@ Assignment 5
Solution
.. container:: foldable
- .. includefrags:: demos/tutorial/simple_rna_seq/genequant_solution5.cpp
+ .. includefrags:: demos/tutorial/rnaseq/genequant_solution5.cpp
:fragment: solution
Next Steps
diff --git a/manual/source/Tutorial/StringSets.rst b/manual/source/Tutorial/StringSets.rst
index 0690f33..5c5f6bf 100644
--- a/manual/source/Tutorial/StringSets.rst
+++ b/manual/source/Tutorial/StringSets.rst
@@ -56,7 +56,7 @@ Specialization ``Owner<ConcatDirect>``
The string set also stores lengths and starting positions of the strings.
Inserting new strings into the set or removing strings from the set is more expensive than for the default :dox:`OwnerStringSet` specialization, since this involves moving all subsequent sequences in memory.
-Specialization ``Dependent<Tight>``
+Specialization ``Depedent<Tight>``
This specialization stores sequence pointers consecutively in an array.
Another array stores an id value for each sequence.
That means that accessing given an id needs a search through the id array.
@@ -274,7 +274,7 @@ Workshop Assignment 4
#. Build a StringSet of readList. Reuse the Rooted iterator above.
#. Iterate over the StringSet and print out the values.
- .. includefrags:: demos/tutorial/string_sets/assignment_3_workshop_solution.cpp
+ .. includefrags:: demos/tutorial/string_sets/assignment_3b_workshop_solution.cpp
Solution
Click **more...** to see the solution.
diff --git a/manual/source/Tutorial/GenericProgramming.rst b/manual/source/Tutorial/TemplateSubclassing.rst
similarity index 100%
rename from manual/source/Tutorial/GenericProgramming.rst
rename to manual/source/Tutorial/TemplateSubclassing.rst
diff --git a/manual/source/Tutorial/VcfIO.rst b/manual/source/Tutorial/VcfIO.rst
index e5750e8..c9ce4c9 100644
--- a/manual/source/Tutorial/VcfIO.rst
+++ b/manual/source/Tutorial/VcfIO.rst
@@ -51,7 +51,32 @@ For more details, see the `VCF Format Specification (v4.2) <https://samtools.git
The following is an example of a VCF file:
-.. includefrags:: demos/tutorial/vcf_io/example.vcf
+::
+
+ ##fileformat=VCFv4.1
+ ##fileDate=20090805
+ ##source=myImputationProgramV3.1
+ ##reference=file:///seq/references/1000GenomesPilot-NCBI36.fasta
+ ##contig=<ID=20,length=62435964,assembly=B36,md5=f126cdf8a6e0c7f379d618ff66beb2da,species="Homo sapiens",taxonomy=x>
+ ##phasing=partial
+ ##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
+ ##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
+ ##INFO=<ID=AF,Number=A,Type=Float,Description="Allele Frequency">
+ ##INFO=<ID=AA,Number=1,Type=String,Description="Ancestral Allele">
+ ##INFO=<ID=DB,Number=0,Type=Flag,Description="dbSNP membership, build 129">
+ ##INFO=<ID=H2,Number=0,Type=Flag,Description="HapMap2 membership">
+ ##FILTER=<ID=q10,Description="Quality below 10">
+ ##FILTER=<ID=s50,Description="Less than 50% of samples have data">
+ ##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
+ ##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
+ ##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
+ ##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">
+ #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001 NA00002 NA00003
+ 20 14370 rs6054257 G A 29 PASS NS=3;DP=14;AF=0.5;DB;H2 GT:GQ:DP:HQ 0|0:48:1:51,51 1|0:48:8:51,51 1/1:43:5:.,.
+ 20 17330 . T A 3 q10 NS=3;DP=11;AF=0.017 GT:GQ:DP:HQ 0|0:49:3:58,50 0|1:3:5:65,3 0/0:41:3
+ 20 1110696 rs6040355 A G,T 67 PASS NS=2;DP=10;AF=0.333,0.667;AA=T;DB GT:GQ:DP:HQ 1|2:21:6:23,27 2|1:2:0:18,2 2/2:35:4
+ 20 1230237 . T . 47 PASS NS=3;DP=13;AA=T GT:GQ:DP:HQ 0|0:54:7:56,60 0|0:48:4:51,51 0/0:61:2
+ 20 1234567 microsat1 GTC G,GTCT 50 PASS NS=3;DP=9;AA=G GT:GQ:DP 0/1:35:4 0/2:17:2 1/1:40:3
The file starts with meta information lines (starting with ``##``) with a key/value structure.
The most important lines have the keys **contig**, **INFO**, **FILTER**, and **FORMAT**.
diff --git a/manual/source/Tutorial/WritingTests.rst b/manual/source/Tutorial/WritingTests.rst
index a9893fd..15b135a 100644
--- a/manual/source/Tutorial/WritingTests.rst
+++ b/manual/source/Tutorial/WritingTests.rst
@@ -101,7 +101,6 @@ The generated file looks as follows:
#define TESTS_MY_MODULE_TEST_MY_MODULE_H_
#include <seqan/basic.h>
- #include <seqan/stream.h>
#include <seqan/sequence.h>
// A test for strings.
diff --git a/manual/source/conf.py b/manual/source/conf.py
index dede96d..c643ce4 100644
--- a/manual/source/conf.py
+++ b/manual/source/conf.py
@@ -49,26 +49,16 @@ master_doc = 'index'
# General information about the project.
project = u'SeqAn'
-copyright = u'2015, The SeqAn Team'
-
-# <-- SeqAn: Determine current branch ----------------------------------------------
-
-# Get the current seqan-branch from the READTHEDOCS_VERSION enviornment variable.
-# If it is not set, e.g., if you build it manually for testing you can export
-# this variable before calling make html in the manual directory to match your
-# checked out branch.
-seqan_branch = os.environ.get('READTHEDOCS_VERSION', 'master')
-
-# -- SeqAn: Determine current branch ---------------------------------------------->
+copyright = u'2014, The SeqAn Team'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = seqan_branch.replace('seqan-v','')
+version = '1.4'
# The full version, including alpha/beta/rc tags.
-release = version
+release = '1.4.2'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -276,18 +266,21 @@ texinfo_documents = [
# -- Options for the Disqus integration -------------------------------------
-#on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
-#if on_rtd:
-# html_context = {
-# 'disqus_shortname': 'seqan-manual',
-# }
+on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
+if on_rtd:
+ html_context = {
+ 'disqus_shortname': 'seqan-manual',
+ }
# -- Options for SeqAn plugins ----------------------------------------------
# Configure the base URL for dox links. By default, we point to the develop
# branch, but if we are on readthedocs then we compute the URL from the
-# RTD_VERSION_SLUG configured by the rtd environment.
-doxlinks_base_url = 'http://docs.seqan.de/seqan/%s/' % version
+# release as configured in the release.
+doxlinks_base_url = 'http://docs.seqan.de/seqan/develop/'
+#if on_rtd:
+# seqan_release = release.replace('seqan-v', '')
+# doxlinks_base_url = 'http://docs.seqan.de/seqan/%s/' % seqan_release
# Set path to JSON index generated by dox.
doxlinks_dox_json = "../dox/html/js/search.data.js"
diff --git a/tests/align/test_evaluate_alignment.h b/tests/align/test_evaluate_alignment.h
index e4e57fa..a987b46 100644
--- a/tests/align/test_evaluate_alignment.h
+++ b/tests/align/test_evaluate_alignment.h
@@ -54,7 +54,7 @@ SEQAN_DEFINE_TEST(test_align_compute_alignment_stats)
// Compute the alignment.
seqan::Blosum62 scoringScheme(-1, -12);
int score = globalAlignment(align, scoringScheme);
-// std::cerr << align;
+ // std::cerr << align;
SEQAN_ASSERT_EQ(score, 159);
// Compute alignment statistics.
@@ -66,8 +66,8 @@ SEQAN_DEFINE_TEST(test_align_compute_alignment_stats)
SEQAN_ASSERT_EQ(stats.numGapExtensions, 9u);
SEQAN_ASSERT_EQ(stats.numMatches, 41u);
SEQAN_ASSERT_EQ(stats.numMismatches, 96u);
- SEQAN_ASSERT_EQ(stats.numPositiveScores, 69u);
- SEQAN_ASSERT_EQ(stats.numNegativeScores, 68u);
+ SEQAN_ASSERT_EQ(stats.numPositiveScores, 91u);
+ SEQAN_ASSERT_EQ(stats.numNegativeScores, 46u);
SEQAN_ASSERT_EQ(stats.alignmentScore, 159);
}
diff --git a/tests/bam_io/CMakeLists.txt b/tests/bam_io/CMakeLists.txt
index 2f3dc79..2169a20 100644
--- a/tests/bam_io/CMakeLists.txt
+++ b/tests/bam_io/CMakeLists.txt
@@ -33,15 +33,13 @@ add_executable (test_bam_io
test_bam_io.cpp
test_bam_alignment_record.h
test_bam_header_record.h
- test_bam_index.h
test_bam_io_context.h
test_bam_sam_conversion.h
test_bam_tags_dict.h
test_read_sam.h
test_write_bam.h
test_write_sam.h
- test_bam_file.h
- test_bam_index.h)
+ test_bam_file.h)
# Add dependencies found by find_package (SeqAn).
target_link_libraries (test_bam_io ${SEQAN_LIBRARIES})
diff --git a/tests/bam_io/test_bam_file.h b/tests/bam_io/test_bam_file.h
index ecb23f4..c85257b 100644
--- a/tests/bam_io/test_bam_file.h
+++ b/tests/bam_io/test_bam_file.h
@@ -466,7 +466,7 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_file_size)
readRecord(record, bamFile);
- SEQAN_ASSERT_EQ((int)position(bamFile), 0x9F0000);
+ SEQAN_ASSERT_EQ((int)position(bamFile), 0x0120);
}
SEQAN_DEFINE_TEST(test_bam_io_bam_file_bam_file_seek)
diff --git a/tests/bam_io/test_bam_index.h b/tests/bam_io/test_bam_index.h
index 3cc42ee..d1611f1 100644
--- a/tests/bam_io/test_bam_index.h
+++ b/tests/bam_io/test_bam_index.h
@@ -40,30 +40,12 @@
#include <seqan/bam_io.h>
-using namespace seqan;
-
-SEQAN_DEFINE_TEST(test_bam_io_bam_index_build)
+SEQAN_DEFINE_TEST(test_bam_io_bam_index_bai)
{
- CharString expectedBaiFilename = SEQAN_PATH_TO_ROOT();
- append(expectedBaiFilename, "/tests/bam_io/small.bam.bai");
-
- CharString bamFilename = SEQAN_PATH_TO_ROOT();
- append(bamFilename, "/tests/bam_io/small.bam");
-
- CharString tmpOutPath = SEQAN_TEMP_FILENAME();
- append(tmpOutPath, ".bai");
-
- BamIndex<Bai> baiIndex;
- SEQAN_ASSERT(build(baiIndex, toCString(bamFilename)));
- SEQAN_ASSERT(save(baiIndex, toCString(tmpOutPath)));
-
- SEQAN_ASSERT(_compareBinaryFiles(toCString(tmpOutPath), toCString(expectedBaiFilename)));
-}
-
+ using namespace seqan;
-SEQAN_DEFINE_TEST(test_bam_io_bam_index_open)
-{
- CharString baiFilename = SEQAN_PATH_TO_ROOT();
+ CharString baiFilename;
+ append(baiFilename, SEQAN_PATH_TO_ROOT());
append(baiFilename, "/tests/bam_io/small.bam.bai");
BamIndex<Bai> baiIndex;
@@ -80,7 +62,8 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_index_open)
SEQAN_ASSERT_EQ(getUnalignedCount(baiIndex), 0u);
// File has same contents as in the SAM test.
- CharString bamFilename = SEQAN_PATH_TO_ROOT();
+ CharString bamFilename;
+ append(bamFilename, SEQAN_PATH_TO_ROOT());
append(bamFilename, "/tests/bam_io/small.bam");
BamFileIn bamFile(toCString(bamFilename));
@@ -97,20 +80,4 @@ SEQAN_DEFINE_TEST(test_bam_io_bam_index_open)
SEQAN_ASSERT_NOT(found);
}
-SEQAN_DEFINE_TEST(test_bam_io_bam_index_save)
-{
- CharString baiFilename = SEQAN_PATH_TO_ROOT();
- append(baiFilename, "/tests/bam_io/small.bam.bai");
-
- CharString tmpOutPath = SEQAN_TEMP_FILENAME();
- append(tmpOutPath, ".bai");
-
- BamIndex<Bai> baiIndex;
- SEQAN_ASSERT(open(baiIndex, toCString(baiFilename)));
- SEQAN_ASSERT(save(baiIndex, toCString(tmpOutPath)));
-
- SEQAN_ASSERT(_compareBinaryFiles(toCString(tmpOutPath), toCString(baiFilename)));
-}
-
-
#endif // TESTS_BAM_IO_TEST_BAM_INDEX_H_
diff --git a/tests/bam_io/test_bam_io.cpp b/tests/bam_io/test_bam_io.cpp
index f153be2..4980ffb 100644
--- a/tests/bam_io/test_bam_io.cpp
+++ b/tests/bam_io/test_bam_io.cpp
@@ -176,10 +176,7 @@ SEQAN_BEGIN_TESTSUITE(test_bam_io)
SEQAN_CALL_TEST(test_bam_io_sam_file_issue_489);
// Test BAM indices.
- SEQAN_CALL_TEST(test_bam_io_bam_index_save);
-// TODO(dadi): uncomment when BamIndex.build index is fixed
-// SEQAN_CALL_TEST(test_bam_io_bam_index_build);
- SEQAN_CALL_TEST(test_bam_io_bam_index_open);
+ SEQAN_CALL_TEST(test_bam_io_bam_index_bai);
#endif
}
SEQAN_END_TESTSUITE
diff --git a/tests/basic/test_basic_alphabet_residue.h b/tests/basic/test_basic_alphabet_residue.h
index eeb254f..c234180 100644
--- a/tests/basic/test_basic_alphabet_residue.h
+++ b/tests/basic/test_basic_alphabet_residue.h
@@ -355,7 +355,7 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_amino_acid)
SEQAN_ASSERT_EQ(+(BitsPerValue<AminoAcid>::VALUE), 5);
// Ordered Alphabet Concept Metafunctions / Type Queries
- SEQAN_ASSERT_EQ(MaxValue<AminoAcid>::VALUE, 26u);
+
SEQAN_ASSERT_EQ(MaxValue<AminoAcid>::VALUE, AminoAcid('*'));
SEQAN_ASSERT_EQ(maxValue<AminoAcid>(), AminoAcid('*'));
SEQAN_ASSERT_EQ(maxValue(AminoAcid()), AminoAcid('*'));
@@ -380,23 +380,22 @@ SEQAN_DEFINE_TEST(test_basic_alphabet_residue_metafunctions_amino_acid)
SEQAN_ASSERT_EQ(ordValue(AminoAcid('L')), 11);
SEQAN_ASSERT_EQ(ordValue(AminoAcid('M')), 12);
SEQAN_ASSERT_EQ(ordValue(AminoAcid('N')), 13);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('O')), 14);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('P')), 15);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('Q')), 16);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('R')), 17);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('S')), 18);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('T')), 19);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('U')), 20);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('V')), 21);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('W')), 22);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('Y')), 23);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('Z')), 24);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('X')), 25);
- SEQAN_ASSERT_EQ(ordValue(AminoAcid('*')), 26);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('P')), 14);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('Q')), 15);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('R')), 16);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('S')), 17);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('T')), 18);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('U')), 19);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('V')), 20);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('W')), 21);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('Y')), 22);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('Z')), 23);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('X')), 24);
+ SEQAN_ASSERT_EQ(ordValue(AminoAcid('*')), 25);
SEQAN_ASSERT(+(SameType_<typename ValueSize<AminoAcid>::Type, __uint8>::VALUE));
- SEQAN_ASSERT_EQ(+ValueSize<AminoAcid>::VALUE, 27);
- SEQAN_ASSERT_EQ(valueSize<AminoAcid>(), 27u);
+ SEQAN_ASSERT_EQ(+ValueSize<AminoAcid>::VALUE, 26);
+ SEQAN_ASSERT_EQ(valueSize<AminoAcid>(), 26u);
// Alphabet With Unknown Value Concept Metafunctions / Type Queries
diff --git a/tests/find/test_find.cpp b/tests/find/test_find.cpp
index 124c42d..59173ad 100644
--- a/tests/find/test_find.cpp
+++ b/tests/find/test_find.cpp
@@ -1274,7 +1274,9 @@ SEQAN_DEFINE_TEST(test_find_online_multi_MultipleShiftAnd) {
SEQAN_DEFINE_TEST(test_find_online_multi_SetHorspool) {
- Test_OnlineAlgMulti<SetHorspool>(false);
+ // TODO(holtgrew): Original comment: Does not compile.
+ // TODO(holtgrew): Crashes, but was commented out in original code.
+ // Test_OnlineAlgMulti<SetHorspool>(false);
}
diff --git a/tests/gff_io/example_with_comments.gff b/tests/gff_io/example_with_comments.gff
deleted file mode 100644
index 2934ad4..0000000
--- a/tests/gff_io/example_with_comments.gff
+++ /dev/null
@@ -1,6 +0,0 @@
-# comment 1
-ctg123 . mRNA 1300 9000 . + . ID=mrna0001;Name="sonichedgehog;hehe"
-# comment 2
-ctg123 . exon 1300 1500 . + . ID=exon00001;Parent=mrn a0001;Name
-ctg123 . exon 1050 1500 . + . ID=exon00002;Name;Parent=mrna0001
-# comment 3
diff --git a/tests/gff_io/test_gff_io.cpp b/tests/gff_io/test_gff_io.cpp
index 2659428..4ac2952 100644
--- a/tests/gff_io/test_gff_io.cpp
+++ b/tests/gff_io/test_gff_io.cpp
@@ -42,12 +42,11 @@
SEQAN_BEGIN_TESTSUITE(test_gff_io)
{
// GFF tests
- SEQAN_CALL_TEST(test_store_io_read_record_context_gff);
- SEQAN_CALL_TEST(test_store_io_write_record_context_gff);
- SEQAN_CALL_TEST(test_store_io_comment_processing_context_gff);
+ SEQAN_CALL_TEST(test_store_io_read_record_context_gff);
+ SEQAN_CALL_TEST(test_store_io_write_record_context_gff);
- // GTF tests
- SEQAN_CALL_TEST(test_store_io_read_record_context_gtf);
+ // GTF tests
+ SEQAN_CALL_TEST(test_store_io_read_record_context_gtf);
SEQAN_CALL_TEST(test_store_io_read_record_gtf_pseudogenes);
SEQAN_CALL_TEST(test_store_io_write_record_context_gtf);
diff --git a/tests/gff_io/test_gff_io.h b/tests/gff_io/test_gff_io.h
index b337c1d..e3edd9c 100644
--- a/tests/gff_io/test_gff_io.h
+++ b/tests/gff_io/test_gff_io.h
@@ -133,66 +133,6 @@ SEQAN_DEFINE_TEST(test_store_io_write_record_context_gff)
SEQAN_ASSERT_EQ(goldString, compare);
}
-SEQAN_DEFINE_TEST(test_store_io_comment_processing_context_gff)
-{
- CharString gffPath = SEQAN_PATH_TO_ROOT();
-
- // slightly modified version of "example.gff". 3 lines of comments are included.
- append(gffPath, "/tests/gff_io/example_with_comments.gff");
-
- String<char, MMap<> > inString;
- open(inString, toCString(gffPath));
- Iterator<String<char, MMap<> >, Rooted>::Type iter = begin(inString);
-
- CharString buffer;
-
- GffRecord record;
- readRecord(record, buffer, iter);
-
- SEQAN_ASSERT_EQ(record.ref, "ctg123");
- SEQAN_ASSERT_EQ(record.source, "");
- SEQAN_ASSERT_EQ(record.type, "mRNA");
- SEQAN_ASSERT_EQ(record.beginPos, 1299u);
- SEQAN_ASSERT_EQ(record.endPos, 9000u);
- SEQAN_ASSERT_NEQ(record.score, record.score);
- SEQAN_ASSERT_EQ(record.strand, '+');
- SEQAN_ASSERT_EQ(record.phase, '.');
- SEQAN_ASSERT_EQ(record.tagNames[0], "ID");
- SEQAN_ASSERT_EQ(record.tagValues[0], "mrna0001");
- SEQAN_ASSERT_EQ(record.tagNames[1], "Name");
- SEQAN_ASSERT_EQ(record.tagValues[1], "sonichedgehog;hehe");
-
- readRecord(record, buffer, iter);
- SEQAN_ASSERT_EQ(record.ref, "ctg123");
- SEQAN_ASSERT_EQ(record.source, "");
- SEQAN_ASSERT_EQ(record.type, "exon");
- SEQAN_ASSERT_EQ(record.beginPos, 1299u);
- SEQAN_ASSERT_EQ(record.endPos, 1500u);
- SEQAN_ASSERT_NEQ(record.score, record.score);
- SEQAN_ASSERT_EQ(record.strand, '+');
- SEQAN_ASSERT_EQ(record.phase, '.');
- SEQAN_ASSERT_EQ(record.tagNames[0], "ID");
- SEQAN_ASSERT_EQ(record.tagValues[0], "exon00001");
- SEQAN_ASSERT_EQ(record.tagNames[1], "Parent");
- SEQAN_ASSERT_EQ(record.tagValues[1], "mrn a0001");
-
- readRecord(record, buffer, iter);
- SEQAN_ASSERT_EQ(record.ref, "ctg123");
- SEQAN_ASSERT_EQ(record.source, "");
- SEQAN_ASSERT_EQ(record.type, "exon");
- SEQAN_ASSERT_EQ(record.beginPos, 1049u);
- SEQAN_ASSERT_EQ(record.endPos, 1500u);
- SEQAN_ASSERT_NEQ(record.score, record.score);
- SEQAN_ASSERT_EQ(record.strand, '+');
- SEQAN_ASSERT_EQ(record.phase, '.');
- SEQAN_ASSERT_EQ(record.tagNames[0], "ID");
- SEQAN_ASSERT_EQ(record.tagValues[0], "exon00002");
- SEQAN_ASSERT_EQ(record.tagNames[1], "Name");
- SEQAN_ASSERT_EQ(record.tagValues[1], "");
- SEQAN_ASSERT_EQ(record.tagNames[2], "Parent");
-}
-
-
// Complex GTF format, from pseudogenes.org
SEQAN_DEFINE_TEST(test_store_io_read_record_gtf_pseudogenes)
{
diff --git a/tests/modifier/test_modifier.cpp b/tests/modifier/test_modifier.cpp
index dcf165a..f281780 100644
--- a/tests/modifier/test_modifier.cpp
+++ b/tests/modifier/test_modifier.cpp
@@ -62,7 +62,6 @@ SEQAN_BEGIN_TESTSUITE(test_modifier)
SEQAN_CALL_TEST(test_modifer_shortcuts_reverse_complement_in_place_string_set);
SEQAN_CALL_TEST(test_modifer_shortcuts_reverse_in_place_string);
SEQAN_CALL_TEST(test_modifer_shortcuts_reverse_in_place_string_set);
- SEQAN_CALL_TEST(test_modifier_reverse_iterator_metafunctions);
SEQAN_CALL_TEST(test_modifer_shortcuts_to_lower_in_place_string);
SEQAN_CALL_TEST(test_modifer_shortcuts_to_lower_in_place_string_set);
SEQAN_CALL_TEST(test_modifer_shortcuts_to_upper_in_place_string);
@@ -90,6 +89,7 @@ SEQAN_BEGIN_TESTSUITE(test_modifier)
// Test modifier view string.
SEQAN_CALL_TEST(test_modifier_view_iterator_metafunctions);
+ SEQAN_CALL_TEST(test_modifier_view_iterator_metafunctions);
SEQAN_CALL_TEST(test_modifier_view_iterator);
// SEQAN_CALL_TEST(test_modifier_view_const_iterator);
SEQAN_CALL_TEST(test_modifier_view_string_caesar_chiffre);
@@ -117,6 +117,5 @@ SEQAN_BEGIN_TESTSUITE(test_modifier)
SEQAN_CALL_TEST(test_modifier_modified_string_reverse_segment);
SEQAN_CALL_TEST(test_modifier_minimal);
- SEQAN_CALL_TEST(test_modifier_reverse_back_front);
}
SEQAN_END_TESTSUITE
diff --git a/tests/modifier/test_modifier_string.h b/tests/modifier/test_modifier_string.h
index 7ee8cb2..8841887 100644
--- a/tests/modifier/test_modifier_string.h
+++ b/tests/modifier/test_modifier_string.h
@@ -104,8 +104,7 @@ SEQAN_DEFINE_TEST(test_modifier_modified_string_construct)
TString original;
TModifiedString modified(original);
-//NOTE(h-2): ModStrings cannot be constructed from temporaries
-// TModifiedString modified2(suffix(original, 0));
+ TModifiedString modified2(suffix(original, 0));
}
{
@@ -118,8 +117,7 @@ SEQAN_DEFINE_TEST(test_modifier_modified_string_construct)
TInnerModifiedString modified(frag);
TOuterModifiedString modified2(frag);
-//NOTE(h-2): ModStrings cannot be constructed from temporaries
-// TOuterModifiedString modified3(suffix(frag, 0));
+ TOuterModifiedString modified3(suffix(frag, 0));
}
}
@@ -435,88 +433,9 @@ SEQAN_DEFINE_TEST(test_modifier_minimal)
TString original = "The QUICK brown fox.";
TInnerModifiedString inner(original);
-
// static_cast<typename seqan::Parameter_<TString>::Type *>(seqan::Nothing()); // #=> non-const reference
// static_cast<typename TInnerModifiedString::THostPointer_ *>(seqan::Nothing()); // #=> const pointer
// static_cast<typename seqan::Pointer_<TString>::Type *>(seqan::Nothing());
}
-SEQAN_DEFINE_TEST(test_modifier_reverse_back_front)
-{
- using namespace seqan;
-
- {
- typedef CharString TString;
- typedef ModifiedString<TString, ModReverse> TInnerModifiedString;
- typedef typename Iterator<TInnerModifiedString, Standard>::Type TIt;
-
- TString original = "The QUICK brown fox.";
- TInnerModifiedString inner(original);
-
- TIt it = begin(inner, Standard());
- SEQAN_ASSERT_EQ(*it, '.');
- SEQAN_ASSERT_EQ((*begin(inner, Standard())), '.');
- it = end(inner, Standard());
- --it;
- SEQAN_ASSERT_EQ(*it, 'T');
-
- SEQAN_ASSERT_EQ(front(inner), '.');
- SEQAN_ASSERT_EQ(back(inner), 'T');
- }
- {
- typedef CharString const TString;
- typedef ModifiedString<TString, ModReverse> TInnerModifiedString;
- typedef typename Iterator<TInnerModifiedString, Standard>::Type TIt;
-
- TString original = "The QUICK brown fox.";
- TInnerModifiedString inner(original);
-
- TIt it = begin(inner, Standard());
- SEQAN_ASSERT_EQ(*it, '.');
- SEQAN_ASSERT_EQ((*begin(inner, Standard())), '.');
- it = end(inner, Standard());
- --it;
- SEQAN_ASSERT_EQ(*it, 'T');
-
- SEQAN_ASSERT_EQ(front(inner), '.');
- SEQAN_ASSERT_EQ(back(inner), 'T');
- }
-}
-
-SEQAN_DEFINE_TEST(test_modifier_reverse_iterator_metafunctions)
-{
- using namespace seqan;
-
- typedef ModifiedIterator<CharString, ModReverse> TModifiedIterator;
-
- {
- typedef char TExpected;
- typedef Value<TModifiedIterator>::Type TResult;
- bool res = IsSameType<TExpected, TResult>::VALUE;
- SEQAN_ASSERT(res);
- #ifdef SEQAN_CXX11_STANDARD
- static_assert(std::is_same<TExpected, TResult>::value, "Different type expected.");
- #endif
- }
- {
- typedef char const & TExpected;
- typedef GetValue<TModifiedIterator>::Type TResult;
- bool res = IsSameType<TExpected, TResult>::VALUE;
- SEQAN_ASSERT(res);
- #ifdef SEQAN_CXX11_STANDARD
- static_assert(std::is_same<TExpected, TResult>::value, "Different type expected.");
- #endif
- }
- {
- typedef char & TExpected;
- typedef Reference<TModifiedIterator>::Type TResult;
- bool res = IsSameType<TExpected, TResult>::VALUE;
- #ifdef SEQAN_CXX11_STANDARD
- static_assert(std::is_same<TExpected, TResult>::value, "Different type expected.");
- #endif
- SEQAN_ASSERT(res);
- }
-}
-
-
#endif // #ifndef SEQAN_TESTS_MODIFIER_TEST_MODIFIER_STRING_H_
diff --git a/tests/modifier/test_modifier_view.h b/tests/modifier/test_modifier_view.h
index 38ce251..fd94ab0 100644
--- a/tests/modifier/test_modifier_view.h
+++ b/tests/modifier/test_modifier_view.h
@@ -69,7 +69,7 @@ SEQAN_DEFINE_TEST(test_modifier_view_iterator_metafunctions)
SEQAN_ASSERT(res);
}
{
- typedef char TExpected;
+ typedef char & TExpected;
typedef Reference<TModifiedIterator>::Type TResult;
bool res = IsSameType<TExpected, TResult>::VALUE;
SEQAN_ASSERT(res);
diff --git a/tests/parallel/test_parallel.cpp b/tests/parallel/test_parallel.cpp
index 18af506..555cc32 100755
--- a/tests/parallel/test_parallel.cpp
+++ b/tests/parallel/test_parallel.cpp
@@ -97,9 +97,9 @@ SEQAN_BEGIN_TESTSUITE(test_parallel) {
SEQAN_CALL_TEST(test_parallel_queue_spmc_fixedsize);
SEQAN_CALL_TEST(test_parallel_queue_spmc_dynamicsize);
SEQAN_CALL_TEST(test_parallel_queue_mpsc_fixedsize);
-// SEQAN_CALL_TEST(test_parallel_queue_mpsc_dynamicsize);
-// SEQAN_CALL_TEST(test_parallel_queue_mpmc_fixedsize);
-// SEQAN_CALL_TEST(test_parallel_queue_mpmc_dynamicsize);
+ SEQAN_CALL_TEST(test_parallel_queue_mpsc_dynamicsize);
+ SEQAN_CALL_TEST(test_parallel_queue_mpmc_fixedsize);
+ SEQAN_CALL_TEST(test_parallel_queue_mpmc_dynamicsize);
}
#endif
}
diff --git a/tests/reduced_aminoacid/test_reduced_aminoacid.cpp b/tests/reduced_aminoacid/test_reduced_aminoacid.cpp
index 5d24ed5..2f045f6 100644
--- a/tests/reduced_aminoacid/test_reduced_aminoacid.cpp
+++ b/tests/reduced_aminoacid/test_reduced_aminoacid.cpp
@@ -43,7 +43,6 @@ SEQAN_BEGIN_TESTSUITE(test_reduced_aminoacid)
{
// SEQAN_CALL_TEST(test_reduced_aminoacid_cluster_red);
SEQAN_CALL_TEST(test_reduced_aminoacid_murphy10);
- SEQAN_CALL_TEST(test_reduced_aminoacid_murphy10_moditerators);
- SEQAN_CALL_TEST(test_reduced_aminoacid_murphy10_modview_fmindex);
+
}
SEQAN_END_TESTSUITE
diff --git a/tests/reduced_aminoacid/test_reduced_aminoacid.h b/tests/reduced_aminoacid/test_reduced_aminoacid.h
index d1fd61f..443400e 100644
--- a/tests/reduced_aminoacid/test_reduced_aminoacid.h
+++ b/tests/reduced_aminoacid/test_reduced_aminoacid.h
@@ -42,8 +42,6 @@
#include <seqan/file.h>
#include <seqan/reduced_aminoacid.h>
-#include <seqan/modifier.h>
-#include <seqan/index.h>
using namespace seqan;
@@ -98,7 +96,7 @@ SEQAN_DEFINE_TEST(test_reduced_aminoacid_murphy10)
ReducedAminoAcidMurphy10;
CharString str = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz*+#";
- String<AminoAcid> aas = "ABCDEFGHIJKLMNOPQRSTUVWYZX*";
+ String<AminoAcid> aas = "ABCDEFGHIJKLMNPQRSTUVWYZX*";
// N = 10
{
@@ -107,145 +105,8 @@ SEQAN_DEFINE_TEST(test_reduced_aminoacid_murphy10)
CharString(conv),
"AABBCCBBBBFFGGHHIIIIKKIIIIBBAAPPBBKKSSSSAAIIFFAAFFBBFAA");
conv = aas;
- SEQAN_ASSERT_EQ(CharString(conv), "ABCBBFGHIIKIIBAPBKSSAIFFBAF");
+ SEQAN_ASSERT_EQ(CharString(conv), "ABCBBFGHIIKIIBPBKSSAIFFBAF");
}
}
-template <typename TModString>
-void _testReducedAminoAcidMurphy10ModIteratorsImpl(TModString & conv)
-{
- typedef typename Iterator<TModString, Standard>::Type TIt;
- typedef typename Iterator<TModString, Rooted>::Type TItR;
-
- CharString toCharString = conv;
- SEQAN_ASSERT_EQ(toCharString,
- "ABCBBFGHIIKIIBAPBKSSAIFFBAF");
-
- // iterating
- {
- unsigned c = 0;
- for (TIt it = begin(conv, Standard()), itEnd = end(conv, Standard());
- it != itEnd;
- ++it, ++c)
- SEQAN_ASSERT_EQ(char(*it), toCharString[c]);
- }
-
- // atBegin, atEnd, position (Standard)
- {
- TIt it = begin(conv, Standard());
- SEQAN_ASSERT(atBegin(it, conv));
- SEQAN_ASSERT_EQ(position(it, conv), 0u);
-
- it = end(conv, Standard());
- SEQAN_ASSERT(atEnd(it, conv));
- SEQAN_ASSERT_EQ(position(it, conv), length(conv));
- }
-
- // atBegin, atEnd, position (Rooted)
- {
- TItR it = begin(conv, Rooted());
- SEQAN_ASSERT(atBegin(it));
- SEQAN_ASSERT(atBegin(it, conv));
- SEQAN_ASSERT_EQ(position(it), 0u);
- SEQAN_ASSERT_EQ(position(it, conv), 0u);
-
- it = end(conv, Rooted());
- SEQAN_ASSERT(atEnd(it));
- SEQAN_ASSERT(atEnd(it, conv));
- SEQAN_ASSERT_EQ(position(it), length(conv));
- SEQAN_ASSERT_EQ(position(it, conv), length(conv));
- }
-}
-
-SEQAN_DEFINE_TEST(test_reduced_aminoacid_murphy10_moditerators)
-{
- typedef SimpleType<unsigned char, ReducedAminoAcid_<Murphy10> >
- ReducedAminoAcidMurphy10;
- typedef ModifiedString<String<AminoAcid>,
- ModView<FunctorConvert<AminoAcid, ReducedAminoAcidMurphy10>>> TModString;
- String<AminoAcid> aas = "ABCDEFGHIJKLMNOPQRSTUVWYZX*";
-
- TModString conv(aas);
- _testReducedAminoAcidMurphy10ModIteratorsImpl(conv);
-
- TModString const conv2(aas);
- _testReducedAminoAcidMurphy10ModIteratorsImpl(conv2);
-
- Segment<TModString, InfixSegment> convinf = infix(conv, 0, length(conv));
- _testReducedAminoAcidMurphy10ModIteratorsImpl(convinf);
-
- Segment<TModString const, InfixSegment> conv2inf = infix(conv2, 0, length(conv));
- _testReducedAminoAcidMurphy10ModIteratorsImpl(conv2inf);
-}
-
-struct ReducedFMIndexConfig_
-{
- typedef size_t LengthSum;
- typedef WaveletTree<void, WTRDConfig<LengthSum> > Bwt;
- typedef Levels<void, LevelsRDConfig<LengthSum, Alloc<>, 2> > Sentinels;
-
- static const unsigned SAMPLING = 10;
-};
-
-SEQAN_DEFINE_TEST(test_reduced_aminoacid_murphy10_modview_fmindex)
-{
- typedef String<AminoAcid> TOrigString;
- typedef StringSet<TOrigString, Owner<ConcatDirect<> > > TOrigSet;
-
- typedef SimpleType<unsigned char, ReducedAminoAcid_<Murphy10> > ReducedAminoAcidMurphy10;
- typedef ModView<FunctorConvert<AminoAcid, ReducedAminoAcidMurphy10> > TModView;
- typedef ModifiedString<TOrigString, TModView> TModString;
- typedef StringSet<TModString, Owner<ConcatDirect<> > > TModSet;
-
- typedef FMIndex<void, ReducedFMIndexConfig_> TFMIndex;
-
- TOrigSet origSet;
- appendValue(origSet, "ABCDEFGHIJKLMNOPQRSTUVWYZX*");
- appendValue(origSet, "ABABABABABABILMVILMVILMVABABABABAB");
- appendValue(origSet, "ABCDEFGHIJKLMNOPQRSTUVWYZX*LLLLL");
- reverse(origSet); // FM-Index is reversed o_O
-
- TModSet modSet(origSet);
- SEQAN_ASSERT_EQ(modSet[0], "FABFFIASSKBPABIIKIIHGFBBCBA");
- SEQAN_ASSERT_EQ(modSet[1], "BABABABABAIIIIIIIIIIIIBABABABABABA");
- SEQAN_ASSERT_EQ(modSet[2], "IIIIIFABFFIASSKBPABIIKIIHGFBBCBA");
-
- TOrigString query = "VVVVV";
- TModString modQuery(query);
- SEQAN_ASSERT_EQ(modQuery, "IIIII");
-
- Index<TModSet, TFMIndex> index(modSet);
- indexRequire(index, FibreSALF()); // instantiate
-
- // actual search is only done if lambdas are available
-#if defined(SEQAN_CXX11_STANDARD) && (!_MSC_VER || _MSC_VER >= 1700)
- typedef typename Iterator<Index<TModSet, TFMIndex>, TopDown<>>::Type TIndexIt;
-
- std::vector<std::pair<uint64_t, uint64_t>> hits;
- auto callback = [&] (TIndexIt & indexIt, int)
- {
- for (auto subjOcc : getOccurrences(indexIt))
- {
- // reverse positions again
- setSeqOffset(subjOcc,
- length(origSet[getSeqNo(subjOcc)])
- - getSeqOffset(subjOcc)
- - length(query));
- hits.emplace_back(getSeqNo(subjOcc), getSeqOffset(subjOcc));
- }
- };
-
- Nothing nothing;
- _findImpl(nothing, index, modQuery, int(0), callback, Backtracking<Exact>());
-
- SEQAN_ASSERT_EQ(length(hits), 9u);
- SEQAN_ASSERT_EQ(std::get<0>(hits[0]), 1u); SEQAN_ASSERT_EQ(std::get<1>(hits[0]), 12u);
- SEQAN_ASSERT_EQ(std::get<0>(hits[1]), 2u); SEQAN_ASSERT_EQ(std::get<1>(hits[1]), 27u);
- for (unsigned i = 1; i < 7; ++i)
- {
- SEQAN_ASSERT_EQ(std::get<0>(hits[1+i]), 1u); SEQAN_ASSERT_EQ(std::get<1>(hits[1+i]), 12u +i);
- }
-#endif
-}
-
#endif // SEQAN_TESTS_REDUCED_ALPHABET_H_
diff --git a/tests/score/BLOSUM30 b/tests/score/BLOSUM30
index b017cb5..5a0a629 100644
--- a/tests/score/BLOSUM30
+++ b/tests/score/BLOSUM30
@@ -7,32 +7,31 @@
#
# add J-Column as (I+L)/2 and U == X
# reordered to be (alphabetically sorted; X *)
- A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
-A 4 0 -3 0 0 -2 0 -2 0 -1 0 -1 1 0 0 -1 1 -1 1 1 0 1 -5 -4 0 0 -7
-B 0 5 -2 5 0 -3 0 -2 -2 -2 0 -1 -2 4 -1 -2 -1 -2 0 0 -1 -2 -5 -3 0 -1 -7
-C -3 -2 17 -3 1 -3 -4 -5 -2 -1 -3 0 -2 -1 -2 -3 -2 -2 -2 -2 -2 -2 -2 -6 0 -2 -7
-D 0 5 -3 9 1 -5 -1 -2 -4 -3 0 -1 -3 1 -1 -1 -1 -1 0 -1 -1 -2 -4 -1 0 -1 -7
-E 0 0 1 1 6 -4 -2 0 -3 -2 2 -1 -1 -1 -1 1 2 -1 0 -2 -1 -3 -1 -2 5 -1 -7
-F -2 -3 -3 -5 -4 10 -3 -3 0 1 -1 2 -2 -1 -1 -4 -3 -1 -1 -2 -1 1 1 3 -4 -1 -7
-G 0 0 -4 -1 -2 -3 8 -3 -1 -2 -1 -2 -2 0 -1 -1 -2 -2 0 -2 -1 -3 1 -3 -2 -1 -7
-H -2 -2 -5 -2 0 -3 -3 14 -2 -2 -2 -1 2 -1 -1 1 0 -1 -1 -2 -1 -3 -5 0 0 -1 -7
-I 0 -2 -2 -4 -3 0 -1 -2 6 4 -2 2 1 0 0 -3 -2 -3 -1 0 0 4 -3 -1 -3 0 -7
-J -1 -2 -1 -3 -2 1 -2 -2 4 4 -2 3 2 -1 0 -3 -2 -3 -2 0 0 3 -3 1 -2 0 -7
-K 0 0 -3 0 2 -1 -1 -2 -2 -2 4 -2 2 0 0 1 0 1 0 -1 0 -2 -2 -1 1 0 -7
-L -1 -1 0 -1 -1 2 -2 -1 2 3 -2 4 2 -2 0 -3 -2 -2 -2 0 0 1 -2 3 -1 0 -7
-M 1 -2 -2 -3 -1 -2 -2 2 1 2 2 2 6 0 0 -4 -1 0 -2 0 0 0 -3 -1 -1 0 -7
-N 0 4 -1 1 -1 -1 0 -1 0 -1 0 -2 0 8 0 -3 -1 -2 0 1 0 -2 -7 -4 -1 0 -7
-O 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 -1 0 -1 0 0 -1 0 -2 -1 0 -1 -7
-P -1 -2 -3 -1 1 -4 -1 1 -3 -3 1 -3 -4 -3 -1 11 0 -1 -1 0 -1 -4 -3 -2 0 -1 -7
-Q 1 -1 -2 -1 2 -3 -2 0 -2 -2 0 -2 -1 -1 0 0 8 3 -1 0 0 -3 -1 -1 4 0 -7
-R -1 -2 -2 -1 -1 -1 -2 -1 -3 -3 1 -2 0 -2 -1 -1 3 8 -1 -3 -1 -1 0 0 0 -1 -7
-S 1 0 -2 0 0 -1 0 -1 -1 -2 0 -2 -2 0 0 -1 -1 -1 4 2 0 -1 -3 -2 -1 0 -7
-T 1 0 -2 -1 -2 -2 -2 -2 0 0 -1 0 0 1 0 0 0 -3 2 5 0 1 -5 -1 -1 0 -7
-U 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 -1 0 -1 0 0 -1 0 -2 -1 0 -1 -7
-V 1 -2 -2 -2 -3 1 -3 -3 4 3 -2 1 0 -2 0 -4 -3 -1 -1 1 0 5 -3 1 -3 0 -7
-W -5 -5 -2 -4 -1 1 1 -5 -3 -3 -2 -2 -3 -7 -2 -3 -1 0 -3 -5 -2 -3 20 5 -1 -2 -7
-Y -4 -3 -6 -1 -2 3 -3 0 -1 1 -1 3 -1 -4 -1 -2 -1 0 -2 -1 -1 1 5 9 -2 -1 -7
-Z 0 0 0 0 5 -4 -2 0 -3 -2 1 -1 -1 -1 0 0 4 0 -1 -1 0 -3 -1 -2 4 0 -7
-X 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 -1 0 -1 0 0 -1 0 -2 -1 0 -1 -7
-* -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 1
+ A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+A 4 0 -3 0 0 -2 0 -2 0 -1 0 -1 1 0 -1 1 -1 1 1 0 1 -5 -4 0 0 -7
+B 0 5 -2 5 0 -3 0 -2 -2 -2 0 -1 -2 4 -2 -1 -2 0 0 -1 -2 -5 -3 0 -1 -7
+C -3 -2 17 -3 1 -3 -4 -5 -2 -1 -3 0 -2 -1 -3 -2 -2 -2 -2 -2 -2 -2 -6 0 -2 -7
+D 0 5 -3 9 1 -5 -1 -2 -4 -3 0 -1 -3 1 -1 -1 -1 0 -1 -1 -2 -4 -1 0 -1 -7
+E 0 0 1 1 6 -4 -2 0 -3 -2 2 -1 -1 -1 1 2 -1 0 -2 -1 -3 -1 -2 5 -1 -7
+F -2 -3 -3 -5 -4 10 -3 -3 0 1 -1 2 -2 -1 -4 -3 -1 -1 -2 -1 1 1 3 -4 -1 -7
+G 0 0 -4 -1 -2 -3 8 -3 -1 -2 -1 -2 -2 0 -1 -2 -2 0 -2 -1 -3 1 -3 -2 -1 -7
+H -2 -2 -5 -2 0 -3 -3 14 -2 -2 -2 -1 2 -1 1 0 -1 -1 -2 -1 -3 -5 0 0 -1 -7
+I 0 -2 -2 -4 -3 0 -1 -2 6 4 -2 2 1 0 -3 -2 -3 -1 0 0 4 -3 -1 -3 0 -7
+J -1 -2 -1 -3 -2 1 -2 -2 4 4 -2 3 2 -1 -3 -2 -3 -2 0 0 3 -3 1 -2 0 -7
+K 0 0 -3 0 2 -1 -1 -2 -2 -2 4 -2 2 0 1 0 1 0 -1 0 -2 -2 -1 1 0 -7
+L -1 -1 0 -1 -1 2 -2 -1 2 3 -2 4 2 -2 -3 -2 -2 -2 0 0 1 -2 3 -1 0 -7
+M 1 -2 -2 -3 -1 -2 -2 2 1 2 2 2 6 0 -4 -1 0 -2 0 0 0 -3 -1 -1 0 -7
+N 0 4 -1 1 -1 -1 0 -1 0 -1 0 -2 0 8 -3 -1 -2 0 1 0 -2 -7 -4 -1 0 -7
+P -1 -2 -3 -1 1 -4 -1 1 -3 -3 1 -3 -4 -3 11 0 -1 -1 0 -1 -4 -3 -2 0 -1 -7
+Q 1 -1 -2 -1 2 -3 -2 0 -2 -2 0 -2 -1 -1 0 8 3 -1 0 0 -3 -1 -1 4 0 -7
+R -1 -2 -2 -1 -1 -1 -2 -1 -3 -3 1 -2 0 -2 -1 3 8 -1 -3 -1 -1 0 0 0 -1 -7
+S 1 0 -2 0 0 -1 0 -1 -1 -2 0 -2 -2 0 -1 -1 -1 4 2 0 -1 -3 -2 -1 0 -7
+T 1 0 -2 -1 -2 -2 -2 -2 0 0 -1 0 0 1 0 0 -3 2 5 0 1 -5 -1 -1 0 -7
+U 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 0 -1 0 0 -1 0 -2 -1 0 -1 -7
+V 1 -2 -2 -2 -3 1 -3 -3 4 3 -2 1 0 -2 -4 -3 -1 -1 1 0 5 -3 1 -3 0 -7
+W -5 -5 -2 -4 -1 1 1 -5 -3 -3 -2 -2 -3 -7 -3 -1 0 -3 -5 -2 -3 20 5 -1 -2 -7
+Y -4 -3 -6 -1 -2 3 -3 0 -1 1 -1 3 -1 -4 -2 -1 0 -2 -1 -1 1 5 9 -2 -1 -7
+Z 0 0 0 0 5 -4 -2 0 -3 -2 1 -1 -1 -1 0 4 0 -1 -1 0 -3 -1 -2 4 0 -7
+X 0 -1 -2 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 0 -1 0 0 -1 0 -2 -1 0 -1 -7
+* -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 1
diff --git a/tests/score/BLOSUM45 b/tests/score/BLOSUM45
index 180fb28..1bb1a7a 100644
--- a/tests/score/BLOSUM45
+++ b/tests/score/BLOSUM45
@@ -7,31 +7,30 @@
#
# add J-Column as (I+L)/2 and U == X
# reordered to be (alphabetically sorted; X *)
- A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
-A 5 -1 -1 -2 -1 -2 0 -2 -1 -1 -1 -1 -1 -1 0 -1 -1 -2 1 0 0 0 -2 -2 -1 0 -5
-B -1 4 -2 5 1 -3 -1 0 -3 -3 0 -3 -2 4 -1 -2 0 -1 0 0 -1 -3 -4 -2 2 -1 -5
-C -1 -2 12 -3 -3 -2 -3 -3 -3 -3 -3 -2 -2 -2 -2 -4 -3 -3 -1 -1 -2 -1 -5 -3 -3 -2 -5
-D -2 5 -3 7 2 -4 -1 0 -4 -4 0 -3 -3 2 -1 -1 0 -1 0 -1 -1 -3 -4 -2 1 -1 -5
-E -1 1 -3 2 6 -3 -2 0 -3 -3 1 -2 -2 0 -1 0 2 0 0 -1 -1 -3 -3 -2 4 -1 -5
-F -2 -3 -2 -4 -3 8 -3 -2 0 1 -3 1 0 -2 -1 -3 -4 -2 -2 -1 -1 0 1 3 -3 -1 -5
-G 0 -1 -3 -1 -2 -3 7 -2 -4 -4 -2 -3 -2 0 -1 -2 -2 -2 0 -2 -1 -3 -2 -3 -2 -1 -5
-H -2 0 -3 0 0 -2 -2 10 -3 -3 -1 -2 0 1 -1 -2 1 0 -1 -2 -1 -3 -3 2 0 -1 -5
-I -1 -3 -3 -4 -3 0 -4 -3 5 4 -3 2 2 -2 -1 -2 -2 -3 -2 -1 -1 3 -2 0 -3 -1 -5
-J -1 -3 -3 -4 -3 1 -4 -3 4 4 -3 4 2 -3 -1 -3 -2 -3 -3 -1 -1 2 -2 0 -3 -1 -5
-K -1 0 -3 0 1 -3 -2 -1 -3 -3 5 -3 -1 0 -1 -1 1 3 -1 -1 -1 -2 -2 -1 1 -1 -5
-L -1 -3 -2 -3 -2 1 -3 -2 2 4 -3 5 2 -3 -1 -3 -2 -2 -3 -1 -1 1 -2 0 -2 -1 -5
-M -1 -2 -2 -3 -2 0 -2 0 2 2 -1 2 6 -2 -1 -2 0 -1 -2 -1 -1 1 -2 0 -1 -1 -5
-N -1 4 -2 2 0 -2 0 1 -2 -3 0 -3 -2 6 -1 -2 0 0 1 0 -1 -3 -4 -2 0 -1 -5
-O 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -5
-P -1 -2 -4 -1 0 -3 -2 -2 -2 -3 -1 -3 -2 -2 -1 9 -1 -2 -1 -1 -1 -3 -3 -3 -1 -1 -5
-Q -1 0 -3 0 2 -4 -2 1 -2 -2 1 -2 0 0 -1 -1 6 1 0 -1 -1 -3 -2 -1 4 -1 -5
-R -2 -1 -3 -1 0 -2 -2 0 -3 -3 3 -2 -1 0 -1 -2 1 7 -1 -1 -1 -2 -2 -1 0 -1 -5
-S 1 0 -1 0 0 -2 0 -1 -2 -3 -1 -3 -2 1 0 -1 0 -1 4 2 0 -1 -4 -2 0 0 -5
-T 0 0 -1 -1 -1 -1 -2 -2 -1 -1 -1 -1 -1 0 0 -1 -1 -1 2 5 0 0 -3 -1 -1 0 -5
-U 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -5
-V 0 -3 -1 -3 -3 0 -3 -3 3 2 -2 1 1 -3 -1 -3 -3 -2 -1 0 -1 5 -3 -1 -3 -1 -5
-W -2 -4 -5 -4 -3 1 -2 -3 -2 -2 -2 -2 -2 -4 -2 -3 -2 -2 -4 -3 -2 -3 15 3 -2 -2 -5
-Y -2 -2 -3 -2 -2 3 -3 2 0 0 -1 0 0 -2 -1 -3 -1 -1 -2 -1 -1 -1 3 8 -2 -1 -5
-Z -1 2 -3 1 4 -3 -2 0 -3 -3 1 -2 -1 0 -1 -1 4 0 0 -1 -1 -3 -2 -2 4 -1 -5
-X 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -5
-* -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 1
+ A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+A 5 -1 -1 -2 -1 -2 0 -2 -1 -1 -1 -1 -1 -1 -1 -1 -2 1 0 0 0 -2 -2 -1 0 -5
+B -1 4 -2 5 1 -3 -1 0 -3 -3 0 -3 -2 4 -2 0 -1 0 0 -1 -3 -4 -2 2 -1 -5
+C -1 -2 12 -3 -3 -2 -3 -3 -3 -3 -3 -2 -2 -2 -4 -3 -3 -1 -1 -2 -1 -5 -3 -3 -2 -5
+D -2 5 -3 7 2 -4 -1 0 -4 -4 0 -3 -3 2 -1 0 -1 0 -1 -1 -3 -4 -2 1 -1 -5
+E -1 1 -3 2 6 -3 -2 0 -3 -3 1 -2 -2 0 0 2 0 0 -1 -1 -3 -3 -2 4 -1 -5
+F -2 -3 -2 -4 -3 8 -3 -2 0 1 -3 1 0 -2 -3 -4 -2 -2 -1 -1 0 1 3 -3 -1 -5
+G 0 -1 -3 -1 -2 -3 7 -2 -4 -4 -2 -3 -2 0 -2 -2 -2 0 -2 -1 -3 -2 -3 -2 -1 -5
+H -2 0 -3 0 0 -2 -2 10 -3 -3 -1 -2 0 1 -2 1 0 -1 -2 -1 -3 -3 2 0 -1 -5
+I -1 -3 -3 -4 -3 0 -4 -3 5 4 -3 2 2 -2 -2 -2 -3 -2 -1 -1 3 -2 0 -3 -1 -5
+J -1 -3 -3 -4 -3 1 -4 -3 4 4 -3 4 2 -3 -3 -2 -3 -3 -1 -1 2 -2 0 -3 -1 -5
+K -1 0 -3 0 1 -3 -2 -1 -3 -3 5 -3 -1 0 -1 1 3 -1 -1 -1 -2 -2 -1 1 -1 -5
+L -1 -3 -2 -3 -2 1 -3 -2 2 4 -3 5 2 -3 -3 -2 -2 -3 -1 -1 1 -2 0 -2 -1 -5
+M -1 -2 -2 -3 -2 0 -2 0 2 2 -1 2 6 -2 -2 0 -1 -2 -1 -1 1 -2 0 -1 -1 -5
+N -1 4 -2 2 0 -2 0 1 -2 -3 0 -3 -2 6 -2 0 0 1 0 -1 -3 -4 -2 0 -1 -5
+P -1 -2 -4 -1 0 -3 -2 -2 -2 -3 -1 -3 -2 -2 9 -1 -2 -1 -1 -1 -3 -3 -3 -1 -1 -5
+Q -1 0 -3 0 2 -4 -2 1 -2 -2 1 -2 0 0 -1 6 1 0 -1 -1 -3 -2 -1 4 -1 -5
+R -2 -1 -3 -1 0 -2 -2 0 -3 -3 3 -2 -1 0 -2 1 7 -1 -1 -1 -2 -2 -1 0 -1 -5
+S 1 0 -1 0 0 -2 0 -1 -2 -3 -1 -3 -2 1 -1 0 -1 4 2 0 -1 -4 -2 0 0 -5
+T 0 0 -1 -1 -1 -1 -2 -2 -1 -1 -1 -1 -1 0 -1 -1 -1 2 5 0 0 -3 -1 -1 0 -5
+U 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -5
+V 0 -3 -1 -3 -3 0 -3 -3 3 2 -2 1 1 -3 -3 -3 -2 -1 0 -1 5 -3 -1 -3 -1 -5
+W -2 -4 -5 -4 -3 1 -2 -3 -2 -2 -2 -2 -2 -4 -3 -2 -2 -4 -3 -2 -3 15 3 -2 -2 -5
+Y -2 -2 -3 -2 -2 3 -3 2 0 0 -1 0 0 -2 -3 -1 -1 -2 -1 -1 -1 3 8 -2 -1 -5
+Z -1 2 -3 1 4 -3 -2 0 -3 -3 1 -2 -1 0 -1 4 0 0 -1 -1 -3 -2 -2 4 -1 -5
+X 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -5
+* -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 1
diff --git a/tests/score/BLOSUM62 b/tests/score/BLOSUM62
index 636fafe..179a739 100644
--- a/tests/score/BLOSUM62
+++ b/tests/score/BLOSUM62
@@ -8,31 +8,30 @@
# add J-Column as (I+L)/2 and U == X
# reordered to be (alphabetically sorted; X *)
- A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
-A 4 -2 0 -2 -1 -2 0 -2 -1 -1 -1 -1 -1 -2 0 -1 -1 -1 1 0 0 0 -3 -2 -1 0 -4
-B -2 4 -3 4 1 -3 -1 0 -3 -4 0 -4 -3 3 -1 -2 0 -1 0 -1 -1 -3 -4 -3 1 -1 -4
-C 0 -3 9 -3 -4 -2 -3 -3 -1 -1 -3 -1 -1 -3 -2 -3 -3 -3 -1 -1 -2 -1 -2 -2 -3 -2 -4
-D -2 4 -3 6 2 -3 -1 -1 -3 -4 -1 -4 -3 1 -1 -1 0 -2 0 -1 -1 -3 -4 -3 1 -1 -4
-E -1 1 -4 2 5 -3 -2 0 -3 -3 1 -3 -2 0 -1 -1 2 0 0 -1 -1 -2 -3 -2 4 -1 -4
-F -2 -3 -2 -3 -3 6 -3 -1 0 0 -3 0 0 -3 -1 -4 -3 -3 -2 -2 -1 -1 1 3 -3 -1 -4
-G 0 -1 -3 -1 -2 -3 6 -2 -4 -4 -2 -4 -3 0 -1 -2 -2 -2 0 -2 -1 -3 -2 -3 -2 -1 -4
-H -2 0 -3 -1 0 -1 -2 8 -3 -3 -1 -3 -2 1 -1 -2 0 0 -1 -2 -1 -3 -2 2 0 -1 -4
-I -1 -3 -1 -3 -3 0 -4 -3 4 3 -3 2 1 -3 -1 -3 -3 -3 -2 -1 -1 3 -3 -1 -3 -1 -4
-J -1 -4 -1 -4 -3 0 -4 -3 3 3 -3 3 2 -3 -1 -3 -3 -3 -2 -1 -1 2 -3 -1 -3 -1 -4
-K -1 0 -3 -1 1 -3 -2 -1 -3 -3 5 -2 -1 0 -1 -1 1 2 0 -1 -1 -2 -3 -2 1 -1 -4
-L -1 -4 -1 -4 -3 0 -4 -3 2 3 -2 4 2 -3 -1 -3 -2 -2 -2 -1 -1 1 -2 -1 -3 -1 -4
-M -1 -3 -1 -3 -2 0 -3 -2 1 2 -1 2 5 -2 -1 -2 0 -1 -1 -1 -1 1 -1 -1 -1 -1 -4
-N -2 3 -3 1 0 -3 0 1 -3 -3 0 -3 -2 6 -1 -2 0 0 1 0 -1 -3 -4 -2 0 -1 -4
-O 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -4
-P -1 -2 -3 -1 -1 -4 -2 -2 -3 -3 -1 -3 -2 -2 -2 7 -1 -2 -1 -1 -2 -2 -4 -3 -1 -2 -4
-Q -1 0 -3 0 2 -3 -2 0 -3 -3 1 -2 0 0 -1 -1 5 1 0 -1 -1 -2 -2 -1 3 -1 -4
-R -1 -1 -3 -2 0 -3 -2 0 -3 -3 2 -2 -1 0 -1 -2 1 5 -1 -1 -1 -3 -3 -2 0 -1 -4
-S 1 0 -1 0 0 -2 0 -1 -2 -2 0 -2 -1 1 0 -1 0 -1 4 1 0 -2 -3 -2 0 0 -4
-T 0 -1 -1 -1 -1 -2 -2 -2 -1 -1 -1 -1 -1 0 0 -1 -1 -1 1 5 0 0 -2 -2 -1 0 -4
-U 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -4
-V 0 -3 -1 -3 -2 -1 -3 -3 3 2 -2 1 1 -3 -1 -2 -2 -3 -2 0 -1 4 -3 -1 -2 -1 -4
-W -3 -4 -2 -4 -3 1 -2 -2 -3 -3 -3 -2 -1 -4 -2 -4 -2 -3 -3 -2 -2 -3 11 2 -3 -2 -4
-Y -2 -3 -2 -3 -2 3 -3 2 -1 -1 -2 -1 -1 -2 -1 -3 -1 -2 -2 -2 -1 -1 2 7 -2 -1 -4
-Z -1 1 -3 1 4 -3 -2 0 -3 -3 1 -3 -1 0 -1 -1 3 0 0 -1 -1 -2 -3 -2 4 -1 -4
-X 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -4
-* -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 1
+ A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+A 4 -2 0 -2 -1 -2 0 -2 -1 -1 -1 -1 -1 -2 -1 -1 -1 1 0 0 0 -3 -2 -1 0 -4
+B -2 4 -3 4 1 -3 -1 0 -3 -4 0 -4 -3 3 -2 0 -1 0 -1 -1 -3 -4 -3 1 -1 -4
+C 0 -3 9 -3 -4 -2 -3 -3 -1 -1 -3 -1 -1 -3 -3 -3 -3 -1 -1 -2 -1 -2 -2 -3 -2 -4
+D -2 4 -3 6 2 -3 -1 -1 -3 -4 -1 -4 -3 1 -1 0 -2 0 -1 -1 -3 -4 -3 1 -1 -4
+E -1 1 -4 2 5 -3 -2 0 -3 -3 1 -3 -2 0 -1 2 0 0 -1 -1 -2 -3 -2 4 -1 -4
+F -2 -3 -2 -3 -3 6 -3 -1 0 0 -3 0 0 -3 -4 -3 -3 -2 -2 -1 -1 1 3 -3 -1 -4
+G 0 -1 -3 -1 -2 -3 6 -2 -4 -4 -2 -4 -3 0 -2 -2 -2 0 -2 -1 -3 -2 -3 -2 -1 -4
+H -2 0 -3 -1 0 -1 -2 8 -3 -3 -1 -3 -2 1 -2 0 0 -1 -2 -1 -3 -2 2 0 -1 -4
+I -1 -3 -1 -3 -3 0 -4 -3 4 3 -3 2 1 -3 -3 -3 -3 -2 -1 -1 3 -3 -1 -3 -1 -4
+J -1 -4 -1 -4 -3 0 -4 -3 3 3 -3 3 2 -3 -3 -3 -3 -2 -1 -1 2 -3 -1 -3 -1 -4
+K -1 0 -3 -1 1 -3 -2 -1 -3 -3 5 -2 -1 0 -1 1 2 0 -1 -1 -2 -3 -2 1 -1 -4
+L -1 -4 -1 -4 -3 0 -4 -3 2 3 -2 4 2 -3 -3 -2 -2 -2 -1 -1 1 -2 -1 -3 -1 -4
+M -1 -3 -1 -3 -2 0 -3 -2 1 2 -1 2 5 -2 -2 0 -1 -1 -1 -1 1 -1 -1 -1 -1 -4
+N -2 3 -3 1 0 -3 0 1 -3 -3 0 -3 -2 6 -2 0 0 1 0 -1 -3 -4 -2 0 -1 -4
+P -1 -2 -3 -1 -1 -4 -2 -2 -3 -3 -1 -3 -2 -2 7 -1 -2 -1 -1 -2 -2 -4 -3 -1 -2 -4
+Q -1 0 -3 0 2 -3 -2 0 -3 -3 1 -2 0 0 -1 5 1 0 -1 -1 -2 -2 -1 3 -1 -4
+R -1 -1 -3 -2 0 -3 -2 0 -3 -3 2 -2 -1 0 -2 1 5 -1 -1 -1 -3 -3 -2 0 -1 -4
+S 1 0 -1 0 0 -2 0 -1 -2 -2 0 -2 -1 1 -1 0 -1 4 1 0 -2 -3 -2 0 0 -4
+T 0 -1 -1 -1 -1 -2 -2 -2 -1 -1 -1 -1 -1 0 -1 -1 -1 1 5 0 0 -2 -2 -1 0 -4
+U 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -4
+V 0 -3 -1 -3 -2 -1 -3 -3 3 2 -2 1 1 -3 -2 -2 -3 -2 0 -1 4 -3 -1 -2 -1 -4
+W -3 -4 -2 -4 -3 1 -2 -2 -3 -3 -3 -2 -1 -4 -4 -2 -3 -3 -2 -2 -3 11 2 -3 -2 -4
+Y -2 -3 -2 -3 -2 3 -3 2 -1 -1 -2 -1 -1 -2 -3 -1 -2 -2 -2 -1 -1 2 7 -2 -1 -4
+Z -1 1 -3 1 4 -3 -2 0 -3 -3 1 -3 -1 0 -1 3 0 0 -1 -1 -2 -3 -2 4 -1 -4
+X 0 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 0 0 -1 -1 -2 -1 -1 -1 -4
+* -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 1
diff --git a/tests/score/BLOSUM80 b/tests/score/BLOSUM80
index 32a51df..c4f3954 100644
--- a/tests/score/BLOSUM80
+++ b/tests/score/BLOSUM80
@@ -7,31 +7,30 @@
#
# added J-Column as (I+L)/2 and U == X
# reordered to be (alphabetically sorted; X *)
- A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
-A 7 -3 -1 -3 -2 -4 0 -3 -3 -3 -1 -3 -2 -3 -1 -1 -2 -3 2 0 -1 -1 -5 -4 -2 -1 -8
-B -3 6 -6 6 1 -6 -2 -1 -6 -7 -1 -7 -5 5 -3 -4 -1 -2 0 -1 -3 -6 -8 -5 0 -3 -8
-C -1 -6 13 -7 -7 -4 -6 -7 -2 -3 -6 -3 -3 -5 -4 -6 -5 -6 -2 -2 -4 -2 -5 -5 -7 -4 -8
-D -3 6 -7 10 2 -6 -3 -2 -7 -7 -2 -7 -6 2 -3 -3 -1 -3 -1 -2 -3 -6 -8 -6 1 -3 -8
-E -2 1 -7 2 8 -6 -4 0 -6 -6 1 -6 -4 -1 -2 -2 3 -1 -1 -2 -2 -4 -6 -5 6 -2 -8
-F -4 -6 -4 -6 -6 10 -6 -2 -1 -1 -5 0 0 -6 -3 -6 -5 -5 -4 -4 -3 -2 0 4 -6 -3 -8
-G 0 -2 -6 -3 -4 -6 9 -4 -7 -7 -3 -7 -5 -1 -3 -5 -4 -4 -1 -3 -3 -6 -6 -6 -4 -3 -8
-H -3 -1 -7 -2 0 -2 -4 12 -6 -6 -1 -5 -4 1 -2 -4 1 0 -2 -3 -2 -5 -4 3 0 -2 -8
-I -3 -6 -2 -7 -6 -1 -7 -6 7 5 -5 2 2 -6 -2 -5 -5 -5 -4 -2 -2 4 -5 -3 -6 -2 -8
-J -3 -7 -3 -7 -6 -1 -7 -6 5 5 -5 4 3 -6 -2 -5 -5 -5 -4 -3 -2 3 -5 -3 -6 -2 -8
-K -1 -1 -6 -2 1 -5 -3 -1 -5 -5 8 -4 -3 0 -2 -2 2 3 -1 -1 -2 -4 -6 -4 1 -2 -8
-L -3 -7 -3 -7 -6 0 -7 -5 2 4 -4 6 3 -6 -2 -5 -4 -4 -4 -3 -2 1 -4 -2 -5 -2 -8
-M -2 -5 -3 -6 -4 0 -5 -4 2 3 -3 3 9 -4 -2 -4 -1 -3 -3 -1 -2 1 -3 -3 -3 -2 -8
-N -3 5 -5 2 -1 -6 -1 1 -6 -6 0 -6 -4 9 -2 -4 0 -1 1 0 -2 -5 -7 -4 -1 -2 -8
-O -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2 -2 -5 -3 -1 -2 -8
-P -1 -4 -6 -3 -2 -6 -5 -4 -5 -5 -2 -5 -4 -4 -3 12 -3 -3 -2 -3 -3 -4 -7 -6 -2 -3 -8
-Q -2 -1 -5 -1 3 -5 -4 1 -5 -5 2 -4 -1 0 -2 -3 9 1 -1 -1 -2 -4 -4 -3 5 -2 -8
-R -3 -2 -6 -3 -1 -5 -4 0 -5 -5 3 -4 -3 -1 -2 -3 1 9 -2 -2 -2 -4 -5 -4 0 -2 -8
-S 2 0 -2 -1 -1 -4 -1 -2 -4 -4 -1 -4 -3 1 -1 -2 -1 -2 7 2 -1 -3 -6 -3 -1 -1 -8
-T 0 -1 -2 -2 -2 -4 -3 -3 -2 -3 -1 -3 -1 0 -1 -3 -1 -2 2 8 -1 0 -5 -3 -2 -1 -8
-U -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2 -2 -5 -3 -1 -2 -8
-V -1 -6 -2 -6 -4 -2 -6 -5 4 3 -4 1 1 -5 -2 -4 -4 -4 -3 0 -2 7 -5 -3 -4 -2 -8
-W -5 -8 -5 -8 -6 0 -6 -4 -5 -5 -6 -4 -3 -7 -5 -7 -4 -5 -6 -5 -5 -5 16 3 -5 -5 -8
-Y -4 -5 -5 -6 -5 4 -6 3 -3 -3 -4 -2 -3 -4 -3 -6 -3 -4 -3 -3 -3 -3 3 11 -4 -3 -8
-Z -2 0 -7 1 6 -6 -4 0 -6 -6 1 -5 -3 -1 -1 -2 5 0 -1 -2 -1 -4 -5 -4 6 -1 -8
-X -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2 -2 -5 -3 -1 -2 -8
-* -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
+ A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+A 7 -3 -1 -3 -2 -4 0 -3 -3 -3 -1 -3 -2 -3 -1 -2 -3 2 0 -1 -1 -5 -4 -2 -1 -8
+B -3 6 -6 6 1 -6 -2 -1 -6 -7 -1 -7 -5 5 -4 -1 -2 0 -1 -3 -6 -8 -5 0 -3 -8
+C -1 -6 13 -7 -7 -4 -6 -7 -2 -3 -6 -3 -3 -5 -6 -5 -6 -2 -2 -4 -2 -5 -5 -7 -4 -8
+D -3 6 -7 10 2 -6 -3 -2 -7 -7 -2 -7 -6 2 -3 -1 -3 -1 -2 -3 -6 -8 -6 1 -3 -8
+E -2 1 -7 2 8 -6 -4 0 -6 -6 1 -6 -4 -1 -2 3 -1 -1 -2 -2 -4 -6 -5 6 -2 -8
+F -4 -6 -4 -6 -6 10 -6 -2 -1 -1 -5 0 0 -6 -6 -5 -5 -4 -4 -3 -2 0 4 -6 -3 -8
+G 0 -2 -6 -3 -4 -6 9 -4 -7 -7 -3 -7 -5 -1 -5 -4 -4 -1 -3 -3 -6 -6 -6 -4 -3 -8
+H -3 -1 -7 -2 0 -2 -4 12 -6 -6 -1 -5 -4 1 -4 1 0 -2 -3 -2 -5 -4 3 0 -2 -8
+I -3 -6 -2 -7 -6 -1 -7 -6 7 5 -5 2 2 -6 -5 -5 -5 -4 -2 -2 4 -5 -3 -6 -2 -8
+J -3 -7 -3 -7 -6 -1 -7 -6 5 5 -5 4 3 -6 -5 -5 -5 -4 -3 -2 3 -5 -3 -6 -2 -8
+K -1 -1 -6 -2 1 -5 -3 -1 -5 -5 8 -4 -3 0 -2 2 3 -1 -1 -2 -4 -6 -4 1 -2 -8
+L -3 -7 -3 -7 -6 0 -7 -5 2 4 -4 6 3 -6 -5 -4 -4 -4 -3 -2 1 -4 -2 -5 -2 -8
+M -2 -5 -3 -6 -4 0 -5 -4 2 3 -3 3 9 -4 -4 -1 -3 -3 -1 -2 1 -3 -3 -3 -2 -8
+N -3 5 -5 2 -1 -6 -1 1 -6 -6 0 -6 -4 9 -4 0 -1 1 0 -2 -5 -7 -4 -1 -2 -8
+P -1 -4 -6 -3 -2 -6 -5 -4 -5 -5 -2 -5 -4 -4 12 -3 -3 -2 -3 -3 -4 -7 -6 -2 -3 -8
+Q -2 -1 -5 -1 3 -5 -4 1 -5 -5 2 -4 -1 0 -3 9 1 -1 -1 -2 -4 -4 -3 5 -2 -8
+R -3 -2 -6 -3 -1 -5 -4 0 -5 -5 3 -4 -3 -1 -3 1 9 -2 -2 -2 -4 -5 -4 0 -2 -8
+S 2 0 -2 -1 -1 -4 -1 -2 -4 -4 -1 -4 -3 1 -2 -1 -2 7 2 -1 -3 -6 -3 -1 -1 -8
+T 0 -1 -2 -2 -2 -4 -3 -3 -2 -3 -1 -3 -1 0 -3 -1 -2 2 8 -1 0 -5 -3 -2 -1 -8
+U -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2 -2 -5 -3 -1 -2 -8
+V -1 -6 -2 -6 -4 -2 -6 -5 4 3 -4 1 1 -5 -4 -4 -4 -3 0 -2 7 -5 -3 -4 -2 -8
+W -5 -8 -5 -8 -6 0 -6 -4 -5 -5 -6 -4 -3 -7 -7 -4 -5 -6 -5 -5 -5 16 3 -5 -5 -8
+Y -4 -5 -5 -6 -5 4 -6 3 -3 -3 -4 -2 -3 -4 -6 -3 -4 -3 -3 -3 -3 3 11 -4 -3 -8
+Z -2 0 -7 1 6 -6 -4 0 -6 -6 1 -5 -3 -1 -2 5 0 -1 -2 -1 -4 -5 -4 6 -1 -8
+X -1 -3 -4 -3 -2 -3 -3 -2 -2 -2 -2 -2 -2 -2 -3 -2 -2 -1 -1 -2 -2 -5 -3 -1 -2 -8
+* -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
diff --git a/tests/score/PAM120 b/tests/score/PAM120
index 087aca3..3c52e5b 100644
--- a/tests/score/PAM120
+++ b/tests/score/PAM120
@@ -10,31 +10,30 @@
#
# added J-Column as (I+L)/2 and U == X
# reordered to be (alphabetically sorted; X *)
- A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
-A 3 0 -3 0 0 -4 1 -3 -1 -2 -2 -3 -2 -1 -1 1 -1 -3 1 1 -1 0 -7 -4 -1 -1 -8
-B 0 4 -6 4 3 -5 0 1 -3 -4 0 -4 -4 3 -1 -2 0 -2 0 0 -1 -3 -6 -3 2 -1 -8
-C -3 -6 9 -7 -7 -6 -4 -4 -3 -5 -7 -7 -6 -5 -4 -4 -7 -4 0 -3 -4 -3 -8 -1 -7 -4 -8
-D 0 4 -7 5 3 -7 0 0 -3 -4 -1 -5 -4 2 -2 -3 1 -3 0 -1 -2 -3 -8 -5 3 -2 -8
-E 0 3 -7 3 5 -7 -1 -1 -3 -4 -1 -4 -3 1 -1 -2 2 -3 -1 -2 -1 -3 -8 -5 4 -1 -8
-F -4 -5 -6 -7 -7 8 -5 -3 0 0 -7 0 -1 -4 -3 -5 -6 -5 -3 -4 -3 -3 -1 4 -6 -3 -8
-G 1 0 -4 0 -1 -5 5 -4 -4 -5 -3 -5 -4 0 -2 -2 -3 -4 1 -1 -2 -2 -8 -6 -2 -2 -8
-H -3 1 -4 0 -1 -3 -4 7 -4 -4 -2 -3 -4 2 -2 -1 3 1 -2 -3 -2 -3 -3 -1 1 -2 -8
-I -1 -3 -3 -3 -3 0 -4 -4 6 4 -3 1 1 -2 -1 -3 -3 -2 -2 0 -1 3 -6 -2 -3 -1 -8
-J -2 -4 -5 -4 -4 0 -5 -4 4 4 -4 3 2 -3 -2 -3 -3 -3 -3 -2 -2 2 -5 -2 -3 -2 -8
-K -2 0 -7 -1 -1 -7 -3 -2 -3 -4 5 -4 0 1 -2 -2 0 2 -1 -1 -2 -4 -5 -5 -1 -2 -8
-L -3 -4 -7 -5 -4 0 -5 -3 1 3 -4 5 3 -4 -2 -3 -2 -4 -4 -3 -2 1 -3 -2 -3 -2 -8
-M -2 -4 -6 -4 -3 -1 -4 -4 1 2 0 3 8 -3 -2 -3 -1 -1 -2 -1 -2 1 -6 -4 -2 -2 -8
-N -1 3 -5 2 1 -4 0 2 -2 -3 1 -4 -3 4 -1 -2 0 -1 1 0 -1 -3 -4 -2 0 -1 -8
-O -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -2 -2 -1 -2 -1 -1 -2 -1 -5 -3 -1 -2 -8
-P 1 -2 -4 -3 -2 -5 -2 -1 -3 -3 -2 -3 -3 -2 -2 6 0 -1 1 -1 -2 -2 -7 -6 -1 -2 -8
-Q -1 0 -7 1 2 -6 -3 3 -3 -3 0 -2 -1 0 -1 0 6 1 -2 -2 -1 -3 -6 -5 4 -1 -8
-R -3 -2 -4 -3 -3 -5 -4 1 -2 -3 2 -4 -1 -1 -2 -1 1 6 -1 -2 -2 -3 1 -5 -1 -2 -8
-S 1 0 0 0 -1 -3 1 -2 -2 -3 -1 -4 -2 1 -1 1 -2 -1 3 2 -1 -2 -2 -3 -1 -1 -8
-T 1 0 -3 -1 -2 -4 -1 -3 0 -2 -1 -3 -1 0 -1 -1 -2 -2 2 4 -1 0 -6 -3 -2 -1 -8
-U -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -2 -2 -1 -2 -1 -1 -2 -1 -5 -3 -1 -2 -8
-V 0 -3 -3 -3 -3 -3 -2 -3 3 2 -4 1 1 -3 -1 -2 -3 -3 -2 0 -1 5 -8 -3 -3 -1 -8
-W -7 -6 -8 -8 -8 -1 -8 -3 -6 -5 -5 -3 -6 -4 -5 -7 -6 1 -2 -6 -5 -8 12 -2 -7 -5 -8
-Y -4 -3 -1 -5 -5 4 -6 -1 -2 -2 -5 -2 -4 -2 -3 -6 -5 -5 -3 -3 -3 -3 -2 8 -5 -3 -8
-Z -1 2 -7 3 4 -6 -2 1 -3 -3 -1 -3 -2 0 -1 -1 4 -1 -1 -2 -1 -3 -7 -5 4 -1 -8
-X -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -2 -2 -1 -2 -1 -1 -2 -1 -5 -3 -1 -2 -8
-* -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
+ A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+A 3 0 -3 0 0 -4 1 -3 -1 -2 -2 -3 -2 -1 1 -1 -3 1 1 -1 0 -7 -4 -1 -1 -8
+B 0 4 -6 4 3 -5 0 1 -3 -4 0 -4 -4 3 -2 0 -2 0 0 -1 -3 -6 -3 2 -1 -8
+C -3 -6 9 -7 -7 -6 -4 -4 -3 -5 -7 -7 -6 -5 -4 -7 -4 0 -3 -4 -3 -8 -1 -7 -4 -8
+D 0 4 -7 5 3 -7 0 0 -3 -4 -1 -5 -4 2 -3 1 -3 0 -1 -2 -3 -8 -5 3 -2 -8
+E 0 3 -7 3 5 -7 -1 -1 -3 -4 -1 -4 -3 1 -2 2 -3 -1 -2 -1 -3 -8 -5 4 -1 -8
+F -4 -5 -6 -7 -7 8 -5 -3 0 0 -7 0 -1 -4 -5 -6 -5 -3 -4 -3 -3 -1 4 -6 -3 -8
+G 1 0 -4 0 -1 -5 5 -4 -4 -5 -3 -5 -4 0 -2 -3 -4 1 -1 -2 -2 -8 -6 -2 -2 -8
+H -3 1 -4 0 -1 -3 -4 7 -4 -4 -2 -3 -4 2 -1 3 1 -2 -3 -2 -3 -3 -1 1 -2 -8
+I -1 -3 -3 -3 -3 0 -4 -4 6 4 -3 1 1 -2 -3 -3 -2 -2 0 -1 3 -6 -2 -3 -1 -8
+J -2 -4 -5 -4 -4 0 -5 -4 4 4 -4 3 2 -3 -3 -3 -3 -3 -2 -2 2 -5 -2 -3 -2 -8
+K -2 0 -7 -1 -1 -7 -3 -2 -3 -4 5 -4 0 1 -2 0 2 -1 -1 -2 -4 -5 -5 -1 -2 -8
+L -3 -4 -7 -5 -4 0 -5 -3 1 3 -4 5 3 -4 -3 -2 -4 -4 -3 -2 1 -3 -2 -3 -2 -8
+M -2 -4 -6 -4 -3 -1 -4 -4 1 2 0 3 8 -3 -3 -1 -1 -2 -1 -2 1 -6 -4 -2 -2 -8
+N -1 3 -5 2 1 -4 0 2 -2 -3 1 -4 -3 4 -2 0 -1 1 0 -1 -3 -4 -2 0 -1 -8
+P 1 -2 -4 -3 -2 -5 -2 -1 -3 -3 -2 -3 -3 -2 6 0 -1 1 -1 -2 -2 -7 -6 -1 -2 -8
+Q -1 0 -7 1 2 -6 -3 3 -3 -3 0 -2 -1 0 0 6 1 -2 -2 -1 -3 -6 -5 4 -1 -8
+R -3 -2 -4 -3 -3 -5 -4 1 -2 -3 2 -4 -1 -1 -1 1 6 -1 -2 -2 -3 1 -5 -1 -2 -8
+S 1 0 0 0 -1 -3 1 -2 -2 -3 -1 -4 -2 1 1 -2 -1 3 2 -1 -2 -2 -3 -1 -1 -8
+T 1 0 -3 -1 -2 -4 -1 -3 0 -2 -1 -3 -1 0 -1 -2 -2 2 4 -1 0 -6 -3 -2 -1 -8
+U -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -2 -1 -2 -1 -1 -2 -1 -5 -3 -1 -2 -8
+V 0 -3 -3 -3 -3 -3 -2 -3 3 2 -4 1 1 -3 -2 -3 -3 -2 0 -1 5 -8 -3 -3 -1 -8
+W -7 -6 -8 -8 -8 -1 -8 -3 -6 -5 -5 -3 -6 -4 -7 -6 1 -2 -6 -5 -8 12 -2 -7 -5 -8
+Y -4 -3 -1 -5 -5 4 -6 -1 -2 -2 -5 -2 -4 -2 -6 -5 -5 -3 -3 -3 -3 -2 8 -5 -3 -8
+Z -1 2 -7 3 4 -6 -2 1 -3 -3 -1 -3 -2 0 -1 4 -1 -1 -2 -1 -3 -7 -5 4 -1 -8
+X -1 -1 -4 -2 -1 -3 -2 -2 -1 -2 -2 -2 -2 -1 -2 -1 -2 -1 -1 -2 -1 -5 -3 -1 -2 -8
+* -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
\ No newline at end of file
diff --git a/tests/score/PAM200 b/tests/score/PAM200
index d6e7d31..c7db5f5 100644
--- a/tests/score/PAM200
+++ b/tests/score/PAM200
@@ -10,31 +10,30 @@
#
# added J-Column as (I+L)/2 and U == X
# reordered to be (alphabetically sorted; X *)
- A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
-A 3 0 -3 0 0 -4 1 -2 -1 -2 -2 -2 -2 0 0 1 -1 -2 1 1 0 0 -7 -4 0 0 -9
-B 0 3 -5 4 3 -6 0 1 -3 -4 0 -4 -3 3 -1 -1 1 -1 1 0 -1 -3 -6 -4 2 -1 -9
-C -3 -5 12 -6 -7 -6 -4 -4 -3 -5 -7 -7 -6 -5 -4 -4 -7 -4 0 -3 -4 -2 -9 0 -7 -4 -9
-D 0 4 -6 5 4 -7 0 0 -3 -4 0 -5 -4 3 -1 -2 2 -2 0 0 -1 -3 -8 -5 3 -1 -9
-E 0 3 -7 4 5 -7 0 0 -3 -4 0 -4 -3 2 -1 -1 3 -2 0 -1 -1 -2 -9 -5 4 -1 -9
-F -4 -6 -6 -7 -7 10 -6 -2 1 2 -7 2 0 -4 -3 -6 -6 -5 -4 -4 -3 -2 0 7 -6 -3 -9
-G 1 0 -4 0 0 -6 6 -3 -3 -4 -2 -5 -4 0 -1 -1 -2 -4 1 0 -1 -2 -8 -6 -1 -1 -9
-H -2 1 -4 0 0 -2 -3 8 -3 -3 -1 -3 -3 2 -1 -1 3 2 -1 -2 -1 -3 -3 0 2 -1 -9
-I -1 -3 -3 -3 -3 1 -3 -3 6 4 -2 2 2 -2 -1 -3 -3 -2 -2 0 -1 4 -6 -2 -3 -1 -9
-J -2 -4 -5 -4 -4 2 -4 -3 4 5 -3 5 3 -3 -2 -3 -3 -3 -3 -1 -2 3 -4 -2 -3 -2 -9
-K -2 0 -7 0 0 -7 -2 -1 -2 -3 6 -4 1 1 -1 -2 1 4 0 0 -1 -3 -4 -5 0 -1 -9
-L -2 -4 -7 -5 -4 2 -5 -3 2 5 -4 7 4 -4 -2 -3 -2 -4 -4 -2 -2 2 -2 -2 -3 -2 -9
-M -2 -3 -6 -4 -3 0 -4 -3 2 3 1 4 8 -2 -1 -3 -1 -1 -2 -1 -1 2 -5 -3 -2 -1 -9
-N 0 3 -5 3 2 -4 0 2 -2 -3 1 -4 -2 3 0 -1 1 0 1 0 0 -2 -5 -2 1 0 -9
-O 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1 -1 -1 -1 0 0 -1 -1 -5 -3 -1 -1 -9
-P 1 -1 -4 -2 -1 -6 -1 -1 -3 -3 -2 -3 -3 -1 -1 7 0 0 1 0 -1 -2 -7 -6 -1 -1 -9
-Q -1 1 -7 2 3 -6 -2 3 -3 -3 1 -2 -1 1 -1 0 5 1 -1 -1 -1 -3 -6 -5 4 -1 -9
-R -2 -1 -4 -2 -2 -5 -4 2 -2 -3 4 -4 -1 0 -1 0 1 7 -1 -1 -1 -3 2 -5 0 -1 -9
-S 1 1 0 0 0 -4 1 -1 -2 -3 0 -4 -2 1 0 1 -1 -1 2 2 0 -1 -3 -3 -1 0 -9
-T 1 0 -3 0 -1 -4 0 -2 0 -1 0 -2 -1 0 0 0 -1 -1 2 4 0 0 -6 -3 -1 0 -9
-U 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1 -1 -1 -1 0 0 -1 -1 -5 -3 -1 -1 -9
-V 0 -3 -2 -3 -2 -2 -2 -3 4 3 -3 2 2 -2 -1 -2 -3 -3 -1 0 -1 5 -8 -3 -2 -1 -9
-W -7 -6 -9 -8 -9 0 -8 -3 -6 -4 -4 -2 -5 -5 -5 -7 -6 2 -3 -6 -5 -8 18 -1 -7 -5 -9
-Y -4 -4 0 -5 -5 7 -6 0 -2 -2 -5 -2 -3 -2 -3 -6 -5 -5 -3 -3 -3 -3 -1 11 -5 -3 -9
-Z 0 2 -7 3 4 -6 -1 2 -3 -3 0 -3 -2 1 -1 -1 4 0 -1 -1 -1 -2 -7 -5 4 -1 -9
-X 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1 -1 -1 -1 0 0 -1 -1 -5 -3 -1 -1 -9
-* -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 1
+ A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+A 3 0 -3 0 0 -4 1 -2 -1 -2 -2 -2 -2 0 1 -1 -2 1 1 0 0 -7 -4 0 0 -9
+B 0 3 -5 4 3 -6 0 1 -3 -4 0 -4 -3 3 -1 1 -1 1 0 -1 -3 -6 -4 2 -1 -9
+C -3 -5 12 -6 -7 -6 -4 -4 -3 -5 -7 -7 -6 -5 -4 -7 -4 0 -3 -4 -2 -9 0 -7 -4 -9
+D 0 4 -6 5 4 -7 0 0 -3 -4 0 -5 -4 3 -2 2 -2 0 0 -1 -3 -8 -5 3 -1 -9
+E 0 3 -7 4 5 -7 0 0 -3 -4 0 -4 -3 2 -1 3 -2 0 -1 -1 -2 -9 -5 4 -1 -9
+F -4 -6 -6 -7 -7 10 -6 -2 1 2 -7 2 0 -4 -6 -6 -5 -4 -4 -3 -2 0 7 -6 -3 -9
+G 1 0 -4 0 0 -6 6 -3 -3 -4 -2 -5 -4 0 -1 -2 -4 1 0 -1 -2 -8 -6 -1 -1 -9
+H -2 1 -4 0 0 -2 -3 8 -3 -3 -1 -3 -3 2 -1 3 2 -1 -2 -1 -3 -3 0 2 -1 -9
+I -1 -3 -3 -3 -3 1 -3 -3 6 4 -2 2 2 -2 -3 -3 -2 -2 0 -1 4 -6 -2 -3 -1 -9
+J -2 -4 -5 -4 -4 2 -4 -3 4 5 -3 5 3 -3 -3 -3 -3 -3 -1 -2 3 -4 -2 -3 -2 -9
+K -2 0 -7 0 0 -7 -2 -1 -2 -3 6 -4 1 1 -2 1 4 0 0 -1 -3 -4 -5 0 -1 -9
+L -2 -4 -7 -5 -4 2 -5 -3 2 5 -4 7 4 -4 -3 -2 -4 -4 -2 -2 2 -2 -2 -3 -2 -9
+M -2 -3 -6 -4 -3 0 -4 -3 2 3 1 4 8 -2 -3 -1 -1 -2 -1 -1 2 -5 -3 -2 -1 -9
+N 0 3 -5 3 2 -4 0 2 -2 -3 1 -4 -2 3 -1 1 0 1 0 0 -2 -5 -2 1 0 -9
+P 1 -1 -4 -2 -1 -6 -1 -1 -3 -3 -2 -3 -3 -1 7 0 0 1 0 -1 -2 -7 -6 -1 -1 -9
+Q -1 1 -7 2 3 -6 -2 3 -3 -3 1 -2 -1 1 0 5 1 -1 -1 -1 -3 -6 -5 4 -1 -9
+R -2 -1 -4 -2 -2 -5 -4 2 -2 -3 4 -4 -1 0 0 1 7 -1 -1 -1 -3 2 -5 0 -1 -9
+S 1 1 0 0 0 -4 1 -1 -2 -3 0 -4 -2 1 1 -1 -1 2 2 0 -1 -3 -3 -1 0 -9
+T 1 0 -3 0 -1 -4 0 -2 0 -1 0 -2 -1 0 0 -1 -1 2 4 0 0 -6 -3 -1 0 -9
+U 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1 -1 -1 0 0 -1 -1 -5 -3 -1 -1 -9
+V 0 -3 -2 -3 -2 -2 -2 -3 4 3 -3 2 2 -2 -2 -3 -3 -1 0 -1 5 -8 -3 -2 -1 -9
+W -7 -6 -9 -8 -9 0 -8 -3 -6 -4 -4 -2 -5 -5 -7 -6 2 -3 -6 -5 -8 18 -1 -7 -5 -9
+Y -4 -4 0 -5 -5 7 -6 0 -2 -2 -5 -2 -3 -2 -6 -5 -5 -3 -3 -3 -3 -1 11 -5 -3 -9
+Z 0 2 -7 3 4 -6 -1 2 -3 -3 0 -3 -2 1 -1 4 0 -1 -1 -1 -2 -7 -5 4 -1 -9
+X 0 -1 -4 -1 -1 -3 -1 -1 -1 -2 -1 -2 -1 0 -1 -1 -1 0 0 -1 -1 -5 -3 -1 -1 -9
+* -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 1
diff --git a/tests/score/PAM250 b/tests/score/PAM250
index a724d15..841d097 100644
--- a/tests/score/PAM250
+++ b/tests/score/PAM250
@@ -10,31 +10,30 @@
#
# added J-Column as (I+L)/2 and U == X
# reordered to be (alphabetically sorted; X *)
- A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
-A 2 0 -2 0 0 -3 1 -1 -1 -2 -1 -2 -1 0 0 1 0 -2 1 1 0 0 -6 -3 0 0 -8
-B 0 3 -4 3 3 -4 0 1 -2 -3 1 -3 -2 2 -1 -1 1 -1 0 0 -1 -2 -5 -3 2 -1 -8
-C -2 -4 12 -5 -5 -4 -3 -3 -2 -4 -5 -6 -5 -4 -3 -3 -5 -4 0 -2 -3 -2 -8 0 -5 -3 -8
-D 0 3 -5 4 3 -6 1 1 -2 -3 0 -4 -3 2 -1 -1 2 -1 0 0 -1 -2 -7 -4 3 -1 -8
-E 0 3 -5 3 4 -5 0 1 -2 -3 0 -3 -2 1 -1 -1 2 -1 0 0 -1 -2 -7 -4 3 -1 -8
-F -3 -4 -4 -6 -5 9 -5 -2 1 2 -5 2 0 -3 -2 -5 -5 -4 -3 -3 -2 -1 0 7 -5 -2 -8
-G 1 0 -3 1 0 -5 5 -2 -3 -4 -2 -4 -3 0 -1 0 -1 -3 1 0 -1 -1 -7 -5 0 -1 -8
-H -1 1 -3 1 1 -2 -2 6 -2 -2 0 -2 -2 2 -1 0 3 2 -1 -1 -1 -2 -3 0 2 -1 -8
-I -1 -2 -2 -2 -2 1 -3 -2 5 4 -2 2 2 -2 -1 -2 -2 -2 -1 0 -1 4 -5 -1 -2 -1 -8
-J -2 -3 -4 -3 -3 2 -4 -2 4 4 -3 4 3 -3 -1 -3 -2 -3 -2 -1 -1 3 -4 -1 -3 -1 -8
-K -1 1 -5 0 0 -5 -2 0 -2 -3 5 -3 0 1 -1 -1 1 3 0 0 -1 -2 -3 -4 0 -1 -8
-L -2 -3 -6 -4 -3 2 -4 -2 2 4 -3 6 4 -3 -1 -3 -2 -3 -3 -2 -1 2 -2 -1 -3 -1 -8
-M -1 -2 -5 -3 -2 0 -3 -2 2 3 0 4 6 -2 -1 -2 -1 0 -2 -1 -1 2 -4 -2 -2 -1 -8
-N 0 2 -4 2 1 -3 0 2 -2 -3 1 -3 -2 2 0 0 1 0 1 0 0 -2 -4 -2 1 0 -8
-O 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 0 0 -1 -1 -4 -2 -1 -1 -8
-P 1 -1 -3 -1 -1 -5 0 0 -2 -3 -1 -3 -2 0 -1 6 0 0 1 0 -1 -1 -6 -5 0 -1 -8
-Q 0 1 -5 2 2 -5 -1 3 -2 -2 1 -2 -1 1 -1 0 4 1 -1 -1 -1 -2 -5 -4 3 -1 -8
-R -2 -1 -4 -1 -1 -4 -3 2 -2 -3 3 -3 0 0 -1 0 1 6 0 -1 -1 -2 2 -4 0 -1 -8
-S 1 0 0 0 0 -3 1 -1 -1 -2 0 -3 -2 1 0 1 -1 0 2 1 0 -1 -2 -3 0 0 -8
-T 1 0 -2 0 0 -3 0 -1 0 -1 0 -2 -1 0 0 0 -1 -1 1 3 0 0 -5 -3 -1 0 -8
-U 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 0 0 -1 -1 -4 -2 -1 -1 -8
-V 0 -2 -2 -2 -2 -1 -1 -2 4 3 -2 2 2 -2 -1 -1 -2 -2 -1 0 -1 4 -6 -2 -2 -1 -8
-W -6 -5 -8 -7 -7 0 -7 -3 -5 -4 -3 -2 -4 -4 -4 -6 -5 2 -2 -5 -4 -6 17 0 -6 -4 -8
-Y -3 -3 0 -4 -4 7 -5 0 -1 -1 -4 -1 -2 -2 -2 -5 -4 -4 -3 -3 -2 -2 0 10 -4 -2 -8
-Z 0 2 -5 3 3 -5 0 2 -2 -3 0 -3 -2 1 -1 0 3 0 0 -1 -1 -2 -6 -4 3 -1 -8
-X 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 0 0 -1 -1 -4 -2 -1 -1 -8
-* -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
+ A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+A 2 0 -2 0 0 -3 1 -1 -1 -2 -1 -2 -1 0 1 0 -2 1 1 0 0 -6 -3 0 0 -8
+B 0 3 -4 3 3 -4 0 1 -2 -3 1 -3 -2 2 -1 1 -1 0 0 -1 -2 -5 -3 2 -1 -8
+C -2 -4 12 -5 -5 -4 -3 -3 -2 -4 -5 -6 -5 -4 -3 -5 -4 0 -2 -3 -2 -8 0 -5 -3 -8
+D 0 3 -5 4 3 -6 1 1 -2 -3 0 -4 -3 2 -1 2 -1 0 0 -1 -2 -7 -4 3 -1 -8
+E 0 3 -5 3 4 -5 0 1 -2 -3 0 -3 -2 1 -1 2 -1 0 0 -1 -2 -7 -4 3 -1 -8
+F -3 -4 -4 -6 -5 9 -5 -2 1 2 -5 2 0 -3 -5 -5 -4 -3 -3 -2 -1 0 7 -5 -2 -8
+G 1 0 -3 1 0 -5 5 -2 -3 -4 -2 -4 -3 0 0 -1 -3 1 0 -1 -1 -7 -5 0 -1 -8
+H -1 1 -3 1 1 -2 -2 6 -2 -2 0 -2 -2 2 0 3 2 -1 -1 -1 -2 -3 0 2 -1 -8
+I -1 -2 -2 -2 -2 1 -3 -2 5 4 -2 2 2 -2 -2 -2 -2 -1 0 -1 4 -5 -1 -2 -1 -8
+J -2 -3 -4 -3 -3 2 -4 -2 4 4 -3 4 3 -3 -3 -2 -3 -2 -1 -1 3 -4 -1 -3 -1 -8
+K -1 1 -5 0 0 -5 -2 0 -2 -3 5 -3 0 1 -1 1 3 0 0 -1 -2 -3 -4 0 -1 -8
+L -2 -3 -6 -4 -3 2 -4 -2 2 4 -3 6 4 -3 -3 -2 -3 -3 -2 -1 2 -2 -1 -3 -1 -8
+M -1 -2 -5 -3 -2 0 -3 -2 2 3 0 4 6 -2 -2 -1 0 -2 -1 -1 2 -4 -2 -2 -1 -8
+N 0 2 -4 2 1 -3 0 2 -2 -3 1 -3 -2 2 0 1 0 1 0 0 -2 -4 -2 1 0 -8
+P 1 -1 -3 -1 -1 -5 0 0 -2 -3 -1 -3 -2 0 6 0 0 1 0 -1 -1 -6 -5 0 -1 -8
+Q 0 1 -5 2 2 -5 -1 3 -2 -2 1 -2 -1 1 0 4 1 -1 -1 -1 -2 -5 -4 3 -1 -8
+R -2 -1 -4 -1 -1 -4 -3 2 -2 -3 3 -3 0 0 0 1 6 0 -1 -1 -2 2 -4 0 -1 -8
+S 1 0 0 0 0 -3 1 -1 -1 -2 0 -3 -2 1 1 -1 0 2 1 0 -1 -2 -3 0 0 -8
+T 1 0 -2 0 0 -3 0 -1 0 -1 0 -2 -1 0 0 -1 -1 1 3 0 0 -5 -3 -1 0 -8
+U 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 0 0 -1 -1 -4 -2 -1 -1 -8
+V 0 -2 -2 -2 -2 -1 -1 -2 4 3 -2 2 2 -2 -1 -2 -2 -1 0 -1 4 -6 -2 -2 -1 -8
+W -6 -5 -8 -7 -7 0 -7 -3 -5 -4 -3 -2 -4 -4 -6 -5 2 -2 -5 -4 -6 17 0 -6 -4 -8
+Y -3 -3 0 -4 -4 7 -5 0 -1 -1 -4 -1 -2 -2 -5 -4 -4 -3 -3 -2 -2 0 10 -4 -2 -8
+Z 0 2 -5 3 3 -5 0 2 -2 -3 0 -3 -2 1 0 3 0 0 -1 -1 -2 -6 -4 3 -1 -8
+X 0 -1 -3 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 0 0 -1 -1 -4 -2 -1 -1 -8
+* -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 -8 1
diff --git a/tests/score/PAM40 b/tests/score/PAM40
index 2d5a08a..bc98372 100644
--- a/tests/score/PAM40
+++ b/tests/score/PAM40
@@ -9,31 +9,30 @@
#
# added J-Column as (I+L)/2 and U == X
# reordered to be (alphabetically sorted; X *)
- A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
-A 6 -3 -6 -3 -2 -7 -1 -6 -4 -5 -6 -5 -4 -3 -3 -1 -3 -6 0 0 -3 -2 -12 -7 -2 -3 -15
-B -3 6 -11 6 2 -9 -2 -1 -5 -7 -2 -8 -8 6 -4 -6 -2 -6 -1 -2 -4 -7 -9 -6 1 -4 -15
-C -6 -11 9 -12 -12 -11 -8 -7 -5 -9 -12 -13 -12 -9 -8 -7 -12 -7 -2 -7 -8 -5 -14 -3 -12 -8 -15
-D -3 6 -12 7 3 -13 -3 -3 -6 -9 -4 -11 -9 2 -5 -7 -2 -9 -3 -4 -5 -7 -13 -10 2 -5 -15
-E -2 2 -12 3 7 -12 -3 -4 -5 -7 -4 -8 -6 -1 -4 -5 2 -8 -4 -5 -4 -6 -15 -8 6 -4 -15
-F -7 -9 -11 -13 -12 9 -8 -5 -2 -2 -12 -2 -3 -8 -7 -9 -11 -8 -6 -8 -7 -7 -4 2 -12 -7 -15
-G -1 -2 -8 -3 -3 -8 6 -8 -9 -9 -6 -9 -7 -2 -4 -5 -6 -8 -1 -5 -4 -5 -13 -12 -4 -4 -15
-H -6 -1 -7 -3 -4 -5 -8 9 -8 -7 -5 -5 -9 1 -4 -3 1 -1 -5 -6 -4 -6 -6 -3 0 -4 -15
-I -4 -5 -5 -6 -5 -2 -9 -8 8 4 -5 -1 0 -4 -4 -7 -7 -5 -6 -2 -4 2 -12 -5 -5 -4 -15
-J -5 -7 -9 -9 -7 -2 -9 -7 4 4 -6 3 1 -5 -5 -7 -6 -7 -7 -4 -5 0 -9 -6 -6 -5 -15
-K -6 -2 -12 -4 -4 -12 -6 -5 -5 -6 6 -7 -1 0 -4 -6 -2 1 -3 -2 -4 -8 -10 -8 -3 -4 -15
-L -5 -8 -13 -11 -8 -2 -9 -5 -1 3 -7 7 1 -6 -5 -6 -4 -8 -7 -6 -5 -2 -5 -6 -6 -5 -15
-M -4 -8 -12 -9 -6 -3 -7 -9 0 1 -1 1 11 -7 -4 -7 -3 -3 -5 -3 -4 -1 -11 -10 -4 -4 -15
-N -3 6 -9 2 -1 -8 -2 1 -4 -5 0 -6 -7 7 -3 -5 -3 -5 0 -1 -3 -7 -7 -4 -2 -3 -15
-O -3 -4 -8 -5 -4 -7 -4 -4 -4 -5 -4 -5 -4 -3 -4 -4 -4 -5 -2 -3 -4 -4 -9 -7 -4 -4 -15
-P -1 -6 -7 -7 -5 -9 -5 -3 -7 -7 -6 -6 -7 -5 -4 8 -2 -3 -1 -3 -4 -5 -12 -12 -3 -4 -15
-Q -3 -2 -12 -2 2 -11 -6 1 -7 -6 -2 -4 -3 -3 -4 -2 8 -1 -4 -5 -4 -6 -11 -10 6 -4 -15
-R -6 -6 -7 -9 -8 -8 -8 -1 -5 -7 1 -8 -3 -5 -5 -3 -1 8 -2 -5 -5 -7 -1 -9 -3 -5 -15
-S 0 -1 -2 -3 -4 -6 -1 -5 -6 -7 -3 -7 -5 0 -2 -1 -4 -2 6 1 -2 -5 -4 -6 -4 -2 -15
-T 0 -2 -7 -4 -5 -8 -5 -6 -2 -4 -2 -6 -3 -1 -3 -3 -5 -5 1 7 -3 -2 -11 -6 -5 -3 -15
-U -3 -4 -8 -5 -4 -7 -4 -4 -4 -5 -4 -5 -4 -3 -4 -4 -4 -5 -2 -3 -4 -4 -9 -7 -4 -4 -15
-V -2 -7 -5 -7 -6 -7 -5 -6 2 0 -8 -2 -1 -7 -4 -5 -6 -7 -5 -2 -4 7 -14 -6 -6 -4 -15
-W -12 -9 -14 -13 -15 -4 -13 -6 -12 -9 -10 -5 -11 -7 -9 -12 -11 -1 -4 -11 -9 -14 13 -4 -13 -9 -15
-Y -7 -6 -3 -10 -8 2 -12 -3 -5 -6 -8 -6 -10 -4 -7 -12 -10 -9 -6 -6 -7 -6 -4 10 -8 -7 -15
-Z -2 1 -12 2 6 -12 -4 0 -5 -6 -3 -6 -4 -2 -4 -3 6 -3 -4 -5 -4 -6 -13 -8 6 -4 -15
-X -3 -4 -8 -5 -4 -7 -4 -4 -4 -5 -4 -5 -4 -3 -4 -4 -4 -5 -2 -3 -4 -4 -9 -7 -4 -4 -15
-* -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 1
+ A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+A 6 -3 -6 -3 -2 -7 -1 -6 -4 -5 -6 -5 -4 -3 -1 -3 -6 0 0 -3 -2 -12 -7 -2 -3 -15
+B -3 6 -11 6 2 -9 -2 -1 -5 -7 -2 -8 -8 6 -6 -2 -6 -1 -2 -4 -7 -9 -6 1 -4 -15
+C -6 -11 9 -12 -12 -11 -8 -7 -5 -9 -12 -13 -12 -9 -7 -12 -7 -2 -7 -8 -5 -14 -3 -12 -8 -15
+D -3 6 -12 7 3 -13 -3 -3 -6 -9 -4 -11 -9 2 -7 -2 -9 -3 -4 -5 -7 -13 -10 2 -5 -15
+E -2 2 -12 3 7 -12 -3 -4 -5 -7 -4 -8 -6 -1 -5 2 -8 -4 -5 -4 -6 -15 -8 6 -4 -15
+F -7 -9 -11 -13 -12 9 -8 -5 -2 -2 -12 -2 -3 -8 -9 -11 -8 -6 -8 -7 -7 -4 2 -12 -7 -15
+G -1 -2 -8 -3 -3 -8 6 -8 -9 -9 -6 -9 -7 -2 -5 -6 -8 -1 -5 -4 -5 -13 -12 -4 -4 -15
+H -6 -1 -7 -3 -4 -5 -8 9 -8 -7 -5 -5 -9 1 -3 1 -1 -5 -6 -4 -6 -6 -3 0 -4 -15
+I -4 -5 -5 -6 -5 -2 -9 -8 8 4 -5 -1 0 -4 -7 -7 -5 -6 -2 -4 2 -12 -5 -5 -4 -15
+J -5 -7 -9 -9 -7 -2 -9 -7 4 4 -6 3 1 -5 -7 -6 -7 -7 -4 -5 0 -9 -6 -6 -5 -15
+K -6 -2 -12 -4 -4 -12 -6 -5 -5 -6 6 -7 -1 0 -6 -2 1 -3 -2 -4 -8 -10 -8 -3 -4 -15
+L -5 -8 -13 -11 -8 -2 -9 -5 -1 3 -7 7 1 -6 -6 -4 -8 -7 -6 -5 -2 -5 -6 -6 -5 -15
+M -4 -8 -12 -9 -6 -3 -7 -9 0 1 -1 1 11 -7 -7 -3 -3 -5 -3 -4 -1 -11 -10 -4 -4 -15
+N -3 6 -9 2 -1 -8 -2 1 -4 -5 0 -6 -7 7 -5 -3 -5 0 -1 -3 -7 -7 -4 -2 -3 -15
+P -1 -6 -7 -7 -5 -9 -5 -3 -7 -7 -6 -6 -7 -5 8 -2 -3 -1 -3 -4 -5 -12 -12 -3 -4 -15
+Q -3 -2 -12 -2 2 -11 -6 1 -7 -6 -2 -4 -3 -3 -2 8 -1 -4 -5 -4 -6 -11 -10 6 -4 -15
+R -6 -6 -7 -9 -8 -8 -8 -1 -5 -7 1 -8 -3 -5 -3 -1 8 -2 -5 -5 -7 -1 -9 -3 -5 -15
+S 0 -1 -2 -3 -4 -6 -1 -5 -6 -7 -3 -7 -5 0 -1 -4 -2 6 1 -2 -5 -4 -6 -4 -2 -15
+T 0 -2 -7 -4 -5 -8 -5 -6 -2 -4 -2 -6 -3 -1 -3 -5 -5 1 7 -3 -2 -11 -6 -5 -3 -15
+U -3 -4 -8 -5 -4 -7 -4 -4 -4 -5 -4 -5 -4 -3 -4 -4 -5 -2 -3 -4 -4 -9 -7 -4 -4 -15
+V -2 -7 -5 -7 -6 -7 -5 -6 2 0 -8 -2 -1 -7 -5 -6 -7 -5 -2 -4 7 -14 -6 -6 -4 -15
+W -12 -9 -14 -13 -15 -4 -13 -6 -12 -9 -10 -5 -11 -7 -12 -11 -1 -4 -11 -9 -14 13 -4 -13 -9 -15
+Y -7 -6 -3 -10 -8 2 -12 -3 -5 -6 -8 -6 -10 -4 -12 -10 -9 -6 -6 -7 -6 -4 10 -8 -7 -15
+Z -2 1 -12 2 6 -12 -4 0 -5 -6 -3 -6 -4 -2 -3 6 -3 -4 -5 -4 -6 -13 -8 6 -4 -15
+X -3 -4 -8 -5 -4 -7 -4 -4 -4 -5 -4 -5 -4 -3 -4 -4 -5 -2 -3 -4 -4 -9 -7 -4 -4 -15
+* -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 -15 1
\ No newline at end of file
diff --git a/tests/score/VTML200I b/tests/score/VTML200I
index fe25ce1..f265721 100644
--- a/tests/score/VTML200I
+++ b/tests/score/VTML200I
@@ -27,31 +27,30 @@
#
# added J-Column as (I+L)/2 and U == X
# reordered to be (alphabetically sorted; X *)
- A B C D E F G H I J K L M N O P Q R S T U V W Y Z X *
-A 4 -1 1 -1 -1 -3 0 -2 -1 -2 -1 -2 -1 -1 -1 0 -1 -2 1 1 -1 0 -4 -3 -1 -1 -6
-B -1 4 -3 5 2 -5 0 1 -4 -5 0 -5 -3 4 -1 -1 1 -1 1 0 -1 -3 -5 -3 1 -1 -6
-C 1 -3 12 -4 -4 -3 -2 -2 0 -2 -4 -3 -1 -2 -1 -3 -3 -3 1 0 -1 1 -6 0 -4 -1 -6
-D -1 5 -4 6 3 -6 -1 0 -5 -5 0 -5 -4 3 -2 -1 1 -2 0 -1 -2 -4 -6 -4 2 -2 -6
-E -1 2 -4 3 5 -5 -1 0 -4 -4 1 -4 -3 1 -1 -1 2 -1 0 -1 -1 -3 -6 -3 4 -1 -6
-F -3 -5 -3 -6 -5 8 -5 0 0 1 -5 2 1 -4 -1 -4 -3 -4 -3 -3 -1 -1 3 5 -4 -1 -6
-G 0 0 -2 -1 -1 -5 8 -2 -6 -6 -2 -5 -4 0 -2 -2 -2 -2 0 -2 -2 -4 -5 -5 -2 -2 -6
-H -2 1 -2 0 0 0 -2 8 -3 -3 0 -2 -3 1 0 -2 2 1 0 -1 0 -3 -1 3 1 0 -6
-I -1 -4 0 -5 -4 0 -6 -3 5 4 -3 3 2 -4 -1 -4 -3 -3 -3 -1 -1 4 -2 -2 -3 -1 -6
-J -2 -5 -2 -5 -4 1 -6 -3 4 4 -3 4 3 -4 -1 -4 -3 -3 -3 -2 -1 3 -2 -2 -3 -1 -6
-K -1 0 -4 0 1 -5 -2 0 -3 -3 5 -3 -2 1 -1 -1 2 4 0 0 -1 -3 -4 -3 2 -1 -6
-L -2 -5 -3 -5 -4 2 -5 -2 3 4 -3 5 3 -4 -1 -3 -2 -3 -3 -2 -1 2 -1 -1 -3 -1 -6
-M -1 -3 -1 -4 -3 1 -4 -3 2 3 -2 3 6 -3 -1 -3 -1 -2 -2 -1 -1 2 -3 -2 -2 -1 -6
-N -1 4 -2 3 1 -4 0 1 -4 -4 1 -4 -3 6 -1 -2 1 0 1 0 -1 -3 -5 -2 1 -1 -6
-O -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -6
-P 0 -1 -3 -1 -1 -4 -2 -2 -4 -4 -1 -3 -3 -2 -2 9 -1 -1 0 -1 -2 -3 -4 -5 -1 -2 -6
-Q -1 1 -3 1 2 -3 -2 2 -3 -3 2 -2 -1 1 -1 -1 5 2 0 0 -1 -2 -6 -3 4 -1 -6
-R -2 -1 -3 -2 -1 -4 -2 1 -3 -3 4 -3 -2 0 -1 -1 2 7 -1 -1 -1 -3 -3 -2 0 -1 -6
-S 1 1 1 0 0 -3 0 0 -3 -3 0 -3 -2 1 -1 0 0 -1 4 2 -1 -2 -4 -2 0 -1 -6
-T 1 0 0 -1 -1 -3 -2 -1 -1 -2 0 -2 -1 0 -1 -1 0 -1 2 4 -1 0 -5 -3 -1 -1 -6
-U -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -6
-V 0 -3 1 -4 -3 -1 -4 -3 4 3 -3 2 2 -3 -1 -3 -2 -3 -2 0 -1 4 -4 -2 -3 -1 -6
-W -4 -5 -6 -6 -6 3 -5 -1 -2 -2 -4 -1 -3 -5 -2 -4 -6 -3 -4 -5 -2 -4 15 4 -6 -2 -6
-Y -3 -3 0 -4 -3 5 -5 3 -2 -2 -3 -1 -2 -2 -1 -5 -3 -2 -2 -3 -1 -2 4 9 -3 -1 -6
-Z -1 1 -4 2 4 -4 -2 1 -3 -3 2 -3 -2 1 -1 -1 4 0 0 -1 -1 -3 -6 -3 4 -1 -6
-X -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -6
-* -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 1
+ A B C D E F G H I J K L M N P Q R S T U V W Y Z X *
+A 4 -1 1 -1 -1 -3 0 -2 -1 -2 -1 -2 -1 -1 0 -1 -2 1 1 -1 0 -4 -3 -1 -1 -6
+B -1 4 -3 5 2 -5 0 1 -4 -5 0 -5 -3 4 -1 1 -1 1 0 -1 -3 -5 -3 1 -1 -6
+C 1 -3 12 -4 -4 -3 -2 -2 0 -2 -4 -3 -1 -2 -3 -3 -3 1 0 -1 1 -6 0 -4 -1 -6
+D -1 5 -4 6 3 -6 -1 0 -5 -5 0 -5 -4 3 -1 1 -2 0 -1 -2 -4 -6 -4 2 -2 -6
+E -1 2 -4 3 5 -5 -1 0 -4 -4 1 -4 -3 1 -1 2 -1 0 -1 -1 -3 -6 -3 4 -1 -6
+F -3 -5 -3 -6 -5 8 -5 0 0 1 -5 2 1 -4 -4 -3 -4 -3 -3 -1 -1 3 5 -4 -1 -6
+G 0 0 -2 -1 -1 -5 8 -2 -6 -6 -2 -5 -4 0 -2 -2 -2 0 -2 -2 -4 -5 -5 -2 -2 -6
+H -2 1 -2 0 0 0 -2 8 -3 -3 0 -2 -3 1 -2 2 1 0 -1 0 -3 -1 3 1 0 -6
+I -1 -4 0 -5 -4 0 -6 -3 5 4 -3 3 2 -4 -4 -3 -3 -3 -1 -1 4 -2 -2 -3 -1 -6
+J -2 -5 -2 -5 -4 1 -6 -3 4 4 -3 4 3 -4 -4 -3 -3 -3 -2 -1 3 -2 -2 -3 -1 -6
+K -1 0 -4 0 1 -5 -2 0 -3 -3 5 -3 -2 1 -1 2 4 0 0 -1 -3 -4 -3 2 -1 -6
+L -2 -5 -3 -5 -4 2 -5 -2 3 4 -3 5 3 -4 -3 -2 -3 -3 -2 -1 2 -1 -1 -3 -1 -6
+M -1 -3 -1 -4 -3 1 -4 -3 2 3 -2 3 6 -3 -3 -1 -2 -2 -1 -1 2 -3 -2 -2 -1 -6
+N -1 4 -2 3 1 -4 0 1 -4 -4 1 -4 -3 6 -2 1 0 1 0 -1 -3 -5 -2 1 -1 -6
+P 0 -1 -3 -1 -1 -4 -2 -2 -4 -4 -1 -3 -3 -2 9 -1 -1 0 -1 -2 -3 -4 -5 -1 -2 -6
+Q -1 1 -3 1 2 -3 -2 2 -3 -3 2 -2 -1 1 -1 5 2 0 0 -1 -2 -6 -3 4 -1 -6
+R -2 -1 -3 -2 -1 -4 -2 1 -3 -3 4 -3 -2 0 -1 2 7 -1 -1 -1 -3 -3 -2 0 -1 -6
+S 1 1 1 0 0 -3 0 0 -3 -3 0 -3 -2 1 0 0 -1 4 2 -1 -2 -4 -2 0 -1 -6
+T 1 0 0 -1 -1 -3 -2 -1 -1 -2 0 -2 -1 0 -1 0 -1 2 4 -1 0 -5 -3 -1 -1 -6
+U -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -6
+V 0 -3 1 -4 -3 -1 -4 -3 4 3 -3 2 2 -3 -3 -2 -3 -2 0 -1 4 -4 -2 -3 -1 -6
+W -4 -5 -6 -6 -6 3 -5 -1 -2 -2 -4 -1 -3 -5 -4 -6 -3 -4 -5 -2 -4 15 4 -6 -2 -6
+Y -3 -3 0 -4 -3 5 -5 3 -2 -2 -3 -1 -2 -2 -5 -3 -2 -2 -3 -1 -2 4 9 -3 -1 -6
+Z -1 1 -4 2 4 -4 -2 1 -3 -3 2 -3 -2 1 -1 4 0 0 -1 -1 -3 -6 -3 4 -1 -6
+X -1 -1 -1 -2 -1 -1 -2 0 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -6
+* -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 -6 1
diff --git a/tests/seeds/test_align_banded_chain_impl.cpp b/tests/seeds/test_align_banded_chain_impl.cpp
index 2a2c504..0ebcd25 100644
--- a/tests/seeds/test_align_banded_chain_impl.cpp
+++ b/tests/seeds/test_align_banded_chain_impl.cpp
@@ -990,31 +990,6 @@ void testBandedChainAlignmentBandExtension(TGapSpec)
}
}
-
-SEQAN_DEFINE_TEST(test_banded_chain_alignment_issue_1020)
-{
- using namespace seqan;
-
- DnaString query = "ATCTCTCTCAACAAAACAACGAGGAGGAGTGAAAAGAGAGAGAT";
- DnaString ref = "ATCTCTCTCAACAACAACAACGGAGGAGGAGGAAAAGAGAGAGAT";
-
- typedef Seed<Simple> TSeed;
- String<TSeed> seedChain;
- appendValue(seedChain, TSeed( 0, 0, 14));
- appendValue(seedChain, TSeed(30, 31, 14));
- Score<int, Simple> scoringScheme(2, -1, -2);
-
- Align<DnaString, ArrayGaps> align;
- resize(rows(align), 2);
- assignSource(row(align, 0), query);
- assignSource(row(align, 1), ref);
-
- int res = bandedChainAlignment(align, seedChain, scoringScheme, 14);
- SEQAN_ASSERT_EQ(res, 80);
- SEQAN_ASSERT_EQ(row(align, 0), "ATCTCTCTCAACAA-AACAAC-GAGGAGGAGTGAAAAGAGAGAGAT");
- SEQAN_ASSERT_EQ(row(align, 1), "ATCTCTCTCAACAACAACAACGGAGGAGGAG-GAAAAGAGAGAGAT");
-}
-
SEQAN_DEFINE_TEST(test_banded_chain_alignment_empty_set_linear)
{
testBandedChainAlignmentEmptyChain(seqan::LinearGaps());
@@ -1089,6 +1064,5 @@ SEQAN_BEGIN_TESTSUITE(test_banded_chain_impl)
SEQAN_CALL_TEST(test_banded_chain_alignment_special_seeds_affine);
SEQAN_CALL_TEST(test_banded_chain_alignment_band_extensions_linear);
SEQAN_CALL_TEST(test_banded_chain_alignment_band_extensions_affine);
- SEQAN_CALL_TEST(test_banded_chain_alignment_issue_1020);
}
SEQAN_END_TESTSUITE
diff --git a/tests/seq_io/test_sequence_file.h b/tests/seq_io/test_sequence_file.h
index 4d37c2c..578cfdd 100644
--- a/tests/seq_io/test_sequence_file.h
+++ b/tests/seq_io/test_sequence_file.h
@@ -107,8 +107,7 @@ SEQAN_DEFINE_TEST(test_seq_io_sequence_file_recognize_file_format_text_fastq)
// Test reading with different interfaces.
// ---------------------------------------------------------------------------
-template <typename TId, typename TSeq>
-void testSeqIOSequenceFileReadRecordTextFasta()
+SEQAN_DEFINE_TEST(test_seq_io_sequence_file_read_record_text_fasta)
{
// Build path to file.
seqan::CharString filePath = SEQAN_PATH_TO_ROOT();
@@ -118,8 +117,8 @@ void testSeqIOSequenceFileReadRecordTextFasta()
SeqFileIn seqIO(toCString(filePath));
// Check that the file type and format are set correctly.
- TId id;
- TSeq seq;
+ seqan::CharString id;
+ seqan::Dna5String seq;
readRecord(id, seq, seqIO);
SEQAN_ASSERT_EQ(id, "seq1");
@@ -136,14 +135,6 @@ void testSeqIOSequenceFileReadRecordTextFasta()
SEQAN_ASSERT(atEnd(seqIO));
}
-SEQAN_DEFINE_TEST(test_seq_io_sequence_file_read_record_text_fasta)
-{
- testSeqIOSequenceFileReadRecordTextFasta<seqan::CharString, seqan::Dna5String>();
- testSeqIOSequenceFileReadRecordTextFasta<std::string, std::string>();
- testSeqIOSequenceFileReadRecordTextFasta<std::string, seqan::Dna5String>();
- testSeqIOSequenceFileReadRecordTextFasta<seqan::CharString, std::string>();
-}
-
SEQAN_DEFINE_TEST(test_seq_io_sequence_file_read_all_text_fasta)
{
// Build path to file.
diff --git a/tests/sequence/CMakeLists.txt b/tests/sequence/CMakeLists.txt
index a8db5ea..8e5934f 100644
--- a/tests/sequence/CMakeLists.txt
+++ b/tests/sequence/CMakeLists.txt
@@ -43,10 +43,6 @@ add_executable (test_sequence_v2 test_sequence_v2.cpp
test_segment_beta.h)
target_link_libraries (test_sequence_v2 ${SEQAN_LIBRARIES})
-add_executable (test_stringset_v2 test_stringset_v2.cpp
- test_string_set.h)
-target_link_libraries (test_stringset_v2 ${SEQAN_LIBRARIES})
-
# Add CXX flags found by find_package (SeqAn).
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
diff --git a/tests/sequence/test_sequence.h b/tests/sequence/test_sequence.h
index b5b057a..5dcd38b 100755
--- a/tests/sequence/test_sequence.h
+++ b/tests/sequence/test_sequence.h
@@ -877,7 +877,7 @@ void testSequenceAppend(TString & /*Tag*/)
TString string1 = "ACGTACGTACGT";
TString string2 = "";
append(string1, string2);
- SEQAN_ASSERT_EQ(string1, "ACGTACGTACGT");
+ SEQAN_ASSERT(string1 == "ACGTACGTACGT");
}
// Test the append function on one empty and one non empty string
@@ -885,7 +885,7 @@ void testSequenceAppend(TString & /*Tag*/)
TString string1 = "";
TString string2 = "TTGGATTAACC";
append(string1, string2);
- SEQAN_ASSERT_EQ(string1, "TTGGATTAACC");
+ SEQAN_ASSERT(string1 == "TTGGATTAACC");
}
// Test the append function on two non empty strings.
@@ -893,7 +893,7 @@ void testSequenceAppend(TString & /*Tag*/)
TString string1 = "ACGTACGTACGT";
TString string2 = "TTGGATTAACCC";
append(string1, string2);
- SEQAN_ASSERT_EQ(string1, "ACGTACGTACGTTTGGATTAACCC");
+ SEQAN_ASSERT(string1 == "ACGTACGTACGTTTGGATTAACCC");
}
}
diff --git a/tests/sequence/test_string_set.h b/tests/sequence/test_string_set.h
index 1e835ae..e719483 100755
--- a/tests/sequence/test_string_set.h
+++ b/tests/sequence/test_string_set.h
@@ -30,7 +30,6 @@
//
// ==========================================================================
// Author: Jochen Singer <jochen.singer at fu-berlin.de>
-// Auther: Hannes Hauswedell <hannes.hauswedell at fu-berlin.de>
// ==========================================================================
// This file contains functions to test the functionality of the sequence
// module.
@@ -41,82 +40,11 @@
#include <seqan/basic.h>
#include <seqan/sequence.h>
-#include <seqan/stream.h>
+#include "test_sequence.h"
-using namespace seqan;
-
-// --------------------------------------------------------------------------
-// CountingChar is used to test sequences of non simple data types.
-// --------------------------------------------------------------------------
-//TODO(h4nn3s): currently not working for StringSets
-
-struct CountingChar
-{
- char value; // value of the object
- static unsigned numConstruct; // number of constructor calls
- static unsigned numDeconstruct; // number of destructor calls
-
- CountingChar() : value()
- {
- numConstruct += 1;
- }
-
- CountingChar(char const & value) : value(value)
- {
- numConstruct += 1;
- }
-
- CountingChar(CountingChar const & other) : value(other.value)
- {
- numConstruct += 1;
- }
-
- ~CountingChar()
- {
- numDeconstruct += 1;
- }
-
- static void clear()
- {
- numConstruct = 0;
- numDeconstruct = 0;
- }
-
- bool operator==(CountingChar const & other) const
- {
- return value == other.value;
- }
-
- bool operator>(CountingChar const & other) const
- {
- return value > other.value;
- }
-
- bool operator<(CountingChar const & other) const
- {
- return value < other.value;
- }
-};
-
-template <typename TStream>
-inline TStream & operator<<(TStream & stream, CountingChar const & countingChar)
-{
- stream << countingChar.value;
-
- return stream;
-}
-
-template <typename TStream, typename TSpec>
-inline TStream & operator<<(TStream & stream, String<CountingChar, TSpec> const & string)
-{
- for (unsigned i = 0; i < length(string); ++i)
- stream << string[i];
-
- return stream;
-}
-
-unsigned CountingChar::numConstruct = 0;
-unsigned CountingChar::numDeconstruct = 0;
+// TODO(singer): The Value metafunction of a concat direct string set returns an infix.
+// This should be changed!
+// The following metafunction is just a workaround.
template <typename TStringSet>
struct TestStringSetValue_
@@ -130,29 +58,14 @@ struct TestStringSetValue_<StringSet<TString, Owner<ConcatDirect<> > > >
typedef TString Type;
};
-template <typename TString>
-struct TestStringSetValue_<StringSet<TString, Owner<ConcatDirect<> > > const>
-{
- typedef TString Type;
-};
-
-// template <typename TAlphabetSpecPair>
-// class StringSetTest : public Test
-// {
-// public:
-// typedef typename TagListValue<TAlphabetSpecPair, 2>::Type TAlphabet;
-// typedef typename TagListValue<TAlphabetSpecPair, 1>::Type TStringSpec;
-// typedef typename TagListValue<TAlphabetSpecPair, 0>::Type TSetSpec;
-// typedef StringSet<String<TAlphabet, TStringSpec>, TSetSpec> TStringSet;
-// };
-
-template <typename TAlphabetSpecPair_>
-class StringSetTest : public Test
+template <typename TAlphabetSpecPair>
+class StringSetTest : public seqan::Test
{
public:
-// typedef typename TagListValue<TAlphabetSpecPair, 1>::Type TAlphabet;
-// typedef typename TagListValue<TAlphabetSpecPair, 2>::Type TSpec;
- typedef TAlphabetSpecPair_ TStringSet;
+ typedef typename seqan::TagListValue<TAlphabetSpecPair, 1>::Type TAlphabet;
+ typedef typename seqan::TagListValue<TAlphabetSpecPair, 2>::Type TStringSpec;
+ typedef typename seqan::TagListValue<TAlphabetSpecPair, 3>::Type TSetSpec;
+ typedef seqan::StringSet<seqan::String<TAlphabet, TStringSpec>, TSetSpec> TStringSet;
};
// ((a (b (c)))
@@ -160,118 +73,117 @@ public:
// ((g (h (i)))
// )))
-typedef
-/* TagList<StringSet<String<Dna, MMap<> >, Owner<> > ,
- TagList<StringSet<String<short, MMap<> >, Owner<> > ,
- TagList<StringSet<String<char, MMap<> >, Owner<> > ,
-// TagList<StringSet<String<CountingChar, MMap<> >, Owner<> > ,
-// TagList<StringSet<String<Dna, MMap<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<short, MMap<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<char, MMap<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<CountingChar, MMap<> >, Owner<ConcatDirect<> > > ,
- TagList<StringSet<String<Dna, MMap<> >, Dependent<Tight> > ,
- TagList<StringSet<String<short, MMap<> >, Dependent<Tight> > ,
- TagList<StringSet<String<char, MMap<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<CountingChar, MMap<> >, Dependent<Tight> > ,
- TagList<StringSet<String<Dna, MMap<> >, Dependent<Generous> > ,
- TagList<StringSet<String<short, MMap<> >, Dependent<Generous> > ,
- TagList<StringSet<String<char, MMap<> >, Dependent<Generous> > ,
-// TagList<StringSet<String<CountingChar, MMap<> >, Dependent<Generous> > ,
-
- TagList<StringSet<String<Dna, External<> >, Owner<> > ,
- TagList<StringSet<String<short, External<> >, Owner<> > ,
- TagList<StringSet<String<char, External<> >, Owner<> > ,
-// TagList<StringSet<String<CountingChar, External<> >, Owner<> > ,
-// TagList<StringSet<String<Dna, External<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<short, External<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<char, External<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<CountingChar, External<> >, Owner<ConcatDirect<> > > ,
- TagList<StringSet<String<Dna, External<> >, Dependent<Tight> > ,
- TagList<StringSet<String<short, External<> >, Dependent<Tight> > ,
- TagList<StringSet<String<char, External<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<CountingChar, External<> >, Dependent<Tight> > ,
- TagList<StringSet<String<Dna, External<> >, Dependent<Generous> > ,
- TagList<StringSet<String<short, External<> >, Dependent<Generous> > ,
- TagList<StringSet<String<char, External<> >, Dependent<Generous> > ,
-// TagList<StringSet<String<CountingChar, External<> >, Dependent<Generous> > ,
-*/
- TagList<StringSet<String<Dna, Packed<> >, Owner<> > ,
- TagList<StringSet<String<short, Packed<> >, Owner<> > ,
- TagList<StringSet<String<char, Packed<> >, Owner<> > ,
- TagList<StringSet<String<Dna, Packed<> >, Owner<ConcatDirect<> > > ,
- TagList<StringSet<String<short, Packed<> >, Owner<ConcatDirect<> > > ,
- TagList<StringSet<String<char, Packed<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<Dna, Packed<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<short, Packed<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<char, Packed<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<Dna, Packed<> >, Dependent<Generous> > ,
-// TagList<StringSet<String<short, Packed<> >, Dependent<Generous> > ,
-// TagList<StringSet<String<char, Packed<> >, Dependent<Generous> > ,
-
- TagList<StringSet<String<Dna, Array<100> >, Owner<> > ,
- TagList<StringSet<String<short, Array<100> >, Owner<> > ,
- TagList<StringSet<String<char, Array<100> >, Owner<> > ,
-// TagList<StringSet<String<CountingChar, Array<100> >, Owner<> > ,
- TagList<StringSet<String<Dna, Array<1000> >, Owner<ConcatDirect<> > > ,
- TagList<StringSet<String<short, Array<1000> >, Owner<ConcatDirect<> > > ,
- TagList<StringSet<String<char, Array<1000> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<CountingChar, Array<1000> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<Dna, Array<100> >, Dependent<Tight> > ,
-// TagList<StringSet<String<short, Array<100> >, Dependent<Tight> > ,
-// TagList<StringSet<String<char, Array<100> >, Dependent<Tight> > ,
-// TagList<StringSet<String<CountingChar, Array<100> >, Dependent<Tight> > ,
-// TagList<StringSet<String<Dna, Array<100> >, Dependent<Generous> > ,
-// TagList<StringSet<String<short, Array<100> >, Dependent<Generous> > ,
-// TagList<StringSet<String<char, Array<100> >, Dependent<Generous> > ,
-// TagList<StringSet<String<CountingChar, Array<100> >, Dependent<Generous> > ,
-
-// TagList<StringSet<String<Dna, Block<> >, Owner<> > ,
-// TagList<StringSet<String<short, Block<> >, Owner<> > ,
-// TagList<StringSet<String<char, Block<> >, Owner<> > ,
-// // TagList<StringSet<String<CountingChar, Block<> >, Owner<> > ,
-// TagList<StringSet<String<Dna, Block<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<short, Block<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<char, Block<> >, Owner<ConcatDirect<> > > ,
-// // TagList<StringSet<String<CountingChar, Block<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<Dna, Block<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<short, Block<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<char, Block<> >, Dependent<Tight> > ,
-// // TagList<StringSet<String<CountingChar, Block<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<Dna, Block<> >, Dependent<Generous> > ,
-// TagList<StringSet<String<short, Block<> >, Dependent<Generous> > ,
-// TagList<StringSet<String<char, Block<> >, Dependent<Generous> > ,
-// // TagList<StringSet<String<CountingChar, Block<> >, Dependent<Generous> > ,
+typedef seqan::TagList<
+// seqan::TagList<seqan::Dna, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+// seqan::TagList<short, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+// seqan::TagList<char, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+// seqan::TagList<CountingChar, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+// seqan::TagList<seqan::Dna, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+// seqan::TagList<short, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+// seqan::TagList<char, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+// seqan::TagList<CountingChar, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+// seqan::TagList<seqan::Dna, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+// seqan::TagList<short, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+// seqan::TagList<char, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+// seqan::TagList<CountingChar, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+// seqan::TagList<seqan::Dna, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+// seqan::TagList<short, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+// seqan::TagList<char, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+// seqan::TagList<CountingChar, seqan::TagList<seqan::MMap<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::External<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Packed<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Array<100>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Block<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
// TODO(Singer): 7 errors and about 400 warnings (deprecated ...)
-// TagList<char, TagList<CStyle, TagList<Owner<> > > >, TagList<
-// TagList<char, TagList<CStyle, TagList<Owner<ConcatDirect<> > > > >, TagList<
-// TagList<char, TagList<CStyle, TagList<Dependent<Tight> > > >, TagList<
-// TagList<char, TagList<CStyle, TagList<Dependent<Generous> > > >, TagList<
-
- TagList<StringSet<String<Dna, Alloc<> >, Owner<> > ,
- TagList<StringSet<String<short, Alloc<> >, Owner<> > ,
- TagList<StringSet<String<char, Alloc<> >, Owner<> > ,
-// TagList<StringSet<String<CountingChar, Alloc<> >, Owner<> > ,
- TagList<StringSet<String<Dna, Alloc<> >, Owner<ConcatDirect<> > > ,
- TagList<StringSet<String<short, Alloc<> >, Owner<ConcatDirect<> > > ,
- TagList<StringSet<String<char, Alloc<> >, Owner<ConcatDirect<> > > //,
-// TagList<StringSet<String<CountingChar, Alloc<> >, Owner<ConcatDirect<> > > ,
-// TagList<StringSet<String<Dna, Alloc<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<short, Alloc<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<char, Alloc<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<CountingChar, Alloc<> >, Dependent<Tight> > ,
-// TagList<StringSet<String<Dna, Alloc<> >, Dependent<Generous> > ,
-// TagList<StringSet<String<short, Alloc<> >, Dependent<Generous> > ,
-// TagList<StringSet<String<char, Alloc<> >, Dependent<Generous> > ,
-// TagList<StringSet<String<CountingChar, Alloc<> >, Dependent<Generous> >
-
-// > > > > > > > > > > > > > > > >
-// > > > > > > > > > > > > > > > >
- > > > > > > //> > > > > >
- > > > > > > //> > > > > > > > > >
-// > > > > > > > > > > > > > > > >
-// > > > >
- > > > > > > //> > > > > > > > > >
+// seqan::TagList<char, seqan::TagList<seqan::CStyle, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+// seqan::TagList<char, seqan::TagList<seqan::CStyle, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+// seqan::TagList<char, seqan::TagList<seqan::CStyle, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+// seqan::TagList<char, seqan::TagList<seqan::CStyle, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Owner<> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Owner<ConcatDirect<> > > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Dependent<Tight> > > >, seqan::TagList<
+ seqan::TagList<seqan::Dna, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<short, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<char, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Dependent<Generous> > > >, seqan::TagList<
+ seqan::TagList<CountingChar, seqan::TagList<seqan::Alloc<>, seqan::TagList<seqan::Dependent<Generous> > > >//, seqan::TagList<
+// > > > > > > > > > > > > > > > >
+ > > > > > > > > > > > > > > > >
+ > > > > > > > > > > > >
+ > > > > > > > > > > > > > > > >
+ > > > > > > > > > > > > > > > >
+// > > > >
+ > > > > > > > > > > > > > > > >
StringSetTestTypes;
template <typename T>
@@ -291,37 +203,11 @@ TStringSet createStringSet(TStringSet & stringSet)
}
// Test whether PrefixSegments are copy constructible.
-// template <typename TStringSet>
-// void testStringSetCopyConstructible(TStringSet & /*Tag*/)
-// {
-// TStringSet stringSet1;
-// resize(stringSet1, 3);
-// stringSet1[0] = "AAAA";
-// SEQAN_ASSERT_EQ(stringSet1[0], "AAAA");
-// stringSet1[1] = "CC";
-// SEQAN_ASSERT_EQ(stringSet1[1], "CC");
-// stringSet1[2] = "GGG";
-// SEQAN_ASSERT_EQ(stringSet1[2], "GGG");
-//
-// {
-// TStringSet stringSet2(stringSet1);
-//
-// SEQAN_ASSERT_EQ(getValue(stringSet2, 0), "AAAA");
-// SEQAN_ASSERT_EQ(getValue(stringSet2, 1), "CC");
-// SEQAN_ASSERT_EQ(getValue(stringSet2, 2), "GGG");
-// }
-// {
-// TStringSet const stringSet2(stringSet1);
-//
-// SEQAN_ASSERT_EQ(getValue(stringSet2, 0), "AAAA");
-// SEQAN_ASSERT_EQ(getValue(stringSet2, 1), "CC");
-// SEQAN_ASSERT_EQ(getValue(stringSet2, 2), "GGG");
-// }
-// }
-
template <typename TStringSet>
void testStringSetCopyConstructible(TStringSet & /*Tag*/)
{
+ using namespace seqan;
+
typedef typename TestStringSetValue_<TStringSet>::Type TString;
TString str1("AAAA");
@@ -330,37 +216,32 @@ void testStringSetCopyConstructible(TStringSet & /*Tag*/)
TStringSet stringSet1;
appendValue(stringSet1, str1);
- SEQAN_ASSERT(stringSet1[0] == str1);
appendValue(stringSet1, str2);
- SEQAN_ASSERT(stringSet1[1] == str2);
appendValue(stringSet1, str3);
- SEQAN_ASSERT(stringSet1[2] == str3);
{
TStringSet stringSet2(stringSet1);
-
- SEQAN_ASSERT(getValue(stringSet2, 0) == str1);
- SEQAN_ASSERT(getValue(stringSet2, 1) == str2);
- SEQAN_ASSERT(getValue(stringSet2, 2) == str3);
+
+ SEQAN_ASSERT_EQ(getValue(stringSet2, 0), "AAAA");
+ SEQAN_ASSERT_EQ(getValue(stringSet2, 1), "CC");
+ SEQAN_ASSERT_EQ(getValue(stringSet2, 2), "GGG");
}
{
TStringSet const stringSet2(stringSet1);
- SEQAN_ASSERT(getValue(stringSet2, 0) == str1);
- SEQAN_ASSERT(getValue(stringSet2, 1) == str2);
- SEQAN_ASSERT(getValue(stringSet2, 2) == str3);
+ SEQAN_ASSERT_EQ(getValue(stringSet2, 0), "AAAA");
+ SEQAN_ASSERT_EQ(getValue(stringSet2, 1), "CC");
+ SEQAN_ASSERT_EQ(getValue(stringSet2, 2), "GGG");
}
}
-// TODO(h4nn3s): the following tests would fail, check if we could (and should) fix this
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetCopyConstructible(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetCopyConstructible(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetCopyConstructible(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetCopyConstructible(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
+// TODO(singer): AppendValue is not available for string sets of packed strings
+template <typename TValue, typename TStringSetSpec>
+void testStringSetCopyConstructible(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetCopyConstructible(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetCopyConstructible(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
// Test whether sequences are copy constructible.
SEQAN_TYPED_TEST(StringSetTestCommon, CopyConstructible)
@@ -370,7 +251,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, CopyConstructible)
typename TestFixture::TStringSet strSet;
testStringSetCopyConstructible(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test whether sequences are default constructible.
@@ -391,7 +272,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, DefaultConstructible)
typename TestFixture::TStringSet strSet;
testStringSetDefaultConstructible(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
@@ -401,7 +282,7 @@ void testStringSetLessGreaterEqual(TStringSet & /*Tag*/)
{
using namespace seqan;
typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
// nothing - nohing
{
@@ -517,20 +398,16 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Comparison)
// typename TestFixture::TStringSet const constStrSet;
// testStringSetLessGreaterEqual(constStrSet);
//
-// testConstructDeconstruct(strSet);
+// testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
-// TODO dependent can't append
-template <typename TValue, typename TStringSpec, typename TSpec2>
-void testStringSetAppend(StringSet<String<TValue, TStringSpec >, Dependent<TSpec2> > & /*Tag*/) {}
-
// Test of append().
template <typename TStringSet>
void testStringSetAppend(TStringSet & /*Tag*/)
{
using namespace seqan;
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
TStringSet stringSet1;
TStringSet stringSet2;
@@ -548,12 +425,12 @@ void testStringSetAppend(TStringSet & /*Tag*/)
// TODO(singer): append not implemented for string sets
SEQAN_TYPED_TEST(StringSetTestCommon, Append)
{
- CountingChar::clear();
-
- typename TestFixture::TStringSet strSet;
- testStringSetAppend(strSet);
-
-// testConstructDeconstruct(strSet);
+// CountingChar::clear();
+//
+// typename TestFixture::TStringSet strSet;
+// testStringSetAppend(strSet);
+//
+// testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of appendValue().
@@ -571,23 +448,23 @@ void testStringSetAppendValue(TStringSet & /*Tag*/)
TString str("ACGT");
appendValue(stringSet, str);
SEQAN_ASSERT_EQ(length(stringSet), 1u);
- SEQAN_ASSERT(stringSet[0] == str);
+ SEQAN_ASSERT_EQ(stringSet[0], "ACGT");
// Test the appendValue function
- TString str2 = TString("CGTA");
- appendValue(stringSet, str2);
+ str = TString("CGTA");
+ appendValue(stringSet, str);
SEQAN_ASSERT_EQ(length(stringSet), 2u);
- SEQAN_ASSERT(stringSet[0] == str);
- SEQAN_ASSERT(stringSet[1] == str2);
+ SEQAN_ASSERT_EQ(stringSet[0], "ACGT");
+ SEQAN_ASSERT_EQ(stringSet[1], "CGTA");
}
// TODO(singer): AppendValue is not available for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAppendValue(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAppendValue(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAppendValue(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAppendValue(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAppendValue(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAppendValue(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, AppendValue)
{
@@ -596,7 +473,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, AppendValue)
typename TestFixture::TStringSet strSet;
testStringSetAppendValue(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of assign().
@@ -605,7 +482,7 @@ void testStringSetAssign(TStringSet & /*Tag*/)
{
using namespace seqan;
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
{
TStringSet stringSet1;
TStringSet stringSet2;
@@ -638,7 +515,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Assign)
typename TestFixture::TStringSet strSet;
testStringSetAssign(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of assignValue().
@@ -656,33 +533,27 @@ void testStringSetAssignValue(TStringSet & /*Tag*/)
resize(stringSet, 3u);
assignValue(stringSet, 1u, string);
SEQAN_ASSERT_EQ(length(stringSet), 3u);
- SEQAN_ASSERT(stringSet[1] == string); // Fixes compiler warning if string alphabet type is not char type.
+ SEQAN_ASSERT_EQ(stringSet[1], string);
}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAssignValue(StringSet<String<TValue, Block<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAssignValue(StringSet<String<TValue, Block<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAssignValue(StringSet<String<TValue, Block<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAssignValue(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAssignValue(StringSet<String<TValue, Block<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAssignValue(StringSet<String<TValue, Block<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAssignValue(StringSet<String<TValue, Block<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAssignValue(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
template <typename TValue, typename TStringSetSpec>
void testStringSetAssignValue(StringSet<String<TValue, Packed<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
-template <typename TValue>
-void testStringSetAssignValue(StringSet<String<TValue, Packed<> >, Owner<ConcatDirect<> > > & /*Tag*/) {}
template <typename TValue, typename TStringSetSpec>
-void testStringSetAssignValue(StringSet<String<TValue, Packed<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// // TODO(singer): Seg fault
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAssignValue(StringSet<String<TValue, External<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSpec, typename TStringSetSpec>
-// void testStringSetAssignValue(StringSet<String<TValue, TStringSpec>, Dependent<TStringSetSpec> > & /*Tag*/) {}
+void testStringSetAssignValue(StringSet<String<TValue, Packed<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-template <typename TString>
-void testStringSetAssignValue(StringSet<TString, Owner<ConcatDirect<> > > & /*Tag*/) {}
-template <typename TString>
-void testStringSetAssignValue(StringSet<TString, Owner<ConcatDirect<> > > const & /*Tag*/) {}
+// TODO(singer): Seg fault
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAssignValue(StringSet<String<TValue, External<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSpec, typename TStringSetSpec>
+void testStringSetAssignValue(StringSet<String<TValue, TStringSpec>, Dependent<TStringSetSpec> > & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, AssignValue)
{
@@ -691,7 +562,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, AssignValue)
typename TestFixture::TStringSet strSet;
testStringSetAssignValue(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of assignValueById().
@@ -708,7 +579,7 @@ void testStringSetAssignValueById(TStringSet & /*Tag*/)
TString string("ACGT");
unsigned id = assignValueById(stringSet1, string);
SEQAN_ASSERT_EQ(length(stringSet1), 1u);
- SEQAN_ASSERT_EQ(CharString(stringSet1[0]), string);
+ SEQAN_ASSERT_EQ(stringSet1[0], string);
SEQAN_ASSERT_EQ(id, 0u);
// TODO (singer): this is not documented, such that it can be easily understood!
@@ -723,40 +594,33 @@ void testStringSetAssignValueById(TStringSet & /*Tag*/)
id = assignValueById(stringSet1, stringSet2, 1u);
SEQAN_ASSERT_EQ(length(stringSet1), 2u);
- SEQAN_ASSERT_EQ(CharString(stringSet1[0]), string);
- SEQAN_ASSERT_EQ(CharString(stringSet1[1]), str3);
+ SEQAN_ASSERT_EQ(stringSet1[0], string);
+ SEQAN_ASSERT_EQ(stringSet1[1], str3);
SEQAN_ASSERT_EQ(id, 1u);
}
// TODO(singer): Seg fault
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAssignValueById(StringSet<String<TValue, Block<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAssignValueById(StringSet<String<TValue, Block<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
template <typename TValue, typename TStringSetSpec>
void testStringSetAssignValueById(StringSet<String<TValue, Array<100> >, Owner<TStringSetSpec> > & /*Tag*/) {}
template <typename TValue, typename TStringSetSpec>
void testStringSetAssignValueById(StringSet<String<TValue, Packed<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetAssignValueById(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
template <typename TValue>
-void testStringSetAssignValueById(StringSet<String<TValue, Array<100> >, Owner<ConcatDirect<> > > & /*Tag*/) {}
+void testStringSetAssignValueById(StringSet<String<TValue, External<> >, Owner<ConcatDirect<> > > & /*Tag*/) {}
template <typename TValue>
-void testStringSetAssignValueById(StringSet<String<TValue, Packed<> >, Owner<ConcatDirect<> > > & /*Tag*/) {}
-
-
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetAssignValueById(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-template <typename TString>
-void testStringSetAssignValueById(StringSet<TString, Owner<ConcatDirect<> > > & /*Tag*/) {}
-template <typename TString>
-void testStringSetAssignValueById(StringSet<TString, Owner<ConcatDirect<> > > const & /*Tag*/) {}
+void testStringSetAssignValueById(StringSet<String<TValue, Alloc<> >, Owner<ConcatDirect<> > > & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, AssignValueById)
{
-// BROKEN FOR LOTS OF STUFF
-// CountingChar::clear();
-//
-// typename TestFixture::TStringSet strSet;
-// testStringSetAssignValueById(strSet);
-//
-// testConstructDeconstruct(strSet);
+ CountingChar::clear();
+
+ typename TestFixture::TStringSet strSet;
+ testStringSetAssignValueById(strSet);
+
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of back() for non const strings.
@@ -777,7 +641,7 @@ void testStringSetBack(TStringSet & /*Tag*/)
// val is a reference in contrast to the const version of back()
TString & val = back(stringSet);
val = "TTTT";
- SEQAN_ASSERT(val == stringSet[1]);
+ SEQAN_ASSERT_EQ(val, stringSet[1]);
}
// Test of back() for const strings.
@@ -799,29 +663,24 @@ void testStringSetBack(TStringSet const & /*Tag*/)
// val is a reference in contrast to the const version of back()
TString val = back(stringSet);
- SEQAN_ASSERT(val == TString(stringSet[1]));
+ SEQAN_ASSERT_EQ(val, stringSet[1]);
val = "TTTT";
- SEQAN_ASSERT(TString(stringSet[1]) == str2);
+ SEQAN_ASSERT_EQ(stringSet[1], str2);
}
// TODO(singer)
template <typename TValue, typename TStringSpec>
void testStringSetBack(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > & /*Tag*/) {}
-
-// this should work, but doesnt
-template <typename TSpec>
-void testStringSetBack(StringSet<String<short, Packed<TSpec> >, Owner<ConcatDirect<> > > const & /*Tag*/) {}
-
-// template <typename TValue, typename TStringSpec>
-// void testStringSetBack(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > const & /*Tag*/) {}
-// template <typename TValue>
-// void testStringSetBack(StringSet<String<TValue, External<> >, Owner<> > & /*Tag*/) {}
-// template <typename TValue>
-// void testStringSetBack(StringSet<String<TValue, External<> >, Owner<> > const & /*Tag*/) {}
-// template <typename TValue, typename TStringSpec, typename TStringSetSpec>
-// void testStringSetBack(StringSet<String<TValue, TStringSpec>, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSpec, typename TStringSetSpec>
-// void testStringSetBack(StringSet<String<TValue, TStringSpec>, Dependent<TStringSetSpec> > const & /*Tag*/) {}
+template <typename TValue, typename TStringSpec>
+void testStringSetBack(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > const & /*Tag*/) {}
+template <typename TValue>
+void testStringSetBack(StringSet<String<TValue, External<> >, Owner<> > & /*Tag*/) {}
+template <typename TValue>
+void testStringSetBack(StringSet<String<TValue, External<> >, Owner<> > const & /*Tag*/) {}
+template <typename TValue, typename TStringSpec, typename TStringSetSpec>
+void testStringSetBack(StringSet<String<TValue, TStringSpec>, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSpec, typename TStringSetSpec>
+void testStringSetBack(StringSet<String<TValue, TStringSpec>, Dependent<TStringSetSpec> > const & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, Back)
{
@@ -833,7 +692,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Back)
typename TestFixture::TStringSet const constStrSet;
testStringSetBack(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of begin().
@@ -852,29 +711,25 @@ void testStringSetBegin(TStringSet & /*Tag*/)
appendValue(nonConstStringSet, str);
appendValue(nonConstStringSet, str2);
TStringSet stringSet(nonConstStringSet);
- SEQAN_ASSERT(TString(*begin(stringSet)) == str);
- SEQAN_ASSERT(TString(*begin(stringSet, Standard())) == str);
- SEQAN_ASSERT(TString(*begin(stringSet, Rooted())) == str);
+ SEQAN_ASSERT_EQ(*begin(stringSet), str);
+ SEQAN_ASSERT_EQ(*begin(stringSet, Standard()), str);
+ SEQAN_ASSERT_EQ(*begin(stringSet, Rooted()), str);
}
// TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBegin(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBegin(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBegin(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBegin(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-//
-//
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBegin(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBegin(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBegin(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBegin(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBegin(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBegin(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-// this should work, but doesnt
-template <typename TSpec>
-void testStringSetBegin(StringSet<String<short, Packed<TSpec> >, Owner<ConcatDirect<> > > & /*Tag*/) {}
+
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBegin(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBegin(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, Begin)
{
@@ -886,7 +741,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Begin)
typename TestFixture::TStringSet const constStrSet;
testStringSetBegin(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of beginPosition().
@@ -918,18 +773,18 @@ void testStringSetBeginPosition(TStringSet & /*Tag*/)
}
// TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBeginPosition(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBeginPosition(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBeginPosition(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBeginPosition(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBeginPosition(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetBeginPosition(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBeginPosition(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBeginPosition(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBeginPosition(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBeginPosition(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBeginPosition(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetBeginPosition(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, BeginPosition)
{
@@ -941,7 +796,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, BeginPosition)
typename TestFixture::TStringSet const constStrSet;
testStringSetBeginPosition(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of clear().
@@ -969,18 +824,18 @@ void testStringSetClear(TStringSet & /*Tag*/)
}
// TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetClear(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetClear(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetClear(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetClear(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetClear(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetClear(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetClear(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetClear(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetClear(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetClear(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetClear(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetClear(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, Clear)
{
@@ -989,7 +844,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Clear)
typename TestFixture::TStringSet strSet;
testStringSetClear(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of concat().
@@ -1000,7 +855,7 @@ void testStringSetConcat(TStringSet & /*Tag*/)
typedef typename TestStringSetValue_<TStringSet>::Type TString;
typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-// typedef typename Concatenator<TStringSet>::Type TConcat;
+ typedef typename Concatenator<TStringSet>::Type TConcat;
// TODO (singer): test fails for not initialized string sets.
// Error message: Assertion failed : static_cast<TStringPos>(pos) < static_cast<TStringPos>(length(me)) was: 0 >= 0 (Trying to access an element behind the last one!).
@@ -1025,7 +880,7 @@ void testStringSetConcat(TStringSet & /*Tag*/)
appendValue(nonConstStringSet, str4);
TString string("AAAACCCCGGGGTTTT");
TStringSet stringSet(nonConstStringSet);
- TString/*TConcat*/ concatString = concat(stringSet); // can't call [] on all Concatenators so we convert here
+ TConcat concatString = concat(stringSet);
for (unsigned i = 0; i < length(string); ++i)
SEQAN_ASSERT_EQ(string[i], concatString[i]);
}
@@ -1036,10 +891,10 @@ template <typename TValue, typename TStringSetSpec>
void testStringSetConcat(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
template <typename TValue, typename TStringSetSpec>
void testStringSetConcat(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetConcat(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetConcat(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetConcat(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetConcat(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, Concat)
{
@@ -1048,7 +903,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Concat)
typename TestFixture::TStringSet strSet;
testStringSetConcat(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of end().
@@ -1075,21 +930,20 @@ void testStringSetEnd(TStringSet & /*Tag*/)
--standardIter;
--rootedIter;
- // Fixes compiler warning if string alphabet type is not char type.
- SEQAN_ASSERT(*iter == str2);
- SEQAN_ASSERT(*standardIter == str2);
- SEQAN_ASSERT(*rootedIter == str2);
+ SEQAN_ASSERT_EQ(*iter, str2);
+ SEQAN_ASSERT_EQ(*standardIter, str2);
+ SEQAN_ASSERT_EQ(*rootedIter, str2);
}
// TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetEnd(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetEnd(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetEnd(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetEnd(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetEnd(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetEnd(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetEnd(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetEnd(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, End)
{
@@ -1101,7 +955,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, End)
typename TestFixture::TStringSet const constStrSet;
testStringSetEnd(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of endPosition().
@@ -1154,7 +1008,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, EndPosition)
typename TestFixture::TStringSet const constStrSet;
testStringSetEndPosition(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of erase().
@@ -1175,11 +1029,11 @@ void testStringSetErase(TStringSet & /*Tag*/)
appendValue(stringSet, str);
appendValue(stringSet, str2);
appendValue(stringSet, str3);
- SEQAN_ASSERT(stringSet[1] == str2);
+ SEQAN_ASSERT_EQ(stringSet[1], str2);
erase(stringSet, 1);
SEQAN_ASSERT_EQ(length(stringSet), 2u);
- SEQAN_ASSERT(stringSet[0] == str);
- SEQAN_ASSERT(stringSet[1] == str3);
+ SEQAN_ASSERT_EQ(stringSet[0], TString());
+ SEQAN_ASSERT_EQ(stringSet[1], TString());
}
// TODO(singer): Seg. fault
@@ -1211,7 +1065,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Erase)
typename TestFixture::TStringSet strSet;
testStringSetErase(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of eraseBack().
@@ -1236,22 +1090,22 @@ void testStringSetEraseBack(TStringSet & /*Tag*/)
appendValue(stringSet, str);
appendValue(stringSet, str);
appendValue(stringSet, str2);
- SEQAN_ASSERT(stringSet[2] == str2);
+ SEQAN_ASSERT_EQ(stringSet[2], str2);
eraseBack(stringSet);
SEQAN_ASSERT_EQ(length(stringSet), 2u);
- SEQAN_ASSERT(stringSet[0] == TString());
- SEQAN_ASSERT(stringSet[1] == TString());
+ SEQAN_ASSERT_EQ(stringSet[0], TString());
+ SEQAN_ASSERT_EQ(stringSet[1], TString());
}
// TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetEraseBack(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetEraseBack(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetEraseBack(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetEraseBack(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetEraseBack(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetEraseBack(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetEraseBack(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetEraseBack(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, EraseBack)
{
@@ -1260,7 +1114,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, EraseBack)
typename TestFixture::TStringSet strSet;
testStringSetEraseBack(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// TODO (singer): not in docu.
@@ -1281,7 +1135,7 @@ void testStringSetFront(TStringSet & /*Tag*/)
// val is a reference in contrast to the const version of front()
TString & val = front(stringSet);
val = "TTTT";
- SEQAN_ASSERT(val == stringSet[0]);
+ SEQAN_ASSERT_EQ(val, stringSet[0]);
}
// Test of front() for const strings.
@@ -1303,42 +1157,38 @@ void testStringSetFront(TStringSet const & /*Tag*/)
// val is a reference in contrast to the const version of front()
TString val = front(stringSet);
- SEQAN_ASSERT(val == stringSet[0]);
+ SEQAN_ASSERT_EQ(val, stringSet[0]);
val = "TTTT";
- SEQAN_ASSERT(stringSet[0] == str);
+ SEQAN_ASSERT_EQ(stringSet[0], str);
}
// TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetFront(StringSet<String<TValue, Packed<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetFront(StringSet<String<TValue, Packed<> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetFront(StringSet<String<TValue, Array<100> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetFront(StringSet<String<TValue, Array<100> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetFront(StringSet<String<TValue, Packed<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetFront(StringSet<String<TValue, Packed<> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetFront(StringSet<String<TValue, Array<100> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetFront(StringSet<String<TValue, Array<100> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
// TODO(singer)
-// template <typename TValue>
-// void testStringSetFront(StringSet<String<TValue, MMap<> >, Owner<> > & /*Tag*/) {}
-// template <typename TValue>
-// void testStringSetFront(StringSet<String<TValue, MMap<> >, Owner<> > const & /*Tag*/) {}
+template <typename TValue>
+void testStringSetFront(StringSet<String<TValue, MMap<> >, Owner<> > & /*Tag*/) {}
+template <typename TValue>
+void testStringSetFront(StringSet<String<TValue, MMap<> >, Owner<> > const & /*Tag*/) {}
template <typename TValue, typename TStringSpec>
void testStringSetFront(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > & /*Tag*/) {}
-// template <typename TValue, typename TStringSpec>
-// void testStringSetFront(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > const & /*Tag*/) {}
-// template <typename TValue>
-// void testStringSetFront(StringSet<String<TValue, External<> >, Owner<> > & /*Tag*/) {}
-// template <typename TValue>
-// void testStringSetFront(StringSet<String<TValue, External<> >, Owner<> > const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetFront(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetFront(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
-
-// this should work, but doesnt
-template <typename TSpec>
-void testStringSetFront(StringSet<String<short, Packed<TSpec> >, Owner<ConcatDirect<> > > const & /*Tag*/) {}
+template <typename TValue, typename TStringSpec>
+void testStringSetFront(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > const & /*Tag*/) {}
+template <typename TValue>
+void testStringSetFront(StringSet<String<TValue, External<> >, Owner<> > & /*Tag*/) {}
+template <typename TValue>
+void testStringSetFront(StringSet<String<TValue, External<> >, Owner<> > const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetFront(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetFront(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, Front)
{
@@ -1350,7 +1200,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Front)
typename TestFixture::TStringSet const constStrSet;
testStringSetFront(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of getValue().
@@ -1367,13 +1217,12 @@ void testStringSetGetValue(TStringSet & /*Tag*/)
TString str("CG");
TString str2("ACGT");
TString str3("CGACGT");
-
TNonConstStringSet nonConstStringSet;
appendValue(nonConstStringSet, str);
appendValue(nonConstStringSet, str2);
appendValue(nonConstStringSet, str3);
TStringSet stringSet(nonConstStringSet);
- SEQAN_ASSERT(TString(getValue(stringSet, 1)) == TString(str2));
+ SEQAN_ASSERT_EQ(getValue(stringSet, 1), str2);
}
// TODO(singer): No appendValue for string sets of packed strings
@@ -1396,7 +1245,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, GetValue)
typename TestFixture::TStringSet const constStrSet;
testStringSetGetValue(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// TODO (singer): not defined for const string sets.
@@ -1417,7 +1266,7 @@ void testStringSetGetValueById(TStringSet & /*Tag*/)
appendValue(nonConstStringSet, str2);
appendValue(nonConstStringSet, str3);
TStringSet stringSet(nonConstStringSet);
- SEQAN_ASSERT(getValueById(stringSet, typename Id<TStringSet>::Type(1)) == str2);
+ SEQAN_ASSERT_EQ(getValueById(stringSet, typename Id<TStringSet>::Type(1)), str2);
}
// TODO(singer): No appendValue for string sets of packed strings
@@ -1441,166 +1290,166 @@ SEQAN_TYPED_TEST(StringSetTestCommon, GetValueById)
// typename TestFixture::TStringSet const constStrSet;
// testStringSetGetValueById(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
-// // TODO (singer): define behaviour and adjust test.
-// // Infix() compiles and does what it is supposed to do?!
-// // However, it is not very intuitive. For details see comments below.
-// // There is a need to improve the documentation of this!
-// // Test of infix()
-// template <typename TStringSet>
-// void testStringSetInfix(TStringSet & /*Tag*/)
-// {
-// using namespace seqan;
-//
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
-// typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-//
-// TString str("AAAA");
-// TString str2("CCC");
-// TString str3("GGGG");
-// TNonConstStringSet nonConstStringSet;
-// appendValue(nonConstStringSet, str);
-// appendValue(nonConstStringSet, str2);
-// appendValue(nonConstStringSet, str3);
-//
-// // Only non-const test for this scenario possible.
-// TStringSet stringSet(nonConstStringSet);
-// TString string = infix(stringSet, 0, 1); // Returns the first character not string!
-// // std::cerr << string << std::endl; -> "A"
-//
-// // Only non-const test for this scenario possible.
-// // TString str2("TT");
-// // nonConstStringSet[0] = str2;
-//
-// // Since the infix (should) point to the fist element it should point to "T"
-// // std::cerr << string << std::endl; -> "A"
-// // Therefore there is a different behaviour to normal strings.
-// }
-//
-// // TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-//
-// // TODO(singer)
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue,typename TStringSetSpec>
-// void testStringSetInfix(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
-//
-// SEQAN_TYPED_TEST(StringSetTestCommon, Infix)
-// {
-// CountingChar::clear();
-//
-// typename TestFixture::TStringSet strSet;
-// testStringSetInfix(strSet);
-//
-// typename TestFixture::TStringSet const constStrSet;
-// testStringSetInfix(constStrSet);
-//
-// // testConstructDeconstruct(strSet);
-// }
-//
-// // TODO (singer): define behaviour and adjust test.
-// // Infix() compiles and does what it is supposed to do?!
-// // However, it is not very intuitive. For details see comments below.
-// // There is a need to improve the documentation of this!
-// // Test of infixWithLength()
-// template <typename TStringSet>
-// void testStringSetInfixWithLength(TStringSet & /*Tag*/)
-// {
-// using namespace seqan;
-//
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
-// typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-//
-// TString str("AAAA");
-// TString str2("CCC");
-// TString str3("GGGG");
-// TNonConstStringSet nonConstStringSet;
-// appendValue(nonConstStringSet, str);
-// appendValue(nonConstStringSet, str2);
-// appendValue(nonConstStringSet, str3);
-//
-// // Only non-const test for this scenario possible.
-// TStringSet stringSet(nonConstStringSet);
-// TString string = infixWithLength(stringSet, 0, 1); // Returns the first character not string!
-// // std::cerr << string << std::endl; -> "A"
-//
-// // Only non-const test for this scenario possible.
-// // TString str2("TT");
-// // nonConstStringSet[0] = str2;
-//
-// // Since the infix (should) point to the fist element it should point to "T"
-// // std::cerr << string << std::endl; -> "A"
-// // Therefore there is a different behaviour to normal strings.
-// }
-// // TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-//
-// // TODO(singer)
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue,typename TStringSetSpec>
-// void testStringSetInfixWithLength(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
-//
-// SEQAN_TYPED_TEST(StringSetTestCommon, InfixWithLength)
-// {
-// CountingChar::clear();
-//
-// typename TestFixture::TStringSet strSet;
-// testStringSetInfixWithLength(strSet);
-//
-// typename TestFixture::TStringSet const constStrSet;
-// testStringSetInfixWithLength(constStrSet);
-//
-// // testConstructDeconstruct(strSet);
-// }
+// TODO (singer): define behaviour and adjust test.
+// Infix() compiles and does what it is supposed to do?!
+// However, it is not very intuitive. For details see comments below.
+// There is a need to improve the documentation of this!
+// Test of infix()
+template <typename TStringSet>
+void testStringSetInfix(TStringSet & /*Tag*/)
+{
+ using namespace seqan;
-// Test of insert().
-// TODO (singer): no insert function implemented.
-// template <typename TStringSet>
-// void testStringSetInsert(TStringSet & /*Tag*/)
-// {
-// using namespace seqan;
-//
-// // Test of inserting an empty string.
-// TStringSet stringSet1;
-// resize(stringSet1, 1u);
-// TStringSet stringSet2;
-// insert(stringSet1, 0u, stringSet2);
-// SEQAN_ASSERT_EQ(length(stringSet1), 1u);
-//
-// resize(stringSet2, 3u);
-// stringSet2[0] = "ACGT";
-// insert(stringSet1, 0u, stringSet2);
-// SEQAN_ASSERT_EQ(length(stringSet1), 4u);
-// SEQAN_ASSERT_EQ(stringSet1[1], "ACGT");
-// }
-//
-// SEQAN_TYPED_TEST(StringSetTestCommon, Insert)
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
+ typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
+
+ TString str("AAAA");
+ TString str2("CCC");
+ TString str3("GGGG");
+ TNonConstStringSet nonConstStringSet;
+ appendValue(nonConstStringSet, str);
+ appendValue(nonConstStringSet, str2);
+ appendValue(nonConstStringSet, str3);
+
+ // Only non-const test for this scenario possible.
+ TStringSet stringSet(nonConstStringSet);
+ TString string = infix(stringSet, 0, 1); // Returns the first character not string!
+ // std::cerr << string << std::endl; -> "A"
+
+ // Only non-const test for this scenario possible.
+ // TString str2("TT");
+ // nonConstStringSet[0] = str2;
+
+ // Since the infix (should) point to the fist element it should point to "T"
+ // std::cerr << string << std::endl; -> "A"
+ // Therefore there is a different behaviour to normal strings.
+}
+
+// TODO(singer): No appendValue for string sets of packed strings
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfix(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfix(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfix(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfix(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfix(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfix(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+
+// TODO(singer)
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfix(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue,typename TStringSetSpec>
+void testStringSetInfix(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, Infix)
+{
+ CountingChar::clear();
+
+ typename TestFixture::TStringSet strSet;
+ testStringSetInfix(strSet);
+
+ typename TestFixture::TStringSet const constStrSet;
+ testStringSetInfix(constStrSet);
+
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
+}
+
+// TODO (singer): define behaviour and adjust test.
+// Infix() compiles and does what it is supposed to do?!
+// However, it is not very intuitive. For details see comments below.
+// There is a need to improve the documentation of this!
+// Test of infixWithLength()
+template <typename TStringSet>
+void testStringSetInfixWithLength(TStringSet & /*Tag*/)
+{
+using namespace seqan;
+
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
+ typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
+
+ TString str("AAAA");
+ TString str2("CCC");
+ TString str3("GGGG");
+ TNonConstStringSet nonConstStringSet;
+ appendValue(nonConstStringSet, str);
+ appendValue(nonConstStringSet, str2);
+ appendValue(nonConstStringSet, str3);
+
+ // Only non-const test for this scenario possible.
+ TStringSet stringSet(nonConstStringSet);
+ TString string = infixWithLength(stringSet, 0, 1); // Returns the first character not string!
+ // std::cerr << string << std::endl; -> "A"
+
+ // Only non-const test for this scenario possible.
+ // TString str2("TT");
+ // nonConstStringSet[0] = str2;
+
+ // Since the infix (should) point to the fist element it should point to "T"
+ // std::cerr << string << std::endl; -> "A"
+ // Therefore there is a different behaviour to normal strings.
+}
+// TODO(singer): No appendValue for string sets of packed strings
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfixWithLength(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfixWithLength(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfixWithLength(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfixWithLength(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfixWithLength(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfixWithLength(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+
+// TODO(singer)
+template <typename TValue, typename TStringSetSpec>
+void testStringSetInfixWithLength(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue,typename TStringSetSpec>
+void testStringSetInfixWithLength(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, InfixWithLength)
+{
+ CountingChar::clear();
+
+ typename TestFixture::TStringSet strSet;
+ testStringSetInfixWithLength(strSet);
+
+ typename TestFixture::TStringSet const constStrSet;
+ testStringSetInfixWithLength(constStrSet);
+
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
+}
+
+// Test of insert().
+// TODO (singer): no insert function implemented.
+// template <typename TStringSet>
+// void testStringSetInsert(TStringSet & /*Tag*/)
+// {
+// using namespace seqan;
+//
+// // Test of inserting an empty string.
+// TStringSet stringSet1;
+// resize(stringSet1, 1u);
+// TStringSet stringSet2;
+// insert(stringSet1, 0u, stringSet2);
+// SEQAN_ASSERT_EQ(length(stringSet1), 1u);
+//
+// resize(stringSet2, 3u);
+// stringSet2[0] = "ACGT";
+// insert(stringSet1, 0u, stringSet2);
+// SEQAN_ASSERT_EQ(length(stringSet1), 4u);
+// SEQAN_ASSERT_EQ(stringSet1[1], "ACGT");
+// }
+//
+// SEQAN_TYPED_TEST(StringSetTestCommon, Insert)
// {
// CountingChar::clear();
//
@@ -1610,7 +1459,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, GetValueById)
// typename TestFixture::TStringSet const constStrSet;
// testStringSetInsert(constStrSet);
//
-// testConstructDeconstruct(strSet);
+// testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
// }
//
// Test of insertValue().
@@ -1641,7 +1490,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, GetValueById)
// typename TestFixture::TStringSet const constStrSet;
// testStringSetInsertValue(constStrSet);
//
-// testConstructDeconstruct(strSet);
+// testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
// }
// Test of iter().
@@ -1680,7 +1529,7 @@ void testStringSetIter(TStringSet & /*Tag*/)
TIterator iterator = iter(stringSet, 0);
TStandardIterator standardIterator = iter(stringSet, 0);
TRootedIterator rootedIterator = iter(stringSet, 0);
- SEQAN_ASSERT(TString(getValue(iterator)) == "AAAA");
+ SEQAN_ASSERT_EQ(getValue(iterator), "AAAA");
SEQAN_ASSERT(getValue(iterator) == getValue(stringSet, 0));
SEQAN_ASSERT(getValue(standardIterator) == getValue(stringSet, 0));
SEQAN_ASSERT(getValue(rootedIterator) == getValue(stringSet, 0));
@@ -1701,7 +1550,7 @@ void testStringSetIter(TStringSet & /*Tag*/)
TIterator iterator = iter(stringSet, 3);
TStandardIterator standardIterator = iter(stringSet, 3);
TRootedIterator rootedIterator = iter(stringSet, 3);
- SEQAN_ASSERT(TString(getValue(iterator)) == "TTTT");
+ SEQAN_ASSERT_EQ(getValue(iterator), "TTTT");
SEQAN_ASSERT(getValue(iterator) == getValue(stringSet, 3));
SEQAN_ASSERT(getValue(standardIterator) == getValue(stringSet, 3));
SEQAN_ASSERT(getValue(rootedIterator) == getValue(stringSet, 3));
@@ -1709,18 +1558,15 @@ void testStringSetIter(TStringSet & /*Tag*/)
}
// TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetIter(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetIter(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetIter(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetIter(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetIter(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetIter(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetIter(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetIter(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-// this should work, but doesnt
-template <typename TSpec>
-void testStringSetIter(StringSet<String<short, Packed<TSpec> >, Owner<ConcatDirect<> > > & /*Tag*/) {}
SEQAN_TYPED_TEST(StringSetTestCommon, Iter)
{
@@ -1732,7 +1578,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Iter)
typename TestFixture::TStringSet const constStrSet;
testStringSetIter(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
// Test of length().
@@ -1741,7 +1587,7 @@ void testStringSetLength(TStringSet & /*Tag*/)
{
using namespace seqan;
typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
// Test on an empty string.
{
@@ -1768,107 +1614,107 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Length)
typename TestFixture::TStringSet const constStrSet;
testStringSetLength(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
-// // Test of moveValue().
-// template <typename TStringSet>
-// void testStringSetMoveValue(TStringSet & /*Tag*/)
-// {
-// using namespace seqan;
-//
-// TStringSet stringSet;
-//
-// resize(stringSet, 2u);
-// moveValue(stringSet, 1, "ACGT");
-// SEQAN_ASSERT_EQ(CharString(stringSet[1]), "ACGT");
-// }
-//
-// // TODO(singer): No moveValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetMoveValue(StringSet<String<TValue, Alloc<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetMoveValue(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetMoveValue(StringSet<String<TValue, Block<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetMoveValue(StringSet<String<TValue, Packed<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetMoveValue(StringSet<String<TValue, Array<100> >, Owner<TStringSetSpec> > & /*Tag*/) {}
-//
-// // TODO(singer): Seg fault
-// template <typename TValue, typename TStringSpec, typename TStringSetSpec>
-// void testStringSetMoveValue(StringSet<String<TValue, TStringSpec>, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetMoveValue(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetMoveValue(StringSet<String<TValue, External<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
-//
-// SEQAN_TYPED_TEST(StringSetTestCommon, MoveValue)
-// {
-// // TODO(singer); Simply not working at all!
-// // CountingChar::clear();
-// //
-// // typename TestFixture::TStringSet strSet;
-// // testStringSetMoveValue(strSet);
-// //
-// // testConstructDeconstruct(strSet);
-// }
+// Test of moveValue().
+template <typename TStringSet>
+void testStringSetMoveValue(TStringSet & /*Tag*/)
+{
+ using namespace seqan;
-// // TODO (singer): see infix.
-// // Test of prefix().
-// template <typename TStringSet>
-// void testStringSetPrefix(TStringSet & /*Tag*/)
-// {
-// using namespace seqan;
-// typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
-//
-// TString str("ACGTACGT");
-// TString str2("GTACGT");
-// TString str3("TACGT");
-// TNonConstStringSet nonConstStringSet;
-// appendValue(nonConstStringSet, str);
-// appendValue(nonConstStringSet, str2);
-// appendValue(nonConstStringSet, str3);
-// TStringSet stringSet(nonConstStringSet);
-// TString pref = prefix(stringSet, 3);
-// TString str4("ACG");
-// SEQAN_ASSERT_EQ(pref, str4);
-// }
-//
-// // TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-//
-// // TODO(singer)
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetPrefix(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
-//
-// SEQAN_TYPED_TEST(StringSetTestCommon, Prefix)
-// {
+ TStringSet stringSet;
+
+ resize(stringSet, 2u);
+ moveValue(stringSet, 1, "ACGT");
+ SEQAN_ASSERT_EQ(stringSet[1], "ACGT");
+}
+
+// TODO(singer): No moveValue for string sets of packed strings
+template <typename TValue, typename TStringSetSpec>
+void testStringSetMoveValue(StringSet<String<TValue, Alloc<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetMoveValue(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetMoveValue(StringSet<String<TValue, Block<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetMoveValue(StringSet<String<TValue, Packed<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetMoveValue(StringSet<String<TValue, Array<100> >, Owner<TStringSetSpec> > & /*Tag*/) {}
+
+// TODO(singer): Seg fault
+template <typename TValue, typename TStringSpec, typename TStringSetSpec>
+void testStringSetMoveValue(StringSet<String<TValue, TStringSpec>, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetMoveValue(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetMoveValue(StringSet<String<TValue, External<> >, Owner<TStringSetSpec> > & /*Tag*/) {}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, MoveValue)
+{
+ // TODO(singer); Simply not working at all!
// CountingChar::clear();
-//
+//
// typename TestFixture::TStringSet strSet;
-// testStringSetPrefix(strSet);
-//
-// typename TestFixture::TStringSet const constStrSet;
-// testStringSetPrefix(constStrSet);
-//
-// // testConstructDeconstruct(strSet);
-// }
+// testStringSetMoveValue(strSet);
+//
+// testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
+}
+
+// TODO (singer): see infix.
+// Test of prefix().
+template <typename TStringSet>
+void testStringSetPrefix(TStringSet & /*Tag*/)
+{
+ using namespace seqan;
+ typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
+
+ TString str("ACGTACGT");
+ TString str2("GTACGT");
+ TString str3("TACGT");
+ TNonConstStringSet nonConstStringSet;
+ appendValue(nonConstStringSet, str);
+ appendValue(nonConstStringSet, str2);
+ appendValue(nonConstStringSet, str3);
+ TStringSet stringSet(nonConstStringSet);
+ TString pref = prefix(stringSet, 3);
+ TString str4("ACG");
+ SEQAN_ASSERT_EQ(pref, str4);
+}
+
+// TODO(singer): No appendValue for string sets of packed strings
+template <typename TValue, typename TStringSetSpec>
+void testStringSetPrefix(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetPrefix(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetPrefix(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetPrefix(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetPrefix(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetPrefix(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+
+// TODO(singer)
+template <typename TValue, typename TStringSetSpec>
+void testStringSetPrefix(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetPrefix(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, Prefix)
+{
+ CountingChar::clear();
+
+ typename TestFixture::TStringSet strSet;
+ testStringSetPrefix(strSet);
+
+ typename TestFixture::TStringSet const constStrSet;
+ testStringSetPrefix(constStrSet);
+
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
+}
// TODO (singer); replace is not defined for string sets.
//// Test of replace().
@@ -1920,7 +1766,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Length)
// typename TestFixture::TStringSet strSet;
// testStringSetReplace(strSet);
//
-// testConstructDeconstruct(strSet);
+// testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
// }
// Test of resize().
@@ -1940,8 +1786,8 @@ void testStringSetResize(TStringSet & /*Tag*/)
SEQAN_ASSERT_EQ(length(stringSet), 10u);
// TODO (singer): resize should initialize newly allocated memory,
// which it does not at the moment!
- SEQAN_ASSERT(stringSet[0] == TString());
- SEQAN_ASSERT(stringSet[9] == TString());
+ SEQAN_ASSERT_EQ(stringSet[0], TString());
+ SEQAN_ASSERT_EQ(stringSet[9], TString());
resize(stringSet, 0u);
SEQAN_ASSERT_EQ(length(stringSet), 0u);
@@ -1953,14 +1799,14 @@ void testStringSetResize(TStringSet & /*Tag*/)
// SEQAN_ASSERT_EQ(stringSet[9], string);
}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetResize(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetResize(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetResize(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetResize(StringSet<String<TValue, Packed<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetResize(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetResize(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetResize(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetResize(StringSet<String<TValue, Packed<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
template <typename TValue, typename TStringSpec, typename TStringSetSpec>
void testStringSetResize(StringSet<String<TValue, TStringSpec>, Dependent<TStringSetSpec> > & /*Tag*/) {}
@@ -1971,64 +1817,64 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Resize)
typename TestFixture::TStringSet strSet;
testStringSetResize(strSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
-// // TODO (singer): see infix.
-// // Test of suffix().
-// template <typename TStringSet>
-// void testStringSetSuffix(TStringSet & /*Tag*/)
-// {
-// using namespace seqan;
-// typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
-//
-// TString str("ACGTACGT");
-// TString str2("GTACGT");
-// TString str3("TACGT");
-// TNonConstStringSet nonConstStringSet;
-// appendValue(nonConstStringSet, str);
-// appendValue(nonConstStringSet, str2);
-// appendValue(nonConstStringSet, str3);
-// TStringSet stringSet(nonConstStringSet);
-// TString pref = suffix(stringSet, 5);
-// TString str4("CGT");
-// SEQAN_ASSERT_EQ(pref, str4);
-// }
-//
-// // TODO(singer): No appendValue for string sets of packed strings
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
-//
-//
-// // TODO(singer)
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetSuffix(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
-//
-// SEQAN_TYPED_TEST(StringSetTestCommon, Suffix)
-// {
-// CountingChar::clear();
-//
-// typename TestFixture::TStringSet strSet;
-// testStringSetSuffix(strSet);
-//
-// typename TestFixture::TStringSet const constStrSet;
-// testStringSetSuffix(constStrSet);
-//
-// // testConstructDeconstruct(strSet);
-// }
+// TODO (singer): see infix.
+// Test of suffix().
+template <typename TStringSet>
+void testStringSetSuffix(TStringSet & /*Tag*/)
+{
+ using namespace seqan;
+ typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
+
+ TString str("ACGTACGT");
+ TString str2("GTACGT");
+ TString str3("TACGT");
+ TNonConstStringSet nonConstStringSet;
+ appendValue(nonConstStringSet, str);
+ appendValue(nonConstStringSet, str2);
+ appendValue(nonConstStringSet, str3);
+ TStringSet stringSet(nonConstStringSet);
+ TString pref = suffix(stringSet, 5);
+ TString str4("CGT");
+ SEQAN_ASSERT_EQ(pref, str4);
+}
+
+// TODO(singer): No appendValue for string sets of packed strings
+template <typename TValue, typename TStringSetSpec>
+void testStringSetSuffix(StringSet<String<TValue, MMap<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetSuffix(StringSet<String<TValue, MMap<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetSuffix(StringSet<String<TValue, Packed<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetSuffix(StringSet<String<TValue, Packed<> >, TStringSetSpec> const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetSuffix(StringSet<String<TValue, Array<100> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetSuffix(StringSet<String<TValue, Array<100> >, TStringSetSpec> const & /*Tag*/) {}
+
+
+// TODO(singer)
+template <typename TValue, typename TStringSetSpec>
+void testStringSetSuffix(StringSet<String<TValue, External<> >, TStringSetSpec> & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetSuffix(StringSet<String<TValue, External<> >, TStringSetSpec> const & /*Tag*/) {}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, Suffix)
+{
+ CountingChar::clear();
+
+ typename TestFixture::TStringSet strSet;
+ testStringSetSuffix(strSet);
+
+ typename TestFixture::TStringSet const constStrSet;
+ testStringSetSuffix(constStrSet);
+
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
+}
// TODO (singer): swap is not working because a constructor string set (StringSet(StringSet, Move)) is missing.
@@ -2084,7 +1930,7 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Resize)
// typename TestFixture::TStringSet const constStrSet;
// testStringSetSwap(constStrSet);
//
-// testConstructDeconstruct(strSet);
+// testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
// }
// Test of value().
@@ -2106,12 +1952,12 @@ void testStringSetValue(TStringSet & /*Tag*/)
appendValue(stringSet, str2);
appendValue(stringSet, str3);
TString & value_ = value(stringSet, 0);
- SEQAN_ASSERT(value_ == str1);
+ SEQAN_ASSERT_EQ(value_, str1);
value_ = "GGGG";
TString str4("GGGG");
- SEQAN_ASSERT(value_ == str4);
- SEQAN_ASSERT(stringSet[0] == str4);
+ SEQAN_ASSERT_EQ(value_, str4);
+ SEQAN_ASSERT_EQ(stringSet[0], str4);
}
// Test of value().
@@ -2136,12 +1982,12 @@ void testStringSetValue(TStringSet const & /*Tag*/)
TStringSet stringSet(nonConstStringSet);
TString value_ = value(stringSet, 0);
- SEQAN_ASSERT(value_ == str1);
+ SEQAN_ASSERT_EQ(value_, str1);
value_ = "GGGG";
TString str4("GGGG");
- SEQAN_ASSERT(value_ == str4);
- SEQAN_ASSERT(stringSet[0] == str1);
+ SEQAN_ASSERT_EQ(value_, str4);
+ SEQAN_ASSERT_EQ(stringSet[0], str1);
}
// TODO(singer): Seg. fault
template <typename TValue>
@@ -2179,103 +2025,102 @@ SEQAN_TYPED_TEST(StringSetTestCommon, Value)
typename TestFixture::TStringSet const constStrSet;
testStringSetValue(constStrSet);
-// testConstructDeconstruct(strSet);
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
}
-// // Test of valueById().
-// template <typename TStringSet>
-// void testStringSetValueById(TStringSet & /*Tag*/)
-// {
-// using namespace seqan;
-//
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
-//
-// // In contrast to getValue(), value() does not return a copy but a reference.
-// // We test this using the variable value_.
-// TString str1("ACAC");
-// TString str2("AAAA");
-// TString str3("TTTT");
-// TStringSet stringSet;
-// appendValue(stringSet, str1);
-// appendValue(stringSet, str2);
-// appendValue(stringSet, str3);
-// TString & value_ = valueById(stringSet, 0);
-// SEQAN_ASSERT_EQ(value_, str1);
-//
-// value_ = "GGGG";
-// TString str4("GGGG");
-// SEQAN_ASSERT_EQ(value_, str4);
-// SEQAN_ASSERT_EQ(stringSet[0], str4);
-// }
-//
-// // Test of valueById().
-// template <typename TStringSet>
-// void testStringSetValueById(TStringSet const & /*Tag*/)
-// {
-// using namespace seqan;
-//
-// typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
-// typedef typename TestStringSetValue_<TStringSet>::Type TString;
-//
-// // In contrast to getValue(), value() does not return a copy but a reference.
-// // We test this using the variable value_.
-//
-// TString str1("ACAC");
-// TString str2("AAAA");
-// TString str3("TTTT");
-// TNonConstStringSet nonConstStringSet;
-// appendValue(nonConstStringSet, str1);
-// appendValue(nonConstStringSet, str2);
-// appendValue(nonConstStringSet, str3);
-//
-// TStringSet stringSet(nonConstStringSet);
-// TString value_ = valueById(stringSet, 0);
-// SEQAN_ASSERT_EQ(value_, str1);
-//
-// value_ = "GGGG";
-// TString str4("GGGG");
-// SEQAN_ASSERT_EQ(value_, str4);
-// SEQAN_ASSERT_EQ(stringSet[0], str4);
-// }
-//
-// // TODO(singer): Seg. fault
-// template <typename TValue>
-// void testStringSetValueById(StringSet<String<TValue, MMap<> >, Owner<> > & /*Tag*/) {}
-// template <typename TValue>
-// void testStringSetValueById(StringSet<String<TValue, MMap<> >, Owner<> > const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetValueById(StringSet<String<TValue, MMap<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetValueById(StringSet<String<TValue, MMap<> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
-//
-//
-// // TODO(singer)
-// template <typename TValue>
-// void testStringSetValueById(StringSet<String<TValue, External<> >, Owner<> > & /*Tag*/) {}
-// template <typename TValue>
-// void testStringSetValueById(StringSet<String<TValue, External<> >, Owner<> > const & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetValueById(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
-// template <typename TValue, typename TStringSetSpec>
-// void testStringSetValueById(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
-//
-// template <typename TValue, typename TStringSpec>
-// void testStringSetValueById(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > & /*Tag*/) {}
-// template <typename TValue, typename TStringSpec>
-// void testStringSetValueById(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > const & /*Tag*/) {}
-//
-// SEQAN_TYPED_TEST(StringSetTestCommon, ValueById)
-// {
-// CountingChar::clear();
-//
-// typename TestFixture::TStringSet strSet;
-// testStringSetValueById(strSet);
-//
-// typename TestFixture::TStringSet const constStrSet;
-// testStringSetValueById(constStrSet);
-//
-// //// testConstructDeconstruct(strSet);
-// }
+// Test of valueById().
+template <typename TStringSet>
+void testStringSetValueById(TStringSet & /*Tag*/)
+{
+ using namespace seqan;
+
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
+
+ // In contrast to getValue(), value() does not return a copy but a reference.
+ // We test this using the variable value_.
+ TString str1("ACAC");
+ TString str2("AAAA");
+ TString str3("TTTT");
+ TStringSet stringSet;
+ appendValue(stringSet, str1);
+ appendValue(stringSet, str2);
+ appendValue(stringSet, str3);
+ TString & value_ = valueById(stringSet, 0);
+ SEQAN_ASSERT_EQ(value_, str1);
+
+ value_ = "GGGG";
+ TString str4("GGGG");
+ SEQAN_ASSERT_EQ(value_, str4);
+ SEQAN_ASSERT_EQ(stringSet[0], str4);
+}
+
+// Test of valueById().
+template <typename TStringSet>
+void testStringSetValueById(TStringSet const & /*Tag*/)
+{
+ using namespace seqan;
+
+ typedef typename RemoveConst<TStringSet>::Type TNonConstStringSet;
+ typedef typename TestStringSetValue_<TStringSet>::Type TString;
+ // In contrast to getValue(), value() does not return a copy but a reference.
+ // We test this using the variable value_.
+
+ TString str1("ACAC");
+ TString str2("AAAA");
+ TString str3("TTTT");
+ TNonConstStringSet nonConstStringSet;
+ appendValue(nonConstStringSet, str1);
+ appendValue(nonConstStringSet, str2);
+ appendValue(nonConstStringSet, str3);
+
+ TStringSet stringSet(nonConstStringSet);
+ TString value_ = valueById(stringSet, 0);
+ SEQAN_ASSERT_EQ(value_, str1);
+
+ value_ = "GGGG";
+ TString str4("GGGG");
+ SEQAN_ASSERT_EQ(value_, str4);
+ SEQAN_ASSERT_EQ(stringSet[0], str4);
+}
+
+// TODO(singer): Seg. fault
+template <typename TValue>
+void testStringSetValueById(StringSet<String<TValue, MMap<> >, Owner<> > & /*Tag*/) {}
+template <typename TValue>
+void testStringSetValueById(StringSet<String<TValue, MMap<> >, Owner<> > const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetValueById(StringSet<String<TValue, MMap<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetValueById(StringSet<String<TValue, MMap<> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
+
+
+// TODO(singer)
+template <typename TValue>
+void testStringSetValueById(StringSet<String<TValue, External<> >, Owner<> > & /*Tag*/) {}
+template <typename TValue>
+void testStringSetValueById(StringSet<String<TValue, External<> >, Owner<> > const & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetValueById(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > & /*Tag*/) {}
+template <typename TValue, typename TStringSetSpec>
+void testStringSetValueById(StringSet<String<TValue, External<> >, Dependent<TStringSetSpec> > const & /*Tag*/) {}
+
+template <typename TValue, typename TStringSpec>
+void testStringSetValueById(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > & /*Tag*/) {}
+template <typename TValue, typename TStringSpec>
+void testStringSetValueById(StringSet<String<TValue, TStringSpec>, Owner<ConcatDirect<> > > const & /*Tag*/) {}
+
+SEQAN_TYPED_TEST(StringSetTestCommon, ValueById)
+{
+ CountingChar::clear();
+
+ typename TestFixture::TStringSet strSet;
+ testStringSetValueById(strSet);
+
+ typename TestFixture::TStringSet const constStrSet;
+ testStringSetValueById(constStrSet);
+
+ testConstructDeconstruct(typename Value<typename Value<typename TestFixture::TStringSet>::Type>::Type());
+}
#endif // TESTS_SEQUENCE_TEST_STRINGSET_H_
diff --git a/tests/sequence/test_stringset_v2.cpp b/tests/sequence/test_stringset_v2.cpp
deleted file mode 100644
index 1296c66..0000000
--- a/tests/sequence/test_stringset_v2.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// ==========================================================================
-// SeqAn - The Library for Sequence Analysis
-// ==========================================================================
-// Copyright (c) 2006-2015, Knut Reinert, FU Berlin
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-// * Neither the name of Knut Reinert or the FU Berlin nor the names of
-// its contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-// DAMAGE.
-//
-// ==========================================================================
-// Author: Jochen Singer <jochen.singer at fu-berlin.de>
-// Author: Hannes Hauswedell <hannes.hauswedell at fu-berlin.de>
-// ==========================================================================
-// This file coordinates the calls of tests to ensure that the sequence
-// module fulfills the requirements.
-// ==========================================================================
-
-#include <seqan/basic.h>
-
-// lots of stuff is still not checked and not working
-#include "test_string_set.h"
-
-int main(int argc, char const ** argv) {
- seqan::TestSystem::init(argc, argv);
- return seqan::TestSystem::runAll();
-}
diff --git a/tests/store/example.gff b/tests/store/example.gff
index 86a9422..b4c9593 100644
--- a/tests/store/example.gff
+++ b/tests/store/example.gff
@@ -1,3 +1,3 @@
-ctg123 . mRNA 1300 9000 . + . ID=mrna0001;Name="sonichedgehog;hehe";transcript_id=001
+ctg123 . mRNA 1300 9000 . + . ID=mrna0001;Name="sonichedgehog;hehe"
ctg123 . exon 1300 1500 . + . ID=exon00001;Parent=mrna0001
ctg123 . exon 1050 1500 . + . ID=exon00002;Parent=mrna0001
diff --git a/util/cmake/CMakeFindJavaCommon.cmake b/util/cmake/CMakeFindJavaCommon.cmake
deleted file mode 100644
index 291d3c1..0000000
--- a/util/cmake/CMakeFindJavaCommon.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-#=============================================================================
-# Copyright 2013-2014 Kitware, Inc.
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-# License text for the above reference.)
-
-# Do not include this module directly from code outside CMake!
-set(_JAVA_HOME "")
-if(JAVA_HOME AND IS_DIRECTORY "${JAVA_HOME}")
- set(_JAVA_HOME "${JAVA_HOME}")
- set(_JAVA_HOME_EXPLICIT 1)
-else()
- set(_ENV_JAVA_HOME "")
- if(DEFINED ENV{JAVA_HOME})
- file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _ENV_JAVA_HOME)
- endif()
- if(_ENV_JAVA_HOME AND IS_DIRECTORY "${_ENV_JAVA_HOME}")
- set(_JAVA_HOME "${_ENV_JAVA_HOME}")
- set(_JAVA_HOME_EXPLICIT 1)
- else()
- set(_CMD_JAVA_HOME "")
- if(APPLE AND EXISTS /usr/libexec/java_home)
- execute_process(COMMAND /usr/libexec/java_home
- OUTPUT_VARIABLE _CMD_JAVA_HOME OUTPUT_STRIP_TRAILING_WHITESPACE)
- endif()
- if(_CMD_JAVA_HOME AND IS_DIRECTORY "${_CMD_JAVA_HOME}")
- set(_JAVA_HOME "${_CMD_JAVA_HOME}")
- set(_JAVA_HOME_EXPLICIT 0)
- endif()
- unset(_CMD_JAVA_HOME)
- endif()
- unset(_ENV_JAVA_HOME)
-endif()
diff --git a/util/cmake/FindJava.cmake b/util/cmake/FindJava.cmake
deleted file mode 100644
index ae5a69c..0000000
--- a/util/cmake/FindJava.cmake
+++ /dev/null
@@ -1,228 +0,0 @@
-#.rst:
-# FindJava
-# --------
-#
-# Find Java
-#
-# This module finds if Java is installed and determines where the
-# include files and libraries are. The caller may set variable JAVA_HOME
-# to specify a Java installation prefix explicitly.
-#
-# This module sets the following result variables:
-#
-# ::
-#
-# Java_JAVA_EXECUTABLE = the full path to the Java runtime
-# Java_JAVAC_EXECUTABLE = the full path to the Java compiler
-# Java_JAVAH_EXECUTABLE = the full path to the Java header generator
-# Java_JAVADOC_EXECUTABLE = the full path to the Java documention generator
-# Java_JAR_EXECUTABLE = the full path to the Java archiver
-# Java_VERSION_STRING = Version of java found, eg. 1.6.0_12
-# Java_VERSION_MAJOR = The major version of the package found.
-# Java_VERSION_MINOR = The minor version of the package found.
-# Java_VERSION_PATCH = The patch version of the package found.
-# Java_VERSION_TWEAK = The tweak version of the package found (after '_')
-# Java_VERSION = This is set to: $major.$minor.$patch(.$tweak)
-#
-#
-#
-# The minimum required version of Java can be specified using the
-# standard CMake syntax, e.g. find_package(Java 1.5)
-#
-# NOTE: ${Java_VERSION} and ${Java_VERSION_STRING} are not guaranteed to
-# be identical. For example some java version may return:
-# Java_VERSION_STRING = 1.5.0_17 and Java_VERSION = 1.5.0.17
-#
-# another example is the Java OEM, with: Java_VERSION_STRING = 1.6.0-oem
-# and Java_VERSION = 1.6.0
-#
-# For these components the following variables are set:
-#
-# ::
-#
-# Java_FOUND - TRUE if all components are found.
-# Java_INCLUDE_DIRS - Full paths to all include dirs.
-# Java_LIBRARIES - Full paths to all libraries.
-# Java_<component>_FOUND - TRUE if <component> is found.
-#
-#
-#
-# Example Usages:
-#
-# ::
-#
-# find_package(Java)
-# find_package(Java COMPONENTS Runtime)
-# find_package(Java COMPONENTS Development)
-
-#=============================================================================
-# Copyright 2002-2009 Kitware, Inc.
-# Copyright 2009-2011 Mathieu Malaterre <mathieu.malaterre at gmail.com>
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-# License text for the above reference.)
-
-include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
-
-# The HINTS option should only be used for values computed from the system.
-set(_JAVA_HINTS)
-if(_JAVA_HOME)
- list(APPEND _JAVA_HINTS ${_JAVA_HOME}/bin)
-endif()
-list(APPEND _JAVA_HINTS
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\2.0;JavaHome]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/bin"
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/bin"
- )
-# Hard-coded guesses should still go in PATHS. This ensures that the user
-# environment can always override hard guesses.
-set(_JAVA_PATHS
- /usr/lib/java/bin
- /usr/share/java/bin
- /usr/local/java/bin
- /usr/local/java/share/bin
- /usr/java/j2sdk1.4.2_04
- /usr/lib/j2sdk1.4-sun/bin
- /usr/java/j2sdk1.4.2_09/bin
- /usr/lib/j2sdk1.5-sun/bin
- /opt/sun-jdk-1.5.0.04/bin
- /usr/local/jdk-1.7.0/bin
- /usr/local/jdk-1.6.0/bin
- )
-find_program(Java_JAVA_EXECUTABLE
- NAMES java
- HINTS ${_JAVA_HINTS}
- PATHS ${_JAVA_PATHS}
-)
-
-if(Java_JAVA_EXECUTABLE)
- execute_process(COMMAND ${Java_JAVA_EXECUTABLE} -version
- RESULT_VARIABLE res
- OUTPUT_VARIABLE var
- ERROR_VARIABLE var # sun-java output to stderr
- OUTPUT_STRIP_TRAILING_WHITESPACE
- ERROR_STRIP_TRAILING_WHITESPACE)
- if( res )
- if(var MATCHES "No Java runtime present, requesting install")
- set_property(CACHE Java_JAVA_EXECUTABLE
- PROPERTY VALUE "Java_JAVA_EXECUTABLE-NOTFOUND")
- elseif(${Java_FIND_REQUIRED})
- message( FATAL_ERROR "Error executing java -version" )
- else()
- message( STATUS "Warning, could not run java -version")
- endif()
- else()
- # extract major/minor version and patch level from "java -version" output
- # Tested on linux using
- # 1. Sun / Sun OEM
- # 2. OpenJDK 1.6
- # 3. GCJ 1.5
- # 4. Kaffe 1.4.2
- # 5. OpenJDK 1.7.x on OpenBSD
- if(var MATCHES "java version \"([0-9]+\\.[0-9]+\\.[0-9_.]+.*)\"")
- # This is most likely Sun / OpenJDK, or maybe GCJ-java compat layer
- set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
- elseif(var MATCHES "java full version \"kaffe-([0-9]+\\.[0-9]+\\.[0-9_]+)\"")
- # Kaffe style
- set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
- elseif(var MATCHES "openjdk version \"([0-9]+\\.[0-9]+\\.[0-9_]+.*)\"")
- # OpenJDK ver 1.7.x on OpenBSD
- set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
- else()
- if(NOT Java_FIND_QUIETLY)
- message(WARNING "regex not supported: ${var}. Please report")
- endif()
- endif()
- string( REGEX REPLACE "([0-9]+).*" "\\1" Java_VERSION_MAJOR "${Java_VERSION_STRING}" )
- string( REGEX REPLACE "[0-9]+\\.([0-9]+).*" "\\1" Java_VERSION_MINOR "${Java_VERSION_STRING}" )
- string( REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" Java_VERSION_PATCH "${Java_VERSION_STRING}" )
- # warning tweak version can be empty:
- string( REGEX REPLACE "[0-9]+\\.[0-9]+\\.[0-9]+[_\\.]?([0-9]*).*$" "\\1" Java_VERSION_TWEAK "${Java_VERSION_STRING}" )
- if( Java_VERSION_TWEAK STREQUAL "" ) # check case where tweak is not defined
- set(Java_VERSION ${Java_VERSION_MAJOR}.${Java_VERSION_MINOR}.${Java_VERSION_PATCH})
- else()
- set(Java_VERSION ${Java_VERSION_MAJOR}.${Java_VERSION_MINOR}.${Java_VERSION_PATCH}.${Java_VERSION_TWEAK})
- endif()
- endif()
-
-endif()
-
-
-find_program(Java_JAR_EXECUTABLE
- NAMES jar
- HINTS ${_JAVA_HINTS}
- PATHS ${_JAVA_PATHS}
-)
-
-find_program(Java_JAVAC_EXECUTABLE
- NAMES javac
- HINTS ${_JAVA_HINTS}
- PATHS ${_JAVA_PATHS}
-)
-
-find_program(Java_JAVAH_EXECUTABLE
- NAMES javah
- HINTS ${_JAVA_HINTS}
- PATHS ${_JAVA_PATHS}
-)
-
-find_program(Java_JAVADOC_EXECUTABLE
- NAMES javadoc
- HINTS ${_JAVA_HINTS}
- PATHS ${_JAVA_PATHS}
-)
-
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
-if(Java_FIND_COMPONENTS)
- foreach(component ${Java_FIND_COMPONENTS})
- # User just want to execute some Java byte-compiled
- if(component STREQUAL "Runtime")
- find_package_handle_standard_args(Java
- REQUIRED_VARS Java_JAVA_EXECUTABLE
- VERSION_VAR Java_VERSION
- )
- elseif(component STREQUAL "Development")
- find_package_handle_standard_args(Java
- REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE
- Java_JAVAH_EXECUTABLE Java_JAVADOC_EXECUTABLE
- VERSION_VAR Java_VERSION
- )
- else()
- message(FATAL_ERROR "Comp: ${component} is not handled")
- endif()
- set(Java_${component}_FOUND TRUE)
- endforeach()
-else()
- # Check for everything
- find_package_handle_standard_args(Java
- REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE
- Java_JAVAH_EXECUTABLE Java_JAVADOC_EXECUTABLE
- VERSION_VAR Java_VERSION
- )
-endif()
-
-
-mark_as_advanced(
- Java_JAVA_EXECUTABLE
- Java_JAR_EXECUTABLE
- Java_JAVAC_EXECUTABLE
- Java_JAVAH_EXECUTABLE
- Java_JAVADOC_EXECUTABLE
- )
-
-# LEGACY
-set(JAVA_RUNTIME ${Java_JAVA_EXECUTABLE})
-set(JAVA_ARCHIVE ${Java_JAR_EXECUTABLE})
-set(JAVA_COMPILE ${Java_JAVAC_EXECUTABLE})
diff --git a/util/cmake/FindOpenMP.cmake b/util/cmake/FindOpenMP.cmake
index 3c0e8e2..729adf8 100644
--- a/util/cmake/FindOpenMP.cmake
+++ b/util/cmake/FindOpenMP.cmake
@@ -35,19 +35,12 @@ if (_OPENMP_NOT_FOUND)
return ()
endif ()
-# Clang-3.7.0 deactivated because of compiler bugs triggered by SeqAn
-if (COMPILER_IS_CLANG AND (_GCC_VERSION EQUAL 370))
- set(_OPENMP_NOT_FOUND TRUE)
- message (STATUS "OpenMP cannot be used becase Clang-3.7.0 has a bug. Please update your clang!")
- return ()
-endif ()
-
include(CheckCSourceCompiles)
include(CheckCXXSourceCompiles)
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
set(OpenMP_C_FLAG_CANDIDATES
- #Gnu & LLVM
+ #Gnu
"-fopenmp"
#Microsoft Visual Studio
"/openmp"
diff --git a/util/cmake/FindSeqAn.cmake b/util/cmake/FindSeqAn.cmake
index 5a6a184..f9cc0fd 100644
--- a/util/cmake/FindSeqAn.cmake
+++ b/util/cmake/FindSeqAn.cmake
@@ -201,7 +201,7 @@ endif ()
if (WIN32)
# Always set NOMINMAX such that <Windows.h> does not define min/max as
# macros.
- set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} -DNOMINMAX")
+ add_definitions (-DNOMINMAX)
endif (WIN32)
# Visual Studio Setup
@@ -214,17 +214,10 @@ if (MSVC)
# TODO(holtgrew): This rather belongs into the SeqAn build system and notso much into FindSeqAn.cmake.
# Force to always compile with W2.
- # Use the /W2 warning level for visual studio.
- SET(CMAKE_CXX_WARNING_LEVEL 2)
- if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
- STRING (REGEX REPLACE "/W[0-4]"
- "/W2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
- else (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
- set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} /W2")
- endif (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
+ add_definitions (/W2)
# Disable warnings about unsecure (although standard) functions.
- set (SEQAN_CXX_FLAGS "${SEQAN_CXX_FLAGS} /D_SCL_SECURE_NO_WARNINGS")
+ add_definitions (-D_SCL_SECURE_NO_WARNINGS)
endif (MSVC)
# ----------------------------------------------------------------------------
@@ -284,7 +277,6 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set (SEQAN_LIBRARIES ${SEQAN_LIBRARIES} rt pthread)
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
set (SEQAN_LIBRARIES ${SEQAN_LIBRARIES} pthread)
- set (SEQAN_DEFINITIONS ${SEQAN_DEFINITIONS} "-D_GLIBCXX_USE_C99=1")
endif ()
# libexecinfo -- implicit
diff --git a/util/cmake/SeqAnBuildSystem.cmake b/util/cmake/SeqAnBuildSystem.cmake
index 35477ba..627b677 100644
--- a/util/cmake/SeqAnBuildSystem.cmake
+++ b/util/cmake/SeqAnBuildSystem.cmake
@@ -152,9 +152,6 @@ macro (seqan_register_apps)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
endif ()
- # Enable global exception handler for all seqan apps.
- set (SEQAN_DEFINITIONS "${SEQAN_DEFINITIONS} -DSEQAN_GLOBAL_EXCEPTION_HANDLER")
-
# Get all direct entries of the current source directory into ENTRIES.
file (GLOB ENTRIES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
@@ -572,21 +569,18 @@ endmacro (_seqan_setup_demo_test CPP_FILE)
# Install all demo source files.
macro (seqan_install_demos_release)
- # Set flags for SeqAn. Use PARENT_SCOPE since it is called from within a function.
- set (SEQAN_FIND_ENABLE_TESTING 0 PARENT_SCOPE)
- set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DSEQAN_ENABLE_DEBUG=0" PARENT_SCOPE)
- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DSEQAN_ENABLE_DEBUG=0" PARENT_SCOPE)
- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSEQAN_ENABLE_DEBUG=1" PARENT_SCOPE)
+ # Set flags for SeqAn.
+ set (SEQAN_FIND_ENABLE_TESTING 0)
+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DSEQAN_ENABLE_DEBUG=0")
+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DSEQAN_ENABLE_DEBUG=0")
+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSEQAN_ENABLE_DEBUG=1")
# Get a list of all .cpp and .cu files in the current directory.
- file (GLOB_RECURSE ENTRIES
+ file (GLOB ENTRIES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/[!.]*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/[!.]*.cu)
- # Set global definitions set for demos.
- add_definitions (${SEQAN_DEFINITIONS})
-
# Get path to current source directory, relative from root. Will be used to install demos in.
file (RELATIVE_PATH INSTALL_DIR "${SEQAN_ROOT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
@@ -618,8 +612,7 @@ macro (seqan_build_demos_develop PREFIX)
seqan_setup_cuda_vars(ARCH sm_20 DEBUG_DEVICE DISABLE_WARNINGS)
# Add SeqAn flags to CXX and NVCC flags.
- # Set to PARENT_SCOPE since this macro is executed from within a function which declares it's own scope.
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS} ${CXX11_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" PARENT_SCOPE)
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SEQAN_CXX_FLAGS}")
# Add all demos with found flags in SeqAn.
foreach (ENTRY ${ENTRIES})
@@ -653,9 +646,6 @@ function (seqan_register_demos)
set (PREFIX "")
endif (${ARGC} GREATER 0)
- # Enable global exception handler for demos.
- set (SEQAN_DEFINITIONS "${SEQAN_DEFINITIONS} -DSEQAN_GLOBAL_EXCEPTION_HANDLER")
-
# Install demo source files when releasing and build demos when developing.
if ("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE")
seqan_install_demos_release ()
@@ -691,9 +681,6 @@ macro (seqan_register_tests)
string (REGEX REPLACE "-DNDEBUG" ""
CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
- # Add global exception handler
- set (SEQAN_DEFINITIONS "${SEQAN_DEFINITIONS} -DSEQAN_GLOBAL_EXCEPTION_HANDLER")
-
# Conditionally enable coverage mode by setting the appropriate flags.
if (MODEL STREQUAL "NightlyCoverage")
if (CMAKE_COMPILER_IS_GNUCXX OR COMPILER_IS_CLANG)
diff --git a/util/cmake/package.cmake b/util/cmake/package.cmake
index a3147b3..1194c3d 100644
--- a/util/cmake/package.cmake
+++ b/util/cmake/package.cmake
@@ -46,7 +46,7 @@ if (("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE") OR
("${SEQAN_BUILD_SYSTEM}" STREQUAL "SEQAN_RELEASE_APPS"))
include (SetCPackSystemName)
- # NOTE that you have to run "make dox" before running cpack. The reason
+ # NOTE that you have to run "make docs" before running cpack. The reason
# is that we cannot add dependencies to the install target at the moment.
# See: http://public.kitware.com/Bug/view.php?id=8438
diff --git a/util/makefile_project/src/main.cpp b/util/makefile_project/src/main.cpp
index 7f77b33..0764fb3 100644
--- a/util/makefile_project/src/main.cpp
+++ b/util/makefile_project/src/main.cpp
@@ -1,11 +1,12 @@
+#include <iostream>
+
#include <seqan/basic.h>
#include <seqan/sequence.h>
-#include <seqan/stream.h>
+#include <seqan/file.h>
using namespace seqan;
-int main()
-{
- std::cout << CharString("Hello SeqAn!") << std::endl;
+int main() {
+ std::cout << CharString("Hello SeqAn!") << std::endl;
return 0;
-}
+}
\ No newline at end of file
diff --git a/util/py_lib/seqan/auto_build.py b/util/py_lib/seqan/auto_build.py
index fb9b10f..9d2a893 100755
--- a/util/py_lib/seqan/auto_build.py
+++ b/util/py_lib/seqan/auto_build.py
@@ -261,7 +261,7 @@ class BuildStep(object):
popen = subprocess.Popen(cmake_args, cwd=build_dir, env=os.environ.copy())
out_data, err_data = popen.communicate()
if popen.returncode != 0:
- print('ERROR during make dox call.', file=sys.stderr)
+ print('ERROR during make docs call.', file=sys.stderr)
print(out_data, file=sys.stderr)
print(err_data, file=sys.stderr)
# Execute Make.
diff --git a/util/py_lib/seqan/dox/dox_parser.py b/util/py_lib/seqan/dox/dox_parser.py
index da93712..c4a5133 100644
--- a/util/py_lib/seqan/dox/dox_parser.py
+++ b/util/py_lib/seqan/dox/dox_parser.py
@@ -363,7 +363,7 @@ class ReturnState(ParamState):
class ThrowState(ParamState):
"""Handler used in *DocState for handling @throw clauses.
- Stores throw type in self.name (member variable inherited from
+ Stores return type in self.name (member variable inherited from
ParamState). Sorry for any confusion. The flag self.type_read
is used for storing whether the type has been read.
"""
@@ -382,17 +382,6 @@ class ThrowState(ParamState):
elif self.name or token.type not in dox_tokens.WHITESPACE:
self.name.append(token)
-class DataRaceState(GenericSimpleClauseState):
- """Handler used in *DocState for handling @datarace clauses.
-
- Inherits from GenericSimpleClauseState.
- """
-
- def __init__(self, parser, parent):
- GenericSimpleClauseState.__init__(self, parser, parent)
- self.entry_class = raw_doc.RawDataRace
- self.type_read = False
-
class SectionState(object):
"""Handler used in *DocState for handling @section clauses.
@@ -630,7 +619,6 @@ class GenericDocState(object):
'COMMAND_SEE' : SeeState(self.parser, self),
'COMMAND_RETURN' : ReturnState(self.parser, self),
'COMMAND_THROW' : ThrowState(self.parser, self),
- 'COMMAND_DATARACE' : DataRaceState(self.parser, self),
'COMMAND_PARAM' : ParamState(self.parser, self),
'COMMAND_TPARAM' : TParamState(self.parser, self),
'COMMAND_SECTION' : SectionState(self.parser, self),
@@ -679,8 +667,6 @@ class GenericDocState(object):
self.entry.addReturn(entry)
elif entry.getType() == 'throw':
self.entry.addThrow(entry)
- elif entry.getType() == 'datarace':
- self.entry.addDataRace(entry)
elif entry.getType() == 'extends':
self.entry.addExtends(entry)
elif entry.getType() == 'implements':
@@ -727,9 +713,9 @@ class FunctionDocState(GenericDocState):
'COMMAND_PARAM',
'COMMAND_SECTION', 'COMMAND_SUBSECTION',
'COMMAND_INCLUDE', 'COMMAND_SNIPPET', 'COMMAND_RETURN',
- 'COMMAND_THROW', 'COMMAND_HEADERFILE', 'COMMAND_DEPRECATED',
- 'COMMAND_NOTE', 'COMMAND_WARNING', 'COMMAND_AKA',
- 'COMMAND_INTERNAL', 'COMMAND_DATARACE'])
+ 'COMMAND_THROW', 'COMMAND_HEADERFILE', 'COMMAND_DEPRECATED',
+ 'COMMAND_NOTE', 'COMMAND_WARNING', 'COMMAND_AKA',
+ 'COMMAND_INTERNAL'])
class MacroDocState(GenericDocState):
@@ -743,7 +729,7 @@ class MacroDocState(GenericDocState):
'COMMAND_INCLUDE', 'COMMAND_SNIPPET', 'COMMAND_RETURN',
'COMMAND_THROW', 'COMMAND_HEADERFILE', 'COMMAND_DEPRECATED',
'COMMAND_NOTE', 'COMMAND_WARNING', 'COMMAND_AKA',
- 'COMMAND_INTERNAL', 'COMMAND_DATARACE'])
+ 'COMMAND_INTERNAL'])
class MetafunctionDocState(GenericDocState):
diff --git a/util/py_lib/seqan/dox/dox_tokens.py b/util/py_lib/seqan/dox/dox_tokens.py
index 335c030..e7660b7 100644
--- a/util/py_lib/seqan/dox/dox_tokens.py
+++ b/util/py_lib/seqan/dox/dox_tokens.py
@@ -26,7 +26,7 @@ CLAUSE_STARTING = set(['COMMAND_SIGNATURE', 'COMMAND_CODE', 'COMMAND_SEE', 'COMM
'COMMAND_SECTION', 'COMMAND_SUBSECTION', 'COMMAND_INCLUDE',
'COMMAND_EXTENDS', 'COMMAND_IMPLEMENTS', 'COMMAND_SNIPPET',
'COMMAND_HEADERFILE', 'COMMAND_DEPRECATED', 'COMMAND_NOTE', 'COMMAND_WARNING',
- 'COMMAND_INTERNAL', 'COMMAND_AKA', 'COMMAND_HTMLONLY', 'COMMAND_DATARACE'])
+ 'COMMAND_INTERNAL', 'COMMAND_AKA', 'COMMAND_HTMLONLY'])
NON_PARAGRAPH = set(['COMMAND_ENDCODE', 'COMMAND_ENDHTMONLY'])
LINE_BREAKS = set(['BREAK', 'EMPTYLINE'])
@@ -61,7 +61,6 @@ LEXER_TOKENS = (
('COMMAND_SEE', r'@see'),
('COMMAND_RETURN', r'@return'),
('COMMAND_THROW', r'@throw'),
- ('COMMAND_DATARACE', r'@datarace'),
('COMMAND_PARAM', r'@param'),
('COMMAND_TPARAM', r'@tparam'),
('COMMAND_SECTION', r'@section'),
diff --git a/util/py_lib/seqan/dox/proc_doc.py b/util/py_lib/seqan/dox/proc_doc.py
index 1635541..470c0d5 100644
--- a/util/py_lib/seqan/dox/proc_doc.py
+++ b/util/py_lib/seqan/dox/proc_doc.py
@@ -654,22 +654,6 @@ class ProcThrow(object):
def visitTextNodes(self, visitor):
"""Visit all text nodes using the given visitor."""
visitor.visit(self.desc)
-
-
-class ProcDataRace(object):
- """Documentation of a @datarace entry.
-
- @ivar raw: The raw version of this ProcDataRace (required for location lookup).
- @ivar desc: The documentation of the @datarace clause. TextNode.
- """
-
- def __init__(self, raw):
- self.raw = raw
- self.desc = TextNode()
-
- def visitTextNodes(self, visitor):
- """Visit all text nodes using the given visitor."""
- visitor.visit(self.desc)
class ProcFunction(ProcCodeEntry):
@@ -680,7 +664,6 @@ class ProcFunction(ProcCodeEntry):
@ivar tparams:
@ivar returns:
@ivar throws: List of ProcThrow objects.
- @ivar dataraces: List of ProcDataRace objects.
"""
def __init__(self, raw, name, brief=None, body=None, sees=[]):
@@ -689,7 +672,6 @@ class ProcFunction(ProcCodeEntry):
self.tparams = []
self.returns = []
self.throws = []
- self.dataraces = []
@property
def kind(self):
@@ -721,8 +703,6 @@ class ProcFunction(ProcCodeEntry):
p.visitTextNodes(visitor)
for t in self.throws:
t.visitTextNodes(visitor)
- for d in self.dataraces:
- d.visitTextNodes(visitor)
def addParam(self, p):
self.params.append(p)
@@ -735,9 +715,6 @@ class ProcFunction(ProcCodeEntry):
def addThrow(self, t):
self.throws.append(t)
-
- def addDataRace(self, t):
- self.dataraces.append(t)
class ProcMacro(ProcCodeEntry):
@@ -747,7 +724,6 @@ class ProcMacro(ProcCodeEntry):
concepts.
@ivar returns: Name displayed for return type.
@ivar throws: List of ProcThrow objects.
- @ivar throws: List of ProcDataRace objects.
"""
def __init__(self, raw, name, brief=None, body=None, sees=[]):
@@ -755,7 +731,6 @@ class ProcMacro(ProcCodeEntry):
self.params = []
self.returns = []
self.throws = []
- self.dataraces = []
@property
def local_name(self):
@@ -781,8 +756,6 @@ class ProcMacro(ProcCodeEntry):
p.visitTextNodes(visitor)
for t in self.throws:
t.visitTextNodes(visitor)
- for d in self.dataraces:
- d.visitTextNodes(visitor)
def addParam(self, p):
self.params.append(p)
@@ -792,9 +765,6 @@ class ProcMacro(ProcCodeEntry):
def addThrow(self, t):
self.throws.append(t)
-
- def addDataRace(self, d):
- self.dataraces.append(d)
class ProcMetafunction(ProcCodeEntry):
@@ -1382,10 +1352,6 @@ class FunctionConverter(CodeEntryConverter):
proc_throw.type = t.name.text
proc_throw.desc = self.rawTextToTextNode(t.text)
function.addThrow(proc_throw)
- for d in raw_entry.dataraces:
- proc_datarace = ProcDataRace(d)
- proc_datarace.desc = self.rawTextToTextNode(d.text)
- function.addDataRace(proc_datarace)
return function
@@ -1419,10 +1385,6 @@ class MacroConverter(CodeEntryConverter):
proc_throw.type = t.name.text
proc_throw.desc = self.rawTextToTextNode(t.text)
macro.addThrow(proc_throw)
- for d in raw_entry.dataraces:
- proc_datarace = ProcDataRace(d)
- proc_datarace.desc = self.rawTextToTextNode(d.text)
- macro.addDataRace(proc_datarace)
return macro
diff --git a/util/py_lib/seqan/dox/raw_doc.py b/util/py_lib/seqan/dox/raw_doc.py
index 5d5a1ec..56fbe1c 100644
--- a/util/py_lib/seqan/dox/raw_doc.py
+++ b/util/py_lib/seqan/dox/raw_doc.py
@@ -559,7 +559,6 @@ class RawFunction(RawCodeEntry):
@ivar params List of RawParameter objects.
@ivar returns List of RawReturn objects.
@ivar throw List of RawThrow objects.
- @ivar datarace List of RawDataRace objects.
"""
def __init__(self, first_token, briefs=[]):
@@ -568,7 +567,6 @@ class RawFunction(RawCodeEntry):
self.params = []
self.returns = []
self.throws = []
- self.dataraces = []
def addTParam(self, p):
self.tparams.append(p)
@@ -581,9 +579,6 @@ class RawFunction(RawCodeEntry):
def addThrow(self, t):
self.throws.append(t)
-
- def addDataRace(self, d):
- self.dataraces.append(d)
def getType(self):
if '#' in self.name.text:
@@ -633,10 +628,6 @@ class RawFunction(RawCodeEntry):
res.append('\n')
for x in self.throws:
res.append(x.getFormatted(formatter))
- if self.dataraces:
- res.append('\n')
- for x in self.dataraces:
- res.append(x.getFormatted(formatter))
if not self.body.empty:
res.append('\n')
res += self.body.getFormatted(formatter)
@@ -662,7 +653,6 @@ class RawMacro(RawCodeEntry):
@ivar params List of RawParameter objects.
@ivar returns List of RawReturn objects.
@ivar throws List of RawThrow objects.
- @ivar dataraces List of RawDataRace objects.
"""
def __init__(self, first_token, briefs=[]):
@@ -670,7 +660,6 @@ class RawMacro(RawCodeEntry):
self.params = []
self.returns = []
self.throws = []
- self.dataraces = []
def addParam(self, p):
self.params.append(p)
@@ -680,9 +669,6 @@ class RawMacro(RawCodeEntry):
def addThrow(self, t):
self.throws.append(t)
-
- def addDataRace(self, d):
- self.dataraces.append(d)
def getType(self):
if '#' in self.name.text:
@@ -726,10 +712,6 @@ class RawMacro(RawCodeEntry):
res.append('\n')
for x in self.throws:
res.append(x.getFormatted(formatter))
- if self.dataraces:
- res.append('\n')
- for x in self.dataraces:
- res.append(x.getFormatted(formatter))
if not self.body.empty:
res.append('\n')
res += self.body.getFormatted(formatter)
@@ -1387,23 +1369,6 @@ class RawThrow(RawParam):
def getFormatted(self, formatter):
return formatter.formatCommand('throw', self.text.text, self.name.text)
-
-
-class RawDataRace(object):
- """RawDoc for one data race description.
-
- @ivar text The @datarace clauses's parameter.
- """
-
- def __init__(self, first_token, text=RawText()):
- self.first_token = first_token
- self.text = text
-
- def getType(self):
- return 'datarace'
-
- def getFormatted(self, formatter):
- return formatter.formatCommand('datarace', self.text.text)
class RawSignature(object):
diff --git a/util/py_lib/seqan/dox/test/test_dox_parser.py b/util/py_lib/seqan/dox/test/test_dox_parser.py
index 830d538..a160d80 100644
--- a/util/py_lib/seqan/dox/test/test_dox_parser.py
+++ b/util/py_lib/seqan/dox/test/test_dox_parser.py
@@ -222,7 +222,6 @@ class TestMacroParsing(TestDoxParserBase):
'@param param The parameter.\n'
'@return TString A path as <tt>char const *</tt>.\n'
'@throw Exception The exception type.\n'
- '@datarace This macro is not thread safe.\n'
'\n'
'@section This is the first section.\n'
'\n'
@@ -248,8 +247,6 @@ class TestMacroParsing(TestDoxParserBase):
'\n'
'@throw Exception The exception type.\n'
'\n'
- '@datarace This macro is not thread safe.\n'
- '\n'
'@section This is the first section.\n'
'\n'
'This is the first paragraph.\n'
@@ -291,16 +288,6 @@ class TestFunctionParsing(TestDoxParserBase):
self.assertEqual(fn.throws[0].name.text, 'Exception')
txt = 'The thrown exception'
self.assertEqual(fn.throws[0].text.text, txt)
-
- def testDataRace(self):
- txt = ('@fn funktion\n'
- '@datarace This function is thread safe.')
- parser = self.parseText(txt)
- doc = parser.documentation
- fn = doc.entries[0]
- self.assertEqual(len(fn.dataraces), 1)
- txt = 'This function is thread safe.'
- self.assertEqual(fn.dataraces[0].text.text, txt)
def testGlobalFull(self):
txt = ('@fn funktion\n'
@@ -319,8 +306,6 @@ class TestFunctionParsing(TestDoxParserBase):
'\n'
'@throw Exception The thrown exception.\n'
'\n'
- '@datarace This function is thread safe.\n'
- '\n'
'@section This is the first section.\n'
'\n'
'This is the first paragraph.\n'
@@ -353,8 +338,6 @@ class TestFunctionParsing(TestDoxParserBase):
'\n'
'@throw Exception The thrown exception.\n'
'\n'
- '@datarace This function is thread safe.\n'
- '\n'
'@section This is the first section.\n'
'\n'
'This is the first paragraph.\n'
@@ -387,7 +370,6 @@ class TestFunctionParsing(TestDoxParserBase):
'@param p2 The second parameter.\n'
'@return TRes1 The first return type.\n'
'@return TRes2 The second return type.\n'
- '@datarace This function is thread safe.\n'
'\n'
'@section This is the first section.\n'
'\n'
@@ -419,8 +401,6 @@ class TestFunctionParsing(TestDoxParserBase):
'@return TRes1 The first return type.\n'
'@return TRes2 The second return type.\n'
'\n'
- '@datarace This function is thread safe.\n'
- '\n'
'@section This is the first section.\n'
'\n'
'This is the first paragraph.\n'
diff --git a/util/py_lib/seqan/dox/test/test_proc_doc.py b/util/py_lib/seqan/dox/test/test_proc_doc.py
index 4b8b490..a20e3f8 100644
--- a/util/py_lib/seqan/dox/test/test_proc_doc.py
+++ b/util/py_lib/seqan/dox/test/test_proc_doc.py
@@ -676,7 +676,6 @@ class TestConvertFunction(TestConverterBase):
'@tparam T1 The type of the first template parameter.\n'
'@return TReturn The return value.\n'
'@throw Exception The exception type.\n'
- '@datarace This function is thread safe.\n'
'\n'
'This is the first paragraph.\n'
'@section First <em>heading</em>\n'
@@ -708,10 +707,6 @@ class TestConvertFunction(TestConverterBase):
self.assertEqual(len(proc_function.throws), 1)
txt = '<div>The exception type.</div>'
self.assertEqual(proc_function.throws[0].desc.toHtmlLike(), txt)
- # dataraces
- self.assertEqual(len(proc_function.dataraces), 1)
- txt = '<div>This function is thread safe.</div>'
- self.assertEqual(proc_function.dataraces[0].desc.toHtmlLike(), txt)
# brief
txt = '<div>This is the <i>very important</i> class brief.</div>'
self.assertEqual(proc_function.brief.toHtmlLike(), txt)
@@ -740,7 +735,6 @@ class TestConvertFunction(TestConverterBase):
'@tparam T1 The type of the first template parameter.\n'
'@return TReturn The return value.\n'
'@throw Excpetion The exception type.\n'
- '@datarace This function is thread safe.\n'
'\n'
'This is the first paragraph.\n'
'@section First <em>heading</em>\n'
@@ -772,10 +766,6 @@ class TestConvertFunction(TestConverterBase):
self.assertEqual(len(proc_function.throws), 1)
txt = '<div>The exception type.</div>'
self.assertEqual(proc_function.throws[0].desc.toHtmlLike(), txt)
- # dataraces
- self.assertEqual(len(proc_function.dataraces), 1)
- txt = '<div>This function is thread safe.</div>'
- self.assertEqual(proc_function.dataraces[0].desc.toHtmlLike(), txt)
# brief
txt = '<div>This is the <i>very important</i> class brief.</div>'
self.assertEqual(proc_function.brief.toHtmlLike(), txt)
@@ -804,7 +794,6 @@ class TestConvertFunction(TestConverterBase):
'@tparam T1 The type of the first template parameter.\n'
'@return TReturn The return value.\n'
'@throw Excpetion The exception type.\n'
- '@datarace This function is thread safe.\n'
'\n'
'This is the first paragraph.\n'
'@section First <em>heading</em>\n'
@@ -836,10 +825,6 @@ class TestConvertFunction(TestConverterBase):
self.assertEqual(len(proc_function.throws), 1)
txt = '<div>The exception type.</div>'
self.assertEqual(proc_function.throws[0].desc.toHtmlLike(), txt)
- # dataraces
- self.assertEqual(len(proc_function.dataraces), 1)
- txt = '<div>This function is thread safe.</div>'
- self.assertEqual(proc_function.dataraces[0].desc.toHtmlLike(), txt)
# brief
txt = '<div>This is the <i>very important</i> class brief.</div>'
self.assertEqual(proc_function.brief.toHtmlLike(), txt)
@@ -889,7 +874,6 @@ class TestConvertMacro(TestConverterBase):
'@param param2 The second parameter.\n'
'@return TReturn The return value.\n'
'@throw Exception The exception type.\n'
- '@datarace This function is not thread safe.\n'
'\n'
'This is the first paragraph.\n'
'@section First <em>heading</em>\n'
@@ -920,10 +904,6 @@ class TestConvertMacro(TestConverterBase):
self.assertEqual(len(proc_macro.throws), 1)
txt = '<div>The exception type.</div>'
self.assertEqual(proc_macro.throws[0].desc.toHtmlLike(), txt)
- # dataraces
- self.assertEqual(len(proc_macro.dataraces), 1)
- txt = '<div>This function is not thread safe.</div>'
- self.assertEqual(proc_macro.dataraces[0].desc.toHtmlLike(), txt)
# brief
txt = '<div>This is the <i>very important</i> macro brief.</div>'
self.assertEqual(proc_macro.brief.toHtmlLike(), txt)
@@ -950,7 +930,6 @@ class TestConvertMacro(TestConverterBase):
'@param param The parameter\n'
'@return TReturn The return value.\n'
'@throw Exception The exception type.\n'
- '@datarace This function is not thread safe.\n'
'\n'
'This is the first paragraph.\n'
'@section First <em>heading</em>\n'
@@ -977,10 +956,6 @@ class TestConvertMacro(TestConverterBase):
self.assertEqual(len(proc_macro.throws), 1)
txt = '<div>The exception type.</div>'
self.assertEqual(proc_macro.throws[0].desc.toHtmlLike(), txt)
- # dataraces
- self.assertEqual(len(proc_macro.dataraces), 1)
- txt = '<div>This function is not thread safe.</div>'
- self.assertEqual(proc_macro.dataraces[0].desc.toHtmlLike(), txt)
# brief
txt = '<div>This is the <i>very important</i> class brief.</div>'
self.assertEqual(proc_macro.brief.toHtmlLike(), txt)
diff --git a/util/py_lib/seqan/dox/test/test_raw_doc.py b/util/py_lib/seqan/dox/test/test_raw_doc.py
index 4ea2226..1c89bdb 100644
--- a/util/py_lib/seqan/dox/test/test_raw_doc.py
+++ b/util/py_lib/seqan/dox/test/test_raw_doc.py
@@ -575,28 +575,6 @@ class ThrowTest(unittest.TestCase):
ret = raw_doc.RawThrow(self.tok, self.txt_type, self.txt_text)
self.assertEqual(ret.getFormatted(self.formatter),
'@throw type text\n')
-
-
-class DataRaceTest(unittest.TestCase):
- """Test for the RawDataRace class, mostly tests instance variables."""
-
- def setUp(self):
- self.tok = lexer.Token('COMMAND_DATARACE', '@datarace', 0, 0, 0)
- self.tok_text = lexer.Token('WORD', 'text', 0, 0, 0)
- self.txt_text = raw_doc.RawText([self.tok_text])
- self.formatter = raw_doc.DoxFormatter()
-
- def testCreation(self):
- dataRace = raw_doc.RawDataRace(self.tok, self.txt_text)
- self.assertEqual(dataRace.text, self.txt_text)
-
- def testGetType(self):
- dataRace = raw_doc.RawDataRace(self.tok, self.txt_text)
- self.assertEqual(dataRace.getType(), 'datarace')
-
- def testGetFormatted(self):
- dataRace = raw_doc.RawDataRace(self.tok, self.txt_text)
- self.assertEqual(dataRace.getFormatted(self.formatter), '@datarace text\n')
class SignatureTest(unittest.TestCase):
diff --git a/util/py_lib/seqan/dox/tpl/function.html b/util/py_lib/seqan/dox/tpl/function.html
index ba6b066..d5da70c 100644
--- a/util/py_lib/seqan/dox/tpl/function.html
+++ b/util/py_lib/seqan/dox/tpl/function.html
@@ -18,6 +18,9 @@
<!-- @returns -->
{{ sections.return_values(function) }}
+<!-- @throw -->
+{{ sections.throws(function) }}
+
<!--
=============================================================================
Detailed Description
@@ -75,12 +78,6 @@
</div>
{% endif %}
-<!-- @throw -->
-{{ sections.throws(function) }}
-
-<!-- @datarace -->
-{{ sections.dataraces(function) }}
-
<!-- @see -->
{{ sections.see_also(function) }}
diff --git a/util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/bootstrap-3.0.0.min.js b/util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/bootstrap-3.0.0.min.js
new file mode 100755
index 0000000..1765631
--- /dev/null
+++ b/util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/bootstrap-3.0.0.min.js
@@ -0,0 +1,6 @@
+/**
+* bootstrap.js v3.0.0 by @fat and @mdo
+* Copyright 2013 Twitter Inc.
+* http://www.apache.org/licenses/LICENSE-2.0
+*/
+if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.tran [...]
\ No newline at end of file
diff --git a/util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/jquery-2.0.3.min.js b/util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/jquery-2.0.3.min.js
new file mode 100644
index 0000000..2be209d
--- /dev/null
+++ b/util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/jquery-2.0.3.min.js
@@ -0,0 +1,6 @@
+/*! jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-2.0.3.min.map
+*/
+(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("D [...]
+};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(thi [...]
+},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Xt,Ut,Yt=x.now(),Vt=/\?/,Gt=/#.*$/,Jt=/([?&])_=[^&]*/,Qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=x.fn.load,rn={},on={},sn="*/".concat("*");try{Ut=i.href}catch(an){Ut=o.createElement("a"),Ut.href="",Ut=U [...]
diff --git a/util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/prettify.js b/util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/prettify.js
new file mode 100644
index 0000000..eef5ad7
--- /dev/null
+++ b/util/py_lib/seqan/dox/tpl/lib/bootstrap-multiselect/js/prettify.js
@@ -0,0 +1,28 @@
+var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
+(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\ [...]
+[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a) [...]
+f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\ [...]
+(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l= [...]
+{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+ [...]
+t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0 [...]
+"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){fo [...]
+l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s [...]
+q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com [...]
+q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]) [...]
+"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("B [...]
+a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f. [...]
+for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0] [...]
+m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}funct [...]
+a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.n [...]
+j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,uni [...]
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,thro [...]
+H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield [...]
+J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,pac [...]
+I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z] [...]
+["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+ [...]
+/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuote [...]
+["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,i [...]
+hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g), [...]
+!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.l [...]
+250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_ [...]
+PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
diff --git a/util/py_lib/seqan/dox/tpl/list.html b/util/py_lib/seqan/dox/tpl/list.html
index c73f5dc..50ea4ed 100644
--- a/util/py_lib/seqan/dox/tpl/list.html
+++ b/util/py_lib/seqan/dox/tpl/list.html
@@ -66,7 +66,7 @@
<div class="pre-action">
<h1><a href="page_mainpage.html" target="main"><span class="replace">SeqAn</span> API Documentation</a></h1>
</div>
- <div class="input-group" style="z-index: 2">
+ <div class="input-group">
<!--span class="input-group-addon"><b class="glyphicon glyphicon-search"></b></span-->
<span class="input-group-btn btn-group">
<select multiple="multiple">
diff --git a/util/py_lib/seqan/dox/tpl/macro.html b/util/py_lib/seqan/dox/tpl/macro.html
index 274ca74..b2628b2 100644
--- a/util/py_lib/seqan/dox/tpl/macro.html
+++ b/util/py_lib/seqan/dox/tpl/macro.html
@@ -15,6 +15,10 @@
<!-- @returns -->
{{ sections.return_values(macro) }}
+<!-- @throw -->
+{{ sections.throws(macro) }}
+
+
<!--
=============================================================================
Detailed Description
@@ -71,12 +75,6 @@
</div>
{% endif %}
-<!-- @throw -->
-{{ sections.throws(macro) }}
-
-<!-- @datarace -->
-{{ sections.dataraces(macro) }}
-
<!-- @see -->
{{ sections.see_also(macro) }}
diff --git a/util/py_lib/seqan/dox/tpl/sections.html b/util/py_lib/seqan/dox/tpl/sections.html
index 5120dca..9c88528 100644
--- a/util/py_lib/seqan/dox/tpl/sections.html
+++ b/util/py_lib/seqan/dox/tpl/sections.html
@@ -714,7 +714,7 @@ Render the grouped macros details
<dt>See Also</dt>
<dd>
{% for link in subentry.sortedSees() %}
- <dd>{{ link|transtext(True) }}</dd>
+ <dd>{{ link|transtext(False)|translink }}</dd>
{% endfor %}
</dd>
{% endif %}
@@ -819,26 +819,11 @@ Render the grouped macros details
{% endfor %}
{% endif %}
-{% if subentry.dataraces %}
- <dt>Data Races</dt>
-
- {% for datarace in subentry.dataraces %}
- <dd>
- {{ datarace.desc|transtext(False) }}
- </dd>
- {% endfor %}
-{% else %}
- <dt>Data Races</dt>
- <dd>
- Thread safety unknown!
- </dd>
-{% endif %}
-
{% if subentry.sees %}
<dt>See Also</dt>
<dd>
{% for link in subentry.sortedSees() %}
- <dd>{{ link|transtext(True) }}</dd>
+ <dd>{{ link|transtext(False)|translink }}</dd>
{% endfor %}
</dd>
{% endif %}
@@ -956,7 +941,7 @@ Render the interface functions details
{% endfor %}
</table>
{% endif %}
-
+
{% if subentry.returns %}
<h4>Returns</h4>
<table class="overview">
@@ -969,17 +954,6 @@ Render the interface functions details
</table>
{% endif %}
- <!-- General description -->
-
- <div class="docstring">
- <div class="discussion">
- {{ body(subentry, start_heading=4) }}
- </div>
- </div>
-
-
- <!-- Throws Section -->
-
{% if subentry.throws %}
<h4>Thrown Exceptions</h4>
<table class="overview">
@@ -991,30 +965,18 @@ Render the interface functions details
{% endfor %}
</table>
{% endif %}
-
- <!-- Data Races Section -->
-
- <h4>Data Races</h4>
- <div class="discussion">
- {% if subentry.dataraces %}
- {% for datarace in subentry.dataraces %}
- <p>
- {{ datarace.desc|transtext(False) }}
- </p>
- {% endfor %}
- {% else %}
- Thread safety unknown!
- {% endif %}
+
+ <div class="docstring">
+ <div class="discussion">
+ {{ body(subentry, start_heading=4) }}
+ </div>
</div>
-
-
- <!-- Sees section -->
-
+
{% if subentry.sees %}
<h4>See Also</h4>
<ul>
{% for link in subentry.sortedSees() %}
- <li>{{ link|transtext(True) }}</li>
+ <li>{{ link|transtext(False)|translink }}</li>
{% endfor %}
</ul>
{% endif %}
@@ -1359,29 +1321,6 @@ Render the throw details.
{% endmacro %}
<!--
-Macro dararaces(entry)
-
-Render the dataraces details.
--->
-
-{% macro dataraces(entry, h_level=2) -%}
-<h{{ h_level }} class="clause_header">Data Races</h{{ h_level }}>
-{% if entry.dataraces %}
- <div class="summary compact">
- {% for draces in entry.dataraces %}
- <p>
- {{ draces.desc|transtext(False) }}
- </p>
- {% endfor %}
- </div>
-{% else %}
- <div class="summary compact">
- Thread safety unknown!
- </div>
-{% endif %}
-{%- endmacro %}
-
-<!--
Macro dox_source(entry)
Render toggle-able Dox-like documentation.
diff --git a/util/py_lib/seqan/dox/write_html.py b/util/py_lib/seqan/dox/write_html.py
index 0224ce8..bbb4d35 100644
--- a/util/py_lib/seqan/dox/write_html.py
+++ b/util/py_lib/seqan/dox/write_html.py
@@ -462,7 +462,8 @@ class HtmlWriter(object):
html = self.tpl_manager.render('adaption.html', adaption=entry, **common_kwargs)
elif entry.kind == 'shortcut':
html = self.tpl_manager.render('shortcut.html', shortcut=entry, **common_kwargs)
- elif entry.kind in ['global_function', 'member_function', 'interface_function']:
+ elif entry.kind in ['global_function', 'member_function',
+ 'interface_function']:
html = self.tpl_manager.render('function.html', function=entry, **common_kwargs)
elif entry.kind in ['global_metafunction', 'interface_metafunction']:
html = self.tpl_manager.render('metafunction.html', metafunction=entry, **common_kwargs)
diff --git a/util/skel/test_template/test.h b/util/skel/test_template/test.h
index 85776bd..3d52e67 100644
--- a/util/skel/test_template/test.h
+++ b/util/skel/test_template/test.h
@@ -36,7 +36,6 @@
#define %(HEADER_GUARD)s
#include <seqan/basic.h>
-#include <seqan/stream.h>
#include <seqan/sequence.h>
// A test for strings.
diff --git a/util/travis/linux-cibuild.cmake b/util/travis/linux-cibuild.cmake
index c2fb7d7..ee8c600 100644
--- a/util/travis/linux-cibuild.cmake
+++ b/util/travis/linux-cibuild.cmake
@@ -20,8 +20,12 @@ file(WRITE "${CTEST_BINARY_DIRECTORY}/CMakeCache.txt" ${INITIAL_CACHE})
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS 1000)
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS 1000)
-# Use 4 build threads
-set(CTEST_BUILD_FLAGS -j4)
+# try to speed up the builds so we don't get killed
+if ("$ENV{CXX}" MATCHES ".*(clang\\+\\+-?.*)")
+ set(CTEST_BUILD_FLAGS -j6)
+else ("$ENV{CXX}" MATCHES ".*(clang\\+\\+-?.*)")
+ set(CTEST_BUILD_FLAGS -j4)
+endif ("$ENV{CXX}" MATCHES ".*(clang\\+\\+-?.*)")
# we want makefiles
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
@@ -36,13 +40,13 @@ CONFIGURE_FILE (${CTEST_SOURCE_DIRECTORY}/util/cmake/CTestConfig.cmake
# run the classical ctest suite without update
# travis-ci handles this for us
ctest_start (Continuous)
+
ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE _configure_ret)
-ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" NUMBER_ERRORS _build_errors
- NUMBER_WARNINGS _build_warnings)
-ctest_test (BUILD "${CTEST_BINARY_DIRECTORY}" PARALLEL_LEVEL 4)
+ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" NUMBER_ERRORS _build_errors)
+ctest_test (BUILD "${CTEST_BINARY_DIRECTORY}" PARALLEL_LEVEL 8)
ctest_submit()
# indicate errors
-if (${_build_errors} GREATER 0 OR ${_build_warnings} GREATER 0 OR NOT ${_configure_ret} EQUAL 0)
+if(${_build_errors} GREATER 0 OR NOT ${_configure_ret} EQUAL 0)
file(WRITE "$ENV{SOURCE_DIRECTORY}/failed" "build_failed")
-endif ()
+endif()
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/seqan.git
More information about the debian-med-commit
mailing list